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.
This commit is contained in:
@@ -144,6 +144,11 @@ public class LootTrackerPlugin extends Plugin
|
|||||||
// Chest loot handling
|
// Chest loot handling
|
||||||
private static final String CHEST_LOOTED_MESSAGE = "You find some treasure in the chest!";
|
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 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 (?<key>[a-z]+) key breaks in the lock.*");
|
||||||
|
private static final int HAM_STOREROOM_REGION = 10321;
|
||||||
private static final Map<Integer, String> CHEST_EVENT_TYPES = new ImmutableMap.Builder<Integer, String>().
|
private static final Map<Integer, String> CHEST_EVENT_TYPES = new ImmutableMap.Builder<Integer, String>().
|
||||||
put(5179, "Brimstone Chest").
|
put(5179, "Brimstone Chest").
|
||||||
put(11573, "Crystal Chest").
|
put(11573, "Crystal Chest").
|
||||||
@@ -151,6 +156,10 @@ public class LootTrackerPlugin extends Plugin
|
|||||||
put(12127, "The Gauntlet").
|
put(12127, "The Gauntlet").
|
||||||
put(13113, "Larran's small chest").
|
put(13113, "Larran's small chest").
|
||||||
put(13151, "Elven Crystal 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();
|
build();
|
||||||
|
|
||||||
// Shade chest loot handling
|
// Shade chest loot handling
|
||||||
@@ -593,7 +602,9 @@ public class LootTrackerPlugin extends Plugin
|
|||||||
|
|
||||||
final String message = event.getMessage();
|
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();
|
final int regionID = client.getLocalPlayer().getWorldLocation().getRegionID();
|
||||||
if (!CHEST_EVENT_TYPES.containsKey(regionID))
|
if (!CHEST_EVENT_TYPES.containsKey(regionID))
|
||||||
@@ -639,6 +650,16 @@ public class LootTrackerPlugin extends Plugin
|
|||||||
return;
|
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);
|
final Matcher pickpocketMatcher = PICKPOCKET_REGEX.matcher(message);
|
||||||
if (pickpocketMatcher.matches())
|
if (pickpocketMatcher.matches())
|
||||||
{
|
{
|
||||||
@@ -706,7 +727,8 @@ public class LootTrackerPlugin extends Plugin
|
|||||||
@Subscribe
|
@Subscribe
|
||||||
public void onItemContainerChanged(ItemContainerChanged event)
|
public void onItemContainerChanged(ItemContainerChanged event)
|
||||||
{
|
{
|
||||||
if (event.getContainerId() != InventoryID.INVENTORY.getId())
|
if (event.getContainerId() != InventoryID.INVENTORY.getId()
|
||||||
|
|| eventType == null)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -719,6 +741,7 @@ public class LootTrackerPlugin extends Plugin
|
|||||||
|| SEEDPACK_EVENT.equals(eventType)
|
|| SEEDPACK_EVENT.equals(eventType)
|
||||||
|| CASKET_EVENT.equals(eventType)
|
|| CASKET_EVENT.equals(eventType)
|
||||||
|| BIRDNEST_EVENT.equals(eventType)
|
|| BIRDNEST_EVENT.equals(eventType)
|
||||||
|
|| eventType.startsWith("H.A.M. chest")
|
||||||
|| lootRecordType == LootRecordType.PICKPOCKET)
|
|| lootRecordType == LootRecordType.PICKPOCKET)
|
||||||
{
|
{
|
||||||
WorldPoint playerLocation = client.getLocalPlayer().getWorldLocation();
|
WorldPoint playerLocation = client.getLocalPlayer().getWorldLocation();
|
||||||
|
|||||||
Reference in New Issue
Block a user