From b228e6d6c8920e6947d82eae0277dfdea4f8ff35 Mon Sep 17 00:00:00 2001 From: MobiusDevelopment <8391001+MobiusDevelopment@users.noreply.github.com> Date: Tue, 11 Jan 2022 02:20:36 +0000 Subject: [PATCH] PlayerInventory applyItemSkills should consider agathion skills. Contributed by nasseka. --- .../model/itemcontainer/PlayerInventory.java | 41 +++++++++++++++++++ .../model/itemcontainer/PlayerInventory.java | 41 +++++++++++++++++++ .../model/itemcontainer/PlayerInventory.java | 41 +++++++++++++++++++ .../model/itemcontainer/PlayerInventory.java | 41 +++++++++++++++++++ .../model/itemcontainer/PlayerInventory.java | 41 +++++++++++++++++++ .../model/itemcontainer/PlayerInventory.java | 41 +++++++++++++++++++ .../model/itemcontainer/PlayerInventory.java | 41 +++++++++++++++++++ .../model/itemcontainer/PlayerInventory.java | 41 +++++++++++++++++++ .../model/itemcontainer/PlayerInventory.java | 41 +++++++++++++++++++ .../model/itemcontainer/PlayerInventory.java | 41 +++++++++++++++++++ .../model/itemcontainer/PlayerInventory.java | 41 +++++++++++++++++++ .../model/itemcontainer/PlayerInventory.java | 41 +++++++++++++++++++ .../model/itemcontainer/PlayerInventory.java | 41 +++++++++++++++++++ .../model/itemcontainer/PlayerInventory.java | 41 +++++++++++++++++++ 14 files changed, 574 insertions(+) diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java index 3ecaf76f2e..5e05934099 100644 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java +++ b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java @@ -30,6 +30,7 @@ import java.util.logging.Logger; import org.l2jmobius.Config; import org.l2jmobius.commons.database.DatabaseFactory; import org.l2jmobius.gameserver.data.ItemTable; +import org.l2jmobius.gameserver.data.xml.AgathionData; import org.l2jmobius.gameserver.enums.InventoryBlockType; import org.l2jmobius.gameserver.enums.ItemLocation; import org.l2jmobius.gameserver.model.TradeItem; @@ -40,9 +41,12 @@ import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemAd import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemDestroy; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemDrop; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemTransfer; +import org.l2jmobius.gameserver.model.holders.AgathionSkillHolder; +import org.l2jmobius.gameserver.model.holders.SkillHolder; import org.l2jmobius.gameserver.model.item.ItemTemplate; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.item.type.EtcItemType; +import org.l2jmobius.gameserver.model.skill.SkillConditionScope; import org.l2jmobius.gameserver.model.variables.ItemVariables; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.InventoryUpdate; @@ -1008,6 +1012,43 @@ public class PlayerInventory extends Inventory if (item.isEquipped()) { item.applySpecialAbilities(); + + if (((item.getLocationSlot() >= Inventory.PAPERDOLL_AGATHION1) && (item.getLocationSlot() <= Inventory.PAPERDOLL_AGATHION5))) + { + final AgathionSkillHolder agathionSkills = AgathionData.getInstance().getSkills(item.getId()); + if (agathionSkills != null) + { + // Remove old skills. + for (SkillHolder holder : agathionSkills.getMainSkills(item.getEnchantLevel())) + { + _owner.removeSkill(holder.getSkill(), false, holder.getSkill().isPassive()); + } + for (SkillHolder holder : agathionSkills.getSubSkills(item.getEnchantLevel())) + { + _owner.removeSkill(holder.getSkill(), false, holder.getSkill().isPassive()); + } + // Add new skills. + if (item.getLocationSlot() == Inventory.PAPERDOLL_AGATHION1) + { + for (SkillHolder holder : agathionSkills.getMainSkills(item.getEnchantLevel())) + { + if (holder.getSkill().isPassive() && !holder.getSkill().checkConditions(SkillConditionScope.PASSIVE, _owner, _owner)) + { + continue; + } + _owner.addSkill(holder.getSkill(), false); + } + } + for (SkillHolder holder : agathionSkills.getSubSkills(item.getEnchantLevel())) + { + if (holder.getSkill().isPassive() && !holder.getSkill().checkConditions(SkillConditionScope.PASSIVE, _owner, _owner)) + { + continue; + } + _owner.addSkill(holder.getSkill(), false); + } + } + } } } } diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java index 3ecaf76f2e..5e05934099 100644 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java +++ b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java @@ -30,6 +30,7 @@ import java.util.logging.Logger; import org.l2jmobius.Config; import org.l2jmobius.commons.database.DatabaseFactory; import org.l2jmobius.gameserver.data.ItemTable; +import org.l2jmobius.gameserver.data.xml.AgathionData; import org.l2jmobius.gameserver.enums.InventoryBlockType; import org.l2jmobius.gameserver.enums.ItemLocation; import org.l2jmobius.gameserver.model.TradeItem; @@ -40,9 +41,12 @@ import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemAd import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemDestroy; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemDrop; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemTransfer; +import org.l2jmobius.gameserver.model.holders.AgathionSkillHolder; +import org.l2jmobius.gameserver.model.holders.SkillHolder; import org.l2jmobius.gameserver.model.item.ItemTemplate; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.item.type.EtcItemType; +import org.l2jmobius.gameserver.model.skill.SkillConditionScope; import org.l2jmobius.gameserver.model.variables.ItemVariables; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.InventoryUpdate; @@ -1008,6 +1012,43 @@ public class PlayerInventory extends Inventory if (item.isEquipped()) { item.applySpecialAbilities(); + + if (((item.getLocationSlot() >= Inventory.PAPERDOLL_AGATHION1) && (item.getLocationSlot() <= Inventory.PAPERDOLL_AGATHION5))) + { + final AgathionSkillHolder agathionSkills = AgathionData.getInstance().getSkills(item.getId()); + if (agathionSkills != null) + { + // Remove old skills. + for (SkillHolder holder : agathionSkills.getMainSkills(item.getEnchantLevel())) + { + _owner.removeSkill(holder.getSkill(), false, holder.getSkill().isPassive()); + } + for (SkillHolder holder : agathionSkills.getSubSkills(item.getEnchantLevel())) + { + _owner.removeSkill(holder.getSkill(), false, holder.getSkill().isPassive()); + } + // Add new skills. + if (item.getLocationSlot() == Inventory.PAPERDOLL_AGATHION1) + { + for (SkillHolder holder : agathionSkills.getMainSkills(item.getEnchantLevel())) + { + if (holder.getSkill().isPassive() && !holder.getSkill().checkConditions(SkillConditionScope.PASSIVE, _owner, _owner)) + { + continue; + } + _owner.addSkill(holder.getSkill(), false); + } + } + for (SkillHolder holder : agathionSkills.getSubSkills(item.getEnchantLevel())) + { + if (holder.getSkill().isPassive() && !holder.getSkill().checkConditions(SkillConditionScope.PASSIVE, _owner, _owner)) + { + continue; + } + _owner.addSkill(holder.getSkill(), false); + } + } + } } } } diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java index 3ecaf76f2e..5e05934099 100644 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java +++ b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java @@ -30,6 +30,7 @@ import java.util.logging.Logger; import org.l2jmobius.Config; import org.l2jmobius.commons.database.DatabaseFactory; import org.l2jmobius.gameserver.data.ItemTable; +import org.l2jmobius.gameserver.data.xml.AgathionData; import org.l2jmobius.gameserver.enums.InventoryBlockType; import org.l2jmobius.gameserver.enums.ItemLocation; import org.l2jmobius.gameserver.model.TradeItem; @@ -40,9 +41,12 @@ import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemAd import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemDestroy; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemDrop; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemTransfer; +import org.l2jmobius.gameserver.model.holders.AgathionSkillHolder; +import org.l2jmobius.gameserver.model.holders.SkillHolder; import org.l2jmobius.gameserver.model.item.ItemTemplate; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.item.type.EtcItemType; +import org.l2jmobius.gameserver.model.skill.SkillConditionScope; import org.l2jmobius.gameserver.model.variables.ItemVariables; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.InventoryUpdate; @@ -1008,6 +1012,43 @@ public class PlayerInventory extends Inventory if (item.isEquipped()) { item.applySpecialAbilities(); + + if (((item.getLocationSlot() >= Inventory.PAPERDOLL_AGATHION1) && (item.getLocationSlot() <= Inventory.PAPERDOLL_AGATHION5))) + { + final AgathionSkillHolder agathionSkills = AgathionData.getInstance().getSkills(item.getId()); + if (agathionSkills != null) + { + // Remove old skills. + for (SkillHolder holder : agathionSkills.getMainSkills(item.getEnchantLevel())) + { + _owner.removeSkill(holder.getSkill(), false, holder.getSkill().isPassive()); + } + for (SkillHolder holder : agathionSkills.getSubSkills(item.getEnchantLevel())) + { + _owner.removeSkill(holder.getSkill(), false, holder.getSkill().isPassive()); + } + // Add new skills. + if (item.getLocationSlot() == Inventory.PAPERDOLL_AGATHION1) + { + for (SkillHolder holder : agathionSkills.getMainSkills(item.getEnchantLevel())) + { + if (holder.getSkill().isPassive() && !holder.getSkill().checkConditions(SkillConditionScope.PASSIVE, _owner, _owner)) + { + continue; + } + _owner.addSkill(holder.getSkill(), false); + } + } + for (SkillHolder holder : agathionSkills.getSubSkills(item.getEnchantLevel())) + { + if (holder.getSkill().isPassive() && !holder.getSkill().checkConditions(SkillConditionScope.PASSIVE, _owner, _owner)) + { + continue; + } + _owner.addSkill(holder.getSkill(), false); + } + } + } } } } diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java index 3ecaf76f2e..5e05934099 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java +++ b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java @@ -30,6 +30,7 @@ import java.util.logging.Logger; import org.l2jmobius.Config; import org.l2jmobius.commons.database.DatabaseFactory; import org.l2jmobius.gameserver.data.ItemTable; +import org.l2jmobius.gameserver.data.xml.AgathionData; import org.l2jmobius.gameserver.enums.InventoryBlockType; import org.l2jmobius.gameserver.enums.ItemLocation; import org.l2jmobius.gameserver.model.TradeItem; @@ -40,9 +41,12 @@ import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemAd import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemDestroy; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemDrop; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemTransfer; +import org.l2jmobius.gameserver.model.holders.AgathionSkillHolder; +import org.l2jmobius.gameserver.model.holders.SkillHolder; import org.l2jmobius.gameserver.model.item.ItemTemplate; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.item.type.EtcItemType; +import org.l2jmobius.gameserver.model.skill.SkillConditionScope; import org.l2jmobius.gameserver.model.variables.ItemVariables; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.InventoryUpdate; @@ -1008,6 +1012,43 @@ public class PlayerInventory extends Inventory if (item.isEquipped()) { item.applySpecialAbilities(); + + if (((item.getLocationSlot() >= Inventory.PAPERDOLL_AGATHION1) && (item.getLocationSlot() <= Inventory.PAPERDOLL_AGATHION5))) + { + final AgathionSkillHolder agathionSkills = AgathionData.getInstance().getSkills(item.getId()); + if (agathionSkills != null) + { + // Remove old skills. + for (SkillHolder holder : agathionSkills.getMainSkills(item.getEnchantLevel())) + { + _owner.removeSkill(holder.getSkill(), false, holder.getSkill().isPassive()); + } + for (SkillHolder holder : agathionSkills.getSubSkills(item.getEnchantLevel())) + { + _owner.removeSkill(holder.getSkill(), false, holder.getSkill().isPassive()); + } + // Add new skills. + if (item.getLocationSlot() == Inventory.PAPERDOLL_AGATHION1) + { + for (SkillHolder holder : agathionSkills.getMainSkills(item.getEnchantLevel())) + { + if (holder.getSkill().isPassive() && !holder.getSkill().checkConditions(SkillConditionScope.PASSIVE, _owner, _owner)) + { + continue; + } + _owner.addSkill(holder.getSkill(), false); + } + } + for (SkillHolder holder : agathionSkills.getSubSkills(item.getEnchantLevel())) + { + if (holder.getSkill().isPassive() && !holder.getSkill().checkConditions(SkillConditionScope.PASSIVE, _owner, _owner)) + { + continue; + } + _owner.addSkill(holder.getSkill(), false); + } + } + } } } } diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java index 13fe891899..68ac795a99 100644 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java +++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java @@ -30,6 +30,7 @@ import java.util.logging.Logger; import org.l2jmobius.Config; import org.l2jmobius.commons.database.DatabaseFactory; import org.l2jmobius.gameserver.data.ItemTable; +import org.l2jmobius.gameserver.data.xml.AgathionData; import org.l2jmobius.gameserver.enums.InventoryBlockType; import org.l2jmobius.gameserver.enums.ItemLocation; import org.l2jmobius.gameserver.model.TradeItem; @@ -40,10 +41,13 @@ import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemAd import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemDestroy; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemDrop; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemTransfer; +import org.l2jmobius.gameserver.model.holders.AgathionSkillHolder; +import org.l2jmobius.gameserver.model.holders.SkillHolder; import org.l2jmobius.gameserver.model.item.ItemTemplate; import org.l2jmobius.gameserver.model.item.Weapon; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.item.type.EtcItemType; +import org.l2jmobius.gameserver.model.skill.SkillConditionScope; import org.l2jmobius.gameserver.model.variables.ItemVariables; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.InventoryUpdate; @@ -1009,6 +1013,43 @@ public class PlayerInventory extends Inventory if (item.isEquipped()) { item.applySpecialAbilities(); + + if (((item.getLocationSlot() >= Inventory.PAPERDOLL_AGATHION1) && (item.getLocationSlot() <= Inventory.PAPERDOLL_AGATHION5))) + { + final AgathionSkillHolder agathionSkills = AgathionData.getInstance().getSkills(item.getId()); + if (agathionSkills != null) + { + // Remove old skills. + for (SkillHolder holder : agathionSkills.getMainSkills(item.getEnchantLevel())) + { + _owner.removeSkill(holder.getSkill(), false, holder.getSkill().isPassive()); + } + for (SkillHolder holder : agathionSkills.getSubSkills(item.getEnchantLevel())) + { + _owner.removeSkill(holder.getSkill(), false, holder.getSkill().isPassive()); + } + // Add new skills. + if (item.getLocationSlot() == Inventory.PAPERDOLL_AGATHION1) + { + for (SkillHolder holder : agathionSkills.getMainSkills(item.getEnchantLevel())) + { + if (holder.getSkill().isPassive() && !holder.getSkill().checkConditions(SkillConditionScope.PASSIVE, _owner, _owner)) + { + continue; + } + _owner.addSkill(holder.getSkill(), false); + } + } + for (SkillHolder holder : agathionSkills.getSubSkills(item.getEnchantLevel())) + { + if (holder.getSkill().isPassive() && !holder.getSkill().checkConditions(SkillConditionScope.PASSIVE, _owner, _owner)) + { + continue; + } + _owner.addSkill(holder.getSkill(), false); + } + } + } } } } diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java index 13fe891899..68ac795a99 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java @@ -30,6 +30,7 @@ import java.util.logging.Logger; import org.l2jmobius.Config; import org.l2jmobius.commons.database.DatabaseFactory; import org.l2jmobius.gameserver.data.ItemTable; +import org.l2jmobius.gameserver.data.xml.AgathionData; import org.l2jmobius.gameserver.enums.InventoryBlockType; import org.l2jmobius.gameserver.enums.ItemLocation; import org.l2jmobius.gameserver.model.TradeItem; @@ -40,10 +41,13 @@ import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemAd import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemDestroy; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemDrop; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemTransfer; +import org.l2jmobius.gameserver.model.holders.AgathionSkillHolder; +import org.l2jmobius.gameserver.model.holders.SkillHolder; import org.l2jmobius.gameserver.model.item.ItemTemplate; import org.l2jmobius.gameserver.model.item.Weapon; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.item.type.EtcItemType; +import org.l2jmobius.gameserver.model.skill.SkillConditionScope; import org.l2jmobius.gameserver.model.variables.ItemVariables; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.InventoryUpdate; @@ -1009,6 +1013,43 @@ public class PlayerInventory extends Inventory if (item.isEquipped()) { item.applySpecialAbilities(); + + if (((item.getLocationSlot() >= Inventory.PAPERDOLL_AGATHION1) && (item.getLocationSlot() <= Inventory.PAPERDOLL_AGATHION5))) + { + final AgathionSkillHolder agathionSkills = AgathionData.getInstance().getSkills(item.getId()); + if (agathionSkills != null) + { + // Remove old skills. + for (SkillHolder holder : agathionSkills.getMainSkills(item.getEnchantLevel())) + { + _owner.removeSkill(holder.getSkill(), false, holder.getSkill().isPassive()); + } + for (SkillHolder holder : agathionSkills.getSubSkills(item.getEnchantLevel())) + { + _owner.removeSkill(holder.getSkill(), false, holder.getSkill().isPassive()); + } + // Add new skills. + if (item.getLocationSlot() == Inventory.PAPERDOLL_AGATHION1) + { + for (SkillHolder holder : agathionSkills.getMainSkills(item.getEnchantLevel())) + { + if (holder.getSkill().isPassive() && !holder.getSkill().checkConditions(SkillConditionScope.PASSIVE, _owner, _owner)) + { + continue; + } + _owner.addSkill(holder.getSkill(), false); + } + } + for (SkillHolder holder : agathionSkills.getSubSkills(item.getEnchantLevel())) + { + if (holder.getSkill().isPassive() && !holder.getSkill().checkConditions(SkillConditionScope.PASSIVE, _owner, _owner)) + { + continue; + } + _owner.addSkill(holder.getSkill(), false); + } + } + } } } } diff --git a/L2J_Mobius_10.0_MasterClass/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java b/L2J_Mobius_10.0_MasterClass/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java index 13fe891899..68ac795a99 100644 --- a/L2J_Mobius_10.0_MasterClass/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java +++ b/L2J_Mobius_10.0_MasterClass/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java @@ -30,6 +30,7 @@ import java.util.logging.Logger; import org.l2jmobius.Config; import org.l2jmobius.commons.database.DatabaseFactory; import org.l2jmobius.gameserver.data.ItemTable; +import org.l2jmobius.gameserver.data.xml.AgathionData; import org.l2jmobius.gameserver.enums.InventoryBlockType; import org.l2jmobius.gameserver.enums.ItemLocation; import org.l2jmobius.gameserver.model.TradeItem; @@ -40,10 +41,13 @@ import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemAd import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemDestroy; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemDrop; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemTransfer; +import org.l2jmobius.gameserver.model.holders.AgathionSkillHolder; +import org.l2jmobius.gameserver.model.holders.SkillHolder; import org.l2jmobius.gameserver.model.item.ItemTemplate; import org.l2jmobius.gameserver.model.item.Weapon; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.item.type.EtcItemType; +import org.l2jmobius.gameserver.model.skill.SkillConditionScope; import org.l2jmobius.gameserver.model.variables.ItemVariables; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.InventoryUpdate; @@ -1009,6 +1013,43 @@ public class PlayerInventory extends Inventory if (item.isEquipped()) { item.applySpecialAbilities(); + + if (((item.getLocationSlot() >= Inventory.PAPERDOLL_AGATHION1) && (item.getLocationSlot() <= Inventory.PAPERDOLL_AGATHION5))) + { + final AgathionSkillHolder agathionSkills = AgathionData.getInstance().getSkills(item.getId()); + if (agathionSkills != null) + { + // Remove old skills. + for (SkillHolder holder : agathionSkills.getMainSkills(item.getEnchantLevel())) + { + _owner.removeSkill(holder.getSkill(), false, holder.getSkill().isPassive()); + } + for (SkillHolder holder : agathionSkills.getSubSkills(item.getEnchantLevel())) + { + _owner.removeSkill(holder.getSkill(), false, holder.getSkill().isPassive()); + } + // Add new skills. + if (item.getLocationSlot() == Inventory.PAPERDOLL_AGATHION1) + { + for (SkillHolder holder : agathionSkills.getMainSkills(item.getEnchantLevel())) + { + if (holder.getSkill().isPassive() && !holder.getSkill().checkConditions(SkillConditionScope.PASSIVE, _owner, _owner)) + { + continue; + } + _owner.addSkill(holder.getSkill(), false); + } + } + for (SkillHolder holder : agathionSkills.getSubSkills(item.getEnchantLevel())) + { + if (holder.getSkill().isPassive() && !holder.getSkill().checkConditions(SkillConditionScope.PASSIVE, _owner, _owner)) + { + continue; + } + _owner.addSkill(holder.getSkill(), false); + } + } + } } } } diff --git a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java index c627cb2c06..b6a66f5298 100644 --- a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java +++ b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java @@ -30,6 +30,7 @@ import java.util.logging.Logger; import org.l2jmobius.Config; import org.l2jmobius.commons.database.DatabaseFactory; import org.l2jmobius.gameserver.data.ItemTable; +import org.l2jmobius.gameserver.data.xml.AgathionData; import org.l2jmobius.gameserver.enums.InventoryBlockType; import org.l2jmobius.gameserver.enums.ItemLocation; import org.l2jmobius.gameserver.model.TradeItem; @@ -40,9 +41,12 @@ import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemAd import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemDestroy; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemDrop; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemTransfer; +import org.l2jmobius.gameserver.model.holders.AgathionSkillHolder; +import org.l2jmobius.gameserver.model.holders.SkillHolder; import org.l2jmobius.gameserver.model.item.ItemTemplate; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.item.type.EtcItemType; +import org.l2jmobius.gameserver.model.skill.SkillConditionScope; import org.l2jmobius.gameserver.model.variables.ItemVariables; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.InventoryUpdate; @@ -1084,6 +1088,43 @@ public class PlayerInventory extends Inventory if (item.isEquipped()) { item.applySpecialAbilities(); + + if (((item.getLocationSlot() >= Inventory.PAPERDOLL_AGATHION1) && (item.getLocationSlot() <= Inventory.PAPERDOLL_AGATHION5))) + { + final AgathionSkillHolder agathionSkills = AgathionData.getInstance().getSkills(item.getId()); + if (agathionSkills != null) + { + // Remove old skills. + for (SkillHolder holder : agathionSkills.getMainSkills(item.getEnchantLevel())) + { + _owner.removeSkill(holder.getSkill(), false, holder.getSkill().isPassive()); + } + for (SkillHolder holder : agathionSkills.getSubSkills(item.getEnchantLevel())) + { + _owner.removeSkill(holder.getSkill(), false, holder.getSkill().isPassive()); + } + // Add new skills. + if (item.getLocationSlot() == Inventory.PAPERDOLL_AGATHION1) + { + for (SkillHolder holder : agathionSkills.getMainSkills(item.getEnchantLevel())) + { + if (holder.getSkill().isPassive() && !holder.getSkill().checkConditions(SkillConditionScope.PASSIVE, _owner, _owner)) + { + continue; + } + _owner.addSkill(holder.getSkill(), false); + } + } + for (SkillHolder holder : agathionSkills.getSubSkills(item.getEnchantLevel())) + { + if (holder.getSkill().isPassive() && !holder.getSkill().checkConditions(SkillConditionScope.PASSIVE, _owner, _owner)) + { + continue; + } + _owner.addSkill(holder.getSkill(), false); + } + } + } } } } diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java index c627cb2c06..b6a66f5298 100644 --- a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java +++ b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java @@ -30,6 +30,7 @@ import java.util.logging.Logger; import org.l2jmobius.Config; import org.l2jmobius.commons.database.DatabaseFactory; import org.l2jmobius.gameserver.data.ItemTable; +import org.l2jmobius.gameserver.data.xml.AgathionData; import org.l2jmobius.gameserver.enums.InventoryBlockType; import org.l2jmobius.gameserver.enums.ItemLocation; import org.l2jmobius.gameserver.model.TradeItem; @@ -40,9 +41,12 @@ import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemAd import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemDestroy; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemDrop; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemTransfer; +import org.l2jmobius.gameserver.model.holders.AgathionSkillHolder; +import org.l2jmobius.gameserver.model.holders.SkillHolder; import org.l2jmobius.gameserver.model.item.ItemTemplate; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.item.type.EtcItemType; +import org.l2jmobius.gameserver.model.skill.SkillConditionScope; import org.l2jmobius.gameserver.model.variables.ItemVariables; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.InventoryUpdate; @@ -1084,6 +1088,43 @@ public class PlayerInventory extends Inventory if (item.isEquipped()) { item.applySpecialAbilities(); + + if (((item.getLocationSlot() >= Inventory.PAPERDOLL_AGATHION1) && (item.getLocationSlot() <= Inventory.PAPERDOLL_AGATHION5))) + { + final AgathionSkillHolder agathionSkills = AgathionData.getInstance().getSkills(item.getId()); + if (agathionSkills != null) + { + // Remove old skills. + for (SkillHolder holder : agathionSkills.getMainSkills(item.getEnchantLevel())) + { + _owner.removeSkill(holder.getSkill(), false, holder.getSkill().isPassive()); + } + for (SkillHolder holder : agathionSkills.getSubSkills(item.getEnchantLevel())) + { + _owner.removeSkill(holder.getSkill(), false, holder.getSkill().isPassive()); + } + // Add new skills. + if (item.getLocationSlot() == Inventory.PAPERDOLL_AGATHION1) + { + for (SkillHolder holder : agathionSkills.getMainSkills(item.getEnchantLevel())) + { + if (holder.getSkill().isPassive() && !holder.getSkill().checkConditions(SkillConditionScope.PASSIVE, _owner, _owner)) + { + continue; + } + _owner.addSkill(holder.getSkill(), false); + } + } + for (SkillHolder holder : agathionSkills.getSubSkills(item.getEnchantLevel())) + { + if (holder.getSkill().isPassive() && !holder.getSkill().checkConditions(SkillConditionScope.PASSIVE, _owner, _owner)) + { + continue; + } + _owner.addSkill(holder.getSkill(), false); + } + } + } } } } diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java index c627cb2c06..b6a66f5298 100644 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java +++ b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java @@ -30,6 +30,7 @@ import java.util.logging.Logger; import org.l2jmobius.Config; import org.l2jmobius.commons.database.DatabaseFactory; import org.l2jmobius.gameserver.data.ItemTable; +import org.l2jmobius.gameserver.data.xml.AgathionData; import org.l2jmobius.gameserver.enums.InventoryBlockType; import org.l2jmobius.gameserver.enums.ItemLocation; import org.l2jmobius.gameserver.model.TradeItem; @@ -40,9 +41,12 @@ import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemAd import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemDestroy; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemDrop; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemTransfer; +import org.l2jmobius.gameserver.model.holders.AgathionSkillHolder; +import org.l2jmobius.gameserver.model.holders.SkillHolder; import org.l2jmobius.gameserver.model.item.ItemTemplate; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.item.type.EtcItemType; +import org.l2jmobius.gameserver.model.skill.SkillConditionScope; import org.l2jmobius.gameserver.model.variables.ItemVariables; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.InventoryUpdate; @@ -1084,6 +1088,43 @@ public class PlayerInventory extends Inventory if (item.isEquipped()) { item.applySpecialAbilities(); + + if (((item.getLocationSlot() >= Inventory.PAPERDOLL_AGATHION1) && (item.getLocationSlot() <= Inventory.PAPERDOLL_AGATHION5))) + { + final AgathionSkillHolder agathionSkills = AgathionData.getInstance().getSkills(item.getId()); + if (agathionSkills != null) + { + // Remove old skills. + for (SkillHolder holder : agathionSkills.getMainSkills(item.getEnchantLevel())) + { + _owner.removeSkill(holder.getSkill(), false, holder.getSkill().isPassive()); + } + for (SkillHolder holder : agathionSkills.getSubSkills(item.getEnchantLevel())) + { + _owner.removeSkill(holder.getSkill(), false, holder.getSkill().isPassive()); + } + // Add new skills. + if (item.getLocationSlot() == Inventory.PAPERDOLL_AGATHION1) + { + for (SkillHolder holder : agathionSkills.getMainSkills(item.getEnchantLevel())) + { + if (holder.getSkill().isPassive() && !holder.getSkill().checkConditions(SkillConditionScope.PASSIVE, _owner, _owner)) + { + continue; + } + _owner.addSkill(holder.getSkill(), false); + } + } + for (SkillHolder holder : agathionSkills.getSubSkills(item.getEnchantLevel())) + { + if (holder.getSkill().isPassive() && !holder.getSkill().checkConditions(SkillConditionScope.PASSIVE, _owner, _owner)) + { + continue; + } + _owner.addSkill(holder.getSkill(), false); + } + } + } } } } diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java index c627cb2c06..b6a66f5298 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java @@ -30,6 +30,7 @@ import java.util.logging.Logger; import org.l2jmobius.Config; import org.l2jmobius.commons.database.DatabaseFactory; import org.l2jmobius.gameserver.data.ItemTable; +import org.l2jmobius.gameserver.data.xml.AgathionData; import org.l2jmobius.gameserver.enums.InventoryBlockType; import org.l2jmobius.gameserver.enums.ItemLocation; import org.l2jmobius.gameserver.model.TradeItem; @@ -40,9 +41,12 @@ import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemAd import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemDestroy; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemDrop; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemTransfer; +import org.l2jmobius.gameserver.model.holders.AgathionSkillHolder; +import org.l2jmobius.gameserver.model.holders.SkillHolder; import org.l2jmobius.gameserver.model.item.ItemTemplate; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.item.type.EtcItemType; +import org.l2jmobius.gameserver.model.skill.SkillConditionScope; import org.l2jmobius.gameserver.model.variables.ItemVariables; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.InventoryUpdate; @@ -1084,6 +1088,43 @@ public class PlayerInventory extends Inventory if (item.isEquipped()) { item.applySpecialAbilities(); + + if (((item.getLocationSlot() >= Inventory.PAPERDOLL_AGATHION1) && (item.getLocationSlot() <= Inventory.PAPERDOLL_AGATHION5))) + { + final AgathionSkillHolder agathionSkills = AgathionData.getInstance().getSkills(item.getId()); + if (agathionSkills != null) + { + // Remove old skills. + for (SkillHolder holder : agathionSkills.getMainSkills(item.getEnchantLevel())) + { + _owner.removeSkill(holder.getSkill(), false, holder.getSkill().isPassive()); + } + for (SkillHolder holder : agathionSkills.getSubSkills(item.getEnchantLevel())) + { + _owner.removeSkill(holder.getSkill(), false, holder.getSkill().isPassive()); + } + // Add new skills. + if (item.getLocationSlot() == Inventory.PAPERDOLL_AGATHION1) + { + for (SkillHolder holder : agathionSkills.getMainSkills(item.getEnchantLevel())) + { + if (holder.getSkill().isPassive() && !holder.getSkill().checkConditions(SkillConditionScope.PASSIVE, _owner, _owner)) + { + continue; + } + _owner.addSkill(holder.getSkill(), false); + } + } + for (SkillHolder holder : agathionSkills.getSubSkills(item.getEnchantLevel())) + { + if (holder.getSkill().isPassive() && !holder.getSkill().checkConditions(SkillConditionScope.PASSIVE, _owner, _owner)) + { + continue; + } + _owner.addSkill(holder.getSkill(), false); + } + } + } } } } diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java index e83ab3bbfe..ee4b3fbdd5 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java @@ -30,6 +30,7 @@ import java.util.logging.Logger; import org.l2jmobius.Config; import org.l2jmobius.commons.database.DatabaseFactory; import org.l2jmobius.gameserver.data.ItemTable; +import org.l2jmobius.gameserver.data.xml.AgathionData; import org.l2jmobius.gameserver.enums.InventoryBlockType; import org.l2jmobius.gameserver.enums.ItemLocation; import org.l2jmobius.gameserver.model.TradeItem; @@ -40,10 +41,13 @@ import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemAd import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemDestroy; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemDrop; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemTransfer; +import org.l2jmobius.gameserver.model.holders.AgathionSkillHolder; +import org.l2jmobius.gameserver.model.holders.SkillHolder; import org.l2jmobius.gameserver.model.item.ItemTemplate; import org.l2jmobius.gameserver.model.item.Weapon; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.item.type.EtcItemType; +import org.l2jmobius.gameserver.model.skill.SkillConditionScope; import org.l2jmobius.gameserver.model.variables.ItemVariables; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.InventoryUpdate; @@ -1016,6 +1020,43 @@ public class PlayerInventory extends Inventory if (item.isEquipped()) { item.applySpecialAbilities(); + + if (((item.getLocationSlot() >= Inventory.PAPERDOLL_AGATHION1) && (item.getLocationSlot() <= Inventory.PAPERDOLL_AGATHION5))) + { + final AgathionSkillHolder agathionSkills = AgathionData.getInstance().getSkills(item.getId()); + if (agathionSkills != null) + { + // Remove old skills. + for (SkillHolder holder : agathionSkills.getMainSkills(item.getEnchantLevel())) + { + _owner.removeSkill(holder.getSkill(), false, holder.getSkill().isPassive()); + } + for (SkillHolder holder : agathionSkills.getSubSkills(item.getEnchantLevel())) + { + _owner.removeSkill(holder.getSkill(), false, holder.getSkill().isPassive()); + } + // Add new skills. + if (item.getLocationSlot() == Inventory.PAPERDOLL_AGATHION1) + { + for (SkillHolder holder : agathionSkills.getMainSkills(item.getEnchantLevel())) + { + if (holder.getSkill().isPassive() && !holder.getSkill().checkConditions(SkillConditionScope.PASSIVE, _owner, _owner)) + { + continue; + } + _owner.addSkill(holder.getSkill(), false); + } + } + for (SkillHolder holder : agathionSkills.getSubSkills(item.getEnchantLevel())) + { + if (holder.getSkill().isPassive() && !holder.getSkill().checkConditions(SkillConditionScope.PASSIVE, _owner, _owner)) + { + continue; + } + _owner.addSkill(holder.getSkill(), false); + } + } + } } } } diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java index e83ab3bbfe..ee4b3fbdd5 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java @@ -30,6 +30,7 @@ import java.util.logging.Logger; import org.l2jmobius.Config; import org.l2jmobius.commons.database.DatabaseFactory; import org.l2jmobius.gameserver.data.ItemTable; +import org.l2jmobius.gameserver.data.xml.AgathionData; import org.l2jmobius.gameserver.enums.InventoryBlockType; import org.l2jmobius.gameserver.enums.ItemLocation; import org.l2jmobius.gameserver.model.TradeItem; @@ -40,10 +41,13 @@ import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemAd import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemDestroy; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemDrop; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemTransfer; +import org.l2jmobius.gameserver.model.holders.AgathionSkillHolder; +import org.l2jmobius.gameserver.model.holders.SkillHolder; import org.l2jmobius.gameserver.model.item.ItemTemplate; import org.l2jmobius.gameserver.model.item.Weapon; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.item.type.EtcItemType; +import org.l2jmobius.gameserver.model.skill.SkillConditionScope; import org.l2jmobius.gameserver.model.variables.ItemVariables; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.InventoryUpdate; @@ -1016,6 +1020,43 @@ public class PlayerInventory extends Inventory if (item.isEquipped()) { item.applySpecialAbilities(); + + if (((item.getLocationSlot() >= Inventory.PAPERDOLL_AGATHION1) && (item.getLocationSlot() <= Inventory.PAPERDOLL_AGATHION5))) + { + final AgathionSkillHolder agathionSkills = AgathionData.getInstance().getSkills(item.getId()); + if (agathionSkills != null) + { + // Remove old skills. + for (SkillHolder holder : agathionSkills.getMainSkills(item.getEnchantLevel())) + { + _owner.removeSkill(holder.getSkill(), false, holder.getSkill().isPassive()); + } + for (SkillHolder holder : agathionSkills.getSubSkills(item.getEnchantLevel())) + { + _owner.removeSkill(holder.getSkill(), false, holder.getSkill().isPassive()); + } + // Add new skills. + if (item.getLocationSlot() == Inventory.PAPERDOLL_AGATHION1) + { + for (SkillHolder holder : agathionSkills.getMainSkills(item.getEnchantLevel())) + { + if (holder.getSkill().isPassive() && !holder.getSkill().checkConditions(SkillConditionScope.PASSIVE, _owner, _owner)) + { + continue; + } + _owner.addSkill(holder.getSkill(), false); + } + } + for (SkillHolder holder : agathionSkills.getSubSkills(item.getEnchantLevel())) + { + if (holder.getSkill().isPassive() && !holder.getSkill().checkConditions(SkillConditionScope.PASSIVE, _owner, _owner)) + { + continue; + } + _owner.addSkill(holder.getSkill(), false); + } + } + } } } } diff --git a/L2J_Mobius_Essence_6.0_BattleChronicle/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java b/L2J_Mobius_Essence_6.0_BattleChronicle/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java index e83ab3bbfe..ee4b3fbdd5 100644 --- a/L2J_Mobius_Essence_6.0_BattleChronicle/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java +++ b/L2J_Mobius_Essence_6.0_BattleChronicle/java/org/l2jmobius/gameserver/model/itemcontainer/PlayerInventory.java @@ -30,6 +30,7 @@ import java.util.logging.Logger; import org.l2jmobius.Config; import org.l2jmobius.commons.database.DatabaseFactory; import org.l2jmobius.gameserver.data.ItemTable; +import org.l2jmobius.gameserver.data.xml.AgathionData; import org.l2jmobius.gameserver.enums.InventoryBlockType; import org.l2jmobius.gameserver.enums.ItemLocation; import org.l2jmobius.gameserver.model.TradeItem; @@ -40,10 +41,13 @@ import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemAd import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemDestroy; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemDrop; import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemTransfer; +import org.l2jmobius.gameserver.model.holders.AgathionSkillHolder; +import org.l2jmobius.gameserver.model.holders.SkillHolder; import org.l2jmobius.gameserver.model.item.ItemTemplate; import org.l2jmobius.gameserver.model.item.Weapon; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.item.type.EtcItemType; +import org.l2jmobius.gameserver.model.skill.SkillConditionScope; import org.l2jmobius.gameserver.model.variables.ItemVariables; import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.serverpackets.InventoryUpdate; @@ -1016,6 +1020,43 @@ public class PlayerInventory extends Inventory if (item.isEquipped()) { item.applySpecialAbilities(); + + if (((item.getLocationSlot() >= Inventory.PAPERDOLL_AGATHION1) && (item.getLocationSlot() <= Inventory.PAPERDOLL_AGATHION5))) + { + final AgathionSkillHolder agathionSkills = AgathionData.getInstance().getSkills(item.getId()); + if (agathionSkills != null) + { + // Remove old skills. + for (SkillHolder holder : agathionSkills.getMainSkills(item.getEnchantLevel())) + { + _owner.removeSkill(holder.getSkill(), false, holder.getSkill().isPassive()); + } + for (SkillHolder holder : agathionSkills.getSubSkills(item.getEnchantLevel())) + { + _owner.removeSkill(holder.getSkill(), false, holder.getSkill().isPassive()); + } + // Add new skills. + if (item.getLocationSlot() == Inventory.PAPERDOLL_AGATHION1) + { + for (SkillHolder holder : agathionSkills.getMainSkills(item.getEnchantLevel())) + { + if (holder.getSkill().isPassive() && !holder.getSkill().checkConditions(SkillConditionScope.PASSIVE, _owner, _owner)) + { + continue; + } + _owner.addSkill(holder.getSkill(), false); + } + } + for (SkillHolder holder : agathionSkills.getSubSkills(item.getEnchantLevel())) + { + if (holder.getSkill().isPassive() && !holder.getSkill().checkConditions(SkillConditionScope.PASSIVE, _owner, _owner)) + { + continue; + } + _owner.addSkill(holder.getSkill(), false); + } + } + } } } }