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.MenuEntryAdded;
import net.runelite.api.events.VarbitChanged; import net.runelite.api.events.VarbitChanged;
import net.runelite.api.events.WidgetLoaded; import net.runelite.api.events.WidgetLoaded;
import net.runelite.api.kit.KitType;
import net.runelite.api.widgets.Widget; import net.runelite.api.widgets.Widget;
import net.runelite.api.widgets.WidgetID; import net.runelite.api.widgets.WidgetID;
import net.runelite.api.widgets.WidgetInfo; import net.runelite.api.widgets.WidgetInfo;
@@ -146,6 +145,7 @@ public class BarbarianAssaultPlugin extends Plugin
} }
private Game game; private Game game;
private Wave wave;
@Override @Override
protected void startUp() throws Exception protected void startUp() throws Exception
@@ -185,31 +185,32 @@ public class BarbarianAssaultPlugin extends Plugin
{ {
case WidgetID.BA_REWARD_GROUP_ID: case WidgetID.BA_REWARD_GROUP_ID:
{ {
Wave wave = new Wave(client);
Widget rewardWidget = client.getWidget(WidgetInfo.BA_REWARD_TEXT); 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()) if (config.showTotalRewards())
{ {
announceSomething(game.getGameSummary()); 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: case WidgetID.BA_ATTACKER_GROUP_ID:
{ {
setOverlayRound(Role.ATTACKER); setOverlayRound(Role.ATTACKER);
@@ -382,7 +383,7 @@ public class BarbarianAssaultPlugin extends Plugin
} }
if (isUnderPlayer(itemDespawned.getTile())) if (isUnderPlayer(itemDespawned.getTile()))
{ {
if (client.getLocalPlayer().getPlayerComposition().getEquipmentId(KitType.CAPE) == ItemID.COLLECTOR_ICON) if (overlay.getCurrentRound().getRoundRole() == Role.COLLECTOR)
{ {
positiveEggCount++; positiveEggCount++;
if (positiveEggCount > 60) if (positiveEggCount > 60)

View File

@@ -37,7 +37,7 @@ public class Game
{ {
private Client client; private Client client;
private String currentWave; private String currentWave;
private ArrayList<Wave> waves = new ArrayList<>(); private ArrayList<Wave> Waves = new ArrayList<>();
private String[] totalDescriptions = { private String[] totalDescriptions = {
"A: ", "A: ",
"; D: ", "; D: ",
@@ -63,7 +63,7 @@ public class Game
Game(Client client, ArrayList<Wave> waves) Game(Client client, ArrayList<Wave> waves)
{ {
this.client = client; this.client = client;
this.waves = waves; this.Waves = waves;
} }
@Subscribe @Subscribe
@@ -77,7 +77,7 @@ public class Game
} }
if (currentWave.equals("1")) if (currentWave.equals("1"))
{ {
waves = null; Waves = null;
totalPoints = new int[6]; totalPoints = new int[6];
totalAmounts = new int[6]; totalAmounts = new int[6];
} }
@@ -90,7 +90,7 @@ public class Game
int[] otherRolesPointsList; int[] otherRolesPointsList;
ChatMessageBuilder message = new ChatMessageBuilder(); ChatMessageBuilder message = new ChatMessageBuilder();
message.append("Round points: "); message.append("Round points: ");
for (Wave w : waves) for (Wave w : Waves)
{ {
amountsList = w.getWaveAmounts(); amountsList = w.getWaveAmounts();
pointsList = w.getWavePoints(); pointsList = w.getWavePoints();

View File

@@ -61,6 +61,11 @@ class Round
this.roundStartTime = Instant.now().plusMillis(2 * Constants.GAME_TICK_LENGTH); this.roundStartTime = Instant.now().plusMillis(2 * Constants.GAME_TICK_LENGTH);
} }
public long getRoundTime()
{
return Duration.between(roundStartTime, Instant.now()).getSeconds();
}
long getTimeToChange() long getTimeToChange()
{ {
return 30 + (Duration.between(Instant.now(), roundStartTime).getSeconds() % 30); return 30 + (Duration.between(Instant.now(), roundStartTime).getSeconds() % 30);

View File

@@ -61,6 +61,26 @@ public interface BAToolsConfig extends Config
return true; 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( @ConfigItem(
keyName = "healerCodes", keyName = "healerCodes",
name = "Healer Codes", name = "Healer Codes",
@@ -74,7 +94,7 @@ public interface BAToolsConfig extends Config
@ConfigItem( @ConfigItem(
keyName = "healerMenuOption", keyName = "healerMenuOption",
name = "Healer menu options", name = "Healer menu options",
description = "asd" description = "Shows time since last food placed on healer"
) )
default boolean healerMenuOption() default boolean healerMenuOption()
{ {
@@ -84,7 +104,7 @@ public interface BAToolsConfig extends Config
@ConfigItem( @ConfigItem(
keyName = "eggBoi", keyName = "eggBoi",
name = "Collector helper", name = "Collector helper",
description = "asd" description = "Hold shift to collect the correct egg"
) )
default boolean eggBoi() default boolean eggBoi()
{ {
@@ -94,7 +114,7 @@ public interface BAToolsConfig extends Config
@ConfigItem( @ConfigItem(
keyName = "osHelp", keyName = "osHelp",
name = "Shift OS", name = "Shift OS",
description = "asd" description = "Hold shift to only pick up correct eggs"
) )
default boolean osHelp() default boolean osHelp()
{ {
@@ -104,7 +124,7 @@ public interface BAToolsConfig extends Config
@ConfigItem( @ConfigItem(
keyName = "prayerMetronome", keyName = "prayerMetronome",
name = "Prayer Metronome", name = "Prayer Metronome",
description = "asd" description = "Similar to metronome plugin but only activates when a prayer is active"
) )
default boolean prayerMetronome() default boolean prayerMetronome()
{ {
@@ -114,7 +134,7 @@ public interface BAToolsConfig extends Config
@ConfigItem( @ConfigItem(
keyName = "prayerMetronomeVolume", keyName = "prayerMetronomeVolume",
name = "Prayer Metronome Volume", name = "Prayer Metronome Volume",
description = "asd" description = "Volume level"
) )
default int prayerMetronomeVolume() default int prayerMetronomeVolume()
{ {
@@ -161,4 +181,34 @@ public interface BAToolsConfig extends Config
return false; 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.VarbitChanged;
import net.runelite.api.events.WidgetLoaded; import net.runelite.api.events.WidgetLoaded;
import net.runelite.api.widgets.Widget; 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 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_CALL_TEXT;
import static net.runelite.api.widgets.WidgetInfo.BA_ATK_LISTEN_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_DEF_ROLE_TEXT;
import static net.runelite.api.widgets.WidgetInfo.BA_HEAL_CALL_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_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_FOUR;
import static net.runelite.api.widgets.WidgetInfo.COMBAT_STYLE_ONE; import static net.runelite.api.widgets.WidgetInfo.COMBAT_STYLE_ONE;
import static net.runelite.api.widgets.WidgetInfo.COMBAT_STYLE_THREE; 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.plugins.PluginType;
import net.runelite.client.ui.overlay.OverlayManager; import net.runelite.client.ui.overlay.OverlayManager;
import net.runelite.client.ui.overlay.infobox.InfoBoxManager; import net.runelite.client.ui.overlay.infobox.InfoBoxManager;
import static net.runelite.client.util.MenuUtil.swap;
import net.runelite.client.util.Text; import net.runelite.client.util.Text;
import org.apache.commons.lang3.ArrayUtils; import org.apache.commons.lang3.ArrayUtils;
import net.runelite.client.menus.MenuManager;
@Slf4j @Slf4j
@PluginDescriptor( @PluginDescriptor(
@@ -105,6 +107,7 @@ public class BAToolsPlugin extends Plugin implements KeyListener
private int tickNum; private int tickNum;
private int pastCall = 0; private int pastCall = 0;
private int currentWave = 1; private int currentWave = 1;
private int lastHealer;
private static final int BA_WAVE_NUM_INDEX = 2; private static final int BA_WAVE_NUM_INDEX = 2;
private static final WorldPoint healerSpawnPoint = new WorldPoint(1898, 1586, 0); private static final WorldPoint healerSpawnPoint = new WorldPoint(1898, 1586, 0);
private final List<MenuEntry> entries = new ArrayList<>(); private final List<MenuEntry> entries = new ArrayList<>();
@@ -114,6 +117,7 @@ public class BAToolsPlugin extends Plugin implements KeyListener
private Actor lastInteracted; private Actor lastInteracted;
private boolean shiftDown; private boolean shiftDown;
private boolean ctrlDown;
@Inject @Inject
private Client client; private Client client;
@@ -139,6 +143,9 @@ public class BAToolsPlugin extends Plugin implements KeyListener
@Getter @Getter
private Instant wave_start; private Instant wave_start;
@Inject
private MenuManager menuManager;
@Inject @Inject
private KeyManager keyManager; private KeyManager keyManager;
@@ -155,7 +162,7 @@ public class BAToolsPlugin extends Plugin implements KeyListener
overlayManager.add(overlay); overlayManager.add(overlay);
healers = new HashMap<>(); healers = new HashMap<>();
wave_start = Instant.now(); wave_start = Instant.now();
lastInteracted = null; //lastInteracted = null;
foodPressed.clear(); foodPressed.clear();
keyManager.registerKeyListener(this); keyManager.registerKeyListener(this);
} }
@@ -175,12 +182,16 @@ public class BAToolsPlugin extends Plugin implements KeyListener
@Subscribe @Subscribe
public void onWidgetLoaded(WidgetLoaded event) public void onWidgetLoaded(WidgetLoaded event)
{ {
if (event.getGroupId() == BA_REWARD_GROUP_ID) switch (event.getGroupId())
{ {
Widget rewardWidget = client.getWidget(BA_REWARD_TEXT); case WidgetID.BA_REWARD_GROUP_ID:
if (rewardWidget != null && rewardWidget.getText().contains("<br>5"))
{ {
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) if (counter == null)
{ {
addCounter(); addCounter();
lastHealer = 0;
} }
counter.setCount(tickNum); counter.setCount(tickNum);
@@ -420,42 +432,24 @@ public class BAToolsPlugin extends Plugin implements KeyListener
@Subscribe @Subscribe
public void onMenuEntryAdded(MenuEntryAdded event) 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(); final int itemId = event.getIdentifier();
String option = Text.removeTags(event.getOption()).toLowerCase(); String option = Text.removeTags(event.getOption()).toLowerCase();
String target = Text.removeTags(event.getTarget()).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")) 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 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 attack option from everything but queen spawns
remove(option, target); 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); 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 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); 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(); MenuEntry[] menuEntries = client.getMenuEntries();
@@ -626,6 +657,22 @@ public class BAToolsPlugin extends Plugin implements KeyListener
client.setMenuEntries(entries.toArray(new MenuEntry[0])); 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) 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(" "); String[] currentCall = client.getWidget(BA_HEAL_LISTEN_TEXT).getText().split(" ");
@@ -658,27 +705,26 @@ public class BAToolsPlugin extends Plugin implements KeyListener
@Subscribe @Subscribe
public void onMenuOptionClicked(MenuOptionClicked event) 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(); String target = event.getMenuTarget();
if ((currentCall.equals("Pois. Worms") && (target.contains("Poisoned worms") && target.contains("->") && target.contains("Penance Healer"))) if (config.tagging() && (event.getMenuTarget().contains("Penance Ranger") || event.getMenuTarget().contains("Penance Fighter")))
|| (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"))))
{ {
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()); foodPressed.put(event.getId(), Instant.now());
lastHealer = event.getId();
log.info("Last healer changed: " + lastHealer);
} }
} }
public void onConfigChanged(ConfigChanged event) public void onConfigChanged(ConfigChanged event)
{ {
if (counter != null && !config.defTimer()) if (counter != null && !config.defTimer())
@@ -780,6 +826,10 @@ public class BAToolsPlugin extends Plugin implements KeyListener
{ {
shiftDown = true; shiftDown = true;
} }
if (e.getKeyCode() == KeyEvent.VK_CONTROL)
{
ctrlDown = true;
}
} }
@Override @Override
@@ -789,6 +839,10 @@ public class BAToolsPlugin extends Plugin implements KeyListener
{ {
shiftDown = false; shiftDown = false;
} }
if (e.getKeyCode() == KeyEvent.VK_CONTROL)
{
ctrlDown = false;
}
} }
private boolean isAnyPrayerActive() private boolean isAnyPrayerActive()