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) {