From 0258260024acf347f090e4881c24fc5708b099c7 Mon Sep 17 00:00:00 2001 From: zaydsalah Date: Mon, 29 Apr 2019 16:03:13 -0400 Subject: [PATCH] Add Herbiboar support to the Loottracker (#8663) Close #6136 --- .../loottracker/LootTrackerPlugin.java | 32 ++++++++++++++----- 1 file changed, 24 insertions(+), 8 deletions(-) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/loottracker/LootTrackerPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/loottracker/LootTrackerPlugin.java index 50b6c4bb68..5429ec5941 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/loottracker/LootTrackerPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/loottracker/LootTrackerPlugin.java @@ -99,6 +99,10 @@ public class LootTrackerPlugin extends Plugin private static final Pattern CLUE_SCROLL_PATTERN = Pattern.compile("You have completed [0-9]+ ([a-z]+) Treasure Trails."); private static final int THEATRE_OF_BLOOD_REGION = 12867; + // Herbiboar loot handling + private static final String HERBIBOAR_LOOTED_MESSAGE = "You harvest herbs from the herbiboar, whereupon it escapes."; + private static final String HERBIBOR_EVENT = "Herbiboar"; + // Chest loot handling private static final String CHEST_LOOTED_MESSAGE = "You find some treasure in the chest!"; private static final Map CHEST_EVENT_TYPES = ImmutableMap.of( @@ -389,14 +393,15 @@ public class LootTrackerPlugin extends Plugin } eventType = CHEST_EVENT_TYPES.get(regionID); + takeInventorySnapshot(); - final ItemContainer itemContainer = client.getItemContainer(InventoryID.INVENTORY); - if (itemContainer != null) - { - inventorySnapshot = HashMultiset.create(); - Arrays.stream(itemContainer.getItems()) - .forEach(item -> inventorySnapshot.add(item.getId(), item.getQuantity())); - } + return; + } + + if (message.equals(HERBIBOAR_LOOTED_MESSAGE)) + { + eventType = HERBIBOR_EVENT; + takeInventorySnapshot(); return; } @@ -433,7 +438,7 @@ public class LootTrackerPlugin extends Plugin @Subscribe public void onItemContainerChanged(ItemContainerChanged event) { - if (eventType != null && CHEST_EVENT_TYPES.containsValue(eventType)) + if (eventType != null && (CHEST_EVENT_TYPES.containsValue(eventType) || HERBIBOR_EVENT.equals(eventType))) { if (event.getItemContainer() != client.getItemContainer(InventoryID.INVENTORY)) { @@ -445,6 +450,17 @@ public class LootTrackerPlugin extends Plugin } } + private void takeInventorySnapshot() + { + final ItemContainer itemContainer = client.getItemContainer(InventoryID.INVENTORY); + if (itemContainer != null) + { + inventorySnapshot = HashMultiset.create(); + Arrays.stream(itemContainer.getItems()) + .forEach(item -> inventorySnapshot.add(item.getId(), item.getQuantity())); + } + } + private void processChestLoot(String chestType, ItemContainer inventoryContainer) { if (inventorySnapshot != null)