Addition of cleanSkillUponChangeClass checkPreviousClasses parameter.

This commit is contained in:
MobiusDevelopment
2020-01-24 15:25:27 +00:00
parent c043af33f8
commit 44f5fbdcef
12 changed files with 37 additions and 33 deletions

View File

@@ -387,7 +387,7 @@ public class ClassMaster extends AbstractNpcAI implements IXmlReader
{
player.setBaseClass(player.getActiveClass());
}
SkillTreesData.getInstance().cleanSkillUponChangeClass(player);
SkillTreesData.getInstance().cleanSkillUponChangeClass(player, false);
// if (player.isInCategory(CategoryType.SIXTH_CLASS_GROUP))
// {
// for (SkillLearn skill : SkillTreesData.getInstance().getRaceSkillTree(player.getRace()))
@@ -788,7 +788,7 @@ public class ClassMaster extends AbstractNpcAI implements IXmlReader
{
player.setBaseClass(player.getActiveClass());
}
SkillTreesData.getInstance().cleanSkillUponChangeClass(player);
SkillTreesData.getInstance().cleanSkillUponChangeClass(player, false);
// if (player.isInCategory(CategoryType.SIXTH_CLASS_GROUP))
// {
// for (SkillLearn skill : SkillTreesData.getInstance().getRaceSkillTree(player.getRace()))

View File

@@ -414,7 +414,7 @@ public class AdminEditChar implements IAdminCommandHandler
}
final String newclass = ClassListData.getInstance().getClass(player.getClassId()).getClassName();
SkillTreesData.getInstance().cleanSkillUponChangeClass(player);
SkillTreesData.getInstance().cleanSkillUponChangeClass(player, true);
player.store(false);
player.broadcastUserInfo();
player.sendSkillList();

View File

@@ -1449,7 +1449,7 @@ public class SkillTreesData implements IXmlReader
return result;
}
public void cleanSkillUponChangeClass(PlayerInstance player)
public void cleanSkillUponChangeClass(PlayerInstance player, boolean checkPreviousClasses)
{
ClassId currentClass = player.getClassId();
@@ -1485,21 +1485,23 @@ public class SkillTreesData implements IXmlReader
}
// Check previous classes as well, in case classes where skipped.
while (currentClass.getParent() != null)
if (checkPreviousClasses)
{
currentClass = currentClass.getParent();
final Set<Integer> removedList = _removeSkillCache.get(currentClass);
if (removedList != null)
while (currentClass.getParent() != null)
{
for (Integer skillId : removedList)
final Set<Integer> removedList = _removeSkillCache.get(currentClass);
if (removedList != null)
{
final int currentLevel = player.getSkillLevel(skillId);
if (currentLevel > 0)
for (Integer skillId : removedList)
{
player.removeSkill(SkillData.getInstance().getSkill(skillId, currentLevel));
final int currentLevel = player.getSkillLevel(skillId);
if (currentLevel > 0)
{
player.removeSkill(SkillData.getInstance().getSkill(skillId, currentLevel));
}
}
}
currentClass = currentClass.getParent();
}
}
}

View File

@@ -94,7 +94,7 @@ public class ExRequestClassChange implements IClientIncomingPacket
{
player.setBaseClass(player.getActiveClass());
}
SkillTreesData.getInstance().cleanSkillUponChangeClass(player);
SkillTreesData.getInstance().cleanSkillUponChangeClass(player, false);
if (Config.AUTO_LEARN_SKILLS)
{
player.giveAvailableSkills(Config.AUTO_LEARN_FS_SKILLS, true);