Clean skills upon change class.

This commit is contained in:
MobiusDevelopment
2020-01-22 23:36:45 +00:00
parent 1d3d1cfac6
commit 4af5183baf
8 changed files with 14 additions and 12 deletions

View File

@@ -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);
}

View File

@@ -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);