PlayerInventory applyItemSkills should consider agathion skills.

Contributed by nasseka.
This commit is contained in:
MobiusDevelopment 2022-01-11 02:20:36 +00:00
parent c7ed9f5b49
commit b228e6d6c8
14 changed files with 574 additions and 0 deletions

View File

@ -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);
}
}
}
}
}
}

View File

@ -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);
}
}
}
}
}
}

View File

@ -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);
}
}
}
}
}
}

View File

@ -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);
}
}
}
}
}
}

View File

@ -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);
}
}
}
}
}
}

View File

@ -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);
}
}
}
}
}
}

View File

@ -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);
}
}
}
}
}
}

View File

@ -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);
}
}
}
}
}
}

View File

@ -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);
}
}
}
}
}
}

View File

@ -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);
}
}
}
}
}
}

View File

@ -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);
}
}
}
}
}
}

View File

@ -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);
}
}
}
}
}
}

View File

@ -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);
}
}
}
}
}
}

View File

@ -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);
}
}
}
}
}
}