loottracker: Fix duplicate cox and tob chest loots

This prevents loot entries for Chamber of Xeric and Theatre of Blood
chests from being duplicated when viewed multiple times.

Fixes runelite/runelite#4754
This commit is contained in:
Jordan Atwood
2019-07-10 23:09:14 -07:00
parent 70f2be507b
commit 501df1e409

View File

@@ -51,6 +51,7 @@ import lombok.Getter;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import net.runelite.api.ChatMessageType; import net.runelite.api.ChatMessageType;
import net.runelite.api.Client; import net.runelite.api.Client;
import net.runelite.api.GameState;
import net.runelite.api.InventoryID; import net.runelite.api.InventoryID;
import net.runelite.api.ItemComposition; import net.runelite.api.ItemComposition;
import net.runelite.api.ItemContainer; import net.runelite.api.ItemContainer;
@@ -60,6 +61,7 @@ import net.runelite.api.SpriteID;
import net.runelite.api.coords.WorldPoint; import net.runelite.api.coords.WorldPoint;
import net.runelite.api.events.ChatMessage; import net.runelite.api.events.ChatMessage;
import net.runelite.api.events.ConfigChanged; import net.runelite.api.events.ConfigChanged;
import net.runelite.api.events.GameStateChanged;
import net.runelite.api.events.ItemContainerChanged; import net.runelite.api.events.ItemContainerChanged;
import net.runelite.api.events.WidgetLoaded; import net.runelite.api.events.WidgetLoaded;
import net.runelite.api.widgets.WidgetID; import net.runelite.api.widgets.WidgetID;
@@ -140,6 +142,7 @@ public class LootTrackerPlugin extends Plugin
private LootTrackerPanel panel; private LootTrackerPanel panel;
private NavigationButton navButton; private NavigationButton navButton;
private String eventType; private String eventType;
private boolean chestLooted;
private List<String> ignoredItems = new ArrayList<>(); private List<String> ignoredItems = new ArrayList<>();
@@ -282,6 +285,16 @@ public class LootTrackerPlugin extends Plugin
{ {
clientToolbar.removeNavigation(navButton); clientToolbar.removeNavigation(navButton);
lootTrackerClient = null; lootTrackerClient = null;
chestLooted = false;
}
@Subscribe
public void onGameStateChanged(final GameStateChanged event)
{
if (event.getGameState() == GameState.LOADING)
{
chestLooted = false;
}
} }
@Subscribe @Subscribe
@@ -329,10 +342,19 @@ public class LootTrackerPlugin extends Plugin
container = client.getItemContainer(InventoryID.BARROWS_REWARD); container = client.getItemContainer(InventoryID.BARROWS_REWARD);
break; break;
case (WidgetID.CHAMBERS_OF_XERIC_REWARD_GROUP_ID): case (WidgetID.CHAMBERS_OF_XERIC_REWARD_GROUP_ID):
if (chestLooted)
{
return;
}
eventType = "Chambers of Xeric"; eventType = "Chambers of Xeric";
container = client.getItemContainer(InventoryID.CHAMBERS_OF_XERIC_CHEST); container = client.getItemContainer(InventoryID.CHAMBERS_OF_XERIC_CHEST);
chestLooted = true;
break; break;
case (WidgetID.THEATRE_OF_BLOOD_GROUP_ID): case (WidgetID.THEATRE_OF_BLOOD_GROUP_ID):
if (chestLooted)
{
return;
}
int region = WorldPoint.fromLocalInstance(client, client.getLocalPlayer().getLocalLocation()).getRegionID(); int region = WorldPoint.fromLocalInstance(client, client.getLocalPlayer().getLocalLocation()).getRegionID();
if (region != THEATRE_OF_BLOOD_REGION) if (region != THEATRE_OF_BLOOD_REGION)
{ {
@@ -340,6 +362,7 @@ public class LootTrackerPlugin extends Plugin
} }
eventType = "Theatre of Blood"; eventType = "Theatre of Blood";
container = client.getItemContainer(InventoryID.THEATRE_OF_BLOOD_CHEST); container = client.getItemContainer(InventoryID.THEATRE_OF_BLOOD_CHEST);
chestLooted = true;
break; break;
case (WidgetID.CLUE_SCROLL_REWARD_GROUP_ID): case (WidgetID.CLUE_SCROLL_REWARD_GROUP_ID):
// event type should be set via ChatMessage for clue scrolls. // event type should be set via ChatMessage for clue scrolls.