Change class should not remove equipped item skills.
This commit is contained in:
parent
04d2ed51da
commit
c043af33f8
@ -51,9 +51,11 @@ import org.l2jmobius.gameserver.model.base.ClassId;
|
|||||||
import org.l2jmobius.gameserver.model.base.SocialClass;
|
import org.l2jmobius.gameserver.model.base.SocialClass;
|
||||||
import org.l2jmobius.gameserver.model.clan.Clan;
|
import org.l2jmobius.gameserver.model.clan.Clan;
|
||||||
import org.l2jmobius.gameserver.model.holders.ItemHolder;
|
import org.l2jmobius.gameserver.model.holders.ItemHolder;
|
||||||
|
import org.l2jmobius.gameserver.model.holders.ItemSkillHolder;
|
||||||
import org.l2jmobius.gameserver.model.holders.PlayerSkillHolder;
|
import org.l2jmobius.gameserver.model.holders.PlayerSkillHolder;
|
||||||
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
||||||
import org.l2jmobius.gameserver.model.interfaces.ISkillsHolder;
|
import org.l2jmobius.gameserver.model.interfaces.ISkillsHolder;
|
||||||
|
import org.l2jmobius.gameserver.model.items.instance.ItemInstance;
|
||||||
import org.l2jmobius.gameserver.model.skills.CommonSkill;
|
import org.l2jmobius.gameserver.model.skills.CommonSkill;
|
||||||
import org.l2jmobius.gameserver.model.skills.Skill;
|
import org.l2jmobius.gameserver.model.skills.Skill;
|
||||||
|
|
||||||
@ -1467,11 +1469,31 @@ public class SkillTreesData implements IXmlReader
|
|||||||
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(player.getClassId(), hashCode) && !isRemoveSkill(player.getClassId(), skill.getId()) && !isAwakenSaveSkill(player.getClassId(), skill.getId()) && !isAlchemySkill(skill.getId(), skill.getLevel()))
|
||||||
|
{
|
||||||
|
// Do not remove equipped item skills.
|
||||||
|
boolean isItemSkill = false;
|
||||||
|
SEARCH: for (ItemInstance item : player.getInventory().getItems())
|
||||||
|
{
|
||||||
|
final List<ItemSkillHolder> itemSkills = item.getItem().getAllSkills();
|
||||||
|
if (itemSkills != null)
|
||||||
|
{
|
||||||
|
for (ItemSkillHolder itemSkillHolder : itemSkills)
|
||||||
|
{
|
||||||
|
if (itemSkillHolder.getSkillId() == skill.getId())
|
||||||
|
{
|
||||||
|
isItemSkill = true;
|
||||||
|
break SEARCH;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!isItemSkill)
|
||||||
{
|
{
|
||||||
player.removeSkill(skill, true, true);
|
player.removeSkill(skill, true, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public boolean isAlchemySkill(int skillId, int skillLevel)
|
public boolean isAlchemySkill(int skillId, int skillLevel)
|
||||||
{
|
{
|
||||||
|
@ -51,9 +51,11 @@ import org.l2jmobius.gameserver.model.base.ClassId;
|
|||||||
import org.l2jmobius.gameserver.model.base.SocialClass;
|
import org.l2jmobius.gameserver.model.base.SocialClass;
|
||||||
import org.l2jmobius.gameserver.model.clan.Clan;
|
import org.l2jmobius.gameserver.model.clan.Clan;
|
||||||
import org.l2jmobius.gameserver.model.holders.ItemHolder;
|
import org.l2jmobius.gameserver.model.holders.ItemHolder;
|
||||||
|
import org.l2jmobius.gameserver.model.holders.ItemSkillHolder;
|
||||||
import org.l2jmobius.gameserver.model.holders.PlayerSkillHolder;
|
import org.l2jmobius.gameserver.model.holders.PlayerSkillHolder;
|
||||||
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
||||||
import org.l2jmobius.gameserver.model.interfaces.ISkillsHolder;
|
import org.l2jmobius.gameserver.model.interfaces.ISkillsHolder;
|
||||||
|
import org.l2jmobius.gameserver.model.items.instance.ItemInstance;
|
||||||
import org.l2jmobius.gameserver.model.skills.CommonSkill;
|
import org.l2jmobius.gameserver.model.skills.CommonSkill;
|
||||||
import org.l2jmobius.gameserver.model.skills.Skill;
|
import org.l2jmobius.gameserver.model.skills.Skill;
|
||||||
|
|
||||||
@ -1467,11 +1469,31 @@ public class SkillTreesData implements IXmlReader
|
|||||||
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(player.getClassId(), hashCode) && !isRemoveSkill(player.getClassId(), skill.getId()) && !isAwakenSaveSkill(player.getClassId(), skill.getId()) && !isAlchemySkill(skill.getId(), skill.getLevel()))
|
||||||
|
{
|
||||||
|
// Do not remove equipped item skills.
|
||||||
|
boolean isItemSkill = false;
|
||||||
|
SEARCH: for (ItemInstance item : player.getInventory().getItems())
|
||||||
|
{
|
||||||
|
final List<ItemSkillHolder> itemSkills = item.getItem().getAllSkills();
|
||||||
|
if (itemSkills != null)
|
||||||
|
{
|
||||||
|
for (ItemSkillHolder itemSkillHolder : itemSkills)
|
||||||
|
{
|
||||||
|
if (itemSkillHolder.getSkillId() == skill.getId())
|
||||||
|
{
|
||||||
|
isItemSkill = true;
|
||||||
|
break SEARCH;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!isItemSkill)
|
||||||
{
|
{
|
||||||
player.removeSkill(skill, true, true);
|
player.removeSkill(skill, true, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public boolean isAlchemySkill(int skillId, int skillLevel)
|
public boolean isAlchemySkill(int skillId, int skillLevel)
|
||||||
{
|
{
|
||||||
|
@ -51,9 +51,11 @@ import org.l2jmobius.gameserver.model.base.ClassId;
|
|||||||
import org.l2jmobius.gameserver.model.base.SocialClass;
|
import org.l2jmobius.gameserver.model.base.SocialClass;
|
||||||
import org.l2jmobius.gameserver.model.clan.Clan;
|
import org.l2jmobius.gameserver.model.clan.Clan;
|
||||||
import org.l2jmobius.gameserver.model.holders.ItemHolder;
|
import org.l2jmobius.gameserver.model.holders.ItemHolder;
|
||||||
|
import org.l2jmobius.gameserver.model.holders.ItemSkillHolder;
|
||||||
import org.l2jmobius.gameserver.model.holders.PlayerSkillHolder;
|
import org.l2jmobius.gameserver.model.holders.PlayerSkillHolder;
|
||||||
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
||||||
import org.l2jmobius.gameserver.model.interfaces.ISkillsHolder;
|
import org.l2jmobius.gameserver.model.interfaces.ISkillsHolder;
|
||||||
|
import org.l2jmobius.gameserver.model.items.instance.ItemInstance;
|
||||||
import org.l2jmobius.gameserver.model.skills.CommonSkill;
|
import org.l2jmobius.gameserver.model.skills.CommonSkill;
|
||||||
import org.l2jmobius.gameserver.model.skills.Skill;
|
import org.l2jmobius.gameserver.model.skills.Skill;
|
||||||
|
|
||||||
@ -1467,11 +1469,31 @@ public class SkillTreesData implements IXmlReader
|
|||||||
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(player.getClassId(), hashCode) && !isRemoveSkill(player.getClassId(), skill.getId()) && !isAwakenSaveSkill(player.getClassId(), skill.getId()) && !isAlchemySkill(skill.getId(), skill.getLevel()))
|
||||||
|
{
|
||||||
|
// Do not remove equipped item skills.
|
||||||
|
boolean isItemSkill = false;
|
||||||
|
SEARCH: for (ItemInstance item : player.getInventory().getItems())
|
||||||
|
{
|
||||||
|
final List<ItemSkillHolder> itemSkills = item.getItem().getAllSkills();
|
||||||
|
if (itemSkills != null)
|
||||||
|
{
|
||||||
|
for (ItemSkillHolder itemSkillHolder : itemSkills)
|
||||||
|
{
|
||||||
|
if (itemSkillHolder.getSkillId() == skill.getId())
|
||||||
|
{
|
||||||
|
isItemSkill = true;
|
||||||
|
break SEARCH;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!isItemSkill)
|
||||||
{
|
{
|
||||||
player.removeSkill(skill, true, true);
|
player.removeSkill(skill, true, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public boolean isAlchemySkill(int skillId, int skillLevel)
|
public boolean isAlchemySkill(int skillId, int skillLevel)
|
||||||
{
|
{
|
||||||
|
@ -51,9 +51,11 @@ import org.l2jmobius.gameserver.model.base.ClassId;
|
|||||||
import org.l2jmobius.gameserver.model.base.SocialClass;
|
import org.l2jmobius.gameserver.model.base.SocialClass;
|
||||||
import org.l2jmobius.gameserver.model.clan.Clan;
|
import org.l2jmobius.gameserver.model.clan.Clan;
|
||||||
import org.l2jmobius.gameserver.model.holders.ItemHolder;
|
import org.l2jmobius.gameserver.model.holders.ItemHolder;
|
||||||
|
import org.l2jmobius.gameserver.model.holders.ItemSkillHolder;
|
||||||
import org.l2jmobius.gameserver.model.holders.PlayerSkillHolder;
|
import org.l2jmobius.gameserver.model.holders.PlayerSkillHolder;
|
||||||
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
||||||
import org.l2jmobius.gameserver.model.interfaces.ISkillsHolder;
|
import org.l2jmobius.gameserver.model.interfaces.ISkillsHolder;
|
||||||
|
import org.l2jmobius.gameserver.model.items.instance.ItemInstance;
|
||||||
import org.l2jmobius.gameserver.model.skills.CommonSkill;
|
import org.l2jmobius.gameserver.model.skills.CommonSkill;
|
||||||
import org.l2jmobius.gameserver.model.skills.Skill;
|
import org.l2jmobius.gameserver.model.skills.Skill;
|
||||||
|
|
||||||
@ -1467,11 +1469,31 @@ public class SkillTreesData implements IXmlReader
|
|||||||
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(player.getClassId(), hashCode) && !isRemoveSkill(player.getClassId(), skill.getId()) && !isAwakenSaveSkill(player.getClassId(), skill.getId()) && !isAlchemySkill(skill.getId(), skill.getLevel()))
|
||||||
|
{
|
||||||
|
// Do not remove equipped item skills.
|
||||||
|
boolean isItemSkill = false;
|
||||||
|
SEARCH: for (ItemInstance item : player.getInventory().getItems())
|
||||||
|
{
|
||||||
|
final List<ItemSkillHolder> itemSkills = item.getItem().getAllSkills();
|
||||||
|
if (itemSkills != null)
|
||||||
|
{
|
||||||
|
for (ItemSkillHolder itemSkillHolder : itemSkills)
|
||||||
|
{
|
||||||
|
if (itemSkillHolder.getSkillId() == skill.getId())
|
||||||
|
{
|
||||||
|
isItemSkill = true;
|
||||||
|
break SEARCH;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!isItemSkill)
|
||||||
{
|
{
|
||||||
player.removeSkill(skill, true, true);
|
player.removeSkill(skill, true, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public boolean isAlchemySkill(int skillId, int skillLevel)
|
public boolean isAlchemySkill(int skillId, int skillLevel)
|
||||||
{
|
{
|
||||||
|
@ -51,9 +51,11 @@ import org.l2jmobius.gameserver.model.base.ClassId;
|
|||||||
import org.l2jmobius.gameserver.model.base.SocialClass;
|
import org.l2jmobius.gameserver.model.base.SocialClass;
|
||||||
import org.l2jmobius.gameserver.model.clan.Clan;
|
import org.l2jmobius.gameserver.model.clan.Clan;
|
||||||
import org.l2jmobius.gameserver.model.holders.ItemHolder;
|
import org.l2jmobius.gameserver.model.holders.ItemHolder;
|
||||||
|
import org.l2jmobius.gameserver.model.holders.ItemSkillHolder;
|
||||||
import org.l2jmobius.gameserver.model.holders.PlayerSkillHolder;
|
import org.l2jmobius.gameserver.model.holders.PlayerSkillHolder;
|
||||||
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
||||||
import org.l2jmobius.gameserver.model.interfaces.ISkillsHolder;
|
import org.l2jmobius.gameserver.model.interfaces.ISkillsHolder;
|
||||||
|
import org.l2jmobius.gameserver.model.items.instance.ItemInstance;
|
||||||
import org.l2jmobius.gameserver.model.skills.CommonSkill;
|
import org.l2jmobius.gameserver.model.skills.CommonSkill;
|
||||||
import org.l2jmobius.gameserver.model.skills.Skill;
|
import org.l2jmobius.gameserver.model.skills.Skill;
|
||||||
|
|
||||||
@ -1467,11 +1469,31 @@ public class SkillTreesData implements IXmlReader
|
|||||||
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(player.getClassId(), hashCode) && !isRemoveSkill(player.getClassId(), skill.getId()) && !isAwakenSaveSkill(player.getClassId(), skill.getId()) && !isAlchemySkill(skill.getId(), skill.getLevel()))
|
||||||
|
{
|
||||||
|
// Do not remove equipped item skills.
|
||||||
|
boolean isItemSkill = false;
|
||||||
|
SEARCH: for (ItemInstance item : player.getInventory().getItems())
|
||||||
|
{
|
||||||
|
final List<ItemSkillHolder> itemSkills = item.getItem().getAllSkills();
|
||||||
|
if (itemSkills != null)
|
||||||
|
{
|
||||||
|
for (ItemSkillHolder itemSkillHolder : itemSkills)
|
||||||
|
{
|
||||||
|
if (itemSkillHolder.getSkillId() == skill.getId())
|
||||||
|
{
|
||||||
|
isItemSkill = true;
|
||||||
|
break SEARCH;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!isItemSkill)
|
||||||
{
|
{
|
||||||
player.removeSkill(skill, true, true);
|
player.removeSkill(skill, true, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public boolean isAlchemySkill(int skillId, int skillLevel)
|
public boolean isAlchemySkill(int skillId, int skillLevel)
|
||||||
{
|
{
|
||||||
|
@ -51,9 +51,11 @@ import org.l2jmobius.gameserver.model.base.ClassId;
|
|||||||
import org.l2jmobius.gameserver.model.base.SocialClass;
|
import org.l2jmobius.gameserver.model.base.SocialClass;
|
||||||
import org.l2jmobius.gameserver.model.clan.Clan;
|
import org.l2jmobius.gameserver.model.clan.Clan;
|
||||||
import org.l2jmobius.gameserver.model.holders.ItemHolder;
|
import org.l2jmobius.gameserver.model.holders.ItemHolder;
|
||||||
|
import org.l2jmobius.gameserver.model.holders.ItemSkillHolder;
|
||||||
import org.l2jmobius.gameserver.model.holders.PlayerSkillHolder;
|
import org.l2jmobius.gameserver.model.holders.PlayerSkillHolder;
|
||||||
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
||||||
import org.l2jmobius.gameserver.model.interfaces.ISkillsHolder;
|
import org.l2jmobius.gameserver.model.interfaces.ISkillsHolder;
|
||||||
|
import org.l2jmobius.gameserver.model.items.instance.ItemInstance;
|
||||||
import org.l2jmobius.gameserver.model.skills.CommonSkill;
|
import org.l2jmobius.gameserver.model.skills.CommonSkill;
|
||||||
import org.l2jmobius.gameserver.model.skills.Skill;
|
import org.l2jmobius.gameserver.model.skills.Skill;
|
||||||
|
|
||||||
@ -1467,11 +1469,31 @@ public class SkillTreesData implements IXmlReader
|
|||||||
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(player.getClassId(), hashCode) && !isRemoveSkill(player.getClassId(), skill.getId()) && !isAwakenSaveSkill(player.getClassId(), skill.getId()) && !isAlchemySkill(skill.getId(), skill.getLevel()))
|
||||||
|
{
|
||||||
|
// Do not remove equipped item skills.
|
||||||
|
boolean isItemSkill = false;
|
||||||
|
SEARCH: for (ItemInstance item : player.getInventory().getItems())
|
||||||
|
{
|
||||||
|
final List<ItemSkillHolder> itemSkills = item.getItem().getAllSkills();
|
||||||
|
if (itemSkills != null)
|
||||||
|
{
|
||||||
|
for (ItemSkillHolder itemSkillHolder : itemSkills)
|
||||||
|
{
|
||||||
|
if (itemSkillHolder.getSkillId() == skill.getId())
|
||||||
|
{
|
||||||
|
isItemSkill = true;
|
||||||
|
break SEARCH;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!isItemSkill)
|
||||||
{
|
{
|
||||||
player.removeSkill(skill, true, true);
|
player.removeSkill(skill, true, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public boolean isAlchemySkill(int skillId, int skillLevel)
|
public boolean isAlchemySkill(int skillId, int skillLevel)
|
||||||
{
|
{
|
||||||
|
@ -51,9 +51,11 @@ import org.l2jmobius.gameserver.model.base.ClassId;
|
|||||||
import org.l2jmobius.gameserver.model.base.SocialClass;
|
import org.l2jmobius.gameserver.model.base.SocialClass;
|
||||||
import org.l2jmobius.gameserver.model.clan.Clan;
|
import org.l2jmobius.gameserver.model.clan.Clan;
|
||||||
import org.l2jmobius.gameserver.model.holders.ItemHolder;
|
import org.l2jmobius.gameserver.model.holders.ItemHolder;
|
||||||
|
import org.l2jmobius.gameserver.model.holders.ItemSkillHolder;
|
||||||
import org.l2jmobius.gameserver.model.holders.PlayerSkillHolder;
|
import org.l2jmobius.gameserver.model.holders.PlayerSkillHolder;
|
||||||
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
||||||
import org.l2jmobius.gameserver.model.interfaces.ISkillsHolder;
|
import org.l2jmobius.gameserver.model.interfaces.ISkillsHolder;
|
||||||
|
import org.l2jmobius.gameserver.model.items.instance.ItemInstance;
|
||||||
import org.l2jmobius.gameserver.model.skills.CommonSkill;
|
import org.l2jmobius.gameserver.model.skills.CommonSkill;
|
||||||
import org.l2jmobius.gameserver.model.skills.Skill;
|
import org.l2jmobius.gameserver.model.skills.Skill;
|
||||||
|
|
||||||
@ -1469,11 +1471,31 @@ public class SkillTreesData implements IXmlReader
|
|||||||
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(player.getClassId(), hashCode) && !isRemoveSkill(player.getClassId(), skill.getId()) && !isAwakenSaveSkill(player.getClassId(), skill.getId()) && !isAlchemySkill(skill.getId(), skill.getLevel()))
|
||||||
|
{
|
||||||
|
// Do not remove equipped item skills.
|
||||||
|
boolean isItemSkill = false;
|
||||||
|
SEARCH: for (ItemInstance item : player.getInventory().getItems())
|
||||||
|
{
|
||||||
|
final List<ItemSkillHolder> itemSkills = item.getItem().getAllSkills();
|
||||||
|
if (itemSkills != null)
|
||||||
|
{
|
||||||
|
for (ItemSkillHolder itemSkillHolder : itemSkills)
|
||||||
|
{
|
||||||
|
if (itemSkillHolder.getSkillId() == skill.getId())
|
||||||
|
{
|
||||||
|
isItemSkill = true;
|
||||||
|
break SEARCH;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!isItemSkill)
|
||||||
{
|
{
|
||||||
player.removeSkill(skill, true, true);
|
player.removeSkill(skill, true, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public boolean isAlchemySkill(int skillId, int skillLevel)
|
public boolean isAlchemySkill(int skillId, int skillLevel)
|
||||||
{
|
{
|
||||||
|
@ -51,9 +51,11 @@ import org.l2jmobius.gameserver.model.base.ClassId;
|
|||||||
import org.l2jmobius.gameserver.model.base.SocialClass;
|
import org.l2jmobius.gameserver.model.base.SocialClass;
|
||||||
import org.l2jmobius.gameserver.model.clan.Clan;
|
import org.l2jmobius.gameserver.model.clan.Clan;
|
||||||
import org.l2jmobius.gameserver.model.holders.ItemHolder;
|
import org.l2jmobius.gameserver.model.holders.ItemHolder;
|
||||||
|
import org.l2jmobius.gameserver.model.holders.ItemSkillHolder;
|
||||||
import org.l2jmobius.gameserver.model.holders.PlayerSkillHolder;
|
import org.l2jmobius.gameserver.model.holders.PlayerSkillHolder;
|
||||||
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
||||||
import org.l2jmobius.gameserver.model.interfaces.ISkillsHolder;
|
import org.l2jmobius.gameserver.model.interfaces.ISkillsHolder;
|
||||||
|
import org.l2jmobius.gameserver.model.items.instance.ItemInstance;
|
||||||
import org.l2jmobius.gameserver.model.skills.CommonSkill;
|
import org.l2jmobius.gameserver.model.skills.CommonSkill;
|
||||||
import org.l2jmobius.gameserver.model.skills.Skill;
|
import org.l2jmobius.gameserver.model.skills.Skill;
|
||||||
|
|
||||||
@ -1471,10 +1473,30 @@ public class SkillTreesData implements IXmlReader
|
|||||||
final long hashCode = SkillData.getSkillHashCode(skill.getId(), maxLvl);
|
final long hashCode = SkillData.getSkillHashCode(skill.getId(), maxLvl);
|
||||||
|
|
||||||
if (!isCurrentClassSkillNoParent(currentClass, hashCode) && !isRemoveSkill(currentClass, skill.getId()) && !isAwakenSaveSkill(currentClass, skill.getId()) && !isAlchemySkill(skill.getId(), skill.getLevel()))
|
if (!isCurrentClassSkillNoParent(currentClass, hashCode) && !isRemoveSkill(currentClass, skill.getId()) && !isAwakenSaveSkill(currentClass, skill.getId()) && !isAlchemySkill(skill.getId(), skill.getLevel()))
|
||||||
|
{
|
||||||
|
// Do not remove equipped item skills.
|
||||||
|
boolean isItemSkill = false;
|
||||||
|
SEARCH: for (ItemInstance item : player.getInventory().getItems())
|
||||||
|
{
|
||||||
|
final List<ItemSkillHolder> itemSkills = item.getItem().getAllSkills();
|
||||||
|
if (itemSkills != null)
|
||||||
|
{
|
||||||
|
for (ItemSkillHolder itemSkillHolder : itemSkills)
|
||||||
|
{
|
||||||
|
if (itemSkillHolder.getSkillId() == skill.getId())
|
||||||
|
{
|
||||||
|
isItemSkill = true;
|
||||||
|
break SEARCH;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!isItemSkill)
|
||||||
{
|
{
|
||||||
player.removeSkill(skill, true, true);
|
player.removeSkill(skill, true, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Check previous classes as well, in case classes where skipped.
|
// Check previous classes as well, in case classes where skipped.
|
||||||
while (currentClass.getParent() != null)
|
while (currentClass.getParent() != null)
|
||||||
|
@ -51,9 +51,11 @@ import org.l2jmobius.gameserver.model.base.ClassId;
|
|||||||
import org.l2jmobius.gameserver.model.base.SocialClass;
|
import org.l2jmobius.gameserver.model.base.SocialClass;
|
||||||
import org.l2jmobius.gameserver.model.clan.Clan;
|
import org.l2jmobius.gameserver.model.clan.Clan;
|
||||||
import org.l2jmobius.gameserver.model.holders.ItemHolder;
|
import org.l2jmobius.gameserver.model.holders.ItemHolder;
|
||||||
|
import org.l2jmobius.gameserver.model.holders.ItemSkillHolder;
|
||||||
import org.l2jmobius.gameserver.model.holders.PlayerSkillHolder;
|
import org.l2jmobius.gameserver.model.holders.PlayerSkillHolder;
|
||||||
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
||||||
import org.l2jmobius.gameserver.model.interfaces.ISkillsHolder;
|
import org.l2jmobius.gameserver.model.interfaces.ISkillsHolder;
|
||||||
|
import org.l2jmobius.gameserver.model.items.instance.ItemInstance;
|
||||||
import org.l2jmobius.gameserver.model.skills.CommonSkill;
|
import org.l2jmobius.gameserver.model.skills.CommonSkill;
|
||||||
import org.l2jmobius.gameserver.model.skills.Skill;
|
import org.l2jmobius.gameserver.model.skills.Skill;
|
||||||
|
|
||||||
@ -1455,11 +1457,31 @@ public class SkillTreesData implements IXmlReader
|
|||||||
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(player.getClassId(), hashCode) && !isRemoveSkill(player.getClassId(), skill.getId()) && !isAwakenSaveSkill(player.getClassId(), skill.getId()) && !isAlchemySkill(skill.getId(), skill.getLevel()))
|
||||||
|
{
|
||||||
|
// Do not remove equipped item skills.
|
||||||
|
boolean isItemSkill = false;
|
||||||
|
SEARCH: for (ItemInstance item : player.getInventory().getItems())
|
||||||
|
{
|
||||||
|
final List<ItemSkillHolder> itemSkills = item.getItem().getAllSkills();
|
||||||
|
if (itemSkills != null)
|
||||||
|
{
|
||||||
|
for (ItemSkillHolder itemSkillHolder : itemSkills)
|
||||||
|
{
|
||||||
|
if (itemSkillHolder.getSkillId() == skill.getId())
|
||||||
|
{
|
||||||
|
isItemSkill = true;
|
||||||
|
break SEARCH;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!isItemSkill)
|
||||||
{
|
{
|
||||||
player.removeSkill(skill, true, true);
|
player.removeSkill(skill, true, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public boolean isAlchemySkill(int skillId, int skillLevel)
|
public boolean isAlchemySkill(int skillId, int skillLevel)
|
||||||
{
|
{
|
||||||
|
@ -51,9 +51,11 @@ import org.l2jmobius.gameserver.model.base.ClassId;
|
|||||||
import org.l2jmobius.gameserver.model.base.SocialClass;
|
import org.l2jmobius.gameserver.model.base.SocialClass;
|
||||||
import org.l2jmobius.gameserver.model.clan.Clan;
|
import org.l2jmobius.gameserver.model.clan.Clan;
|
||||||
import org.l2jmobius.gameserver.model.holders.ItemHolder;
|
import org.l2jmobius.gameserver.model.holders.ItemHolder;
|
||||||
|
import org.l2jmobius.gameserver.model.holders.ItemSkillHolder;
|
||||||
import org.l2jmobius.gameserver.model.holders.PlayerSkillHolder;
|
import org.l2jmobius.gameserver.model.holders.PlayerSkillHolder;
|
||||||
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
||||||
import org.l2jmobius.gameserver.model.interfaces.ISkillsHolder;
|
import org.l2jmobius.gameserver.model.interfaces.ISkillsHolder;
|
||||||
|
import org.l2jmobius.gameserver.model.items.instance.ItemInstance;
|
||||||
import org.l2jmobius.gameserver.model.skills.CommonSkill;
|
import org.l2jmobius.gameserver.model.skills.CommonSkill;
|
||||||
import org.l2jmobius.gameserver.model.skills.Skill;
|
import org.l2jmobius.gameserver.model.skills.Skill;
|
||||||
|
|
||||||
@ -1455,11 +1457,31 @@ public class SkillTreesData implements IXmlReader
|
|||||||
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(player.getClassId(), hashCode) && !isRemoveSkill(player.getClassId(), skill.getId()) && !isAwakenSaveSkill(player.getClassId(), skill.getId()) && !isAlchemySkill(skill.getId(), skill.getLevel()))
|
||||||
|
{
|
||||||
|
// Do not remove equipped item skills.
|
||||||
|
boolean isItemSkill = false;
|
||||||
|
SEARCH: for (ItemInstance item : player.getInventory().getItems())
|
||||||
|
{
|
||||||
|
final List<ItemSkillHolder> itemSkills = item.getItem().getAllSkills();
|
||||||
|
if (itemSkills != null)
|
||||||
|
{
|
||||||
|
for (ItemSkillHolder itemSkillHolder : itemSkills)
|
||||||
|
{
|
||||||
|
if (itemSkillHolder.getSkillId() == skill.getId())
|
||||||
|
{
|
||||||
|
isItemSkill = true;
|
||||||
|
break SEARCH;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!isItemSkill)
|
||||||
{
|
{
|
||||||
player.removeSkill(skill, true, true);
|
player.removeSkill(skill, true, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public boolean isAlchemySkill(int skillId, int skillLevel)
|
public boolean isAlchemySkill(int skillId, int skillLevel)
|
||||||
{
|
{
|
||||||
|
@ -51,9 +51,11 @@ import org.l2jmobius.gameserver.model.base.ClassId;
|
|||||||
import org.l2jmobius.gameserver.model.base.SocialClass;
|
import org.l2jmobius.gameserver.model.base.SocialClass;
|
||||||
import org.l2jmobius.gameserver.model.clan.Clan;
|
import org.l2jmobius.gameserver.model.clan.Clan;
|
||||||
import org.l2jmobius.gameserver.model.holders.ItemHolder;
|
import org.l2jmobius.gameserver.model.holders.ItemHolder;
|
||||||
|
import org.l2jmobius.gameserver.model.holders.ItemSkillHolder;
|
||||||
import org.l2jmobius.gameserver.model.holders.PlayerSkillHolder;
|
import org.l2jmobius.gameserver.model.holders.PlayerSkillHolder;
|
||||||
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
||||||
import org.l2jmobius.gameserver.model.interfaces.ISkillsHolder;
|
import org.l2jmobius.gameserver.model.interfaces.ISkillsHolder;
|
||||||
|
import org.l2jmobius.gameserver.model.items.instance.ItemInstance;
|
||||||
import org.l2jmobius.gameserver.model.skills.CommonSkill;
|
import org.l2jmobius.gameserver.model.skills.CommonSkill;
|
||||||
import org.l2jmobius.gameserver.model.skills.Skill;
|
import org.l2jmobius.gameserver.model.skills.Skill;
|
||||||
|
|
||||||
@ -1455,11 +1457,31 @@ public class SkillTreesData implements IXmlReader
|
|||||||
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(player.getClassId(), hashCode) && !isRemoveSkill(player.getClassId(), skill.getId()) && !isAwakenSaveSkill(player.getClassId(), skill.getId()) && !isAlchemySkill(skill.getId(), skill.getLevel()))
|
||||||
|
{
|
||||||
|
// Do not remove equipped item skills.
|
||||||
|
boolean isItemSkill = false;
|
||||||
|
SEARCH: for (ItemInstance item : player.getInventory().getItems())
|
||||||
|
{
|
||||||
|
final List<ItemSkillHolder> itemSkills = item.getItem().getAllSkills();
|
||||||
|
if (itemSkills != null)
|
||||||
|
{
|
||||||
|
for (ItemSkillHolder itemSkillHolder : itemSkills)
|
||||||
|
{
|
||||||
|
if (itemSkillHolder.getSkillId() == skill.getId())
|
||||||
|
{
|
||||||
|
isItemSkill = true;
|
||||||
|
break SEARCH;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!isItemSkill)
|
||||||
{
|
{
|
||||||
player.removeSkill(skill, true, true);
|
player.removeSkill(skill, true, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public boolean isAlchemySkill(int skillId, int skillLevel)
|
public boolean isAlchemySkill(int skillId, int skillLevel)
|
||||||
{
|
{
|
||||||
|
@ -51,9 +51,11 @@ import org.l2jmobius.gameserver.model.base.ClassId;
|
|||||||
import org.l2jmobius.gameserver.model.base.SocialClass;
|
import org.l2jmobius.gameserver.model.base.SocialClass;
|
||||||
import org.l2jmobius.gameserver.model.clan.Clan;
|
import org.l2jmobius.gameserver.model.clan.Clan;
|
||||||
import org.l2jmobius.gameserver.model.holders.ItemHolder;
|
import org.l2jmobius.gameserver.model.holders.ItemHolder;
|
||||||
|
import org.l2jmobius.gameserver.model.holders.ItemSkillHolder;
|
||||||
import org.l2jmobius.gameserver.model.holders.PlayerSkillHolder;
|
import org.l2jmobius.gameserver.model.holders.PlayerSkillHolder;
|
||||||
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
||||||
import org.l2jmobius.gameserver.model.interfaces.ISkillsHolder;
|
import org.l2jmobius.gameserver.model.interfaces.ISkillsHolder;
|
||||||
|
import org.l2jmobius.gameserver.model.items.instance.ItemInstance;
|
||||||
import org.l2jmobius.gameserver.model.skills.CommonSkill;
|
import org.l2jmobius.gameserver.model.skills.CommonSkill;
|
||||||
import org.l2jmobius.gameserver.model.skills.Skill;
|
import org.l2jmobius.gameserver.model.skills.Skill;
|
||||||
|
|
||||||
@ -1455,11 +1457,31 @@ public class SkillTreesData implements IXmlReader
|
|||||||
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(player.getClassId(), hashCode) && !isRemoveSkill(player.getClassId(), skill.getId()) && !isAwakenSaveSkill(player.getClassId(), skill.getId()) && !isAlchemySkill(skill.getId(), skill.getLevel()))
|
||||||
|
{
|
||||||
|
// Do not remove equipped item skills.
|
||||||
|
boolean isItemSkill = false;
|
||||||
|
SEARCH: for (ItemInstance item : player.getInventory().getItems())
|
||||||
|
{
|
||||||
|
final List<ItemSkillHolder> itemSkills = item.getItem().getAllSkills();
|
||||||
|
if (itemSkills != null)
|
||||||
|
{
|
||||||
|
for (ItemSkillHolder itemSkillHolder : itemSkills)
|
||||||
|
{
|
||||||
|
if (itemSkillHolder.getSkillId() == skill.getId())
|
||||||
|
{
|
||||||
|
isItemSkill = true;
|
||||||
|
break SEARCH;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!isItemSkill)
|
||||||
{
|
{
|
||||||
player.removeSkill(skill, true, true);
|
player.removeSkill(skill, true, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public boolean isAlchemySkill(int skillId, int skillLevel)
|
public boolean isAlchemySkill(int skillId, int skillLevel)
|
||||||
{
|
{
|
||||||
|
@ -51,9 +51,11 @@ import org.l2jmobius.gameserver.model.base.ClassId;
|
|||||||
import org.l2jmobius.gameserver.model.base.SocialClass;
|
import org.l2jmobius.gameserver.model.base.SocialClass;
|
||||||
import org.l2jmobius.gameserver.model.clan.Clan;
|
import org.l2jmobius.gameserver.model.clan.Clan;
|
||||||
import org.l2jmobius.gameserver.model.holders.ItemHolder;
|
import org.l2jmobius.gameserver.model.holders.ItemHolder;
|
||||||
|
import org.l2jmobius.gameserver.model.holders.ItemSkillHolder;
|
||||||
import org.l2jmobius.gameserver.model.holders.PlayerSkillHolder;
|
import org.l2jmobius.gameserver.model.holders.PlayerSkillHolder;
|
||||||
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
||||||
import org.l2jmobius.gameserver.model.interfaces.ISkillsHolder;
|
import org.l2jmobius.gameserver.model.interfaces.ISkillsHolder;
|
||||||
|
import org.l2jmobius.gameserver.model.items.instance.ItemInstance;
|
||||||
import org.l2jmobius.gameserver.model.skills.CommonSkill;
|
import org.l2jmobius.gameserver.model.skills.CommonSkill;
|
||||||
import org.l2jmobius.gameserver.model.skills.Skill;
|
import org.l2jmobius.gameserver.model.skills.Skill;
|
||||||
|
|
||||||
@ -1455,11 +1457,31 @@ public class SkillTreesData implements IXmlReader
|
|||||||
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(player.getClassId(), hashCode) && !isRemoveSkill(player.getClassId(), skill.getId()) && !isAwakenSaveSkill(player.getClassId(), skill.getId()) && !isAlchemySkill(skill.getId(), skill.getLevel()))
|
||||||
|
{
|
||||||
|
// Do not remove equipped item skills.
|
||||||
|
boolean isItemSkill = false;
|
||||||
|
SEARCH: for (ItemInstance item : player.getInventory().getItems())
|
||||||
|
{
|
||||||
|
final List<ItemSkillHolder> itemSkills = item.getItem().getAllSkills();
|
||||||
|
if (itemSkills != null)
|
||||||
|
{
|
||||||
|
for (ItemSkillHolder itemSkillHolder : itemSkills)
|
||||||
|
{
|
||||||
|
if (itemSkillHolder.getSkillId() == skill.getId())
|
||||||
|
{
|
||||||
|
isItemSkill = true;
|
||||||
|
break SEARCH;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!isItemSkill)
|
||||||
{
|
{
|
||||||
player.removeSkill(skill, true, true);
|
player.removeSkill(skill, true, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public boolean isAlchemySkill(int skillId, int skillLevel)
|
public boolean isAlchemySkill(int skillId, int skillLevel)
|
||||||
{
|
{
|
||||||
|
@ -50,9 +50,11 @@ import org.l2jmobius.gameserver.model.base.ClassId;
|
|||||||
import org.l2jmobius.gameserver.model.base.SocialClass;
|
import org.l2jmobius.gameserver.model.base.SocialClass;
|
||||||
import org.l2jmobius.gameserver.model.clan.Clan;
|
import org.l2jmobius.gameserver.model.clan.Clan;
|
||||||
import org.l2jmobius.gameserver.model.holders.ItemHolder;
|
import org.l2jmobius.gameserver.model.holders.ItemHolder;
|
||||||
|
import org.l2jmobius.gameserver.model.holders.ItemSkillHolder;
|
||||||
import org.l2jmobius.gameserver.model.holders.PlayerSkillHolder;
|
import org.l2jmobius.gameserver.model.holders.PlayerSkillHolder;
|
||||||
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
||||||
import org.l2jmobius.gameserver.model.interfaces.ISkillsHolder;
|
import org.l2jmobius.gameserver.model.interfaces.ISkillsHolder;
|
||||||
|
import org.l2jmobius.gameserver.model.items.instance.ItemInstance;
|
||||||
import org.l2jmobius.gameserver.model.skills.CommonSkill;
|
import org.l2jmobius.gameserver.model.skills.CommonSkill;
|
||||||
import org.l2jmobius.gameserver.model.skills.Skill;
|
import org.l2jmobius.gameserver.model.skills.Skill;
|
||||||
|
|
||||||
@ -1457,10 +1459,30 @@ public class SkillTreesData implements IXmlReader
|
|||||||
final long hashCode = SkillData.getSkillHashCode(skill.getId(), maxLvl);
|
final long hashCode = SkillData.getSkillHashCode(skill.getId(), maxLvl);
|
||||||
|
|
||||||
if (!isCurrentClassSkillNoParent(currentClass, hashCode) && !isRemoveSkill(currentClass, skill.getId()) && !isAwakenSaveSkill(currentClass, skill.getId()) && !isAlchemySkill(skill.getId(), skill.getLevel()))
|
if (!isCurrentClassSkillNoParent(currentClass, hashCode) && !isRemoveSkill(currentClass, skill.getId()) && !isAwakenSaveSkill(currentClass, skill.getId()) && !isAlchemySkill(skill.getId(), skill.getLevel()))
|
||||||
|
{
|
||||||
|
// Do not remove equipped item skills.
|
||||||
|
boolean isItemSkill = false;
|
||||||
|
SEARCH: for (ItemInstance item : player.getInventory().getItems())
|
||||||
|
{
|
||||||
|
final List<ItemSkillHolder> itemSkills = item.getItem().getAllSkills();
|
||||||
|
if (itemSkills != null)
|
||||||
|
{
|
||||||
|
for (ItemSkillHolder itemSkillHolder : itemSkills)
|
||||||
|
{
|
||||||
|
if (itemSkillHolder.getSkillId() == skill.getId())
|
||||||
|
{
|
||||||
|
isItemSkill = true;
|
||||||
|
break SEARCH;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!isItemSkill)
|
||||||
{
|
{
|
||||||
player.removeSkill(skill, true, true);
|
player.removeSkill(skill, true, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Check previous classes as well, in case classes where skipped.
|
// Check previous classes as well, in case classes where skipped.
|
||||||
while (currentClass.getParent() != null)
|
while (currentClass.getParent() != null)
|
||||||
|
@ -51,9 +51,11 @@ import org.l2jmobius.gameserver.model.base.ClassId;
|
|||||||
import org.l2jmobius.gameserver.model.base.SocialClass;
|
import org.l2jmobius.gameserver.model.base.SocialClass;
|
||||||
import org.l2jmobius.gameserver.model.clan.Clan;
|
import org.l2jmobius.gameserver.model.clan.Clan;
|
||||||
import org.l2jmobius.gameserver.model.holders.ItemHolder;
|
import org.l2jmobius.gameserver.model.holders.ItemHolder;
|
||||||
|
import org.l2jmobius.gameserver.model.holders.ItemSkillHolder;
|
||||||
import org.l2jmobius.gameserver.model.holders.PlayerSkillHolder;
|
import org.l2jmobius.gameserver.model.holders.PlayerSkillHolder;
|
||||||
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
||||||
import org.l2jmobius.gameserver.model.interfaces.ISkillsHolder;
|
import org.l2jmobius.gameserver.model.interfaces.ISkillsHolder;
|
||||||
|
import org.l2jmobius.gameserver.model.items.instance.ItemInstance;
|
||||||
import org.l2jmobius.gameserver.model.skills.CommonSkill;
|
import org.l2jmobius.gameserver.model.skills.CommonSkill;
|
||||||
import org.l2jmobius.gameserver.model.skills.Skill;
|
import org.l2jmobius.gameserver.model.skills.Skill;
|
||||||
|
|
||||||
@ -1455,11 +1457,31 @@ public class SkillTreesData implements IXmlReader
|
|||||||
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(player.getClassId(), hashCode) && !isRemoveSkill(player.getClassId(), skill.getId()) && !isAwakenSaveSkill(player.getClassId(), skill.getId()) && !isAlchemySkill(skill.getId(), skill.getLevel()))
|
||||||
|
{
|
||||||
|
// Do not remove equipped item skills.
|
||||||
|
boolean isItemSkill = false;
|
||||||
|
SEARCH: for (ItemInstance item : player.getInventory().getItems())
|
||||||
|
{
|
||||||
|
final List<ItemSkillHolder> itemSkills = item.getItem().getAllSkills();
|
||||||
|
if (itemSkills != null)
|
||||||
|
{
|
||||||
|
for (ItemSkillHolder itemSkillHolder : itemSkills)
|
||||||
|
{
|
||||||
|
if (itemSkillHolder.getSkillId() == skill.getId())
|
||||||
|
{
|
||||||
|
isItemSkill = true;
|
||||||
|
break SEARCH;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!isItemSkill)
|
||||||
{
|
{
|
||||||
player.removeSkill(skill, true, true);
|
player.removeSkill(skill, true, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public boolean isAlchemySkill(int skillId, int skillLevel)
|
public boolean isAlchemySkill(int skillId, int skillLevel)
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user