Siege skill related additions.
Thanks to dontknowdontcare.
This commit is contained in:
		| @@ -95,7 +95,7 @@ public class SkillConditionMasterHandler | ||||
| 		SkillConditionHandler.getInstance().registerHandler("OpHaveSummon", OpHaveSummonSkillCondition::new); | ||||
| 		SkillConditionHandler.getInstance().registerHandler("OpHaveSummonedNpc", OpHaveSummonedNpcSkillCondition::new); | ||||
| 		SkillConditionHandler.getInstance().registerHandler("OpHome", OpHomeSkillCondition::new); | ||||
| 		SkillConditionHandler.getInstance().registerHandler("OpInSiegeTime", OpInSiegeTimeSkillCondition::new); | ||||
| 		SkillConditionHandler.getInstance().registerHandler("OpInSiege", OpInSiegeSkillCondition::new); | ||||
| 		SkillConditionHandler.getInstance().registerHandler("OpInstantzone", OpInstantzoneSkillCondition::new); | ||||
| 		SkillConditionHandler.getInstance().registerHandler("OpMainjob", OpMainjobSkillCondition::new); | ||||
| 		SkillConditionHandler.getInstance().registerHandler("OpNeedAgathion", OpNeedAgathionSkillCondition::new); | ||||
|   | ||||
| @@ -33,12 +33,12 @@ import org.l2jmobius.gameserver.model.skill.Skill; | ||||
|  */ | ||||
| public class OpCheckResidenceSkillCondition implements ISkillCondition | ||||
| { | ||||
| 	private final Set<Integer> _residencesId = new HashSet<>(); | ||||
| 	private final Set<Integer> _residenceIds = new HashSet<>(); | ||||
| 	private final boolean _isWithin; | ||||
| 	 | ||||
| 	public OpCheckResidenceSkillCondition(StatSet params) | ||||
| 	{ | ||||
| 		_residencesId.addAll(params.getList("residencesId", Integer.class)); | ||||
| 		_residenceIds.addAll(params.getList("residenceIds", Integer.class)); | ||||
| 		_isWithin = params.getBoolean("isWithin"); | ||||
| 	} | ||||
| 	 | ||||
| @@ -53,7 +53,7 @@ public class OpCheckResidenceSkillCondition implements ISkillCondition | ||||
| 				final ClanHall clanHall = ClanHallData.getInstance().getClanHallByClan(clan); | ||||
| 				if (clanHall != null) | ||||
| 				{ | ||||
| 					return _isWithin ? _residencesId.contains(clanHall.getResidenceId()) : !_residencesId.contains(clanHall.getResidenceId()); | ||||
| 					return _isWithin ? _residenceIds.contains(clanHall.getResidenceId()) : !_residenceIds.contains(clanHall.getResidenceId()); | ||||
| 				} | ||||
| 			} | ||||
| 		} | ||||
|   | ||||
| @@ -0,0 +1,75 @@ | ||||
| /* | ||||
|  * This file is part of the L2J Mobius project. | ||||
|  *  | ||||
|  * This program is free software: you can redistribute it and/or modify | ||||
|  * it under the terms of the GNU General Public License as published by | ||||
|  * the Free Software Foundation, either version 3 of the License, or | ||||
|  * (at your option) any later version. | ||||
|  *  | ||||
|  * This program is distributed in the hope that it will be useful, | ||||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | ||||
|  * General Public License for more details. | ||||
|  *  | ||||
|  * You should have received a copy of the GNU General Public License | ||||
|  * along with this program. If not, see <http://www.gnu.org/licenses/>. | ||||
|  */ | ||||
| package handlers.skillconditionhandlers; | ||||
|  | ||||
| import java.util.HashSet; | ||||
| import java.util.Set; | ||||
|  | ||||
| import org.l2jmobius.gameserver.instancemanager.FortSiegeManager; | ||||
| import org.l2jmobius.gameserver.instancemanager.SiegeManager; | ||||
| import org.l2jmobius.gameserver.model.StatSet; | ||||
| import org.l2jmobius.gameserver.model.WorldObject; | ||||
| import org.l2jmobius.gameserver.model.actor.Creature; | ||||
| import org.l2jmobius.gameserver.model.siege.FortSiege; | ||||
| import org.l2jmobius.gameserver.model.siege.Siege; | ||||
| import org.l2jmobius.gameserver.model.skill.ISkillCondition; | ||||
| import org.l2jmobius.gameserver.model.skill.Skill; | ||||
|  | ||||
| /** | ||||
|  * @author dontknowdontcare | ||||
|  */ | ||||
| public class OpInSiegeSkillCondition implements ISkillCondition | ||||
| { | ||||
| 	private final Set<Integer> _residenceIds = new HashSet<>(); | ||||
| 	 | ||||
| 	public OpInSiegeSkillCondition(StatSet params) | ||||
| 	{ | ||||
| 		_residenceIds.addAll(params.getList("residenceIds", Integer.class)); | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public boolean canUse(Creature caster, Skill skill, WorldObject target) | ||||
| 	{ | ||||
| 		for (int id : _residenceIds) | ||||
| 		{ | ||||
| 			if (valid(caster, id)) | ||||
| 			{ | ||||
| 				return true; | ||||
| 			} | ||||
| 		} | ||||
| 		return false; | ||||
| 	} | ||||
| 	 | ||||
| 	private boolean valid(Creature caster, int id) | ||||
| 	{ | ||||
| 		final FortSiege fortSiege = FortSiegeManager.getInstance().getSiege(id); | ||||
| 		if (fortSiege != null) | ||||
| 		{ | ||||
| 			return fortSiege.isInProgress() && fortSiege.getFort().getZone().isInsideZone(caster); | ||||
| 		} | ||||
| 		 | ||||
| 		final Siege castleSiege = SiegeManager.getInstance().getSiege(id); | ||||
| 		if (castleSiege != null) | ||||
| 		{ | ||||
| 			return castleSiege.isInProgress() && castleSiege.getCastle().getZone().isInsideZone(caster); | ||||
| 		} | ||||
| 		 | ||||
| 		// TODO: Check for clan hall siege | ||||
| 		 | ||||
| 		return false; | ||||
| 	} | ||||
| } | ||||
| @@ -1,40 +0,0 @@ | ||||
| /* | ||||
|  * This file is part of the L2J Mobius project. | ||||
|  *  | ||||
|  * This program is free software: you can redistribute it and/or modify | ||||
|  * it under the terms of the GNU General Public License as published by | ||||
|  * the Free Software Foundation, either version 3 of the License, or | ||||
|  * (at your option) any later version. | ||||
|  *  | ||||
|  * This program is distributed in the hope that it will be useful, | ||||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | ||||
|  * General Public License for more details. | ||||
|  *  | ||||
|  * You should have received a copy of the GNU General Public License | ||||
|  * along with this program. If not, see <http://www.gnu.org/licenses/>. | ||||
|  */ | ||||
| package handlers.skillconditionhandlers; | ||||
|  | ||||
| import org.l2jmobius.gameserver.model.StatSet; | ||||
| import org.l2jmobius.gameserver.model.WorldObject; | ||||
| import org.l2jmobius.gameserver.model.actor.Creature; | ||||
| import org.l2jmobius.gameserver.model.skill.ISkillCondition; | ||||
| import org.l2jmobius.gameserver.model.skill.Skill; | ||||
| import org.l2jmobius.gameserver.model.zone.ZoneId; | ||||
|  | ||||
| /** | ||||
|  * @author Mobius | ||||
|  */ | ||||
| public class OpInSiegeTimeSkillCondition implements ISkillCondition | ||||
| { | ||||
| 	public OpInSiegeTimeSkillCondition(StatSet params) | ||||
| 	{ | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public boolean canUse(Creature caster, Skill skill, WorldObject target) | ||||
| 	{ | ||||
| 		return caster.isInsideZone(ZoneId.SIEGE); | ||||
| 	} | ||||
| } | ||||
| @@ -678,7 +678,7 @@ | ||||
| 		<conditions> | ||||
| 			<condition name="CanSummonPet" /> | ||||
| 			<condition name="OpCheckResidence"> | ||||
| 				<residencesId> | ||||
| 				<residenceIds> | ||||
| 					<item>36</item> | ||||
| 					<item>37</item> | ||||
| 					<item>38</item> | ||||
| @@ -692,7 +692,7 @@ | ||||
| 					<item>55</item> | ||||
| 					<item>56</item> | ||||
| 					<item>57</item> | ||||
| 				</residencesId> | ||||
| 				</residenceIds> | ||||
| 				<isWithin>false</isWithin> | ||||
| 			</condition> | ||||
| 		</conditions> | ||||
|   | ||||
| @@ -1575,10 +1575,19 @@ | ||||
| 		<targetType>SELF</targetType> | ||||
| 		<affectScope>SINGLE</affectScope> | ||||
| 		<conditions> | ||||
| 			<condition name="OpInSiegeTime"> | ||||
| 				<time>64</time> | ||||
| 			<condition name="OpInSiege"> | ||||
| 				<residenceIds> | ||||
| 					<item>64</item> | ||||
| 				</residenceIds> | ||||
| 			</condition> | ||||
| 		</conditions> | ||||
| 		<effects> | ||||
| 			<effect name="SummonNpc"> | ||||
| 				<npcId>33767</npcId> <!-- Jacquard --> | ||||
| 				<npcCount>1</npcCount> | ||||
| 				<despawnDelay>300000</despawnDelay> | ||||
| 			</effect> | ||||
| 		</effects> | ||||
| 	</skill> | ||||
| 	<skill id="15284" toLevel="1" name="Summon Brakel"> | ||||
| 		<!-- Summons Brakel, the Herald from the Fortress of Resistance. The Clan Hall Siege for the contestable Fortress of Resistance runs between 21:00 and 22:00 on the Friday of the Castle Siege week. Brakel teleports you to the battleground, and despawns after 5 min. Cooldown is 30 min. --> | ||||
| @@ -1592,10 +1601,19 @@ | ||||
| 		<targetType>SELF</targetType> | ||||
| 		<affectScope>SINGLE</affectScope> | ||||
| 		<conditions> | ||||
| 			<condition name="OpInSiegeTime"> | ||||
| 				<time>21</time> | ||||
| 			<condition name="OpInSiege"> | ||||
| 				<residenceIds> | ||||
| 					<item>21</item> | ||||
| 				</residenceIds> | ||||
| 			</condition> | ||||
| 		</conditions> | ||||
| 		<effects> | ||||
| 			<effect name="SummonNpc"> | ||||
| 				<npcId>33769</npcId> <!-- Brakel --> | ||||
| 				<npcCount>1</npcCount> | ||||
| 				<despawnDelay>300000</despawnDelay> | ||||
| 			</effect> | ||||
| 		</effects> | ||||
| 	</skill> | ||||
| 	<skill id="15285" toLevel="1" name="Summon Loken"> | ||||
| 		<!-- Summons Loken, the Herald from Devastated Castle. The Clan Hall Siege for the contestable Devastated Castle runs between 21:00 and 22:00 on the Friday of the Castle Siege week. Loken teleports you to the battleground, and despawns after 5 min. Cooldown is 30 min. --> | ||||
| @@ -1609,10 +1627,19 @@ | ||||
| 		<targetType>SELF</targetType> | ||||
| 		<affectScope>SINGLE</affectScope> | ||||
| 		<conditions> | ||||
| 			<condition name="OpInSiegeTime"> | ||||
| 				<time>34</time> | ||||
| 			<condition name="OpInSiege"> | ||||
| 				<residenceIds> | ||||
| 					<item>34</item> | ||||
| 				</residenceIds> | ||||
| 			</condition> | ||||
| 		</conditions> | ||||
| 		<effects> | ||||
| 			<effect name="SummonNpc"> | ||||
| 				<npcId>33771</npcId> <!-- Loken --> | ||||
| 				<npcCount>1</npcCount> | ||||
| 				<despawnDelay>300000</despawnDelay> | ||||
| 			</effect> | ||||
| 		</effects> | ||||
| 	</skill> | ||||
| 	<skill id="15286" toLevel="1" name="Blood Siphon Master"> | ||||
| 		<!-- Steals a large portion of the target's HP. --> | ||||
|   | ||||
| @@ -397,7 +397,7 @@ | ||||
| 															</xs:complexType> | ||||
| 														</xs:element> | ||||
| 														<xs:element minOccurs="0" name="isFemale" type="xs:boolean" /> | ||||
| 														<xs:element minOccurs="0" name="residencesId"> | ||||
| 														<xs:element minOccurs="0" name="residenceIds"> | ||||
| 															<xs:complexType> | ||||
| 																<xs:sequence> | ||||
| 																	<xs:element maxOccurs="unbounded" name="item" type="xs:unsignedByte" /> | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 MobiusDevelopment
					MobiusDevelopment