diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/barbarianassault/BarbarianAssaultPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/barbarianassault/BarbarianAssaultPlugin.java index fa921d1f2c..3dddeeeaac 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/barbarianassault/BarbarianAssaultPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/barbarianassault/BarbarianAssaultPlugin.java @@ -52,7 +52,6 @@ import net.runelite.api.events.ItemSpawned; import net.runelite.api.events.MenuEntryAdded; import net.runelite.api.events.VarbitChanged; import net.runelite.api.events.WidgetLoaded; -import net.runelite.api.kit.KitType; import net.runelite.api.widgets.Widget; import net.runelite.api.widgets.WidgetID; import net.runelite.api.widgets.WidgetInfo; @@ -146,6 +145,7 @@ public class BarbarianAssaultPlugin extends Plugin } private Game game; + private Wave wave; @Override protected void startUp() throws Exception @@ -185,31 +185,32 @@ public class BarbarianAssaultPlugin extends Plugin { case WidgetID.BA_REWARD_GROUP_ID: { - Wave wave = new Wave(client); Widget rewardWidget = client.getWidget(WidgetInfo.BA_REWARD_TEXT); - if (rewardWidget != null && rewardWidget.getText().contains(ENDGAME_REWARD_NEEDLE_TEXT) && gameTime != null) + Widget pointsWidget = client.getWidget(WidgetInfo.BA_RUNNERS_PASSED); + if (!rewardWidget.getText().contains(ENDGAME_REWARD_NEEDLE_TEXT) && pointsWidget != null + && !hasAnnounced && client.getVar(Varbits.IN_GAME_BA) == 0) { - if (config.waveTimes()) + wave = new Wave(client); + wave.setWaveAmounts(); + wave.setWavePoints(); + game.getWaves().add(wave); + if (config.showSummaryOfPoints()) { - announceTime("Game finished, duration: ", gameTime.getTime(false)); + announceSomething(wave.getWaveSummary()); } + } + if (config.waveTimes() && rewardWidget != null && rewardWidget.getText().contains(ENDGAME_REWARD_NEEDLE_TEXT) && gameTime != null) + { + announceTime("Game finished, duration: ", gameTime.getTime(false)); + gameTime = null; if (config.showTotalRewards()) { announceSomething(game.getGameSummary()); } } - Widget pointsWidget = client.getWidget(WidgetInfo.BA_RUNNERS_PASSED); - if (rewardWidget != null && !rewardWidget.getText().contains(ENDGAME_REWARD_NEEDLE_TEXT) && pointsWidget != null - && config.showSummaryOfPoints() && !hasAnnounced && client.getVar(Varbits.IN_GAME_BA) == 0) - { - wave.setWaveAmounts(); - wave.setWavePoints(); - game.getWaves().add(wave); - announceSomething(wave.getWaveSummary()); - } - break; } + break; case WidgetID.BA_ATTACKER_GROUP_ID: { setOverlayRound(Role.ATTACKER); @@ -382,7 +383,7 @@ public class BarbarianAssaultPlugin extends Plugin } if (isUnderPlayer(itemDespawned.getTile())) { - if (client.getLocalPlayer().getPlayerComposition().getEquipmentId(KitType.CAPE) == ItemID.COLLECTOR_ICON) + if (overlay.getCurrentRound().getRoundRole() == Role.COLLECTOR) { positiveEggCount++; if (positiveEggCount > 60) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/barbarianassault/Game.java b/runelite-client/src/main/java/net/runelite/client/plugins/barbarianassault/Game.java index 20a99104f9..e7ae5af8be 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/barbarianassault/Game.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/barbarianassault/Game.java @@ -37,7 +37,7 @@ public class Game { private Client client; private String currentWave; - private ArrayList waves = new ArrayList<>(); + private ArrayList Waves = new ArrayList<>(); private String[] totalDescriptions = { "A: ", "; D: ", @@ -63,7 +63,7 @@ public class Game Game(Client client, ArrayList waves) { this.client = client; - this.waves = waves; + this.Waves = waves; } @Subscribe @@ -77,7 +77,7 @@ public class Game } if (currentWave.equals("1")) { - waves = null; + Waves = null; totalPoints = new int[6]; totalAmounts = new int[6]; } @@ -90,7 +90,7 @@ public class Game int[] otherRolesPointsList; ChatMessageBuilder message = new ChatMessageBuilder(); message.append("Round points: "); - for (Wave w : waves) + for (Wave w : Waves) { amountsList = w.getWaveAmounts(); pointsList = w.getWavePoints(); diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/barbarianassault/Round.java b/runelite-client/src/main/java/net/runelite/client/plugins/barbarianassault/Round.java index 4ebf34971e..119392ed9e 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/barbarianassault/Round.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/barbarianassault/Round.java @@ -61,6 +61,11 @@ class Round this.roundStartTime = Instant.now().plusMillis(2 * Constants.GAME_TICK_LENGTH); } + public long getRoundTime() + { + return Duration.between(roundStartTime, Instant.now()).getSeconds(); + } + long getTimeToChange() { return 30 + (Duration.between(Instant.now(), roundStartTime).getSeconds() % 30); diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/batools/BAToolsConfig.java b/runelite-client/src/main/java/net/runelite/client/plugins/batools/BAToolsConfig.java index b2d7a8aeba..5ffce8db02 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/batools/BAToolsConfig.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/batools/BAToolsConfig.java @@ -61,6 +61,26 @@ public interface BAToolsConfig extends Config return true; } + @ConfigItem( + keyName = "swapCollectorBag", + name = "swaps collector bag in ba to empty left click", + description = "Make empty the left-click option on collector bag" + ) + default boolean swapCollectorBag() + { + return false; + } + + @ConfigItem( + keyName = "swapDestroyEggs", + name = "Left click destroy eggs in BA", + description = "Make destroy the left-click option for collector eggs" + ) + default boolean swapDestroyEggs() + { + return false; + } + @ConfigItem( keyName = "healerCodes", name = "Healer Codes", @@ -74,7 +94,7 @@ public interface BAToolsConfig extends Config @ConfigItem( keyName = "healerMenuOption", name = "Healer menu options", - description = "asd" + description = "Shows time since last food placed on healer" ) default boolean healerMenuOption() { @@ -84,7 +104,7 @@ public interface BAToolsConfig extends Config @ConfigItem( keyName = "eggBoi", name = "Collector helper", - description = "asd" + description = "Hold shift to collect the correct egg" ) default boolean eggBoi() { @@ -94,7 +114,7 @@ public interface BAToolsConfig extends Config @ConfigItem( keyName = "osHelp", name = "Shift OS", - description = "asd" + description = "Hold shift to only pick up correct eggs" ) default boolean osHelp() { @@ -104,7 +124,7 @@ public interface BAToolsConfig extends Config @ConfigItem( keyName = "prayerMetronome", name = "Prayer Metronome", - description = "asd" + description = "Similar to metronome plugin but only activates when a prayer is active" ) default boolean prayerMetronome() { @@ -114,7 +134,7 @@ public interface BAToolsConfig extends Config @ConfigItem( keyName = "prayerMetronomeVolume", name = "Prayer Metronome Volume", - description = "asd" + description = "Volume level" ) default int prayerMetronomeVolume() { @@ -161,4 +181,34 @@ public interface BAToolsConfig extends Config return false; } + @ConfigItem( + keyName = "tagging", + name = "Attack Tags", + description = "Highlights the menu entry of an attacker/ranger that has not been tagged." + ) + default boolean tagging() + { + return false; + } + + @ConfigItem( + keyName = "ctrlHealer", + name = "Control Healer", + description = "Hold ctrl to put last healer clicked on top" + ) + default boolean ctrlHealer() + { + return false; + } + + @ConfigItem( + keyName = "removePenanceCave", + name = "Remove Block Penance Cave", + description = "Removes unnecessary menu option, however Moon wanted it back" + ) + default boolean removePenanceCave() + { + return false; + } + } \ No newline at end of file diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/batools/BAToolsPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/batools/BAToolsPlugin.java index f0b7f0aac0..b83559a49a 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/batools/BAToolsPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/batools/BAToolsPlugin.java @@ -61,7 +61,9 @@ import net.runelite.api.events.NpcSpawned; import net.runelite.api.events.VarbitChanged; import net.runelite.api.events.WidgetLoaded; import net.runelite.api.widgets.Widget; -import static net.runelite.api.widgets.WidgetID.BA_REWARD_GROUP_ID; + + +import net.runelite.api.widgets.WidgetID; import net.runelite.api.widgets.WidgetInfo; import static net.runelite.api.widgets.WidgetInfo.BA_ATK_CALL_TEXT; import static net.runelite.api.widgets.WidgetInfo.BA_ATK_LISTEN_TEXT; @@ -73,7 +75,6 @@ import static net.runelite.api.widgets.WidgetInfo.BA_DEF_CALL_TEXT; import static net.runelite.api.widgets.WidgetInfo.BA_DEF_ROLE_TEXT; import static net.runelite.api.widgets.WidgetInfo.BA_HEAL_CALL_TEXT; import static net.runelite.api.widgets.WidgetInfo.BA_HEAL_LISTEN_TEXT; -import static net.runelite.api.widgets.WidgetInfo.BA_REWARD_TEXT; import static net.runelite.api.widgets.WidgetInfo.COMBAT_STYLE_FOUR; import static net.runelite.api.widgets.WidgetInfo.COMBAT_STYLE_ONE; import static net.runelite.api.widgets.WidgetInfo.COMBAT_STYLE_THREE; @@ -88,9 +89,10 @@ import net.runelite.client.plugins.PluginDescriptor; import net.runelite.client.plugins.PluginType; import net.runelite.client.ui.overlay.OverlayManager; import net.runelite.client.ui.overlay.infobox.InfoBoxManager; -import static net.runelite.client.util.MenuUtil.swap; import net.runelite.client.util.Text; import org.apache.commons.lang3.ArrayUtils; +import net.runelite.client.menus.MenuManager; + @Slf4j @PluginDescriptor( @@ -105,6 +107,7 @@ public class BAToolsPlugin extends Plugin implements KeyListener private int tickNum; private int pastCall = 0; private int currentWave = 1; + private int lastHealer; private static final int BA_WAVE_NUM_INDEX = 2; private static final WorldPoint healerSpawnPoint = new WorldPoint(1898, 1586, 0); private final List entries = new ArrayList<>(); @@ -114,6 +117,7 @@ public class BAToolsPlugin extends Plugin implements KeyListener private Actor lastInteracted; private boolean shiftDown; + private boolean ctrlDown; @Inject private Client client; @@ -139,6 +143,9 @@ public class BAToolsPlugin extends Plugin implements KeyListener @Getter private Instant wave_start; + @Inject + private MenuManager menuManager; + @Inject private KeyManager keyManager; @@ -155,7 +162,7 @@ public class BAToolsPlugin extends Plugin implements KeyListener overlayManager.add(overlay); healers = new HashMap<>(); wave_start = Instant.now(); - lastInteracted = null; + //lastInteracted = null; foodPressed.clear(); keyManager.registerKeyListener(this); } @@ -175,12 +182,16 @@ public class BAToolsPlugin extends Plugin implements KeyListener @Subscribe public void onWidgetLoaded(WidgetLoaded event) { - if (event.getGroupId() == BA_REWARD_GROUP_ID) + switch (event.getGroupId()) { - Widget rewardWidget = client.getWidget(BA_REWARD_TEXT); - if (rewardWidget != null && rewardWidget.getText().contains("
5")) + case WidgetID.BA_REWARD_GROUP_ID: { - tickNum = 0; + Widget rewardWidget = client.getWidget(WidgetInfo.BA_REWARD_TEXT); + + if (rewardWidget != null && rewardWidget.getText().contains("
5")) + { + tickNum = 0; + } } } } @@ -208,6 +219,7 @@ public class BAToolsPlugin extends Plugin implements KeyListener if (counter == null) { addCounter(); + lastHealer = 0; } counter.setCount(tickNum); @@ -420,42 +432,24 @@ public class BAToolsPlugin extends Plugin implements KeyListener @Subscribe public void onMenuEntryAdded(MenuEntryAdded event) { - if (config.calls() && getWidget() != null && event.getTarget().endsWith("horn") && !event.getTarget().contains("Unicorn")) - { - MenuEntry[] menuEntries = client.getMenuEntries(); - Widget callWidget = getWidget(); - String call = Calls.getOption(callWidget.getText()); - MenuEntry correctCall = null; - - entries.clear(); - for (MenuEntry entry : menuEntries) - { - String option = entry.getOption(); - if (option.equals(call)) - { - correctCall = entry; - } - else if (!option.startsWith("Tell-")) - { - entries.add(entry); - } - } - - if (correctCall != null) //&& callWidget.getTextColor()==16316664) - { - entries.add(correctCall); - client.setMenuEntries(entries.toArray(new MenuEntry[0])); - } - } final int itemId = event.getIdentifier(); String option = Text.removeTags(event.getOption()).toLowerCase(); String target = Text.removeTags(event.getTarget()).toLowerCase(); + if (config.swapDestroyEggs() & (target.equals("red egg") || target.equals("green egg") || target.equals("blue egg"))) + { + menuManager.addSwap("destroy", option, target); + } + + if (config.swapCollectorBag() & target.equals("collection bag")) + { + menuManager.addSwap("empty", option, target); + } if (config.swapLadder() && option.equals("climb-down") && target.equals("ladder")) { - swap(client, "quick-start", option, target); + menuManager.addSwap("Quick-start", option, target); } else if (config.removeBA() && client.getVar(Varbits.IN_GAME_BA) == 1 && !option.contains("tell-"))//if in barbarian assault and menu isnt from a horn { @@ -528,11 +522,15 @@ public class BAToolsPlugin extends Plugin implements KeyListener //remove attack option from everything but queen spawns remove(option, target); } - else if ((option.equals("fix") || (option.equals("block") && target.equals("penance cave"))) && client.getWidget(BA_DEF_ROLE_TEXT) == null)//if not defender + else if ((option.equals("fix")) && client.getWidget(WidgetInfo.BA_DEF_ROLE_TEXT) == null)//if not defender { - //the check for option requires checking target as well because defensive attack style option is also called "block". remove(option, target); } + else if ((option.equals("block") && target.equals("penance cave") && config.removePenanceCave())) + { + remove(option, target); + } + else if ((option.equals("load")) && client.getWidget(BA_COLL_ROLE_TEXT) == null)//if not collector, remove hopper options { remove(new String[]{option, "look-in"}, target); @@ -576,7 +574,40 @@ public class BAToolsPlugin extends Plugin implements KeyListener } - if (inGame && config.healerMenuOption() && event.getTarget().contains("Penance Healer")) + if (client.getWidget(WidgetInfo.BA_HEAL_CALL_TEXT) == getWidget() && lastHealer != 0 && inGame && config.ctrlHealer() && ctrlDown) + { + MenuEntry[] menuEntries = client.getMenuEntries(); + MenuEntry correctHealer = null; + entries.clear(); + + for (MenuEntry entry : menuEntries) + { + + if (( entry.getIdentifier() == lastHealer && entry.getOption().equals("Use")) + || + ( + (entry.getTarget().equals("Poisoned meat") || entry.getTarget().equals("Poisoned worms") || entry.getTarget().equals("Poisoned tofu")) + && + entry.getOption().equals("Use") + ) + ) + { + correctHealer = entry; + } + else + { + log.info((entry.getIdentifier() == lastHealer && entry.getOption().equals("Use")) + " " + ((entry.getTarget().equals("Poisoned meat") || entry.getTarget().equals("Poisoned worms") || entry.getTarget().equals("Poisoned tofu")) && entry.getOption().equals("Use")) ); + } + } + if (correctHealer != null) + { + entries.add(correctHealer); + } + client.setMenuEntries(entries.toArray(new MenuEntry[entries.size()])); + } + + + if ((event.getTarget().contains("Penance Healer") || event.getTarget().contains("Penance Fighter") || event.getTarget().contains("Penance Ranger"))) { MenuEntry[] menuEntries = client.getMenuEntries(); @@ -626,6 +657,22 @@ public class BAToolsPlugin extends Plugin implements KeyListener client.setMenuEntries(entries.toArray(new MenuEntry[0])); } + if (client.getWidget(WidgetInfo.BA_ATK_LISTEN_TEXT) != null && inGame && config.attackStyles() && shiftDown) + { + MenuEntry[] menuEntries = client.getMenuEntries(); + MenuEntry correctEgg = null; + entries.clear(); + + for (MenuEntry entry : menuEntries) + { + if (entry.getOption().contains("Walk here")) + { + entries.add(entry); + } + } + client.setMenuEntries(entries.toArray(new MenuEntry[entries.size()])); + } + if (client.getWidget(BA_HEAL_LISTEN_TEXT) != null && inGame && config.osHelp() && event.getTarget().equals("Healer item machine") && shiftDown) { String[] currentCall = client.getWidget(BA_HEAL_LISTEN_TEXT).getText().split(" "); @@ -658,27 +705,26 @@ public class BAToolsPlugin extends Plugin implements KeyListener @Subscribe public void onMenuOptionClicked(MenuOptionClicked event) { - if (!config.healerMenuOption() || !event.getMenuTarget().contains("Penance Healer") || client.getWidget(BA_HEAL_CALL_TEXT) == null) - { - return; - } - - String currentCall = client.getWidget(BA_HEAL_CALL_TEXT).getText(); String target = event.getMenuTarget(); - if ((currentCall.equals("Pois. Worms") && (target.contains("Poisoned worms") && target.contains("->") && target.contains("Penance Healer"))) - || (currentCall.equals("Pois. Meat") && (target.contains("Poisoned meat") && target.contains("->") && target.contains("Penance Healer"))) - || (currentCall.equals("Pois. Tofu") && (target.contains("Poisoned tofu") && target.contains("->") && target.contains("Penance Healer")))) + if (config.tagging() && (event.getMenuTarget().contains("Penance Ranger") || event.getMenuTarget().contains("Penance Fighter"))) { - foodPressed.put(event.getId(), Instant.now()); + if (event.getMenuOption().contains("Attack")) + { + foodPressed.put(event.getId(), Instant.now()); + } + log.info(target); } - if (target.contains("->") && target.contains("Penance Healer")) + if (config.healerMenuOption() && target.contains("Penance Healer") && target.contains("Poisoned") && target.contains("->")) { foodPressed.put(event.getId(), Instant.now()); + lastHealer = event.getId(); + log.info("Last healer changed: " + lastHealer); } } + public void onConfigChanged(ConfigChanged event) { if (counter != null && !config.defTimer()) @@ -780,6 +826,10 @@ public class BAToolsPlugin extends Plugin implements KeyListener { shiftDown = true; } + if (e.getKeyCode() == KeyEvent.VK_CONTROL) + { + ctrlDown = true; + } } @Override @@ -789,6 +839,10 @@ public class BAToolsPlugin extends Plugin implements KeyListener { shiftDown = false; } + if (e.getKeyCode() == KeyEvent.VK_CONTROL) + { + ctrlDown = false; + } } private boolean isAnyPrayerActive()