diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/slayer/SlayerPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/slayer/SlayerPlugin.java index 58f0942de2..8cc18aa550 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/slayer/SlayerPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/slayer/SlayerPlugin.java @@ -520,12 +520,12 @@ public class SlayerPlugin extends Plugin log.debug("Slayer xp change delta: {}, killed npcs: {}", delta, taggedNpcsDiedPrevTick); final Task task = Task.getTask(taskName); - if (task != null && task.getExpectedKillExp() > 0) + if (task != null && task.getMinimumKillXp() > 0) { - // Only decrement a kill if the xp drop matches the expected drop. This is just for Tzhaar tasks. - if (task.getExpectedKillExp() == delta) + // Only decrement a kill if the xp drop is above the minimum threshold. This is for Tzhaar and Sire tasks. + if (delta >= task.getMinimumKillXp()) { - killed(1); + killed(max(taggedNpcsDiedPrevTick, 1)); } } else diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/slayer/Task.java b/runelite-client/src/main/java/net/runelite/client/plugins/slayer/Task.java index 29867dc042..bb90740f61 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/slayer/Task.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/slayer/Task.java @@ -39,8 +39,12 @@ enum Task { // ABERRANT_SPECTRES("Aberrant spectres", ItemID.ABERRANT_SPECTRE, "Spectre"), - ABYSSAL_DEMONS("Abyssal demons", ItemID.ABYSSAL_DEMON), - ABYSSAL_SIRE("Abyssal Sire", ItemID.ABYSSAL_ORPHAN), + // Abyssal demon - 150 xp + // Greater abyssal demon - 4200 xp + // Abyssal sire - 450 xp + // Use 51 for minimum xp to avoid a kill triggering from killing the sire vents + ABYSSAL_DEMONS("Abyssal demons", ItemID.ABYSSAL_DEMON, 51), + ABYSSAL_SIRE("Abyssal Sire", ItemID.ABYSSAL_ORPHAN, 51), ADAMANT_DRAGONS("Adamant dragons", ItemID.ADAMANT_DRAGON_MASK), ALCHEMICAL_HYDRA("Alchemical Hydra", ItemID.IKKLE_HYDRA), ANKOU("Ankou", ItemID.ANKOU_MASK), @@ -238,7 +242,7 @@ enum Task private final String[] targetNames; private final int weaknessThreshold; private final int weaknessItem; - private final int expectedKillExp; + private final int minimumKillXp; static { @@ -260,7 +264,7 @@ enum Task this.weaknessThreshold = -1; this.weaknessItem = -1; this.targetNames = targetNames; - this.expectedKillExp = 0; + this.minimumKillXp = 0; } Task(String name, int itemSpriteId, int weaknessThreshold, int weaknessItem, String... targetNames) @@ -271,10 +275,10 @@ enum Task this.weaknessThreshold = weaknessThreshold; this.weaknessItem = weaknessItem; this.targetNames = targetNames; - this.expectedKillExp = 0; + this.minimumKillXp = 0; } - Task(String name, int itemSpriteId, int expectedKillExp) + Task(String name, int itemSpriteId, int minimumKillXp) { Preconditions.checkArgument(itemSpriteId >= 0); this.name = name; @@ -282,7 +286,7 @@ enum Task this.weaknessThreshold = -1; this.weaknessItem = -1; this.targetNames = new String[0]; - this.expectedKillExp = expectedKillExp; + this.minimumKillXp = minimumKillXp; } @Nullable