From 44f5fbdcefedf19e289d3487cce05e8a82ce0c34 Mon Sep 17 00:00:00 2001 From: MobiusDevelopment <8391001+MobiusDevelopment@users.noreply.github.com> Date: Fri, 24 Jan 2020 15:25:27 +0000 Subject: [PATCH] Addition of cleanSkillUponChangeClass checkPreviousClasses parameter. --- .../ai/areas/Aden/Joachim/Joachim.java | 2 +- .../AwakeningMaster/AwakeningMaster.java | 2 +- .../ai/areas/TalkingIsland/Hardin/Hardin.java | 2 +- .../ai/areas/TalkingIsland/Raina/Raina.java | 4 ++-- .../ai/others/ClassMaster/ClassMaster.java | 4 ++-- .../admincommandhandlers/AdminEditChar.java | 2 +- .../data/xml/impl/SkillTreesData.java | 22 ++++++++++--------- .../classchange/ExRequestClassChange.java | 2 +- .../ai/others/ClassMaster/ClassMaster.java | 4 ++-- .../admincommandhandlers/AdminEditChar.java | 2 +- .../data/xml/impl/SkillTreesData.java | 22 ++++++++++--------- .../classchange/ExRequestClassChange.java | 2 +- 12 files changed, 37 insertions(+), 33 deletions(-) diff --git a/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/ai/areas/Aden/Joachim/Joachim.java b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/ai/areas/Aden/Joachim/Joachim.java index 8f1b2ab86e..ccc7dbc272 100644 --- a/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/ai/areas/Aden/Joachim/Joachim.java +++ b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/ai/areas/Aden/Joachim/Joachim.java @@ -199,7 +199,7 @@ public class Joachim extends AbstractNpcAI player.setActiveClass(1); player.sendPacket(new ExSubjobInfo(player, SubclassInfoType.CLASS_CHANGED)); player.sendPacket(getNpcHtmlMessage(player, npc, "34513-07.html")); - SkillTreesData.getInstance().cleanSkillUponChangeClass(player); + SkillTreesData.getInstance().cleanSkillUponChangeClass(player, false); player.sendPacket(new AcquireSkillList(player)); player.sendSkillList(); player.broadcastUserInfo(); diff --git a/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/ai/areas/TalkingIsland/AwakeningMaster/AwakeningMaster.java b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/ai/areas/TalkingIsland/AwakeningMaster/AwakeningMaster.java index 020b3fe548..05130d1b5b 100644 --- a/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/ai/areas/TalkingIsland/AwakeningMaster/AwakeningMaster.java +++ b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/ai/areas/TalkingIsland/AwakeningMaster/AwakeningMaster.java @@ -305,7 +305,7 @@ public class AwakeningMaster extends AbstractNpcAI } giveItems(player, player.isDualClassActive() ? CHAOS_POMANDER_DUAL_CLASS : CHAOS_POMANDER, 2); - SkillTreesData.getInstance().cleanSkillUponChangeClass(player); + SkillTreesData.getInstance().cleanSkillUponChangeClass(player, false); for (SkillLearn skill : SkillTreesData.getInstance().getRaceSkillTree(player.getRace())) { player.addSkill(SkillData.getInstance().getSkill(skill.getSkillId(), skill.getSkillLevel()), true); diff --git a/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/ai/areas/TalkingIsland/Hardin/Hardin.java b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/ai/areas/TalkingIsland/Hardin/Hardin.java index 090bfd2d0c..1dbce17caa 100644 --- a/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/ai/areas/TalkingIsland/Hardin/Hardin.java +++ b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/ai/areas/TalkingIsland/Hardin/Hardin.java @@ -149,7 +149,7 @@ public class Hardin extends AbstractNpcAI player.setBaseClass(player.getActiveClass()); } // Adjustments - SkillTreesData.getInstance().cleanSkillUponChangeClass(player); + SkillTreesData.getInstance().cleanSkillUponChangeClass(player, false); for (SkillLearn skill : SkillTreesData.getInstance().getRaceSkillTree(player.getRace())) { player.addSkill(SkillData.getInstance().getSkill(skill.getSkillId(), skill.getSkillLevel()), true); diff --git a/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/ai/areas/TalkingIsland/Raina/Raina.java b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/ai/areas/TalkingIsland/Raina/Raina.java index 8ce9956789..094417a6c4 100644 --- a/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/ai/areas/TalkingIsland/Raina/Raina.java +++ b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/ai/areas/TalkingIsland/Raina/Raina.java @@ -601,7 +601,7 @@ public class Raina extends AbstractNpcAI player.setActiveClass(classIndex); player.sendPacket(new ExSubjobInfo(player, SubclassInfoType.CLASS_CHANGED)); player.sendPacket(getNpcHtmlMessage(player, npc, "reawakenSuccess.html")); - SkillTreesData.getInstance().cleanSkillUponChangeClass(player); + SkillTreesData.getInstance().cleanSkillUponChangeClass(player, false); player.sendPacket(new AcquireSkillList(player)); player.sendSkillList(); giveItems(player, getCloakId(player), 1); @@ -640,7 +640,7 @@ public class Raina extends AbstractNpcAI player.sendPacket(new ExSubjobInfo(player, SubclassInfoType.NEW_SLOT_USED)); player.sendPacket(SystemMessageId.THE_NEW_SUBCLASS_S1_HAS_BEEN_ADDED_CONGRATS); player.sendPacket(getNpcHtmlMessage(player, npc, "addSuccess.html")); - SkillTreesData.getInstance().cleanSkillUponChangeClass(player); + SkillTreesData.getInstance().cleanSkillUponChangeClass(player, false); player.sendPacket(new AcquireSkillList(player)); player.sendSkillList(); giveItems(player, getPowerItemId(player), 1); diff --git a/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/ai/others/ClassMaster/ClassMaster.java b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/ai/others/ClassMaster/ClassMaster.java index 4be922855d..a7e2662561 100644 --- a/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/ai/others/ClassMaster/ClassMaster.java +++ b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/ai/others/ClassMaster/ClassMaster.java @@ -421,7 +421,7 @@ public class ClassMaster extends AbstractNpcAI implements IXmlReader { player.setBaseClass(player.getActiveClass()); } - SkillTreesData.getInstance().cleanSkillUponChangeClass(player); + SkillTreesData.getInstance().cleanSkillUponChangeClass(player, false); if (player.isInCategory(CategoryType.SIXTH_CLASS_GROUP)) { for (SkillLearn skill : SkillTreesData.getInstance().getRaceSkillTree(player.getRace())) @@ -852,7 +852,7 @@ public class ClassMaster extends AbstractNpcAI implements IXmlReader { player.setBaseClass(player.getActiveClass()); } - SkillTreesData.getInstance().cleanSkillUponChangeClass(player); + SkillTreesData.getInstance().cleanSkillUponChangeClass(player, false); if (player.isInCategory(CategoryType.SIXTH_CLASS_GROUP)) { for (SkillLearn skill : SkillTreesData.getInstance().getRaceSkillTree(player.getRace())) diff --git a/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/handlers/admincommandhandlers/AdminEditChar.java b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/handlers/admincommandhandlers/AdminEditChar.java index d15c04ec70..f95aa146b0 100644 --- a/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/handlers/admincommandhandlers/AdminEditChar.java +++ b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/handlers/admincommandhandlers/AdminEditChar.java @@ -421,7 +421,7 @@ public class AdminEditChar implements IAdminCommandHandler } final String newclass = ClassListData.getInstance().getClass(player.getClassId()).getClassName(); - SkillTreesData.getInstance().cleanSkillUponChangeClass(player); + SkillTreesData.getInstance().cleanSkillUponChangeClass(player, true); if (player.isInCategory(CategoryType.SIXTH_CLASS_GROUP)) { for (SkillLearn skill : SkillTreesData.getInstance().getRaceSkillTree(player.getRace())) diff --git a/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/data/xml/impl/SkillTreesData.java b/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/data/xml/impl/SkillTreesData.java index 4f068f9acd..4e1ec457e7 100644 --- a/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/data/xml/impl/SkillTreesData.java +++ b/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/data/xml/impl/SkillTreesData.java @@ -1463,7 +1463,7 @@ public class SkillTreesData implements IXmlReader return result; } - public void cleanSkillUponChangeClass(PlayerInstance player) + public void cleanSkillUponChangeClass(PlayerInstance player, boolean checkPreviousClasses) { ClassId currentClass = player.getClassId(); @@ -1499,21 +1499,23 @@ public class SkillTreesData implements IXmlReader } // Check previous classes as well, in case classes where skipped. - while (currentClass.getParent() != null) + if (checkPreviousClasses) { - currentClass = currentClass.getParent(); - - final Set removedList = _removeSkillCache.get(currentClass); - if (removedList != null) + while (currentClass.getParent() != null) { - for (Integer skillId : removedList) + final Set removedList = _removeSkillCache.get(currentClass); + if (removedList != null) { - final int currentLevel = player.getSkillLevel(skillId); - if (currentLevel > 0) + for (Integer skillId : removedList) { - player.removeSkill(SkillData.getInstance().getSkill(skillId, currentLevel)); + final int currentLevel = player.getSkillLevel(skillId); + if (currentLevel > 0) + { + player.removeSkill(SkillData.getInstance().getSkill(skillId, currentLevel)); + } } } + currentClass = currentClass.getParent(); } } } diff --git a/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/classchange/ExRequestClassChange.java b/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/classchange/ExRequestClassChange.java index 183881fc8e..c35f1b36dd 100644 --- a/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/classchange/ExRequestClassChange.java +++ b/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/classchange/ExRequestClassChange.java @@ -101,7 +101,7 @@ public class ExRequestClassChange implements IClientIncomingPacket { player.setBaseClass(player.getActiveClass()); } - SkillTreesData.getInstance().cleanSkillUponChangeClass(player); + SkillTreesData.getInstance().cleanSkillUponChangeClass(player, false); if (player.isInCategory(CategoryType.SIXTH_CLASS_GROUP)) { for (SkillLearn skill : SkillTreesData.getInstance().getRaceSkillTree(player.getRace())) diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/ai/others/ClassMaster/ClassMaster.java b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/ai/others/ClassMaster/ClassMaster.java index 524cb4c125..a0050dc892 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/ai/others/ClassMaster/ClassMaster.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/ai/others/ClassMaster/ClassMaster.java @@ -387,7 +387,7 @@ public class ClassMaster extends AbstractNpcAI implements IXmlReader { player.setBaseClass(player.getActiveClass()); } - SkillTreesData.getInstance().cleanSkillUponChangeClass(player); + SkillTreesData.getInstance().cleanSkillUponChangeClass(player, false); // if (player.isInCategory(CategoryType.SIXTH_CLASS_GROUP)) // { // for (SkillLearn skill : SkillTreesData.getInstance().getRaceSkillTree(player.getRace())) @@ -788,7 +788,7 @@ public class ClassMaster extends AbstractNpcAI implements IXmlReader { player.setBaseClass(player.getActiveClass()); } - SkillTreesData.getInstance().cleanSkillUponChangeClass(player); + SkillTreesData.getInstance().cleanSkillUponChangeClass(player, false); // if (player.isInCategory(CategoryType.SIXTH_CLASS_GROUP)) // { // for (SkillLearn skill : SkillTreesData.getInstance().getRaceSkillTree(player.getRace())) diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/handlers/admincommandhandlers/AdminEditChar.java b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/handlers/admincommandhandlers/AdminEditChar.java index 5e03709771..1377066935 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/handlers/admincommandhandlers/AdminEditChar.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/handlers/admincommandhandlers/AdminEditChar.java @@ -414,7 +414,7 @@ public class AdminEditChar implements IAdminCommandHandler } final String newclass = ClassListData.getInstance().getClass(player.getClassId()).getClassName(); - SkillTreesData.getInstance().cleanSkillUponChangeClass(player); + SkillTreesData.getInstance().cleanSkillUponChangeClass(player, true); player.store(false); player.broadcastUserInfo(); player.sendSkillList(); diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/data/xml/impl/SkillTreesData.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/data/xml/impl/SkillTreesData.java index 6aaad1a3be..7fab3401b8 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/data/xml/impl/SkillTreesData.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/data/xml/impl/SkillTreesData.java @@ -1449,7 +1449,7 @@ public class SkillTreesData implements IXmlReader return result; } - public void cleanSkillUponChangeClass(PlayerInstance player) + public void cleanSkillUponChangeClass(PlayerInstance player, boolean checkPreviousClasses) { ClassId currentClass = player.getClassId(); @@ -1485,21 +1485,23 @@ public class SkillTreesData implements IXmlReader } // Check previous classes as well, in case classes where skipped. - while (currentClass.getParent() != null) + if (checkPreviousClasses) { - currentClass = currentClass.getParent(); - - final Set removedList = _removeSkillCache.get(currentClass); - if (removedList != null) + while (currentClass.getParent() != null) { - for (Integer skillId : removedList) + final Set removedList = _removeSkillCache.get(currentClass); + if (removedList != null) { - final int currentLevel = player.getSkillLevel(skillId); - if (currentLevel > 0) + for (Integer skillId : removedList) { - player.removeSkill(SkillData.getInstance().getSkill(skillId, currentLevel)); + final int currentLevel = player.getSkillLevel(skillId); + if (currentLevel > 0) + { + player.removeSkill(SkillData.getInstance().getSkill(skillId, currentLevel)); + } } } + currentClass = currentClass.getParent(); } } } diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/classchange/ExRequestClassChange.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/classchange/ExRequestClassChange.java index ffab8ac24a..3a750ece24 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/classchange/ExRequestClassChange.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/classchange/ExRequestClassChange.java @@ -94,7 +94,7 @@ public class ExRequestClassChange implements IClientIncomingPacket { player.setBaseClass(player.getActiveClass()); } - SkillTreesData.getInstance().cleanSkillUponChangeClass(player); + SkillTreesData.getInstance().cleanSkillUponChangeClass(player, false); if (Config.AUTO_LEARN_SKILLS) { player.giveAvailableSkills(Config.AUTO_LEARN_FS_SKILLS, true);