Siege skill related additions.
Thanks to dontknowdontcare.
This commit is contained in:
		@@ -97,7 +97,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);
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
@@ -663,7 +663,7 @@
 | 
			
		||||
		<conditions>
 | 
			
		||||
			<condition name="CanSummonPet" />
 | 
			
		||||
			<condition name="OpCheckResidence">
 | 
			
		||||
				<residencesId>
 | 
			
		||||
				<residenceIds>
 | 
			
		||||
					<item>32</item>
 | 
			
		||||
					<item>33</item>
 | 
			
		||||
					<item>36</item>
 | 
			
		||||
@@ -679,7 +679,7 @@
 | 
			
		||||
					<item>55</item>
 | 
			
		||||
					<item>56</item>
 | 
			
		||||
					<item>57</item>
 | 
			
		||||
				</residencesId>
 | 
			
		||||
				</residenceIds>
 | 
			
		||||
				<isWithin>false</isWithin>
 | 
			
		||||
			</condition>
 | 
			
		||||
		</conditions>
 | 
			
		||||
 
 | 
			
		||||
@@ -384,7 +384,7 @@
 | 
			
		||||
															<xs:element name="range" type="xs:unsignedShort" />
 | 
			
		||||
															<xs:element name="direction" type="xs:string" />
 | 
			
		||||
															<xs:element name="transformId" type="xs:unsignedShort" />
 | 
			
		||||
															<xs:element name="residencesId">
 | 
			
		||||
															<xs:element name="residenceIds">
 | 
			
		||||
																<xs:complexType>
 | 
			
		||||
																	<xs:sequence>
 | 
			
		||||
																		<xs:element maxOccurs="unbounded" name="item" type="xs:unsignedByte" />
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user