From 6e1df8a43a9168b4c41ade16b4d409cc6825feb1 Mon Sep 17 00:00:00 2001
From: MobiusDevelopment <8391001+MobiusDevelopment@users.noreply.github.com>
Date: Thu, 7 Nov 2019 23:34:43 +0000
Subject: [PATCH] Fixed capturing holy artefact under the shrine. Thanks to
Sahar.
---
.../admincommandhandlers/AdminMissingHtmls.java | 7 +++----
.../PossessHolythingSkillCondition.java | 2 +-
.../handlers/targethandlers/HolyThing.java | 6 +++---
.../gameserver/geoengine/GeoEngine.java | 2 +-
.../l2jmobius/gameserver/model/WorldObject.java | 9 +++++++++
.../model/actor/instance/ArtefactInstance.java | 9 ++++++---
.../admincommandhandlers/AdminMissingHtmls.java | 7 +++----
.../PossessHolythingSkillCondition.java | 2 +-
.../handlers/targethandlers/HolyThing.java | 6 +++---
.../gameserver/geoengine/GeoEngine.java | 2 +-
.../l2jmobius/gameserver/model/WorldObject.java | 9 +++++++++
.../model/actor/instance/ArtefactInstance.java | 9 ++++++---
.../admincommandhandlers/AdminMissingHtmls.java | 7 +++----
.../PossessHolythingSkillCondition.java | 2 +-
.../handlers/targethandlers/HolyThing.java | 6 +++---
.../gameserver/geoengine/GeoEngine.java | 2 +-
.../l2jmobius/gameserver/model/WorldObject.java | 9 +++++++++
.../model/actor/instance/ArtefactInstance.java | 9 ++++++---
.../admincommandhandlers/AdminMissingHtmls.java | 7 +++----
.../PossessHolythingSkillCondition.java | 2 +-
.../handlers/targethandlers/HolyThing.java | 6 +++---
.../gameserver/geoengine/GeoEngine.java | 2 +-
.../l2jmobius/gameserver/model/WorldObject.java | 9 +++++++++
.../model/actor/instance/ArtefactInstance.java | 9 ++++++---
.../admincommandhandlers/AdminMissingHtmls.java | 7 +++----
.../PossessHolythingSkillCondition.java | 2 +-
.../handlers/targethandlers/HolyThing.java | 6 +++---
.../gameserver/geoengine/GeoEngine.java | 2 +-
.../l2jmobius/gameserver/model/WorldObject.java | 9 +++++++++
.../model/actor/instance/ArtefactInstance.java | 9 ++++++---
.../admincommandhandlers/AdminMissingHtmls.java | 7 +++----
.../PossessHolythingSkillCondition.java | 2 +-
.../handlers/targethandlers/HolyThing.java | 6 +++---
.../gameserver/geoengine/GeoEngine.java | 2 +-
.../l2jmobius/gameserver/model/WorldObject.java | 9 +++++++++
.../model/actor/instance/ArtefactInstance.java | 9 ++++++---
.../admincommandhandlers/AdminMissingHtmls.java | 7 +++----
.../PossessHolythingSkillCondition.java | 2 +-
.../handlers/targethandlers/HolyThing.java | 6 +++---
.../gameserver/geoengine/GeoEngine.java | 2 +-
.../l2jmobius/gameserver/model/WorldObject.java | 9 +++++++++
.../model/actor/instance/ArtefactInstance.java | 9 ++++++---
.../admincommandhandlers/AdminMissingHtmls.java | 7 +++----
.../PossessHolythingSkillCondition.java | 2 +-
.../handlers/targethandlers/HolyThing.java | 6 +++---
.../gameserver/geoengine/GeoEngine.java | 2 +-
.../l2jmobius/gameserver/model/WorldObject.java | 9 +++++++++
.../model/actor/instance/ArtefactInstance.java | 9 ++++++---
.../gameserver/geoengine/GeoEngine.java | 2 +-
.../handler/skillhandlers/TakeCastle.java | 6 +++---
.../model/actor/instance/ArtefactInstance.java | 16 ++++++----------
.../scripts/handlers/targethandlers/Holy.java | 3 +--
.../gameserver/geoengine/GeoEngine.java | 2 +-
.../l2jmobius/gameserver/model/WorldObject.java | 9 +++++++++
.../model/actor/instance/ArtefactInstance.java | 9 ++++++---
.../conditions/ConditionPlayerCanTakeCastle.java | 2 +-
.../scripts/handlers/targethandlers/Holy.java | 3 +--
.../gameserver/geoengine/GeoEngine.java | 2 +-
.../l2jmobius/gameserver/model/WorldObject.java | 9 +++++++++
.../model/actor/instance/ArtefactInstance.java | 9 ++++++---
.../conditions/ConditionPlayerCanTakeCastle.java | 2 +-
.../admincommandhandlers/AdminMissingHtmls.java | 7 +++----
.../PossessHolythingSkillCondition.java | 2 +-
.../handlers/targethandlers/HolyThing.java | 6 +++---
.../gameserver/geoengine/GeoEngine.java | 2 +-
.../l2jmobius/gameserver/model/WorldObject.java | 9 +++++++++
.../model/actor/instance/ArtefactInstance.java | 9 ++++++---
.../admincommandhandlers/AdminMissingHtmls.java | 7 +++----
.../PossessHolythingSkillCondition.java | 2 +-
.../handlers/targethandlers/HolyThing.java | 6 +++---
.../gameserver/geoengine/GeoEngine.java | 2 +-
.../l2jmobius/gameserver/model/WorldObject.java | 9 +++++++++
.../model/actor/instance/ArtefactInstance.java | 9 ++++++---
.../admincommandhandlers/AdminMissingHtmls.java | 7 +++----
.../PossessHolythingSkillCondition.java | 2 +-
.../handlers/targethandlers/HolyThing.java | 6 +++---
.../gameserver/geoengine/GeoEngine.java | 2 +-
.../l2jmobius/gameserver/model/WorldObject.java | 9 +++++++++
.../model/actor/instance/ArtefactInstance.java | 9 ++++++---
.../admincommandhandlers/AdminMissingHtmls.java | 7 +++----
.../PossessHolythingSkillCondition.java | 2 +-
.../handlers/targethandlers/HolyThing.java | 6 +++---
.../gameserver/geoengine/GeoEngine.java | 2 +-
.../l2jmobius/gameserver/model/WorldObject.java | 9 +++++++++
.../model/actor/instance/ArtefactInstance.java | 9 ++++++---
.../admincommandhandlers/AdminMissingHtmls.java | 7 +++----
.../PossessHolythingSkillCondition.java | 2 +-
.../handlers/targethandlers/HolyThing.java | 6 +++---
.../gameserver/geoengine/GeoEngine.java | 2 +-
.../l2jmobius/gameserver/model/WorldObject.java | 9 +++++++++
.../model/actor/instance/ArtefactInstance.java | 9 ++++++---
.../admincommandhandlers/AdminMissingHtmls.java | 7 +++----
.../PossessHolythingSkillCondition.java | 2 +-
.../handlers/targethandlers/HolyThing.java | 6 +++---
.../gameserver/geoengine/GeoEngine.java | 2 +-
.../l2jmobius/gameserver/model/WorldObject.java | 9 +++++++++
.../model/actor/instance/ArtefactInstance.java | 9 ++++++---
.../admincommandhandlers/AdminMissingHtmls.java | 7 +++----
.../PossessHolythingSkillCondition.java | 2 +-
.../handlers/targethandlers/HolyThing.java | 6 +++---
.../gameserver/geoengine/GeoEngine.java | 2 +-
.../l2jmobius/gameserver/model/WorldObject.java | 9 +++++++++
.../model/actor/instance/ArtefactInstance.java | 9 ++++++---
103 files changed, 391 insertions(+), 208 deletions(-)
diff --git a/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/admincommandhandlers/AdminMissingHtmls.java b/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/admincommandhandlers/AdminMissingHtmls.java
index 7f33a7c230..a2da0dedb2 100644
--- a/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/admincommandhandlers/AdminMissingHtmls.java
+++ b/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/admincommandhandlers/AdminMissingHtmls.java
@@ -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;
diff --git a/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/skillconditionhandlers/PossessHolythingSkillCondition.java b/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/skillconditionhandlers/PossessHolythingSkillCondition.java
index 1831078b89..8a4c974840 100644
--- a/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/skillconditionhandlers/PossessHolythingSkillCondition.java
+++ b/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/skillconditionhandlers/PossessHolythingSkillCondition.java
@@ -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;
diff --git a/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/targethandlers/HolyThing.java b/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/targethandlers/HolyThing.java
index 45efc72e18..ed51c05b39 100644
--- a/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/targethandlers/HolyThing.java
+++ b/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/targethandlers/HolyThing.java
@@ -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)
diff --git a/L2J_Mobius_1.0_Ertheia/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java b/L2J_Mobius_1.0_Ertheia/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java
index 00d9d9a668..8aad19eb44 100644
--- a/L2J_Mobius_1.0_Ertheia/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java
+++ b/L2J_Mobius_1.0_Ertheia/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java
@@ -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;
}
diff --git a/L2J_Mobius_1.0_Ertheia/java/org/l2jmobius/gameserver/model/WorldObject.java b/L2J_Mobius_1.0_Ertheia/java/org/l2jmobius/gameserver/model/WorldObject.java
index d86548cb13..d5d1054c4d 100644
--- a/L2J_Mobius_1.0_Ertheia/java/org/l2jmobius/gameserver/model/WorldObject.java
+++ b/L2J_Mobius_1.0_Ertheia/java/org/l2jmobius/gameserver/model/WorldObject.java
@@ -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
diff --git a/L2J_Mobius_1.0_Ertheia/java/org/l2jmobius/gameserver/model/actor/instance/ArtefactInstance.java b/L2J_Mobius_1.0_Ertheia/java/org/l2jmobius/gameserver/model/actor/instance/ArtefactInstance.java
index 2e363633bc..f135327f08 100644
--- a/L2J_Mobius_1.0_Ertheia/java/org/l2jmobius/gameserver/model/actor/instance/ArtefactInstance.java
+++ b/L2J_Mobius_1.0_Ertheia/java/org/l2jmobius/gameserver/model/actor/instance/ArtefactInstance.java
@@ -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)
{
diff --git a/L2J_Mobius_2.5_Underground/dist/game/data/scripts/handlers/admincommandhandlers/AdminMissingHtmls.java b/L2J_Mobius_2.5_Underground/dist/game/data/scripts/handlers/admincommandhandlers/AdminMissingHtmls.java
index 7f33a7c230..a2da0dedb2 100644
--- a/L2J_Mobius_2.5_Underground/dist/game/data/scripts/handlers/admincommandhandlers/AdminMissingHtmls.java
+++ b/L2J_Mobius_2.5_Underground/dist/game/data/scripts/handlers/admincommandhandlers/AdminMissingHtmls.java
@@ -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;
diff --git a/L2J_Mobius_2.5_Underground/dist/game/data/scripts/handlers/skillconditionhandlers/PossessHolythingSkillCondition.java b/L2J_Mobius_2.5_Underground/dist/game/data/scripts/handlers/skillconditionhandlers/PossessHolythingSkillCondition.java
index 1831078b89..8a4c974840 100644
--- a/L2J_Mobius_2.5_Underground/dist/game/data/scripts/handlers/skillconditionhandlers/PossessHolythingSkillCondition.java
+++ b/L2J_Mobius_2.5_Underground/dist/game/data/scripts/handlers/skillconditionhandlers/PossessHolythingSkillCondition.java
@@ -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;
diff --git a/L2J_Mobius_2.5_Underground/dist/game/data/scripts/handlers/targethandlers/HolyThing.java b/L2J_Mobius_2.5_Underground/dist/game/data/scripts/handlers/targethandlers/HolyThing.java
index 45efc72e18..ed51c05b39 100644
--- a/L2J_Mobius_2.5_Underground/dist/game/data/scripts/handlers/targethandlers/HolyThing.java
+++ b/L2J_Mobius_2.5_Underground/dist/game/data/scripts/handlers/targethandlers/HolyThing.java
@@ -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)
diff --git a/L2J_Mobius_2.5_Underground/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java b/L2J_Mobius_2.5_Underground/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java
index 00d9d9a668..8aad19eb44 100644
--- a/L2J_Mobius_2.5_Underground/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java
+++ b/L2J_Mobius_2.5_Underground/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java
@@ -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;
}
diff --git a/L2J_Mobius_2.5_Underground/java/org/l2jmobius/gameserver/model/WorldObject.java b/L2J_Mobius_2.5_Underground/java/org/l2jmobius/gameserver/model/WorldObject.java
index d86548cb13..d5d1054c4d 100644
--- a/L2J_Mobius_2.5_Underground/java/org/l2jmobius/gameserver/model/WorldObject.java
+++ b/L2J_Mobius_2.5_Underground/java/org/l2jmobius/gameserver/model/WorldObject.java
@@ -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
diff --git a/L2J_Mobius_2.5_Underground/java/org/l2jmobius/gameserver/model/actor/instance/ArtefactInstance.java b/L2J_Mobius_2.5_Underground/java/org/l2jmobius/gameserver/model/actor/instance/ArtefactInstance.java
index 2e363633bc..f135327f08 100644
--- a/L2J_Mobius_2.5_Underground/java/org/l2jmobius/gameserver/model/actor/instance/ArtefactInstance.java
+++ b/L2J_Mobius_2.5_Underground/java/org/l2jmobius/gameserver/model/actor/instance/ArtefactInstance.java
@@ -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)
{
diff --git a/L2J_Mobius_3.0_Helios/dist/game/data/scripts/handlers/admincommandhandlers/AdminMissingHtmls.java b/L2J_Mobius_3.0_Helios/dist/game/data/scripts/handlers/admincommandhandlers/AdminMissingHtmls.java
index 7f33a7c230..a2da0dedb2 100644
--- a/L2J_Mobius_3.0_Helios/dist/game/data/scripts/handlers/admincommandhandlers/AdminMissingHtmls.java
+++ b/L2J_Mobius_3.0_Helios/dist/game/data/scripts/handlers/admincommandhandlers/AdminMissingHtmls.java
@@ -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;
diff --git a/L2J_Mobius_3.0_Helios/dist/game/data/scripts/handlers/skillconditionhandlers/PossessHolythingSkillCondition.java b/L2J_Mobius_3.0_Helios/dist/game/data/scripts/handlers/skillconditionhandlers/PossessHolythingSkillCondition.java
index 1831078b89..8a4c974840 100644
--- a/L2J_Mobius_3.0_Helios/dist/game/data/scripts/handlers/skillconditionhandlers/PossessHolythingSkillCondition.java
+++ b/L2J_Mobius_3.0_Helios/dist/game/data/scripts/handlers/skillconditionhandlers/PossessHolythingSkillCondition.java
@@ -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;
diff --git a/L2J_Mobius_3.0_Helios/dist/game/data/scripts/handlers/targethandlers/HolyThing.java b/L2J_Mobius_3.0_Helios/dist/game/data/scripts/handlers/targethandlers/HolyThing.java
index 45efc72e18..ed51c05b39 100644
--- a/L2J_Mobius_3.0_Helios/dist/game/data/scripts/handlers/targethandlers/HolyThing.java
+++ b/L2J_Mobius_3.0_Helios/dist/game/data/scripts/handlers/targethandlers/HolyThing.java
@@ -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)
diff --git a/L2J_Mobius_3.0_Helios/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java b/L2J_Mobius_3.0_Helios/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java
index 00d9d9a668..8aad19eb44 100644
--- a/L2J_Mobius_3.0_Helios/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java
+++ b/L2J_Mobius_3.0_Helios/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java
@@ -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;
}
diff --git a/L2J_Mobius_3.0_Helios/java/org/l2jmobius/gameserver/model/WorldObject.java b/L2J_Mobius_3.0_Helios/java/org/l2jmobius/gameserver/model/WorldObject.java
index d86548cb13..d5d1054c4d 100644
--- a/L2J_Mobius_3.0_Helios/java/org/l2jmobius/gameserver/model/WorldObject.java
+++ b/L2J_Mobius_3.0_Helios/java/org/l2jmobius/gameserver/model/WorldObject.java
@@ -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
diff --git a/L2J_Mobius_3.0_Helios/java/org/l2jmobius/gameserver/model/actor/instance/ArtefactInstance.java b/L2J_Mobius_3.0_Helios/java/org/l2jmobius/gameserver/model/actor/instance/ArtefactInstance.java
index 2e363633bc..f135327f08 100644
--- a/L2J_Mobius_3.0_Helios/java/org/l2jmobius/gameserver/model/actor/instance/ArtefactInstance.java
+++ b/L2J_Mobius_3.0_Helios/java/org/l2jmobius/gameserver/model/actor/instance/ArtefactInstance.java
@@ -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)
{
diff --git a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/handlers/admincommandhandlers/AdminMissingHtmls.java b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/handlers/admincommandhandlers/AdminMissingHtmls.java
index 7f33a7c230..a2da0dedb2 100644
--- a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/handlers/admincommandhandlers/AdminMissingHtmls.java
+++ b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/handlers/admincommandhandlers/AdminMissingHtmls.java
@@ -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;
diff --git a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/handlers/skillconditionhandlers/PossessHolythingSkillCondition.java b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/handlers/skillconditionhandlers/PossessHolythingSkillCondition.java
index 1831078b89..8a4c974840 100644
--- a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/handlers/skillconditionhandlers/PossessHolythingSkillCondition.java
+++ b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/handlers/skillconditionhandlers/PossessHolythingSkillCondition.java
@@ -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;
diff --git a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/handlers/targethandlers/HolyThing.java b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/handlers/targethandlers/HolyThing.java
index 45efc72e18..ed51c05b39 100644
--- a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/handlers/targethandlers/HolyThing.java
+++ b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/handlers/targethandlers/HolyThing.java
@@ -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)
diff --git a/L2J_Mobius_4.0_GrandCrusade/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java b/L2J_Mobius_4.0_GrandCrusade/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java
index 00d9d9a668..8aad19eb44 100644
--- a/L2J_Mobius_4.0_GrandCrusade/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java
+++ b/L2J_Mobius_4.0_GrandCrusade/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java
@@ -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;
}
diff --git a/L2J_Mobius_4.0_GrandCrusade/java/org/l2jmobius/gameserver/model/WorldObject.java b/L2J_Mobius_4.0_GrandCrusade/java/org/l2jmobius/gameserver/model/WorldObject.java
index d86548cb13..d5d1054c4d 100644
--- a/L2J_Mobius_4.0_GrandCrusade/java/org/l2jmobius/gameserver/model/WorldObject.java
+++ b/L2J_Mobius_4.0_GrandCrusade/java/org/l2jmobius/gameserver/model/WorldObject.java
@@ -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
diff --git a/L2J_Mobius_4.0_GrandCrusade/java/org/l2jmobius/gameserver/model/actor/instance/ArtefactInstance.java b/L2J_Mobius_4.0_GrandCrusade/java/org/l2jmobius/gameserver/model/actor/instance/ArtefactInstance.java
index 2e363633bc..f135327f08 100644
--- a/L2J_Mobius_4.0_GrandCrusade/java/org/l2jmobius/gameserver/model/actor/instance/ArtefactInstance.java
+++ b/L2J_Mobius_4.0_GrandCrusade/java/org/l2jmobius/gameserver/model/actor/instance/ArtefactInstance.java
@@ -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)
{
diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/handlers/admincommandhandlers/AdminMissingHtmls.java b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/handlers/admincommandhandlers/AdminMissingHtmls.java
index 7f33a7c230..a2da0dedb2 100644
--- a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/handlers/admincommandhandlers/AdminMissingHtmls.java
+++ b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/handlers/admincommandhandlers/AdminMissingHtmls.java
@@ -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;
diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/handlers/skillconditionhandlers/PossessHolythingSkillCondition.java b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/handlers/skillconditionhandlers/PossessHolythingSkillCondition.java
index 1831078b89..8a4c974840 100644
--- a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/handlers/skillconditionhandlers/PossessHolythingSkillCondition.java
+++ b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/handlers/skillconditionhandlers/PossessHolythingSkillCondition.java
@@ -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;
diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/handlers/targethandlers/HolyThing.java b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/handlers/targethandlers/HolyThing.java
index 45efc72e18..ed51c05b39 100644
--- a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/handlers/targethandlers/HolyThing.java
+++ b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/handlers/targethandlers/HolyThing.java
@@ -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)
diff --git a/L2J_Mobius_5.0_Salvation/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java b/L2J_Mobius_5.0_Salvation/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java
index 00d9d9a668..8aad19eb44 100644
--- a/L2J_Mobius_5.0_Salvation/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java
+++ b/L2J_Mobius_5.0_Salvation/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java
@@ -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;
}
diff --git a/L2J_Mobius_5.0_Salvation/java/org/l2jmobius/gameserver/model/WorldObject.java b/L2J_Mobius_5.0_Salvation/java/org/l2jmobius/gameserver/model/WorldObject.java
index d86548cb13..d5d1054c4d 100644
--- a/L2J_Mobius_5.0_Salvation/java/org/l2jmobius/gameserver/model/WorldObject.java
+++ b/L2J_Mobius_5.0_Salvation/java/org/l2jmobius/gameserver/model/WorldObject.java
@@ -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
diff --git a/L2J_Mobius_5.0_Salvation/java/org/l2jmobius/gameserver/model/actor/instance/ArtefactInstance.java b/L2J_Mobius_5.0_Salvation/java/org/l2jmobius/gameserver/model/actor/instance/ArtefactInstance.java
index 2e363633bc..f135327f08 100644
--- a/L2J_Mobius_5.0_Salvation/java/org/l2jmobius/gameserver/model/actor/instance/ArtefactInstance.java
+++ b/L2J_Mobius_5.0_Salvation/java/org/l2jmobius/gameserver/model/actor/instance/ArtefactInstance.java
@@ -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)
{
diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/handlers/admincommandhandlers/AdminMissingHtmls.java b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/handlers/admincommandhandlers/AdminMissingHtmls.java
index 7f33a7c230..a2da0dedb2 100644
--- a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/handlers/admincommandhandlers/AdminMissingHtmls.java
+++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/handlers/admincommandhandlers/AdminMissingHtmls.java
@@ -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;
diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/handlers/skillconditionhandlers/PossessHolythingSkillCondition.java b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/handlers/skillconditionhandlers/PossessHolythingSkillCondition.java
index 1831078b89..8a4c974840 100644
--- a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/handlers/skillconditionhandlers/PossessHolythingSkillCondition.java
+++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/handlers/skillconditionhandlers/PossessHolythingSkillCondition.java
@@ -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;
diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/handlers/targethandlers/HolyThing.java b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/handlers/targethandlers/HolyThing.java
index 45efc72e18..ed51c05b39 100644
--- a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/handlers/targethandlers/HolyThing.java
+++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/handlers/targethandlers/HolyThing.java
@@ -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)
diff --git a/L2J_Mobius_5.5_EtinasFate/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java b/L2J_Mobius_5.5_EtinasFate/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java
index 00d9d9a668..8aad19eb44 100644
--- a/L2J_Mobius_5.5_EtinasFate/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java
+++ b/L2J_Mobius_5.5_EtinasFate/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java
@@ -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;
}
diff --git a/L2J_Mobius_5.5_EtinasFate/java/org/l2jmobius/gameserver/model/WorldObject.java b/L2J_Mobius_5.5_EtinasFate/java/org/l2jmobius/gameserver/model/WorldObject.java
index d86548cb13..d5d1054c4d 100644
--- a/L2J_Mobius_5.5_EtinasFate/java/org/l2jmobius/gameserver/model/WorldObject.java
+++ b/L2J_Mobius_5.5_EtinasFate/java/org/l2jmobius/gameserver/model/WorldObject.java
@@ -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
diff --git a/L2J_Mobius_5.5_EtinasFate/java/org/l2jmobius/gameserver/model/actor/instance/ArtefactInstance.java b/L2J_Mobius_5.5_EtinasFate/java/org/l2jmobius/gameserver/model/actor/instance/ArtefactInstance.java
index 2e363633bc..f135327f08 100644
--- a/L2J_Mobius_5.5_EtinasFate/java/org/l2jmobius/gameserver/model/actor/instance/ArtefactInstance.java
+++ b/L2J_Mobius_5.5_EtinasFate/java/org/l2jmobius/gameserver/model/actor/instance/ArtefactInstance.java
@@ -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)
{
diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/handlers/admincommandhandlers/AdminMissingHtmls.java b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/handlers/admincommandhandlers/AdminMissingHtmls.java
index 7f33a7c230..a2da0dedb2 100644
--- a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/handlers/admincommandhandlers/AdminMissingHtmls.java
+++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/handlers/admincommandhandlers/AdminMissingHtmls.java
@@ -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;
diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/handlers/skillconditionhandlers/PossessHolythingSkillCondition.java b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/handlers/skillconditionhandlers/PossessHolythingSkillCondition.java
index 1831078b89..8a4c974840 100644
--- a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/handlers/skillconditionhandlers/PossessHolythingSkillCondition.java
+++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/handlers/skillconditionhandlers/PossessHolythingSkillCondition.java
@@ -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;
diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/handlers/targethandlers/HolyThing.java b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/handlers/targethandlers/HolyThing.java
index 45efc72e18..ed51c05b39 100644
--- a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/handlers/targethandlers/HolyThing.java
+++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/handlers/targethandlers/HolyThing.java
@@ -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)
diff --git a/L2J_Mobius_6.0_Fafurion/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java b/L2J_Mobius_6.0_Fafurion/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java
index 00d9d9a668..8aad19eb44 100644
--- a/L2J_Mobius_6.0_Fafurion/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java
+++ b/L2J_Mobius_6.0_Fafurion/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java
@@ -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;
}
diff --git a/L2J_Mobius_6.0_Fafurion/java/org/l2jmobius/gameserver/model/WorldObject.java b/L2J_Mobius_6.0_Fafurion/java/org/l2jmobius/gameserver/model/WorldObject.java
index d86548cb13..d5d1054c4d 100644
--- a/L2J_Mobius_6.0_Fafurion/java/org/l2jmobius/gameserver/model/WorldObject.java
+++ b/L2J_Mobius_6.0_Fafurion/java/org/l2jmobius/gameserver/model/WorldObject.java
@@ -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
diff --git a/L2J_Mobius_6.0_Fafurion/java/org/l2jmobius/gameserver/model/actor/instance/ArtefactInstance.java b/L2J_Mobius_6.0_Fafurion/java/org/l2jmobius/gameserver/model/actor/instance/ArtefactInstance.java
index 2e363633bc..f135327f08 100644
--- a/L2J_Mobius_6.0_Fafurion/java/org/l2jmobius/gameserver/model/actor/instance/ArtefactInstance.java
+++ b/L2J_Mobius_6.0_Fafurion/java/org/l2jmobius/gameserver/model/actor/instance/ArtefactInstance.java
@@ -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)
{
diff --git a/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/handlers/admincommandhandlers/AdminMissingHtmls.java b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/handlers/admincommandhandlers/AdminMissingHtmls.java
index 7f33a7c230..a2da0dedb2 100644
--- a/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/handlers/admincommandhandlers/AdminMissingHtmls.java
+++ b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/handlers/admincommandhandlers/AdminMissingHtmls.java
@@ -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;
diff --git a/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/handlers/skillconditionhandlers/PossessHolythingSkillCondition.java b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/handlers/skillconditionhandlers/PossessHolythingSkillCondition.java
index 1831078b89..8a4c974840 100644
--- a/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/handlers/skillconditionhandlers/PossessHolythingSkillCondition.java
+++ b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/handlers/skillconditionhandlers/PossessHolythingSkillCondition.java
@@ -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;
diff --git a/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/handlers/targethandlers/HolyThing.java b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/handlers/targethandlers/HolyThing.java
index 45efc72e18..ed51c05b39 100644
--- a/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/handlers/targethandlers/HolyThing.java
+++ b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/handlers/targethandlers/HolyThing.java
@@ -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)
diff --git a/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java b/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java
index 00d9d9a668..8aad19eb44 100644
--- a/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java
+++ b/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java
@@ -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;
}
diff --git a/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/WorldObject.java b/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/WorldObject.java
index d86548cb13..d5d1054c4d 100644
--- a/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/WorldObject.java
+++ b/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/WorldObject.java
@@ -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
diff --git a/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/actor/instance/ArtefactInstance.java b/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/actor/instance/ArtefactInstance.java
index 2e363633bc..f135327f08 100644
--- a/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/actor/instance/ArtefactInstance.java
+++ b/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/actor/instance/ArtefactInstance.java
@@ -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)
{
diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java
index ea8def01c3..7798a60f1e 100644
--- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java
+++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java
@@ -356,7 +356,7 @@ public class GeoEngine
*/
public boolean canSeeTarget(WorldObject origin, WorldObject target)
{
- if (target.isDoor())
+ if (target.isDoor() || target.isArtefact())
{
return true;
}
diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/handler/skillhandlers/TakeCastle.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/handler/skillhandlers/TakeCastle.java
index e0e1f8b49b..10c2922ef1 100644
--- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/handler/skillhandlers/TakeCastle.java
+++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/handler/skillhandlers/TakeCastle.java
@@ -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");
}
diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/instance/ArtefactInstance.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/instance/ArtefactInstance.java
index a9df3de597..e14b30a38a 100644
--- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/instance/ArtefactInstance.java
+++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/instance/ArtefactInstance.java
@@ -47,10 +47,12 @@ public class ArtefactInstance extends NpcInstance
super(objectId, template);
}
- /**
- * Return False.
- *
- */
+ @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;
- }
}
diff --git a/L2J_Mobius_CT_2.4_Epilogue/dist/game/data/scripts/handlers/targethandlers/Holy.java b/L2J_Mobius_CT_2.4_Epilogue/dist/game/data/scripts/handlers/targethandlers/Holy.java
index 843b6958ae..bc2044ad20 100644
--- a/L2J_Mobius_CT_2.4_Epilogue/dist/game/data/scripts/handlers/targethandlers/Holy.java
+++ b/L2J_Mobius_CT_2.4_Epilogue/dist/game/data/scripts/handlers/targethandlers/Holy.java
@@ -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;
}
diff --git a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java
index 238486de00..f473fedc69 100644
--- a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java
+++ b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java
@@ -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;
}
diff --git a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/WorldObject.java b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/WorldObject.java
index d0d5446395..735cec1f1a 100644
--- a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/WorldObject.java
+++ b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/WorldObject.java
@@ -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
diff --git a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/actor/instance/ArtefactInstance.java b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/actor/instance/ArtefactInstance.java
index dba5e34d21..0f3eb5ee24 100644
--- a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/actor/instance/ArtefactInstance.java
+++ b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/actor/instance/ArtefactInstance.java
@@ -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)
{
diff --git a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanTakeCastle.java b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanTakeCastle.java
index 851c2fe03f..3e4ea5df8b 100644
--- a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanTakeCastle.java
+++ b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanTakeCastle.java
@@ -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;
diff --git a/L2J_Mobius_CT_2.6_HighFive/dist/game/data/scripts/handlers/targethandlers/Holy.java b/L2J_Mobius_CT_2.6_HighFive/dist/game/data/scripts/handlers/targethandlers/Holy.java
index 843b6958ae..bc2044ad20 100644
--- a/L2J_Mobius_CT_2.6_HighFive/dist/game/data/scripts/handlers/targethandlers/Holy.java
+++ b/L2J_Mobius_CT_2.6_HighFive/dist/game/data/scripts/handlers/targethandlers/Holy.java
@@ -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;
}
diff --git a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java
index 238486de00..f473fedc69 100644
--- a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java
+++ b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java
@@ -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;
}
diff --git a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/WorldObject.java b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/WorldObject.java
index d0d5446395..735cec1f1a 100644
--- a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/WorldObject.java
+++ b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/WorldObject.java
@@ -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
diff --git a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/actor/instance/ArtefactInstance.java b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/actor/instance/ArtefactInstance.java
index dba5e34d21..0f3eb5ee24 100644
--- a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/actor/instance/ArtefactInstance.java
+++ b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/actor/instance/ArtefactInstance.java
@@ -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)
{
diff --git a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanTakeCastle.java b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanTakeCastle.java
index 851c2fe03f..3e4ea5df8b 100644
--- a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanTakeCastle.java
+++ b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/conditions/ConditionPlayerCanTakeCastle.java
@@ -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;
diff --git a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/admincommandhandlers/AdminMissingHtmls.java b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/admincommandhandlers/AdminMissingHtmls.java
index 7f33a7c230..a2da0dedb2 100644
--- a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/admincommandhandlers/AdminMissingHtmls.java
+++ b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/admincommandhandlers/AdminMissingHtmls.java
@@ -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;
diff --git a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/skillconditionhandlers/PossessHolythingSkillCondition.java b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/skillconditionhandlers/PossessHolythingSkillCondition.java
index 06907fd476..49085b6674 100644
--- a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/skillconditionhandlers/PossessHolythingSkillCondition.java
+++ b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/skillconditionhandlers/PossessHolythingSkillCondition.java
@@ -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;
diff --git a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/targethandlers/HolyThing.java b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/targethandlers/HolyThing.java
index 45efc72e18..ed51c05b39 100644
--- a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/targethandlers/HolyThing.java
+++ b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/targethandlers/HolyThing.java
@@ -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)
diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java
index 00d9d9a668..8aad19eb44 100644
--- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java
+++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java
@@ -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;
}
diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/WorldObject.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/WorldObject.java
index d86548cb13..d5d1054c4d 100644
--- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/WorldObject.java
+++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/WorldObject.java
@@ -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
diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/actor/instance/ArtefactInstance.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/actor/instance/ArtefactInstance.java
index 2e363633bc..f135327f08 100644
--- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/actor/instance/ArtefactInstance.java
+++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/actor/instance/ArtefactInstance.java
@@ -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)
{
diff --git a/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/scripts/handlers/admincommandhandlers/AdminMissingHtmls.java b/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/scripts/handlers/admincommandhandlers/AdminMissingHtmls.java
index 7f33a7c230..a2da0dedb2 100644
--- a/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/scripts/handlers/admincommandhandlers/AdminMissingHtmls.java
+++ b/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/scripts/handlers/admincommandhandlers/AdminMissingHtmls.java
@@ -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;
diff --git a/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/scripts/handlers/skillconditionhandlers/PossessHolythingSkillCondition.java b/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/scripts/handlers/skillconditionhandlers/PossessHolythingSkillCondition.java
index 06907fd476..49085b6674 100644
--- a/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/scripts/handlers/skillconditionhandlers/PossessHolythingSkillCondition.java
+++ b/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/scripts/handlers/skillconditionhandlers/PossessHolythingSkillCondition.java
@@ -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;
diff --git a/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/scripts/handlers/targethandlers/HolyThing.java b/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/scripts/handlers/targethandlers/HolyThing.java
index 45efc72e18..ed51c05b39 100644
--- a/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/scripts/handlers/targethandlers/HolyThing.java
+++ b/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/scripts/handlers/targethandlers/HolyThing.java
@@ -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)
diff --git a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java
index 00d9d9a668..8aad19eb44 100644
--- a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java
+++ b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java
@@ -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;
}
diff --git a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/WorldObject.java b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/WorldObject.java
index d86548cb13..d5d1054c4d 100644
--- a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/WorldObject.java
+++ b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/WorldObject.java
@@ -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
diff --git a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/actor/instance/ArtefactInstance.java b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/actor/instance/ArtefactInstance.java
index 2e363633bc..f135327f08 100644
--- a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/actor/instance/ArtefactInstance.java
+++ b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/actor/instance/ArtefactInstance.java
@@ -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)
{
diff --git a/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/scripts/handlers/admincommandhandlers/AdminMissingHtmls.java b/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/scripts/handlers/admincommandhandlers/AdminMissingHtmls.java
index 7f33a7c230..a2da0dedb2 100644
--- a/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/scripts/handlers/admincommandhandlers/AdminMissingHtmls.java
+++ b/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/scripts/handlers/admincommandhandlers/AdminMissingHtmls.java
@@ -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;
diff --git a/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/scripts/handlers/skillconditionhandlers/PossessHolythingSkillCondition.java b/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/scripts/handlers/skillconditionhandlers/PossessHolythingSkillCondition.java
index 06907fd476..49085b6674 100644
--- a/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/scripts/handlers/skillconditionhandlers/PossessHolythingSkillCondition.java
+++ b/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/scripts/handlers/skillconditionhandlers/PossessHolythingSkillCondition.java
@@ -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;
diff --git a/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/scripts/handlers/targethandlers/HolyThing.java b/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/scripts/handlers/targethandlers/HolyThing.java
index 45efc72e18..ed51c05b39 100644
--- a/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/scripts/handlers/targethandlers/HolyThing.java
+++ b/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/scripts/handlers/targethandlers/HolyThing.java
@@ -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)
diff --git a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java
index 00d9d9a668..8aad19eb44 100644
--- a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java
+++ b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java
@@ -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;
}
diff --git a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/WorldObject.java b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/WorldObject.java
index d86548cb13..d5d1054c4d 100644
--- a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/WorldObject.java
+++ b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/WorldObject.java
@@ -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
diff --git a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/actor/instance/ArtefactInstance.java b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/actor/instance/ArtefactInstance.java
index 2e363633bc..f135327f08 100644
--- a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/actor/instance/ArtefactInstance.java
+++ b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/actor/instance/ArtefactInstance.java
@@ -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)
{
diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/scripts/handlers/admincommandhandlers/AdminMissingHtmls.java b/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/scripts/handlers/admincommandhandlers/AdminMissingHtmls.java
index 7f33a7c230..a2da0dedb2 100644
--- a/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/scripts/handlers/admincommandhandlers/AdminMissingHtmls.java
+++ b/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/scripts/handlers/admincommandhandlers/AdminMissingHtmls.java
@@ -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;
diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/scripts/handlers/skillconditionhandlers/PossessHolythingSkillCondition.java b/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/scripts/handlers/skillconditionhandlers/PossessHolythingSkillCondition.java
index 06907fd476..49085b6674 100644
--- a/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/scripts/handlers/skillconditionhandlers/PossessHolythingSkillCondition.java
+++ b/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/scripts/handlers/skillconditionhandlers/PossessHolythingSkillCondition.java
@@ -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;
diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/scripts/handlers/targethandlers/HolyThing.java b/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/scripts/handlers/targethandlers/HolyThing.java
index 45efc72e18..ed51c05b39 100644
--- a/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/scripts/handlers/targethandlers/HolyThing.java
+++ b/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/scripts/handlers/targethandlers/HolyThing.java
@@ -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)
diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java
index 00d9d9a668..8aad19eb44 100644
--- a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java
+++ b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java
@@ -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;
}
diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/WorldObject.java b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/WorldObject.java
index d86548cb13..d5d1054c4d 100644
--- a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/WorldObject.java
+++ b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/WorldObject.java
@@ -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
diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/actor/instance/ArtefactInstance.java b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/actor/instance/ArtefactInstance.java
index 2e363633bc..f135327f08 100644
--- a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/actor/instance/ArtefactInstance.java
+++ b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/actor/instance/ArtefactInstance.java
@@ -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)
{
diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/scripts/handlers/admincommandhandlers/AdminMissingHtmls.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/scripts/handlers/admincommandhandlers/AdminMissingHtmls.java
index 7f33a7c230..a2da0dedb2 100644
--- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/scripts/handlers/admincommandhandlers/AdminMissingHtmls.java
+++ b/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/scripts/handlers/admincommandhandlers/AdminMissingHtmls.java
@@ -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;
diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/scripts/handlers/skillconditionhandlers/PossessHolythingSkillCondition.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/scripts/handlers/skillconditionhandlers/PossessHolythingSkillCondition.java
index 06907fd476..49085b6674 100644
--- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/scripts/handlers/skillconditionhandlers/PossessHolythingSkillCondition.java
+++ b/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/scripts/handlers/skillconditionhandlers/PossessHolythingSkillCondition.java
@@ -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;
diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/scripts/handlers/targethandlers/HolyThing.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/scripts/handlers/targethandlers/HolyThing.java
index 45efc72e18..ed51c05b39 100644
--- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/scripts/handlers/targethandlers/HolyThing.java
+++ b/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/scripts/handlers/targethandlers/HolyThing.java
@@ -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)
diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java
index 00d9d9a668..8aad19eb44 100644
--- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java
+++ b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java
@@ -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;
}
diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/WorldObject.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/WorldObject.java
index d86548cb13..d5d1054c4d 100644
--- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/WorldObject.java
+++ b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/WorldObject.java
@@ -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
diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/actor/instance/ArtefactInstance.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/actor/instance/ArtefactInstance.java
index 2e363633bc..f135327f08 100644
--- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/actor/instance/ArtefactInstance.java
+++ b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/actor/instance/ArtefactInstance.java
@@ -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)
{
diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/handlers/admincommandhandlers/AdminMissingHtmls.java b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/handlers/admincommandhandlers/AdminMissingHtmls.java
index 7f33a7c230..a2da0dedb2 100644
--- a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/handlers/admincommandhandlers/AdminMissingHtmls.java
+++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/handlers/admincommandhandlers/AdminMissingHtmls.java
@@ -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;
diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/handlers/skillconditionhandlers/PossessHolythingSkillCondition.java b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/handlers/skillconditionhandlers/PossessHolythingSkillCondition.java
index 06907fd476..49085b6674 100644
--- a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/handlers/skillconditionhandlers/PossessHolythingSkillCondition.java
+++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/handlers/skillconditionhandlers/PossessHolythingSkillCondition.java
@@ -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;
diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/handlers/targethandlers/HolyThing.java b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/handlers/targethandlers/HolyThing.java
index 45efc72e18..ed51c05b39 100644
--- a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/handlers/targethandlers/HolyThing.java
+++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/handlers/targethandlers/HolyThing.java
@@ -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)
diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java
index 00d9d9a668..8aad19eb44 100644
--- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java
+++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java
@@ -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;
}
diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/WorldObject.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/WorldObject.java
index d86548cb13..d5d1054c4d 100644
--- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/WorldObject.java
+++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/WorldObject.java
@@ -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
diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/actor/instance/ArtefactInstance.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/actor/instance/ArtefactInstance.java
index 2e363633bc..f135327f08 100644
--- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/actor/instance/ArtefactInstance.java
+++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/actor/instance/ArtefactInstance.java
@@ -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)
{
diff --git a/L2J_Mobius_Classic_Interlude/dist/game/data/scripts/handlers/admincommandhandlers/AdminMissingHtmls.java b/L2J_Mobius_Classic_Interlude/dist/game/data/scripts/handlers/admincommandhandlers/AdminMissingHtmls.java
index 7f33a7c230..a2da0dedb2 100644
--- a/L2J_Mobius_Classic_Interlude/dist/game/data/scripts/handlers/admincommandhandlers/AdminMissingHtmls.java
+++ b/L2J_Mobius_Classic_Interlude/dist/game/data/scripts/handlers/admincommandhandlers/AdminMissingHtmls.java
@@ -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;
diff --git a/L2J_Mobius_Classic_Interlude/dist/game/data/scripts/handlers/skillconditionhandlers/PossessHolythingSkillCondition.java b/L2J_Mobius_Classic_Interlude/dist/game/data/scripts/handlers/skillconditionhandlers/PossessHolythingSkillCondition.java
index 06907fd476..49085b6674 100644
--- a/L2J_Mobius_Classic_Interlude/dist/game/data/scripts/handlers/skillconditionhandlers/PossessHolythingSkillCondition.java
+++ b/L2J_Mobius_Classic_Interlude/dist/game/data/scripts/handlers/skillconditionhandlers/PossessHolythingSkillCondition.java
@@ -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;
diff --git a/L2J_Mobius_Classic_Interlude/dist/game/data/scripts/handlers/targethandlers/HolyThing.java b/L2J_Mobius_Classic_Interlude/dist/game/data/scripts/handlers/targethandlers/HolyThing.java
index 45efc72e18..ed51c05b39 100644
--- a/L2J_Mobius_Classic_Interlude/dist/game/data/scripts/handlers/targethandlers/HolyThing.java
+++ b/L2J_Mobius_Classic_Interlude/dist/game/data/scripts/handlers/targethandlers/HolyThing.java
@@ -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)
diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java
index 00d9d9a668..8aad19eb44 100644
--- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java
+++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java
@@ -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;
}
diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/WorldObject.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/WorldObject.java
index d86548cb13..d5d1054c4d 100644
--- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/WorldObject.java
+++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/WorldObject.java
@@ -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
diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/actor/instance/ArtefactInstance.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/actor/instance/ArtefactInstance.java
index 2e363633bc..f135327f08 100644
--- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/actor/instance/ArtefactInstance.java
+++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/actor/instance/ArtefactInstance.java
@@ -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)
{