Support for OpEquipItem multiple item ids.

This commit is contained in:
MobiusDevelopment
2022-09-08 11:14:44 +00:00
parent c9c4e2bf94
commit 1719227825
39 changed files with 1316 additions and 127 deletions

View File

@@ -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<Integer> _itemIds = new HashSet<>();
private final SkillConditionAffectType _affectType;
public OpEquipItemSkillCondition(StatSet params)
{
_itemId = params.getInt("itemId");
final List<Integer> 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;

View File

@@ -2157,6 +2157,13 @@
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element minOccurs="0" name="itemIds">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" name="item" type="xs:unsignedInt" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element minOccurs="0" name="classIds">
<xs:complexType>
<xs:sequence>

View File

@@ -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<Integer> _itemIds = new HashSet<>();
private final SkillConditionAffectType _affectType;
public OpEquipItemSkillCondition(StatSet params)
{
_itemId = params.getInt("itemId");
final List<Integer> 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;

View File

@@ -2217,6 +2217,13 @@
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element minOccurs="0" name="itemIds">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" name="item" type="xs:unsignedInt" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element minOccurs="0" name="classIds">
<xs:complexType>
<xs:sequence>

View File

@@ -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<Integer> _itemIds = new HashSet<>();
private final SkillConditionAffectType _affectType;
public OpEquipItemSkillCondition(StatSet params)
{
_itemId = params.getInt("itemId");
final List<Integer> 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;

View File

@@ -2249,6 +2249,13 @@
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element minOccurs="0" name="itemIds">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" name="item" type="xs:unsignedInt" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element minOccurs="0" name="classIds">
<xs:complexType>
<xs:sequence>

View File

@@ -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<Integer> _itemIds = new HashSet<>();
private final SkillConditionAffectType _affectType;
public OpEquipItemSkillCondition(StatSet params)
{
_itemId = params.getInt("itemId");
final List<Integer> 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;

View File

@@ -2307,6 +2307,13 @@
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="itemIds">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" name="item" type="xs:unsignedInt" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="amount" type="xs:unsignedByte" />
<xs:element name="percentType" type="xs:string" />
<xs:element name="alignment" type="xs:string" />

View File

@@ -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<Integer> _itemIds = new HashSet<>();
private final SkillConditionAffectType _affectType;
public OpEquipItemSkillCondition(StatSet params)
{
_itemId = params.getInt("itemId");
final List<Integer> 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;

View File

@@ -2277,6 +2277,7 @@
<xs:element maxOccurs="unbounded" name="condition">
<xs:complexType>
<xs:sequence minOccurs="0">
<xs:element minOccurs="0" name="itemId" type="xs:unsignedInt" />
<xs:element minOccurs="0" name="socialClass" type="xs:byte" />
<xs:element minOccurs="0" name="type" type="xs:string" />
<xs:element minOccurs="0" name="level" type="xs:unsignedByte" />
@@ -2291,6 +2292,13 @@
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="itemIds">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" name="item" type="xs:unsignedInt" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element minOccurs="0" name="classIds">
<xs:complexType>
<xs:sequence>

View File

@@ -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<Integer> _itemIds = new HashSet<>();
private final SkillConditionAffectType _affectType;
public OpEquipItemSkillCondition(StatSet params)
{
_itemId = params.getInt("itemId");
final List<Integer> 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;

View File

@@ -2277,7 +2277,7 @@
<xs:element maxOccurs="unbounded" name="condition">
<xs:complexType>
<xs:sequence minOccurs="0">
<xs:element minOccurs="0" name="itemId" type="xs:unsignedShort" />
<xs:element minOccurs="0" name="itemId" type="xs:unsignedInt" />
<xs:element minOccurs="0" name="skillId" type="xs:unsignedShort" />
<xs:element minOccurs="0" name="hasLearned" type="xs:boolean" />
<xs:element minOccurs="0" name="socialClass" type="xs:byte" />
@@ -2294,6 +2294,13 @@
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="itemIds">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" name="item" type="xs:unsignedInt" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element minOccurs="0" name="classIds">
<xs:complexType>
<xs:sequence>

View File

@@ -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<Integer> _itemIds = new HashSet<>();
private final SkillConditionAffectType _affectType;
public OpEquipItemSkillCondition(StatSet params)
{
_itemId = params.getInt("itemId");
final List<Integer> 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;

View File

@@ -2277,7 +2277,7 @@
<xs:element maxOccurs="unbounded" name="condition">
<xs:complexType>
<xs:sequence minOccurs="0">
<xs:element minOccurs="0" name="itemId" type="xs:unsignedShort" />
<xs:element minOccurs="0" name="itemId" type="xs:unsignedInt" />
<xs:element minOccurs="0" name="skillId" type="xs:unsignedShort" />
<xs:element minOccurs="0" name="hasLearned" type="xs:boolean" />
<xs:element minOccurs="0" name="socialClass" type="xs:byte" />
@@ -2294,6 +2294,13 @@
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="itemIds">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" name="item" type="xs:unsignedInt" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element minOccurs="0" name="classIds">
<xs:complexType>
<xs:sequence>

View File

@@ -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<Integer> _itemIds = new HashSet<>();
private final SkillConditionAffectType _affectType;
public OpEquipItemSkillCondition(StatSet params)
{
_itemId = params.getInt("itemId");
final List<Integer> 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;

View File

@@ -2341,7 +2341,7 @@
<xs:element maxOccurs="unbounded" name="condition">
<xs:complexType>
<xs:sequence minOccurs="0">
<xs:element minOccurs="0" name="itemId" type="xs:unsignedShort" />
<xs:element minOccurs="0" name="itemId" type="xs:unsignedInt" />
<xs:element minOccurs="0" name="socialClass" type="xs:byte" />
<xs:element minOccurs="0" name="skillId" type="xs:unsignedShort" />
<xs:element minOccurs="0" name="hasLearned" type="xs:boolean" />
@@ -2358,6 +2358,13 @@
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="itemIds">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" name="item" type="xs:unsignedInt" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element minOccurs="0" name="classIds">
<xs:complexType>
<xs:sequence>

View File

@@ -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<Integer> _itemIds = new HashSet<>();
private final SkillConditionAffectType _affectType;
public OpEquipItemSkillCondition(StatSet params)
{
_itemId = params.getInt("itemId");
final List<Integer> 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;

View File

@@ -2386,6 +2386,13 @@
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="itemIds">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" name="item" type="xs:unsignedInt" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="amount" type="xs:unsignedByte" />
<xs:element name="percentType" type="xs:string" />
<xs:element name="alignment" type="xs:string" />
@@ -2396,7 +2403,7 @@
<xs:element name="skillLevel" type="xs:unsignedByte" />
<xs:element name="hasLearned" type="xs:boolean" />
<xs:element name="socialClass" type="xs:byte" />
<xs:element name="itemId" type="xs:unsignedShort" />
<xs:element name="itemId" type="xs:unsignedInt" />
</xs:choice>
</xs:sequence>
<xs:attribute name="name" type="xs:string" use="required" />

View File

@@ -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<Integer> _itemIds = new HashSet<>();
private final SkillConditionAffectType _affectType;
public OpEquipItemSkillCondition(StatSet params)
{
_itemId = params.getInt("itemId");
final List<Integer> 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;

View File

@@ -2400,6 +2400,13 @@
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="itemIds">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" name="item" type="xs:unsignedInt" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="amount" type="xs:unsignedByte" />
<xs:element name="percentType" type="xs:string" />
<xs:element name="alignment" type="xs:string" />
@@ -2410,7 +2417,7 @@
<xs:element name="skillLevel" type="xs:unsignedByte" />
<xs:element name="hasLearned" type="xs:boolean" />
<xs:element name="socialClass" type="xs:byte" />
<xs:element name="itemId" type="xs:unsignedShort" />
<xs:element name="itemId" type="xs:unsignedInt" />
</xs:choice>
</xs:sequence>
<xs:attribute name="name" type="xs:string" use="required" />

View File

@@ -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<Integer> _itemIds = new HashSet<>();
private final SkillConditionAffectType _affectType;
public OpEquipItemSkillCondition(StatSet params)
{
_itemId = params.getInt("itemId");
final List<Integer> 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;

View File

@@ -349,7 +349,7 @@
<xs:element minOccurs="0" name="summonPoints" type="xs:unsignedByte" />
<xs:element minOccurs="0" maxOccurs="unbounded" name="npcId" type="xs:unsignedShort" />
<xs:element minOccurs="0" name="instanceId" type="xs:unsignedByte" />
<xs:element minOccurs="0" name="itemId" type="xs:unsignedShort" />
<xs:element minOccurs="0" name="itemId" type="xs:unsignedInt />
<xs:element minOccurs="0" name="socialClass" type="xs:byte" />
<xs:element minOccurs="0" name="teleportBookmarkSlots" type="xs:unsignedByte" />
<xs:element minOccurs="0" name="classIds">
@@ -2419,6 +2419,13 @@
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="itemIds">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" name="item" type="xs:unsignedInt" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="amount" type="xs:unsignedByte" />
<xs:element name="percentType" type="xs:string" />
<xs:element name="alignment" type="xs:string" />
@@ -2429,7 +2436,7 @@
<xs:element name="skillLevel" type="xs:unsignedByte" />
<xs:element name="hasLearned" type="xs:boolean" />
<xs:element name="socialClass" type="xs:byte" />
<xs:element name="itemId" type="xs:unsignedShort" />
<xs:element name="itemId" type="xs:unsignedInt" />
</xs:choice>
</xs:sequence>
<xs:attribute name="name" type="xs:string" use="required" />

View File

@@ -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<Integer> _itemIds = new HashSet<>();
private final SkillConditionAffectType _affectType;
public OpEquipItemSkillCondition(StatSet params)
{
_itemId = params.getInt("itemId");
final List<Integer> 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;

View File

@@ -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<Integer> _itemIds = new HashSet<>();
private final SkillConditionAffectType _affectType;
public OpEquipItemSkillCondition(StatSet params)
{
_itemId = params.getInt("itemId");
final List<Integer> 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;

View File

@@ -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<Integer> _itemIds = new HashSet<>();
private final SkillConditionAffectType _affectType;
public OpEquipItemSkillCondition(StatSet params)
{
_itemId = params.getInt("itemId");
final List<Integer> 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;

View File

@@ -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<Integer> _itemIds = new HashSet<>();
private final SkillConditionAffectType _affectType;
public OpEquipItemSkillCondition(StatSet params)
{
_itemId = params.getInt("itemId");
final List<Integer> 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;

View File

@@ -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<Integer> _itemIds = new HashSet<>();
private final SkillConditionAffectType _affectType;
public OpEquipItemSkillCondition(StatSet params)
{
_itemId = params.getInt("itemId");
final List<Integer> 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;

View File

@@ -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<Integer> _itemIds = new HashSet<>();
private final SkillConditionAffectType _affectType;
public OpEquipItemSkillCondition(StatSet params)
{
_itemId = params.getInt("itemId");
final List<Integer> 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;

View File

@@ -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<Integer> _itemIds = new HashSet<>();
private final SkillConditionAffectType _affectType;
public OpEquipItemSkillCondition(StatSet params)
{
_itemId = params.getInt("itemId");
final List<Integer> 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;

View File

@@ -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<Integer> _itemIds = new HashSet<>();
private final SkillConditionAffectType _affectType;
public OpEquipItemSkillCondition(StatSet params)
{
_itemId = params.getInt("itemId");
final List<Integer> 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;

View File

@@ -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<Integer> _itemIds = new HashSet<>();
private final SkillConditionAffectType _affectType;
public OpEquipItemSkillCondition(StatSet params)
{
_itemId = params.getInt("itemId");
final List<Integer> 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;

View File

@@ -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<Integer> _itemIds = new HashSet<>();
private final SkillConditionAffectType _affectType;
public OpEquipItemSkillCondition(StatSet params)
{
_itemId = params.getInt("itemId");
final List<Integer> 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;

View File

@@ -2293,6 +2293,13 @@
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="itemIds">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" name="item" type="xs:unsignedInt" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="amount" type="xs:unsignedByte" />
<xs:element name="percentType" type="xs:string" />
<xs:element name="alignment" type="xs:string" />

View File

@@ -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<Integer> _itemIds = new HashSet<>();
private final SkillConditionAffectType _affectType;
public OpEquipItemSkillCondition(StatSet params)
{
_itemId = params.getInt("itemId");
final List<Integer> 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;

View File

@@ -320,7 +320,15 @@
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="itemIds">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" name="item" type="xs:unsignedInt" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="skillId" type="xs:unsignedShort" />
<xs:element name="skillId" type="xs:unsignedInt" />
<xs:element name="affectType" type="xs:string" />
<xs:element name="race">
<xs:complexType mixed="true">

View File

@@ -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<Integer> _itemIds = new HashSet<>();
private final SkillConditionAffectType _affectType;
public OpEquipItemSkillCondition(StatSet params)
{
_itemId = params.getInt("itemId");
final List<Integer> 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;

View File

@@ -320,7 +320,15 @@
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="itemIds">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" name="item" type="xs:unsignedInt" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="skillId" type="xs:unsignedShort" />
<xs:element name="skillId" type="xs:unsignedInt" />
<xs:element name="affectType" type="xs:string" />
<xs:element name="race">
<xs:complexType mixed="true">

View File

@@ -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<Integer> _itemIds = new HashSet<>();
private final SkillConditionAffectType _affectType;
public OpEquipItemSkillCondition(StatSet params)
{
_itemId = params.getInt("itemId");
final List<Integer> 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;

View File

@@ -326,7 +326,15 @@
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="itemIds">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" name="item" type="xs:unsignedInt" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="skillId" type="xs:unsignedShort" />
<xs:element name="skillId" type="xs:unsignedInt" />
<xs:element name="affectType" type="xs:string" />
<xs:element name="race">
<xs:complexType mixed="true">