From 7affadcf503ef224bed13d477ef4e0c56f23df10 Mon Sep 17 00:00:00 2001 From: leejt Date: Tue, 9 Jun 2020 00:02:23 -0700 Subject: [PATCH] loot tracker: track grubby, stone, Dorgesh-Kaan and HAM chests The Dorgesh-Kaan tracking could be done better (there are actually 4 distinct drop tables) but it's hard to do this without significantly complicating the code. --- .../loottracker/LootTrackerPlugin.java | 27 +++++++++++++++++-- 1 file changed, 25 insertions(+), 2 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 b862cff408..0d0462e4a1 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 @@ -144,6 +144,11 @@ public class LootTrackerPlugin extends Plugin // Chest loot handling private static final String CHEST_LOOTED_MESSAGE = "You find some treasure in the chest!"; private static final Pattern LARRAN_LOOTED_PATTERN = Pattern.compile("You have opened Larran's (big|small) chest .*"); + private static final String STONE_CHEST_LOOTED_MESSAGE = "You steal some loot from the chest."; + private static final String DORGESH_KAAN_CHEST_LOOTED_MESSAGE = "You find treasure inside!"; + private static final String GRUBBY_CHEST_LOOTED_MESSAGE = "You unlock the chest with your key."; + private static final Pattern HAM_CHEST_LOOTED_PATTERN = Pattern.compile("Your (?[a-z]+) key breaks in the lock.*"); + private static final int HAM_STOREROOM_REGION = 10321; private static final Map CHEST_EVENT_TYPES = new ImmutableMap.Builder(). put(5179, "Brimstone Chest"). put(11573, "Crystal Chest"). @@ -151,6 +156,10 @@ public class LootTrackerPlugin extends Plugin put(12127, "The Gauntlet"). put(13113, "Larran's small chest"). put(13151, "Elven Crystal Chest"). + put(5277, "Stone chest"). + put(10835, "Dorgesh-Kaan Chest"). + put(10834, "Dorgesh-Kaan Chest"). + put(7323, "Grubby Chest"). build(); // Shade chest loot handling @@ -593,7 +602,9 @@ public class LootTrackerPlugin extends Plugin final String message = event.getMessage(); - if (message.equals(CHEST_LOOTED_MESSAGE) || LARRAN_LOOTED_PATTERN.matcher(message).matches()) + if (message.equals(CHEST_LOOTED_MESSAGE) || message.equals(STONE_CHEST_LOOTED_MESSAGE) + || message.equals(DORGESH_KAAN_CHEST_LOOTED_MESSAGE) || message.equals(GRUBBY_CHEST_LOOTED_MESSAGE) + || LARRAN_LOOTED_PATTERN.matcher(message).matches()) { final int regionID = client.getLocalPlayer().getWorldLocation().getRegionID(); if (!CHEST_EVENT_TYPES.containsKey(regionID)) @@ -639,6 +650,16 @@ public class LootTrackerPlugin extends Plugin return; } + final Matcher hamStoreroomMatcher = HAM_CHEST_LOOTED_PATTERN.matcher(message); + if (hamStoreroomMatcher.matches() && regionID == HAM_STOREROOM_REGION) + { + String keyType = hamStoreroomMatcher.group("key"); + eventType = String.format("H.A.M. chest (%s)", keyType); + lootRecordType = LootRecordType.EVENT; + takeInventorySnapshot(); + return; + } + final Matcher pickpocketMatcher = PICKPOCKET_REGEX.matcher(message); if (pickpocketMatcher.matches()) { @@ -706,7 +727,8 @@ public class LootTrackerPlugin extends Plugin @Subscribe public void onItemContainerChanged(ItemContainerChanged event) { - if (event.getContainerId() != InventoryID.INVENTORY.getId()) + if (event.getContainerId() != InventoryID.INVENTORY.getId() + || eventType == null) { return; } @@ -719,6 +741,7 @@ public class LootTrackerPlugin extends Plugin || SEEDPACK_EVENT.equals(eventType) || CASKET_EVENT.equals(eventType) || BIRDNEST_EVENT.equals(eventType) + || eventType.startsWith("H.A.M. chest") || lootRecordType == LootRecordType.PICKPOCKET) { WorldPoint playerLocation = client.getLocalPlayer().getWorldLocation();