Change class should not remove equipped item skills.

This commit is contained in:
MobiusDevelopment 2020-01-24 13:10:13 +00:00
parent 04d2ed51da
commit c043af33f8
15 changed files with 345 additions and 15 deletions

View File

@ -51,9 +51,11 @@ import org.l2jmobius.gameserver.model.base.ClassId;
import org.l2jmobius.gameserver.model.base.SocialClass;
import org.l2jmobius.gameserver.model.clan.Clan;
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.SkillHolder;
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.Skill;
@ -1468,7 +1470,27 @@ public class SkillTreesData implements IXmlReader
if (!isCurrentClassSkillNoParent(player.getClassId(), hashCode) && !isRemoveSkill(player.getClassId(), skill.getId()) && !isAwakenSaveSkill(player.getClassId(), skill.getId()) && !isAlchemySkill(skill.getId(), skill.getLevel()))
{
player.removeSkill(skill, true, true);
// 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);
}
}
}
}

View File

@ -51,9 +51,11 @@ import org.l2jmobius.gameserver.model.base.ClassId;
import org.l2jmobius.gameserver.model.base.SocialClass;
import org.l2jmobius.gameserver.model.clan.Clan;
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.SkillHolder;
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.Skill;
@ -1468,7 +1470,27 @@ public class SkillTreesData implements IXmlReader
if (!isCurrentClassSkillNoParent(player.getClassId(), hashCode) && !isRemoveSkill(player.getClassId(), skill.getId()) && !isAwakenSaveSkill(player.getClassId(), skill.getId()) && !isAlchemySkill(skill.getId(), skill.getLevel()))
{
player.removeSkill(skill, true, true);
// 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);
}
}
}
}

View File

@ -51,9 +51,11 @@ import org.l2jmobius.gameserver.model.base.ClassId;
import org.l2jmobius.gameserver.model.base.SocialClass;
import org.l2jmobius.gameserver.model.clan.Clan;
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.SkillHolder;
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.Skill;
@ -1468,7 +1470,27 @@ public class SkillTreesData implements IXmlReader
if (!isCurrentClassSkillNoParent(player.getClassId(), hashCode) && !isRemoveSkill(player.getClassId(), skill.getId()) && !isAwakenSaveSkill(player.getClassId(), skill.getId()) && !isAlchemySkill(skill.getId(), skill.getLevel()))
{
player.removeSkill(skill, true, true);
// 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);
}
}
}
}

View File

@ -51,9 +51,11 @@ import org.l2jmobius.gameserver.model.base.ClassId;
import org.l2jmobius.gameserver.model.base.SocialClass;
import org.l2jmobius.gameserver.model.clan.Clan;
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.SkillHolder;
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.Skill;
@ -1468,7 +1470,27 @@ public class SkillTreesData implements IXmlReader
if (!isCurrentClassSkillNoParent(player.getClassId(), hashCode) && !isRemoveSkill(player.getClassId(), skill.getId()) && !isAwakenSaveSkill(player.getClassId(), skill.getId()) && !isAlchemySkill(skill.getId(), skill.getLevel()))
{
player.removeSkill(skill, true, true);
// 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);
}
}
}
}

View File

@ -51,9 +51,11 @@ import org.l2jmobius.gameserver.model.base.ClassId;
import org.l2jmobius.gameserver.model.base.SocialClass;
import org.l2jmobius.gameserver.model.clan.Clan;
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.SkillHolder;
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.Skill;
@ -1468,7 +1470,27 @@ public class SkillTreesData implements IXmlReader
if (!isCurrentClassSkillNoParent(player.getClassId(), hashCode) && !isRemoveSkill(player.getClassId(), skill.getId()) && !isAwakenSaveSkill(player.getClassId(), skill.getId()) && !isAlchemySkill(skill.getId(), skill.getLevel()))
{
player.removeSkill(skill, true, true);
// 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);
}
}
}
}

View File

@ -51,9 +51,11 @@ import org.l2jmobius.gameserver.model.base.ClassId;
import org.l2jmobius.gameserver.model.base.SocialClass;
import org.l2jmobius.gameserver.model.clan.Clan;
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.SkillHolder;
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.Skill;
@ -1468,7 +1470,27 @@ public class SkillTreesData implements IXmlReader
if (!isCurrentClassSkillNoParent(player.getClassId(), hashCode) && !isRemoveSkill(player.getClassId(), skill.getId()) && !isAwakenSaveSkill(player.getClassId(), skill.getId()) && !isAlchemySkill(skill.getId(), skill.getLevel()))
{
player.removeSkill(skill, true, true);
// 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);
}
}
}
}

View File

@ -51,9 +51,11 @@ import org.l2jmobius.gameserver.model.base.ClassId;
import org.l2jmobius.gameserver.model.base.SocialClass;
import org.l2jmobius.gameserver.model.clan.Clan;
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.SkillHolder;
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.Skill;
@ -1470,7 +1472,27 @@ public class SkillTreesData implements IXmlReader
if (!isCurrentClassSkillNoParent(player.getClassId(), hashCode) && !isRemoveSkill(player.getClassId(), skill.getId()) && !isAwakenSaveSkill(player.getClassId(), skill.getId()) && !isAlchemySkill(skill.getId(), skill.getLevel()))
{
player.removeSkill(skill, true, true);
// 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);
}
}
}
}

View File

@ -51,9 +51,11 @@ import org.l2jmobius.gameserver.model.base.ClassId;
import org.l2jmobius.gameserver.model.base.SocialClass;
import org.l2jmobius.gameserver.model.clan.Clan;
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.SkillHolder;
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.Skill;
@ -1472,7 +1474,27 @@ public class SkillTreesData implements IXmlReader
if (!isCurrentClassSkillNoParent(currentClass, hashCode) && !isRemoveSkill(currentClass, skill.getId()) && !isAwakenSaveSkill(currentClass, skill.getId()) && !isAlchemySkill(skill.getId(), skill.getLevel()))
{
player.removeSkill(skill, true, true);
// 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);
}
}
}

View File

@ -51,9 +51,11 @@ import org.l2jmobius.gameserver.model.base.ClassId;
import org.l2jmobius.gameserver.model.base.SocialClass;
import org.l2jmobius.gameserver.model.clan.Clan;
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.SkillHolder;
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.Skill;
@ -1456,7 +1458,27 @@ public class SkillTreesData implements IXmlReader
if (!isCurrentClassSkillNoParent(player.getClassId(), hashCode) && !isRemoveSkill(player.getClassId(), skill.getId()) && !isAwakenSaveSkill(player.getClassId(), skill.getId()) && !isAlchemySkill(skill.getId(), skill.getLevel()))
{
player.removeSkill(skill, true, true);
// 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);
}
}
}
}

View File

@ -51,9 +51,11 @@ import org.l2jmobius.gameserver.model.base.ClassId;
import org.l2jmobius.gameserver.model.base.SocialClass;
import org.l2jmobius.gameserver.model.clan.Clan;
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.SkillHolder;
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.Skill;
@ -1456,7 +1458,27 @@ public class SkillTreesData implements IXmlReader
if (!isCurrentClassSkillNoParent(player.getClassId(), hashCode) && !isRemoveSkill(player.getClassId(), skill.getId()) && !isAwakenSaveSkill(player.getClassId(), skill.getId()) && !isAlchemySkill(skill.getId(), skill.getLevel()))
{
player.removeSkill(skill, true, true);
// 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);
}
}
}
}

View File

@ -51,9 +51,11 @@ import org.l2jmobius.gameserver.model.base.ClassId;
import org.l2jmobius.gameserver.model.base.SocialClass;
import org.l2jmobius.gameserver.model.clan.Clan;
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.SkillHolder;
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.Skill;
@ -1456,7 +1458,27 @@ public class SkillTreesData implements IXmlReader
if (!isCurrentClassSkillNoParent(player.getClassId(), hashCode) && !isRemoveSkill(player.getClassId(), skill.getId()) && !isAwakenSaveSkill(player.getClassId(), skill.getId()) && !isAlchemySkill(skill.getId(), skill.getLevel()))
{
player.removeSkill(skill, true, true);
// 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);
}
}
}
}

View File

@ -51,9 +51,11 @@ import org.l2jmobius.gameserver.model.base.ClassId;
import org.l2jmobius.gameserver.model.base.SocialClass;
import org.l2jmobius.gameserver.model.clan.Clan;
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.SkillHolder;
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.Skill;
@ -1456,7 +1458,27 @@ public class SkillTreesData implements IXmlReader
if (!isCurrentClassSkillNoParent(player.getClassId(), hashCode) && !isRemoveSkill(player.getClassId(), skill.getId()) && !isAwakenSaveSkill(player.getClassId(), skill.getId()) && !isAlchemySkill(skill.getId(), skill.getLevel()))
{
player.removeSkill(skill, true, true);
// 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);
}
}
}
}

View File

@ -51,9 +51,11 @@ import org.l2jmobius.gameserver.model.base.ClassId;
import org.l2jmobius.gameserver.model.base.SocialClass;
import org.l2jmobius.gameserver.model.clan.Clan;
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.SkillHolder;
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.Skill;
@ -1456,7 +1458,27 @@ public class SkillTreesData implements IXmlReader
if (!isCurrentClassSkillNoParent(player.getClassId(), hashCode) && !isRemoveSkill(player.getClassId(), skill.getId()) && !isAwakenSaveSkill(player.getClassId(), skill.getId()) && !isAlchemySkill(skill.getId(), skill.getLevel()))
{
player.removeSkill(skill, true, true);
// 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);
}
}
}
}

View File

@ -50,9 +50,11 @@ import org.l2jmobius.gameserver.model.base.ClassId;
import org.l2jmobius.gameserver.model.base.SocialClass;
import org.l2jmobius.gameserver.model.clan.Clan;
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.SkillHolder;
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.Skill;
@ -1458,7 +1460,27 @@ public class SkillTreesData implements IXmlReader
if (!isCurrentClassSkillNoParent(currentClass, hashCode) && !isRemoveSkill(currentClass, skill.getId()) && !isAwakenSaveSkill(currentClass, skill.getId()) && !isAlchemySkill(skill.getId(), skill.getLevel()))
{
player.removeSkill(skill, true, true);
// 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);
}
}
}

View File

@ -51,9 +51,11 @@ import org.l2jmobius.gameserver.model.base.ClassId;
import org.l2jmobius.gameserver.model.base.SocialClass;
import org.l2jmobius.gameserver.model.clan.Clan;
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.SkillHolder;
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.Skill;
@ -1456,7 +1458,27 @@ public class SkillTreesData implements IXmlReader
if (!isCurrentClassSkillNoParent(player.getClassId(), hashCode) && !isRemoveSkill(player.getClassId(), skill.getId()) && !isAwakenSaveSkill(player.getClassId(), skill.getId()) && !isAlchemySkill(skill.getId(), skill.getLevel()))
{
player.removeSkill(skill, true, true);
// 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);
}
}
}
}