diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/ai/group_template/Monastery.java b/L2J_DataPack_BETA/dist/game/data/scripts/ai/group_template/Monastery.java
index 7781324bd709d073fdfa03e1931ce14f4ab3acd6..2454c6567c2310217ca2f3636a55eab0b120ae0b 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/ai/group_template/Monastery.java
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/ai/group_template/Monastery.java
@@ -148,7 +148,7 @@ public class Monastery extends AbstractNpcAI
 				return super.onAdvEvent(event, npc, player);
 			}
 			
-			final double distance = Math.sqrt(npc.getPlanDistanceSq(player.getX(), player.getY()));
+			final double distance = npc.calculateDistance(player, false, false);
 			if (((distance < 500) && !player.isDead() && GeoData.getInstance().canSeeTarget(npc, player)))
 			{
 				switch (npc.getId())
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/ai/individual/Anais.java b/L2J_DataPack_BETA/dist/game/data/scripts/ai/individual/Anais.java
index 730ccf07e20da1b9c771ae3d22afdecf7bee378b..9b1b5e88416f4155fbfbb3f4614b9fbca4741df6 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/ai/individual/Anais.java
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/ai/individual/Anais.java
@@ -120,7 +120,7 @@ public final class Anais extends AbstractNpcAI
 			case "GUARD_ATTACK":
 				if (_nextTarget != null)
 				{
-					final double distance = Math.sqrt(npc.getPlanDistanceSq(_nextTarget.getX(), _nextTarget.getY()));
+					final double distance = npc.calculateDistance(_nextTarget, false, false);
 					if (distance < 100)
 					{
 						npc.doCast(DIVINE_NOVA.getSkill());
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/ai/individual/Beleth.java b/L2J_DataPack_BETA/dist/game/data/scripts/ai/individual/Beleth.java
index 753e1cfd53304135c9623993188ca5f2448915b1..891d22e23b14f2f67d734a49a1ffc683d2c6e9c6 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/ai/individual/Beleth.java
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/ai/individual/Beleth.java
@@ -502,7 +502,7 @@ public class Beleth extends AbstractNpcAI
 			{
 				return null;
 			}
-			final double distance = Math.sqrt(npc.getPlanDistanceSq(attacker.getX(), attacker.getY()));
+			final double distance = npc.calculateDistance(attacker, false, false);
 			if ((distance > 500) || (getRandom(100) < 80))
 			{
 				for (L2Npc beleth : MINIONS)
@@ -539,7 +539,7 @@ public class Beleth extends AbstractNpcAI
 		{
 			if ((player != null) && !player.isDead())
 			{
-				final double distance2 = Math.sqrt(npc.getPlanDistanceSq(player.getX(), player.getY()));
+				final double distance2 = npc.calculateDistance(player, false, false);
 				if ((distance2 > 890) && !npc.isMovementDisabled())
 				{
 					npc.setTarget(player);
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/ai/individual/Venom/Venom.java b/L2J_DataPack_BETA/dist/game/data/scripts/ai/individual/Venom/Venom.java
index 5d49e5d52d42f3fba93d5356e625a39486ed319e..0802a470456fb9cf7b257e943ea7c27b7743fc41 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/ai/individual/Venom/Venom.java
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/ai/individual/Venom/Venom.java
@@ -304,7 +304,7 @@ public final class Venom extends AbstractNpcAI
 	@Override
 	public String onAttack(L2Npc npc, L2PcInstance attacker, int damage, boolean isSummon)
 	{
-		final double distance = Math.sqrt(npc.getPlanDistanceSq(attacker.getX(), attacker.getY()));
+		final double distance = npc.calculateDistance(attacker, false, false);
 		if (_aggroMode && (getRandom(100) < 25))
 		{
 			npc.setTarget(attacker);
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/actionhandlers/L2NpcActionShift.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/actionhandlers/L2NpcActionShift.java
index 4480ace86c610f4f74ee67ed606b3e0de4b51f8b..6ea8abc7d646853b9bee7cdcb95e3f8107ab2052 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/actionhandlers/L2NpcActionShift.java
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/actionhandlers/L2NpcActionShift.java
@@ -100,7 +100,7 @@ public class L2NpcActionShift implements IActionHandler
 			html.replace("%heading%", String.valueOf(((L2Character) target).getHeading()));
 			html.replace("%collision_radius%", String.valueOf(((L2Character) target).getTemplate().getfCollisionRadius()));
 			html.replace("%collision_height%", String.valueOf(((L2Character) target).getTemplate().getfCollisionHeight()));
-			html.replace("%dist%", String.valueOf((int) Math.sqrt(activeChar.getDistanceSq(target))));
+			html.replace("%dist%", String.valueOf((int) activeChar.calculateDistance(target, true, false)));
 			
 			byte attackAttribute = ((L2Character) target).getAttackElement();
 			html.replace("%ele_atk%", Elementals.getElementName(attackAttribute));
@@ -115,8 +115,8 @@ public class L2NpcActionShift implements IActionHandler
 			if (((L2Npc) target).getSpawn() != null)
 			{
 				html.replace("%spawn%", ((L2Npc) target).getSpawn().getX() + " " + ((L2Npc) target).getSpawn().getY() + " " + ((L2Npc) target).getSpawn().getZ());
-				html.replace("%loc2d%", String.valueOf((int) Math.sqrt(((L2Character) target).getPlanDistanceSq(((L2Npc) target).getSpawn().getX(), ((L2Npc) target).getSpawn().getY()))));
-				html.replace("%loc3d%", String.valueOf((int) Math.sqrt(((L2Character) target).getDistanceSq(((L2Npc) target).getSpawn().getX(), ((L2Npc) target).getSpawn().getY(), ((L2Npc) target).getSpawn().getZ()))));
+				html.replace("%loc2d%", String.valueOf((int) target.calculateDistance(((L2Npc) target).getSpawn(), false, false)));
+				html.replace("%loc3d%", String.valueOf((int) target.calculateDistance(((L2Npc) target).getSpawn(), true, false)));
 				if (((L2Npc) target).getSpawn().getRespawnMinDelay() == 0)
 				{
 					html.replace("%resp%", "None");
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/hellbound/TowerOfNaia/TowerOfNaia.java b/L2J_DataPack_BETA/dist/game/data/scripts/hellbound/TowerOfNaia/TowerOfNaia.java
index f47058c82ec7b72b1e2ccc4e8a993d745a0d20d8..041d9ed476f6c49da7b842665fde0e42d400086f 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/hellbound/TowerOfNaia/TowerOfNaia.java
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/hellbound/TowerOfNaia/TowerOfNaia.java
@@ -1309,7 +1309,7 @@ public class TowerOfNaia extends Quest
 		int time = 0;
 		if (npc != null)
 		{
-			double distance = Util.calculateDistance(coords[0], coords[1], coords[2], npc.getX(), npc.getY(), npc.getZ(), true);
+			double distance = npc.calculateDistance(coords[0], coords[1], coords[2], true, false);
 			int heading = Util.calculateHeadingFrom(npc.getX(), npc.getY(), coords[0], coords[1]);
 			time = (int) ((distance / npc.getWalkSpeed()) * 1000);
 			npc.setIsRunning(false);
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/instances/SeedOfDestruction/Stage1.java b/L2J_DataPack_BETA/dist/game/data/scripts/instances/SeedOfDestruction/Stage1.java
index db19f2f2d818394af9cf40b540b40e0ed2cdc5eb..3425cbe1db28c5fb72f5805b2835550d814ad872 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/instances/SeedOfDestruction/Stage1.java
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/instances/SeedOfDestruction/Stage1.java
@@ -899,7 +899,7 @@ public class Stage1 extends Quest
 				L2Character mostHate = ((L2Attackable) npc).getMostHated();
 				if (mostHate != null)
 				{
-					double dist = Util.calculateDistance(mostHate.getXdestination(), mostHate.getYdestination(), npc.getSpawn().getX(), npc.getSpawn().getY());
+					double dist = Util.calculateDistance(mostHate.getXdestination(), mostHate.getYdestination(), 0, npc.getSpawn().getX(), npc.getSpawn().getY(), 0, false, false);
 					if (dist > 900)
 					{
 						((L2Attackable) npc).reduceHate(mostHate, ((L2Attackable) npc).getHating(mostHate));
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/quests/Q00457_LostAndFound/Q00457_LostAndFound.java b/L2J_DataPack_BETA/dist/game/data/scripts/quests/Q00457_LostAndFound/Q00457_LostAndFound.java
index 87c648a3e887c594dac870131e1dc78b50500e48..7fb7221e9babcec6a81e94758180220fba49fe79 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/quests/Q00457_LostAndFound/Q00457_LostAndFound.java
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/quests/Q00457_LostAndFound/Q00457_LostAndFound.java
@@ -107,7 +107,7 @@ public final class Q00457_LostAndFound extends Quest
 				st.exitQuest(QuestType.DAILY);
 				break;
 			case "check":
-				final double distance = Math.sqrt(npc.getPlanDistanceSq(player.getX(), player.getY()));
+				final double distance = npc.calculateDistance(player, false, false);
 				if (distance > 1000)
 				{
 					if (distance > 5000)