From 20275f28e7648f3079eef35d7bf78f334123f591 Mon Sep 17 00:00:00 2001 From: MobiusDevelopment <8391001+MobiusDevelopment@users.noreply.github.com> Date: Mon, 29 Aug 2022 11:15:06 +0000 Subject: [PATCH] Fixed monster random movement. --- .../java/org/l2jmobius/gameserver/ai/AttackableAI.java | 3 ++- .../java/org/l2jmobius/gameserver/ai/AttackableAI.java | 3 ++- .../java/org/l2jmobius/gameserver/ai/AttackableAI.java | 3 ++- .../java/org/l2jmobius/gameserver/ai/AttackableAI.java | 3 ++- .../java/org/l2jmobius/gameserver/ai/AttackableAI.java | 3 ++- .../java/org/l2jmobius/gameserver/ai/AttackableAI.java | 3 ++- .../java/org/l2jmobius/gameserver/ai/AttackableAI.java | 3 ++- .../java/org/l2jmobius/gameserver/ai/AttackableAI.java | 3 ++- .../java/org/l2jmobius/gameserver/ai/AttackableAI.java | 3 ++- .../java/org/l2jmobius/gameserver/ai/AttackableAI.java | 3 ++- .../java/org/l2jmobius/gameserver/ai/AttackableAI.java | 3 ++- .../java/org/l2jmobius/gameserver/ai/AttackableAI.java | 2 +- .../java/org/l2jmobius/gameserver/ai/AttackableAI.java | 2 +- .../java/org/l2jmobius/gameserver/ai/AttackableAI.java | 2 +- .../java/org/l2jmobius/gameserver/ai/AttackableAI.java | 2 +- .../java/org/l2jmobius/gameserver/ai/AttackableAI.java | 2 +- .../java/org/l2jmobius/gameserver/ai/AttackableAI.java | 3 ++- .../java/org/l2jmobius/gameserver/ai/AttackableAI.java | 3 ++- .../java/org/l2jmobius/gameserver/ai/AttackableAI.java | 3 ++- .../java/org/l2jmobius/gameserver/ai/AttackableAI.java | 3 ++- .../java/org/l2jmobius/gameserver/ai/AttackableAI.java | 3 ++- .../java/org/l2jmobius/gameserver/ai/AttackableAI.java | 3 ++- .../java/org/l2jmobius/gameserver/ai/AttackableAI.java | 3 ++- .../java/org/l2jmobius/gameserver/ai/AttackableAI.java | 3 ++- .../java/org/l2jmobius/gameserver/ai/AttackableAI.java | 3 ++- .../java/org/l2jmobius/gameserver/ai/AttackableAI.java | 3 ++- .../java/org/l2jmobius/gameserver/ai/AttackableAI.java | 3 ++- .../java/org/l2jmobius/gameserver/ai/AttackableAI.java | 3 ++- .../java/org/l2jmobius/gameserver/ai/AttackableAI.java | 3 ++- 29 files changed, 53 insertions(+), 29 deletions(-) diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/ai/AttackableAI.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/ai/AttackableAI.java index 0ff1a416fd..ec2c35b250 100644 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/ai/AttackableAI.java +++ b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/ai/AttackableAI.java @@ -69,6 +69,7 @@ public class AttackableAI extends CreatureAI private static final int RANDOM_WALK_RATE = 30; // confirmed private static final int MAX_ATTACK_TIMEOUT = 1200; // int ticks, i.e. 2min + /** * The delay after which the attacked is stopped. */ @@ -478,7 +479,7 @@ public class AttackableAI extends CreatureAI } // Order this attackable to return to its spawn because there's no target to attack - if (!npc.isWalker() && ((getTarget() == null) || getTarget().isInvisible() || (getTarget().isPlayer() && !Config.ATTACKABLES_CAMP_PLAYER_CORPSES && getTarget().getActingPlayer().isAlikeDead()))) + if (!npc.isWalker() && (npc.getSpawn() != null) && (npc.calculateDistance2D(npc.getSpawn()) > Config.MAX_DRIFT_RANGE) && ((getTarget() == null) || getTarget().isInvisible() || (getTarget().isPlayer() && !Config.ATTACKABLES_CAMP_PLAYER_CORPSES && getTarget().getActingPlayer().isAlikeDead()))) { npc.setWalking(); npc.returnHome(); diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/ai/AttackableAI.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/ai/AttackableAI.java index 0ff1a416fd..ec2c35b250 100644 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/ai/AttackableAI.java +++ b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/ai/AttackableAI.java @@ -69,6 +69,7 @@ public class AttackableAI extends CreatureAI private static final int RANDOM_WALK_RATE = 30; // confirmed private static final int MAX_ATTACK_TIMEOUT = 1200; // int ticks, i.e. 2min + /** * The delay after which the attacked is stopped. */ @@ -478,7 +479,7 @@ public class AttackableAI extends CreatureAI } // Order this attackable to return to its spawn because there's no target to attack - if (!npc.isWalker() && ((getTarget() == null) || getTarget().isInvisible() || (getTarget().isPlayer() && !Config.ATTACKABLES_CAMP_PLAYER_CORPSES && getTarget().getActingPlayer().isAlikeDead()))) + if (!npc.isWalker() && (npc.getSpawn() != null) && (npc.calculateDistance2D(npc.getSpawn()) > Config.MAX_DRIFT_RANGE) && ((getTarget() == null) || getTarget().isInvisible() || (getTarget().isPlayer() && !Config.ATTACKABLES_CAMP_PLAYER_CORPSES && getTarget().getActingPlayer().isAlikeDead()))) { npc.setWalking(); npc.returnHome(); diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/ai/AttackableAI.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/ai/AttackableAI.java index 0ff1a416fd..ec2c35b250 100644 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/ai/AttackableAI.java +++ b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/ai/AttackableAI.java @@ -69,6 +69,7 @@ public class AttackableAI extends CreatureAI private static final int RANDOM_WALK_RATE = 30; // confirmed private static final int MAX_ATTACK_TIMEOUT = 1200; // int ticks, i.e. 2min + /** * The delay after which the attacked is stopped. */ @@ -478,7 +479,7 @@ public class AttackableAI extends CreatureAI } // Order this attackable to return to its spawn because there's no target to attack - if (!npc.isWalker() && ((getTarget() == null) || getTarget().isInvisible() || (getTarget().isPlayer() && !Config.ATTACKABLES_CAMP_PLAYER_CORPSES && getTarget().getActingPlayer().isAlikeDead()))) + if (!npc.isWalker() && (npc.getSpawn() != null) && (npc.calculateDistance2D(npc.getSpawn()) > Config.MAX_DRIFT_RANGE) && ((getTarget() == null) || getTarget().isInvisible() || (getTarget().isPlayer() && !Config.ATTACKABLES_CAMP_PLAYER_CORPSES && getTarget().getActingPlayer().isAlikeDead()))) { npc.setWalking(); npc.returnHome(); diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/ai/AttackableAI.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/ai/AttackableAI.java index 0ff1a416fd..ec2c35b250 100644 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/ai/AttackableAI.java +++ b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/ai/AttackableAI.java @@ -69,6 +69,7 @@ public class AttackableAI extends CreatureAI private static final int RANDOM_WALK_RATE = 30; // confirmed private static final int MAX_ATTACK_TIMEOUT = 1200; // int ticks, i.e. 2min + /** * The delay after which the attacked is stopped. */ @@ -478,7 +479,7 @@ public class AttackableAI extends CreatureAI } // Order this attackable to return to its spawn because there's no target to attack - if (!npc.isWalker() && ((getTarget() == null) || getTarget().isInvisible() || (getTarget().isPlayer() && !Config.ATTACKABLES_CAMP_PLAYER_CORPSES && getTarget().getActingPlayer().isAlikeDead()))) + if (!npc.isWalker() && (npc.getSpawn() != null) && (npc.calculateDistance2D(npc.getSpawn()) > Config.MAX_DRIFT_RANGE) && ((getTarget() == null) || getTarget().isInvisible() || (getTarget().isPlayer() && !Config.ATTACKABLES_CAMP_PLAYER_CORPSES && getTarget().getActingPlayer().isAlikeDead()))) { npc.setWalking(); npc.returnHome(); diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/ai/AttackableAI.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/ai/AttackableAI.java index 0ff1a416fd..ec2c35b250 100644 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/ai/AttackableAI.java +++ b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/ai/AttackableAI.java @@ -69,6 +69,7 @@ public class AttackableAI extends CreatureAI private static final int RANDOM_WALK_RATE = 30; // confirmed private static final int MAX_ATTACK_TIMEOUT = 1200; // int ticks, i.e. 2min + /** * The delay after which the attacked is stopped. */ @@ -478,7 +479,7 @@ public class AttackableAI extends CreatureAI } // Order this attackable to return to its spawn because there's no target to attack - if (!npc.isWalker() && ((getTarget() == null) || getTarget().isInvisible() || (getTarget().isPlayer() && !Config.ATTACKABLES_CAMP_PLAYER_CORPSES && getTarget().getActingPlayer().isAlikeDead()))) + if (!npc.isWalker() && (npc.getSpawn() != null) && (npc.calculateDistance2D(npc.getSpawn()) > Config.MAX_DRIFT_RANGE) && ((getTarget() == null) || getTarget().isInvisible() || (getTarget().isPlayer() && !Config.ATTACKABLES_CAMP_PLAYER_CORPSES && getTarget().getActingPlayer().isAlikeDead()))) { npc.setWalking(); npc.returnHome(); diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/ai/AttackableAI.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/ai/AttackableAI.java index 0ff1a416fd..ec2c35b250 100644 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/ai/AttackableAI.java +++ b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/ai/AttackableAI.java @@ -69,6 +69,7 @@ public class AttackableAI extends CreatureAI private static final int RANDOM_WALK_RATE = 30; // confirmed private static final int MAX_ATTACK_TIMEOUT = 1200; // int ticks, i.e. 2min + /** * The delay after which the attacked is stopped. */ @@ -478,7 +479,7 @@ public class AttackableAI extends CreatureAI } // Order this attackable to return to its spawn because there's no target to attack - if (!npc.isWalker() && ((getTarget() == null) || getTarget().isInvisible() || (getTarget().isPlayer() && !Config.ATTACKABLES_CAMP_PLAYER_CORPSES && getTarget().getActingPlayer().isAlikeDead()))) + if (!npc.isWalker() && (npc.getSpawn() != null) && (npc.calculateDistance2D(npc.getSpawn()) > Config.MAX_DRIFT_RANGE) && ((getTarget() == null) || getTarget().isInvisible() || (getTarget().isPlayer() && !Config.ATTACKABLES_CAMP_PLAYER_CORPSES && getTarget().getActingPlayer().isAlikeDead()))) { npc.setWalking(); npc.returnHome(); diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/ai/AttackableAI.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/ai/AttackableAI.java index 0ff1a416fd..ec2c35b250 100644 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/ai/AttackableAI.java +++ b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/ai/AttackableAI.java @@ -69,6 +69,7 @@ public class AttackableAI extends CreatureAI private static final int RANDOM_WALK_RATE = 30; // confirmed private static final int MAX_ATTACK_TIMEOUT = 1200; // int ticks, i.e. 2min + /** * The delay after which the attacked is stopped. */ @@ -478,7 +479,7 @@ public class AttackableAI extends CreatureAI } // Order this attackable to return to its spawn because there's no target to attack - if (!npc.isWalker() && ((getTarget() == null) || getTarget().isInvisible() || (getTarget().isPlayer() && !Config.ATTACKABLES_CAMP_PLAYER_CORPSES && getTarget().getActingPlayer().isAlikeDead()))) + if (!npc.isWalker() && (npc.getSpawn() != null) && (npc.calculateDistance2D(npc.getSpawn()) > Config.MAX_DRIFT_RANGE) && ((getTarget() == null) || getTarget().isInvisible() || (getTarget().isPlayer() && !Config.ATTACKABLES_CAMP_PLAYER_CORPSES && getTarget().getActingPlayer().isAlikeDead()))) { npc.setWalking(); npc.returnHome(); diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/ai/AttackableAI.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/ai/AttackableAI.java index 0ff1a416fd..ec2c35b250 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/ai/AttackableAI.java +++ b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/ai/AttackableAI.java @@ -69,6 +69,7 @@ public class AttackableAI extends CreatureAI private static final int RANDOM_WALK_RATE = 30; // confirmed private static final int MAX_ATTACK_TIMEOUT = 1200; // int ticks, i.e. 2min + /** * The delay after which the attacked is stopped. */ @@ -478,7 +479,7 @@ public class AttackableAI extends CreatureAI } // Order this attackable to return to its spawn because there's no target to attack - if (!npc.isWalker() && ((getTarget() == null) || getTarget().isInvisible() || (getTarget().isPlayer() && !Config.ATTACKABLES_CAMP_PLAYER_CORPSES && getTarget().getActingPlayer().isAlikeDead()))) + if (!npc.isWalker() && (npc.getSpawn() != null) && (npc.calculateDistance2D(npc.getSpawn()) > Config.MAX_DRIFT_RANGE) && ((getTarget() == null) || getTarget().isInvisible() || (getTarget().isPlayer() && !Config.ATTACKABLES_CAMP_PLAYER_CORPSES && getTarget().getActingPlayer().isAlikeDead()))) { npc.setWalking(); npc.returnHome(); diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/ai/AttackableAI.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/ai/AttackableAI.java index 0ff1a416fd..ec2c35b250 100644 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/ai/AttackableAI.java +++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/ai/AttackableAI.java @@ -69,6 +69,7 @@ public class AttackableAI extends CreatureAI private static final int RANDOM_WALK_RATE = 30; // confirmed private static final int MAX_ATTACK_TIMEOUT = 1200; // int ticks, i.e. 2min + /** * The delay after which the attacked is stopped. */ @@ -478,7 +479,7 @@ public class AttackableAI extends CreatureAI } // Order this attackable to return to its spawn because there's no target to attack - if (!npc.isWalker() && ((getTarget() == null) || getTarget().isInvisible() || (getTarget().isPlayer() && !Config.ATTACKABLES_CAMP_PLAYER_CORPSES && getTarget().getActingPlayer().isAlikeDead()))) + if (!npc.isWalker() && (npc.getSpawn() != null) && (npc.calculateDistance2D(npc.getSpawn()) > Config.MAX_DRIFT_RANGE) && ((getTarget() == null) || getTarget().isInvisible() || (getTarget().isPlayer() && !Config.ATTACKABLES_CAMP_PLAYER_CORPSES && getTarget().getActingPlayer().isAlikeDead()))) { npc.setWalking(); npc.returnHome(); diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/ai/AttackableAI.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/ai/AttackableAI.java index 0ff1a416fd..ec2c35b250 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/ai/AttackableAI.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/ai/AttackableAI.java @@ -69,6 +69,7 @@ public class AttackableAI extends CreatureAI private static final int RANDOM_WALK_RATE = 30; // confirmed private static final int MAX_ATTACK_TIMEOUT = 1200; // int ticks, i.e. 2min + /** * The delay after which the attacked is stopped. */ @@ -478,7 +479,7 @@ public class AttackableAI extends CreatureAI } // Order this attackable to return to its spawn because there's no target to attack - if (!npc.isWalker() && ((getTarget() == null) || getTarget().isInvisible() || (getTarget().isPlayer() && !Config.ATTACKABLES_CAMP_PLAYER_CORPSES && getTarget().getActingPlayer().isAlikeDead()))) + if (!npc.isWalker() && (npc.getSpawn() != null) && (npc.calculateDistance2D(npc.getSpawn()) > Config.MAX_DRIFT_RANGE) && ((getTarget() == null) || getTarget().isInvisible() || (getTarget().isPlayer() && !Config.ATTACKABLES_CAMP_PLAYER_CORPSES && getTarget().getActingPlayer().isAlikeDead()))) { npc.setWalking(); npc.returnHome(); diff --git a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/ai/AttackableAI.java b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/ai/AttackableAI.java index 0ff1a416fd..ec2c35b250 100644 --- a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/ai/AttackableAI.java +++ b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/ai/AttackableAI.java @@ -69,6 +69,7 @@ public class AttackableAI extends CreatureAI private static final int RANDOM_WALK_RATE = 30; // confirmed private static final int MAX_ATTACK_TIMEOUT = 1200; // int ticks, i.e. 2min + /** * The delay after which the attacked is stopped. */ @@ -478,7 +479,7 @@ public class AttackableAI extends CreatureAI } // Order this attackable to return to its spawn because there's no target to attack - if (!npc.isWalker() && ((getTarget() == null) || getTarget().isInvisible() || (getTarget().isPlayer() && !Config.ATTACKABLES_CAMP_PLAYER_CORPSES && getTarget().getActingPlayer().isAlikeDead()))) + if (!npc.isWalker() && (npc.getSpawn() != null) && (npc.calculateDistance2D(npc.getSpawn()) > Config.MAX_DRIFT_RANGE) && ((getTarget() == null) || getTarget().isInvisible() || (getTarget().isPlayer() && !Config.ATTACKABLES_CAMP_PLAYER_CORPSES && getTarget().getActingPlayer().isAlikeDead()))) { npc.setWalking(); npc.returnHome(); diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/ai/AttackableAI.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/ai/AttackableAI.java index fd5da2d27d..2132be8c46 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/ai/AttackableAI.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/ai/AttackableAI.java @@ -492,7 +492,7 @@ public class AttackableAI extends CreatureAI } // Order this attackable to return to its spawn because there's no target to attack - if (!npc.isWalker() && ((getTarget() == null) || (getTarget().isPlayer() && ((!Config.ATTACKABLES_CAMP_PLAYER_CORPSES && getTarget().getActingPlayer().isAlikeDead()) || getTarget().getActingPlayer().getAppearance().isInvisible())))) + if (!npc.isWalker() && (npc.getSpawn() != null) && (npc.calculateDistance2D(npc.getSpawn().getX(), npc.getSpawn().getY(), npc.getSpawn().getZ()) > Config.MAX_DRIFT_RANGE) && ((getTarget() == null) || (getTarget().isPlayer() && ((!Config.ATTACKABLES_CAMP_PLAYER_CORPSES && getTarget().getActingPlayer().isAlikeDead()) || getTarget().getActingPlayer().getAppearance().isInvisible())))) { npc.setWalking(); npc.returnHome(); diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/ai/AttackableAI.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/ai/AttackableAI.java index fd5da2d27d..2132be8c46 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/ai/AttackableAI.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/ai/AttackableAI.java @@ -492,7 +492,7 @@ public class AttackableAI extends CreatureAI } // Order this attackable to return to its spawn because there's no target to attack - if (!npc.isWalker() && ((getTarget() == null) || (getTarget().isPlayer() && ((!Config.ATTACKABLES_CAMP_PLAYER_CORPSES && getTarget().getActingPlayer().isAlikeDead()) || getTarget().getActingPlayer().getAppearance().isInvisible())))) + if (!npc.isWalker() && (npc.getSpawn() != null) && (npc.calculateDistance2D(npc.getSpawn().getX(), npc.getSpawn().getY(), npc.getSpawn().getZ()) > Config.MAX_DRIFT_RANGE) && ((getTarget() == null) || (getTarget().isPlayer() && ((!Config.ATTACKABLES_CAMP_PLAYER_CORPSES && getTarget().getActingPlayer().isAlikeDead()) || getTarget().getActingPlayer().getAppearance().isInvisible())))) { npc.setWalking(); npc.returnHome(); diff --git a/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/ai/AttackableAI.java b/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/ai/AttackableAI.java index 901ca2267f..42b32c146f 100644 --- a/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/ai/AttackableAI.java +++ b/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/ai/AttackableAI.java @@ -616,7 +616,7 @@ public class AttackableAI extends CreatureAI } // Order this attackable to return to its spawn because there's no target to attack - if (!npc.isWalker() && ((getTarget() == null) || getTarget().isInvisible() || (getTarget().isPlayer() && !Config.ATTACKABLES_CAMP_PLAYER_CORPSES && getTarget().getActingPlayer().isAlikeDead()))) + if (!npc.isWalker() && (npc.getSpawn() != null) && (npc.calculateDistance2D(npc.getSpawn()) > Config.MAX_DRIFT_RANGE) && ((getTarget() == null) || getTarget().isInvisible() || (getTarget().isPlayer() && !Config.ATTACKABLES_CAMP_PLAYER_CORPSES && getTarget().getActingPlayer().isAlikeDead()))) { npc.setWalking(); npc.returnHome(); diff --git a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/ai/AttackableAI.java b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/ai/AttackableAI.java index 901ca2267f..42b32c146f 100644 --- a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/ai/AttackableAI.java +++ b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/ai/AttackableAI.java @@ -616,7 +616,7 @@ public class AttackableAI extends CreatureAI } // Order this attackable to return to its spawn because there's no target to attack - if (!npc.isWalker() && ((getTarget() == null) || getTarget().isInvisible() || (getTarget().isPlayer() && !Config.ATTACKABLES_CAMP_PLAYER_CORPSES && getTarget().getActingPlayer().isAlikeDead()))) + if (!npc.isWalker() && (npc.getSpawn() != null) && (npc.calculateDistance2D(npc.getSpawn()) > Config.MAX_DRIFT_RANGE) && ((getTarget() == null) || getTarget().isInvisible() || (getTarget().isPlayer() && !Config.ATTACKABLES_CAMP_PLAYER_CORPSES && getTarget().getActingPlayer().isAlikeDead()))) { npc.setWalking(); npc.returnHome(); diff --git a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/ai/AttackableAI.java b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/ai/AttackableAI.java index 901ca2267f..42b32c146f 100644 --- a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/ai/AttackableAI.java +++ b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/ai/AttackableAI.java @@ -616,7 +616,7 @@ public class AttackableAI extends CreatureAI } // Order this attackable to return to its spawn because there's no target to attack - if (!npc.isWalker() && ((getTarget() == null) || getTarget().isInvisible() || (getTarget().isPlayer() && !Config.ATTACKABLES_CAMP_PLAYER_CORPSES && getTarget().getActingPlayer().isAlikeDead()))) + if (!npc.isWalker() && (npc.getSpawn() != null) && (npc.calculateDistance2D(npc.getSpawn()) > Config.MAX_DRIFT_RANGE) && ((getTarget() == null) || getTarget().isInvisible() || (getTarget().isPlayer() && !Config.ATTACKABLES_CAMP_PLAYER_CORPSES && getTarget().getActingPlayer().isAlikeDead()))) { npc.setWalking(); npc.returnHome(); diff --git a/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/ai/AttackableAI.java b/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/ai/AttackableAI.java index 0ff1a416fd..ec2c35b250 100644 --- a/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/ai/AttackableAI.java +++ b/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/ai/AttackableAI.java @@ -69,6 +69,7 @@ public class AttackableAI extends CreatureAI private static final int RANDOM_WALK_RATE = 30; // confirmed private static final int MAX_ATTACK_TIMEOUT = 1200; // int ticks, i.e. 2min + /** * The delay after which the attacked is stopped. */ @@ -478,7 +479,7 @@ public class AttackableAI extends CreatureAI } // Order this attackable to return to its spawn because there's no target to attack - if (!npc.isWalker() && ((getTarget() == null) || getTarget().isInvisible() || (getTarget().isPlayer() && !Config.ATTACKABLES_CAMP_PLAYER_CORPSES && getTarget().getActingPlayer().isAlikeDead()))) + if (!npc.isWalker() && (npc.getSpawn() != null) && (npc.calculateDistance2D(npc.getSpawn()) > Config.MAX_DRIFT_RANGE) && ((getTarget() == null) || getTarget().isInvisible() || (getTarget().isPlayer() && !Config.ATTACKABLES_CAMP_PLAYER_CORPSES && getTarget().getActingPlayer().isAlikeDead()))) { npc.setWalking(); npc.returnHome(); diff --git a/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/ai/AttackableAI.java b/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/ai/AttackableAI.java index 0ff1a416fd..ec2c35b250 100644 --- a/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/ai/AttackableAI.java +++ b/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/ai/AttackableAI.java @@ -69,6 +69,7 @@ public class AttackableAI extends CreatureAI private static final int RANDOM_WALK_RATE = 30; // confirmed private static final int MAX_ATTACK_TIMEOUT = 1200; // int ticks, i.e. 2min + /** * The delay after which the attacked is stopped. */ @@ -478,7 +479,7 @@ public class AttackableAI extends CreatureAI } // Order this attackable to return to its spawn because there's no target to attack - if (!npc.isWalker() && ((getTarget() == null) || getTarget().isInvisible() || (getTarget().isPlayer() && !Config.ATTACKABLES_CAMP_PLAYER_CORPSES && getTarget().getActingPlayer().isAlikeDead()))) + if (!npc.isWalker() && (npc.getSpawn() != null) && (npc.calculateDistance2D(npc.getSpawn()) > Config.MAX_DRIFT_RANGE) && ((getTarget() == null) || getTarget().isInvisible() || (getTarget().isPlayer() && !Config.ATTACKABLES_CAMP_PLAYER_CORPSES && getTarget().getActingPlayer().isAlikeDead()))) { npc.setWalking(); npc.returnHome(); diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/ai/AttackableAI.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/ai/AttackableAI.java index 0ff1a416fd..ec2c35b250 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/ai/AttackableAI.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/ai/AttackableAI.java @@ -69,6 +69,7 @@ public class AttackableAI extends CreatureAI private static final int RANDOM_WALK_RATE = 30; // confirmed private static final int MAX_ATTACK_TIMEOUT = 1200; // int ticks, i.e. 2min + /** * The delay after which the attacked is stopped. */ @@ -478,7 +479,7 @@ public class AttackableAI extends CreatureAI } // Order this attackable to return to its spawn because there's no target to attack - if (!npc.isWalker() && ((getTarget() == null) || getTarget().isInvisible() || (getTarget().isPlayer() && !Config.ATTACKABLES_CAMP_PLAYER_CORPSES && getTarget().getActingPlayer().isAlikeDead()))) + if (!npc.isWalker() && (npc.getSpawn() != null) && (npc.calculateDistance2D(npc.getSpawn()) > Config.MAX_DRIFT_RANGE) && ((getTarget() == null) || getTarget().isInvisible() || (getTarget().isPlayer() && !Config.ATTACKABLES_CAMP_PLAYER_CORPSES && getTarget().getActingPlayer().isAlikeDead()))) { npc.setWalking(); npc.returnHome(); diff --git a/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/ai/AttackableAI.java b/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/ai/AttackableAI.java index 0ff1a416fd..ec2c35b250 100644 --- a/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/ai/AttackableAI.java +++ b/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/ai/AttackableAI.java @@ -69,6 +69,7 @@ public class AttackableAI extends CreatureAI private static final int RANDOM_WALK_RATE = 30; // confirmed private static final int MAX_ATTACK_TIMEOUT = 1200; // int ticks, i.e. 2min + /** * The delay after which the attacked is stopped. */ @@ -478,7 +479,7 @@ public class AttackableAI extends CreatureAI } // Order this attackable to return to its spawn because there's no target to attack - if (!npc.isWalker() && ((getTarget() == null) || getTarget().isInvisible() || (getTarget().isPlayer() && !Config.ATTACKABLES_CAMP_PLAYER_CORPSES && getTarget().getActingPlayer().isAlikeDead()))) + if (!npc.isWalker() && (npc.getSpawn() != null) && (npc.calculateDistance2D(npc.getSpawn()) > Config.MAX_DRIFT_RANGE) && ((getTarget() == null) || getTarget().isInvisible() || (getTarget().isPlayer() && !Config.ATTACKABLES_CAMP_PLAYER_CORPSES && getTarget().getActingPlayer().isAlikeDead()))) { npc.setWalking(); npc.returnHome(); diff --git a/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/ai/AttackableAI.java b/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/ai/AttackableAI.java index 0ff1a416fd..ec2c35b250 100644 --- a/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/ai/AttackableAI.java +++ b/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/ai/AttackableAI.java @@ -69,6 +69,7 @@ public class AttackableAI extends CreatureAI private static final int RANDOM_WALK_RATE = 30; // confirmed private static final int MAX_ATTACK_TIMEOUT = 1200; // int ticks, i.e. 2min + /** * The delay after which the attacked is stopped. */ @@ -478,7 +479,7 @@ public class AttackableAI extends CreatureAI } // Order this attackable to return to its spawn because there's no target to attack - if (!npc.isWalker() && ((getTarget() == null) || getTarget().isInvisible() || (getTarget().isPlayer() && !Config.ATTACKABLES_CAMP_PLAYER_CORPSES && getTarget().getActingPlayer().isAlikeDead()))) + if (!npc.isWalker() && (npc.getSpawn() != null) && (npc.calculateDistance2D(npc.getSpawn()) > Config.MAX_DRIFT_RANGE) && ((getTarget() == null) || getTarget().isInvisible() || (getTarget().isPlayer() && !Config.ATTACKABLES_CAMP_PLAYER_CORPSES && getTarget().getActingPlayer().isAlikeDead()))) { npc.setWalking(); npc.returnHome(); diff --git a/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/ai/AttackableAI.java b/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/ai/AttackableAI.java index 0ff1a416fd..ec2c35b250 100644 --- a/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/ai/AttackableAI.java +++ b/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/ai/AttackableAI.java @@ -69,6 +69,7 @@ public class AttackableAI extends CreatureAI private static final int RANDOM_WALK_RATE = 30; // confirmed private static final int MAX_ATTACK_TIMEOUT = 1200; // int ticks, i.e. 2min + /** * The delay after which the attacked is stopped. */ @@ -478,7 +479,7 @@ public class AttackableAI extends CreatureAI } // Order this attackable to return to its spawn because there's no target to attack - if (!npc.isWalker() && ((getTarget() == null) || getTarget().isInvisible() || (getTarget().isPlayer() && !Config.ATTACKABLES_CAMP_PLAYER_CORPSES && getTarget().getActingPlayer().isAlikeDead()))) + if (!npc.isWalker() && (npc.getSpawn() != null) && (npc.calculateDistance2D(npc.getSpawn()) > Config.MAX_DRIFT_RANGE) && ((getTarget() == null) || getTarget().isInvisible() || (getTarget().isPlayer() && !Config.ATTACKABLES_CAMP_PLAYER_CORPSES && getTarget().getActingPlayer().isAlikeDead()))) { npc.setWalking(); npc.returnHome(); diff --git a/L2J_Mobius_Classic_2.9.5_Saviors/java/org/l2jmobius/gameserver/ai/AttackableAI.java b/L2J_Mobius_Classic_2.9.5_Saviors/java/org/l2jmobius/gameserver/ai/AttackableAI.java index 0ff1a416fd..ec2c35b250 100644 --- a/L2J_Mobius_Classic_2.9.5_Saviors/java/org/l2jmobius/gameserver/ai/AttackableAI.java +++ b/L2J_Mobius_Classic_2.9.5_Saviors/java/org/l2jmobius/gameserver/ai/AttackableAI.java @@ -69,6 +69,7 @@ public class AttackableAI extends CreatureAI private static final int RANDOM_WALK_RATE = 30; // confirmed private static final int MAX_ATTACK_TIMEOUT = 1200; // int ticks, i.e. 2min + /** * The delay after which the attacked is stopped. */ @@ -478,7 +479,7 @@ public class AttackableAI extends CreatureAI } // Order this attackable to return to its spawn because there's no target to attack - if (!npc.isWalker() && ((getTarget() == null) || getTarget().isInvisible() || (getTarget().isPlayer() && !Config.ATTACKABLES_CAMP_PLAYER_CORPSES && getTarget().getActingPlayer().isAlikeDead()))) + if (!npc.isWalker() && (npc.getSpawn() != null) && (npc.calculateDistance2D(npc.getSpawn()) > Config.MAX_DRIFT_RANGE) && ((getTarget() == null) || getTarget().isInvisible() || (getTarget().isPlayer() && !Config.ATTACKABLES_CAMP_PLAYER_CORPSES && getTarget().getActingPlayer().isAlikeDead()))) { npc.setWalking(); npc.returnHome(); diff --git a/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/ai/AttackableAI.java b/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/ai/AttackableAI.java index 0ff1a416fd..ec2c35b250 100644 --- a/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/ai/AttackableAI.java +++ b/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/ai/AttackableAI.java @@ -69,6 +69,7 @@ public class AttackableAI extends CreatureAI private static final int RANDOM_WALK_RATE = 30; // confirmed private static final int MAX_ATTACK_TIMEOUT = 1200; // int ticks, i.e. 2min + /** * The delay after which the attacked is stopped. */ @@ -478,7 +479,7 @@ public class AttackableAI extends CreatureAI } // Order this attackable to return to its spawn because there's no target to attack - if (!npc.isWalker() && ((getTarget() == null) || getTarget().isInvisible() || (getTarget().isPlayer() && !Config.ATTACKABLES_CAMP_PLAYER_CORPSES && getTarget().getActingPlayer().isAlikeDead()))) + if (!npc.isWalker() && (npc.getSpawn() != null) && (npc.calculateDistance2D(npc.getSpawn()) > Config.MAX_DRIFT_RANGE) && ((getTarget() == null) || getTarget().isInvisible() || (getTarget().isPlayer() && !Config.ATTACKABLES_CAMP_PLAYER_CORPSES && getTarget().getActingPlayer().isAlikeDead()))) { npc.setWalking(); npc.returnHome(); diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/ai/AttackableAI.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/ai/AttackableAI.java index 0ff1a416fd..ec2c35b250 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/ai/AttackableAI.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/ai/AttackableAI.java @@ -69,6 +69,7 @@ public class AttackableAI extends CreatureAI private static final int RANDOM_WALK_RATE = 30; // confirmed private static final int MAX_ATTACK_TIMEOUT = 1200; // int ticks, i.e. 2min + /** * The delay after which the attacked is stopped. */ @@ -478,7 +479,7 @@ public class AttackableAI extends CreatureAI } // Order this attackable to return to its spawn because there's no target to attack - if (!npc.isWalker() && ((getTarget() == null) || getTarget().isInvisible() || (getTarget().isPlayer() && !Config.ATTACKABLES_CAMP_PLAYER_CORPSES && getTarget().getActingPlayer().isAlikeDead()))) + if (!npc.isWalker() && (npc.getSpawn() != null) && (npc.calculateDistance2D(npc.getSpawn()) > Config.MAX_DRIFT_RANGE) && ((getTarget() == null) || getTarget().isInvisible() || (getTarget().isPlayer() && !Config.ATTACKABLES_CAMP_PLAYER_CORPSES && getTarget().getActingPlayer().isAlikeDead()))) { npc.setWalking(); npc.returnHome(); diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/ai/AttackableAI.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/ai/AttackableAI.java index de63d00efe..dd30731d29 100644 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/ai/AttackableAI.java +++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/ai/AttackableAI.java @@ -69,6 +69,7 @@ public class AttackableAI extends CreatureAI private static final int RANDOM_WALK_RATE = 30; // confirmed private static final int MAX_ATTACK_TIMEOUT = 1200; // int ticks, i.e. 2min + /** * The delay after which the attacked is stopped. */ @@ -478,7 +479,7 @@ public class AttackableAI extends CreatureAI } // Order this attackable to return to its spawn because there's no target to attack - if (!npc.isWalker() && ((getTarget() == null) || getTarget().isInvisible() || (getTarget().isPlayer() && !Config.ATTACKABLES_CAMP_PLAYER_CORPSES && getTarget().getActingPlayer().isAlikeDead()))) + if (!npc.isWalker() && (npc.getSpawn() != null) && (npc.calculateDistance2D(npc.getSpawn()) > Config.MAX_DRIFT_RANGE) && ((getTarget() == null) || getTarget().isInvisible() || (getTarget().isPlayer() && !Config.ATTACKABLES_CAMP_PLAYER_CORPSES && getTarget().getActingPlayer().isAlikeDead()))) { npc.setWalking(); npc.returnHome(); diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/ai/AttackableAI.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/ai/AttackableAI.java index 0ff1a416fd..ec2c35b250 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/ai/AttackableAI.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/ai/AttackableAI.java @@ -69,6 +69,7 @@ public class AttackableAI extends CreatureAI private static final int RANDOM_WALK_RATE = 30; // confirmed private static final int MAX_ATTACK_TIMEOUT = 1200; // int ticks, i.e. 2min + /** * The delay after which the attacked is stopped. */ @@ -478,7 +479,7 @@ public class AttackableAI extends CreatureAI } // Order this attackable to return to its spawn because there's no target to attack - if (!npc.isWalker() && ((getTarget() == null) || getTarget().isInvisible() || (getTarget().isPlayer() && !Config.ATTACKABLES_CAMP_PLAYER_CORPSES && getTarget().getActingPlayer().isAlikeDead()))) + if (!npc.isWalker() && (npc.getSpawn() != null) && (npc.calculateDistance2D(npc.getSpawn()) > Config.MAX_DRIFT_RANGE) && ((getTarget() == null) || getTarget().isInvisible() || (getTarget().isPlayer() && !Config.ATTACKABLES_CAMP_PLAYER_CORPSES && getTarget().getActingPlayer().isAlikeDead()))) { npc.setWalking(); npc.returnHome(); diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/ai/AttackableAI.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/ai/AttackableAI.java index 0ff1a416fd..ec2c35b250 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/ai/AttackableAI.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/ai/AttackableAI.java @@ -69,6 +69,7 @@ public class AttackableAI extends CreatureAI private static final int RANDOM_WALK_RATE = 30; // confirmed private static final int MAX_ATTACK_TIMEOUT = 1200; // int ticks, i.e. 2min + /** * The delay after which the attacked is stopped. */ @@ -478,7 +479,7 @@ public class AttackableAI extends CreatureAI } // Order this attackable to return to its spawn because there's no target to attack - if (!npc.isWalker() && ((getTarget() == null) || getTarget().isInvisible() || (getTarget().isPlayer() && !Config.ATTACKABLES_CAMP_PLAYER_CORPSES && getTarget().getActingPlayer().isAlikeDead()))) + if (!npc.isWalker() && (npc.getSpawn() != null) && (npc.calculateDistance2D(npc.getSpawn()) > Config.MAX_DRIFT_RANGE) && ((getTarget() == null) || getTarget().isInvisible() || (getTarget().isPlayer() && !Config.ATTACKABLES_CAMP_PLAYER_CORPSES && getTarget().getActingPlayer().isAlikeDead()))) { npc.setWalking(); npc.returnHome(); diff --git a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/ai/AttackableAI.java b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/ai/AttackableAI.java index 0ff1a416fd..ec2c35b250 100644 --- a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/ai/AttackableAI.java +++ b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/ai/AttackableAI.java @@ -69,6 +69,7 @@ public class AttackableAI extends CreatureAI private static final int RANDOM_WALK_RATE = 30; // confirmed private static final int MAX_ATTACK_TIMEOUT = 1200; // int ticks, i.e. 2min + /** * The delay after which the attacked is stopped. */ @@ -478,7 +479,7 @@ public class AttackableAI extends CreatureAI } // Order this attackable to return to its spawn because there's no target to attack - if (!npc.isWalker() && ((getTarget() == null) || getTarget().isInvisible() || (getTarget().isPlayer() && !Config.ATTACKABLES_CAMP_PLAYER_CORPSES && getTarget().getActingPlayer().isAlikeDead()))) + if (!npc.isWalker() && (npc.getSpawn() != null) && (npc.calculateDistance2D(npc.getSpawn()) > Config.MAX_DRIFT_RANGE) && ((getTarget() == null) || getTarget().isInvisible() || (getTarget().isPlayer() && !Config.ATTACKABLES_CAMP_PLAYER_CORPSES && getTarget().getActingPlayer().isAlikeDead()))) { npc.setWalking(); npc.returnHome();