From 30bad9f60415417cd67401f2134114797e1ce558 Mon Sep 17 00:00:00 2001 From: MobiusDevelopment <8391001+MobiusDevelopment@users.noreply.github.com> Date: Fri, 17 Jul 2020 23:26:38 +0000 Subject: [PATCH] Adjustments for cleanSkillUponChangeClass calls. --- .../ai/others/ClassMaster/ClassMaster.java | 10 +++++-- .../admincommandhandlers/AdminEditChar.java | 3 +- .../classchange/ExRequestClassChange.java | 5 +++- .../ai/others/ClassMaster/ClassMaster.java | 5 ++-- .../admincommandhandlers/AdminEditChar.java | 6 ++-- .../classchange/ExRequestClassChange.java | 28 +++++++++++++++++-- 6 files changed, 46 insertions(+), 11 deletions(-) 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 bd693ede0a..0de5d44f3e 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 @@ -419,18 +419,21 @@ public class ClassMaster extends AbstractNpcAI implements IXmlReader { player.setBaseClass(player.getActiveClass()); } - SkillTreeData.getInstance().cleanSkillUponChangeClass(player, false); + if (player.isInCategory(CategoryType.SIXTH_CLASS_GROUP)) { + SkillTreeData.getInstance().cleanSkillUponChangeClass(player, false); for (SkillLearn skill : SkillTreeData.getInstance().getRaceSkillTree(player.getRace())) { player.addSkill(SkillData.getInstance().getSkill(skill.getSkillId(), skill.getSkillLevel()), true); } } + if (Config.AUTO_LEARN_SKILLS) { player.giveAvailableSkills(Config.AUTO_LEARN_FS_SKILLS, Config.AUTO_LEARN_FP_SKILLS, true); } + player.store(false); // Save player cause if server crashes before this char is saved, he will lose class and the money payed for class change. player.broadcastUserInfo(); player.sendSkillList(); @@ -858,18 +861,21 @@ public class ClassMaster extends AbstractNpcAI implements IXmlReader { player.setBaseClass(player.getActiveClass()); } - SkillTreeData.getInstance().cleanSkillUponChangeClass(player, false); + if (player.isInCategory(CategoryType.SIXTH_CLASS_GROUP)) { + SkillTreeData.getInstance().cleanSkillUponChangeClass(player, false); for (SkillLearn skill : SkillTreeData.getInstance().getRaceSkillTree(player.getRace())) { player.addSkill(SkillData.getInstance().getSkill(skill.getSkillId(), skill.getSkillLevel()), true); } } + if (Config.AUTO_LEARN_SKILLS) { player.giveAvailableSkills(Config.AUTO_LEARN_FS_SKILLS, Config.AUTO_LEARN_FP_SKILLS, true); } + player.store(false); // Save player cause if server crashes before this char is saved, he will lose class and the money payed for class change. player.broadcastUserInfo(); player.sendSkillList(); 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 ecbf56f5a2..d139198452 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,14 +421,15 @@ public class AdminEditChar implements IAdminCommandHandler } final String newclass = ClassListData.getInstance().getClass(player.getClassId()).getClassName(); - SkillTreeData.getInstance().cleanSkillUponChangeClass(player, true); if (player.isInCategory(CategoryType.SIXTH_CLASS_GROUP)) { + SkillTreeData.getInstance().cleanSkillUponChangeClass(player, true); for (SkillLearn skill : SkillTreeData.getInstance().getRaceSkillTree(player.getRace())) { player.addSkill(SkillData.getInstance().getSkill(skill.getSkillId(), skill.getSkillLevel()), true); } } + player.store(false); player.broadcastUserInfo(); player.sendSkillList(); 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 50cac3939d..9b248e4b68 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 @@ -102,18 +102,21 @@ public class ExRequestClassChange implements IClientIncomingPacket { player.setBaseClass(player.getActiveClass()); } - SkillTreeData.getInstance().cleanSkillUponChangeClass(player, false); + if (player.isInCategory(CategoryType.SIXTH_CLASS_GROUP)) { + SkillTreeData.getInstance().cleanSkillUponChangeClass(player, false); // TODO: Move to skill learn method? for (SkillLearn skill : SkillTreeData.getInstance().getRaceSkillTree(player.getRace())) { player.addSkill(SkillData.getInstance().getSkill(skill.getSkillId(), skill.getSkillLevel()), true); } } + if (Config.AUTO_LEARN_SKILLS) { player.giveAvailableSkills(Config.AUTO_LEARN_FS_SKILLS, Config.AUTO_LEARN_FP_SKILLS, true); } + player.store(false); // Save player cause if server crashes before this char is saved, he will lose class. player.broadcastUserInfo(); player.sendSkillList(); 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 e068afc75e..4482fcae6b 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 @@ -33,7 +33,6 @@ import org.l2jmobius.Config; import org.l2jmobius.commons.util.IXmlReader; import org.l2jmobius.gameserver.data.xml.impl.CategoryData; import org.l2jmobius.gameserver.data.xml.impl.ClassListData; -import org.l2jmobius.gameserver.data.xml.impl.SkillTreeData; import org.l2jmobius.gameserver.datatables.ItemTable; import org.l2jmobius.gameserver.enums.CategoryType; import org.l2jmobius.gameserver.enums.Race; @@ -384,13 +383,13 @@ public class ClassMaster extends AbstractNpcAI implements IXmlReader { player.setBaseClass(player.getActiveClass()); } - SkillTreeData.getInstance().cleanSkillUponChangeClass(player, false); // if (player.isInCategory(CategoryType.SIXTH_CLASS_GROUP)) // { // for (SkillLearn skill : SkillTreesData.getInstance().getRaceSkillTree(player.getRace())) // { // player.addSkill(SkillData.getInstance().getSkill(skill.getSkillId(), skill.getSkillLevel()), true); // } + // SkillTreeData.getInstance().cleanSkillUponChangeClass(player, false); // } if (Config.AUTO_LEARN_SKILLS) { @@ -793,13 +792,13 @@ public class ClassMaster extends AbstractNpcAI implements IXmlReader { player.setBaseClass(player.getActiveClass()); } - SkillTreeData.getInstance().cleanSkillUponChangeClass(player, false); // if (player.isInCategory(CategoryType.SIXTH_CLASS_GROUP)) // { // for (SkillLearn skill : SkillTreesData.getInstance().getRaceSkillTree(player.getRace())) // { // player.addSkill(SkillData.getInstance().getSkill(skill.getSkillId(), skill.getSkillLevel()), true); // } + // SkillTreeData.getInstance().cleanSkillUponChangeClass(player, false); // } if (Config.AUTO_LEARN_SKILLS) { 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 590c10c187..36611f3b51 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 @@ -32,7 +32,6 @@ import org.l2jmobius.Config; import org.l2jmobius.commons.database.DatabaseFactory; import org.l2jmobius.gameserver.data.sql.impl.CharNameTable; import org.l2jmobius.gameserver.data.xml.impl.ClassListData; -import org.l2jmobius.gameserver.data.xml.impl.SkillTreeData; import org.l2jmobius.gameserver.enums.Race; import org.l2jmobius.gameserver.enums.SubclassInfoType; import org.l2jmobius.gameserver.handler.IAdminCommandHandler; @@ -414,7 +413,10 @@ public class AdminEditChar implements IAdminCommandHandler } final String newclass = ClassListData.getInstance().getClass(player.getClassId()).getClassName(); - SkillTreeData.getInstance().cleanSkillUponChangeClass(player, true); + // if (player.isInCategory(CategoryType.SIXTH_CLASS_GROUP)) + // { + // SkillTreeData.getInstance().cleanSkillUponChangeClass(player, false); + // } player.store(false); player.broadcastUserInfo(); player.sendSkillList(); 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 0c9d781a18..4f322961cb 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 @@ -19,13 +19,16 @@ package org.l2jmobius.gameserver.network.clientpackets.classchange; import org.l2jmobius.Config; import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.gameserver.data.xml.impl.CategoryData; -import org.l2jmobius.gameserver.data.xml.impl.SkillTreeData; import org.l2jmobius.gameserver.enums.CategoryType; +import org.l2jmobius.gameserver.enums.UserInfoType; +import org.l2jmobius.gameserver.model.ElementalSpirit; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.base.ClassId; import org.l2jmobius.gameserver.network.GameClient; import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket; import org.l2jmobius.gameserver.network.serverpackets.PlaySound; +import org.l2jmobius.gameserver.network.serverpackets.UserInfo; +import org.l2jmobius.gameserver.network.serverpackets.elementalspirits.ElementalSpiritInfo; /** * @author Mobius @@ -94,11 +97,32 @@ public class ExRequestClassChange implements IClientIncomingPacket { player.setBaseClass(player.getActiveClass()); } - SkillTreeData.getInstance().cleanSkillUponChangeClass(player, false); + + // Elemental Spirits. + if (player.isInCategory(CategoryType.THIRD_CLASS_GROUP)) + { + if (player.getSpirits() == null) + { + player.initElementalSpirits(); + } + for (ElementalSpirit spirit : player.getSpirits()) + { + if (spirit.getStage() == 0) + { + spirit.upgrade(); + } + } + final UserInfo userInfo = new UserInfo(player); + userInfo.addComponentType(UserInfoType.ATT_SPIRITS); + player.sendPacket(userInfo); + player.sendPacket(new ElementalSpiritInfo(player, player.getActiveElementalSpiritType(), (byte) 0x01)); + } + if (Config.AUTO_LEARN_SKILLS) { player.giveAvailableSkills(Config.AUTO_LEARN_FS_SKILLS, true); } + player.store(false); // Save player cause if server crashes before this char is saved, he will lose class. player.broadcastUserInfo(); player.sendSkillList();