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 baae0f1e2f..8f1b2ab86e 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().cleanSkillUponAwakening(player); + SkillTreesData.getInstance().cleanSkillUponChangeClass(player); 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 abd89f2c38..020b3fe548 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().cleanSkillUponAwakening(player); + SkillTreesData.getInstance().cleanSkillUponChangeClass(player); 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 b0c5b1794d..090bfd2d0c 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().cleanSkillUponAwakening(player); + SkillTreesData.getInstance().cleanSkillUponChangeClass(player); 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 4d3e1efae8..8ce9956789 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 @@ -278,7 +278,8 @@ public class Raina extends AbstractNpcAI } case "addDualClass": { - if (player.getRace() != Race.ERTHEIA){ + if (player.getRace() != Race.ERTHEIA) + { htmltext = "notImplemented.html"; } // TODO: Maybe html is different when you have 85lvl but you haven't completed quest @@ -600,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().cleanSkillUponAwakening(player); + SkillTreesData.getInstance().cleanSkillUponChangeClass(player); player.sendPacket(new AcquireSkillList(player)); player.sendSkillList(); giveItems(player, getCloakId(player), 1); @@ -639,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().cleanSkillUponAwakening(player); + SkillTreesData.getInstance().cleanSkillUponChangeClass(player); 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 a921a5aefe..4be922855d 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,9 +421,9 @@ public class ClassMaster extends AbstractNpcAI implements IXmlReader { player.setBaseClass(player.getActiveClass()); } + SkillTreesData.getInstance().cleanSkillUponChangeClass(player); if (player.isInCategory(CategoryType.SIXTH_CLASS_GROUP)) { - SkillTreesData.getInstance().cleanSkillUponAwakening(player); for (SkillLearn skill : SkillTreesData.getInstance().getRaceSkillTree(player.getRace())) { player.addSkill(SkillData.getInstance().getSkill(skill.getSkillId(), skill.getSkillLevel()), true); @@ -852,9 +852,9 @@ public class ClassMaster extends AbstractNpcAI implements IXmlReader { player.setBaseClass(player.getActiveClass()); } + SkillTreesData.getInstance().cleanSkillUponChangeClass(player); if (player.isInCategory(CategoryType.SIXTH_CLASS_GROUP)) { - SkillTreesData.getInstance().cleanSkillUponAwakening(player); 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/handlers/admincommandhandlers/AdminEditChar.java b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/handlers/admincommandhandlers/AdminEditChar.java index 6f38d394d2..d15c04ec70 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,9 +421,9 @@ public class AdminEditChar implements IAdminCommandHandler } final String newclass = ClassListData.getInstance().getClass(player.getClassId()).getClassName(); + SkillTreesData.getInstance().cleanSkillUponChangeClass(player); if (player.isInCategory(CategoryType.SIXTH_CLASS_GROUP)) { - SkillTreesData.getInstance().cleanSkillUponAwakening(player); 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/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 f1f6e5bb0e..da286bdc3b 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 @@ -1461,14 +1461,15 @@ public class SkillTreesData implements IXmlReader return result; } - public void cleanSkillUponAwakening(PlayerInstance player) + public void cleanSkillUponChangeClass(PlayerInstance player) { + final ClassId currentClass = player.getClassId(); for (Skill skill : player.getAllSkills()) { final int maxLvl = SkillData.getInstance().getMaxLevel(skill.getId()); final long hashCode = SkillData.getSkillHashCode(skill.getId(), maxLvl); - if (!isCurrentClassSkillNoParent(player.getClassId(), hashCode) && !isRemoveSkill(player.getClassId(), skill.getId()) && !isAwakenSaveSkill(player.getClassId(), skill.getId()) && !isAlchemySkill(skill.getId(), skill.getLevel())) + if (!isCurrentClassSkillNoParent(currentClass, hashCode) && !isRemoveSkill(currentClass, skill.getId()) && !isAwakenSaveSkill(currentClass, skill.getId()) && !isAlchemySkill(skill.getId(), skill.getLevel())) { player.removeSkill(skill, true, true); } 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 79bbb9849d..183881fc8e 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,9 +101,9 @@ public class ExRequestClassChange implements IClientIncomingPacket { player.setBaseClass(player.getActiveClass()); } + SkillTreesData.getInstance().cleanSkillUponChangeClass(player); if (player.isInCategory(CategoryType.SIXTH_CLASS_GROUP)) { - SkillTreesData.getInstance().cleanSkillUponAwakening(player); for (SkillLearn skill : SkillTreesData.getInstance().getRaceSkillTree(player.getRace())) { player.addSkill(SkillData.getInstance().getSkill(skill.getSkillId(), skill.getSkillLevel()), true);