Change class should not remove equipped item skills.
This commit is contained in:
		@@ -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);
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user