diff --git a/2006Redone Server/src/redone/game/npcs/NpcHandler.java b/2006Redone Server/src/redone/game/npcs/NpcHandler.java index b74f00ff..fa6bfb7f 100644 --- a/2006Redone Server/src/redone/game/npcs/NpcHandler.java +++ b/2006Redone Server/src/redone/game/npcs/NpcHandler.java @@ -1047,17 +1047,25 @@ public class NpcHandler { && y > npc.makeY - Constants.NPC_FOLLOW_DISTANCE) { if (npc.heightLevel == player.heightLevel) { if (player != null && npc != null) { - if (playerY < y) { - npc.moveX = GetMove(x, playerX); + if (playerX > x && playerY < y) { + npc.moveX = GetMove(x,playerX);//Diagonal bottom right + } else if (playerX < x && playerY < y) { + npc.moveY = GetMove(y,playerY); //Diagonal bottom left + } else if (playerX < x && playerY > y) { + npc.moveX = GetMove(x,playerX);// Diagonal top left + } else if (playerX > x && playerY > y) { + npc.moveY = GetMove(y,playerY);// Diagonal top right + } else if (playerY < y) { + npc.moveX = GetMove(x, playerX); //Move South to player npc.moveY = GetMove(y, playerY); } else if (playerY > y) { - npc.moveX = GetMove(x, playerX); + npc.moveX = GetMove(x, playerX); //Move North to player npc.moveY = GetMove(y, playerY); } else if (playerX < x) { - npc.moveX = GetMove(x, playerX); + npc.moveX = GetMove(x, playerX); //Move West to player npc.moveY = GetMove(y, playerY); } else if (playerX > x) { - npc.moveX = GetMove(x, playerX); + npc.moveX = GetMove(x, playerX); //Move East to player npc.moveY = GetMove(y, playerY); } npc.facePlayer(playerId); @@ -1203,12 +1211,16 @@ public class NpcHandler { } } } - public static boolean goodDistance(int objectX, int objectY, int playerX, int playerY, int distance) { return objectX - playerX <= distance && objectX - playerX >= -distance && objectY - playerY <= distance - && objectY - playerY >= -distance; + && objectY - playerY >= -distance + && !((objectX - playerX == distance && objectY - playerY == -distance) //Detect diagonal positioning + || (objectX - playerX == -distance && objectY - playerY == -distance) + || (objectX - playerX == -distance && objectY - playerY == distance) + || (objectX - playerX == distance && objectY - playerY == distance)) + ; } public static int getMaxHit(int i) { diff --git a/CompiledServer/production/2006rebotted/redone/game/npcs/NpcHandler.class b/CompiledServer/production/2006rebotted/redone/game/npcs/NpcHandler.class index 22ff6657..29f26876 100644 Binary files a/CompiledServer/production/2006rebotted/redone/game/npcs/NpcHandler.class and b/CompiledServer/production/2006rebotted/redone/game/npcs/NpcHandler.class differ