From 79646b1e2aefe7103ce251de5c1070046ab07031 Mon Sep 17 00:00:00 2001 From: MobiusDev <8391001+MobiusDevelopment@users.noreply.github.com> Date: Sun, 15 Oct 2017 23:06:02 +0000 Subject: [PATCH] ClassMaster auto learn skill fixes. --- .../ai/others/ClassMaster/ClassMaster.java | 39 ++++++++++--------- .../gameserver/model/actor/L2Character.java | 1 - .../ai/others/ClassMaster/ClassMaster.java | 39 ++++++++++--------- .../gameserver/model/actor/L2Character.java | 1 - .../ai/others/ClassMaster/ClassMaster.java | 39 ++++++++++--------- .../gameserver/model/actor/L2Character.java | 1 - .../ai/others/ClassMaster/ClassMaster.java | 39 ++++++++++--------- .../gameserver/model/actor/L2Character.java | 1 - 8 files changed, 84 insertions(+), 76 deletions(-) diff --git a/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/ai/others/ClassMaster/ClassMaster.java b/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/ai/others/ClassMaster/ClassMaster.java index ea5b550f76..7a21218b34 100644 --- a/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/ai/others/ClassMaster/ClassMaster.java +++ b/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/ai/others/ClassMaster/ClassMaster.java @@ -52,7 +52,6 @@ import com.l2jmobius.gameserver.model.events.impl.character.player.OnPlayerLogin import com.l2jmobius.gameserver.model.events.impl.character.player.OnPlayerPressTutorialMark; import com.l2jmobius.gameserver.model.events.impl.character.player.OnPlayerProfessionChange; import com.l2jmobius.gameserver.model.holders.ItemHolder; -import com.l2jmobius.gameserver.model.skills.Skill; import com.l2jmobius.gameserver.model.spawns.SpawnTemplate; import com.l2jmobius.gameserver.network.serverpackets.PlaySound; import com.l2jmobius.gameserver.network.serverpackets.TutorialCloseHtml; @@ -404,26 +403,16 @@ public final class ClassMaster extends AbstractNpcAI implements IGameXmlReader } if (player.isInCategory(CategoryType.AWAKEN_GROUP)) { - if (Config.AUTO_LEARN_SKILLS) // needs better cleanup + SkillTreesData.getInstance().cleanSkillUponAwakening(player); + for (L2SkillLearn skill : SkillTreesData.getInstance().getRaceSkillTree(player.getRace())) { - for (Skill skill : SkillTreesData.getInstance().getAllAvailableSkills(player, player.getClassId().getParent(), Config.AUTO_LEARN_FS_SKILLS, true)) - { - player.removeSkill(skill, true); - } - for (Skill skill : SkillTreesData.getInstance().getAllAvailableSkills(player, player.getClassId(), Config.AUTO_LEARN_FS_SKILLS, true)) - { - player.addSkill(skill, true); - } - } - else - { - SkillTreesData.getInstance().cleanSkillUponAwakening(player); - for (L2SkillLearn skill : SkillTreesData.getInstance().getRaceSkillTree(player.getRace())) - { - player.addSkill(SkillData.getInstance().getSkill(skill.getSkillId(), skill.getSkillLevel()), true); - } + player.addSkill(SkillData.getInstance().getSkill(skill.getSkillId(), skill.getSkillLevel()), true); } } + 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 and the money payed for class change. player.broadcastUserInfo(); player.sendSkillList(); @@ -802,6 +791,20 @@ public final class ClassMaster extends AbstractNpcAI implements IGameXmlReader { player.setBaseClass(player.getActiveClass()); } + if (player.isInCategory(CategoryType.AWAKEN_GROUP)) + { + SkillTreesData.getInstance().cleanSkillUponAwakening(player); + for (L2SkillLearn skill : SkillTreesData.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, 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(); return true; } diff --git a/L2J_Mobius_1.0_Ertheia/java/com/l2jmobius/gameserver/model/actor/L2Character.java b/L2J_Mobius_1.0_Ertheia/java/com/l2jmobius/gameserver/model/actor/L2Character.java index e8603b9ff3..e03f21d8f2 100644 --- a/L2J_Mobius_1.0_Ertheia/java/com/l2jmobius/gameserver/model/actor/L2Character.java +++ b/L2J_Mobius_1.0_Ertheia/java/com/l2jmobius/gameserver/model/actor/L2Character.java @@ -4219,7 +4219,6 @@ public abstract class L2Character extends L2Object implements ISkillsHolder, IDe // Remove all its Func objects from the L2Character calculator set if (oldSkill != null) { - // Stop casting if this skill is used right now abortCast(s -> s.getSkill().getId() == skillId); diff --git a/L2J_Mobius_2.5_Underground/dist/game/data/scripts/ai/others/ClassMaster/ClassMaster.java b/L2J_Mobius_2.5_Underground/dist/game/data/scripts/ai/others/ClassMaster/ClassMaster.java index d40f6b872d..e3bb7824ff 100644 --- a/L2J_Mobius_2.5_Underground/dist/game/data/scripts/ai/others/ClassMaster/ClassMaster.java +++ b/L2J_Mobius_2.5_Underground/dist/game/data/scripts/ai/others/ClassMaster/ClassMaster.java @@ -52,7 +52,6 @@ import com.l2jmobius.gameserver.model.events.impl.character.player.OnPlayerLogin import com.l2jmobius.gameserver.model.events.impl.character.player.OnPlayerPressTutorialMark; import com.l2jmobius.gameserver.model.events.impl.character.player.OnPlayerProfessionChange; import com.l2jmobius.gameserver.model.holders.ItemHolder; -import com.l2jmobius.gameserver.model.skills.Skill; import com.l2jmobius.gameserver.model.spawns.SpawnTemplate; import com.l2jmobius.gameserver.network.serverpackets.PlaySound; import com.l2jmobius.gameserver.network.serverpackets.TutorialCloseHtml; @@ -404,26 +403,16 @@ public final class ClassMaster extends AbstractNpcAI implements IGameXmlReader } if (player.isInCategory(CategoryType.AWAKEN_GROUP)) { - if (Config.AUTO_LEARN_SKILLS) // needs better cleanup + SkillTreesData.getInstance().cleanSkillUponAwakening(player); + for (L2SkillLearn skill : SkillTreesData.getInstance().getRaceSkillTree(player.getRace())) { - for (Skill skill : SkillTreesData.getInstance().getAllAvailableSkills(player, player.getClassId().getParent(), Config.AUTO_LEARN_FS_SKILLS, true)) - { - player.removeSkill(skill, true); - } - for (Skill skill : SkillTreesData.getInstance().getAllAvailableSkills(player, player.getClassId(), Config.AUTO_LEARN_FS_SKILLS, true)) - { - player.addSkill(skill, true); - } - } - else - { - SkillTreesData.getInstance().cleanSkillUponAwakening(player); - for (L2SkillLearn skill : SkillTreesData.getInstance().getRaceSkillTree(player.getRace())) - { - player.addSkill(SkillData.getInstance().getSkill(skill.getSkillId(), skill.getSkillLevel()), true); - } + player.addSkill(SkillData.getInstance().getSkill(skill.getSkillId(), skill.getSkillLevel()), true); } } + 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 and the money payed for class change. player.broadcastUserInfo(); player.sendSkillList(); @@ -802,6 +791,20 @@ public final class ClassMaster extends AbstractNpcAI implements IGameXmlReader { player.setBaseClass(player.getActiveClass()); } + if (player.isInCategory(CategoryType.AWAKEN_GROUP)) + { + SkillTreesData.getInstance().cleanSkillUponAwakening(player); + for (L2SkillLearn skill : SkillTreesData.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, 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(); return true; } diff --git a/L2J_Mobius_2.5_Underground/java/com/l2jmobius/gameserver/model/actor/L2Character.java b/L2J_Mobius_2.5_Underground/java/com/l2jmobius/gameserver/model/actor/L2Character.java index acf3bce595..ef8792b970 100644 --- a/L2J_Mobius_2.5_Underground/java/com/l2jmobius/gameserver/model/actor/L2Character.java +++ b/L2J_Mobius_2.5_Underground/java/com/l2jmobius/gameserver/model/actor/L2Character.java @@ -4223,7 +4223,6 @@ public abstract class L2Character extends L2Object implements ISkillsHolder, IDe // Remove all its Func objects from the L2Character calculator set if (oldSkill != null) { - // Stop casting if this skill is used right now abortCast(s -> s.getSkill().getId() == skillId); diff --git a/L2J_Mobius_3.0_Helios/dist/game/data/scripts/ai/others/ClassMaster/ClassMaster.java b/L2J_Mobius_3.0_Helios/dist/game/data/scripts/ai/others/ClassMaster/ClassMaster.java index 1d608b7088..81f6a06ff5 100644 --- a/L2J_Mobius_3.0_Helios/dist/game/data/scripts/ai/others/ClassMaster/ClassMaster.java +++ b/L2J_Mobius_3.0_Helios/dist/game/data/scripts/ai/others/ClassMaster/ClassMaster.java @@ -52,7 +52,6 @@ import com.l2jmobius.gameserver.model.events.impl.character.player.OnPlayerLogin import com.l2jmobius.gameserver.model.events.impl.character.player.OnPlayerPressTutorialMark; import com.l2jmobius.gameserver.model.events.impl.character.player.OnPlayerProfessionChange; import com.l2jmobius.gameserver.model.holders.ItemHolder; -import com.l2jmobius.gameserver.model.skills.Skill; import com.l2jmobius.gameserver.model.spawns.SpawnTemplate; import com.l2jmobius.gameserver.network.serverpackets.PlaySound; import com.l2jmobius.gameserver.network.serverpackets.TutorialCloseHtml; @@ -404,26 +403,16 @@ public final class ClassMaster extends AbstractNpcAI implements IGameXmlReader } if (player.isInCategory(CategoryType.AWAKEN_GROUP)) { - if (Config.AUTO_LEARN_SKILLS) // needs better cleanup + SkillTreesData.getInstance().cleanSkillUponAwakening(player); + for (L2SkillLearn skill : SkillTreesData.getInstance().getRaceSkillTree(player.getRace())) { - for (Skill skill : SkillTreesData.getInstance().getAllAvailableSkills(player, player.getClassId().getParent(), Config.AUTO_LEARN_FS_SKILLS, true)) - { - player.removeSkill(skill, true); - } - for (Skill skill : SkillTreesData.getInstance().getAllAvailableSkills(player, player.getClassId(), Config.AUTO_LEARN_FS_SKILLS, true)) - { - player.addSkill(skill, true); - } - } - else - { - SkillTreesData.getInstance().cleanSkillUponAwakening(player); - for (L2SkillLearn skill : SkillTreesData.getInstance().getRaceSkillTree(player.getRace())) - { - player.addSkill(SkillData.getInstance().getSkill(skill.getSkillId(), skill.getSkillLevel()), true); - } + player.addSkill(SkillData.getInstance().getSkill(skill.getSkillId(), skill.getSkillLevel()), true); } } + 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 and the money payed for class change. player.broadcastUserInfo(); player.sendSkillList(); @@ -802,6 +791,20 @@ public final class ClassMaster extends AbstractNpcAI implements IGameXmlReader { player.setBaseClass(player.getActiveClass()); } + if (player.isInCategory(CategoryType.AWAKEN_GROUP)) + { + SkillTreesData.getInstance().cleanSkillUponAwakening(player); + for (L2SkillLearn skill : SkillTreesData.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, 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(); return true; } diff --git a/L2J_Mobius_3.0_Helios/java/com/l2jmobius/gameserver/model/actor/L2Character.java b/L2J_Mobius_3.0_Helios/java/com/l2jmobius/gameserver/model/actor/L2Character.java index acf3bce595..ef8792b970 100644 --- a/L2J_Mobius_3.0_Helios/java/com/l2jmobius/gameserver/model/actor/L2Character.java +++ b/L2J_Mobius_3.0_Helios/java/com/l2jmobius/gameserver/model/actor/L2Character.java @@ -4223,7 +4223,6 @@ public abstract class L2Character extends L2Object implements ISkillsHolder, IDe // Remove all its Func objects from the L2Character calculator set if (oldSkill != null) { - // Stop casting if this skill is used right now abortCast(s -> s.getSkill().getId() == skillId); diff --git a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/ai/others/ClassMaster/ClassMaster.java b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/ai/others/ClassMaster/ClassMaster.java index 36fdf07314..2c7597a2b4 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/ai/others/ClassMaster/ClassMaster.java +++ b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/ai/others/ClassMaster/ClassMaster.java @@ -52,7 +52,6 @@ import com.l2jmobius.gameserver.model.events.impl.character.player.OnPlayerLogin import com.l2jmobius.gameserver.model.events.impl.character.player.OnPlayerPressTutorialMark; import com.l2jmobius.gameserver.model.events.impl.character.player.OnPlayerProfessionChange; import com.l2jmobius.gameserver.model.holders.ItemHolder; -import com.l2jmobius.gameserver.model.skills.Skill; import com.l2jmobius.gameserver.model.spawns.SpawnTemplate; import com.l2jmobius.gameserver.network.serverpackets.PlaySound; import com.l2jmobius.gameserver.network.serverpackets.TutorialCloseHtml; @@ -372,26 +371,16 @@ public final class ClassMaster extends AbstractNpcAI implements IGameXmlReader } if (player.isInCategory(CategoryType.AWAKEN_GROUP)) { - if (Config.AUTO_LEARN_SKILLS) // needs better cleanup + SkillTreesData.getInstance().cleanSkillUponAwakening(player); + for (L2SkillLearn skill : SkillTreesData.getInstance().getRaceSkillTree(player.getRace())) { - for (Skill skill : SkillTreesData.getInstance().getAllAvailableSkills(player, player.getClassId().getParent(), Config.AUTO_LEARN_FS_SKILLS, true)) - { - player.removeSkill(skill, true); - } - for (Skill skill : SkillTreesData.getInstance().getAllAvailableSkills(player, player.getClassId(), Config.AUTO_LEARN_FS_SKILLS, true)) - { - player.addSkill(skill, true); - } - } - else - { - SkillTreesData.getInstance().cleanSkillUponAwakening(player); - for (L2SkillLearn skill : SkillTreesData.getInstance().getRaceSkillTree(player.getRace())) - { - player.addSkill(SkillData.getInstance().getSkill(skill.getSkillId(), skill.getSkillLevel()), true); - } + player.addSkill(SkillData.getInstance().getSkill(skill.getSkillId(), skill.getSkillLevel()), true); } } + 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 and the money payed for class change. player.broadcastUserInfo(); player.sendSkillList(); @@ -770,6 +759,20 @@ public final class ClassMaster extends AbstractNpcAI implements IGameXmlReader { player.setBaseClass(player.getActiveClass()); } + if (player.isInCategory(CategoryType.AWAKEN_GROUP)) + { + SkillTreesData.getInstance().cleanSkillUponAwakening(player); + for (L2SkillLearn skill : SkillTreesData.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, 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(); return true; } diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/com/l2jmobius/gameserver/model/actor/L2Character.java b/L2J_Mobius_Classic_2.0_Saviors/java/com/l2jmobius/gameserver/model/actor/L2Character.java index acf3bce595..ef8792b970 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/com/l2jmobius/gameserver/model/actor/L2Character.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/com/l2jmobius/gameserver/model/actor/L2Character.java @@ -4223,7 +4223,6 @@ public abstract class L2Character extends L2Object implements ISkillsHolder, IDe // Remove all its Func objects from the L2Character calculator set if (oldSkill != null) { - // Stop casting if this skill is used right now abortCast(s -> s.getSkill().getId() == skillId);