Search in sources :

Example 6 with Schedule

use of net.runelite.client.task.Schedule in project runelite by runelite.

the class ClueScrollPlugin method checkForClues.

@Schedule(period = 600, unit = ChronoUnit.MILLIS)
public void checkForClues() {
    if (client.getGameState() == GameState.LOGIN_SCREEN) {
        clue = null;
        return;
    }
    npcsToMark = null;
    objectsToMark = null;
    equippedItems = null;
    if (clue instanceof NpcClueScroll) {
        String npc = ((NpcClueScroll) clue).getNpc();
        if (npc != null) {
            Query query = new NPCQuery().nameContains(npc);
            npcsToMark = queryRunner.runQuery(query);
        }
    }
    if (clue instanceof ObjectClueScroll) {
        int objectId = ((ObjectClueScroll) clue).getObjectId();
        if (objectId != -1) {
            GameObjectQuery query = new GameObjectQuery().idEquals(objectId);
            objectsToMark = queryRunner.runQuery(query);
        }
    }
    if (clue instanceof EmoteClue) {
        equippedItems = new HashSet<>();
        Item[] result = queryRunner.runQuery(new InventoryItemQuery(InventoryID.EQUIPMENT));
        if (result != null) {
            for (Item item : result) {
                equippedItems.add(item.getId());
            }
        }
    }
    ClueScroll clue = findClueScroll();
    if (clue == null && this.clue != null) {
        // wait for WAIT_DURATION before discarding the knowledge of the player having a clue.
        if (Instant.now().compareTo(clueTimeout.plus(WAIT_DURATION)) < 0) {
            return;
        }
    }
    // so the clue window doesn't have to be open.
    if (clue != null) {
        this.clue = clue;
        this.clueTimeout = Instant.now();
    }
}
Also used : InventoryItemQuery(net.runelite.api.queries.InventoryItemQuery) NPCQuery(net.runelite.api.queries.NPCQuery) Query(net.runelite.api.Query) GameObjectQuery(net.runelite.api.queries.GameObjectQuery) TextClueScroll(net.runelite.client.plugins.cluescrolls.clues.TextClueScroll) ClueScroll(net.runelite.client.plugins.cluescrolls.clues.ClueScroll) NpcClueScroll(net.runelite.client.plugins.cluescrolls.clues.NpcClueScroll) ObjectClueScroll(net.runelite.client.plugins.cluescrolls.clues.ObjectClueScroll) NPCQuery(net.runelite.api.queries.NPCQuery) InventoryItemQuery(net.runelite.api.queries.InventoryItemQuery) WorldPoint(net.runelite.api.coords.WorldPoint) NpcClueScroll(net.runelite.client.plugins.cluescrolls.clues.NpcClueScroll) Item(net.runelite.api.Item) EmoteClue(net.runelite.client.plugins.cluescrolls.clues.EmoteClue) ObjectClueScroll(net.runelite.client.plugins.cluescrolls.clues.ObjectClueScroll) GameObjectQuery(net.runelite.api.queries.GameObjectQuery) Schedule(net.runelite.client.task.Schedule)

Aggregations

Schedule (net.runelite.client.task.Schedule)6 Duration (java.time.Duration)2 Instant (java.time.Instant)2 Method (java.lang.reflect.Method)1 HashMap (java.util.HashMap)1 LinkedHashMap (java.util.LinkedHashMap)1 Map (java.util.Map)1 Matcher (java.util.regex.Matcher)1 Item (net.runelite.api.Item)1 Player (net.runelite.api.Player)1 Query (net.runelite.api.Query)1 WorldPoint (net.runelite.api.coords.WorldPoint)1 GameObjectQuery (net.runelite.api.queries.GameObjectQuery)1 InventoryItemQuery (net.runelite.api.queries.InventoryItemQuery)1 NPCQuery (net.runelite.api.queries.NPCQuery)1 Widget (net.runelite.api.widgets.Widget)1 ClueScroll (net.runelite.client.plugins.cluescrolls.clues.ClueScroll)1 EmoteClue (net.runelite.client.plugins.cluescrolls.clues.EmoteClue)1 NpcClueScroll (net.runelite.client.plugins.cluescrolls.clues.NpcClueScroll)1 ObjectClueScroll (net.runelite.client.plugins.cluescrolls.clues.ObjectClueScroll)1