Fixed capturing holy artefact under the shrine.

Thanks to Sahar.
This commit is contained in:
MobiusDevelopment 2019-11-07 23:34:43 +00:00
parent 7ba832c6a7
commit 6e1df8a43a
103 changed files with 391 additions and 208 deletions

View File

@ -26,7 +26,6 @@ import org.l2jmobius.gameserver.handler.IAdminCommandHandler;
import org.l2jmobius.gameserver.model.World;
import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Npc;
import org.l2jmobius.gameserver.model.actor.instance.ArtefactInstance;
import org.l2jmobius.gameserver.model.actor.instance.FishermanInstance;
import org.l2jmobius.gameserver.model.actor.instance.FlyTerrainObjectInstance;
import org.l2jmobius.gameserver.model.actor.instance.GuardInstance;
@ -70,8 +69,8 @@ public class AdminMissingHtmls implements IAdminCommandHandler
{
if (obj.isNpc() //
&& !obj.isMonster() //
&& !(obj.isArtefact()) //
&& !(obj instanceof ObservationInstance) //
&& !(obj instanceof ArtefactInstance) //
&& !(obj instanceof FlyTerrainObjectInstance) //
&& !results.contains(obj.getId()))
{
@ -105,8 +104,8 @@ public class AdminMissingHtmls implements IAdminCommandHandler
{
if (obj.isNpc() //
&& !obj.isMonster() //
&& !(obj.isArtefact()) //
&& !(obj instanceof ObservationInstance) //
&& !(obj instanceof ArtefactInstance) //
&& !(obj instanceof FlyTerrainObjectInstance) //
&& !results.contains(obj.getId()))
{
@ -138,8 +137,8 @@ public class AdminMissingHtmls implements IAdminCommandHandler
{
if (obj.isNpc() //
&& !obj.isMonster() //
&& !(obj.isArtefact()) //
&& !(obj instanceof ObservationInstance) //
&& !(obj instanceof ArtefactInstance) //
&& !(obj instanceof FlyTerrainObjectInstance))
{
final Npc npc = (Npc) obj;

View File

@ -66,7 +66,7 @@ public class PossessHolythingSkillCondition implements ISkillCondition
player.sendPacket(SystemMessageId.INVALID_TARGET);
canTakeCastle = false;
}
else if (!Util.checkIfInRange(skill.getCastRange(), player, target, true))
else if (!Util.checkIfInRange(skill.getCastRange(), player, target, true) || (Math.abs(player.getZ() - target.getZ()) > 40))
{
player.sendPacket(SystemMessageId.THE_DISTANCE_IS_TOO_FAR_AND_SO_THE_CASTING_HAS_BEEN_STOPPED);
canTakeCastle = false;

View File

@ -19,7 +19,6 @@ package handlers.targethandlers;
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.actor.instance.ArtefactInstance;
import org.l2jmobius.gameserver.model.skills.Skill;
import org.l2jmobius.gameserver.model.skills.targets.TargetType;
import org.l2jmobius.gameserver.network.SystemMessageId;
@ -39,9 +38,10 @@ public class HolyThing implements ITargetTypeHandler
@Override
public WorldObject getTarget(Creature creature, WorldObject selectedTarget, Skill skill, boolean forceUse, boolean dontMove, boolean sendMessage)
{
if (creature.getTarget() instanceof ArtefactInstance)
final WorldObject target = creature.getTarget();
if ((target != null) && target.isArtefact())
{
return creature.getTarget();
return target;
}
if (sendMessage)

View File

@ -358,7 +358,7 @@ public class GeoEngine
*/
public boolean canSeeTarget(WorldObject origin, WorldObject target)
{
if (target.isDoor() || (target.isCreature() && ((Creature) target).isFlying()))
if (target.isDoor() || target.isArtefact() || (target.isCreature() && ((Creature) target).isFlying()))
{
return true;
}

View File

@ -292,6 +292,15 @@ public abstract class WorldObject extends ListenersContainer implements IIdentif
return false;
}
/**
* Verify if object is instance of ArtefactInstance.
* @return {@code true} if object is instance of ArtefactInstance, {@code false} otherwise
*/
public boolean isArtefact()
{
return false;
}
/**
* Verify if object is instance of MonsterInstance.
* @return {@code true} if object is instance of MonsterInstance, {@code false} otherwise

View File

@ -54,9 +54,12 @@ public class ArtefactInstance extends Npc
getCastle().registerArtefact(this);
}
/**
* Return False.
*/
@Override
public boolean isArtefact()
{
return true;
}
@Override
public boolean isAutoAttackable(Creature attacker)
{

View File

@ -26,7 +26,6 @@ import org.l2jmobius.gameserver.handler.IAdminCommandHandler;
import org.l2jmobius.gameserver.model.World;
import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Npc;
import org.l2jmobius.gameserver.model.actor.instance.ArtefactInstance;
import org.l2jmobius.gameserver.model.actor.instance.FishermanInstance;
import org.l2jmobius.gameserver.model.actor.instance.FlyTerrainObjectInstance;
import org.l2jmobius.gameserver.model.actor.instance.GuardInstance;
@ -70,8 +69,8 @@ public class AdminMissingHtmls implements IAdminCommandHandler
{
if (obj.isNpc() //
&& !obj.isMonster() //
&& !(obj.isArtefact()) //
&& !(obj instanceof ObservationInstance) //
&& !(obj instanceof ArtefactInstance) //
&& !(obj instanceof FlyTerrainObjectInstance) //
&& !results.contains(obj.getId()))
{
@ -105,8 +104,8 @@ public class AdminMissingHtmls implements IAdminCommandHandler
{
if (obj.isNpc() //
&& !obj.isMonster() //
&& !(obj.isArtefact()) //
&& !(obj instanceof ObservationInstance) //
&& !(obj instanceof ArtefactInstance) //
&& !(obj instanceof FlyTerrainObjectInstance) //
&& !results.contains(obj.getId()))
{
@ -138,8 +137,8 @@ public class AdminMissingHtmls implements IAdminCommandHandler
{
if (obj.isNpc() //
&& !obj.isMonster() //
&& !(obj.isArtefact()) //
&& !(obj instanceof ObservationInstance) //
&& !(obj instanceof ArtefactInstance) //
&& !(obj instanceof FlyTerrainObjectInstance))
{
final Npc npc = (Npc) obj;

View File

@ -66,7 +66,7 @@ public class PossessHolythingSkillCondition implements ISkillCondition
player.sendPacket(SystemMessageId.INVALID_TARGET);
canTakeCastle = false;
}
else if (!Util.checkIfInRange(skill.getCastRange(), player, target, true))
else if (!Util.checkIfInRange(skill.getCastRange(), player, target, true) || (Math.abs(player.getZ() - target.getZ()) > 40))
{
player.sendPacket(SystemMessageId.THE_DISTANCE_IS_TOO_FAR_AND_SO_THE_CASTING_HAS_BEEN_STOPPED);
canTakeCastle = false;

View File

@ -19,7 +19,6 @@ package handlers.targethandlers;
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.actor.instance.ArtefactInstance;
import org.l2jmobius.gameserver.model.skills.Skill;
import org.l2jmobius.gameserver.model.skills.targets.TargetType;
import org.l2jmobius.gameserver.network.SystemMessageId;
@ -39,9 +38,10 @@ public class HolyThing implements ITargetTypeHandler
@Override
public WorldObject getTarget(Creature creature, WorldObject selectedTarget, Skill skill, boolean forceUse, boolean dontMove, boolean sendMessage)
{
if (creature.getTarget() instanceof ArtefactInstance)
final WorldObject target = creature.getTarget();
if ((target != null) && target.isArtefact())
{
return creature.getTarget();
return target;
}
if (sendMessage)

View File

@ -358,7 +358,7 @@ public class GeoEngine
*/
public boolean canSeeTarget(WorldObject origin, WorldObject target)
{
if (target.isDoor() || (target.isCreature() && ((Creature) target).isFlying()))
if (target.isDoor() || target.isArtefact() || (target.isCreature() && ((Creature) target).isFlying()))
{
return true;
}

View File

@ -292,6 +292,15 @@ public abstract class WorldObject extends ListenersContainer implements IIdentif
return false;
}
/**
* Verify if object is instance of ArtefactInstance.
* @return {@code true} if object is instance of ArtefactInstance, {@code false} otherwise
*/
public boolean isArtefact()
{
return false;
}
/**
* Verify if object is instance of MonsterInstance.
* @return {@code true} if object is instance of MonsterInstance, {@code false} otherwise

View File

@ -54,9 +54,12 @@ public class ArtefactInstance extends Npc
getCastle().registerArtefact(this);
}
/**
* Return False.
*/
@Override
public boolean isArtefact()
{
return true;
}
@Override
public boolean isAutoAttackable(Creature attacker)
{

View File

@ -26,7 +26,6 @@ import org.l2jmobius.gameserver.handler.IAdminCommandHandler;
import org.l2jmobius.gameserver.model.World;
import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Npc;
import org.l2jmobius.gameserver.model.actor.instance.ArtefactInstance;
import org.l2jmobius.gameserver.model.actor.instance.FishermanInstance;
import org.l2jmobius.gameserver.model.actor.instance.FlyTerrainObjectInstance;
import org.l2jmobius.gameserver.model.actor.instance.GuardInstance;
@ -70,8 +69,8 @@ public class AdminMissingHtmls implements IAdminCommandHandler
{
if (obj.isNpc() //
&& !obj.isMonster() //
&& !(obj.isArtefact()) //
&& !(obj instanceof ObservationInstance) //
&& !(obj instanceof ArtefactInstance) //
&& !(obj instanceof FlyTerrainObjectInstance) //
&& !results.contains(obj.getId()))
{
@ -105,8 +104,8 @@ public class AdminMissingHtmls implements IAdminCommandHandler
{
if (obj.isNpc() //
&& !obj.isMonster() //
&& !(obj.isArtefact()) //
&& !(obj instanceof ObservationInstance) //
&& !(obj instanceof ArtefactInstance) //
&& !(obj instanceof FlyTerrainObjectInstance) //
&& !results.contains(obj.getId()))
{
@ -138,8 +137,8 @@ public class AdminMissingHtmls implements IAdminCommandHandler
{
if (obj.isNpc() //
&& !obj.isMonster() //
&& !(obj.isArtefact()) //
&& !(obj instanceof ObservationInstance) //
&& !(obj instanceof ArtefactInstance) //
&& !(obj instanceof FlyTerrainObjectInstance))
{
final Npc npc = (Npc) obj;

View File

@ -66,7 +66,7 @@ public class PossessHolythingSkillCondition implements ISkillCondition
player.sendPacket(SystemMessageId.INVALID_TARGET);
canTakeCastle = false;
}
else if (!Util.checkIfInRange(skill.getCastRange(), player, target, true))
else if (!Util.checkIfInRange(skill.getCastRange(), player, target, true) || (Math.abs(player.getZ() - target.getZ()) > 40))
{
player.sendPacket(SystemMessageId.THE_DISTANCE_IS_TOO_FAR_AND_SO_THE_CASTING_HAS_BEEN_STOPPED);
canTakeCastle = false;

View File

@ -19,7 +19,6 @@ package handlers.targethandlers;
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.actor.instance.ArtefactInstance;
import org.l2jmobius.gameserver.model.skills.Skill;
import org.l2jmobius.gameserver.model.skills.targets.TargetType;
import org.l2jmobius.gameserver.network.SystemMessageId;
@ -39,9 +38,10 @@ public class HolyThing implements ITargetTypeHandler
@Override
public WorldObject getTarget(Creature creature, WorldObject selectedTarget, Skill skill, boolean forceUse, boolean dontMove, boolean sendMessage)
{
if (creature.getTarget() instanceof ArtefactInstance)
final WorldObject target = creature.getTarget();
if ((target != null) && target.isArtefact())
{
return creature.getTarget();
return target;
}
if (sendMessage)

View File

@ -358,7 +358,7 @@ public class GeoEngine
*/
public boolean canSeeTarget(WorldObject origin, WorldObject target)
{
if (target.isDoor() || (target.isCreature() && ((Creature) target).isFlying()))
if (target.isDoor() || target.isArtefact() || (target.isCreature() && ((Creature) target).isFlying()))
{
return true;
}

View File

@ -292,6 +292,15 @@ public abstract class WorldObject extends ListenersContainer implements IIdentif
return false;
}
/**
* Verify if object is instance of ArtefactInstance.
* @return {@code true} if object is instance of ArtefactInstance, {@code false} otherwise
*/
public boolean isArtefact()
{
return false;
}
/**
* Verify if object is instance of MonsterInstance.
* @return {@code true} if object is instance of MonsterInstance, {@code false} otherwise

View File

@ -54,9 +54,12 @@ public class ArtefactInstance extends Npc
getCastle().registerArtefact(this);
}
/**
* Return False.
*/
@Override
public boolean isArtefact()
{
return true;
}
@Override
public boolean isAutoAttackable(Creature attacker)
{

View File

@ -26,7 +26,6 @@ import org.l2jmobius.gameserver.handler.IAdminCommandHandler;
import org.l2jmobius.gameserver.model.World;
import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Npc;
import org.l2jmobius.gameserver.model.actor.instance.ArtefactInstance;
import org.l2jmobius.gameserver.model.actor.instance.FishermanInstance;
import org.l2jmobius.gameserver.model.actor.instance.FlyTerrainObjectInstance;
import org.l2jmobius.gameserver.model.actor.instance.GuardInstance;
@ -70,8 +69,8 @@ public class AdminMissingHtmls implements IAdminCommandHandler
{
if (obj.isNpc() //
&& !obj.isMonster() //
&& !(obj.isArtefact()) //
&& !(obj instanceof ObservationInstance) //
&& !(obj instanceof ArtefactInstance) //
&& !(obj instanceof FlyTerrainObjectInstance) //
&& !results.contains(obj.getId()))
{
@ -105,8 +104,8 @@ public class AdminMissingHtmls implements IAdminCommandHandler
{
if (obj.isNpc() //
&& !obj.isMonster() //
&& !(obj.isArtefact()) //
&& !(obj instanceof ObservationInstance) //
&& !(obj instanceof ArtefactInstance) //
&& !(obj instanceof FlyTerrainObjectInstance) //
&& !results.contains(obj.getId()))
{
@ -138,8 +137,8 @@ public class AdminMissingHtmls implements IAdminCommandHandler
{
if (obj.isNpc() //
&& !obj.isMonster() //
&& !(obj.isArtefact()) //
&& !(obj instanceof ObservationInstance) //
&& !(obj instanceof ArtefactInstance) //
&& !(obj instanceof FlyTerrainObjectInstance))
{
final Npc npc = (Npc) obj;

View File

@ -66,7 +66,7 @@ public class PossessHolythingSkillCondition implements ISkillCondition
player.sendPacket(SystemMessageId.INVALID_TARGET);
canTakeCastle = false;
}
else if (!Util.checkIfInRange(skill.getCastRange(), player, target, true))
else if (!Util.checkIfInRange(skill.getCastRange(), player, target, true) || (Math.abs(player.getZ() - target.getZ()) > 40))
{
player.sendPacket(SystemMessageId.THE_DISTANCE_IS_TOO_FAR_AND_SO_THE_CASTING_HAS_BEEN_STOPPED);
canTakeCastle = false;

View File

@ -19,7 +19,6 @@ package handlers.targethandlers;
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.actor.instance.ArtefactInstance;
import org.l2jmobius.gameserver.model.skills.Skill;
import org.l2jmobius.gameserver.model.skills.targets.TargetType;
import org.l2jmobius.gameserver.network.SystemMessageId;
@ -39,9 +38,10 @@ public class HolyThing implements ITargetTypeHandler
@Override
public WorldObject getTarget(Creature creature, WorldObject selectedTarget, Skill skill, boolean forceUse, boolean dontMove, boolean sendMessage)
{
if (creature.getTarget() instanceof ArtefactInstance)
final WorldObject target = creature.getTarget();
if ((target != null) && target.isArtefact())
{
return creature.getTarget();
return target;
}
if (sendMessage)

View File

@ -358,7 +358,7 @@ public class GeoEngine
*/
public boolean canSeeTarget(WorldObject origin, WorldObject target)
{
if (target.isDoor() || (target.isCreature() && ((Creature) target).isFlying()))
if (target.isDoor() || target.isArtefact() || (target.isCreature() && ((Creature) target).isFlying()))
{
return true;
}

View File

@ -292,6 +292,15 @@ public abstract class WorldObject extends ListenersContainer implements IIdentif
return false;
}
/**
* Verify if object is instance of ArtefactInstance.
* @return {@code true} if object is instance of ArtefactInstance, {@code false} otherwise
*/
public boolean isArtefact()
{
return false;
}
/**
* Verify if object is instance of MonsterInstance.
* @return {@code true} if object is instance of MonsterInstance, {@code false} otherwise

View File

@ -54,9 +54,12 @@ public class ArtefactInstance extends Npc
getCastle().registerArtefact(this);
}
/**
* Return False.
*/
@Override
public boolean isArtefact()
{
return true;
}
@Override
public boolean isAutoAttackable(Creature attacker)
{

View File

@ -26,7 +26,6 @@ import org.l2jmobius.gameserver.handler.IAdminCommandHandler;
import org.l2jmobius.gameserver.model.World;
import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Npc;
import org.l2jmobius.gameserver.model.actor.instance.ArtefactInstance;
import org.l2jmobius.gameserver.model.actor.instance.FishermanInstance;
import org.l2jmobius.gameserver.model.actor.instance.FlyTerrainObjectInstance;
import org.l2jmobius.gameserver.model.actor.instance.GuardInstance;
@ -70,8 +69,8 @@ public class AdminMissingHtmls implements IAdminCommandHandler
{
if (obj.isNpc() //
&& !obj.isMonster() //
&& !(obj.isArtefact()) //
&& !(obj instanceof ObservationInstance) //
&& !(obj instanceof ArtefactInstance) //
&& !(obj instanceof FlyTerrainObjectInstance) //
&& !results.contains(obj.getId()))
{
@ -105,8 +104,8 @@ public class AdminMissingHtmls implements IAdminCommandHandler
{
if (obj.isNpc() //
&& !obj.isMonster() //
&& !(obj.isArtefact()) //
&& !(obj instanceof ObservationInstance) //
&& !(obj instanceof ArtefactInstance) //
&& !(obj instanceof FlyTerrainObjectInstance) //
&& !results.contains(obj.getId()))
{
@ -138,8 +137,8 @@ public class AdminMissingHtmls implements IAdminCommandHandler
{
if (obj.isNpc() //
&& !obj.isMonster() //
&& !(obj.isArtefact()) //
&& !(obj instanceof ObservationInstance) //
&& !(obj instanceof ArtefactInstance) //
&& !(obj instanceof FlyTerrainObjectInstance))
{
final Npc npc = (Npc) obj;

View File

@ -66,7 +66,7 @@ public class PossessHolythingSkillCondition implements ISkillCondition
player.sendPacket(SystemMessageId.INVALID_TARGET);
canTakeCastle = false;
}
else if (!Util.checkIfInRange(skill.getCastRange(), player, target, true))
else if (!Util.checkIfInRange(skill.getCastRange(), player, target, true) || (Math.abs(player.getZ() - target.getZ()) > 40))
{
player.sendPacket(SystemMessageId.THE_DISTANCE_IS_TOO_FAR_AND_SO_THE_CASTING_HAS_BEEN_STOPPED);
canTakeCastle = false;

View File

@ -19,7 +19,6 @@ package handlers.targethandlers;
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.actor.instance.ArtefactInstance;
import org.l2jmobius.gameserver.model.skills.Skill;
import org.l2jmobius.gameserver.model.skills.targets.TargetType;
import org.l2jmobius.gameserver.network.SystemMessageId;
@ -39,9 +38,10 @@ public class HolyThing implements ITargetTypeHandler
@Override
public WorldObject getTarget(Creature creature, WorldObject selectedTarget, Skill skill, boolean forceUse, boolean dontMove, boolean sendMessage)
{
if (creature.getTarget() instanceof ArtefactInstance)
final WorldObject target = creature.getTarget();
if ((target != null) && target.isArtefact())
{
return creature.getTarget();
return target;
}
if (sendMessage)

View File

@ -358,7 +358,7 @@ public class GeoEngine
*/
public boolean canSeeTarget(WorldObject origin, WorldObject target)
{
if (target.isDoor() || (target.isCreature() && ((Creature) target).isFlying()))
if (target.isDoor() || target.isArtefact() || (target.isCreature() && ((Creature) target).isFlying()))
{
return true;
}

View File

@ -292,6 +292,15 @@ public abstract class WorldObject extends ListenersContainer implements IIdentif
return false;
}
/**
* Verify if object is instance of ArtefactInstance.
* @return {@code true} if object is instance of ArtefactInstance, {@code false} otherwise
*/
public boolean isArtefact()
{
return false;
}
/**
* Verify if object is instance of MonsterInstance.
* @return {@code true} if object is instance of MonsterInstance, {@code false} otherwise

View File

@ -54,9 +54,12 @@ public class ArtefactInstance extends Npc
getCastle().registerArtefact(this);
}
/**
* Return False.
*/
@Override
public boolean isArtefact()
{
return true;
}
@Override
public boolean isAutoAttackable(Creature attacker)
{

View File

@ -26,7 +26,6 @@ import org.l2jmobius.gameserver.handler.IAdminCommandHandler;
import org.l2jmobius.gameserver.model.World;
import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Npc;
import org.l2jmobius.gameserver.model.actor.instance.ArtefactInstance;
import org.l2jmobius.gameserver.model.actor.instance.FishermanInstance;
import org.l2jmobius.gameserver.model.actor.instance.FlyTerrainObjectInstance;
import org.l2jmobius.gameserver.model.actor.instance.GuardInstance;
@ -70,8 +69,8 @@ public class AdminMissingHtmls implements IAdminCommandHandler
{
if (obj.isNpc() //
&& !obj.isMonster() //
&& !(obj.isArtefact()) //
&& !(obj instanceof ObservationInstance) //
&& !(obj instanceof ArtefactInstance) //
&& !(obj instanceof FlyTerrainObjectInstance) //
&& !results.contains(obj.getId()))
{
@ -105,8 +104,8 @@ public class AdminMissingHtmls implements IAdminCommandHandler
{
if (obj.isNpc() //
&& !obj.isMonster() //
&& !(obj.isArtefact()) //
&& !(obj instanceof ObservationInstance) //
&& !(obj instanceof ArtefactInstance) //
&& !(obj instanceof FlyTerrainObjectInstance) //
&& !results.contains(obj.getId()))
{
@ -138,8 +137,8 @@ public class AdminMissingHtmls implements IAdminCommandHandler
{
if (obj.isNpc() //
&& !obj.isMonster() //
&& !(obj.isArtefact()) //
&& !(obj instanceof ObservationInstance) //
&& !(obj instanceof ArtefactInstance) //
&& !(obj instanceof FlyTerrainObjectInstance))
{
final Npc npc = (Npc) obj;

View File

@ -66,7 +66,7 @@ public class PossessHolythingSkillCondition implements ISkillCondition
player.sendPacket(SystemMessageId.INVALID_TARGET);
canTakeCastle = false;
}
else if (!Util.checkIfInRange(skill.getCastRange(), player, target, true))
else if (!Util.checkIfInRange(skill.getCastRange(), player, target, true) || (Math.abs(player.getZ() - target.getZ()) > 40))
{
player.sendPacket(SystemMessageId.THE_DISTANCE_IS_TOO_FAR_AND_SO_THE_CASTING_HAS_BEEN_STOPPED);
canTakeCastle = false;

View File

@ -19,7 +19,6 @@ package handlers.targethandlers;
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.actor.instance.ArtefactInstance;
import org.l2jmobius.gameserver.model.skills.Skill;
import org.l2jmobius.gameserver.model.skills.targets.TargetType;
import org.l2jmobius.gameserver.network.SystemMessageId;
@ -39,9 +38,10 @@ public class HolyThing implements ITargetTypeHandler
@Override
public WorldObject getTarget(Creature creature, WorldObject selectedTarget, Skill skill, boolean forceUse, boolean dontMove, boolean sendMessage)
{
if (creature.getTarget() instanceof ArtefactInstance)
final WorldObject target = creature.getTarget();
if ((target != null) && target.isArtefact())
{
return creature.getTarget();
return target;
}
if (sendMessage)

View File

@ -358,7 +358,7 @@ public class GeoEngine
*/
public boolean canSeeTarget(WorldObject origin, WorldObject target)
{
if (target.isDoor() || (target.isCreature() && ((Creature) target).isFlying()))
if (target.isDoor() || target.isArtefact() || (target.isCreature() && ((Creature) target).isFlying()))
{
return true;
}

View File

@ -292,6 +292,15 @@ public abstract class WorldObject extends ListenersContainer implements IIdentif
return false;
}
/**
* Verify if object is instance of ArtefactInstance.
* @return {@code true} if object is instance of ArtefactInstance, {@code false} otherwise
*/
public boolean isArtefact()
{
return false;
}
/**
* Verify if object is instance of MonsterInstance.
* @return {@code true} if object is instance of MonsterInstance, {@code false} otherwise

View File

@ -54,9 +54,12 @@ public class ArtefactInstance extends Npc
getCastle().registerArtefact(this);
}
/**
* Return False.
*/
@Override
public boolean isArtefact()
{
return true;
}
@Override
public boolean isAutoAttackable(Creature attacker)
{

View File

@ -26,7 +26,6 @@ import org.l2jmobius.gameserver.handler.IAdminCommandHandler;
import org.l2jmobius.gameserver.model.World;
import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Npc;
import org.l2jmobius.gameserver.model.actor.instance.ArtefactInstance;
import org.l2jmobius.gameserver.model.actor.instance.FishermanInstance;
import org.l2jmobius.gameserver.model.actor.instance.FlyTerrainObjectInstance;
import org.l2jmobius.gameserver.model.actor.instance.GuardInstance;
@ -70,8 +69,8 @@ public class AdminMissingHtmls implements IAdminCommandHandler
{
if (obj.isNpc() //
&& !obj.isMonster() //
&& !(obj.isArtefact()) //
&& !(obj instanceof ObservationInstance) //
&& !(obj instanceof ArtefactInstance) //
&& !(obj instanceof FlyTerrainObjectInstance) //
&& !results.contains(obj.getId()))
{
@ -105,8 +104,8 @@ public class AdminMissingHtmls implements IAdminCommandHandler
{
if (obj.isNpc() //
&& !obj.isMonster() //
&& !(obj.isArtefact()) //
&& !(obj instanceof ObservationInstance) //
&& !(obj instanceof ArtefactInstance) //
&& !(obj instanceof FlyTerrainObjectInstance) //
&& !results.contains(obj.getId()))
{
@ -138,8 +137,8 @@ public class AdminMissingHtmls implements IAdminCommandHandler
{
if (obj.isNpc() //
&& !obj.isMonster() //
&& !(obj.isArtefact()) //
&& !(obj instanceof ObservationInstance) //
&& !(obj instanceof ArtefactInstance) //
&& !(obj instanceof FlyTerrainObjectInstance))
{
final Npc npc = (Npc) obj;

View File

@ -66,7 +66,7 @@ public class PossessHolythingSkillCondition implements ISkillCondition
player.sendPacket(SystemMessageId.INVALID_TARGET);
canTakeCastle = false;
}
else if (!Util.checkIfInRange(skill.getCastRange(), player, target, true))
else if (!Util.checkIfInRange(skill.getCastRange(), player, target, true) || (Math.abs(player.getZ() - target.getZ()) > 40))
{
player.sendPacket(SystemMessageId.THE_DISTANCE_IS_TOO_FAR_AND_SO_THE_CASTING_HAS_BEEN_STOPPED);
canTakeCastle = false;

View File

@ -19,7 +19,6 @@ package handlers.targethandlers;
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.actor.instance.ArtefactInstance;
import org.l2jmobius.gameserver.model.skills.Skill;
import org.l2jmobius.gameserver.model.skills.targets.TargetType;
import org.l2jmobius.gameserver.network.SystemMessageId;
@ -39,9 +38,10 @@ public class HolyThing implements ITargetTypeHandler
@Override
public WorldObject getTarget(Creature creature, WorldObject selectedTarget, Skill skill, boolean forceUse, boolean dontMove, boolean sendMessage)
{
if (creature.getTarget() instanceof ArtefactInstance)
final WorldObject target = creature.getTarget();
if ((target != null) && target.isArtefact())
{
return creature.getTarget();
return target;
}
if (sendMessage)

View File

@ -358,7 +358,7 @@ public class GeoEngine
*/
public boolean canSeeTarget(WorldObject origin, WorldObject target)
{
if (target.isDoor() || (target.isCreature() && ((Creature) target).isFlying()))
if (target.isDoor() || target.isArtefact() || (target.isCreature() && ((Creature) target).isFlying()))
{
return true;
}

View File

@ -292,6 +292,15 @@ public abstract class WorldObject extends ListenersContainer implements IIdentif
return false;
}
/**
* Verify if object is instance of ArtefactInstance.
* @return {@code true} if object is instance of ArtefactInstance, {@code false} otherwise
*/
public boolean isArtefact()
{
return false;
}
/**
* Verify if object is instance of MonsterInstance.
* @return {@code true} if object is instance of MonsterInstance, {@code false} otherwise

View File

@ -54,9 +54,12 @@ public class ArtefactInstance extends Npc
getCastle().registerArtefact(this);
}
/**
* Return False.
*/
@Override
public boolean isArtefact()
{
return true;
}
@Override
public boolean isAutoAttackable(Creature attacker)
{

View File

@ -26,7 +26,6 @@ import org.l2jmobius.gameserver.handler.IAdminCommandHandler;
import org.l2jmobius.gameserver.model.World;
import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Npc;
import org.l2jmobius.gameserver.model.actor.instance.ArtefactInstance;
import org.l2jmobius.gameserver.model.actor.instance.FishermanInstance;
import org.l2jmobius.gameserver.model.actor.instance.FlyTerrainObjectInstance;
import org.l2jmobius.gameserver.model.actor.instance.GuardInstance;
@ -70,8 +69,8 @@ public class AdminMissingHtmls implements IAdminCommandHandler
{
if (obj.isNpc() //
&& !obj.isMonster() //
&& !(obj.isArtefact()) //
&& !(obj instanceof ObservationInstance) //
&& !(obj instanceof ArtefactInstance) //
&& !(obj instanceof FlyTerrainObjectInstance) //
&& !results.contains(obj.getId()))
{
@ -105,8 +104,8 @@ public class AdminMissingHtmls implements IAdminCommandHandler
{
if (obj.isNpc() //
&& !obj.isMonster() //
&& !(obj.isArtefact()) //
&& !(obj instanceof ObservationInstance) //
&& !(obj instanceof ArtefactInstance) //
&& !(obj instanceof FlyTerrainObjectInstance) //
&& !results.contains(obj.getId()))
{
@ -138,8 +137,8 @@ public class AdminMissingHtmls implements IAdminCommandHandler
{
if (obj.isNpc() //
&& !obj.isMonster() //
&& !(obj.isArtefact()) //
&& !(obj instanceof ObservationInstance) //
&& !(obj instanceof ArtefactInstance) //
&& !(obj instanceof FlyTerrainObjectInstance))
{
final Npc npc = (Npc) obj;

View File

@ -66,7 +66,7 @@ public class PossessHolythingSkillCondition implements ISkillCondition
player.sendPacket(SystemMessageId.INVALID_TARGET);
canTakeCastle = false;
}
else if (!Util.checkIfInRange(skill.getCastRange(), player, target, true))
else if (!Util.checkIfInRange(skill.getCastRange(), player, target, true) || (Math.abs(player.getZ() - target.getZ()) > 40))
{
player.sendPacket(SystemMessageId.THE_DISTANCE_IS_TOO_FAR_AND_SO_THE_CASTING_HAS_BEEN_STOPPED);
canTakeCastle = false;

View File

@ -19,7 +19,6 @@ package handlers.targethandlers;
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.actor.instance.ArtefactInstance;
import org.l2jmobius.gameserver.model.skills.Skill;
import org.l2jmobius.gameserver.model.skills.targets.TargetType;
import org.l2jmobius.gameserver.network.SystemMessageId;
@ -39,9 +38,10 @@ public class HolyThing implements ITargetTypeHandler
@Override
public WorldObject getTarget(Creature creature, WorldObject selectedTarget, Skill skill, boolean forceUse, boolean dontMove, boolean sendMessage)
{
if (creature.getTarget() instanceof ArtefactInstance)
final WorldObject target = creature.getTarget();
if ((target != null) && target.isArtefact())
{
return creature.getTarget();
return target;
}
if (sendMessage)

View File

@ -358,7 +358,7 @@ public class GeoEngine
*/
public boolean canSeeTarget(WorldObject origin, WorldObject target)
{
if (target.isDoor() || (target.isCreature() && ((Creature) target).isFlying()))
if (target.isDoor() || target.isArtefact() || (target.isCreature() && ((Creature) target).isFlying()))
{
return true;
}

View File

@ -292,6 +292,15 @@ public abstract class WorldObject extends ListenersContainer implements IIdentif
return false;
}
/**
* Verify if object is instance of ArtefactInstance.
* @return {@code true} if object is instance of ArtefactInstance, {@code false} otherwise
*/
public boolean isArtefact()
{
return false;
}
/**
* Verify if object is instance of MonsterInstance.
* @return {@code true} if object is instance of MonsterInstance, {@code false} otherwise

View File

@ -54,9 +54,12 @@ public class ArtefactInstance extends Npc
getCastle().registerArtefact(this);
}
/**
* Return False.
*/
@Override
public boolean isArtefact()
{
return true;
}
@Override
public boolean isAutoAttackable(Creature attacker)
{

View File

@ -356,7 +356,7 @@ public class GeoEngine
*/
public boolean canSeeTarget(WorldObject origin, WorldObject target)
{
if (target.isDoor())
if (target.isDoor() || target.isArtefact())
{
return true;
}

View File

@ -134,7 +134,7 @@ public class TakeCastle implements ISkillHandler
{
sm.addString("You must be on castle ground to use this skill");
}
else if ((player.getTarget() == null) || !(player.getTarget() instanceof ArtefactInstance))
else if ((player.getTarget() == null) || !player.getTarget().isArtefact())
{
sm.addString("You can only use this skill on an artifact");
}
@ -142,7 +142,7 @@ public class TakeCastle implements ISkillHandler
{
sm.addString("You can only use this skill during a siege.");
}
else if (!Util.checkIfInRange(200, player, player.getTarget(), true))
else if (!Util.checkIfInRange(200, player, player.getTarget(), true) || (Math.abs(player.getZ() - player.getTarget().getZ()) > 40))
{
sm.addString("You are not in range of the artifact.");
}
@ -186,7 +186,7 @@ public class TakeCastle implements ISkillHandler
{
sm.addString("You must be on fort ground to use this skill");
}
else if ((player.getTarget() == null) && !(player.getTarget() instanceof ArtefactInstance))
else if ((player.getTarget() == null) && !player.getTarget().isArtefact())
{
sm.addString("You can only use this skill on an flagpole");
}

View File

@ -47,10 +47,12 @@ public class ArtefactInstance extends NpcInstance
super(objectId, template);
}
/**
* Return False.<BR>
* <BR>
*/
@Override
public boolean isArtefact()
{
return true;
}
@Override
public boolean isAutoAttackable(Creature attacker)
{
@ -122,10 +124,4 @@ public class ArtefactInstance extends NpcInstance
{
player.sendPacket(ActionFailed.STATIC_PACKET);
}
@Override
public boolean isArtefact()
{
return true;
}
}

View File

@ -19,7 +19,6 @@ package handlers.targethandlers;
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.actor.instance.ArtefactInstance;
import org.l2jmobius.gameserver.model.skills.Skill;
import org.l2jmobius.gameserver.model.skills.targets.TargetType;
@ -31,7 +30,7 @@ public class Holy implements ITargetTypeHandler
@Override
public WorldObject[] getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
{
if (!(target instanceof ArtefactInstance))
if ((target == null) || !target.isArtefact())
{
return EMPTY_TARGET_LIST;
}

View File

@ -356,7 +356,7 @@ public class GeoEngine
*/
public boolean canSeeTarget(WorldObject origin, WorldObject target)
{
if (target.isDoor() || (target.isCreature() && ((Creature) target).isFlying()))
if (target.isDoor() || target.isArtefact() || (target.isCreature() && ((Creature) target).isFlying()))
{
return true;
}

View File

@ -294,6 +294,15 @@ public abstract class WorldObject extends ListenersContainer implements IIdentif
return false;
}
/**
* Verify if object is instance of ArtefactInstance.
* @return {@code true} if object is instance of ArtefactInstance, {@code false} otherwise
*/
public boolean isArtefact()
{
return false;
}
/**
* Verify if object is instance of MonsterInstance.
* @return {@code true} if object is instance of MonsterInstance, {@code false} otherwise

View File

@ -42,9 +42,12 @@ public class ArtefactInstance extends Npc
getCastle().registerArtefact(this);
}
/**
* Return False.
*/
@Override
public boolean isArtefact()
{
return true;
}
@Override
public boolean isAutoAttackable(Creature attacker)
{

View File

@ -61,7 +61,7 @@ public class ConditionPlayerCanTakeCastle extends Condition
player.sendPacket(SystemMessageId.INVALID_TARGET);
return false;
}
else if (!Util.checkIfInRange(skill.getCastRange(), player, effected, true))
else if (!Util.checkIfInRange(skill.getCastRange(), player, effected, true) || (Math.abs(player.getZ() - effected.getZ()) > 40))
{
player.sendPacket(SystemMessageId.THE_DISTANCE_IS_TOO_FAR_AND_SO_THE_CASTING_HAS_BEEN_STOPPED);
return false;

View File

@ -19,7 +19,6 @@ package handlers.targethandlers;
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.actor.instance.ArtefactInstance;
import org.l2jmobius.gameserver.model.skills.Skill;
import org.l2jmobius.gameserver.model.skills.targets.TargetType;
@ -31,7 +30,7 @@ public class Holy implements ITargetTypeHandler
@Override
public WorldObject[] getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
{
if (!(target instanceof ArtefactInstance))
if ((target == null) || !target.isArtefact())
{
return EMPTY_TARGET_LIST;
}

View File

@ -356,7 +356,7 @@ public class GeoEngine
*/
public boolean canSeeTarget(WorldObject origin, WorldObject target)
{
if (target.isDoor() || (target.isCreature() && ((Creature) target).isFlying()))
if (target.isDoor() || target.isArtefact() || (target.isCreature() && ((Creature) target).isFlying()))
{
return true;
}

View File

@ -294,6 +294,15 @@ public abstract class WorldObject extends ListenersContainer implements IIdentif
return false;
}
/**
* Verify if object is instance of ArtefactInstance.
* @return {@code true} if object is instance of ArtefactInstance, {@code false} otherwise
*/
public boolean isArtefact()
{
return false;
}
/**
* Verify if object is instance of MonsterInstance.
* @return {@code true} if object is instance of MonsterInstance, {@code false} otherwise

View File

@ -42,9 +42,12 @@ public class ArtefactInstance extends Npc
getCastle().registerArtefact(this);
}
/**
* Return False.
*/
@Override
public boolean isArtefact()
{
return true;
}
@Override
public boolean isAutoAttackable(Creature attacker)
{

View File

@ -61,7 +61,7 @@ public class ConditionPlayerCanTakeCastle extends Condition
player.sendPacket(SystemMessageId.INVALID_TARGET);
return false;
}
else if (!Util.checkIfInRange(skill.getCastRange(), player, effected, true))
else if (!Util.checkIfInRange(skill.getCastRange(), player, effected, true) || (Math.abs(player.getZ() - effected.getZ()) > 40))
{
player.sendPacket(SystemMessageId.THE_DISTANCE_IS_TOO_FAR_AND_SO_THE_CASTING_HAS_BEEN_STOPPED);
return false;

View File

@ -26,7 +26,6 @@ import org.l2jmobius.gameserver.handler.IAdminCommandHandler;
import org.l2jmobius.gameserver.model.World;
import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Npc;
import org.l2jmobius.gameserver.model.actor.instance.ArtefactInstance;
import org.l2jmobius.gameserver.model.actor.instance.FishermanInstance;
import org.l2jmobius.gameserver.model.actor.instance.FlyTerrainObjectInstance;
import org.l2jmobius.gameserver.model.actor.instance.GuardInstance;
@ -70,8 +69,8 @@ public class AdminMissingHtmls implements IAdminCommandHandler
{
if (obj.isNpc() //
&& !obj.isMonster() //
&& !(obj.isArtefact()) //
&& !(obj instanceof ObservationInstance) //
&& !(obj instanceof ArtefactInstance) //
&& !(obj instanceof FlyTerrainObjectInstance) //
&& !results.contains(obj.getId()))
{
@ -105,8 +104,8 @@ public class AdminMissingHtmls implements IAdminCommandHandler
{
if (obj.isNpc() //
&& !obj.isMonster() //
&& !(obj.isArtefact()) //
&& !(obj instanceof ObservationInstance) //
&& !(obj instanceof ArtefactInstance) //
&& !(obj instanceof FlyTerrainObjectInstance) //
&& !results.contains(obj.getId()))
{
@ -138,8 +137,8 @@ public class AdminMissingHtmls implements IAdminCommandHandler
{
if (obj.isNpc() //
&& !obj.isMonster() //
&& !(obj.isArtefact()) //
&& !(obj instanceof ObservationInstance) //
&& !(obj instanceof ArtefactInstance) //
&& !(obj instanceof FlyTerrainObjectInstance))
{
final Npc npc = (Npc) obj;

View File

@ -66,7 +66,7 @@ public class PossessHolythingSkillCondition implements ISkillCondition
player.sendPacket(SystemMessageId.INVALID_TARGET);
canTakeCastle = false;
}
else if (!Util.checkIfInRange(skill.getCastRange(), player, target, true))
else if (!Util.checkIfInRange(skill.getCastRange(), player, target, true) || (Math.abs(player.getZ() - target.getZ()) > 40))
{
player.sendPacket(SystemMessageId.THE_DISTANCE_IS_TOO_FAR_AND_SO_THE_CASTING_HAS_BEEN_CANCELLED);
canTakeCastle = false;

View File

@ -19,7 +19,6 @@ package handlers.targethandlers;
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.actor.instance.ArtefactInstance;
import org.l2jmobius.gameserver.model.skills.Skill;
import org.l2jmobius.gameserver.model.skills.targets.TargetType;
import org.l2jmobius.gameserver.network.SystemMessageId;
@ -39,9 +38,10 @@ public class HolyThing implements ITargetTypeHandler
@Override
public WorldObject getTarget(Creature creature, WorldObject selectedTarget, Skill skill, boolean forceUse, boolean dontMove, boolean sendMessage)
{
if (creature.getTarget() instanceof ArtefactInstance)
final WorldObject target = creature.getTarget();
if ((target != null) && target.isArtefact())
{
return creature.getTarget();
return target;
}
if (sendMessage)

View File

@ -358,7 +358,7 @@ public class GeoEngine
*/
public boolean canSeeTarget(WorldObject origin, WorldObject target)
{
if (target.isDoor() || (target.isCreature() && ((Creature) target).isFlying()))
if (target.isDoor() || target.isArtefact() || (target.isCreature() && ((Creature) target).isFlying()))
{
return true;
}

View File

@ -292,6 +292,15 @@ public abstract class WorldObject extends ListenersContainer implements IIdentif
return false;
}
/**
* Verify if object is instance of ArtefactInstance.
* @return {@code true} if object is instance of ArtefactInstance, {@code false} otherwise
*/
public boolean isArtefact()
{
return false;
}
/**
* Verify if object is instance of MonsterInstance.
* @return {@code true} if object is instance of MonsterInstance, {@code false} otherwise

View File

@ -54,9 +54,12 @@ public class ArtefactInstance extends Npc
getCastle().registerArtefact(this);
}
/**
* Return False.
*/
@Override
public boolean isArtefact()
{
return true;
}
@Override
public boolean isAutoAttackable(Creature attacker)
{

View File

@ -26,7 +26,6 @@ import org.l2jmobius.gameserver.handler.IAdminCommandHandler;
import org.l2jmobius.gameserver.model.World;
import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Npc;
import org.l2jmobius.gameserver.model.actor.instance.ArtefactInstance;
import org.l2jmobius.gameserver.model.actor.instance.FishermanInstance;
import org.l2jmobius.gameserver.model.actor.instance.FlyTerrainObjectInstance;
import org.l2jmobius.gameserver.model.actor.instance.GuardInstance;
@ -70,8 +69,8 @@ public class AdminMissingHtmls implements IAdminCommandHandler
{
if (obj.isNpc() //
&& !obj.isMonster() //
&& !(obj.isArtefact()) //
&& !(obj instanceof ObservationInstance) //
&& !(obj instanceof ArtefactInstance) //
&& !(obj instanceof FlyTerrainObjectInstance) //
&& !results.contains(obj.getId()))
{
@ -105,8 +104,8 @@ public class AdminMissingHtmls implements IAdminCommandHandler
{
if (obj.isNpc() //
&& !obj.isMonster() //
&& !(obj.isArtefact()) //
&& !(obj instanceof ObservationInstance) //
&& !(obj instanceof ArtefactInstance) //
&& !(obj instanceof FlyTerrainObjectInstance) //
&& !results.contains(obj.getId()))
{
@ -138,8 +137,8 @@ public class AdminMissingHtmls implements IAdminCommandHandler
{
if (obj.isNpc() //
&& !obj.isMonster() //
&& !(obj.isArtefact()) //
&& !(obj instanceof ObservationInstance) //
&& !(obj instanceof ArtefactInstance) //
&& !(obj instanceof FlyTerrainObjectInstance))
{
final Npc npc = (Npc) obj;

View File

@ -66,7 +66,7 @@ public class PossessHolythingSkillCondition implements ISkillCondition
player.sendPacket(SystemMessageId.INVALID_TARGET);
canTakeCastle = false;
}
else if (!Util.checkIfInRange(skill.getCastRange(), player, target, true))
else if (!Util.checkIfInRange(skill.getCastRange(), player, target, true) || (Math.abs(player.getZ() - target.getZ()) > 40))
{
player.sendPacket(SystemMessageId.THE_DISTANCE_IS_TOO_FAR_AND_SO_THE_CASTING_HAS_BEEN_CANCELLED);
canTakeCastle = false;

View File

@ -19,7 +19,6 @@ package handlers.targethandlers;
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.actor.instance.ArtefactInstance;
import org.l2jmobius.gameserver.model.skills.Skill;
import org.l2jmobius.gameserver.model.skills.targets.TargetType;
import org.l2jmobius.gameserver.network.SystemMessageId;
@ -39,9 +38,10 @@ public class HolyThing implements ITargetTypeHandler
@Override
public WorldObject getTarget(Creature creature, WorldObject selectedTarget, Skill skill, boolean forceUse, boolean dontMove, boolean sendMessage)
{
if (creature.getTarget() instanceof ArtefactInstance)
final WorldObject target = creature.getTarget();
if ((target != null) && target.isArtefact())
{
return creature.getTarget();
return target;
}
if (sendMessage)

View File

@ -358,7 +358,7 @@ public class GeoEngine
*/
public boolean canSeeTarget(WorldObject origin, WorldObject target)
{
if (target.isDoor() || (target.isCreature() && ((Creature) target).isFlying()))
if (target.isDoor() || target.isArtefact() || (target.isCreature() && ((Creature) target).isFlying()))
{
return true;
}

View File

@ -292,6 +292,15 @@ public abstract class WorldObject extends ListenersContainer implements IIdentif
return false;
}
/**
* Verify if object is instance of ArtefactInstance.
* @return {@code true} if object is instance of ArtefactInstance, {@code false} otherwise
*/
public boolean isArtefact()
{
return false;
}
/**
* Verify if object is instance of MonsterInstance.
* @return {@code true} if object is instance of MonsterInstance, {@code false} otherwise

View File

@ -54,9 +54,12 @@ public class ArtefactInstance extends Npc
getCastle().registerArtefact(this);
}
/**
* Return False.
*/
@Override
public boolean isArtefact()
{
return true;
}
@Override
public boolean isAutoAttackable(Creature attacker)
{

View File

@ -26,7 +26,6 @@ import org.l2jmobius.gameserver.handler.IAdminCommandHandler;
import org.l2jmobius.gameserver.model.World;
import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Npc;
import org.l2jmobius.gameserver.model.actor.instance.ArtefactInstance;
import org.l2jmobius.gameserver.model.actor.instance.FishermanInstance;
import org.l2jmobius.gameserver.model.actor.instance.FlyTerrainObjectInstance;
import org.l2jmobius.gameserver.model.actor.instance.GuardInstance;
@ -70,8 +69,8 @@ public class AdminMissingHtmls implements IAdminCommandHandler
{
if (obj.isNpc() //
&& !obj.isMonster() //
&& !(obj.isArtefact()) //
&& !(obj instanceof ObservationInstance) //
&& !(obj instanceof ArtefactInstance) //
&& !(obj instanceof FlyTerrainObjectInstance) //
&& !results.contains(obj.getId()))
{
@ -105,8 +104,8 @@ public class AdminMissingHtmls implements IAdminCommandHandler
{
if (obj.isNpc() //
&& !obj.isMonster() //
&& !(obj.isArtefact()) //
&& !(obj instanceof ObservationInstance) //
&& !(obj instanceof ArtefactInstance) //
&& !(obj instanceof FlyTerrainObjectInstance) //
&& !results.contains(obj.getId()))
{
@ -138,8 +137,8 @@ public class AdminMissingHtmls implements IAdminCommandHandler
{
if (obj.isNpc() //
&& !obj.isMonster() //
&& !(obj.isArtefact()) //
&& !(obj instanceof ObservationInstance) //
&& !(obj instanceof ArtefactInstance) //
&& !(obj instanceof FlyTerrainObjectInstance))
{
final Npc npc = (Npc) obj;

View File

@ -66,7 +66,7 @@ public class PossessHolythingSkillCondition implements ISkillCondition
player.sendPacket(SystemMessageId.INVALID_TARGET);
canTakeCastle = false;
}
else if (!Util.checkIfInRange(skill.getCastRange(), player, target, true))
else if (!Util.checkIfInRange(skill.getCastRange(), player, target, true) || (Math.abs(player.getZ() - target.getZ()) > 40))
{
player.sendPacket(SystemMessageId.THE_DISTANCE_IS_TOO_FAR_AND_SO_THE_CASTING_HAS_BEEN_CANCELLED);
canTakeCastle = false;

View File

@ -19,7 +19,6 @@ package handlers.targethandlers;
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.actor.instance.ArtefactInstance;
import org.l2jmobius.gameserver.model.skills.Skill;
import org.l2jmobius.gameserver.model.skills.targets.TargetType;
import org.l2jmobius.gameserver.network.SystemMessageId;
@ -39,9 +38,10 @@ public class HolyThing implements ITargetTypeHandler
@Override
public WorldObject getTarget(Creature creature, WorldObject selectedTarget, Skill skill, boolean forceUse, boolean dontMove, boolean sendMessage)
{
if (creature.getTarget() instanceof ArtefactInstance)
final WorldObject target = creature.getTarget();
if ((target != null) && target.isArtefact())
{
return creature.getTarget();
return target;
}
if (sendMessage)

View File

@ -358,7 +358,7 @@ public class GeoEngine
*/
public boolean canSeeTarget(WorldObject origin, WorldObject target)
{
if (target.isDoor() || (target.isCreature() && ((Creature) target).isFlying()))
if (target.isDoor() || target.isArtefact() || (target.isCreature() && ((Creature) target).isFlying()))
{
return true;
}

View File

@ -292,6 +292,15 @@ public abstract class WorldObject extends ListenersContainer implements IIdentif
return false;
}
/**
* Verify if object is instance of ArtefactInstance.
* @return {@code true} if object is instance of ArtefactInstance, {@code false} otherwise
*/
public boolean isArtefact()
{
return false;
}
/**
* Verify if object is instance of MonsterInstance.
* @return {@code true} if object is instance of MonsterInstance, {@code false} otherwise

View File

@ -54,9 +54,12 @@ public class ArtefactInstance extends Npc
getCastle().registerArtefact(this);
}
/**
* Return False.
*/
@Override
public boolean isArtefact()
{
return true;
}
@Override
public boolean isAutoAttackable(Creature attacker)
{

View File

@ -26,7 +26,6 @@ import org.l2jmobius.gameserver.handler.IAdminCommandHandler;
import org.l2jmobius.gameserver.model.World;
import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Npc;
import org.l2jmobius.gameserver.model.actor.instance.ArtefactInstance;
import org.l2jmobius.gameserver.model.actor.instance.FishermanInstance;
import org.l2jmobius.gameserver.model.actor.instance.FlyTerrainObjectInstance;
import org.l2jmobius.gameserver.model.actor.instance.GuardInstance;
@ -70,8 +69,8 @@ public class AdminMissingHtmls implements IAdminCommandHandler
{
if (obj.isNpc() //
&& !obj.isMonster() //
&& !(obj.isArtefact()) //
&& !(obj instanceof ObservationInstance) //
&& !(obj instanceof ArtefactInstance) //
&& !(obj instanceof FlyTerrainObjectInstance) //
&& !results.contains(obj.getId()))
{
@ -105,8 +104,8 @@ public class AdminMissingHtmls implements IAdminCommandHandler
{
if (obj.isNpc() //
&& !obj.isMonster() //
&& !(obj.isArtefact()) //
&& !(obj instanceof ObservationInstance) //
&& !(obj instanceof ArtefactInstance) //
&& !(obj instanceof FlyTerrainObjectInstance) //
&& !results.contains(obj.getId()))
{
@ -138,8 +137,8 @@ public class AdminMissingHtmls implements IAdminCommandHandler
{
if (obj.isNpc() //
&& !obj.isMonster() //
&& !(obj.isArtefact()) //
&& !(obj instanceof ObservationInstance) //
&& !(obj instanceof ArtefactInstance) //
&& !(obj instanceof FlyTerrainObjectInstance))
{
final Npc npc = (Npc) obj;

View File

@ -66,7 +66,7 @@ public class PossessHolythingSkillCondition implements ISkillCondition
player.sendPacket(SystemMessageId.INVALID_TARGET);
canTakeCastle = false;
}
else if (!Util.checkIfInRange(skill.getCastRange(), player, target, true))
else if (!Util.checkIfInRange(skill.getCastRange(), player, target, true) || (Math.abs(player.getZ() - target.getZ()) > 40))
{
player.sendPacket(SystemMessageId.THE_DISTANCE_IS_TOO_FAR_AND_SO_THE_CASTING_HAS_BEEN_CANCELLED);
canTakeCastle = false;

View File

@ -19,7 +19,6 @@ package handlers.targethandlers;
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.actor.instance.ArtefactInstance;
import org.l2jmobius.gameserver.model.skills.Skill;
import org.l2jmobius.gameserver.model.skills.targets.TargetType;
import org.l2jmobius.gameserver.network.SystemMessageId;
@ -39,9 +38,10 @@ public class HolyThing implements ITargetTypeHandler
@Override
public WorldObject getTarget(Creature creature, WorldObject selectedTarget, Skill skill, boolean forceUse, boolean dontMove, boolean sendMessage)
{
if (creature.getTarget() instanceof ArtefactInstance)
final WorldObject target = creature.getTarget();
if ((target != null) && target.isArtefact())
{
return creature.getTarget();
return target;
}
if (sendMessage)

View File

@ -358,7 +358,7 @@ public class GeoEngine
*/
public boolean canSeeTarget(WorldObject origin, WorldObject target)
{
if (target.isDoor() || (target.isCreature() && ((Creature) target).isFlying()))
if (target.isDoor() || target.isArtefact() || (target.isCreature() && ((Creature) target).isFlying()))
{
return true;
}

View File

@ -292,6 +292,15 @@ public abstract class WorldObject extends ListenersContainer implements IIdentif
return false;
}
/**
* Verify if object is instance of ArtefactInstance.
* @return {@code true} if object is instance of ArtefactInstance, {@code false} otherwise
*/
public boolean isArtefact()
{
return false;
}
/**
* Verify if object is instance of MonsterInstance.
* @return {@code true} if object is instance of MonsterInstance, {@code false} otherwise

View File

@ -54,9 +54,12 @@ public class ArtefactInstance extends Npc
getCastle().registerArtefact(this);
}
/**
* Return False.
*/
@Override
public boolean isArtefact()
{
return true;
}
@Override
public boolean isAutoAttackable(Creature attacker)
{

View File

@ -26,7 +26,6 @@ import org.l2jmobius.gameserver.handler.IAdminCommandHandler;
import org.l2jmobius.gameserver.model.World;
import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Npc;
import org.l2jmobius.gameserver.model.actor.instance.ArtefactInstance;
import org.l2jmobius.gameserver.model.actor.instance.FishermanInstance;
import org.l2jmobius.gameserver.model.actor.instance.FlyTerrainObjectInstance;
import org.l2jmobius.gameserver.model.actor.instance.GuardInstance;
@ -70,8 +69,8 @@ public class AdminMissingHtmls implements IAdminCommandHandler
{
if (obj.isNpc() //
&& !obj.isMonster() //
&& !(obj.isArtefact()) //
&& !(obj instanceof ObservationInstance) //
&& !(obj instanceof ArtefactInstance) //
&& !(obj instanceof FlyTerrainObjectInstance) //
&& !results.contains(obj.getId()))
{
@ -105,8 +104,8 @@ public class AdminMissingHtmls implements IAdminCommandHandler
{
if (obj.isNpc() //
&& !obj.isMonster() //
&& !(obj.isArtefact()) //
&& !(obj instanceof ObservationInstance) //
&& !(obj instanceof ArtefactInstance) //
&& !(obj instanceof FlyTerrainObjectInstance) //
&& !results.contains(obj.getId()))
{
@ -138,8 +137,8 @@ public class AdminMissingHtmls implements IAdminCommandHandler
{
if (obj.isNpc() //
&& !obj.isMonster() //
&& !(obj.isArtefact()) //
&& !(obj instanceof ObservationInstance) //
&& !(obj instanceof ArtefactInstance) //
&& !(obj instanceof FlyTerrainObjectInstance))
{
final Npc npc = (Npc) obj;

View File

@ -66,7 +66,7 @@ public class PossessHolythingSkillCondition implements ISkillCondition
player.sendPacket(SystemMessageId.INVALID_TARGET);
canTakeCastle = false;
}
else if (!Util.checkIfInRange(skill.getCastRange(), player, target, true))
else if (!Util.checkIfInRange(skill.getCastRange(), player, target, true) || (Math.abs(player.getZ() - target.getZ()) > 40))
{
player.sendPacket(SystemMessageId.THE_DISTANCE_IS_TOO_FAR_AND_SO_THE_CASTING_HAS_BEEN_CANCELLED);
canTakeCastle = false;

View File

@ -19,7 +19,6 @@ package handlers.targethandlers;
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.actor.instance.ArtefactInstance;
import org.l2jmobius.gameserver.model.skills.Skill;
import org.l2jmobius.gameserver.model.skills.targets.TargetType;
import org.l2jmobius.gameserver.network.SystemMessageId;
@ -39,9 +38,10 @@ public class HolyThing implements ITargetTypeHandler
@Override
public WorldObject getTarget(Creature creature, WorldObject selectedTarget, Skill skill, boolean forceUse, boolean dontMove, boolean sendMessage)
{
if (creature.getTarget() instanceof ArtefactInstance)
final WorldObject target = creature.getTarget();
if ((target != null) && target.isArtefact())
{
return creature.getTarget();
return target;
}
if (sendMessage)

View File

@ -358,7 +358,7 @@ public class GeoEngine
*/
public boolean canSeeTarget(WorldObject origin, WorldObject target)
{
if (target.isDoor() || (target.isCreature() && ((Creature) target).isFlying()))
if (target.isDoor() || target.isArtefact() || (target.isCreature() && ((Creature) target).isFlying()))
{
return true;
}

View File

@ -292,6 +292,15 @@ public abstract class WorldObject extends ListenersContainer implements IIdentif
return false;
}
/**
* Verify if object is instance of ArtefactInstance.
* @return {@code true} if object is instance of ArtefactInstance, {@code false} otherwise
*/
public boolean isArtefact()
{
return false;
}
/**
* Verify if object is instance of MonsterInstance.
* @return {@code true} if object is instance of MonsterInstance, {@code false} otherwise

View File

@ -54,9 +54,12 @@ public class ArtefactInstance extends Npc
getCastle().registerArtefact(this);
}
/**
* Return False.
*/
@Override
public boolean isArtefact()
{
return true;
}
@Override
public boolean isAutoAttackable(Creature attacker)
{

View File

@ -26,7 +26,6 @@ import org.l2jmobius.gameserver.handler.IAdminCommandHandler;
import org.l2jmobius.gameserver.model.World;
import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Npc;
import org.l2jmobius.gameserver.model.actor.instance.ArtefactInstance;
import org.l2jmobius.gameserver.model.actor.instance.FishermanInstance;
import org.l2jmobius.gameserver.model.actor.instance.FlyTerrainObjectInstance;
import org.l2jmobius.gameserver.model.actor.instance.GuardInstance;
@ -70,8 +69,8 @@ public class AdminMissingHtmls implements IAdminCommandHandler
{
if (obj.isNpc() //
&& !obj.isMonster() //
&& !(obj.isArtefact()) //
&& !(obj instanceof ObservationInstance) //
&& !(obj instanceof ArtefactInstance) //
&& !(obj instanceof FlyTerrainObjectInstance) //
&& !results.contains(obj.getId()))
{
@ -105,8 +104,8 @@ public class AdminMissingHtmls implements IAdminCommandHandler
{
if (obj.isNpc() //
&& !obj.isMonster() //
&& !(obj.isArtefact()) //
&& !(obj instanceof ObservationInstance) //
&& !(obj instanceof ArtefactInstance) //
&& !(obj instanceof FlyTerrainObjectInstance) //
&& !results.contains(obj.getId()))
{
@ -138,8 +137,8 @@ public class AdminMissingHtmls implements IAdminCommandHandler
{
if (obj.isNpc() //
&& !obj.isMonster() //
&& !(obj.isArtefact()) //
&& !(obj instanceof ObservationInstance) //
&& !(obj instanceof ArtefactInstance) //
&& !(obj instanceof FlyTerrainObjectInstance))
{
final Npc npc = (Npc) obj;

View File

@ -66,7 +66,7 @@ public class PossessHolythingSkillCondition implements ISkillCondition
player.sendPacket(SystemMessageId.INVALID_TARGET);
canTakeCastle = false;
}
else if (!Util.checkIfInRange(skill.getCastRange(), player, target, true))
else if (!Util.checkIfInRange(skill.getCastRange(), player, target, true) || (Math.abs(player.getZ() - target.getZ()) > 40))
{
player.sendPacket(SystemMessageId.THE_DISTANCE_IS_TOO_FAR_AND_SO_THE_CASTING_HAS_BEEN_CANCELLED);
canTakeCastle = false;

View File

@ -19,7 +19,6 @@ package handlers.targethandlers;
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.actor.instance.ArtefactInstance;
import org.l2jmobius.gameserver.model.skills.Skill;
import org.l2jmobius.gameserver.model.skills.targets.TargetType;
import org.l2jmobius.gameserver.network.SystemMessageId;
@ -39,9 +38,10 @@ public class HolyThing implements ITargetTypeHandler
@Override
public WorldObject getTarget(Creature creature, WorldObject selectedTarget, Skill skill, boolean forceUse, boolean dontMove, boolean sendMessage)
{
if (creature.getTarget() instanceof ArtefactInstance)
final WorldObject target = creature.getTarget();
if ((target != null) && target.isArtefact())
{
return creature.getTarget();
return target;
}
if (sendMessage)

View File

@ -358,7 +358,7 @@ public class GeoEngine
*/
public boolean canSeeTarget(WorldObject origin, WorldObject target)
{
if (target.isDoor() || (target.isCreature() && ((Creature) target).isFlying()))
if (target.isDoor() || target.isArtefact() || (target.isCreature() && ((Creature) target).isFlying()))
{
return true;
}

View File

@ -292,6 +292,15 @@ public abstract class WorldObject extends ListenersContainer implements IIdentif
return false;
}
/**
* Verify if object is instance of ArtefactInstance.
* @return {@code true} if object is instance of ArtefactInstance, {@code false} otherwise
*/
public boolean isArtefact()
{
return false;
}
/**
* Verify if object is instance of MonsterInstance.
* @return {@code true} if object is instance of MonsterInstance, {@code false} otherwise

View File

@ -54,9 +54,12 @@ public class ArtefactInstance extends Npc
getCastle().registerArtefact(this);
}
/**
* Return False.
*/
@Override
public boolean isArtefact()
{
return true;
}
@Override
public boolean isAutoAttackable(Creature attacker)
{

View File

@ -26,7 +26,6 @@ import org.l2jmobius.gameserver.handler.IAdminCommandHandler;
import org.l2jmobius.gameserver.model.World;
import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Npc;
import org.l2jmobius.gameserver.model.actor.instance.ArtefactInstance;
import org.l2jmobius.gameserver.model.actor.instance.FishermanInstance;
import org.l2jmobius.gameserver.model.actor.instance.FlyTerrainObjectInstance;
import org.l2jmobius.gameserver.model.actor.instance.GuardInstance;
@ -70,8 +69,8 @@ public class AdminMissingHtmls implements IAdminCommandHandler
{
if (obj.isNpc() //
&& !obj.isMonster() //
&& !(obj.isArtefact()) //
&& !(obj instanceof ObservationInstance) //
&& !(obj instanceof ArtefactInstance) //
&& !(obj instanceof FlyTerrainObjectInstance) //
&& !results.contains(obj.getId()))
{
@ -105,8 +104,8 @@ public class AdminMissingHtmls implements IAdminCommandHandler
{
if (obj.isNpc() //
&& !obj.isMonster() //
&& !(obj.isArtefact()) //
&& !(obj instanceof ObservationInstance) //
&& !(obj instanceof ArtefactInstance) //
&& !(obj instanceof FlyTerrainObjectInstance) //
&& !results.contains(obj.getId()))
{
@ -138,8 +137,8 @@ public class AdminMissingHtmls implements IAdminCommandHandler
{
if (obj.isNpc() //
&& !obj.isMonster() //
&& !(obj.isArtefact()) //
&& !(obj instanceof ObservationInstance) //
&& !(obj instanceof ArtefactInstance) //
&& !(obj instanceof FlyTerrainObjectInstance))
{
final Npc npc = (Npc) obj;

View File

@ -66,7 +66,7 @@ public class PossessHolythingSkillCondition implements ISkillCondition
player.sendPacket(SystemMessageId.INVALID_TARGET);
canTakeCastle = false;
}
else if (!Util.checkIfInRange(skill.getCastRange(), player, target, true))
else if (!Util.checkIfInRange(skill.getCastRange(), player, target, true) || (Math.abs(player.getZ() - target.getZ()) > 40))
{
player.sendPacket(SystemMessageId.THE_DISTANCE_IS_TOO_FAR_AND_SO_THE_CASTING_HAS_BEEN_CANCELLED);
canTakeCastle = false;

View File

@ -19,7 +19,6 @@ package handlers.targethandlers;
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.actor.instance.ArtefactInstance;
import org.l2jmobius.gameserver.model.skills.Skill;
import org.l2jmobius.gameserver.model.skills.targets.TargetType;
import org.l2jmobius.gameserver.network.SystemMessageId;
@ -39,9 +38,10 @@ public class HolyThing implements ITargetTypeHandler
@Override
public WorldObject getTarget(Creature creature, WorldObject selectedTarget, Skill skill, boolean forceUse, boolean dontMove, boolean sendMessage)
{
if (creature.getTarget() instanceof ArtefactInstance)
final WorldObject target = creature.getTarget();
if ((target != null) && target.isArtefact())
{
return creature.getTarget();
return target;
}
if (sendMessage)

Some files were not shown because too many files have changed in this diff Show More