From 01a71ba3997b9f06b402030d9365febb73292a61 Mon Sep 17 00:00:00 2001 From: Yuri Moens Date: Thu, 20 Jan 2022 01:26:44 +0100 Subject: [PATCH] Add bank task --- .../reisub/openosrs/util/tasks/BankTask.java | 58 +++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 util/src/main/java/io/reisub/openosrs/util/tasks/BankTask.java diff --git a/util/src/main/java/io/reisub/openosrs/util/tasks/BankTask.java b/util/src/main/java/io/reisub/openosrs/util/tasks/BankTask.java new file mode 100644 index 0000000..ca81a05 --- /dev/null +++ b/util/src/main/java/io/reisub/openosrs/util/tasks/BankTask.java @@ -0,0 +1,58 @@ +package io.reisub.openosrs.util.tasks; + +import io.reisub.openosrs.util.Task; +import net.runelite.client.plugins.iutils.game.iNPC; +import net.runelite.client.plugins.iutils.game.iObject; + +public abstract class BankTask extends Task { + @Override + public String getStatus() { + return "Banking"; + } + + protected void openBank() { + openBank(15); + } + + protected boolean openBank(int waitTicks) { + if (!bank.isOpen()) { + iObject bankObj = getBankObject(); + + if (bankObj != null) { + if (bankObj.actions().contains("Bank")) { + bankObj.interact("Bank"); + } else if (bankObj.actions().contains("Use")) { + bankObj.interact("Use"); + } else { + bankObj.interact(0); + } + } else { + iNPC bankNpc = getBankNpc(); + if (bankNpc == null) return false; + + if (bankNpc.actions().contains("Bank")) { + bankNpc.interact("Bank"); + } else { + bankNpc.interact(0); + } + } + + game.waitUntil(() -> bank.isOpen(), waitTicks); + } + + return bank.isOpen(); + } + + protected iObject getBankObject() { + return game.objects() + .withName("Bank chest", "Bank booth", "Bank Chest-wreck", "Bank chest") + .nearest(); + } + + protected iNPC getBankNpc() { + return game.npcs() + .withAction("Bank") + .nearest(); + } + +}