BA update (#471)

* BA update

* Change swap

* Update BA

* Update

* Fix whitespace

* Change
This commit is contained in:
James
2019-06-03 17:51:05 -07:00
committed by Ganom
parent e51072d2cc
commit e1b6afd28d
5 changed files with 185 additions and 75 deletions

View File

@@ -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)

View File

@@ -37,7 +37,7 @@ public class Game
{
private Client client;
private String currentWave;
private ArrayList<Wave> waves = new ArrayList<>();
private ArrayList<Wave> Waves = new ArrayList<>();
private String[] totalDescriptions = {
"A: ",
"; D: ",
@@ -63,7 +63,7 @@ public class Game
Game(Client client, ArrayList<Wave> 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();

View File

@@ -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);

View File

@@ -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;
}
}

View File

@@ -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<MenuEntry> 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("<br>5"))
case WidgetID.BA_REWARD_GROUP_ID:
{
tickNum = 0;
Widget rewardWidget = client.getWidget(WidgetInfo.BA_REWARD_TEXT);
if (rewardWidget != null && rewardWidget.getText().contains("<br>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("<col=ff9040>Poisoned meat") || entry.getTarget().equals("<col=ff9040>Poisoned worms") || entry.getTarget().equals("<col=ff9040>Poisoned tofu"))
&&
entry.getOption().equals("Use")
)
)
{
correctHealer = entry;
}
else
{
log.info((entry.getIdentifier() == lastHealer && entry.getOption().equals("Use")) + " " + ((entry.getTarget().equals("<col=ff9040>Poisoned meat") || entry.getTarget().equals("<col=ff9040>Poisoned worms") || entry.getTarget().equals("<col=ff9040>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("<col=ffff>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("<col=ff9040>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()