Enabled skilltree data previous class unlearn on all times.

This commit is contained in:
MobiusDevelopment
2021-01-02 11:21:17 +00:00
parent 4022b9f6cc
commit 0115c378a6
18 changed files with 54 additions and 66 deletions

View File

@@ -201,7 +201,7 @@ public class Joachim extends AbstractNpcAI
player.setActiveClass(1); player.setActiveClass(1);
player.sendPacket(new ExSubjobInfo(player, SubclassInfoType.CLASS_CHANGED)); player.sendPacket(new ExSubjobInfo(player, SubclassInfoType.CLASS_CHANGED));
player.sendPacket(getNpcHtmlMessage(player, npc, "34513-07.html")); player.sendPacket(getNpcHtmlMessage(player, npc, "34513-07.html"));
SkillTreeData.getInstance().cleanSkillUponChangeClass(player, false); SkillTreeData.getInstance().cleanSkillUponChangeClass(player);
player.sendPacket(new AcquireSkillList(player)); player.sendPacket(new AcquireSkillList(player));
player.sendSkillList(); player.sendSkillList();
player.broadcastUserInfo(); player.broadcastUserInfo();

View File

@@ -303,7 +303,7 @@ public class AwakeningMaster extends AbstractNpcAI
} }
} }
giveItems(player, player.isDualClassActive() ? CHAOS_POMANDER_DUAL_CLASS : CHAOS_POMANDER, 2); giveItems(player, player.isDualClassActive() ? CHAOS_POMANDER_DUAL_CLASS : CHAOS_POMANDER, 2);
SkillTreeData.getInstance().cleanSkillUponChangeClass(player, false); SkillTreeData.getInstance().cleanSkillUponChangeClass(player);
for (SkillLearn skill : SkillTreeData.getInstance().getRaceSkillTree(player.getRace())) for (SkillLearn skill : SkillTreeData.getInstance().getRaceSkillTree(player.getRace()))
{ {
player.addSkill(SkillData.getInstance().getSkill(skill.getSkillId(), skill.getSkillLevel()), true); player.addSkill(SkillData.getInstance().getSkill(skill.getSkillId(), skill.getSkillLevel()), true);

View File

@@ -152,7 +152,7 @@ public class Hardin extends AbstractNpcAI
player.setBaseClass(player.getActiveClass()); player.setBaseClass(player.getActiveClass());
} }
// Adjustments // Adjustments
SkillTreeData.getInstance().cleanSkillUponChangeClass(player, false); SkillTreeData.getInstance().cleanSkillUponChangeClass(player);
for (SkillLearn skill : SkillTreeData.getInstance().getRaceSkillTree(player.getRace())) for (SkillLearn skill : SkillTreeData.getInstance().getRaceSkillTree(player.getRace()))
{ {
player.addSkill(SkillData.getInstance().getSkill(skill.getSkillId(), skill.getSkillLevel()), true); player.addSkill(SkillData.getInstance().getSkill(skill.getSkillId(), skill.getSkillLevel()), true);

View File

@@ -593,7 +593,7 @@ public class Raina extends AbstractNpcAI
player.setActiveClass(classIndex); player.setActiveClass(classIndex);
player.sendPacket(new ExSubjobInfo(player, SubclassInfoType.CLASS_CHANGED)); player.sendPacket(new ExSubjobInfo(player, SubclassInfoType.CLASS_CHANGED));
player.sendPacket(getNpcHtmlMessage(player, npc, "reawakenSuccess.html")); player.sendPacket(getNpcHtmlMessage(player, npc, "reawakenSuccess.html"));
SkillTreeData.getInstance().cleanSkillUponChangeClass(player, false); SkillTreeData.getInstance().cleanSkillUponChangeClass(player);
player.sendPacket(new AcquireSkillList(player)); player.sendPacket(new AcquireSkillList(player));
player.sendSkillList(); player.sendSkillList();
giveItems(player, getCloakId(player), 1); giveItems(player, getCloakId(player), 1);
@@ -632,7 +632,7 @@ public class Raina extends AbstractNpcAI
player.sendPacket(new ExSubjobInfo(player, SubclassInfoType.NEW_SLOT_USED)); player.sendPacket(new ExSubjobInfo(player, SubclassInfoType.NEW_SLOT_USED));
player.sendPacket(SystemMessageId.THE_NEW_SUBCLASS_S1_HAS_BEEN_ADDED_CONGRATS); player.sendPacket(SystemMessageId.THE_NEW_SUBCLASS_S1_HAS_BEEN_ADDED_CONGRATS);
player.sendPacket(getNpcHtmlMessage(player, npc, "addSuccess.html")); player.sendPacket(getNpcHtmlMessage(player, npc, "addSuccess.html"));
SkillTreeData.getInstance().cleanSkillUponChangeClass(player, false); SkillTreeData.getInstance().cleanSkillUponChangeClass(player);
player.sendPacket(new AcquireSkillList(player)); player.sendPacket(new AcquireSkillList(player));
player.sendSkillList(); player.sendSkillList();
giveItems(player, getPowerItemId(player), 1); giveItems(player, getPowerItemId(player), 1);

View File

@@ -422,7 +422,7 @@ public class ClassMaster extends AbstractNpcAI implements IXmlReader
if (player.isInCategory(CategoryType.SIXTH_CLASS_GROUP)) if (player.isInCategory(CategoryType.SIXTH_CLASS_GROUP))
{ {
SkillTreeData.getInstance().cleanSkillUponChangeClass(player, false); SkillTreeData.getInstance().cleanSkillUponChangeClass(player);
for (SkillLearn skill : SkillTreeData.getInstance().getRaceSkillTree(player.getRace())) for (SkillLearn skill : SkillTreeData.getInstance().getRaceSkillTree(player.getRace()))
{ {
player.addSkill(SkillData.getInstance().getSkill(skill.getSkillId(), skill.getSkillLevel()), true); player.addSkill(SkillData.getInstance().getSkill(skill.getSkillId(), skill.getSkillLevel()), true);
@@ -864,7 +864,7 @@ public class ClassMaster extends AbstractNpcAI implements IXmlReader
if (player.isInCategory(CategoryType.SIXTH_CLASS_GROUP)) if (player.isInCategory(CategoryType.SIXTH_CLASS_GROUP))
{ {
SkillTreeData.getInstance().cleanSkillUponChangeClass(player, false); SkillTreeData.getInstance().cleanSkillUponChangeClass(player);
for (SkillLearn skill : SkillTreeData.getInstance().getRaceSkillTree(player.getRace())) for (SkillLearn skill : SkillTreeData.getInstance().getRaceSkillTree(player.getRace()))
{ {
player.addSkill(SkillData.getInstance().getSkill(skill.getSkillId(), skill.getSkillLevel()), true); player.addSkill(SkillData.getInstance().getSkill(skill.getSkillId(), skill.getSkillLevel()), true);

View File

@@ -423,7 +423,7 @@ public class AdminEditChar implements IAdminCommandHandler
final String newclass = ClassListData.getInstance().getClass(player.getClassId()).getClassName(); final String newclass = ClassListData.getInstance().getClass(player.getClassId()).getClassName();
if (player.isInCategory(CategoryType.SIXTH_CLASS_GROUP)) if (player.isInCategory(CategoryType.SIXTH_CLASS_GROUP))
{ {
SkillTreeData.getInstance().cleanSkillUponChangeClass(player, true); SkillTreeData.getInstance().cleanSkillUponChangeClass(player);
for (SkillLearn skill : SkillTreeData.getInstance().getRaceSkillTree(player.getRace())) for (SkillLearn skill : SkillTreeData.getInstance().getRaceSkillTree(player.getRace()))
{ {
player.addSkill(SkillData.getInstance().getSkill(skill.getSkillId(), skill.getSkillLevel()), true); player.addSkill(SkillData.getInstance().getSkill(skill.getSkillId(), skill.getSkillLevel()), true);

View File

@@ -1476,7 +1476,7 @@ public class SkillTreeData implements IXmlReader
return result; return result;
} }
public void cleanSkillUponChangeClass(PlayerInstance player, boolean checkPreviousClasses) public void cleanSkillUponChangeClass(PlayerInstance player)
{ {
ClassId currentClass = player.getClassId(); ClassId currentClass = player.getClassId();
for (Skill skill : player.getAllSkills()) for (Skill skill : player.getAllSkills())
@@ -1510,8 +1510,6 @@ public class SkillTreeData implements IXmlReader
} }
// Check previous classes as well, in case classes where skipped. // Check previous classes as well, in case classes where skipped.
if (checkPreviousClasses)
{
while (currentClass.getParent() != null) while (currentClass.getParent() != null)
{ {
final Set<Integer> removedList = _removeSkillCache.get(currentClass); final Set<Integer> removedList = _removeSkillCache.get(currentClass);
@@ -1529,7 +1527,6 @@ public class SkillTreeData implements IXmlReader
currentClass = currentClass.getParent(); currentClass = currentClass.getParent();
} }
} }
}
public boolean isAlchemySkill(int skillId, int skillLevel) public boolean isAlchemySkill(int skillId, int skillLevel)
{ {

View File

@@ -105,7 +105,7 @@ public class ExRequestClassChange implements IClientIncomingPacket
if (player.isInCategory(CategoryType.SIXTH_CLASS_GROUP)) if (player.isInCategory(CategoryType.SIXTH_CLASS_GROUP))
{ {
SkillTreeData.getInstance().cleanSkillUponChangeClass(player, false); // TODO: Move to skill learn method? SkillTreeData.getInstance().cleanSkillUponChangeClass(player); // TODO: Move to skill learn method?
for (SkillLearn skill : SkillTreeData.getInstance().getRaceSkillTree(player.getRace())) for (SkillLearn skill : SkillTreeData.getInstance().getRaceSkillTree(player.getRace()))
{ {
player.addSkill(SkillData.getInstance().getSkill(skill.getSkillId(), skill.getSkillLevel()), true); player.addSkill(SkillData.getInstance().getSkill(skill.getSkillId(), skill.getSkillLevel()), true);

View File

@@ -201,7 +201,7 @@ public class Joachim extends AbstractNpcAI
player.setActiveClass(1); player.setActiveClass(1);
player.sendPacket(new ExSubjobInfo(player, SubclassInfoType.CLASS_CHANGED)); player.sendPacket(new ExSubjobInfo(player, SubclassInfoType.CLASS_CHANGED));
player.sendPacket(getNpcHtmlMessage(player, npc, "34513-07.html")); player.sendPacket(getNpcHtmlMessage(player, npc, "34513-07.html"));
SkillTreeData.getInstance().cleanSkillUponChangeClass(player, false); SkillTreeData.getInstance().cleanSkillUponChangeClass(player);
player.sendPacket(new AcquireSkillList(player)); player.sendPacket(new AcquireSkillList(player));
player.sendSkillList(); player.sendSkillList();
player.broadcastUserInfo(); player.broadcastUserInfo();

View File

@@ -303,7 +303,7 @@ public class AwakeningMaster extends AbstractNpcAI
} }
} }
giveItems(player, player.isDualClassActive() ? CHAOS_POMANDER_DUAL_CLASS : CHAOS_POMANDER, 2); giveItems(player, player.isDualClassActive() ? CHAOS_POMANDER_DUAL_CLASS : CHAOS_POMANDER, 2);
SkillTreeData.getInstance().cleanSkillUponChangeClass(player, false); SkillTreeData.getInstance().cleanSkillUponChangeClass(player);
for (SkillLearn skill : SkillTreeData.getInstance().getRaceSkillTree(player.getRace())) for (SkillLearn skill : SkillTreeData.getInstance().getRaceSkillTree(player.getRace()))
{ {
player.addSkill(SkillData.getInstance().getSkill(skill.getSkillId(), skill.getSkillLevel()), true); player.addSkill(SkillData.getInstance().getSkill(skill.getSkillId(), skill.getSkillLevel()), true);

View File

@@ -152,7 +152,7 @@ public class Hardin extends AbstractNpcAI
player.setBaseClass(player.getActiveClass()); player.setBaseClass(player.getActiveClass());
} }
// Adjustments // Adjustments
SkillTreeData.getInstance().cleanSkillUponChangeClass(player, false); SkillTreeData.getInstance().cleanSkillUponChangeClass(player);
for (SkillLearn skill : SkillTreeData.getInstance().getRaceSkillTree(player.getRace())) for (SkillLearn skill : SkillTreeData.getInstance().getRaceSkillTree(player.getRace()))
{ {
player.addSkill(SkillData.getInstance().getSkill(skill.getSkillId(), skill.getSkillLevel()), true); player.addSkill(SkillData.getInstance().getSkill(skill.getSkillId(), skill.getSkillLevel()), true);

View File

@@ -593,7 +593,7 @@ public class Raina extends AbstractNpcAI
player.setActiveClass(classIndex); player.setActiveClass(classIndex);
player.sendPacket(new ExSubjobInfo(player, SubclassInfoType.CLASS_CHANGED)); player.sendPacket(new ExSubjobInfo(player, SubclassInfoType.CLASS_CHANGED));
player.sendPacket(getNpcHtmlMessage(player, npc, "reawakenSuccess.html")); player.sendPacket(getNpcHtmlMessage(player, npc, "reawakenSuccess.html"));
SkillTreeData.getInstance().cleanSkillUponChangeClass(player, false); SkillTreeData.getInstance().cleanSkillUponChangeClass(player);
player.sendPacket(new AcquireSkillList(player)); player.sendPacket(new AcquireSkillList(player));
player.sendSkillList(); player.sendSkillList();
giveItems(player, getCloakId(player), 1); giveItems(player, getCloakId(player), 1);
@@ -632,7 +632,7 @@ public class Raina extends AbstractNpcAI
player.sendPacket(new ExSubjobInfo(player, SubclassInfoType.NEW_SLOT_USED)); player.sendPacket(new ExSubjobInfo(player, SubclassInfoType.NEW_SLOT_USED));
player.sendPacket(SystemMessageId.THE_NEW_SUBCLASS_S1_HAS_BEEN_ADDED_CONGRATS); player.sendPacket(SystemMessageId.THE_NEW_SUBCLASS_S1_HAS_BEEN_ADDED_CONGRATS);
player.sendPacket(getNpcHtmlMessage(player, npc, "addSuccess.html")); player.sendPacket(getNpcHtmlMessage(player, npc, "addSuccess.html"));
SkillTreeData.getInstance().cleanSkillUponChangeClass(player, false); SkillTreeData.getInstance().cleanSkillUponChangeClass(player);
player.sendPacket(new AcquireSkillList(player)); player.sendPacket(new AcquireSkillList(player));
player.sendSkillList(); player.sendSkillList();
giveItems(player, getPowerItemId(player), 1); giveItems(player, getPowerItemId(player), 1);

View File

@@ -422,7 +422,7 @@ public class ClassMaster extends AbstractNpcAI implements IXmlReader
if (player.isInCategory(CategoryType.SIXTH_CLASS_GROUP)) if (player.isInCategory(CategoryType.SIXTH_CLASS_GROUP))
{ {
SkillTreeData.getInstance().cleanSkillUponChangeClass(player, false); SkillTreeData.getInstance().cleanSkillUponChangeClass(player);
for (SkillLearn skill : SkillTreeData.getInstance().getRaceSkillTree(player.getRace())) for (SkillLearn skill : SkillTreeData.getInstance().getRaceSkillTree(player.getRace()))
{ {
player.addSkill(SkillData.getInstance().getSkill(skill.getSkillId(), skill.getSkillLevel()), true); player.addSkill(SkillData.getInstance().getSkill(skill.getSkillId(), skill.getSkillLevel()), true);
@@ -864,7 +864,7 @@ public class ClassMaster extends AbstractNpcAI implements IXmlReader
if (player.isInCategory(CategoryType.SIXTH_CLASS_GROUP)) if (player.isInCategory(CategoryType.SIXTH_CLASS_GROUP))
{ {
SkillTreeData.getInstance().cleanSkillUponChangeClass(player, false); SkillTreeData.getInstance().cleanSkillUponChangeClass(player);
for (SkillLearn skill : SkillTreeData.getInstance().getRaceSkillTree(player.getRace())) for (SkillLearn skill : SkillTreeData.getInstance().getRaceSkillTree(player.getRace()))
{ {
player.addSkill(SkillData.getInstance().getSkill(skill.getSkillId(), skill.getSkillLevel()), true); player.addSkill(SkillData.getInstance().getSkill(skill.getSkillId(), skill.getSkillLevel()), true);

View File

@@ -423,7 +423,7 @@ public class AdminEditChar implements IAdminCommandHandler
final String newclass = ClassListData.getInstance().getClass(player.getClassId()).getClassName(); final String newclass = ClassListData.getInstance().getClass(player.getClassId()).getClassName();
if (player.isInCategory(CategoryType.SIXTH_CLASS_GROUP)) if (player.isInCategory(CategoryType.SIXTH_CLASS_GROUP))
{ {
SkillTreeData.getInstance().cleanSkillUponChangeClass(player, true); SkillTreeData.getInstance().cleanSkillUponChangeClass(player);
for (SkillLearn skill : SkillTreeData.getInstance().getRaceSkillTree(player.getRace())) for (SkillLearn skill : SkillTreeData.getInstance().getRaceSkillTree(player.getRace()))
{ {
player.addSkill(SkillData.getInstance().getSkill(skill.getSkillId(), skill.getSkillLevel()), true); player.addSkill(SkillData.getInstance().getSkill(skill.getSkillId(), skill.getSkillLevel()), true);

View File

@@ -1476,7 +1476,7 @@ public class SkillTreeData implements IXmlReader
return result; return result;
} }
public void cleanSkillUponChangeClass(PlayerInstance player, boolean checkPreviousClasses) public void cleanSkillUponChangeClass(PlayerInstance player)
{ {
ClassId currentClass = player.getClassId(); ClassId currentClass = player.getClassId();
for (Skill skill : player.getAllSkills()) for (Skill skill : player.getAllSkills())
@@ -1510,8 +1510,6 @@ public class SkillTreeData implements IXmlReader
} }
// Check previous classes as well, in case classes where skipped. // Check previous classes as well, in case classes where skipped.
if (checkPreviousClasses)
{
while (currentClass.getParent() != null) while (currentClass.getParent() != null)
{ {
final Set<Integer> removedList = _removeSkillCache.get(currentClass); final Set<Integer> removedList = _removeSkillCache.get(currentClass);
@@ -1529,7 +1527,6 @@ public class SkillTreeData implements IXmlReader
currentClass = currentClass.getParent(); currentClass = currentClass.getParent();
} }
} }
}
public boolean isAlchemySkill(int skillId, int skillLevel) public boolean isAlchemySkill(int skillId, int skillLevel)
{ {

View File

@@ -105,7 +105,7 @@ public class ExRequestClassChange implements IClientIncomingPacket
if (player.isInCategory(CategoryType.SIXTH_CLASS_GROUP)) if (player.isInCategory(CategoryType.SIXTH_CLASS_GROUP))
{ {
SkillTreeData.getInstance().cleanSkillUponChangeClass(player, false); // TODO: Move to skill learn method? SkillTreeData.getInstance().cleanSkillUponChangeClass(player); // TODO: Move to skill learn method?
for (SkillLearn skill : SkillTreeData.getInstance().getRaceSkillTree(player.getRace())) for (SkillLearn skill : SkillTreeData.getInstance().getRaceSkillTree(player.getRace()))
{ {
player.addSkill(SkillData.getInstance().getSkill(skill.getSkillId(), skill.getSkillLevel()), true); player.addSkill(SkillData.getInstance().getSkill(skill.getSkillId(), skill.getSkillLevel()), true);

View File

@@ -1460,7 +1460,7 @@ public class SkillTreeData implements IXmlReader
return result; return result;
} }
public void cleanSkillUponChangeClass(PlayerInstance player, boolean checkPreviousClasses) public void cleanSkillUponChangeClass(PlayerInstance player)
{ {
ClassId currentClass = player.getClassId(); ClassId currentClass = player.getClassId();
for (Skill skill : player.getAllSkills()) for (Skill skill : player.getAllSkills())
@@ -1494,8 +1494,6 @@ public class SkillTreeData implements IXmlReader
} }
// Check previous classes as well, in case classes where skipped. // Check previous classes as well, in case classes where skipped.
if (checkPreviousClasses)
{
while (currentClass.getParent() != null) while (currentClass.getParent() != null)
{ {
final Set<Integer> removedList = _removeSkillCache.get(currentClass); final Set<Integer> removedList = _removeSkillCache.get(currentClass);
@@ -1513,7 +1511,6 @@ public class SkillTreeData implements IXmlReader
currentClass = currentClass.getParent(); currentClass = currentClass.getParent();
} }
} }
}
public boolean isAlchemySkill(int skillId, int skillLevel) public boolean isAlchemySkill(int skillId, int skillLevel)
{ {

View File

@@ -1460,7 +1460,7 @@ public class SkillTreeData implements IXmlReader
return result; return result;
} }
public void cleanSkillUponChangeClass(PlayerInstance player, boolean checkPreviousClasses) public void cleanSkillUponChangeClass(PlayerInstance player)
{ {
ClassId currentClass = player.getClassId(); ClassId currentClass = player.getClassId();
for (Skill skill : player.getAllSkills()) for (Skill skill : player.getAllSkills())
@@ -1494,8 +1494,6 @@ public class SkillTreeData implements IXmlReader
} }
// Check previous classes as well, in case classes where skipped. // Check previous classes as well, in case classes where skipped.
if (checkPreviousClasses)
{
while (currentClass.getParent() != null) while (currentClass.getParent() != null)
{ {
final Set<Integer> removedList = _removeSkillCache.get(currentClass); final Set<Integer> removedList = _removeSkillCache.get(currentClass);
@@ -1513,7 +1511,6 @@ public class SkillTreeData implements IXmlReader
currentClass = currentClass.getParent(); currentClass = currentClass.getParent();
} }
} }
}
public boolean isAlchemySkill(int skillId, int skillLevel) public boolean isAlchemySkill(int skillId, int skillLevel)
{ {