From 1621590a7225141162984a4b136adb4134beeebb Mon Sep 17 00:00:00 2001 From: MobiusDevelopment <8391001+MobiusDevelopment@users.noreply.github.com> Date: Sun, 4 Sep 2022 21:52:27 +0000 Subject: [PATCH] Consider max drift range configuration when random moving. --- .../l2jmobius/gameserver/ai/AttackableAI.java | 16 +++++++++------- .../l2jmobius/gameserver/ai/AttackableAI.java | 16 +++++++++------- .../l2jmobius/gameserver/ai/AttackableAI.java | 16 +++++++++------- .../l2jmobius/gameserver/ai/AttackableAI.java | 16 +++++++++------- .../l2jmobius/gameserver/ai/AttackableAI.java | 16 +++++++++------- .../l2jmobius/gameserver/ai/AttackableAI.java | 16 +++++++++------- .../l2jmobius/gameserver/ai/AttackableAI.java | 16 +++++++++------- .../l2jmobius/gameserver/ai/AttackableAI.java | 16 +++++++++------- .../l2jmobius/gameserver/ai/AttackableAI.java | 16 +++++++++------- .../l2jmobius/gameserver/ai/AttackableAI.java | 16 +++++++++------- .../l2jmobius/gameserver/ai/AttackableAI.java | 16 +++++++++------- .../l2jmobius/gameserver/ai/AttackableAI.java | 16 +++++++++------- .../l2jmobius/gameserver/ai/AttackableAI.java | 16 +++++++++------- .../l2jmobius/gameserver/ai/AttackableAI.java | 16 +++++++++------- .../l2jmobius/gameserver/ai/AttackableAI.java | 16 +++++++++------- .../l2jmobius/gameserver/ai/AttackableAI.java | 16 +++++++++------- .../l2jmobius/gameserver/ai/AttackableAI.java | 16 +++++++++------- .../l2jmobius/gameserver/ai/AttackableAI.java | 16 +++++++++------- .../l2jmobius/gameserver/ai/AttackableAI.java | 16 +++++++++------- .../l2jmobius/gameserver/ai/AttackableAI.java | 16 +++++++++------- .../l2jmobius/gameserver/ai/AttackableAI.java | 16 +++++++++------- .../l2jmobius/gameserver/ai/AttackableAI.java | 16 +++++++++------- .../l2jmobius/gameserver/ai/AttackableAI.java | 16 +++++++++------- .../l2jmobius/gameserver/ai/AttackableAI.java | 16 +++++++++------- .../l2jmobius/gameserver/ai/AttackableAI.java | 16 +++++++++------- .../l2jmobius/gameserver/ai/AttackableAI.java | 16 +++++++++------- .../l2jmobius/gameserver/ai/AttackableAI.java | 16 +++++++++------- 27 files changed, 243 insertions(+), 189 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 ec2c35b250..24d0629f50 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 @@ -571,24 +571,26 @@ public class AttackableAI extends CreatureAI int x1 = npc.getSpawn().getX(); int y1 = npc.getSpawn().getY(); int z1 = npc.getSpawn().getZ(); - final int range = Config.MAX_DRIFT_RANGE; - if (!npc.isInsideRadius2D(x1, y1, 0, range)) + if (!npc.isInsideRadius2D(x1, y1, 0, Config.MAX_DRIFT_RANGE)) { npc.setReturningToSpawnPoint(true); } else { - final int deltaX = Rnd.get(range * 2); // x - int deltaY = Rnd.get(deltaX, range * 2); // distance + final int deltaX = Rnd.get(Config.MAX_DRIFT_RANGE * 2); // x + int deltaY = Rnd.get(deltaX, Config.MAX_DRIFT_RANGE * 2); // distance deltaY = (int) Math.sqrt((deltaY * deltaY) - (deltaX * deltaX)); // y - x1 = (deltaX + x1) - range; - y1 = (deltaY + y1) - range; + x1 = (deltaX + x1) - Config.MAX_DRIFT_RANGE; + y1 = (deltaY + y1) - Config.MAX_DRIFT_RANGE; z1 = npc.getZ(); } // Move the actor to Location (x,y,z) server side AND client side by sending Server->Client packet MoveToLocation (broadcast) final Location moveLoc = _actor.isFlying() ? new Location(x1, y1, z1) : GeoEngine.getInstance().getValidLocation(npc.getX(), npc.getY(), npc.getZ(), x1, y1, z1, npc.getInstanceWorld()); - moveTo(moveLoc.getX(), moveLoc.getY(), moveLoc.getZ()); + if (Util.calculateDistance(npc.getSpawn(), moveLoc, false, false) <= Config.MAX_DRIFT_RANGE) + { + moveTo(moveLoc.getX(), moveLoc.getY(), moveLoc.getZ()); + } } } 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 ec2c35b250..24d0629f50 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 @@ -571,24 +571,26 @@ public class AttackableAI extends CreatureAI int x1 = npc.getSpawn().getX(); int y1 = npc.getSpawn().getY(); int z1 = npc.getSpawn().getZ(); - final int range = Config.MAX_DRIFT_RANGE; - if (!npc.isInsideRadius2D(x1, y1, 0, range)) + if (!npc.isInsideRadius2D(x1, y1, 0, Config.MAX_DRIFT_RANGE)) { npc.setReturningToSpawnPoint(true); } else { - final int deltaX = Rnd.get(range * 2); // x - int deltaY = Rnd.get(deltaX, range * 2); // distance + final int deltaX = Rnd.get(Config.MAX_DRIFT_RANGE * 2); // x + int deltaY = Rnd.get(deltaX, Config.MAX_DRIFT_RANGE * 2); // distance deltaY = (int) Math.sqrt((deltaY * deltaY) - (deltaX * deltaX)); // y - x1 = (deltaX + x1) - range; - y1 = (deltaY + y1) - range; + x1 = (deltaX + x1) - Config.MAX_DRIFT_RANGE; + y1 = (deltaY + y1) - Config.MAX_DRIFT_RANGE; z1 = npc.getZ(); } // Move the actor to Location (x,y,z) server side AND client side by sending Server->Client packet MoveToLocation (broadcast) final Location moveLoc = _actor.isFlying() ? new Location(x1, y1, z1) : GeoEngine.getInstance().getValidLocation(npc.getX(), npc.getY(), npc.getZ(), x1, y1, z1, npc.getInstanceWorld()); - moveTo(moveLoc.getX(), moveLoc.getY(), moveLoc.getZ()); + if (Util.calculateDistance(npc.getSpawn(), moveLoc, false, false) <= Config.MAX_DRIFT_RANGE) + { + moveTo(moveLoc.getX(), moveLoc.getY(), moveLoc.getZ()); + } } } 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 ec2c35b250..24d0629f50 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 @@ -571,24 +571,26 @@ public class AttackableAI extends CreatureAI int x1 = npc.getSpawn().getX(); int y1 = npc.getSpawn().getY(); int z1 = npc.getSpawn().getZ(); - final int range = Config.MAX_DRIFT_RANGE; - if (!npc.isInsideRadius2D(x1, y1, 0, range)) + if (!npc.isInsideRadius2D(x1, y1, 0, Config.MAX_DRIFT_RANGE)) { npc.setReturningToSpawnPoint(true); } else { - final int deltaX = Rnd.get(range * 2); // x - int deltaY = Rnd.get(deltaX, range * 2); // distance + final int deltaX = Rnd.get(Config.MAX_DRIFT_RANGE * 2); // x + int deltaY = Rnd.get(deltaX, Config.MAX_DRIFT_RANGE * 2); // distance deltaY = (int) Math.sqrt((deltaY * deltaY) - (deltaX * deltaX)); // y - x1 = (deltaX + x1) - range; - y1 = (deltaY + y1) - range; + x1 = (deltaX + x1) - Config.MAX_DRIFT_RANGE; + y1 = (deltaY + y1) - Config.MAX_DRIFT_RANGE; z1 = npc.getZ(); } // Move the actor to Location (x,y,z) server side AND client side by sending Server->Client packet MoveToLocation (broadcast) final Location moveLoc = _actor.isFlying() ? new Location(x1, y1, z1) : GeoEngine.getInstance().getValidLocation(npc.getX(), npc.getY(), npc.getZ(), x1, y1, z1, npc.getInstanceWorld()); - moveTo(moveLoc.getX(), moveLoc.getY(), moveLoc.getZ()); + if (Util.calculateDistance(npc.getSpawn(), moveLoc, false, false) <= Config.MAX_DRIFT_RANGE) + { + moveTo(moveLoc.getX(), moveLoc.getY(), moveLoc.getZ()); + } } } 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 ec2c35b250..24d0629f50 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 @@ -571,24 +571,26 @@ public class AttackableAI extends CreatureAI int x1 = npc.getSpawn().getX(); int y1 = npc.getSpawn().getY(); int z1 = npc.getSpawn().getZ(); - final int range = Config.MAX_DRIFT_RANGE; - if (!npc.isInsideRadius2D(x1, y1, 0, range)) + if (!npc.isInsideRadius2D(x1, y1, 0, Config.MAX_DRIFT_RANGE)) { npc.setReturningToSpawnPoint(true); } else { - final int deltaX = Rnd.get(range * 2); // x - int deltaY = Rnd.get(deltaX, range * 2); // distance + final int deltaX = Rnd.get(Config.MAX_DRIFT_RANGE * 2); // x + int deltaY = Rnd.get(deltaX, Config.MAX_DRIFT_RANGE * 2); // distance deltaY = (int) Math.sqrt((deltaY * deltaY) - (deltaX * deltaX)); // y - x1 = (deltaX + x1) - range; - y1 = (deltaY + y1) - range; + x1 = (deltaX + x1) - Config.MAX_DRIFT_RANGE; + y1 = (deltaY + y1) - Config.MAX_DRIFT_RANGE; z1 = npc.getZ(); } // Move the actor to Location (x,y,z) server side AND client side by sending Server->Client packet MoveToLocation (broadcast) final Location moveLoc = _actor.isFlying() ? new Location(x1, y1, z1) : GeoEngine.getInstance().getValidLocation(npc.getX(), npc.getY(), npc.getZ(), x1, y1, z1, npc.getInstanceWorld()); - moveTo(moveLoc.getX(), moveLoc.getY(), moveLoc.getZ()); + if (Util.calculateDistance(npc.getSpawn(), moveLoc, false, false) <= Config.MAX_DRIFT_RANGE) + { + moveTo(moveLoc.getX(), moveLoc.getY(), moveLoc.getZ()); + } } } 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 ec2c35b250..24d0629f50 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 @@ -571,24 +571,26 @@ public class AttackableAI extends CreatureAI int x1 = npc.getSpawn().getX(); int y1 = npc.getSpawn().getY(); int z1 = npc.getSpawn().getZ(); - final int range = Config.MAX_DRIFT_RANGE; - if (!npc.isInsideRadius2D(x1, y1, 0, range)) + if (!npc.isInsideRadius2D(x1, y1, 0, Config.MAX_DRIFT_RANGE)) { npc.setReturningToSpawnPoint(true); } else { - final int deltaX = Rnd.get(range * 2); // x - int deltaY = Rnd.get(deltaX, range * 2); // distance + final int deltaX = Rnd.get(Config.MAX_DRIFT_RANGE * 2); // x + int deltaY = Rnd.get(deltaX, Config.MAX_DRIFT_RANGE * 2); // distance deltaY = (int) Math.sqrt((deltaY * deltaY) - (deltaX * deltaX)); // y - x1 = (deltaX + x1) - range; - y1 = (deltaY + y1) - range; + x1 = (deltaX + x1) - Config.MAX_DRIFT_RANGE; + y1 = (deltaY + y1) - Config.MAX_DRIFT_RANGE; z1 = npc.getZ(); } // Move the actor to Location (x,y,z) server side AND client side by sending Server->Client packet MoveToLocation (broadcast) final Location moveLoc = _actor.isFlying() ? new Location(x1, y1, z1) : GeoEngine.getInstance().getValidLocation(npc.getX(), npc.getY(), npc.getZ(), x1, y1, z1, npc.getInstanceWorld()); - moveTo(moveLoc.getX(), moveLoc.getY(), moveLoc.getZ()); + if (Util.calculateDistance(npc.getSpawn(), moveLoc, false, false) <= Config.MAX_DRIFT_RANGE) + { + moveTo(moveLoc.getX(), moveLoc.getY(), moveLoc.getZ()); + } } } 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 ec2c35b250..24d0629f50 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 @@ -571,24 +571,26 @@ public class AttackableAI extends CreatureAI int x1 = npc.getSpawn().getX(); int y1 = npc.getSpawn().getY(); int z1 = npc.getSpawn().getZ(); - final int range = Config.MAX_DRIFT_RANGE; - if (!npc.isInsideRadius2D(x1, y1, 0, range)) + if (!npc.isInsideRadius2D(x1, y1, 0, Config.MAX_DRIFT_RANGE)) { npc.setReturningToSpawnPoint(true); } else { - final int deltaX = Rnd.get(range * 2); // x - int deltaY = Rnd.get(deltaX, range * 2); // distance + final int deltaX = Rnd.get(Config.MAX_DRIFT_RANGE * 2); // x + int deltaY = Rnd.get(deltaX, Config.MAX_DRIFT_RANGE * 2); // distance deltaY = (int) Math.sqrt((deltaY * deltaY) - (deltaX * deltaX)); // y - x1 = (deltaX + x1) - range; - y1 = (deltaY + y1) - range; + x1 = (deltaX + x1) - Config.MAX_DRIFT_RANGE; + y1 = (deltaY + y1) - Config.MAX_DRIFT_RANGE; z1 = npc.getZ(); } // Move the actor to Location (x,y,z) server side AND client side by sending Server->Client packet MoveToLocation (broadcast) final Location moveLoc = _actor.isFlying() ? new Location(x1, y1, z1) : GeoEngine.getInstance().getValidLocation(npc.getX(), npc.getY(), npc.getZ(), x1, y1, z1, npc.getInstanceWorld()); - moveTo(moveLoc.getX(), moveLoc.getY(), moveLoc.getZ()); + if (Util.calculateDistance(npc.getSpawn(), moveLoc, false, false) <= Config.MAX_DRIFT_RANGE) + { + moveTo(moveLoc.getX(), moveLoc.getY(), moveLoc.getZ()); + } } } 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 ec2c35b250..24d0629f50 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 @@ -571,24 +571,26 @@ public class AttackableAI extends CreatureAI int x1 = npc.getSpawn().getX(); int y1 = npc.getSpawn().getY(); int z1 = npc.getSpawn().getZ(); - final int range = Config.MAX_DRIFT_RANGE; - if (!npc.isInsideRadius2D(x1, y1, 0, range)) + if (!npc.isInsideRadius2D(x1, y1, 0, Config.MAX_DRIFT_RANGE)) { npc.setReturningToSpawnPoint(true); } else { - final int deltaX = Rnd.get(range * 2); // x - int deltaY = Rnd.get(deltaX, range * 2); // distance + final int deltaX = Rnd.get(Config.MAX_DRIFT_RANGE * 2); // x + int deltaY = Rnd.get(deltaX, Config.MAX_DRIFT_RANGE * 2); // distance deltaY = (int) Math.sqrt((deltaY * deltaY) - (deltaX * deltaX)); // y - x1 = (deltaX + x1) - range; - y1 = (deltaY + y1) - range; + x1 = (deltaX + x1) - Config.MAX_DRIFT_RANGE; + y1 = (deltaY + y1) - Config.MAX_DRIFT_RANGE; z1 = npc.getZ(); } // Move the actor to Location (x,y,z) server side AND client side by sending Server->Client packet MoveToLocation (broadcast) final Location moveLoc = _actor.isFlying() ? new Location(x1, y1, z1) : GeoEngine.getInstance().getValidLocation(npc.getX(), npc.getY(), npc.getZ(), x1, y1, z1, npc.getInstanceWorld()); - moveTo(moveLoc.getX(), moveLoc.getY(), moveLoc.getZ()); + if (Util.calculateDistance(npc.getSpawn(), moveLoc, false, false) <= Config.MAX_DRIFT_RANGE) + { + moveTo(moveLoc.getX(), moveLoc.getY(), moveLoc.getZ()); + } } } 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 ec2c35b250..24d0629f50 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 @@ -571,24 +571,26 @@ public class AttackableAI extends CreatureAI int x1 = npc.getSpawn().getX(); int y1 = npc.getSpawn().getY(); int z1 = npc.getSpawn().getZ(); - final int range = Config.MAX_DRIFT_RANGE; - if (!npc.isInsideRadius2D(x1, y1, 0, range)) + if (!npc.isInsideRadius2D(x1, y1, 0, Config.MAX_DRIFT_RANGE)) { npc.setReturningToSpawnPoint(true); } else { - final int deltaX = Rnd.get(range * 2); // x - int deltaY = Rnd.get(deltaX, range * 2); // distance + final int deltaX = Rnd.get(Config.MAX_DRIFT_RANGE * 2); // x + int deltaY = Rnd.get(deltaX, Config.MAX_DRIFT_RANGE * 2); // distance deltaY = (int) Math.sqrt((deltaY * deltaY) - (deltaX * deltaX)); // y - x1 = (deltaX + x1) - range; - y1 = (deltaY + y1) - range; + x1 = (deltaX + x1) - Config.MAX_DRIFT_RANGE; + y1 = (deltaY + y1) - Config.MAX_DRIFT_RANGE; z1 = npc.getZ(); } // Move the actor to Location (x,y,z) server side AND client side by sending Server->Client packet MoveToLocation (broadcast) final Location moveLoc = _actor.isFlying() ? new Location(x1, y1, z1) : GeoEngine.getInstance().getValidLocation(npc.getX(), npc.getY(), npc.getZ(), x1, y1, z1, npc.getInstanceWorld()); - moveTo(moveLoc.getX(), moveLoc.getY(), moveLoc.getZ()); + if (Util.calculateDistance(npc.getSpawn(), moveLoc, false, false) <= Config.MAX_DRIFT_RANGE) + { + moveTo(moveLoc.getX(), moveLoc.getY(), moveLoc.getZ()); + } } } 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 ec2c35b250..24d0629f50 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 @@ -571,24 +571,26 @@ public class AttackableAI extends CreatureAI int x1 = npc.getSpawn().getX(); int y1 = npc.getSpawn().getY(); int z1 = npc.getSpawn().getZ(); - final int range = Config.MAX_DRIFT_RANGE; - if (!npc.isInsideRadius2D(x1, y1, 0, range)) + if (!npc.isInsideRadius2D(x1, y1, 0, Config.MAX_DRIFT_RANGE)) { npc.setReturningToSpawnPoint(true); } else { - final int deltaX = Rnd.get(range * 2); // x - int deltaY = Rnd.get(deltaX, range * 2); // distance + final int deltaX = Rnd.get(Config.MAX_DRIFT_RANGE * 2); // x + int deltaY = Rnd.get(deltaX, Config.MAX_DRIFT_RANGE * 2); // distance deltaY = (int) Math.sqrt((deltaY * deltaY) - (deltaX * deltaX)); // y - x1 = (deltaX + x1) - range; - y1 = (deltaY + y1) - range; + x1 = (deltaX + x1) - Config.MAX_DRIFT_RANGE; + y1 = (deltaY + y1) - Config.MAX_DRIFT_RANGE; z1 = npc.getZ(); } // Move the actor to Location (x,y,z) server side AND client side by sending Server->Client packet MoveToLocation (broadcast) final Location moveLoc = _actor.isFlying() ? new Location(x1, y1, z1) : GeoEngine.getInstance().getValidLocation(npc.getX(), npc.getY(), npc.getZ(), x1, y1, z1, npc.getInstanceWorld()); - moveTo(moveLoc.getX(), moveLoc.getY(), moveLoc.getZ()); + if (Util.calculateDistance(npc.getSpawn(), moveLoc, false, false) <= Config.MAX_DRIFT_RANGE) + { + moveTo(moveLoc.getX(), moveLoc.getY(), moveLoc.getZ()); + } } } 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 ec2c35b250..24d0629f50 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 @@ -571,24 +571,26 @@ public class AttackableAI extends CreatureAI int x1 = npc.getSpawn().getX(); int y1 = npc.getSpawn().getY(); int z1 = npc.getSpawn().getZ(); - final int range = Config.MAX_DRIFT_RANGE; - if (!npc.isInsideRadius2D(x1, y1, 0, range)) + if (!npc.isInsideRadius2D(x1, y1, 0, Config.MAX_DRIFT_RANGE)) { npc.setReturningToSpawnPoint(true); } else { - final int deltaX = Rnd.get(range * 2); // x - int deltaY = Rnd.get(deltaX, range * 2); // distance + final int deltaX = Rnd.get(Config.MAX_DRIFT_RANGE * 2); // x + int deltaY = Rnd.get(deltaX, Config.MAX_DRIFT_RANGE * 2); // distance deltaY = (int) Math.sqrt((deltaY * deltaY) - (deltaX * deltaX)); // y - x1 = (deltaX + x1) - range; - y1 = (deltaY + y1) - range; + x1 = (deltaX + x1) - Config.MAX_DRIFT_RANGE; + y1 = (deltaY + y1) - Config.MAX_DRIFT_RANGE; z1 = npc.getZ(); } // Move the actor to Location (x,y,z) server side AND client side by sending Server->Client packet MoveToLocation (broadcast) final Location moveLoc = _actor.isFlying() ? new Location(x1, y1, z1) : GeoEngine.getInstance().getValidLocation(npc.getX(), npc.getY(), npc.getZ(), x1, y1, z1, npc.getInstanceWorld()); - moveTo(moveLoc.getX(), moveLoc.getY(), moveLoc.getZ()); + if (Util.calculateDistance(npc.getSpawn(), moveLoc, false, false) <= Config.MAX_DRIFT_RANGE) + { + moveTo(moveLoc.getX(), moveLoc.getY(), moveLoc.getZ()); + } } } 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 ec2c35b250..24d0629f50 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 @@ -571,24 +571,26 @@ public class AttackableAI extends CreatureAI int x1 = npc.getSpawn().getX(); int y1 = npc.getSpawn().getY(); int z1 = npc.getSpawn().getZ(); - final int range = Config.MAX_DRIFT_RANGE; - if (!npc.isInsideRadius2D(x1, y1, 0, range)) + if (!npc.isInsideRadius2D(x1, y1, 0, Config.MAX_DRIFT_RANGE)) { npc.setReturningToSpawnPoint(true); } else { - final int deltaX = Rnd.get(range * 2); // x - int deltaY = Rnd.get(deltaX, range * 2); // distance + final int deltaX = Rnd.get(Config.MAX_DRIFT_RANGE * 2); // x + int deltaY = Rnd.get(deltaX, Config.MAX_DRIFT_RANGE * 2); // distance deltaY = (int) Math.sqrt((deltaY * deltaY) - (deltaX * deltaX)); // y - x1 = (deltaX + x1) - range; - y1 = (deltaY + y1) - range; + x1 = (deltaX + x1) - Config.MAX_DRIFT_RANGE; + y1 = (deltaY + y1) - Config.MAX_DRIFT_RANGE; z1 = npc.getZ(); } // Move the actor to Location (x,y,z) server side AND client side by sending Server->Client packet MoveToLocation (broadcast) final Location moveLoc = _actor.isFlying() ? new Location(x1, y1, z1) : GeoEngine.getInstance().getValidLocation(npc.getX(), npc.getY(), npc.getZ(), x1, y1, z1, npc.getInstanceWorld()); - moveTo(moveLoc.getX(), moveLoc.getY(), moveLoc.getZ()); + if (Util.calculateDistance(npc.getSpawn(), moveLoc, false, false) <= Config.MAX_DRIFT_RANGE) + { + moveTo(moveLoc.getX(), moveLoc.getY(), moveLoc.getZ()); + } } } 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 42b32c146f..5eaa73adbe 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 @@ -691,24 +691,26 @@ public class AttackableAI extends CreatureAI int x1 = npc.getSpawn().getX(); int y1 = npc.getSpawn().getY(); int z1 = npc.getSpawn().getZ(); - final int range = Config.MAX_DRIFT_RANGE; - if (!npc.isInsideRadius2D(x1, y1, 0, range)) + if (!npc.isInsideRadius2D(x1, y1, 0, Config.MAX_DRIFT_RANGE)) { npc.setReturningToSpawnPoint(true); } else { - final int deltaX = Rnd.get(range * 2); // x - int deltaY = Rnd.get(deltaX, range * 2); // distance + final int deltaX = Rnd.get(Config.MAX_DRIFT_RANGE * 2); // x + int deltaY = Rnd.get(deltaX, Config.MAX_DRIFT_RANGE * 2); // distance deltaY = (int) Math.sqrt((deltaY * deltaY) - (deltaX * deltaX)); // y - x1 = (deltaX + x1) - range; - y1 = (deltaY + y1) - range; + x1 = (deltaX + x1) - Config.MAX_DRIFT_RANGE; + y1 = (deltaY + y1) - Config.MAX_DRIFT_RANGE; z1 = npc.getZ(); } // Move the actor to Location (x,y,z) server side AND client side by sending Server->Client packet MoveToLocation (broadcast) final Location moveLoc = _actor.isFlying() ? new Location(x1, y1, z1) : GeoEngine.getInstance().getValidLocation(npc.getX(), npc.getY(), npc.getZ(), x1, y1, z1, npc.getInstanceId()); - moveTo(moveLoc.getX(), moveLoc.getY(), moveLoc.getZ()); + if (Util.calculateDistance(npc.getSpawn(), moveLoc, false, false) <= Config.MAX_DRIFT_RANGE) + { + moveTo(moveLoc.getX(), moveLoc.getY(), moveLoc.getZ()); + } } } 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 42b32c146f..5eaa73adbe 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 @@ -691,24 +691,26 @@ public class AttackableAI extends CreatureAI int x1 = npc.getSpawn().getX(); int y1 = npc.getSpawn().getY(); int z1 = npc.getSpawn().getZ(); - final int range = Config.MAX_DRIFT_RANGE; - if (!npc.isInsideRadius2D(x1, y1, 0, range)) + if (!npc.isInsideRadius2D(x1, y1, 0, Config.MAX_DRIFT_RANGE)) { npc.setReturningToSpawnPoint(true); } else { - final int deltaX = Rnd.get(range * 2); // x - int deltaY = Rnd.get(deltaX, range * 2); // distance + final int deltaX = Rnd.get(Config.MAX_DRIFT_RANGE * 2); // x + int deltaY = Rnd.get(deltaX, Config.MAX_DRIFT_RANGE * 2); // distance deltaY = (int) Math.sqrt((deltaY * deltaY) - (deltaX * deltaX)); // y - x1 = (deltaX + x1) - range; - y1 = (deltaY + y1) - range; + x1 = (deltaX + x1) - Config.MAX_DRIFT_RANGE; + y1 = (deltaY + y1) - Config.MAX_DRIFT_RANGE; z1 = npc.getZ(); } // Move the actor to Location (x,y,z) server side AND client side by sending Server->Client packet MoveToLocation (broadcast) final Location moveLoc = _actor.isFlying() ? new Location(x1, y1, z1) : GeoEngine.getInstance().getValidLocation(npc.getX(), npc.getY(), npc.getZ(), x1, y1, z1, npc.getInstanceId()); - moveTo(moveLoc.getX(), moveLoc.getY(), moveLoc.getZ()); + if (Util.calculateDistance(npc.getSpawn(), moveLoc, false, false) <= Config.MAX_DRIFT_RANGE) + { + moveTo(moveLoc.getX(), moveLoc.getY(), moveLoc.getZ()); + } } } 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 42b32c146f..5eaa73adbe 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 @@ -691,24 +691,26 @@ public class AttackableAI extends CreatureAI int x1 = npc.getSpawn().getX(); int y1 = npc.getSpawn().getY(); int z1 = npc.getSpawn().getZ(); - final int range = Config.MAX_DRIFT_RANGE; - if (!npc.isInsideRadius2D(x1, y1, 0, range)) + if (!npc.isInsideRadius2D(x1, y1, 0, Config.MAX_DRIFT_RANGE)) { npc.setReturningToSpawnPoint(true); } else { - final int deltaX = Rnd.get(range * 2); // x - int deltaY = Rnd.get(deltaX, range * 2); // distance + final int deltaX = Rnd.get(Config.MAX_DRIFT_RANGE * 2); // x + int deltaY = Rnd.get(deltaX, Config.MAX_DRIFT_RANGE * 2); // distance deltaY = (int) Math.sqrt((deltaY * deltaY) - (deltaX * deltaX)); // y - x1 = (deltaX + x1) - range; - y1 = (deltaY + y1) - range; + x1 = (deltaX + x1) - Config.MAX_DRIFT_RANGE; + y1 = (deltaY + y1) - Config.MAX_DRIFT_RANGE; z1 = npc.getZ(); } // Move the actor to Location (x,y,z) server side AND client side by sending Server->Client packet MoveToLocation (broadcast) final Location moveLoc = _actor.isFlying() ? new Location(x1, y1, z1) : GeoEngine.getInstance().getValidLocation(npc.getX(), npc.getY(), npc.getZ(), x1, y1, z1, npc.getInstanceId()); - moveTo(moveLoc.getX(), moveLoc.getY(), moveLoc.getZ()); + if (Util.calculateDistance(npc.getSpawn(), moveLoc, false, false) <= Config.MAX_DRIFT_RANGE) + { + moveTo(moveLoc.getX(), moveLoc.getY(), moveLoc.getZ()); + } } } 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 ec2c35b250..24d0629f50 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 @@ -571,24 +571,26 @@ public class AttackableAI extends CreatureAI int x1 = npc.getSpawn().getX(); int y1 = npc.getSpawn().getY(); int z1 = npc.getSpawn().getZ(); - final int range = Config.MAX_DRIFT_RANGE; - if (!npc.isInsideRadius2D(x1, y1, 0, range)) + if (!npc.isInsideRadius2D(x1, y1, 0, Config.MAX_DRIFT_RANGE)) { npc.setReturningToSpawnPoint(true); } else { - final int deltaX = Rnd.get(range * 2); // x - int deltaY = Rnd.get(deltaX, range * 2); // distance + final int deltaX = Rnd.get(Config.MAX_DRIFT_RANGE * 2); // x + int deltaY = Rnd.get(deltaX, Config.MAX_DRIFT_RANGE * 2); // distance deltaY = (int) Math.sqrt((deltaY * deltaY) - (deltaX * deltaX)); // y - x1 = (deltaX + x1) - range; - y1 = (deltaY + y1) - range; + x1 = (deltaX + x1) - Config.MAX_DRIFT_RANGE; + y1 = (deltaY + y1) - Config.MAX_DRIFT_RANGE; z1 = npc.getZ(); } // Move the actor to Location (x,y,z) server side AND client side by sending Server->Client packet MoveToLocation (broadcast) final Location moveLoc = _actor.isFlying() ? new Location(x1, y1, z1) : GeoEngine.getInstance().getValidLocation(npc.getX(), npc.getY(), npc.getZ(), x1, y1, z1, npc.getInstanceWorld()); - moveTo(moveLoc.getX(), moveLoc.getY(), moveLoc.getZ()); + if (Util.calculateDistance(npc.getSpawn(), moveLoc, false, false) <= Config.MAX_DRIFT_RANGE) + { + moveTo(moveLoc.getX(), moveLoc.getY(), moveLoc.getZ()); + } } } 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 ec2c35b250..24d0629f50 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 @@ -571,24 +571,26 @@ public class AttackableAI extends CreatureAI int x1 = npc.getSpawn().getX(); int y1 = npc.getSpawn().getY(); int z1 = npc.getSpawn().getZ(); - final int range = Config.MAX_DRIFT_RANGE; - if (!npc.isInsideRadius2D(x1, y1, 0, range)) + if (!npc.isInsideRadius2D(x1, y1, 0, Config.MAX_DRIFT_RANGE)) { npc.setReturningToSpawnPoint(true); } else { - final int deltaX = Rnd.get(range * 2); // x - int deltaY = Rnd.get(deltaX, range * 2); // distance + final int deltaX = Rnd.get(Config.MAX_DRIFT_RANGE * 2); // x + int deltaY = Rnd.get(deltaX, Config.MAX_DRIFT_RANGE * 2); // distance deltaY = (int) Math.sqrt((deltaY * deltaY) - (deltaX * deltaX)); // y - x1 = (deltaX + x1) - range; - y1 = (deltaY + y1) - range; + x1 = (deltaX + x1) - Config.MAX_DRIFT_RANGE; + y1 = (deltaY + y1) - Config.MAX_DRIFT_RANGE; z1 = npc.getZ(); } // Move the actor to Location (x,y,z) server side AND client side by sending Server->Client packet MoveToLocation (broadcast) final Location moveLoc = _actor.isFlying() ? new Location(x1, y1, z1) : GeoEngine.getInstance().getValidLocation(npc.getX(), npc.getY(), npc.getZ(), x1, y1, z1, npc.getInstanceWorld()); - moveTo(moveLoc.getX(), moveLoc.getY(), moveLoc.getZ()); + if (Util.calculateDistance(npc.getSpawn(), moveLoc, false, false) <= Config.MAX_DRIFT_RANGE) + { + moveTo(moveLoc.getX(), moveLoc.getY(), moveLoc.getZ()); + } } } 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 ec2c35b250..24d0629f50 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 @@ -571,24 +571,26 @@ public class AttackableAI extends CreatureAI int x1 = npc.getSpawn().getX(); int y1 = npc.getSpawn().getY(); int z1 = npc.getSpawn().getZ(); - final int range = Config.MAX_DRIFT_RANGE; - if (!npc.isInsideRadius2D(x1, y1, 0, range)) + if (!npc.isInsideRadius2D(x1, y1, 0, Config.MAX_DRIFT_RANGE)) { npc.setReturningToSpawnPoint(true); } else { - final int deltaX = Rnd.get(range * 2); // x - int deltaY = Rnd.get(deltaX, range * 2); // distance + final int deltaX = Rnd.get(Config.MAX_DRIFT_RANGE * 2); // x + int deltaY = Rnd.get(deltaX, Config.MAX_DRIFT_RANGE * 2); // distance deltaY = (int) Math.sqrt((deltaY * deltaY) - (deltaX * deltaX)); // y - x1 = (deltaX + x1) - range; - y1 = (deltaY + y1) - range; + x1 = (deltaX + x1) - Config.MAX_DRIFT_RANGE; + y1 = (deltaY + y1) - Config.MAX_DRIFT_RANGE; z1 = npc.getZ(); } // Move the actor to Location (x,y,z) server side AND client side by sending Server->Client packet MoveToLocation (broadcast) final Location moveLoc = _actor.isFlying() ? new Location(x1, y1, z1) : GeoEngine.getInstance().getValidLocation(npc.getX(), npc.getY(), npc.getZ(), x1, y1, z1, npc.getInstanceWorld()); - moveTo(moveLoc.getX(), moveLoc.getY(), moveLoc.getZ()); + if (Util.calculateDistance(npc.getSpawn(), moveLoc, false, false) <= Config.MAX_DRIFT_RANGE) + { + moveTo(moveLoc.getX(), moveLoc.getY(), moveLoc.getZ()); + } } } 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 ec2c35b250..24d0629f50 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 @@ -571,24 +571,26 @@ public class AttackableAI extends CreatureAI int x1 = npc.getSpawn().getX(); int y1 = npc.getSpawn().getY(); int z1 = npc.getSpawn().getZ(); - final int range = Config.MAX_DRIFT_RANGE; - if (!npc.isInsideRadius2D(x1, y1, 0, range)) + if (!npc.isInsideRadius2D(x1, y1, 0, Config.MAX_DRIFT_RANGE)) { npc.setReturningToSpawnPoint(true); } else { - final int deltaX = Rnd.get(range * 2); // x - int deltaY = Rnd.get(deltaX, range * 2); // distance + final int deltaX = Rnd.get(Config.MAX_DRIFT_RANGE * 2); // x + int deltaY = Rnd.get(deltaX, Config.MAX_DRIFT_RANGE * 2); // distance deltaY = (int) Math.sqrt((deltaY * deltaY) - (deltaX * deltaX)); // y - x1 = (deltaX + x1) - range; - y1 = (deltaY + y1) - range; + x1 = (deltaX + x1) - Config.MAX_DRIFT_RANGE; + y1 = (deltaY + y1) - Config.MAX_DRIFT_RANGE; z1 = npc.getZ(); } // Move the actor to Location (x,y,z) server side AND client side by sending Server->Client packet MoveToLocation (broadcast) final Location moveLoc = _actor.isFlying() ? new Location(x1, y1, z1) : GeoEngine.getInstance().getValidLocation(npc.getX(), npc.getY(), npc.getZ(), x1, y1, z1, npc.getInstanceWorld()); - moveTo(moveLoc.getX(), moveLoc.getY(), moveLoc.getZ()); + if (Util.calculateDistance(npc.getSpawn(), moveLoc, false, false) <= Config.MAX_DRIFT_RANGE) + { + moveTo(moveLoc.getX(), moveLoc.getY(), moveLoc.getZ()); + } } } 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 ec2c35b250..24d0629f50 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 @@ -571,24 +571,26 @@ public class AttackableAI extends CreatureAI int x1 = npc.getSpawn().getX(); int y1 = npc.getSpawn().getY(); int z1 = npc.getSpawn().getZ(); - final int range = Config.MAX_DRIFT_RANGE; - if (!npc.isInsideRadius2D(x1, y1, 0, range)) + if (!npc.isInsideRadius2D(x1, y1, 0, Config.MAX_DRIFT_RANGE)) { npc.setReturningToSpawnPoint(true); } else { - final int deltaX = Rnd.get(range * 2); // x - int deltaY = Rnd.get(deltaX, range * 2); // distance + final int deltaX = Rnd.get(Config.MAX_DRIFT_RANGE * 2); // x + int deltaY = Rnd.get(deltaX, Config.MAX_DRIFT_RANGE * 2); // distance deltaY = (int) Math.sqrt((deltaY * deltaY) - (deltaX * deltaX)); // y - x1 = (deltaX + x1) - range; - y1 = (deltaY + y1) - range; + x1 = (deltaX + x1) - Config.MAX_DRIFT_RANGE; + y1 = (deltaY + y1) - Config.MAX_DRIFT_RANGE; z1 = npc.getZ(); } // Move the actor to Location (x,y,z) server side AND client side by sending Server->Client packet MoveToLocation (broadcast) final Location moveLoc = _actor.isFlying() ? new Location(x1, y1, z1) : GeoEngine.getInstance().getValidLocation(npc.getX(), npc.getY(), npc.getZ(), x1, y1, z1, npc.getInstanceWorld()); - moveTo(moveLoc.getX(), moveLoc.getY(), moveLoc.getZ()); + if (Util.calculateDistance(npc.getSpawn(), moveLoc, false, false) <= Config.MAX_DRIFT_RANGE) + { + moveTo(moveLoc.getX(), moveLoc.getY(), moveLoc.getZ()); + } } } 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 ec2c35b250..24d0629f50 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 @@ -571,24 +571,26 @@ public class AttackableAI extends CreatureAI int x1 = npc.getSpawn().getX(); int y1 = npc.getSpawn().getY(); int z1 = npc.getSpawn().getZ(); - final int range = Config.MAX_DRIFT_RANGE; - if (!npc.isInsideRadius2D(x1, y1, 0, range)) + if (!npc.isInsideRadius2D(x1, y1, 0, Config.MAX_DRIFT_RANGE)) { npc.setReturningToSpawnPoint(true); } else { - final int deltaX = Rnd.get(range * 2); // x - int deltaY = Rnd.get(deltaX, range * 2); // distance + final int deltaX = Rnd.get(Config.MAX_DRIFT_RANGE * 2); // x + int deltaY = Rnd.get(deltaX, Config.MAX_DRIFT_RANGE * 2); // distance deltaY = (int) Math.sqrt((deltaY * deltaY) - (deltaX * deltaX)); // y - x1 = (deltaX + x1) - range; - y1 = (deltaY + y1) - range; + x1 = (deltaX + x1) - Config.MAX_DRIFT_RANGE; + y1 = (deltaY + y1) - Config.MAX_DRIFT_RANGE; z1 = npc.getZ(); } // Move the actor to Location (x,y,z) server side AND client side by sending Server->Client packet MoveToLocation (broadcast) final Location moveLoc = _actor.isFlying() ? new Location(x1, y1, z1) : GeoEngine.getInstance().getValidLocation(npc.getX(), npc.getY(), npc.getZ(), x1, y1, z1, npc.getInstanceWorld()); - moveTo(moveLoc.getX(), moveLoc.getY(), moveLoc.getZ()); + if (Util.calculateDistance(npc.getSpawn(), moveLoc, false, false) <= Config.MAX_DRIFT_RANGE) + { + moveTo(moveLoc.getX(), moveLoc.getY(), moveLoc.getZ()); + } } } 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 ec2c35b250..24d0629f50 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 @@ -571,24 +571,26 @@ public class AttackableAI extends CreatureAI int x1 = npc.getSpawn().getX(); int y1 = npc.getSpawn().getY(); int z1 = npc.getSpawn().getZ(); - final int range = Config.MAX_DRIFT_RANGE; - if (!npc.isInsideRadius2D(x1, y1, 0, range)) + if (!npc.isInsideRadius2D(x1, y1, 0, Config.MAX_DRIFT_RANGE)) { npc.setReturningToSpawnPoint(true); } else { - final int deltaX = Rnd.get(range * 2); // x - int deltaY = Rnd.get(deltaX, range * 2); // distance + final int deltaX = Rnd.get(Config.MAX_DRIFT_RANGE * 2); // x + int deltaY = Rnd.get(deltaX, Config.MAX_DRIFT_RANGE * 2); // distance deltaY = (int) Math.sqrt((deltaY * deltaY) - (deltaX * deltaX)); // y - x1 = (deltaX + x1) - range; - y1 = (deltaY + y1) - range; + x1 = (deltaX + x1) - Config.MAX_DRIFT_RANGE; + y1 = (deltaY + y1) - Config.MAX_DRIFT_RANGE; z1 = npc.getZ(); } // Move the actor to Location (x,y,z) server side AND client side by sending Server->Client packet MoveToLocation (broadcast) final Location moveLoc = _actor.isFlying() ? new Location(x1, y1, z1) : GeoEngine.getInstance().getValidLocation(npc.getX(), npc.getY(), npc.getZ(), x1, y1, z1, npc.getInstanceWorld()); - moveTo(moveLoc.getX(), moveLoc.getY(), moveLoc.getZ()); + if (Util.calculateDistance(npc.getSpawn(), moveLoc, false, false) <= Config.MAX_DRIFT_RANGE) + { + moveTo(moveLoc.getX(), moveLoc.getY(), moveLoc.getZ()); + } } } 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 ec2c35b250..24d0629f50 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 @@ -571,24 +571,26 @@ public class AttackableAI extends CreatureAI int x1 = npc.getSpawn().getX(); int y1 = npc.getSpawn().getY(); int z1 = npc.getSpawn().getZ(); - final int range = Config.MAX_DRIFT_RANGE; - if (!npc.isInsideRadius2D(x1, y1, 0, range)) + if (!npc.isInsideRadius2D(x1, y1, 0, Config.MAX_DRIFT_RANGE)) { npc.setReturningToSpawnPoint(true); } else { - final int deltaX = Rnd.get(range * 2); // x - int deltaY = Rnd.get(deltaX, range * 2); // distance + final int deltaX = Rnd.get(Config.MAX_DRIFT_RANGE * 2); // x + int deltaY = Rnd.get(deltaX, Config.MAX_DRIFT_RANGE * 2); // distance deltaY = (int) Math.sqrt((deltaY * deltaY) - (deltaX * deltaX)); // y - x1 = (deltaX + x1) - range; - y1 = (deltaY + y1) - range; + x1 = (deltaX + x1) - Config.MAX_DRIFT_RANGE; + y1 = (deltaY + y1) - Config.MAX_DRIFT_RANGE; z1 = npc.getZ(); } // Move the actor to Location (x,y,z) server side AND client side by sending Server->Client packet MoveToLocation (broadcast) final Location moveLoc = _actor.isFlying() ? new Location(x1, y1, z1) : GeoEngine.getInstance().getValidLocation(npc.getX(), npc.getY(), npc.getZ(), x1, y1, z1, npc.getInstanceWorld()); - moveTo(moveLoc.getX(), moveLoc.getY(), moveLoc.getZ()); + if (Util.calculateDistance(npc.getSpawn(), moveLoc, false, false) <= Config.MAX_DRIFT_RANGE) + { + moveTo(moveLoc.getX(), moveLoc.getY(), moveLoc.getZ()); + } } } 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 ec2c35b250..24d0629f50 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 @@ -571,24 +571,26 @@ public class AttackableAI extends CreatureAI int x1 = npc.getSpawn().getX(); int y1 = npc.getSpawn().getY(); int z1 = npc.getSpawn().getZ(); - final int range = Config.MAX_DRIFT_RANGE; - if (!npc.isInsideRadius2D(x1, y1, 0, range)) + if (!npc.isInsideRadius2D(x1, y1, 0, Config.MAX_DRIFT_RANGE)) { npc.setReturningToSpawnPoint(true); } else { - final int deltaX = Rnd.get(range * 2); // x - int deltaY = Rnd.get(deltaX, range * 2); // distance + final int deltaX = Rnd.get(Config.MAX_DRIFT_RANGE * 2); // x + int deltaY = Rnd.get(deltaX, Config.MAX_DRIFT_RANGE * 2); // distance deltaY = (int) Math.sqrt((deltaY * deltaY) - (deltaX * deltaX)); // y - x1 = (deltaX + x1) - range; - y1 = (deltaY + y1) - range; + x1 = (deltaX + x1) - Config.MAX_DRIFT_RANGE; + y1 = (deltaY + y1) - Config.MAX_DRIFT_RANGE; z1 = npc.getZ(); } // Move the actor to Location (x,y,z) server side AND client side by sending Server->Client packet MoveToLocation (broadcast) final Location moveLoc = _actor.isFlying() ? new Location(x1, y1, z1) : GeoEngine.getInstance().getValidLocation(npc.getX(), npc.getY(), npc.getZ(), x1, y1, z1, npc.getInstanceWorld()); - moveTo(moveLoc.getX(), moveLoc.getY(), moveLoc.getZ()); + if (Util.calculateDistance(npc.getSpawn(), moveLoc, false, false) <= Config.MAX_DRIFT_RANGE) + { + moveTo(moveLoc.getX(), moveLoc.getY(), moveLoc.getZ()); + } } } 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 dd30731d29..dcd8485a88 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 @@ -571,24 +571,26 @@ public class AttackableAI extends CreatureAI int x1 = npc.getSpawn().getX(); int y1 = npc.getSpawn().getY(); int z1 = npc.getSpawn().getZ(); - final int range = Config.MAX_DRIFT_RANGE; - if (!npc.isInsideRadius2D(x1, y1, 0, range)) + if (!npc.isInsideRadius2D(x1, y1, 0, Config.MAX_DRIFT_RANGE)) { npc.setReturningToSpawnPoint(true); } else { - final int deltaX = Rnd.get(range * 2); // x - int deltaY = Rnd.get(deltaX, range * 2); // distance + final int deltaX = Rnd.get(Config.MAX_DRIFT_RANGE * 2); // x + int deltaY = Rnd.get(deltaX, Config.MAX_DRIFT_RANGE * 2); // distance deltaY = (int) Math.sqrt((deltaY * deltaY) - (deltaX * deltaX)); // y - x1 = (deltaX + x1) - range; - y1 = (deltaY + y1) - range; + x1 = (deltaX + x1) - Config.MAX_DRIFT_RANGE; + y1 = (deltaY + y1) - Config.MAX_DRIFT_RANGE; z1 = npc.getZ(); } // Move the actor to Location (x,y,z) server side AND client side by sending Server->Client packet MoveToLocation (broadcast) final Location moveLoc = _actor.isFlying() ? new Location(x1, y1, z1) : GeoEngine.getInstance().getValidLocation(npc.getX(), npc.getY(), npc.getZ(), x1, y1, z1, npc.getInstanceWorld()); - moveTo(moveLoc.getX(), moveLoc.getY(), moveLoc.getZ()); + if (Util.calculateDistance(npc.getSpawn(), moveLoc, false, false) <= Config.MAX_DRIFT_RANGE) + { + moveTo(moveLoc.getX(), moveLoc.getY(), moveLoc.getZ()); + } } } 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 ec2c35b250..24d0629f50 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 @@ -571,24 +571,26 @@ public class AttackableAI extends CreatureAI int x1 = npc.getSpawn().getX(); int y1 = npc.getSpawn().getY(); int z1 = npc.getSpawn().getZ(); - final int range = Config.MAX_DRIFT_RANGE; - if (!npc.isInsideRadius2D(x1, y1, 0, range)) + if (!npc.isInsideRadius2D(x1, y1, 0, Config.MAX_DRIFT_RANGE)) { npc.setReturningToSpawnPoint(true); } else { - final int deltaX = Rnd.get(range * 2); // x - int deltaY = Rnd.get(deltaX, range * 2); // distance + final int deltaX = Rnd.get(Config.MAX_DRIFT_RANGE * 2); // x + int deltaY = Rnd.get(deltaX, Config.MAX_DRIFT_RANGE * 2); // distance deltaY = (int) Math.sqrt((deltaY * deltaY) - (deltaX * deltaX)); // y - x1 = (deltaX + x1) - range; - y1 = (deltaY + y1) - range; + x1 = (deltaX + x1) - Config.MAX_DRIFT_RANGE; + y1 = (deltaY + y1) - Config.MAX_DRIFT_RANGE; z1 = npc.getZ(); } // Move the actor to Location (x,y,z) server side AND client side by sending Server->Client packet MoveToLocation (broadcast) final Location moveLoc = _actor.isFlying() ? new Location(x1, y1, z1) : GeoEngine.getInstance().getValidLocation(npc.getX(), npc.getY(), npc.getZ(), x1, y1, z1, npc.getInstanceWorld()); - moveTo(moveLoc.getX(), moveLoc.getY(), moveLoc.getZ()); + if (Util.calculateDistance(npc.getSpawn(), moveLoc, false, false) <= Config.MAX_DRIFT_RANGE) + { + moveTo(moveLoc.getX(), moveLoc.getY(), moveLoc.getZ()); + } } } 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 ec2c35b250..24d0629f50 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 @@ -571,24 +571,26 @@ public class AttackableAI extends CreatureAI int x1 = npc.getSpawn().getX(); int y1 = npc.getSpawn().getY(); int z1 = npc.getSpawn().getZ(); - final int range = Config.MAX_DRIFT_RANGE; - if (!npc.isInsideRadius2D(x1, y1, 0, range)) + if (!npc.isInsideRadius2D(x1, y1, 0, Config.MAX_DRIFT_RANGE)) { npc.setReturningToSpawnPoint(true); } else { - final int deltaX = Rnd.get(range * 2); // x - int deltaY = Rnd.get(deltaX, range * 2); // distance + final int deltaX = Rnd.get(Config.MAX_DRIFT_RANGE * 2); // x + int deltaY = Rnd.get(deltaX, Config.MAX_DRIFT_RANGE * 2); // distance deltaY = (int) Math.sqrt((deltaY * deltaY) - (deltaX * deltaX)); // y - x1 = (deltaX + x1) - range; - y1 = (deltaY + y1) - range; + x1 = (deltaX + x1) - Config.MAX_DRIFT_RANGE; + y1 = (deltaY + y1) - Config.MAX_DRIFT_RANGE; z1 = npc.getZ(); } // Move the actor to Location (x,y,z) server side AND client side by sending Server->Client packet MoveToLocation (broadcast) final Location moveLoc = _actor.isFlying() ? new Location(x1, y1, z1) : GeoEngine.getInstance().getValidLocation(npc.getX(), npc.getY(), npc.getZ(), x1, y1, z1, npc.getInstanceWorld()); - moveTo(moveLoc.getX(), moveLoc.getY(), moveLoc.getZ()); + if (Util.calculateDistance(npc.getSpawn(), moveLoc, false, false) <= Config.MAX_DRIFT_RANGE) + { + moveTo(moveLoc.getX(), moveLoc.getY(), moveLoc.getZ()); + } } } 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 ec2c35b250..24d0629f50 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 @@ -571,24 +571,26 @@ public class AttackableAI extends CreatureAI int x1 = npc.getSpawn().getX(); int y1 = npc.getSpawn().getY(); int z1 = npc.getSpawn().getZ(); - final int range = Config.MAX_DRIFT_RANGE; - if (!npc.isInsideRadius2D(x1, y1, 0, range)) + if (!npc.isInsideRadius2D(x1, y1, 0, Config.MAX_DRIFT_RANGE)) { npc.setReturningToSpawnPoint(true); } else { - final int deltaX = Rnd.get(range * 2); // x - int deltaY = Rnd.get(deltaX, range * 2); // distance + final int deltaX = Rnd.get(Config.MAX_DRIFT_RANGE * 2); // x + int deltaY = Rnd.get(deltaX, Config.MAX_DRIFT_RANGE * 2); // distance deltaY = (int) Math.sqrt((deltaY * deltaY) - (deltaX * deltaX)); // y - x1 = (deltaX + x1) - range; - y1 = (deltaY + y1) - range; + x1 = (deltaX + x1) - Config.MAX_DRIFT_RANGE; + y1 = (deltaY + y1) - Config.MAX_DRIFT_RANGE; z1 = npc.getZ(); } // Move the actor to Location (x,y,z) server side AND client side by sending Server->Client packet MoveToLocation (broadcast) final Location moveLoc = _actor.isFlying() ? new Location(x1, y1, z1) : GeoEngine.getInstance().getValidLocation(npc.getX(), npc.getY(), npc.getZ(), x1, y1, z1, npc.getInstanceWorld()); - moveTo(moveLoc.getX(), moveLoc.getY(), moveLoc.getZ()); + if (Util.calculateDistance(npc.getSpawn(), moveLoc, false, false) <= Config.MAX_DRIFT_RANGE) + { + moveTo(moveLoc.getX(), moveLoc.getY(), moveLoc.getZ()); + } } }