ClassMaster auto learn skill fixes.

This commit is contained in:
MobiusDev 2017-10-15 23:06:02 +00:00
parent 4756112896
commit 79646b1e2a
8 changed files with 84 additions and 76 deletions

View File

@ -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.OnPlayerPressTutorialMark;
import com.l2jmobius.gameserver.model.events.impl.character.player.OnPlayerProfessionChange; import com.l2jmobius.gameserver.model.events.impl.character.player.OnPlayerProfessionChange;
import com.l2jmobius.gameserver.model.holders.ItemHolder; 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.model.spawns.SpawnTemplate;
import com.l2jmobius.gameserver.network.serverpackets.PlaySound; import com.l2jmobius.gameserver.network.serverpackets.PlaySound;
import com.l2jmobius.gameserver.network.serverpackets.TutorialCloseHtml; import com.l2jmobius.gameserver.network.serverpackets.TutorialCloseHtml;
@ -403,19 +402,6 @@ public final class ClassMaster extends AbstractNpcAI implements IGameXmlReader
player.setBaseClass(player.getActiveClass()); player.setBaseClass(player.getActiveClass());
} }
if (player.isInCategory(CategoryType.AWAKEN_GROUP)) if (player.isInCategory(CategoryType.AWAKEN_GROUP))
{
if (Config.AUTO_LEARN_SKILLS) // needs better cleanup
{
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); SkillTreesData.getInstance().cleanSkillUponAwakening(player);
for (L2SkillLearn skill : SkillTreesData.getInstance().getRaceSkillTree(player.getRace())) for (L2SkillLearn skill : SkillTreesData.getInstance().getRaceSkillTree(player.getRace()))
@ -423,6 +409,9 @@ public final class ClassMaster extends AbstractNpcAI implements IGameXmlReader
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.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.broadcastUserInfo();
@ -802,6 +791,20 @@ public final class ClassMaster extends AbstractNpcAI implements IGameXmlReader
{ {
player.setBaseClass(player.getActiveClass()); 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(); player.sendSkillList();
return true; return true;
} }

View File

@ -4219,7 +4219,6 @@ public abstract class L2Character extends L2Object implements ISkillsHolder, IDe
// Remove all its Func objects from the L2Character calculator set // Remove all its Func objects from the L2Character calculator set
if (oldSkill != null) if (oldSkill != null)
{ {
// Stop casting if this skill is used right now // Stop casting if this skill is used right now
abortCast(s -> s.getSkill().getId() == skillId); abortCast(s -> s.getSkill().getId() == skillId);

View File

@ -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.OnPlayerPressTutorialMark;
import com.l2jmobius.gameserver.model.events.impl.character.player.OnPlayerProfessionChange; import com.l2jmobius.gameserver.model.events.impl.character.player.OnPlayerProfessionChange;
import com.l2jmobius.gameserver.model.holders.ItemHolder; 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.model.spawns.SpawnTemplate;
import com.l2jmobius.gameserver.network.serverpackets.PlaySound; import com.l2jmobius.gameserver.network.serverpackets.PlaySound;
import com.l2jmobius.gameserver.network.serverpackets.TutorialCloseHtml; import com.l2jmobius.gameserver.network.serverpackets.TutorialCloseHtml;
@ -403,19 +402,6 @@ public final class ClassMaster extends AbstractNpcAI implements IGameXmlReader
player.setBaseClass(player.getActiveClass()); player.setBaseClass(player.getActiveClass());
} }
if (player.isInCategory(CategoryType.AWAKEN_GROUP)) if (player.isInCategory(CategoryType.AWAKEN_GROUP))
{
if (Config.AUTO_LEARN_SKILLS) // needs better cleanup
{
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); SkillTreesData.getInstance().cleanSkillUponAwakening(player);
for (L2SkillLearn skill : SkillTreesData.getInstance().getRaceSkillTree(player.getRace())) for (L2SkillLearn skill : SkillTreesData.getInstance().getRaceSkillTree(player.getRace()))
@ -423,6 +409,9 @@ public final class ClassMaster extends AbstractNpcAI implements IGameXmlReader
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.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.broadcastUserInfo();
@ -802,6 +791,20 @@ public final class ClassMaster extends AbstractNpcAI implements IGameXmlReader
{ {
player.setBaseClass(player.getActiveClass()); 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(); player.sendSkillList();
return true; return true;
} }

View File

@ -4223,7 +4223,6 @@ public abstract class L2Character extends L2Object implements ISkillsHolder, IDe
// Remove all its Func objects from the L2Character calculator set // Remove all its Func objects from the L2Character calculator set
if (oldSkill != null) if (oldSkill != null)
{ {
// Stop casting if this skill is used right now // Stop casting if this skill is used right now
abortCast(s -> s.getSkill().getId() == skillId); abortCast(s -> s.getSkill().getId() == skillId);

View File

@ -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.OnPlayerPressTutorialMark;
import com.l2jmobius.gameserver.model.events.impl.character.player.OnPlayerProfessionChange; import com.l2jmobius.gameserver.model.events.impl.character.player.OnPlayerProfessionChange;
import com.l2jmobius.gameserver.model.holders.ItemHolder; 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.model.spawns.SpawnTemplate;
import com.l2jmobius.gameserver.network.serverpackets.PlaySound; import com.l2jmobius.gameserver.network.serverpackets.PlaySound;
import com.l2jmobius.gameserver.network.serverpackets.TutorialCloseHtml; import com.l2jmobius.gameserver.network.serverpackets.TutorialCloseHtml;
@ -403,19 +402,6 @@ public final class ClassMaster extends AbstractNpcAI implements IGameXmlReader
player.setBaseClass(player.getActiveClass()); player.setBaseClass(player.getActiveClass());
} }
if (player.isInCategory(CategoryType.AWAKEN_GROUP)) if (player.isInCategory(CategoryType.AWAKEN_GROUP))
{
if (Config.AUTO_LEARN_SKILLS) // needs better cleanup
{
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); SkillTreesData.getInstance().cleanSkillUponAwakening(player);
for (L2SkillLearn skill : SkillTreesData.getInstance().getRaceSkillTree(player.getRace())) for (L2SkillLearn skill : SkillTreesData.getInstance().getRaceSkillTree(player.getRace()))
@ -423,6 +409,9 @@ public final class ClassMaster extends AbstractNpcAI implements IGameXmlReader
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.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.broadcastUserInfo();
@ -802,6 +791,20 @@ public final class ClassMaster extends AbstractNpcAI implements IGameXmlReader
{ {
player.setBaseClass(player.getActiveClass()); 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(); player.sendSkillList();
return true; return true;
} }

View File

@ -4223,7 +4223,6 @@ public abstract class L2Character extends L2Object implements ISkillsHolder, IDe
// Remove all its Func objects from the L2Character calculator set // Remove all its Func objects from the L2Character calculator set
if (oldSkill != null) if (oldSkill != null)
{ {
// Stop casting if this skill is used right now // Stop casting if this skill is used right now
abortCast(s -> s.getSkill().getId() == skillId); abortCast(s -> s.getSkill().getId() == skillId);

View File

@ -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.OnPlayerPressTutorialMark;
import com.l2jmobius.gameserver.model.events.impl.character.player.OnPlayerProfessionChange; import com.l2jmobius.gameserver.model.events.impl.character.player.OnPlayerProfessionChange;
import com.l2jmobius.gameserver.model.holders.ItemHolder; 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.model.spawns.SpawnTemplate;
import com.l2jmobius.gameserver.network.serverpackets.PlaySound; import com.l2jmobius.gameserver.network.serverpackets.PlaySound;
import com.l2jmobius.gameserver.network.serverpackets.TutorialCloseHtml; import com.l2jmobius.gameserver.network.serverpackets.TutorialCloseHtml;
@ -371,19 +370,6 @@ public final class ClassMaster extends AbstractNpcAI implements IGameXmlReader
player.setBaseClass(player.getActiveClass()); player.setBaseClass(player.getActiveClass());
} }
if (player.isInCategory(CategoryType.AWAKEN_GROUP)) if (player.isInCategory(CategoryType.AWAKEN_GROUP))
{
if (Config.AUTO_LEARN_SKILLS) // needs better cleanup
{
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); SkillTreesData.getInstance().cleanSkillUponAwakening(player);
for (L2SkillLearn skill : SkillTreesData.getInstance().getRaceSkillTree(player.getRace())) for (L2SkillLearn skill : SkillTreesData.getInstance().getRaceSkillTree(player.getRace()))
@ -391,6 +377,9 @@ public final class ClassMaster extends AbstractNpcAI implements IGameXmlReader
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.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.broadcastUserInfo();
@ -770,6 +759,20 @@ public final class ClassMaster extends AbstractNpcAI implements IGameXmlReader
{ {
player.setBaseClass(player.getActiveClass()); 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(); player.sendSkillList();
return true; return true;
} }

View File

@ -4223,7 +4223,6 @@ public abstract class L2Character extends L2Object implements ISkillsHolder, IDe
// Remove all its Func objects from the L2Character calculator set // Remove all its Func objects from the L2Character calculator set
if (oldSkill != null) if (oldSkill != null)
{ {
// Stop casting if this skill is used right now // Stop casting if this skill is used right now
abortCast(s -> s.getSkill().getId() == skillId); abortCast(s -> s.getSkill().getId() == skillId);