diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/microbot/frosty/frostyrc/RcScript.java b/runelite-client/src/main/java/net/runelite/client/plugins/microbot/frosty/frostyrc/RcScript.java index f4fe9510d86..1f410cef8af 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/microbot/frosty/frostyrc/RcScript.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/microbot/frosty/frostyrc/RcScript.java @@ -48,6 +48,8 @@ public class RcScript extends Script { private final WorldPoint outsideWrathRuins = new WorldPoint(2445, 2818, 0); private final WorldPoint wrathRuinsLoc = new WorldPoint(2445, 2824, 0); + private volatile boolean forceDrinkAtFerox = false; + public static final int pureEss = 7936; public static final int feroxPool = 39651; public static final int monasteryRegion = 10290; @@ -330,8 +332,9 @@ private void handleFillPouch() { } private void handleFeroxRunEnergy() { - if (Rs2Player.getRunEnergy() < 45) { - Microbot.log("We are thirsty...let us Drink"); + if (forceDrinkAtFerox || Rs2Player.getRunEnergy() <= 15 || Rs2Player.getHealthPercentage() <= 20) { + Microbot.log("We are thirsty...let us Drink"); + forceDrinkAtFerox = true; if (plugin.getMyWorldPoint().distanceTo(feroxPoolWp) > 5) { Microbot.log("Walking to Ferox pool"); Rs2Walker.walkTo(feroxPoolWp); @@ -344,6 +347,7 @@ private void handleFeroxRunEnergy() { } sleepUntil(() -> (!Rs2Player.isInteracting()) && !Rs2Player.isAnimating() && Rs2Player.getRunEnergy() > 90); sleepGaussian(1100, 200); + forceDrinkAtFerox = false; } } @@ -456,7 +460,12 @@ private void handleWrathWalking() { Microbot.log("Interacting with myth cape"); Rs2Inventory.interact(mythCape, "Teleport"); sleepUntil(() -> plugin.getMyWorldPoint().getRegionID() == mythicStatueRegion); - sleepGaussian(1100, 200); + sleepGaussian(600, 200); + + GameObject statue = Rs2GameObject.get("Mythic Statue"); + if (statue != null && !Rs2Player.isAnimating()) { + Rs2GameObject.interact(statue, "Teleport"); + } if (plugin.getMyWorldPoint().getRegionID() == mythicStatueRegion) { Microbot.log("Walking to Wrath ruins"); @@ -707,6 +716,13 @@ private void handleCrafting() { Microbot.log("Crafting runes"); handleEmptyPouch(); } + + handleFeroxRunEnergy(); + + if (plugin.isBreakHandlerEnabled()) { + BreakHandlerScript.setLockState(false); + } + state = State.BANKING; } @@ -731,7 +747,13 @@ private void handleBankTeleport() { Rs2Tab.switchToEquipmentTab(); sleepGaussian(1300, 200); - List bankTeleport = Arrays.asList( + boolean needRefill = (forceDrinkAtFerox || Rs2Player.getRunEnergy() <= 15 || Rs2Player.getHealthPercentage() <= 20); + List bankTeleport = needRefill + ? Arrays.asList( + Teleports.FEROX_ENCLAVE, + Teleports.CRAFTING_CAPE, + Teleports.FARMING_CAPE) + : Arrays.asList( Teleports.CRAFTING_CAPE, Teleports.FARMING_CAPE, Teleports.FEROX_ENCLAVE @@ -745,6 +767,10 @@ private void handleBankTeleport() { Rs2Equipment.interact(bankTeleportsId, teleport.getInteraction()); sleepUntil(() -> teleport.matchesRegion(plugin.getMyWorldPoint().getRegionID())); sleepGaussian(1100, 200); + if (teleport == Teleports.FEROX_ENCLAVE) { + forceDrinkAtFerox = true; + handleFeroxRunEnergy(); + } teleportUsed = true; break; }