Merge pull request #1850 from deathbeam/fix-clue-reset
Fix clue resetting
This commit is contained in:
@@ -31,6 +31,7 @@ import java.time.Duration;
|
|||||||
import java.time.Instant;
|
import java.time.Instant;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
|
import java.util.stream.Stream;
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
@@ -52,6 +53,7 @@ import net.runelite.api.events.ChatMessage;
|
|||||||
import net.runelite.api.events.GameStateChanged;
|
import net.runelite.api.events.GameStateChanged;
|
||||||
import net.runelite.api.events.GameTick;
|
import net.runelite.api.events.GameTick;
|
||||||
import net.runelite.api.events.ItemContainerChanged;
|
import net.runelite.api.events.ItemContainerChanged;
|
||||||
|
import net.runelite.api.events.MenuOptionClicked;
|
||||||
import net.runelite.api.queries.InventoryItemQuery;
|
import net.runelite.api.queries.InventoryItemQuery;
|
||||||
import net.runelite.api.queries.NPCQuery;
|
import net.runelite.api.queries.NPCQuery;
|
||||||
import net.runelite.api.widgets.Widget;
|
import net.runelite.api.widgets.Widget;
|
||||||
@@ -117,6 +119,9 @@ public class ClueScrollPlugin extends Plugin
|
|||||||
@Inject
|
@Inject
|
||||||
private ClueScrollWorldOverlay clueScrollWorldOverlay;
|
private ClueScrollWorldOverlay clueScrollWorldOverlay;
|
||||||
|
|
||||||
|
private Integer clueItemId;
|
||||||
|
private boolean clueItemChanged = false;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Collection<Overlay> getOverlays()
|
public Collection<Overlay> getOverlays()
|
||||||
{
|
{
|
||||||
@@ -139,29 +144,31 @@ public class ClueScrollPlugin extends Plugin
|
|||||||
resetClue();
|
resetClue();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Subscribe
|
||||||
|
public void onMenuOptionClicked(final MenuOptionClicked event)
|
||||||
|
{
|
||||||
|
if (event.getMenuOption() != null && event.getMenuOption().equals("Read"))
|
||||||
|
{
|
||||||
|
final ItemComposition itemComposition = itemManager.getItemComposition(event.getId());
|
||||||
|
|
||||||
|
if (itemComposition != null && itemComposition.getName().startsWith("Clue scroll"))
|
||||||
|
{
|
||||||
|
clueItemId = itemComposition.getId();
|
||||||
|
clueItemChanged = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Subscribe
|
@Subscribe
|
||||||
public void onItemContainerChanged(final ItemContainerChanged event)
|
public void onItemContainerChanged(final ItemContainerChanged event)
|
||||||
{
|
{
|
||||||
// Check if item was removed from inventory
|
// Check if item was removed from inventory
|
||||||
if (clue != null && event.getItemContainer() == client.getItemContainer(InventoryID.INVENTORY))
|
if (clue != null && clueItemId != null && event.getItemContainer() == client.getItemContainer(InventoryID.INVENTORY))
|
||||||
{
|
{
|
||||||
final Item[] items = event.getItemContainer().getItems();
|
final Stream<Item> items = Arrays.stream(event.getItemContainer().getItems());
|
||||||
boolean found = false;
|
|
||||||
|
|
||||||
// Clue was maybe removed from inventory, check if there is any clue scrolls left
|
// Check if clue was removed from inventory
|
||||||
for (Item item : items)
|
if (items.noneMatch(item -> itemManager.getItemComposition(item.getId()).getId() == clueItemId))
|
||||||
{
|
|
||||||
final ItemComposition itemContainerDefinition = itemManager.getItemComposition(item.getId());
|
|
||||||
|
|
||||||
// Check if we have any clue scrolls left
|
|
||||||
if (itemContainerDefinition.getName().startsWith("Clue scroll"))
|
|
||||||
{
|
|
||||||
found = true;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!found)
|
|
||||||
{
|
{
|
||||||
resetClue();
|
resetClue();
|
||||||
}
|
}
|
||||||
@@ -286,6 +293,12 @@ public class ClueScrollPlugin extends Plugin
|
|||||||
|
|
||||||
private void resetClue()
|
private void resetClue()
|
||||||
{
|
{
|
||||||
|
if (!clueItemChanged)
|
||||||
|
{
|
||||||
|
clueItemId = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
clueItemChanged = false;
|
||||||
clue = null;
|
clue = null;
|
||||||
client.clearHintArrow();
|
client.clearHintArrow();
|
||||||
}
|
}
|
||||||
@@ -339,7 +352,16 @@ public class ClueScrollPlugin extends Plugin
|
|||||||
return emoteClue;
|
return emoteClue;
|
||||||
}
|
}
|
||||||
|
|
||||||
return FairyRingClue.forText(text);
|
final FairyRingClue fairyRingClue = FairyRingClue.forText(text);
|
||||||
|
|
||||||
|
if (fairyRingClue != null)
|
||||||
|
{
|
||||||
|
return fairyRingClue;
|
||||||
|
}
|
||||||
|
|
||||||
|
// We have unknown clue, reset
|
||||||
|
resetClue();
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -356,6 +378,8 @@ public class ClueScrollPlugin extends Plugin
|
|||||||
|
|
||||||
if (clue != null)
|
if (clue != null)
|
||||||
{
|
{
|
||||||
|
clueItemId = item.getId();
|
||||||
|
clueItemChanged = true;
|
||||||
return clue;
|
return clue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user