From d3c54bde15d8a9b018e09d1d6500ce2a276f5c42 Mon Sep 17 00:00:00 2001 From: MobiusDevelopment <8391001+MobiusDevelopment@users.noreply.github.com> Date: Sun, 28 Mar 2021 09:17:49 +0000 Subject: [PATCH] Addition of newer distance calculation methods. --- .../l2jmobius/gameserver/ai/AttackableAI.java | 8 +- .../gameserver/ai/ControllableMobAI.java | 6 +- .../gameserver/ai/FortSiegeGuardAI.java | 2 +- .../l2jmobius/gameserver/ai/SiegeGuardAI.java | 2 +- .../gameserver/model/WorldObject.java | 88 +++++++++++++++++++ .../gameserver/model/actor/Creature.java | 84 +----------------- .../model/actor/instance/PlayerInstance.java | 2 +- .../gameserver/model/skills/Formulas.java | 3 +- .../clientpackets/RequestGetItemFromPet.java | 2 +- .../network/clientpackets/TradeRequest.java | 2 +- .../l2jmobius/gameserver/util/Broadcast.java | 2 +- .../data/scripts/ai/bosses/VanHalter.java | 28 +++--- .../l2jmobius/gameserver/ai/AttackableAI.java | 8 +- .../gameserver/ai/ControllableMobAI.java | 6 +- .../gameserver/ai/FortSiegeGuardAI.java | 2 +- .../l2jmobius/gameserver/ai/SiegeGuardAI.java | 2 +- .../gameserver/model/WorldObject.java | 88 +++++++++++++++++++ .../gameserver/model/actor/Creature.java | 84 +----------------- .../model/actor/instance/PlayerInstance.java | 2 +- .../gameserver/model/skills/Formulas.java | 3 +- .../clientpackets/RequestGetItemFromPet.java | 2 +- .../network/clientpackets/TradeRequest.java | 2 +- .../l2jmobius/gameserver/util/Broadcast.java | 2 +- 23 files changed, 220 insertions(+), 210 deletions(-) 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 14b9e373ab..1a300abe8e 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 @@ -521,7 +521,7 @@ public class AttackableAI extends CreatureAI _actor.setWalking(); } - if (_actor.getPlanDistanceSq(((MinionInstance) _actor).getLeader()) > (offset * offset)) + if (_actor.calculateDistanceSq2D(((MinionInstance) _actor).getLeader()) > (offset * offset)) { int x1; int y1; @@ -556,7 +556,7 @@ public class AttackableAI extends CreatureAI z1 = p[2]; // Calculate the distance between the current position of the Creature and the target (x,y) - final double distance2 = _actor.getPlanDistanceSq(x1, y1); + final double distance2 = _actor.calculateDistanceSq2D(x1, y1, z1); if (distance2 > (Config.MAX_DRIFT_RANGE * Config.MAX_DRIFT_RANGE)) { npc.setReturningToSpawnPoint(true); @@ -810,7 +810,7 @@ public class AttackableAI extends CreatureAI if ((weapon != null) && (weapon.getItemType() == WeaponType.BOW)) { // Micht: kepping this one otherwise we should do 2 sqrt - final double distance2 = _actor.getPlanDistanceSq(originalAttackTarget.getX(), originalAttackTarget.getY()); + final double distance2 = _actor.calculateDistanceSq2D(originalAttackTarget); if (Math.sqrt(distance2) <= (60 + combinedCollision)) { final int chance = 5; @@ -861,7 +861,7 @@ public class AttackableAI extends CreatureAI setAttackTarget(hated); } // We should calculate new distance cuz mob can have changed the target - dist2 = _actor.getPlanDistanceSq(hated.getX(), hated.getY()); + dist2 = _actor.calculateDistanceSq2D(hated); if (hated.isMoving()) { range += 50; diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/ai/ControllableMobAI.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/ai/ControllableMobAI.java index 7a6916b196..c761af1b9b 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/ai/ControllableMobAI.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/ai/ControllableMobAI.java @@ -189,7 +189,7 @@ public class ControllableMobAI extends AttackableAI ctrlAi.forceAttack(_actor); final Skill[] skills = _actor.getAllSkills(); - final double dist2 = _actor.getPlanDistanceSq(target.getX(), target.getY()); + final double dist2 = _actor.calculateDistanceSq2D(target); final int range = _actor.getPhysicalAttackRange() + _actor.getTemplate().getCollisionRadius() + target.getTemplate().getCollisionRadius(); int maxRange = range; if (!_actor.isMuted() && (dist2 > ((range + 20) * (range + 20)))) @@ -226,7 +226,7 @@ public class ControllableMobAI extends AttackableAI _actor.setTarget(getForcedTarget()); final Skill[] skills = _actor.getAllSkills(); - final double dist2 = _actor.getPlanDistanceSq(getForcedTarget().getX(), getForcedTarget().getY()); + final double dist2 = _actor.calculateDistanceSq2D(getForcedTarget()); final int range = _actor.getPhysicalAttackRange() + _actor.getTemplate().getCollisionRadius() + getForcedTarget().getTemplate().getCollisionRadius(); int maxRange = range; if (!_actor.isMuted() && (dist2 > ((range + 20) * (range + 20)))) @@ -293,7 +293,7 @@ public class ControllableMobAI extends AttackableAI _actor.setTarget(getAttackTarget()); final Skill[] skills = _actor.getAllSkills(); - final double dist2 = _actor.getPlanDistanceSq(getAttackTarget().getX(), getAttackTarget().getY()); + final double dist2 = _actor.calculateDistanceSq2D(getAttackTarget()); final int range = _actor.getPhysicalAttackRange() + _actor.getTemplate().getCollisionRadius() + getAttackTarget().getTemplate().getCollisionRadius(); int maxRange = range; if (!_actor.isMuted() && (dist2 > ((range + 20) * (range + 20)))) diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/ai/FortSiegeGuardAI.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/ai/FortSiegeGuardAI.java index 3e085272a7..e51354e93e 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/ai/FortSiegeGuardAI.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/ai/FortSiegeGuardAI.java @@ -596,7 +596,7 @@ public class FortSiegeGuardAI extends CreatureAI implements Runnable { _actor.setTarget(attackTarget); skills = _actor.getAllSkills(); - dist2 = _actor.getPlanDistanceSq(attackTarget.getX(), attackTarget.getY()); + dist2 = _actor.calculateDistanceSq2D(attackTarget); range = _actor.getPhysicalAttackRange() + _actor.getTemplate().getCollisionRadius() + attackTarget.getTemplate().getCollisionRadius(); if (attackTarget.isMoving()) { diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/ai/SiegeGuardAI.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/ai/SiegeGuardAI.java index 256f5b2c89..6310304f84 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/ai/SiegeGuardAI.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/ai/SiegeGuardAI.java @@ -317,7 +317,7 @@ public class SiegeGuardAI extends CreatureAI implements Runnable { _actor.setTarget(attackTarget); skills = _actor.getAllSkills(); - dist2 = _actor.getPlanDistanceSq(attackTarget.getX(), attackTarget.getY()); + dist2 = _actor.calculateDistanceSq2D(attackTarget); range = _actor.getPhysicalAttackRange() + _actor.getTemplate().getCollisionRadius() + attackTarget.getTemplate().getCollisionRadius(); } catch (NullPointerException e) diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/model/WorldObject.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/model/WorldObject.java index efa7d53b2e..c47018812d 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/model/WorldObject.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/model/WorldObject.java @@ -475,6 +475,94 @@ public abstract class WorldObject return false; } + /** + * Calculates 2D distance between this WorldObject and given x, y, z. + * @param x the X coordinate + * @param y the Y coordinate + * @param z the Z coordinate + * @return distance between object and given x, y, z. + */ + public double calculateDistance2D(int x, int y, int z) + { + return Math.sqrt(Math.pow(x - getX(), 2) + Math.pow(y - getY(), 2)); + } + + /** + * Calculates the 2D distance between this WorldObject and given WorldObject. + * @param object the target object + * @return distance between object and given object. + */ + public double calculateDistance2D(WorldObject object) + { + return calculateDistance2D(object.getX(), object.getY(), object.getZ()); + } + + /** + * Calculates the 3D distance between this WorldObject and given x, y, z. + * @param x the X coordinate + * @param y the Y coordinate + * @param z the Z coordinate + * @return distance between object and given x, y, z. + */ + public double calculateDistance3D(int x, int y, int z) + { + return Math.sqrt(Math.pow(x - getX(), 2) + Math.pow(y - getY(), 2) + Math.pow(z - getZ(), 2)); + } + + /** + * Calculates 3D distance between this WorldObject and given location. + * @param loc the location object + * @return distance between object and given location. + */ + public double calculateDistance3D(Location loc) + { + return calculateDistance3D(loc.getX(), loc.getY(), loc.getZ()); + } + + /** + * Calculates the non squared 2D distance between this WorldObject and given x, y, z. + * @param x the X coordinate + * @param y the Y coordinate + * @param z the Z coordinate + * @return distance between object and given x, y, z. + */ + public double calculateDistanceSq2D(int x, int y, int z) + { + return Math.pow(x - getX(), 2) + Math.pow(y - getY(), 2); + } + + /** + * Calculates the non squared 2D distance between this WorldObject and given WorldObject. + * @param object the target object + * @return distance between object and given object. + */ + public double calculateDistanceSq2D(WorldObject object) + { + return calculateDistanceSq2D(object.getX(), object.getY(), object.getZ()); + } + + /** + * Calculates the non squared 3D distance between this WorldObject and given x, y, z. + * @param x the X coordinate + * @param y the Y coordinate + * @param z the Z coordinate + * @return distance between object and given x, y, z. + */ + public double calculateDistanceSq3D(int x, int y, int z) + { + return Math.pow(x - getX(), 2) + Math.pow(y - getY(), 2) + Math.pow(z - getZ(), 2); + } + + /** + * Calculates the non squared 3D distance between this WorldObject and given WorldObject. + * @param object the target object + * @return distance between object and given object. + */ + public double calculateDistanceSq3D(WorldObject object) + { + return calculateDistanceSq3D(object.getX(), object.getY(), object.getZ()); + } + @Override public String toString() { diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/model/actor/Creature.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/model/actor/Creature.java index 06a3e99438..68003a2017 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -617,7 +617,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder } // This function is called too often from movement code. - if (!force && (getDistanceSq(_lastZoneValidateLocation.getX(), _lastZoneValidateLocation.getY(), _lastZoneValidateLocation.getZ()) < (isNpc() && !isInCombat() ? Config.MAX_DRIFT_RANGE * Config.MAX_DRIFT_RANGE : 10000))) + if (!force && (calculateDistanceSq3D(_lastZoneValidateLocation.getX(), _lastZoneValidateLocation.getY(), _lastZoneValidateLocation.getZ()) < (isNpc() && !isInCombat() ? Config.MAX_DRIFT_RANGE * Config.MAX_DRIFT_RANGE : 10000))) { return; } @@ -5797,88 +5797,6 @@ public abstract class Creature extends WorldObject implements ISkillsHolder return result; } - /** - * Return the distance between the current position of the Creature and the target (x,y). - * @param x X position of the target - * @param y Y position of the target - * @return the plan distance - * @deprecated use getPlanDistanceSq(int x, int y, int z) - */ - @Deprecated - public double getDistance(int x, int y) - { - final double dx = x - getX(); - final double dy = y - getY(); - return Math.sqrt((dx * dx) + (dy * dy)); - } - - /** - * Return the distance between the current position of the Creature and the target (x,y). - * @param x X position of the target - * @param y Y position of the target - * @param z the z - * @return the plan distance - * @deprecated use getPlanDistanceSq(int x, int y, int z) - */ - @Deprecated - public double getDistance(int x, int y, int z) - { - final double dx = x - getX(); - final double dy = y - getY(); - final double dz = z - getZ(); - return Math.sqrt((dx * dx) + (dy * dy) + (dz * dz)); - } - - /** - * Return the squared distance between the current position of the Creature and the given object. - * @param object WorldObject - * @return the squared distance - */ - public double getDistanceSq(WorldObject object) - { - return getDistanceSq(object.getX(), object.getY(), object.getZ()); - } - - /** - * Return the squared distance between the current position of the Creature and the given x, y, z. - * @param x X position of the target - * @param y Y position of the target - * @param z Z position of the target - * @return the squared distance - */ - public double getDistanceSq(int x, int y, int z) - { - final double dx = x - getX(); - final double dy = y - getY(); - final double dz = z - getZ(); - return (dx * dx) + (dy * dy) + (dz * dz); - } - - /** - * Return the squared plan distance between the current position of the Creature and the given object.
- * (check only x and y, not z) - * @param object WorldObject - * @return the squared plan distance - */ - public double getPlanDistanceSq(WorldObject object) - { - return getPlanDistanceSq(object.getX(), object.getY()); - } - - /** - * Return the squared plan distance between the current position of the Creature and the given x, y, z.
- * (check only x and y, not z) - * @param x X position of the target - * @param y Y position of the target - * @return the squared plan distance - */ - public double getPlanDistanceSq(int x, int y) - { - final double dx = x - getX(); - final double dy = y - getY(); - return (dx * dx) + (dy * dy); - } - /** * Check if this object is inside the given radius around the given object. Warning: doesn't cover collision radius! * @param object the target diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java index 65cb6fdcd5..9aa5b5cdfa 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java @@ -1727,7 +1727,7 @@ public class PlayerInstance extends Playable } // This function is called too often from movement code. - if (!force && (getDistanceSq(_lastZoneValidateLocation.getX(), _lastZoneValidateLocation.getY(), _lastZoneValidateLocation.getZ()) < 10000)) + if (!force && (calculateDistanceSq3D(_lastZoneValidateLocation.getX(), _lastZoneValidateLocation.getY(), _lastZoneValidateLocation.getZ()) < 10000)) { return; } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/model/skills/Formulas.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/model/skills/Formulas.java index bc873d3a7e..a8f6e8906e 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/model/skills/Formulas.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/model/skills/Formulas.java @@ -1166,7 +1166,6 @@ public class Formulas return (creature.calcStat(Stat.REGENERATE_CP_RATE, init, null, null) * cpRegenMultiplier) + cpRegenBonus; } - @SuppressWarnings("deprecation") public static final double calcFestivalRegenModifier(PlayerInstance player) { final int[] festivalInfo = SevenSignsFestival.getInstance().getFestivalForPlayer(player); @@ -1191,7 +1190,7 @@ public class Formulas } // Check the distance between the player and the player spawn point, in the center of the arena. - final double distToCenter = player.getDistance(festivalCenter[0], festivalCenter[1]); + final double distToCenter = player.calculateDistance2D(festivalCenter[0], festivalCenter[1], 0); return 1.0 - (distToCenter * 0.0005); // Maximum Decreased Regen of ~ -65%; } diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestGetItemFromPet.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestGetItemFromPet.java index b58c57cfa2..ea0895553d 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestGetItemFromPet.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/RequestGetItemFromPet.java @@ -77,7 +77,7 @@ public class RequestGetItemFromPet extends GameClientPacket return; } - if (player.getDistanceSq(pet) > 40000) // 200*200 + if (player.calculateDistanceSq3D(pet) > 40000) // 200*200 { player.sendPacket(SystemMessageId.YOUR_TARGET_IS_OUT_OF_RANGE); sendPacket(ActionFailed.STATIC_PACKET); diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/TradeRequest.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/TradeRequest.java index abc945c081..91391bf5a7 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/TradeRequest.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/network/clientpackets/TradeRequest.java @@ -187,7 +187,7 @@ public class TradeRequest extends GameClientPacket return; } - if (player.getDistanceSq(partner) > 22500) // 150 + if (player.calculateDistanceSq3D(partner) > 22500) // 150 { player.sendPacket(SystemMessageId.YOUR_TARGET_IS_OUT_OF_RANGE); player.sendPacket(ActionFailed.STATIC_PACKET); diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/util/Broadcast.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/util/Broadcast.java index 7271daded4..1197c93e6d 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/util/Broadcast.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/util/Broadcast.java @@ -165,7 +165,7 @@ public class Broadcast for (PlayerInstance player : creature.getKnownList().getKnownPlayers().values()) { - if ((player != null) && (creature.getDistanceSq(player) <= radiusSq)) + if ((player != null) && (creature.calculateDistanceSq3D(player) <= radiusSq)) { player.sendPacket(mov); } diff --git a/L2J_Mobius_C6_Interlude/dist/game/data/scripts/ai/bosses/VanHalter.java b/L2J_Mobius_C6_Interlude/dist/game/data/scripts/ai/bosses/VanHalter.java index 33fdc50079..828dfb32f2 100644 --- a/L2J_Mobius_C6_Interlude/dist/game/data/scripts/ai/bosses/VanHalter.java +++ b/L2J_Mobius_C6_Interlude/dist/game/data/scripts/ai/bosses/VanHalter.java @@ -1418,7 +1418,7 @@ public class VanHalter extends Quest // Set camera. for (PlayerInstance pc : _vanHalter.getKnownList().getKnownPlayers().values()) { - if (pc.getPlanDistanceSq(_vanHalter) <= DISTANCE) + if (pc.calculateDistanceSq2D(_vanHalter) <= DISTANCE) { _vanHalter.broadcastPacket(new SpecialCamera(_vanHalter.getObjectId(), 50, 90, 0, 0, 15000)); } @@ -1437,7 +1437,7 @@ public class VanHalter extends Quest // Set camera. for (PlayerInstance pc : _vanHalter.getKnownList().getKnownPlayers().values()) { - if (pc.getPlanDistanceSq(_cameraMarker.get(5)) <= DISTANCE) + if (pc.calculateDistanceSq2D(_cameraMarker.get(5)) <= DISTANCE) { _cameraMarker.get(5).broadcastPacket(new SpecialCamera(_cameraMarker.get(5).getObjectId(), 1842, 100, -3, 0, 15000)); } @@ -1456,7 +1456,7 @@ public class VanHalter extends Quest // Set camera. for (PlayerInstance pc : _vanHalter.getKnownList().getKnownPlayers().values()) { - if (pc.getPlanDistanceSq(_cameraMarker.get(5)) <= DISTANCE) + if (pc.calculateDistanceSq2D(_cameraMarker.get(5)) <= DISTANCE) { _cameraMarker.get(5).broadcastPacket(new SpecialCamera(_cameraMarker.get(5).getObjectId(), 1861, 97, -10, 1500, 15000)); } @@ -1475,7 +1475,7 @@ public class VanHalter extends Quest // Set camera. for (PlayerInstance pc : _vanHalter.getKnownList().getKnownPlayers().values()) { - if (pc.getPlanDistanceSq(_cameraMarker.get(4)) <= DISTANCE) + if (pc.calculateDistanceSq2D(_cameraMarker.get(4)) <= DISTANCE) { _cameraMarker.get(4).broadcastPacket(new SpecialCamera(_cameraMarker.get(4).getObjectId(), 1876, 97, 12, 0, 15000)); } @@ -1494,7 +1494,7 @@ public class VanHalter extends Quest // Set camera. for (PlayerInstance pc : _vanHalter.getKnownList().getKnownPlayers().values()) { - if (pc.getPlanDistanceSq(_cameraMarker.get(4)) <= DISTANCE) + if (pc.calculateDistanceSq2D(_cameraMarker.get(4)) <= DISTANCE) { _cameraMarker.get(4).broadcastPacket(new SpecialCamera(_cameraMarker.get(4).getObjectId(), 1839, 94, 0, 1500, 15000)); } @@ -1513,7 +1513,7 @@ public class VanHalter extends Quest // Set camera. for (PlayerInstance pc : _vanHalter.getKnownList().getKnownPlayers().values()) { - if (pc.getPlanDistanceSq(_cameraMarker.get(3)) <= DISTANCE) + if (pc.calculateDistanceSq2D(_cameraMarker.get(3)) <= DISTANCE) { _cameraMarker.get(3).broadcastPacket(new SpecialCamera(_cameraMarker.get(3).getObjectId(), 1872, 94, 15, 0, 15000)); } @@ -1532,7 +1532,7 @@ public class VanHalter extends Quest // Set camera. for (PlayerInstance pc : _vanHalter.getKnownList().getKnownPlayers().values()) { - if (pc.getPlanDistanceSq(_cameraMarker.get(3)) <= DISTANCE) + if (pc.calculateDistanceSq2D(_cameraMarker.get(3)) <= DISTANCE) { _cameraMarker.get(3).broadcastPacket(new SpecialCamera(_cameraMarker.get(3).getObjectId(), 1839, 92, 0, 1500, 15000)); } @@ -1551,7 +1551,7 @@ public class VanHalter extends Quest // Set camera. for (PlayerInstance pc : _vanHalter.getKnownList().getKnownPlayers().values()) { - if (pc.getPlanDistanceSq(_cameraMarker.get(2)) <= DISTANCE) + if (pc.calculateDistanceSq2D(_cameraMarker.get(2)) <= DISTANCE) { _cameraMarker.get(2).broadcastPacket(new SpecialCamera(_cameraMarker.get(2).getObjectId(), 1872, 92, 15, 0, 15000)); } @@ -1570,7 +1570,7 @@ public class VanHalter extends Quest // Set camera. for (PlayerInstance pc : _vanHalter.getKnownList().getKnownPlayers().values()) { - if (pc.getPlanDistanceSq(_cameraMarker.get(2)) <= DISTANCE) + if (pc.calculateDistanceSq2D(_cameraMarker.get(2)) <= DISTANCE) { _cameraMarker.get(2).broadcastPacket(new SpecialCamera(_cameraMarker.get(2).getObjectId(), 1839, 90, 5, 1500, 15000)); } @@ -1589,7 +1589,7 @@ public class VanHalter extends Quest // Set camera. for (PlayerInstance pc : _vanHalter.getKnownList().getKnownPlayers().values()) { - if (pc.getPlanDistanceSq(_cameraMarker.get(1)) <= DISTANCE) + if (pc.calculateDistanceSq2D(_cameraMarker.get(1)) <= DISTANCE) { _cameraMarker.get(1).broadcastPacket(new SpecialCamera(_cameraMarker.get(1).getObjectId(), 1872, 90, 5, 0, 15000)); } @@ -1608,7 +1608,7 @@ public class VanHalter extends Quest // Set camera. for (PlayerInstance pc : _vanHalter.getKnownList().getKnownPlayers().values()) { - if (pc.getPlanDistanceSq(_cameraMarker.get(1)) <= DISTANCE) + if (pc.calculateDistanceSq2D(_cameraMarker.get(1)) <= DISTANCE) { _cameraMarker.get(1).broadcastPacket(new SpecialCamera(_cameraMarker.get(1).getObjectId(), 2002, 90, 2, 1500, 15000)); } @@ -1627,7 +1627,7 @@ public class VanHalter extends Quest // Set camera. for (PlayerInstance pc : _vanHalter.getKnownList().getKnownPlayers().values()) { - if (pc.getPlanDistanceSq(_vanHalter) <= DISTANCE) + if (pc.calculateDistanceSq2D(_vanHalter) <= DISTANCE) { _vanHalter.broadcastPacket(new SpecialCamera(_vanHalter.getObjectId(), 50, 90, 10, 0, 15000)); } @@ -1679,7 +1679,7 @@ public class VanHalter extends Quest // Set camera. for (PlayerInstance pc : _vanHalter.getKnownList().getKnownPlayers().values()) { - if (pc.getPlanDistanceSq(_vanHalter) <= DISTANCE) + if (pc.calculateDistanceSq2D(_vanHalter) <= DISTANCE) { _vanHalter.broadcastPacket(new SpecialCamera(_vanHalter.getObjectId(), 100, 90, 15, 1500, 15000)); } @@ -1698,7 +1698,7 @@ public class VanHalter extends Quest // Set camera. for (PlayerInstance pc : _vanHalter.getKnownList().getKnownPlayers().values()) { - if (pc.getPlanDistanceSq(_vanHalter) <= DISTANCE) + if (pc.calculateDistanceSq2D(_vanHalter) <= DISTANCE) { _vanHalter.broadcastPacket(new SpecialCamera(_vanHalter.getObjectId(), 5200, 90, -10, 9500, 6000)); } 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 14b9e373ab..1a300abe8e 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 @@ -521,7 +521,7 @@ public class AttackableAI extends CreatureAI _actor.setWalking(); } - if (_actor.getPlanDistanceSq(((MinionInstance) _actor).getLeader()) > (offset * offset)) + if (_actor.calculateDistanceSq2D(((MinionInstance) _actor).getLeader()) > (offset * offset)) { int x1; int y1; @@ -556,7 +556,7 @@ public class AttackableAI extends CreatureAI z1 = p[2]; // Calculate the distance between the current position of the Creature and the target (x,y) - final double distance2 = _actor.getPlanDistanceSq(x1, y1); + final double distance2 = _actor.calculateDistanceSq2D(x1, y1, z1); if (distance2 > (Config.MAX_DRIFT_RANGE * Config.MAX_DRIFT_RANGE)) { npc.setReturningToSpawnPoint(true); @@ -810,7 +810,7 @@ public class AttackableAI extends CreatureAI if ((weapon != null) && (weapon.getItemType() == WeaponType.BOW)) { // Micht: kepping this one otherwise we should do 2 sqrt - final double distance2 = _actor.getPlanDistanceSq(originalAttackTarget.getX(), originalAttackTarget.getY()); + final double distance2 = _actor.calculateDistanceSq2D(originalAttackTarget); if (Math.sqrt(distance2) <= (60 + combinedCollision)) { final int chance = 5; @@ -861,7 +861,7 @@ public class AttackableAI extends CreatureAI setAttackTarget(hated); } // We should calculate new distance cuz mob can have changed the target - dist2 = _actor.getPlanDistanceSq(hated.getX(), hated.getY()); + dist2 = _actor.calculateDistanceSq2D(hated); if (hated.isMoving()) { range += 50; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/ai/ControllableMobAI.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/ai/ControllableMobAI.java index 7a6916b196..c761af1b9b 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/ai/ControllableMobAI.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/ai/ControllableMobAI.java @@ -189,7 +189,7 @@ public class ControllableMobAI extends AttackableAI ctrlAi.forceAttack(_actor); final Skill[] skills = _actor.getAllSkills(); - final double dist2 = _actor.getPlanDistanceSq(target.getX(), target.getY()); + final double dist2 = _actor.calculateDistanceSq2D(target); final int range = _actor.getPhysicalAttackRange() + _actor.getTemplate().getCollisionRadius() + target.getTemplate().getCollisionRadius(); int maxRange = range; if (!_actor.isMuted() && (dist2 > ((range + 20) * (range + 20)))) @@ -226,7 +226,7 @@ public class ControllableMobAI extends AttackableAI _actor.setTarget(getForcedTarget()); final Skill[] skills = _actor.getAllSkills(); - final double dist2 = _actor.getPlanDistanceSq(getForcedTarget().getX(), getForcedTarget().getY()); + final double dist2 = _actor.calculateDistanceSq2D(getForcedTarget()); final int range = _actor.getPhysicalAttackRange() + _actor.getTemplate().getCollisionRadius() + getForcedTarget().getTemplate().getCollisionRadius(); int maxRange = range; if (!_actor.isMuted() && (dist2 > ((range + 20) * (range + 20)))) @@ -293,7 +293,7 @@ public class ControllableMobAI extends AttackableAI _actor.setTarget(getAttackTarget()); final Skill[] skills = _actor.getAllSkills(); - final double dist2 = _actor.getPlanDistanceSq(getAttackTarget().getX(), getAttackTarget().getY()); + final double dist2 = _actor.calculateDistanceSq2D(getAttackTarget()); final int range = _actor.getPhysicalAttackRange() + _actor.getTemplate().getCollisionRadius() + getAttackTarget().getTemplate().getCollisionRadius(); int maxRange = range; if (!_actor.isMuted() && (dist2 > ((range + 20) * (range + 20)))) diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/ai/FortSiegeGuardAI.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/ai/FortSiegeGuardAI.java index 3e085272a7..e51354e93e 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/ai/FortSiegeGuardAI.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/ai/FortSiegeGuardAI.java @@ -596,7 +596,7 @@ public class FortSiegeGuardAI extends CreatureAI implements Runnable { _actor.setTarget(attackTarget); skills = _actor.getAllSkills(); - dist2 = _actor.getPlanDistanceSq(attackTarget.getX(), attackTarget.getY()); + dist2 = _actor.calculateDistanceSq2D(attackTarget); range = _actor.getPhysicalAttackRange() + _actor.getTemplate().getCollisionRadius() + attackTarget.getTemplate().getCollisionRadius(); if (attackTarget.isMoving()) { diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/ai/SiegeGuardAI.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/ai/SiegeGuardAI.java index 256f5b2c89..6310304f84 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/ai/SiegeGuardAI.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/ai/SiegeGuardAI.java @@ -317,7 +317,7 @@ public class SiegeGuardAI extends CreatureAI implements Runnable { _actor.setTarget(attackTarget); skills = _actor.getAllSkills(); - dist2 = _actor.getPlanDistanceSq(attackTarget.getX(), attackTarget.getY()); + dist2 = _actor.calculateDistanceSq2D(attackTarget); range = _actor.getPhysicalAttackRange() + _actor.getTemplate().getCollisionRadius() + attackTarget.getTemplate().getCollisionRadius(); } catch (NullPointerException e) diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/WorldObject.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/WorldObject.java index efa7d53b2e..c47018812d 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/WorldObject.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/WorldObject.java @@ -475,6 +475,94 @@ public abstract class WorldObject return false; } + /** + * Calculates 2D distance between this WorldObject and given x, y, z. + * @param x the X coordinate + * @param y the Y coordinate + * @param z the Z coordinate + * @return distance between object and given x, y, z. + */ + public double calculateDistance2D(int x, int y, int z) + { + return Math.sqrt(Math.pow(x - getX(), 2) + Math.pow(y - getY(), 2)); + } + + /** + * Calculates the 2D distance between this WorldObject and given WorldObject. + * @param object the target object + * @return distance between object and given object. + */ + public double calculateDistance2D(WorldObject object) + { + return calculateDistance2D(object.getX(), object.getY(), object.getZ()); + } + + /** + * Calculates the 3D distance between this WorldObject and given x, y, z. + * @param x the X coordinate + * @param y the Y coordinate + * @param z the Z coordinate + * @return distance between object and given x, y, z. + */ + public double calculateDistance3D(int x, int y, int z) + { + return Math.sqrt(Math.pow(x - getX(), 2) + Math.pow(y - getY(), 2) + Math.pow(z - getZ(), 2)); + } + + /** + * Calculates 3D distance between this WorldObject and given location. + * @param loc the location object + * @return distance between object and given location. + */ + public double calculateDistance3D(Location loc) + { + return calculateDistance3D(loc.getX(), loc.getY(), loc.getZ()); + } + + /** + * Calculates the non squared 2D distance between this WorldObject and given x, y, z. + * @param x the X coordinate + * @param y the Y coordinate + * @param z the Z coordinate + * @return distance between object and given x, y, z. + */ + public double calculateDistanceSq2D(int x, int y, int z) + { + return Math.pow(x - getX(), 2) + Math.pow(y - getY(), 2); + } + + /** + * Calculates the non squared 2D distance between this WorldObject and given WorldObject. + * @param object the target object + * @return distance between object and given object. + */ + public double calculateDistanceSq2D(WorldObject object) + { + return calculateDistanceSq2D(object.getX(), object.getY(), object.getZ()); + } + + /** + * Calculates the non squared 3D distance between this WorldObject and given x, y, z. + * @param x the X coordinate + * @param y the Y coordinate + * @param z the Z coordinate + * @return distance between object and given x, y, z. + */ + public double calculateDistanceSq3D(int x, int y, int z) + { + return Math.pow(x - getX(), 2) + Math.pow(y - getY(), 2) + Math.pow(z - getZ(), 2); + } + + /** + * Calculates the non squared 3D distance between this WorldObject and given WorldObject. + * @param object the target object + * @return distance between object and given object. + */ + public double calculateDistanceSq3D(WorldObject object) + { + return calculateDistanceSq3D(object.getX(), object.getY(), object.getZ()); + } + @Override public String toString() { diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/Creature.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/Creature.java index 0eeb3e9aba..7c7d735537 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -619,7 +619,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder } // This function is called too often from movement code. - if (!force && (getDistanceSq(_lastZoneValidateLocation.getX(), _lastZoneValidateLocation.getY(), _lastZoneValidateLocation.getZ()) < (isNpc() && !isInCombat() ? Config.MAX_DRIFT_RANGE * Config.MAX_DRIFT_RANGE : 10000))) + if (!force && (calculateDistanceSq3D(_lastZoneValidateLocation.getX(), _lastZoneValidateLocation.getY(), _lastZoneValidateLocation.getZ()) < (isNpc() && !isInCombat() ? Config.MAX_DRIFT_RANGE * Config.MAX_DRIFT_RANGE : 10000))) { return; } @@ -5843,88 +5843,6 @@ public abstract class Creature extends WorldObject implements ISkillsHolder return result; } - /** - * Return the distance between the current position of the Creature and the target (x,y). - * @param x X position of the target - * @param y Y position of the target - * @return the plan distance - * @deprecated use getPlanDistanceSq(int x, int y, int z) - */ - @Deprecated - public double getDistance(int x, int y) - { - final double dx = x - getX(); - final double dy = y - getY(); - return Math.sqrt((dx * dx) + (dy * dy)); - } - - /** - * Return the distance between the current position of the Creature and the target (x,y). - * @param x X position of the target - * @param y Y position of the target - * @param z the z - * @return the plan distance - * @deprecated use getPlanDistanceSq(int x, int y, int z) - */ - @Deprecated - public double getDistance(int x, int y, int z) - { - final double dx = x - getX(); - final double dy = y - getY(); - final double dz = z - getZ(); - return Math.sqrt((dx * dx) + (dy * dy) + (dz * dz)); - } - - /** - * Return the squared distance between the current position of the Creature and the given object. - * @param object WorldObject - * @return the squared distance - */ - public double getDistanceSq(WorldObject object) - { - return getDistanceSq(object.getX(), object.getY(), object.getZ()); - } - - /** - * Return the squared distance between the current position of the Creature and the given x, y, z. - * @param x X position of the target - * @param y Y position of the target - * @param z Z position of the target - * @return the squared distance - */ - public double getDistanceSq(int x, int y, int z) - { - final double dx = x - getX(); - final double dy = y - getY(); - final double dz = z - getZ(); - return (dx * dx) + (dy * dy) + (dz * dz); - } - - /** - * Return the squared plan distance between the current position of the Creature and the given object.
- * (check only x and y, not z) - * @param object WorldObject - * @return the squared plan distance - */ - public double getPlanDistanceSq(WorldObject object) - { - return getPlanDistanceSq(object.getX(), object.getY()); - } - - /** - * Return the squared plan distance between the current position of the Creature and the given x, y, z.
- * (check only x and y, not z) - * @param x X position of the target - * @param y Y position of the target - * @return the squared plan distance - */ - public double getPlanDistanceSq(int x, int y) - { - final double dx = x - getX(); - final double dy = y - getY(); - return (dx * dx) + (dy * dy); - } - /** * Check if this object is inside the given radius around the given object. Warning: doesn't cover collision radius! * @param object the target diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java index bd951b09ce..0d890cb323 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java @@ -1741,7 +1741,7 @@ public class PlayerInstance extends Playable } // This function is called too often from movement code. - if (!force && (getDistanceSq(_lastZoneValidateLocation.getX(), _lastZoneValidateLocation.getY(), _lastZoneValidateLocation.getZ()) < 10000)) + if (!force && (calculateDistanceSq3D(_lastZoneValidateLocation.getX(), _lastZoneValidateLocation.getY(), _lastZoneValidateLocation.getZ()) < 10000)) { return; } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/skills/Formulas.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/skills/Formulas.java index bc873d3a7e..a8f6e8906e 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/skills/Formulas.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/skills/Formulas.java @@ -1166,7 +1166,6 @@ public class Formulas return (creature.calcStat(Stat.REGENERATE_CP_RATE, init, null, null) * cpRegenMultiplier) + cpRegenBonus; } - @SuppressWarnings("deprecation") public static final double calcFestivalRegenModifier(PlayerInstance player) { final int[] festivalInfo = SevenSignsFestival.getInstance().getFestivalForPlayer(player); @@ -1191,7 +1190,7 @@ public class Formulas } // Check the distance between the player and the player spawn point, in the center of the arena. - final double distToCenter = player.getDistance(festivalCenter[0], festivalCenter[1]); + final double distToCenter = player.calculateDistance2D(festivalCenter[0], festivalCenter[1], 0); return 1.0 - (distToCenter * 0.0005); // Maximum Decreased Regen of ~ -65%; } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestGetItemFromPet.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestGetItemFromPet.java index b58c57cfa2..ea0895553d 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestGetItemFromPet.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestGetItemFromPet.java @@ -77,7 +77,7 @@ public class RequestGetItemFromPet extends GameClientPacket return; } - if (player.getDistanceSq(pet) > 40000) // 200*200 + if (player.calculateDistanceSq3D(pet) > 40000) // 200*200 { player.sendPacket(SystemMessageId.YOUR_TARGET_IS_OUT_OF_RANGE); sendPacket(ActionFailed.STATIC_PACKET); diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/TradeRequest.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/TradeRequest.java index ef7528bcad..013008fdfb 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/TradeRequest.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/TradeRequest.java @@ -201,7 +201,7 @@ public class TradeRequest extends GameClientPacket return; } - if (player.getDistanceSq(partner) > 22500) // 150 + if (player.calculateDistanceSq3D(partner) > 22500) // 150 { player.sendPacket(SystemMessageId.YOUR_TARGET_IS_OUT_OF_RANGE); player.sendPacket(ActionFailed.STATIC_PACKET); diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/util/Broadcast.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/util/Broadcast.java index 7271daded4..1197c93e6d 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/util/Broadcast.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/util/Broadcast.java @@ -165,7 +165,7 @@ public class Broadcast for (PlayerInstance player : creature.getKnownList().getKnownPlayers().values()) { - if ((player != null) && (creature.getDistanceSq(player) <= radiusSq)) + if ((player != null) && (creature.calculateDistanceSq3D(player) <= radiusSq)) { player.sendPacket(mov); }