From 17192278257fa62ae030a0e22e5c711f1f4a5c18 Mon Sep 17 00:00:00 2001 From: MobiusDevelopment <8391001+MobiusDevelopment@users.noreply.github.com> Date: Thu, 8 Sep 2022 11:14:44 +0000 Subject: [PATCH] Support for OpEquipItem multiple item ids. --- .../OpEquipItemSkillCondition.java | 55 +++++++++++++++++-- .../dist/game/data/xsd/skills.xsd | 7 +++ .../OpEquipItemSkillCondition.java | 55 +++++++++++++++++-- .../dist/game/data/xsd/skills.xsd | 7 +++ .../OpEquipItemSkillCondition.java | 55 +++++++++++++++++-- .../dist/game/data/xsd/skills.xsd | 7 +++ .../OpEquipItemSkillCondition.java | 55 +++++++++++++++++-- .../dist/game/data/xsd/skills.xsd | 7 +++ .../OpEquipItemSkillCondition.java | 55 +++++++++++++++++-- .../dist/game/data/xsd/skills.xsd | 8 +++ .../OpEquipItemSkillCondition.java | 55 +++++++++++++++++-- .../dist/game/data/xsd/skills.xsd | 9 ++- .../OpEquipItemSkillCondition.java | 55 +++++++++++++++++-- .../dist/game/data/xsd/skills.xsd | 9 ++- .../OpEquipItemSkillCondition.java | 55 +++++++++++++++++-- .../dist/game/data/xsd/skills.xsd | 9 ++- .../OpEquipItemSkillCondition.java | 55 +++++++++++++++++-- .../dist/game/data/xsd/skills.xsd | 9 ++- .../OpEquipItemSkillCondition.java | 55 +++++++++++++++++-- .../dist/game/data/xsd/skills.xsd | 9 ++- .../OpEquipItemSkillCondition.java | 55 +++++++++++++++++-- .../dist/game/data/xsd/skills.xsd | 11 +++- .../OpEquipItemSkillCondition.java | 55 +++++++++++++++++-- .../OpEquipItemSkillCondition.java | 55 +++++++++++++++++-- .../OpEquipItemSkillCondition.java | 55 +++++++++++++++++-- .../OpEquipItemSkillCondition.java | 55 +++++++++++++++++-- .../OpEquipItemSkillCondition.java | 55 +++++++++++++++++-- .../OpEquipItemSkillCondition.java | 55 +++++++++++++++++-- .../OpEquipItemSkillCondition.java | 55 +++++++++++++++++-- .../OpEquipItemSkillCondition.java | 55 +++++++++++++++++-- .../OpEquipItemSkillCondition.java | 55 +++++++++++++++++-- .../OpEquipItemSkillCondition.java | 55 +++++++++++++++++-- .../dist/game/data/xsd/skills.xsd | 7 +++ .../OpEquipItemSkillCondition.java | 55 +++++++++++++++++-- .../dist/game/data/xsd/skills.xsd | 8 +++ .../OpEquipItemSkillCondition.java | 55 +++++++++++++++++-- .../dist/game/data/xsd/skills.xsd | 8 +++ .../OpEquipItemSkillCondition.java | 55 +++++++++++++++++-- .../dist/game/data/xsd/skills.xsd | 8 +++ 39 files changed, 1316 insertions(+), 127 deletions(-) diff --git a/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/handlers/skillconditionhandlers/OpEquipItemSkillCondition.java b/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/handlers/skillconditionhandlers/OpEquipItemSkillCondition.java index 61abadc33c..c02555c388 100644 --- a/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/handlers/skillconditionhandlers/OpEquipItemSkillCondition.java +++ b/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/handlers/skillconditionhandlers/OpEquipItemSkillCondition.java @@ -16,6 +16,10 @@ */ package handlers.skillconditionhandlers; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + import org.l2jmobius.gameserver.enums.SkillConditionAffectType; import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.WorldObject; @@ -28,12 +32,20 @@ import org.l2jmobius.gameserver.model.skill.Skill; */ public class OpEquipItemSkillCondition implements ISkillCondition { - private final int _itemId; + private final Set _itemIds = new HashSet<>(); private final SkillConditionAffectType _affectType; public OpEquipItemSkillCondition(StatSet params) { - _itemId = params.getInt("itemId"); + final List itemIds = params.getList("itemIds", Integer.class); + if (itemIds != null) + { + _itemIds.addAll(itemIds); + } + else + { + _itemIds.add(params.getInt("itemId")); + } _affectType = params.getEnum("affectType", SkillConditionAffectType.class); } @@ -44,15 +56,48 @@ public class OpEquipItemSkillCondition implements ISkillCondition { case CASTER: { - return caster.getInventory().isItemEquipped(_itemId); + for (int itemId : _itemIds) + { + if (caster.getInventory().isItemEquipped(itemId)) + { + return true; + } + } + break; } case TARGET: { - return (target != null) && target.isPlayer() && target.getActingPlayer().getInventory().isItemEquipped(_itemId); + if ((target != null) && target.isPlayer()) + { + for (int itemId : _itemIds) + { + if (target.getActingPlayer().getInventory().isItemEquipped(itemId)) + { + return true; + } + } + } + break; } case BOTH: { - return (target != null) && target.isPlayer() && target.getActingPlayer().getInventory().isItemEquipped(_itemId) && caster.getInventory().isItemEquipped(_itemId); + if ((target != null) && target.isPlayer()) + { + for (int itemId : _itemIds) + { + if (target.getActingPlayer().getInventory().isItemEquipped(itemId)) + { + for (int id : _itemIds) + { + if (caster.getInventory().isItemEquipped(id)) + { + return true; + } + } + } + } + } + break; } } return false; diff --git a/L2J_Mobius_01.0_Ertheia/dist/game/data/xsd/skills.xsd b/L2J_Mobius_01.0_Ertheia/dist/game/data/xsd/skills.xsd index 7ddce12728..c2e423820a 100644 --- a/L2J_Mobius_01.0_Ertheia/dist/game/data/xsd/skills.xsd +++ b/L2J_Mobius_01.0_Ertheia/dist/game/data/xsd/skills.xsd @@ -2157,6 +2157,13 @@ + + + + + + + diff --git a/L2J_Mobius_02.5_Underground/dist/game/data/scripts/handlers/skillconditionhandlers/OpEquipItemSkillCondition.java b/L2J_Mobius_02.5_Underground/dist/game/data/scripts/handlers/skillconditionhandlers/OpEquipItemSkillCondition.java index 61abadc33c..c02555c388 100644 --- a/L2J_Mobius_02.5_Underground/dist/game/data/scripts/handlers/skillconditionhandlers/OpEquipItemSkillCondition.java +++ b/L2J_Mobius_02.5_Underground/dist/game/data/scripts/handlers/skillconditionhandlers/OpEquipItemSkillCondition.java @@ -16,6 +16,10 @@ */ package handlers.skillconditionhandlers; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + import org.l2jmobius.gameserver.enums.SkillConditionAffectType; import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.WorldObject; @@ -28,12 +32,20 @@ import org.l2jmobius.gameserver.model.skill.Skill; */ public class OpEquipItemSkillCondition implements ISkillCondition { - private final int _itemId; + private final Set _itemIds = new HashSet<>(); private final SkillConditionAffectType _affectType; public OpEquipItemSkillCondition(StatSet params) { - _itemId = params.getInt("itemId"); + final List itemIds = params.getList("itemIds", Integer.class); + if (itemIds != null) + { + _itemIds.addAll(itemIds); + } + else + { + _itemIds.add(params.getInt("itemId")); + } _affectType = params.getEnum("affectType", SkillConditionAffectType.class); } @@ -44,15 +56,48 @@ public class OpEquipItemSkillCondition implements ISkillCondition { case CASTER: { - return caster.getInventory().isItemEquipped(_itemId); + for (int itemId : _itemIds) + { + if (caster.getInventory().isItemEquipped(itemId)) + { + return true; + } + } + break; } case TARGET: { - return (target != null) && target.isPlayer() && target.getActingPlayer().getInventory().isItemEquipped(_itemId); + if ((target != null) && target.isPlayer()) + { + for (int itemId : _itemIds) + { + if (target.getActingPlayer().getInventory().isItemEquipped(itemId)) + { + return true; + } + } + } + break; } case BOTH: { - return (target != null) && target.isPlayer() && target.getActingPlayer().getInventory().isItemEquipped(_itemId) && caster.getInventory().isItemEquipped(_itemId); + if ((target != null) && target.isPlayer()) + { + for (int itemId : _itemIds) + { + if (target.getActingPlayer().getInventory().isItemEquipped(itemId)) + { + for (int id : _itemIds) + { + if (caster.getInventory().isItemEquipped(id)) + { + return true; + } + } + } + } + } + break; } } return false; diff --git a/L2J_Mobius_02.5_Underground/dist/game/data/xsd/skills.xsd b/L2J_Mobius_02.5_Underground/dist/game/data/xsd/skills.xsd index c982908e76..90865530e4 100644 --- a/L2J_Mobius_02.5_Underground/dist/game/data/xsd/skills.xsd +++ b/L2J_Mobius_02.5_Underground/dist/game/data/xsd/skills.xsd @@ -2217,6 +2217,13 @@ + + + + + + + diff --git a/L2J_Mobius_03.0_Helios/dist/game/data/scripts/handlers/skillconditionhandlers/OpEquipItemSkillCondition.java b/L2J_Mobius_03.0_Helios/dist/game/data/scripts/handlers/skillconditionhandlers/OpEquipItemSkillCondition.java index 61abadc33c..c02555c388 100644 --- a/L2J_Mobius_03.0_Helios/dist/game/data/scripts/handlers/skillconditionhandlers/OpEquipItemSkillCondition.java +++ b/L2J_Mobius_03.0_Helios/dist/game/data/scripts/handlers/skillconditionhandlers/OpEquipItemSkillCondition.java @@ -16,6 +16,10 @@ */ package handlers.skillconditionhandlers; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + import org.l2jmobius.gameserver.enums.SkillConditionAffectType; import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.WorldObject; @@ -28,12 +32,20 @@ import org.l2jmobius.gameserver.model.skill.Skill; */ public class OpEquipItemSkillCondition implements ISkillCondition { - private final int _itemId; + private final Set _itemIds = new HashSet<>(); private final SkillConditionAffectType _affectType; public OpEquipItemSkillCondition(StatSet params) { - _itemId = params.getInt("itemId"); + final List itemIds = params.getList("itemIds", Integer.class); + if (itemIds != null) + { + _itemIds.addAll(itemIds); + } + else + { + _itemIds.add(params.getInt("itemId")); + } _affectType = params.getEnum("affectType", SkillConditionAffectType.class); } @@ -44,15 +56,48 @@ public class OpEquipItemSkillCondition implements ISkillCondition { case CASTER: { - return caster.getInventory().isItemEquipped(_itemId); + for (int itemId : _itemIds) + { + if (caster.getInventory().isItemEquipped(itemId)) + { + return true; + } + } + break; } case TARGET: { - return (target != null) && target.isPlayer() && target.getActingPlayer().getInventory().isItemEquipped(_itemId); + if ((target != null) && target.isPlayer()) + { + for (int itemId : _itemIds) + { + if (target.getActingPlayer().getInventory().isItemEquipped(itemId)) + { + return true; + } + } + } + break; } case BOTH: { - return (target != null) && target.isPlayer() && target.getActingPlayer().getInventory().isItemEquipped(_itemId) && caster.getInventory().isItemEquipped(_itemId); + if ((target != null) && target.isPlayer()) + { + for (int itemId : _itemIds) + { + if (target.getActingPlayer().getInventory().isItemEquipped(itemId)) + { + for (int id : _itemIds) + { + if (caster.getInventory().isItemEquipped(id)) + { + return true; + } + } + } + } + } + break; } } return false; diff --git a/L2J_Mobius_03.0_Helios/dist/game/data/xsd/skills.xsd b/L2J_Mobius_03.0_Helios/dist/game/data/xsd/skills.xsd index 779f2e8523..80da691f91 100644 --- a/L2J_Mobius_03.0_Helios/dist/game/data/xsd/skills.xsd +++ b/L2J_Mobius_03.0_Helios/dist/game/data/xsd/skills.xsd @@ -2249,6 +2249,13 @@ + + + + + + + diff --git a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/handlers/skillconditionhandlers/OpEquipItemSkillCondition.java b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/handlers/skillconditionhandlers/OpEquipItemSkillCondition.java index 61abadc33c..c02555c388 100644 --- a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/handlers/skillconditionhandlers/OpEquipItemSkillCondition.java +++ b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/handlers/skillconditionhandlers/OpEquipItemSkillCondition.java @@ -16,6 +16,10 @@ */ package handlers.skillconditionhandlers; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + import org.l2jmobius.gameserver.enums.SkillConditionAffectType; import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.WorldObject; @@ -28,12 +32,20 @@ import org.l2jmobius.gameserver.model.skill.Skill; */ public class OpEquipItemSkillCondition implements ISkillCondition { - private final int _itemId; + private final Set _itemIds = new HashSet<>(); private final SkillConditionAffectType _affectType; public OpEquipItemSkillCondition(StatSet params) { - _itemId = params.getInt("itemId"); + final List itemIds = params.getList("itemIds", Integer.class); + if (itemIds != null) + { + _itemIds.addAll(itemIds); + } + else + { + _itemIds.add(params.getInt("itemId")); + } _affectType = params.getEnum("affectType", SkillConditionAffectType.class); } @@ -44,15 +56,48 @@ public class OpEquipItemSkillCondition implements ISkillCondition { case CASTER: { - return caster.getInventory().isItemEquipped(_itemId); + for (int itemId : _itemIds) + { + if (caster.getInventory().isItemEquipped(itemId)) + { + return true; + } + } + break; } case TARGET: { - return (target != null) && target.isPlayer() && target.getActingPlayer().getInventory().isItemEquipped(_itemId); + if ((target != null) && target.isPlayer()) + { + for (int itemId : _itemIds) + { + if (target.getActingPlayer().getInventory().isItemEquipped(itemId)) + { + return true; + } + } + } + break; } case BOTH: { - return (target != null) && target.isPlayer() && target.getActingPlayer().getInventory().isItemEquipped(_itemId) && caster.getInventory().isItemEquipped(_itemId); + if ((target != null) && target.isPlayer()) + { + for (int itemId : _itemIds) + { + if (target.getActingPlayer().getInventory().isItemEquipped(itemId)) + { + for (int id : _itemIds) + { + if (caster.getInventory().isItemEquipped(id)) + { + return true; + } + } + } + } + } + break; } } return false; diff --git a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/xsd/skills.xsd b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/xsd/skills.xsd index 6a5a2e8a65..953960df91 100644 --- a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/xsd/skills.xsd +++ b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/xsd/skills.xsd @@ -2307,6 +2307,13 @@ + + + + + + + diff --git a/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/handlers/skillconditionhandlers/OpEquipItemSkillCondition.java b/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/handlers/skillconditionhandlers/OpEquipItemSkillCondition.java index 61abadc33c..c02555c388 100644 --- a/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/handlers/skillconditionhandlers/OpEquipItemSkillCondition.java +++ b/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/handlers/skillconditionhandlers/OpEquipItemSkillCondition.java @@ -16,6 +16,10 @@ */ package handlers.skillconditionhandlers; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + import org.l2jmobius.gameserver.enums.SkillConditionAffectType; import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.WorldObject; @@ -28,12 +32,20 @@ import org.l2jmobius.gameserver.model.skill.Skill; */ public class OpEquipItemSkillCondition implements ISkillCondition { - private final int _itemId; + private final Set _itemIds = new HashSet<>(); private final SkillConditionAffectType _affectType; public OpEquipItemSkillCondition(StatSet params) { - _itemId = params.getInt("itemId"); + final List itemIds = params.getList("itemIds", Integer.class); + if (itemIds != null) + { + _itemIds.addAll(itemIds); + } + else + { + _itemIds.add(params.getInt("itemId")); + } _affectType = params.getEnum("affectType", SkillConditionAffectType.class); } @@ -44,15 +56,48 @@ public class OpEquipItemSkillCondition implements ISkillCondition { case CASTER: { - return caster.getInventory().isItemEquipped(_itemId); + for (int itemId : _itemIds) + { + if (caster.getInventory().isItemEquipped(itemId)) + { + return true; + } + } + break; } case TARGET: { - return (target != null) && target.isPlayer() && target.getActingPlayer().getInventory().isItemEquipped(_itemId); + if ((target != null) && target.isPlayer()) + { + for (int itemId : _itemIds) + { + if (target.getActingPlayer().getInventory().isItemEquipped(itemId)) + { + return true; + } + } + } + break; } case BOTH: { - return (target != null) && target.isPlayer() && target.getActingPlayer().getInventory().isItemEquipped(_itemId) && caster.getInventory().isItemEquipped(_itemId); + if ((target != null) && target.isPlayer()) + { + for (int itemId : _itemIds) + { + if (target.getActingPlayer().getInventory().isItemEquipped(itemId)) + { + for (int id : _itemIds) + { + if (caster.getInventory().isItemEquipped(id)) + { + return true; + } + } + } + } + } + break; } } return false; diff --git a/L2J_Mobius_05.0_Salvation/dist/game/data/xsd/skills.xsd b/L2J_Mobius_05.0_Salvation/dist/game/data/xsd/skills.xsd index 18a95b79f4..15c559ec0f 100644 --- a/L2J_Mobius_05.0_Salvation/dist/game/data/xsd/skills.xsd +++ b/L2J_Mobius_05.0_Salvation/dist/game/data/xsd/skills.xsd @@ -2277,6 +2277,7 @@ + @@ -2291,6 +2292,13 @@ + + + + + + + diff --git a/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/handlers/skillconditionhandlers/OpEquipItemSkillCondition.java b/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/handlers/skillconditionhandlers/OpEquipItemSkillCondition.java index 61abadc33c..c02555c388 100644 --- a/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/handlers/skillconditionhandlers/OpEquipItemSkillCondition.java +++ b/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/handlers/skillconditionhandlers/OpEquipItemSkillCondition.java @@ -16,6 +16,10 @@ */ package handlers.skillconditionhandlers; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + import org.l2jmobius.gameserver.enums.SkillConditionAffectType; import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.WorldObject; @@ -28,12 +32,20 @@ import org.l2jmobius.gameserver.model.skill.Skill; */ public class OpEquipItemSkillCondition implements ISkillCondition { - private final int _itemId; + private final Set _itemIds = new HashSet<>(); private final SkillConditionAffectType _affectType; public OpEquipItemSkillCondition(StatSet params) { - _itemId = params.getInt("itemId"); + final List itemIds = params.getList("itemIds", Integer.class); + if (itemIds != null) + { + _itemIds.addAll(itemIds); + } + else + { + _itemIds.add(params.getInt("itemId")); + } _affectType = params.getEnum("affectType", SkillConditionAffectType.class); } @@ -44,15 +56,48 @@ public class OpEquipItemSkillCondition implements ISkillCondition { case CASTER: { - return caster.getInventory().isItemEquipped(_itemId); + for (int itemId : _itemIds) + { + if (caster.getInventory().isItemEquipped(itemId)) + { + return true; + } + } + break; } case TARGET: { - return (target != null) && target.isPlayer() && target.getActingPlayer().getInventory().isItemEquipped(_itemId); + if ((target != null) && target.isPlayer()) + { + for (int itemId : _itemIds) + { + if (target.getActingPlayer().getInventory().isItemEquipped(itemId)) + { + return true; + } + } + } + break; } case BOTH: { - return (target != null) && target.isPlayer() && target.getActingPlayer().getInventory().isItemEquipped(_itemId) && caster.getInventory().isItemEquipped(_itemId); + if ((target != null) && target.isPlayer()) + { + for (int itemId : _itemIds) + { + if (target.getActingPlayer().getInventory().isItemEquipped(itemId)) + { + for (int id : _itemIds) + { + if (caster.getInventory().isItemEquipped(id)) + { + return true; + } + } + } + } + } + break; } } return false; diff --git a/L2J_Mobius_05.5_EtinasFate/dist/game/data/xsd/skills.xsd b/L2J_Mobius_05.5_EtinasFate/dist/game/data/xsd/skills.xsd index e196cc7108..3afbc52dda 100644 --- a/L2J_Mobius_05.5_EtinasFate/dist/game/data/xsd/skills.xsd +++ b/L2J_Mobius_05.5_EtinasFate/dist/game/data/xsd/skills.xsd @@ -2277,7 +2277,7 @@ - + @@ -2294,6 +2294,13 @@ + + + + + + + diff --git a/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/handlers/skillconditionhandlers/OpEquipItemSkillCondition.java b/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/handlers/skillconditionhandlers/OpEquipItemSkillCondition.java index 61abadc33c..c02555c388 100644 --- a/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/handlers/skillconditionhandlers/OpEquipItemSkillCondition.java +++ b/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/handlers/skillconditionhandlers/OpEquipItemSkillCondition.java @@ -16,6 +16,10 @@ */ package handlers.skillconditionhandlers; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + import org.l2jmobius.gameserver.enums.SkillConditionAffectType; import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.WorldObject; @@ -28,12 +32,20 @@ import org.l2jmobius.gameserver.model.skill.Skill; */ public class OpEquipItemSkillCondition implements ISkillCondition { - private final int _itemId; + private final Set _itemIds = new HashSet<>(); private final SkillConditionAffectType _affectType; public OpEquipItemSkillCondition(StatSet params) { - _itemId = params.getInt("itemId"); + final List itemIds = params.getList("itemIds", Integer.class); + if (itemIds != null) + { + _itemIds.addAll(itemIds); + } + else + { + _itemIds.add(params.getInt("itemId")); + } _affectType = params.getEnum("affectType", SkillConditionAffectType.class); } @@ -44,15 +56,48 @@ public class OpEquipItemSkillCondition implements ISkillCondition { case CASTER: { - return caster.getInventory().isItemEquipped(_itemId); + for (int itemId : _itemIds) + { + if (caster.getInventory().isItemEquipped(itemId)) + { + return true; + } + } + break; } case TARGET: { - return (target != null) && target.isPlayer() && target.getActingPlayer().getInventory().isItemEquipped(_itemId); + if ((target != null) && target.isPlayer()) + { + for (int itemId : _itemIds) + { + if (target.getActingPlayer().getInventory().isItemEquipped(itemId)) + { + return true; + } + } + } + break; } case BOTH: { - return (target != null) && target.isPlayer() && target.getActingPlayer().getInventory().isItemEquipped(_itemId) && caster.getInventory().isItemEquipped(_itemId); + if ((target != null) && target.isPlayer()) + { + for (int itemId : _itemIds) + { + if (target.getActingPlayer().getInventory().isItemEquipped(itemId)) + { + for (int id : _itemIds) + { + if (caster.getInventory().isItemEquipped(id)) + { + return true; + } + } + } + } + } + break; } } return false; diff --git a/L2J_Mobius_06.0_Fafurion/dist/game/data/xsd/skills.xsd b/L2J_Mobius_06.0_Fafurion/dist/game/data/xsd/skills.xsd index e739dcb971..e9a0dcb6e3 100644 --- a/L2J_Mobius_06.0_Fafurion/dist/game/data/xsd/skills.xsd +++ b/L2J_Mobius_06.0_Fafurion/dist/game/data/xsd/skills.xsd @@ -2277,7 +2277,7 @@ - + @@ -2294,6 +2294,13 @@ + + + + + + + diff --git a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/handlers/skillconditionhandlers/OpEquipItemSkillCondition.java b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/handlers/skillconditionhandlers/OpEquipItemSkillCondition.java index 61abadc33c..c02555c388 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/handlers/skillconditionhandlers/OpEquipItemSkillCondition.java +++ b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/handlers/skillconditionhandlers/OpEquipItemSkillCondition.java @@ -16,6 +16,10 @@ */ package handlers.skillconditionhandlers; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + import org.l2jmobius.gameserver.enums.SkillConditionAffectType; import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.WorldObject; @@ -28,12 +32,20 @@ import org.l2jmobius.gameserver.model.skill.Skill; */ public class OpEquipItemSkillCondition implements ISkillCondition { - private final int _itemId; + private final Set _itemIds = new HashSet<>(); private final SkillConditionAffectType _affectType; public OpEquipItemSkillCondition(StatSet params) { - _itemId = params.getInt("itemId"); + final List itemIds = params.getList("itemIds", Integer.class); + if (itemIds != null) + { + _itemIds.addAll(itemIds); + } + else + { + _itemIds.add(params.getInt("itemId")); + } _affectType = params.getEnum("affectType", SkillConditionAffectType.class); } @@ -44,15 +56,48 @@ public class OpEquipItemSkillCondition implements ISkillCondition { case CASTER: { - return caster.getInventory().isItemEquipped(_itemId); + for (int itemId : _itemIds) + { + if (caster.getInventory().isItemEquipped(itemId)) + { + return true; + } + } + break; } case TARGET: { - return (target != null) && target.isPlayer() && target.getActingPlayer().getInventory().isItemEquipped(_itemId); + if ((target != null) && target.isPlayer()) + { + for (int itemId : _itemIds) + { + if (target.getActingPlayer().getInventory().isItemEquipped(itemId)) + { + return true; + } + } + } + break; } case BOTH: { - return (target != null) && target.isPlayer() && target.getActingPlayer().getInventory().isItemEquipped(_itemId) && caster.getInventory().isItemEquipped(_itemId); + if ((target != null) && target.isPlayer()) + { + for (int itemId : _itemIds) + { + if (target.getActingPlayer().getInventory().isItemEquipped(itemId)) + { + for (int id : _itemIds) + { + if (caster.getInventory().isItemEquipped(id)) + { + return true; + } + } + } + } + } + break; } } return false; diff --git a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/xsd/skills.xsd b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/xsd/skills.xsd index 4bf271d6b6..f2a4da5da5 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/xsd/skills.xsd +++ b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/xsd/skills.xsd @@ -2341,7 +2341,7 @@ - + @@ -2358,6 +2358,13 @@ + + + + + + + diff --git a/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/handlers/skillconditionhandlers/OpEquipItemSkillCondition.java b/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/handlers/skillconditionhandlers/OpEquipItemSkillCondition.java index 61abadc33c..c02555c388 100644 --- a/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/handlers/skillconditionhandlers/OpEquipItemSkillCondition.java +++ b/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/handlers/skillconditionhandlers/OpEquipItemSkillCondition.java @@ -16,6 +16,10 @@ */ package handlers.skillconditionhandlers; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + import org.l2jmobius.gameserver.enums.SkillConditionAffectType; import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.WorldObject; @@ -28,12 +32,20 @@ import org.l2jmobius.gameserver.model.skill.Skill; */ public class OpEquipItemSkillCondition implements ISkillCondition { - private final int _itemId; + private final Set _itemIds = new HashSet<>(); private final SkillConditionAffectType _affectType; public OpEquipItemSkillCondition(StatSet params) { - _itemId = params.getInt("itemId"); + final List itemIds = params.getList("itemIds", Integer.class); + if (itemIds != null) + { + _itemIds.addAll(itemIds); + } + else + { + _itemIds.add(params.getInt("itemId")); + } _affectType = params.getEnum("affectType", SkillConditionAffectType.class); } @@ -44,15 +56,48 @@ public class OpEquipItemSkillCondition implements ISkillCondition { case CASTER: { - return caster.getInventory().isItemEquipped(_itemId); + for (int itemId : _itemIds) + { + if (caster.getInventory().isItemEquipped(itemId)) + { + return true; + } + } + break; } case TARGET: { - return (target != null) && target.isPlayer() && target.getActingPlayer().getInventory().isItemEquipped(_itemId); + if ((target != null) && target.isPlayer()) + { + for (int itemId : _itemIds) + { + if (target.getActingPlayer().getInventory().isItemEquipped(itemId)) + { + return true; + } + } + } + break; } case BOTH: { - return (target != null) && target.isPlayer() && target.getActingPlayer().getInventory().isItemEquipped(_itemId) && caster.getInventory().isItemEquipped(_itemId); + if ((target != null) && target.isPlayer()) + { + for (int itemId : _itemIds) + { + if (target.getActingPlayer().getInventory().isItemEquipped(itemId)) + { + for (int id : _itemIds) + { + if (caster.getInventory().isItemEquipped(id)) + { + return true; + } + } + } + } + } + break; } } return false; diff --git a/L2J_Mobius_08.2_Homunculus/dist/game/data/xsd/skills.xsd b/L2J_Mobius_08.2_Homunculus/dist/game/data/xsd/skills.xsd index 9af6754e85..de243cfb1a 100644 --- a/L2J_Mobius_08.2_Homunculus/dist/game/data/xsd/skills.xsd +++ b/L2J_Mobius_08.2_Homunculus/dist/game/data/xsd/skills.xsd @@ -2386,6 +2386,13 @@ + + + + + + + @@ -2396,7 +2403,7 @@ - + diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/handlers/skillconditionhandlers/OpEquipItemSkillCondition.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/handlers/skillconditionhandlers/OpEquipItemSkillCondition.java index 61abadc33c..c02555c388 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/handlers/skillconditionhandlers/OpEquipItemSkillCondition.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/handlers/skillconditionhandlers/OpEquipItemSkillCondition.java @@ -16,6 +16,10 @@ */ package handlers.skillconditionhandlers; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + import org.l2jmobius.gameserver.enums.SkillConditionAffectType; import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.WorldObject; @@ -28,12 +32,20 @@ import org.l2jmobius.gameserver.model.skill.Skill; */ public class OpEquipItemSkillCondition implements ISkillCondition { - private final int _itemId; + private final Set _itemIds = new HashSet<>(); private final SkillConditionAffectType _affectType; public OpEquipItemSkillCondition(StatSet params) { - _itemId = params.getInt("itemId"); + final List itemIds = params.getList("itemIds", Integer.class); + if (itemIds != null) + { + _itemIds.addAll(itemIds); + } + else + { + _itemIds.add(params.getInt("itemId")); + } _affectType = params.getEnum("affectType", SkillConditionAffectType.class); } @@ -44,15 +56,48 @@ public class OpEquipItemSkillCondition implements ISkillCondition { case CASTER: { - return caster.getInventory().isItemEquipped(_itemId); + for (int itemId : _itemIds) + { + if (caster.getInventory().isItemEquipped(itemId)) + { + return true; + } + } + break; } case TARGET: { - return (target != null) && target.isPlayer() && target.getActingPlayer().getInventory().isItemEquipped(_itemId); + if ((target != null) && target.isPlayer()) + { + for (int itemId : _itemIds) + { + if (target.getActingPlayer().getInventory().isItemEquipped(itemId)) + { + return true; + } + } + } + break; } case BOTH: { - return (target != null) && target.isPlayer() && target.getActingPlayer().getInventory().isItemEquipped(_itemId) && caster.getInventory().isItemEquipped(_itemId); + if ((target != null) && target.isPlayer()) + { + for (int itemId : _itemIds) + { + if (target.getActingPlayer().getInventory().isItemEquipped(itemId)) + { + for (int id : _itemIds) + { + if (caster.getInventory().isItemEquipped(id)) + { + return true; + } + } + } + } + } + break; } } return false; diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/xsd/skills.xsd b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/xsd/skills.xsd index 954c200216..706151f49f 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/xsd/skills.xsd +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/xsd/skills.xsd @@ -2400,6 +2400,13 @@ + + + + + + + @@ -2410,7 +2417,7 @@ - + diff --git a/L2J_Mobius_10.2_MasterClass/dist/game/data/scripts/handlers/skillconditionhandlers/OpEquipItemSkillCondition.java b/L2J_Mobius_10.2_MasterClass/dist/game/data/scripts/handlers/skillconditionhandlers/OpEquipItemSkillCondition.java index 61abadc33c..c02555c388 100644 --- a/L2J_Mobius_10.2_MasterClass/dist/game/data/scripts/handlers/skillconditionhandlers/OpEquipItemSkillCondition.java +++ b/L2J_Mobius_10.2_MasterClass/dist/game/data/scripts/handlers/skillconditionhandlers/OpEquipItemSkillCondition.java @@ -16,6 +16,10 @@ */ package handlers.skillconditionhandlers; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + import org.l2jmobius.gameserver.enums.SkillConditionAffectType; import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.WorldObject; @@ -28,12 +32,20 @@ import org.l2jmobius.gameserver.model.skill.Skill; */ public class OpEquipItemSkillCondition implements ISkillCondition { - private final int _itemId; + private final Set _itemIds = new HashSet<>(); private final SkillConditionAffectType _affectType; public OpEquipItemSkillCondition(StatSet params) { - _itemId = params.getInt("itemId"); + final List itemIds = params.getList("itemIds", Integer.class); + if (itemIds != null) + { + _itemIds.addAll(itemIds); + } + else + { + _itemIds.add(params.getInt("itemId")); + } _affectType = params.getEnum("affectType", SkillConditionAffectType.class); } @@ -44,15 +56,48 @@ public class OpEquipItemSkillCondition implements ISkillCondition { case CASTER: { - return caster.getInventory().isItemEquipped(_itemId); + for (int itemId : _itemIds) + { + if (caster.getInventory().isItemEquipped(itemId)) + { + return true; + } + } + break; } case TARGET: { - return (target != null) && target.isPlayer() && target.getActingPlayer().getInventory().isItemEquipped(_itemId); + if ((target != null) && target.isPlayer()) + { + for (int itemId : _itemIds) + { + if (target.getActingPlayer().getInventory().isItemEquipped(itemId)) + { + return true; + } + } + } + break; } case BOTH: { - return (target != null) && target.isPlayer() && target.getActingPlayer().getInventory().isItemEquipped(_itemId) && caster.getInventory().isItemEquipped(_itemId); + if ((target != null) && target.isPlayer()) + { + for (int itemId : _itemIds) + { + if (target.getActingPlayer().getInventory().isItemEquipped(itemId)) + { + for (int id : _itemIds) + { + if (caster.getInventory().isItemEquipped(id)) + { + return true; + } + } + } + } + } + break; } } return false; diff --git a/L2J_Mobius_10.2_MasterClass/dist/game/data/xsd/skills.xsd b/L2J_Mobius_10.2_MasterClass/dist/game/data/xsd/skills.xsd index f2fa218aac..e9ee05dd19 100644 --- a/L2J_Mobius_10.2_MasterClass/dist/game/data/xsd/skills.xsd +++ b/L2J_Mobius_10.2_MasterClass/dist/game/data/xsd/skills.xsd @@ -349,7 +349,7 @@ - + @@ -2419,6 +2419,13 @@ + + + + + + + @@ -2429,7 +2436,7 @@ - + diff --git a/L2J_Mobius_Classic_1.0/dist/game/data/scripts/handlers/skillconditionhandlers/OpEquipItemSkillCondition.java b/L2J_Mobius_Classic_1.0/dist/game/data/scripts/handlers/skillconditionhandlers/OpEquipItemSkillCondition.java index 61abadc33c..c02555c388 100644 --- a/L2J_Mobius_Classic_1.0/dist/game/data/scripts/handlers/skillconditionhandlers/OpEquipItemSkillCondition.java +++ b/L2J_Mobius_Classic_1.0/dist/game/data/scripts/handlers/skillconditionhandlers/OpEquipItemSkillCondition.java @@ -16,6 +16,10 @@ */ package handlers.skillconditionhandlers; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + import org.l2jmobius.gameserver.enums.SkillConditionAffectType; import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.WorldObject; @@ -28,12 +32,20 @@ import org.l2jmobius.gameserver.model.skill.Skill; */ public class OpEquipItemSkillCondition implements ISkillCondition { - private final int _itemId; + private final Set _itemIds = new HashSet<>(); private final SkillConditionAffectType _affectType; public OpEquipItemSkillCondition(StatSet params) { - _itemId = params.getInt("itemId"); + final List itemIds = params.getList("itemIds", Integer.class); + if (itemIds != null) + { + _itemIds.addAll(itemIds); + } + else + { + _itemIds.add(params.getInt("itemId")); + } _affectType = params.getEnum("affectType", SkillConditionAffectType.class); } @@ -44,15 +56,48 @@ public class OpEquipItemSkillCondition implements ISkillCondition { case CASTER: { - return caster.getInventory().isItemEquipped(_itemId); + for (int itemId : _itemIds) + { + if (caster.getInventory().isItemEquipped(itemId)) + { + return true; + } + } + break; } case TARGET: { - return (target != null) && target.isPlayer() && target.getActingPlayer().getInventory().isItemEquipped(_itemId); + if ((target != null) && target.isPlayer()) + { + for (int itemId : _itemIds) + { + if (target.getActingPlayer().getInventory().isItemEquipped(itemId)) + { + return true; + } + } + } + break; } case BOTH: { - return (target != null) && target.isPlayer() && target.getActingPlayer().getInventory().isItemEquipped(_itemId) && caster.getInventory().isItemEquipped(_itemId); + if ((target != null) && target.isPlayer()) + { + for (int itemId : _itemIds) + { + if (target.getActingPlayer().getInventory().isItemEquipped(itemId)) + { + for (int id : _itemIds) + { + if (caster.getInventory().isItemEquipped(id)) + { + return true; + } + } + } + } + } + break; } } return false; diff --git a/L2J_Mobius_Classic_1.5_AgeOfSplendor/dist/game/data/scripts/handlers/skillconditionhandlers/OpEquipItemSkillCondition.java b/L2J_Mobius_Classic_1.5_AgeOfSplendor/dist/game/data/scripts/handlers/skillconditionhandlers/OpEquipItemSkillCondition.java index 61abadc33c..c02555c388 100644 --- a/L2J_Mobius_Classic_1.5_AgeOfSplendor/dist/game/data/scripts/handlers/skillconditionhandlers/OpEquipItemSkillCondition.java +++ b/L2J_Mobius_Classic_1.5_AgeOfSplendor/dist/game/data/scripts/handlers/skillconditionhandlers/OpEquipItemSkillCondition.java @@ -16,6 +16,10 @@ */ package handlers.skillconditionhandlers; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + import org.l2jmobius.gameserver.enums.SkillConditionAffectType; import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.WorldObject; @@ -28,12 +32,20 @@ import org.l2jmobius.gameserver.model.skill.Skill; */ public class OpEquipItemSkillCondition implements ISkillCondition { - private final int _itemId; + private final Set _itemIds = new HashSet<>(); private final SkillConditionAffectType _affectType; public OpEquipItemSkillCondition(StatSet params) { - _itemId = params.getInt("itemId"); + final List itemIds = params.getList("itemIds", Integer.class); + if (itemIds != null) + { + _itemIds.addAll(itemIds); + } + else + { + _itemIds.add(params.getInt("itemId")); + } _affectType = params.getEnum("affectType", SkillConditionAffectType.class); } @@ -44,15 +56,48 @@ public class OpEquipItemSkillCondition implements ISkillCondition { case CASTER: { - return caster.getInventory().isItemEquipped(_itemId); + for (int itemId : _itemIds) + { + if (caster.getInventory().isItemEquipped(itemId)) + { + return true; + } + } + break; } case TARGET: { - return (target != null) && target.isPlayer() && target.getActingPlayer().getInventory().isItemEquipped(_itemId); + if ((target != null) && target.isPlayer()) + { + for (int itemId : _itemIds) + { + if (target.getActingPlayer().getInventory().isItemEquipped(itemId)) + { + return true; + } + } + } + break; } case BOTH: { - return (target != null) && target.isPlayer() && target.getActingPlayer().getInventory().isItemEquipped(_itemId) && caster.getInventory().isItemEquipped(_itemId); + if ((target != null) && target.isPlayer()) + { + for (int itemId : _itemIds) + { + if (target.getActingPlayer().getInventory().isItemEquipped(itemId)) + { + for (int id : _itemIds) + { + if (caster.getInventory().isItemEquipped(id)) + { + return true; + } + } + } + } + } + break; } } return false; diff --git a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/skillconditionhandlers/OpEquipItemSkillCondition.java b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/skillconditionhandlers/OpEquipItemSkillCondition.java index 61abadc33c..c02555c388 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/skillconditionhandlers/OpEquipItemSkillCondition.java +++ b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/skillconditionhandlers/OpEquipItemSkillCondition.java @@ -16,6 +16,10 @@ */ package handlers.skillconditionhandlers; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + import org.l2jmobius.gameserver.enums.SkillConditionAffectType; import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.WorldObject; @@ -28,12 +32,20 @@ import org.l2jmobius.gameserver.model.skill.Skill; */ public class OpEquipItemSkillCondition implements ISkillCondition { - private final int _itemId; + private final Set _itemIds = new HashSet<>(); private final SkillConditionAffectType _affectType; public OpEquipItemSkillCondition(StatSet params) { - _itemId = params.getInt("itemId"); + final List itemIds = params.getList("itemIds", Integer.class); + if (itemIds != null) + { + _itemIds.addAll(itemIds); + } + else + { + _itemIds.add(params.getInt("itemId")); + } _affectType = params.getEnum("affectType", SkillConditionAffectType.class); } @@ -44,15 +56,48 @@ public class OpEquipItemSkillCondition implements ISkillCondition { case CASTER: { - return caster.getInventory().isItemEquipped(_itemId); + for (int itemId : _itemIds) + { + if (caster.getInventory().isItemEquipped(itemId)) + { + return true; + } + } + break; } case TARGET: { - return (target != null) && target.isPlayer() && target.getActingPlayer().getInventory().isItemEquipped(_itemId); + if ((target != null) && target.isPlayer()) + { + for (int itemId : _itemIds) + { + if (target.getActingPlayer().getInventory().isItemEquipped(itemId)) + { + return true; + } + } + } + break; } case BOTH: { - return (target != null) && target.isPlayer() && target.getActingPlayer().getInventory().isItemEquipped(_itemId) && caster.getInventory().isItemEquipped(_itemId); + if ((target != null) && target.isPlayer()) + { + for (int itemId : _itemIds) + { + if (target.getActingPlayer().getInventory().isItemEquipped(itemId)) + { + for (int id : _itemIds) + { + if (caster.getInventory().isItemEquipped(id)) + { + return true; + } + } + } + } + } + break; } } return false; diff --git a/L2J_Mobius_Classic_2.5_Zaken/dist/game/data/scripts/handlers/skillconditionhandlers/OpEquipItemSkillCondition.java b/L2J_Mobius_Classic_2.5_Zaken/dist/game/data/scripts/handlers/skillconditionhandlers/OpEquipItemSkillCondition.java index 61abadc33c..c02555c388 100644 --- a/L2J_Mobius_Classic_2.5_Zaken/dist/game/data/scripts/handlers/skillconditionhandlers/OpEquipItemSkillCondition.java +++ b/L2J_Mobius_Classic_2.5_Zaken/dist/game/data/scripts/handlers/skillconditionhandlers/OpEquipItemSkillCondition.java @@ -16,6 +16,10 @@ */ package handlers.skillconditionhandlers; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + import org.l2jmobius.gameserver.enums.SkillConditionAffectType; import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.WorldObject; @@ -28,12 +32,20 @@ import org.l2jmobius.gameserver.model.skill.Skill; */ public class OpEquipItemSkillCondition implements ISkillCondition { - private final int _itemId; + private final Set _itemIds = new HashSet<>(); private final SkillConditionAffectType _affectType; public OpEquipItemSkillCondition(StatSet params) { - _itemId = params.getInt("itemId"); + final List itemIds = params.getList("itemIds", Integer.class); + if (itemIds != null) + { + _itemIds.addAll(itemIds); + } + else + { + _itemIds.add(params.getInt("itemId")); + } _affectType = params.getEnum("affectType", SkillConditionAffectType.class); } @@ -44,15 +56,48 @@ public class OpEquipItemSkillCondition implements ISkillCondition { case CASTER: { - return caster.getInventory().isItemEquipped(_itemId); + for (int itemId : _itemIds) + { + if (caster.getInventory().isItemEquipped(itemId)) + { + return true; + } + } + break; } case TARGET: { - return (target != null) && target.isPlayer() && target.getActingPlayer().getInventory().isItemEquipped(_itemId); + if ((target != null) && target.isPlayer()) + { + for (int itemId : _itemIds) + { + if (target.getActingPlayer().getInventory().isItemEquipped(itemId)) + { + return true; + } + } + } + break; } case BOTH: { - return (target != null) && target.isPlayer() && target.getActingPlayer().getInventory().isItemEquipped(_itemId) && caster.getInventory().isItemEquipped(_itemId); + if ((target != null) && target.isPlayer()) + { + for (int itemId : _itemIds) + { + if (target.getActingPlayer().getInventory().isItemEquipped(itemId)) + { + for (int id : _itemIds) + { + if (caster.getInventory().isItemEquipped(id)) + { + return true; + } + } + } + } + } + break; } } return false; diff --git a/L2J_Mobius_Classic_2.7_Antharas/dist/game/data/scripts/handlers/skillconditionhandlers/OpEquipItemSkillCondition.java b/L2J_Mobius_Classic_2.7_Antharas/dist/game/data/scripts/handlers/skillconditionhandlers/OpEquipItemSkillCondition.java index 61abadc33c..c02555c388 100644 --- a/L2J_Mobius_Classic_2.7_Antharas/dist/game/data/scripts/handlers/skillconditionhandlers/OpEquipItemSkillCondition.java +++ b/L2J_Mobius_Classic_2.7_Antharas/dist/game/data/scripts/handlers/skillconditionhandlers/OpEquipItemSkillCondition.java @@ -16,6 +16,10 @@ */ package handlers.skillconditionhandlers; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + import org.l2jmobius.gameserver.enums.SkillConditionAffectType; import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.WorldObject; @@ -28,12 +32,20 @@ import org.l2jmobius.gameserver.model.skill.Skill; */ public class OpEquipItemSkillCondition implements ISkillCondition { - private final int _itemId; + private final Set _itemIds = new HashSet<>(); private final SkillConditionAffectType _affectType; public OpEquipItemSkillCondition(StatSet params) { - _itemId = params.getInt("itemId"); + final List itemIds = params.getList("itemIds", Integer.class); + if (itemIds != null) + { + _itemIds.addAll(itemIds); + } + else + { + _itemIds.add(params.getInt("itemId")); + } _affectType = params.getEnum("affectType", SkillConditionAffectType.class); } @@ -44,15 +56,48 @@ public class OpEquipItemSkillCondition implements ISkillCondition { case CASTER: { - return caster.getInventory().isItemEquipped(_itemId); + for (int itemId : _itemIds) + { + if (caster.getInventory().isItemEquipped(itemId)) + { + return true; + } + } + break; } case TARGET: { - return (target != null) && target.isPlayer() && target.getActingPlayer().getInventory().isItemEquipped(_itemId); + if ((target != null) && target.isPlayer()) + { + for (int itemId : _itemIds) + { + if (target.getActingPlayer().getInventory().isItemEquipped(itemId)) + { + return true; + } + } + } + break; } case BOTH: { - return (target != null) && target.isPlayer() && target.getActingPlayer().getInventory().isItemEquipped(_itemId) && caster.getInventory().isItemEquipped(_itemId); + if ((target != null) && target.isPlayer()) + { + for (int itemId : _itemIds) + { + if (target.getActingPlayer().getInventory().isItemEquipped(itemId)) + { + for (int id : _itemIds) + { + if (caster.getInventory().isItemEquipped(id)) + { + return true; + } + } + } + } + } + break; } } return false; diff --git a/L2J_Mobius_Classic_2.8_SevenSigns/dist/game/data/scripts/handlers/skillconditionhandlers/OpEquipItemSkillCondition.java b/L2J_Mobius_Classic_2.8_SevenSigns/dist/game/data/scripts/handlers/skillconditionhandlers/OpEquipItemSkillCondition.java index 61abadc33c..c02555c388 100644 --- a/L2J_Mobius_Classic_2.8_SevenSigns/dist/game/data/scripts/handlers/skillconditionhandlers/OpEquipItemSkillCondition.java +++ b/L2J_Mobius_Classic_2.8_SevenSigns/dist/game/data/scripts/handlers/skillconditionhandlers/OpEquipItemSkillCondition.java @@ -16,6 +16,10 @@ */ package handlers.skillconditionhandlers; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + import org.l2jmobius.gameserver.enums.SkillConditionAffectType; import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.WorldObject; @@ -28,12 +32,20 @@ import org.l2jmobius.gameserver.model.skill.Skill; */ public class OpEquipItemSkillCondition implements ISkillCondition { - private final int _itemId; + private final Set _itemIds = new HashSet<>(); private final SkillConditionAffectType _affectType; public OpEquipItemSkillCondition(StatSet params) { - _itemId = params.getInt("itemId"); + final List itemIds = params.getList("itemIds", Integer.class); + if (itemIds != null) + { + _itemIds.addAll(itemIds); + } + else + { + _itemIds.add(params.getInt("itemId")); + } _affectType = params.getEnum("affectType", SkillConditionAffectType.class); } @@ -44,15 +56,48 @@ public class OpEquipItemSkillCondition implements ISkillCondition { case CASTER: { - return caster.getInventory().isItemEquipped(_itemId); + for (int itemId : _itemIds) + { + if (caster.getInventory().isItemEquipped(itemId)) + { + return true; + } + } + break; } case TARGET: { - return (target != null) && target.isPlayer() && target.getActingPlayer().getInventory().isItemEquipped(_itemId); + if ((target != null) && target.isPlayer()) + { + for (int itemId : _itemIds) + { + if (target.getActingPlayer().getInventory().isItemEquipped(itemId)) + { + return true; + } + } + } + break; } case BOTH: { - return (target != null) && target.isPlayer() && target.getActingPlayer().getInventory().isItemEquipped(_itemId) && caster.getInventory().isItemEquipped(_itemId); + if ((target != null) && target.isPlayer()) + { + for (int itemId : _itemIds) + { + if (target.getActingPlayer().getInventory().isItemEquipped(itemId)) + { + for (int id : _itemIds) + { + if (caster.getInventory().isItemEquipped(id)) + { + return true; + } + } + } + } + } + break; } } return false; diff --git a/L2J_Mobius_Classic_2.9.5_Saviors/dist/game/data/scripts/handlers/skillconditionhandlers/OpEquipItemSkillCondition.java b/L2J_Mobius_Classic_2.9.5_Saviors/dist/game/data/scripts/handlers/skillconditionhandlers/OpEquipItemSkillCondition.java index 61abadc33c..c02555c388 100644 --- a/L2J_Mobius_Classic_2.9.5_Saviors/dist/game/data/scripts/handlers/skillconditionhandlers/OpEquipItemSkillCondition.java +++ b/L2J_Mobius_Classic_2.9.5_Saviors/dist/game/data/scripts/handlers/skillconditionhandlers/OpEquipItemSkillCondition.java @@ -16,6 +16,10 @@ */ package handlers.skillconditionhandlers; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + import org.l2jmobius.gameserver.enums.SkillConditionAffectType; import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.WorldObject; @@ -28,12 +32,20 @@ import org.l2jmobius.gameserver.model.skill.Skill; */ public class OpEquipItemSkillCondition implements ISkillCondition { - private final int _itemId; + private final Set _itemIds = new HashSet<>(); private final SkillConditionAffectType _affectType; public OpEquipItemSkillCondition(StatSet params) { - _itemId = params.getInt("itemId"); + final List itemIds = params.getList("itemIds", Integer.class); + if (itemIds != null) + { + _itemIds.addAll(itemIds); + } + else + { + _itemIds.add(params.getInt("itemId")); + } _affectType = params.getEnum("affectType", SkillConditionAffectType.class); } @@ -44,15 +56,48 @@ public class OpEquipItemSkillCondition implements ISkillCondition { case CASTER: { - return caster.getInventory().isItemEquipped(_itemId); + for (int itemId : _itemIds) + { + if (caster.getInventory().isItemEquipped(itemId)) + { + return true; + } + } + break; } case TARGET: { - return (target != null) && target.isPlayer() && target.getActingPlayer().getInventory().isItemEquipped(_itemId); + if ((target != null) && target.isPlayer()) + { + for (int itemId : _itemIds) + { + if (target.getActingPlayer().getInventory().isItemEquipped(itemId)) + { + return true; + } + } + } + break; } case BOTH: { - return (target != null) && target.isPlayer() && target.getActingPlayer().getInventory().isItemEquipped(_itemId) && caster.getInventory().isItemEquipped(_itemId); + if ((target != null) && target.isPlayer()) + { + for (int itemId : _itemIds) + { + if (target.getActingPlayer().getInventory().isItemEquipped(itemId)) + { + for (int id : _itemIds) + { + if (caster.getInventory().isItemEquipped(id)) + { + return true; + } + } + } + } + } + break; } } return false; diff --git a/L2J_Mobius_Classic_2.9_SecretOfEmpire/dist/game/data/scripts/handlers/skillconditionhandlers/OpEquipItemSkillCondition.java b/L2J_Mobius_Classic_2.9_SecretOfEmpire/dist/game/data/scripts/handlers/skillconditionhandlers/OpEquipItemSkillCondition.java index 61abadc33c..c02555c388 100644 --- a/L2J_Mobius_Classic_2.9_SecretOfEmpire/dist/game/data/scripts/handlers/skillconditionhandlers/OpEquipItemSkillCondition.java +++ b/L2J_Mobius_Classic_2.9_SecretOfEmpire/dist/game/data/scripts/handlers/skillconditionhandlers/OpEquipItemSkillCondition.java @@ -16,6 +16,10 @@ */ package handlers.skillconditionhandlers; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + import org.l2jmobius.gameserver.enums.SkillConditionAffectType; import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.WorldObject; @@ -28,12 +32,20 @@ import org.l2jmobius.gameserver.model.skill.Skill; */ public class OpEquipItemSkillCondition implements ISkillCondition { - private final int _itemId; + private final Set _itemIds = new HashSet<>(); private final SkillConditionAffectType _affectType; public OpEquipItemSkillCondition(StatSet params) { - _itemId = params.getInt("itemId"); + final List itemIds = params.getList("itemIds", Integer.class); + if (itemIds != null) + { + _itemIds.addAll(itemIds); + } + else + { + _itemIds.add(params.getInt("itemId")); + } _affectType = params.getEnum("affectType", SkillConditionAffectType.class); } @@ -44,15 +56,48 @@ public class OpEquipItemSkillCondition implements ISkillCondition { case CASTER: { - return caster.getInventory().isItemEquipped(_itemId); + for (int itemId : _itemIds) + { + if (caster.getInventory().isItemEquipped(itemId)) + { + return true; + } + } + break; } case TARGET: { - return (target != null) && target.isPlayer() && target.getActingPlayer().getInventory().isItemEquipped(_itemId); + if ((target != null) && target.isPlayer()) + { + for (int itemId : _itemIds) + { + if (target.getActingPlayer().getInventory().isItemEquipped(itemId)) + { + return true; + } + } + } + break; } case BOTH: { - return (target != null) && target.isPlayer() && target.getActingPlayer().getInventory().isItemEquipped(_itemId) && caster.getInventory().isItemEquipped(_itemId); + if ((target != null) && target.isPlayer()) + { + for (int itemId : _itemIds) + { + if (target.getActingPlayer().getInventory().isItemEquipped(itemId)) + { + for (int id : _itemIds) + { + if (caster.getInventory().isItemEquipped(id)) + { + return true; + } + } + } + } + } + break; } } return false; diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/handlers/skillconditionhandlers/OpEquipItemSkillCondition.java b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/handlers/skillconditionhandlers/OpEquipItemSkillCondition.java index 61abadc33c..c02555c388 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/handlers/skillconditionhandlers/OpEquipItemSkillCondition.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/handlers/skillconditionhandlers/OpEquipItemSkillCondition.java @@ -16,6 +16,10 @@ */ package handlers.skillconditionhandlers; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + import org.l2jmobius.gameserver.enums.SkillConditionAffectType; import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.WorldObject; @@ -28,12 +32,20 @@ import org.l2jmobius.gameserver.model.skill.Skill; */ public class OpEquipItemSkillCondition implements ISkillCondition { - private final int _itemId; + private final Set _itemIds = new HashSet<>(); private final SkillConditionAffectType _affectType; public OpEquipItemSkillCondition(StatSet params) { - _itemId = params.getInt("itemId"); + final List itemIds = params.getList("itemIds", Integer.class); + if (itemIds != null) + { + _itemIds.addAll(itemIds); + } + else + { + _itemIds.add(params.getInt("itemId")); + } _affectType = params.getEnum("affectType", SkillConditionAffectType.class); } @@ -44,15 +56,48 @@ public class OpEquipItemSkillCondition implements ISkillCondition { case CASTER: { - return caster.getInventory().isItemEquipped(_itemId); + for (int itemId : _itemIds) + { + if (caster.getInventory().isItemEquipped(itemId)) + { + return true; + } + } + break; } case TARGET: { - return (target != null) && target.isPlayer() && target.getActingPlayer().getInventory().isItemEquipped(_itemId); + if ((target != null) && target.isPlayer()) + { + for (int itemId : _itemIds) + { + if (target.getActingPlayer().getInventory().isItemEquipped(itemId)) + { + return true; + } + } + } + break; } case BOTH: { - return (target != null) && target.isPlayer() && target.getActingPlayer().getInventory().isItemEquipped(_itemId) && caster.getInventory().isItemEquipped(_itemId); + if ((target != null) && target.isPlayer()) + { + for (int itemId : _itemIds) + { + if (target.getActingPlayer().getInventory().isItemEquipped(itemId)) + { + for (int id : _itemIds) + { + if (caster.getInventory().isItemEquipped(id)) + { + return true; + } + } + } + } + } + break; } } return false; diff --git a/L2J_Mobius_Classic_Interlude/dist/game/data/scripts/handlers/skillconditionhandlers/OpEquipItemSkillCondition.java b/L2J_Mobius_Classic_Interlude/dist/game/data/scripts/handlers/skillconditionhandlers/OpEquipItemSkillCondition.java index 61abadc33c..c02555c388 100644 --- a/L2J_Mobius_Classic_Interlude/dist/game/data/scripts/handlers/skillconditionhandlers/OpEquipItemSkillCondition.java +++ b/L2J_Mobius_Classic_Interlude/dist/game/data/scripts/handlers/skillconditionhandlers/OpEquipItemSkillCondition.java @@ -16,6 +16,10 @@ */ package handlers.skillconditionhandlers; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + import org.l2jmobius.gameserver.enums.SkillConditionAffectType; import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.WorldObject; @@ -28,12 +32,20 @@ import org.l2jmobius.gameserver.model.skill.Skill; */ public class OpEquipItemSkillCondition implements ISkillCondition { - private final int _itemId; + private final Set _itemIds = new HashSet<>(); private final SkillConditionAffectType _affectType; public OpEquipItemSkillCondition(StatSet params) { - _itemId = params.getInt("itemId"); + final List itemIds = params.getList("itemIds", Integer.class); + if (itemIds != null) + { + _itemIds.addAll(itemIds); + } + else + { + _itemIds.add(params.getInt("itemId")); + } _affectType = params.getEnum("affectType", SkillConditionAffectType.class); } @@ -44,15 +56,48 @@ public class OpEquipItemSkillCondition implements ISkillCondition { case CASTER: { - return caster.getInventory().isItemEquipped(_itemId); + for (int itemId : _itemIds) + { + if (caster.getInventory().isItemEquipped(itemId)) + { + return true; + } + } + break; } case TARGET: { - return (target != null) && target.isPlayer() && target.getActingPlayer().getInventory().isItemEquipped(_itemId); + if ((target != null) && target.isPlayer()) + { + for (int itemId : _itemIds) + { + if (target.getActingPlayer().getInventory().isItemEquipped(itemId)) + { + return true; + } + } + } + break; } case BOTH: { - return (target != null) && target.isPlayer() && target.getActingPlayer().getInventory().isItemEquipped(_itemId) && caster.getInventory().isItemEquipped(_itemId); + if ((target != null) && target.isPlayer()) + { + for (int itemId : _itemIds) + { + if (target.getActingPlayer().getInventory().isItemEquipped(itemId)) + { + for (int id : _itemIds) + { + if (caster.getInventory().isItemEquipped(id)) + { + return true; + } + } + } + } + } + break; } } return false; diff --git a/L2J_Mobius_Classic_Interlude/dist/game/data/xsd/skills.xsd b/L2J_Mobius_Classic_Interlude/dist/game/data/xsd/skills.xsd index a83a3be5f7..c6f0c09e32 100644 --- a/L2J_Mobius_Classic_Interlude/dist/game/data/xsd/skills.xsd +++ b/L2J_Mobius_Classic_Interlude/dist/game/data/xsd/skills.xsd @@ -2293,6 +2293,13 @@ + + + + + + + diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/scripts/handlers/skillconditionhandlers/OpEquipItemSkillCondition.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/scripts/handlers/skillconditionhandlers/OpEquipItemSkillCondition.java index 61abadc33c..c02555c388 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/scripts/handlers/skillconditionhandlers/OpEquipItemSkillCondition.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/scripts/handlers/skillconditionhandlers/OpEquipItemSkillCondition.java @@ -16,6 +16,10 @@ */ package handlers.skillconditionhandlers; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + import org.l2jmobius.gameserver.enums.SkillConditionAffectType; import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.WorldObject; @@ -28,12 +32,20 @@ import org.l2jmobius.gameserver.model.skill.Skill; */ public class OpEquipItemSkillCondition implements ISkillCondition { - private final int _itemId; + private final Set _itemIds = new HashSet<>(); private final SkillConditionAffectType _affectType; public OpEquipItemSkillCondition(StatSet params) { - _itemId = params.getInt("itemId"); + final List itemIds = params.getList("itemIds", Integer.class); + if (itemIds != null) + { + _itemIds.addAll(itemIds); + } + else + { + _itemIds.add(params.getInt("itemId")); + } _affectType = params.getEnum("affectType", SkillConditionAffectType.class); } @@ -44,15 +56,48 @@ public class OpEquipItemSkillCondition implements ISkillCondition { case CASTER: { - return caster.getInventory().isItemEquipped(_itemId); + for (int itemId : _itemIds) + { + if (caster.getInventory().isItemEquipped(itemId)) + { + return true; + } + } + break; } case TARGET: { - return (target != null) && target.isPlayer() && target.getActingPlayer().getInventory().isItemEquipped(_itemId); + if ((target != null) && target.isPlayer()) + { + for (int itemId : _itemIds) + { + if (target.getActingPlayer().getInventory().isItemEquipped(itemId)) + { + return true; + } + } + } + break; } case BOTH: { - return (target != null) && target.isPlayer() && target.getActingPlayer().getInventory().isItemEquipped(_itemId) && caster.getInventory().isItemEquipped(_itemId); + if ((target != null) && target.isPlayer()) + { + for (int itemId : _itemIds) + { + if (target.getActingPlayer().getInventory().isItemEquipped(itemId)) + { + for (int id : _itemIds) + { + if (caster.getInventory().isItemEquipped(id)) + { + return true; + } + } + } + } + } + break; } } return false; diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/xsd/skills.xsd b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/xsd/skills.xsd index b6a6b5f4b1..f8dbcb916a 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/xsd/skills.xsd +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/xsd/skills.xsd @@ -320,7 +320,15 @@ + + + + + + + + diff --git a/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/scripts/handlers/skillconditionhandlers/OpEquipItemSkillCondition.java b/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/scripts/handlers/skillconditionhandlers/OpEquipItemSkillCondition.java index 61abadc33c..c02555c388 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/scripts/handlers/skillconditionhandlers/OpEquipItemSkillCondition.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/scripts/handlers/skillconditionhandlers/OpEquipItemSkillCondition.java @@ -16,6 +16,10 @@ */ package handlers.skillconditionhandlers; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + import org.l2jmobius.gameserver.enums.SkillConditionAffectType; import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.WorldObject; @@ -28,12 +32,20 @@ import org.l2jmobius.gameserver.model.skill.Skill; */ public class OpEquipItemSkillCondition implements ISkillCondition { - private final int _itemId; + private final Set _itemIds = new HashSet<>(); private final SkillConditionAffectType _affectType; public OpEquipItemSkillCondition(StatSet params) { - _itemId = params.getInt("itemId"); + final List itemIds = params.getList("itemIds", Integer.class); + if (itemIds != null) + { + _itemIds.addAll(itemIds); + } + else + { + _itemIds.add(params.getInt("itemId")); + } _affectType = params.getEnum("affectType", SkillConditionAffectType.class); } @@ -44,15 +56,48 @@ public class OpEquipItemSkillCondition implements ISkillCondition { case CASTER: { - return caster.getInventory().isItemEquipped(_itemId); + for (int itemId : _itemIds) + { + if (caster.getInventory().isItemEquipped(itemId)) + { + return true; + } + } + break; } case TARGET: { - return (target != null) && target.isPlayer() && target.getActingPlayer().getInventory().isItemEquipped(_itemId); + if ((target != null) && target.isPlayer()) + { + for (int itemId : _itemIds) + { + if (target.getActingPlayer().getInventory().isItemEquipped(itemId)) + { + return true; + } + } + } + break; } case BOTH: { - return (target != null) && target.isPlayer() && target.getActingPlayer().getInventory().isItemEquipped(_itemId) && caster.getInventory().isItemEquipped(_itemId); + if ((target != null) && target.isPlayer()) + { + for (int itemId : _itemIds) + { + if (target.getActingPlayer().getInventory().isItemEquipped(itemId)) + { + for (int id : _itemIds) + { + if (caster.getInventory().isItemEquipped(id)) + { + return true; + } + } + } + } + } + break; } } return false; diff --git a/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/xsd/skills.xsd b/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/xsd/skills.xsd index 117ffaf636..2011848980 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/xsd/skills.xsd +++ b/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/xsd/skills.xsd @@ -320,7 +320,15 @@ + + + + + + + + diff --git a/L2J_Mobius_Essence_6.2_Vanguard/dist/game/data/scripts/handlers/skillconditionhandlers/OpEquipItemSkillCondition.java b/L2J_Mobius_Essence_6.2_Vanguard/dist/game/data/scripts/handlers/skillconditionhandlers/OpEquipItemSkillCondition.java index 61abadc33c..c02555c388 100644 --- a/L2J_Mobius_Essence_6.2_Vanguard/dist/game/data/scripts/handlers/skillconditionhandlers/OpEquipItemSkillCondition.java +++ b/L2J_Mobius_Essence_6.2_Vanguard/dist/game/data/scripts/handlers/skillconditionhandlers/OpEquipItemSkillCondition.java @@ -16,6 +16,10 @@ */ package handlers.skillconditionhandlers; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + import org.l2jmobius.gameserver.enums.SkillConditionAffectType; import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.WorldObject; @@ -28,12 +32,20 @@ import org.l2jmobius.gameserver.model.skill.Skill; */ public class OpEquipItemSkillCondition implements ISkillCondition { - private final int _itemId; + private final Set _itemIds = new HashSet<>(); private final SkillConditionAffectType _affectType; public OpEquipItemSkillCondition(StatSet params) { - _itemId = params.getInt("itemId"); + final List itemIds = params.getList("itemIds", Integer.class); + if (itemIds != null) + { + _itemIds.addAll(itemIds); + } + else + { + _itemIds.add(params.getInt("itemId")); + } _affectType = params.getEnum("affectType", SkillConditionAffectType.class); } @@ -44,15 +56,48 @@ public class OpEquipItemSkillCondition implements ISkillCondition { case CASTER: { - return caster.getInventory().isItemEquipped(_itemId); + for (int itemId : _itemIds) + { + if (caster.getInventory().isItemEquipped(itemId)) + { + return true; + } + } + break; } case TARGET: { - return (target != null) && target.isPlayer() && target.getActingPlayer().getInventory().isItemEquipped(_itemId); + if ((target != null) && target.isPlayer()) + { + for (int itemId : _itemIds) + { + if (target.getActingPlayer().getInventory().isItemEquipped(itemId)) + { + return true; + } + } + } + break; } case BOTH: { - return (target != null) && target.isPlayer() && target.getActingPlayer().getInventory().isItemEquipped(_itemId) && caster.getInventory().isItemEquipped(_itemId); + if ((target != null) && target.isPlayer()) + { + for (int itemId : _itemIds) + { + if (target.getActingPlayer().getInventory().isItemEquipped(itemId)) + { + for (int id : _itemIds) + { + if (caster.getInventory().isItemEquipped(id)) + { + return true; + } + } + } + } + } + break; } } return false; diff --git a/L2J_Mobius_Essence_6.2_Vanguard/dist/game/data/xsd/skills.xsd b/L2J_Mobius_Essence_6.2_Vanguard/dist/game/data/xsd/skills.xsd index 888ab29638..efe0374f70 100644 --- a/L2J_Mobius_Essence_6.2_Vanguard/dist/game/data/xsd/skills.xsd +++ b/L2J_Mobius_Essence_6.2_Vanguard/dist/game/data/xsd/skills.xsd @@ -326,7 +326,15 @@ + + + + + + + +