Previous commit for equivalent Classic branch.

This commit is contained in:
MobiusDevelopment 2020-01-22 23:52:22 +00:00
parent 4af5183baf
commit effd418284
4 changed files with 10 additions and 5 deletions

View File

@ -33,6 +33,7 @@ import org.l2jmobius.Config;
import org.l2jmobius.commons.util.IXmlReader; import org.l2jmobius.commons.util.IXmlReader;
import org.l2jmobius.gameserver.data.xml.impl.CategoryData; import org.l2jmobius.gameserver.data.xml.impl.CategoryData;
import org.l2jmobius.gameserver.data.xml.impl.ClassListData; import org.l2jmobius.gameserver.data.xml.impl.ClassListData;
import org.l2jmobius.gameserver.data.xml.impl.SkillTreesData;
import org.l2jmobius.gameserver.datatables.ItemTable; import org.l2jmobius.gameserver.datatables.ItemTable;
import org.l2jmobius.gameserver.enums.CategoryType; import org.l2jmobius.gameserver.enums.CategoryType;
import org.l2jmobius.gameserver.enums.Race; import org.l2jmobius.gameserver.enums.Race;
@ -386,9 +387,9 @@ public class ClassMaster extends AbstractNpcAI implements IXmlReader
{ {
player.setBaseClass(player.getActiveClass()); player.setBaseClass(player.getActiveClass());
} }
SkillTreesData.getInstance().cleanSkillUponChangeClass(player);
// if (player.isInCategory(CategoryType.SIXTH_CLASS_GROUP)) // if (player.isInCategory(CategoryType.SIXTH_CLASS_GROUP))
// { // {
// SkillTreesData.getInstance().cleanSkillUponAwakening(player);
// for (SkillLearn skill : SkillTreesData.getInstance().getRaceSkillTree(player.getRace())) // for (SkillLearn 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);
@ -787,9 +788,9 @@ public class ClassMaster extends AbstractNpcAI implements IXmlReader
{ {
player.setBaseClass(player.getActiveClass()); player.setBaseClass(player.getActiveClass());
} }
SkillTreesData.getInstance().cleanSkillUponChangeClass(player);
// if (player.isInCategory(CategoryType.SIXTH_CLASS_GROUP)) // if (player.isInCategory(CategoryType.SIXTH_CLASS_GROUP))
// { // {
// SkillTreesData.getInstance().cleanSkillUponAwakening(player);
// for (SkillLearn skill : SkillTreesData.getInstance().getRaceSkillTree(player.getRace())) // for (SkillLearn 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);

View File

@ -32,6 +32,7 @@ import org.l2jmobius.Config;
import org.l2jmobius.commons.database.DatabaseFactory; import org.l2jmobius.commons.database.DatabaseFactory;
import org.l2jmobius.gameserver.data.sql.impl.CharNameTable; import org.l2jmobius.gameserver.data.sql.impl.CharNameTable;
import org.l2jmobius.gameserver.data.xml.impl.ClassListData; import org.l2jmobius.gameserver.data.xml.impl.ClassListData;
import org.l2jmobius.gameserver.data.xml.impl.SkillTreesData;
import org.l2jmobius.gameserver.enums.Race; import org.l2jmobius.gameserver.enums.Race;
import org.l2jmobius.gameserver.enums.SubclassInfoType; import org.l2jmobius.gameserver.enums.SubclassInfoType;
import org.l2jmobius.gameserver.handler.IAdminCommandHandler; import org.l2jmobius.gameserver.handler.IAdminCommandHandler;
@ -413,6 +414,7 @@ public class AdminEditChar implements IAdminCommandHandler
} }
final String newclass = ClassListData.getInstance().getClass(player.getClassId()).getClassName(); final String newclass = ClassListData.getInstance().getClass(player.getClassId()).getClassName();
SkillTreesData.getInstance().cleanSkillUponChangeClass(player);
player.store(false); player.store(false);
player.broadcastUserInfo(); player.broadcastUserInfo();
player.sendSkillList(); player.sendSkillList();

View File

@ -1447,14 +1447,15 @@ public class SkillTreesData implements IXmlReader
return result; return result;
} }
public void cleanSkillUponAwakening(PlayerInstance player) public void cleanSkillUponChangeClass(PlayerInstance player)
{ {
final ClassId currentClass = player.getClassId();
for (Skill skill : player.getAllSkills()) for (Skill skill : player.getAllSkills())
{ {
final int maxLvl = SkillData.getInstance().getMaxLevel(skill.getId()); final int maxLvl = SkillData.getInstance().getMaxLevel(skill.getId());
final long hashCode = SkillData.getSkillHashCode(skill.getId(), maxLvl); 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); player.removeSkill(skill, true, true);
} }

View File

@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.network.clientpackets.classchange;
import org.l2jmobius.Config; import org.l2jmobius.Config;
import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.commons.network.PacketReader;
import org.l2jmobius.gameserver.data.xml.impl.CategoryData; import org.l2jmobius.gameserver.data.xml.impl.CategoryData;
import org.l2jmobius.gameserver.data.xml.impl.SkillTreesData;
import org.l2jmobius.gameserver.enums.CategoryType; import org.l2jmobius.gameserver.enums.CategoryType;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.base.ClassId; import org.l2jmobius.gameserver.model.base.ClassId;
@ -93,7 +94,7 @@ public class ExRequestClassChange implements IClientIncomingPacket
{ {
player.setBaseClass(player.getActiveClass()); player.setBaseClass(player.getActiveClass());
} }
SkillTreesData.getInstance().cleanSkillUponChangeClass(player);
if (Config.AUTO_LEARN_SKILLS) if (Config.AUTO_LEARN_SKILLS)
{ {
player.giveAvailableSkills(Config.AUTO_LEARN_FS_SKILLS, true); player.giveAvailableSkills(Config.AUTO_LEARN_FS_SKILLS, true);