Support for OpEquipItem multiple item ids.
This commit is contained in:
		| @@ -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; | ||||
|   | ||||
| @@ -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> | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 MobiusDevelopment
					MobiusDevelopment