From dd35e479c14de167805f1ee8e704c98fc298b937 Mon Sep 17 00:00:00 2001 From: randy Date: Wed, 5 Feb 2025 21:32:27 -0700 Subject: [PATCH] Cracking safes the the Rogue's Den now repeats The repetition will stop if you move away, get low health, or run out of inventory space. --- .../handlers/scenery/ThievingGuidePlugin.java | 40 ++++++++++++------- 1 file changed, 25 insertions(+), 15 deletions(-) diff --git a/Server/src/main/content/global/handlers/scenery/ThievingGuidePlugin.java b/Server/src/main/content/global/handlers/scenery/ThievingGuidePlugin.java index 71efac4a5..4d306fc5e 100644 --- a/Server/src/main/content/global/handlers/scenery/ThievingGuidePlugin.java +++ b/Server/src/main/content/global/handlers/scenery/ThievingGuidePlugin.java @@ -81,24 +81,33 @@ public class ThievingGuidePlugin extends OptionHandler { player.getDialogueInterpreter().sendDialogues(2266, null, "And where do you think you're going? A little too eager", "I think. Come and talk to me before you go wandering", "around in there."); break; case "crack": - if (player.getSkills().getLevel(Skills.THIEVING) < 50) { - player.getPacketDispatch().sendMessage("You need to be level " + level + " thief to crack this safe."); - return true; - } - if (player.getInventory().freeSlots() == 0) { - player.getPacketDispatch().sendMessage("Not enough inventory space."); - return true; - } - final boolean success = success(player, Skills.THIEVING); - player.lock(4); - player.getPacketDispatch().sendMessage("You start cracking the safe."); - player.animate(animations[success ? 1 : 0]); + GameWorld.getPulser().submit(new Pulse(3, player) { @Override public boolean pulse() { + if (player.getSkills().getLevel(Skills.THIEVING) < 50) { + player.getPacketDispatch().sendMessage("You need to be level " + level + " thief to crack this safe."); + return true; + } + if (player.getInventory().freeSlots() == 0) { + player.getPacketDispatch().sendMessage("Not enough inventory space."); + return true; + } + if (player.getSkills().getLifepoints() <= 6) { + player.getPacketDispatch().sendMessage("You're too injured to be dealing with traps right now."); + return true; + } + if (player.getLocation().getDistance(node.getLocation()) >= 1) { + return true; + } + + final boolean success = success(player, Skills.THIEVING); + //player.lock(4); + player.getPacketDispatch().sendMessage("You start cracking the safe."); + player.animate(animations[success ? 1 : 0]); if (success) { handleSuccess(player, (Scenery) node); - return true; + return false; } final boolean trapped = RandomFunction.random(3) == 1; if (trapped) { @@ -109,11 +118,12 @@ public class ThievingGuidePlugin extends OptionHandler { @Override public boolean pulse() { player.animate(new Animation(-1, Priority.HIGH)); - return true; + return false; } }); } - return true; + + return false; } }); break;