From 4e54393b8cfdfcf72a4a2d9525fddac9e831efec Mon Sep 17 00:00:00 2001 From: ipkpjersi Date: Fri, 20 Dec 2024 19:44:03 -0500 Subject: [PATCH 1/3] Improved Al-Kharid gates This is definitely not authentic, but, it's a big improvement functionality wise. You no longer get "you need to be closer to the gate to use it", you should always be able to use the Al-Kharid gate now. --- .../rs2/game/dialogues/DialogueHandler.java | 2 +- .../rs2/game/objects/impl/OtherObjects.java | 56 +++++++++++++++++-- 2 files changed, 53 insertions(+), 5 deletions(-) diff --git a/2006Scape Server/src/main/java/com/rs2/game/dialogues/DialogueHandler.java b/2006Scape Server/src/main/java/com/rs2/game/dialogues/DialogueHandler.java index cb474361f..7aa57f584 100644 --- a/2006Scape Server/src/main/java/com/rs2/game/dialogues/DialogueHandler.java +++ b/2006Scape Server/src/main/java/com/rs2/game/dialogues/DialogueHandler.java @@ -3984,7 +3984,7 @@ else if (player.getItemAssistant().playerHasItem(765)) player.nextChat = 1019; break; case 1019: - if (player.absX == 3267 || player.absX == 3268) { + if (player.absX == 3266 || player.absX == 3267 || player.absX == 3268 || player.absX == 3269) { sendNpcChat1("You must pay a toll of 10 gold coins to pass.", player.talkingNpc, "Border Guard"); player.nextChat = 1020; diff --git a/2006Scape Server/src/main/java/com/rs2/game/objects/impl/OtherObjects.java b/2006Scape Server/src/main/java/com/rs2/game/objects/impl/OtherObjects.java index 63f165872..32c2d16c3 100644 --- a/2006Scape Server/src/main/java/com/rs2/game/objects/impl/OtherObjects.java +++ b/2006Scape Server/src/main/java/com/rs2/game/objects/impl/OtherObjects.java @@ -49,17 +49,65 @@ public static void initKharid(Player player, int objectId) { player.getDialogueHandler().endDialogue(); return; } + + int targetX = player.getX(); + int targetY = player.getY(); + + //Determine intermediate walk coordinates + if (player.getX() == 3266 && player.getY() == 3229) { + targetX = 3267; + targetY = 3228; + } else if (player.getX() == 3266 && player.getY() == 3226) { + targetX = 3267; + targetY = 3227; + } else if (player.getX() == 3269 && player.getY() == 3226) { + targetX = 3268; + targetY = 3227; + } else if (player.getX() == 3269 && player.getY() == 3229) { + targetX = 3268; + targetY = 3228; + } + final int finalTargetX = targetX; + final int finalTargetY = targetY; + //Check if the player needs to walk first + if (targetX != player.getX() || targetY != player.getY()) { + player.getPlayerAssistant().playerWalk(targetX, targetY); + + CycleEvent objectWalkToEvent = new CycleEvent() { + @Override + public void execute(CycleEventContainer container) { + if (player.getX() == finalTargetX && player.getY() == finalTargetY) { + if (openKharid(player, objectId)) { + if (player.getX() == 3267) { + player.getPlayerAssistant().movePlayer(player.getX() + 1, player.getY(), 0); + } else if (player.getX() == 3268) { + player.getPlayerAssistant().movePlayer(player.getX() - 1, player.getY(), 0); + } + player.turnPlayerTo(player.objectX, player.objectY); + player.getItemAssistant().deleteItem(995, player.getItemAssistant().getItemSlot(995), 10); + } + container.stop(); + } + } + + @Override + public void stop() { + //Optional cleanup logic + } + }; + + player.startCurrentTask(1, objectWalkToEvent); //Start the event with a tick delay + return; //Exit so the rest of the initKharid method doesn't execute immediately + } + + //If no intermediate walk is required, proceed directly if (openKharid(player, objectId)) { - //GameEngine.objectHandler.createAnObject(player, -1, player.objectX, player.objectY, -1); - final int[] coords = new int[2]; if (player.getX() == 3267) { player.getPlayerAssistant().movePlayer(player.getX() + 1, player.getY(), 0); } else if (player.getX() == 3268) { player.getPlayerAssistant().movePlayer(player.getX() - 1, player.getY(), 0); } player.turnPlayerTo(player.objectX, player.objectY); - coords[0] = player.objectX; - coords[1] = player.objectY; player.getItemAssistant().deleteItem(995, player.getItemAssistant().getItemSlot(995), 10); } } From d66697fa1c1b003e70159b5f3b87c39e3c2f97c7 Mon Sep 17 00:00:00 2001 From: ipkpjersi Date: Fri, 20 Dec 2024 19:45:27 -0500 Subject: [PATCH 2/3] Restored deleted code We don't need this, but, might as well keep it. --- .../src/main/java/com/rs2/game/objects/impl/OtherObjects.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/2006Scape Server/src/main/java/com/rs2/game/objects/impl/OtherObjects.java b/2006Scape Server/src/main/java/com/rs2/game/objects/impl/OtherObjects.java index 32c2d16c3..7ab5ecec8 100644 --- a/2006Scape Server/src/main/java/com/rs2/game/objects/impl/OtherObjects.java +++ b/2006Scape Server/src/main/java/com/rs2/game/objects/impl/OtherObjects.java @@ -102,12 +102,16 @@ public void stop() { //If no intermediate walk is required, proceed directly if (openKharid(player, objectId)) { + //GameEngine.objectHandler.createAnObject(player, -1, player.objectX, player.objectY, -1); + final int[] coords = new int[2]; if (player.getX() == 3267) { player.getPlayerAssistant().movePlayer(player.getX() + 1, player.getY(), 0); } else if (player.getX() == 3268) { player.getPlayerAssistant().movePlayer(player.getX() - 1, player.getY(), 0); } player.turnPlayerTo(player.objectX, player.objectY); + coords[0] = player.objectX; + coords[1] = player.objectY; player.getItemAssistant().deleteItem(995, player.getItemAssistant().getItemSlot(995), 10); } } From 0573a1370ea9d39c0317662f65241e41aec2dfe2 Mon Sep 17 00:00:00 2001 From: ipkpjersi Date: Fri, 20 Dec 2024 20:25:50 -0500 Subject: [PATCH 3/3] Added comment about CycleEvent lambda --- .../src/main/java/com/rs2/game/objects/impl/OtherObjects.java | 1 + 1 file changed, 1 insertion(+) diff --git a/2006Scape Server/src/main/java/com/rs2/game/objects/impl/OtherObjects.java b/2006Scape Server/src/main/java/com/rs2/game/objects/impl/OtherObjects.java index 7ab5ecec8..bd5407bd6 100644 --- a/2006Scape Server/src/main/java/com/rs2/game/objects/impl/OtherObjects.java +++ b/2006Scape Server/src/main/java/com/rs2/game/objects/impl/OtherObjects.java @@ -67,6 +67,7 @@ public static void initKharid(Player player, int objectId) { targetX = 3268; targetY = 3228; } + //We must declare a final targetX and targetY so we can use them inside the CycleEvent lambda. final int finalTargetX = targetX; final int finalTargetY = targetY; //Check if the player needs to walk first