From 88e3845d97eb2b099ecb5eca87838f8cde396c43 Mon Sep 17 00:00:00 2001 From: leejt Date: Sun, 14 Jun 2020 18:04:55 -0700 Subject: [PATCH] LootTracker: track shade chest loot --- .../loottracker/LootTrackerPlugin.java | 53 ++++++++++++++++--- 1 file changed, 47 insertions(+), 6 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 811a165e78..c2dd8508cf 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 @@ -69,6 +69,7 @@ import net.runelite.api.ItemContainer; import net.runelite.api.ItemID; import net.runelite.api.MessageNode; import net.runelite.api.NPC; +import net.runelite.api.ObjectID; import net.runelite.api.Player; import net.runelite.api.SpriteID; import net.runelite.api.coords.WorldPoint; @@ -153,6 +154,31 @@ public class LootTrackerPlugin extends Plugin put(13151, "Elven Crystal Chest"). build(); + // Shade chest loot handling + private static final Pattern SHADE_CHEST_NO_KEY_PATTERN = Pattern.compile("You need a [a-z]+ key with a [a-z]+ trim to open this chest .*"); + private static final Map SHADE_CHEST_OBJECTS = new ImmutableMap.Builder(). + put(ObjectID.BRONZE_CHEST, "Bronze key red"). + put(ObjectID.BRONZE_CHEST_4112, "Bronze key brown"). + put(ObjectID.BRONZE_CHEST_4113, "Bronze key crimson"). + put(ObjectID.BRONZE_CHEST_4114, "Bronze key black"). + put(ObjectID.BRONZE_CHEST_4115, "Bronze key purple"). + put(ObjectID.STEEL_CHEST, "Steel key red"). + put(ObjectID.STEEL_CHEST_4117, "Steel key brown"). + put(ObjectID.STEEL_CHEST_4118, "Steel key crimson"). + put(ObjectID.STEEL_CHEST_4119, "Steel key black"). + put(ObjectID.STEEL_CHEST_4120, "Steel key purple"). + put(ObjectID.BLACK_CHEST, "Black key red"). + put(ObjectID.BLACK_CHEST_4122, "Black key brown"). + put(ObjectID.BLACK_CHEST_4123, "Black key crimson"). + put(ObjectID.BLACK_CHEST_4124, "Black key black"). + put(ObjectID.BLACK_CHEST_4125, "Black key purple"). + put(ObjectID.SILVER_CHEST, "Silver key red"). + put(ObjectID.SILVER_CHEST_4127, "Silver key brown"). + put(ObjectID.SILVER_CHEST_4128, "Silver key crimson"). + put(ObjectID.SILVER_CHEST_4129, "Silver key black"). + put(ObjectID.SILVER_CHEST_4130, "Silver key purple"). + build(); + // Last man standing map regions private static final Set LAST_MAN_STANDING_REGIONS = ImmutableSet.of(13658, 13659, 13914, 13915, 13916); @@ -600,29 +626,36 @@ public class LootTrackerPlugin extends Plugin case "beginner": eventType = "Clue Scroll (Beginner)"; lootRecordType = LootRecordType.EVENT; - break; + return; case "easy": eventType = "Clue Scroll (Easy)"; lootRecordType = LootRecordType.EVENT; - break; + return; case "medium": eventType = "Clue Scroll (Medium)"; lootRecordType = LootRecordType.EVENT; - break; + return; case "hard": eventType = "Clue Scroll (Hard)"; lootRecordType = LootRecordType.EVENT; - break; + return; case "elite": eventType = "Clue Scroll (Elite)"; lootRecordType = LootRecordType.EVENT; - break; + return; case "master": eventType = "Clue Scroll (Master)"; lootRecordType = LootRecordType.EVENT; - break; + return; } } + + if (SHADE_CHEST_NO_KEY_PATTERN.matcher(message).matches()) + { + // Player didn't have the key they needed. + eventType = null; + lootRecordType = null; + } } @Subscribe @@ -634,6 +667,7 @@ public class LootTrackerPlugin extends Plugin } if (CHEST_EVENT_TYPES.containsValue(eventType) + || SHADE_CHEST_OBJECTS.containsValue(eventType) || HERBIBOAR_EVENT.equals(eventType) || HESPORI_EVENT.equals(eventType) || SEEDPACK_EVENT.equals(eventType) @@ -664,6 +698,13 @@ public class LootTrackerPlugin extends Plugin lootRecordType = LootRecordType.EVENT; takeInventorySnapshot(); } + + if (event.getMenuOption().equals("Open") && SHADE_CHEST_OBJECTS.containsKey(event.getId())) + { + eventType = SHADE_CHEST_OBJECTS.get(event.getId()); + lootRecordType = LootRecordType.EVENT; + takeInventorySnapshot(); + } } @Schedule(