slayer plugin: fix sire vent kills from counting as task kills

All kills of abyssal creatures must give at least a 75xp drop, so we can just exclude any xpdrop that is 50 or less
This commit is contained in:
Adam
2021-07-14 11:02:29 -04:00
parent f07ae7ac9f
commit e027955e8a
2 changed files with 15 additions and 11 deletions

View File

@@ -520,12 +520,12 @@ public class SlayerPlugin extends Plugin
log.debug("Slayer xp change delta: {}, killed npcs: {}", delta, taggedNpcsDiedPrevTick); log.debug("Slayer xp change delta: {}, killed npcs: {}", delta, taggedNpcsDiedPrevTick);
final Task task = Task.getTask(taskName); 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. // Only decrement a kill if the xp drop is above the minimum threshold. This is for Tzhaar and Sire tasks.
if (task.getExpectedKillExp() == delta) if (delta >= task.getMinimumKillXp())
{ {
killed(1); killed(max(taggedNpcsDiedPrevTick, 1));
} }
} }
else else

View File

@@ -39,8 +39,12 @@ enum Task
{ {
//<editor-fold desc="Enums"> //<editor-fold desc="Enums">
ABERRANT_SPECTRES("Aberrant spectres", ItemID.ABERRANT_SPECTRE, "Spectre"), ABERRANT_SPECTRES("Aberrant spectres", ItemID.ABERRANT_SPECTRE, "Spectre"),
ABYSSAL_DEMONS("Abyssal demons", ItemID.ABYSSAL_DEMON), // Abyssal demon - 150 xp
ABYSSAL_SIRE("Abyssal Sire", ItemID.ABYSSAL_ORPHAN), // 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), ADAMANT_DRAGONS("Adamant dragons", ItemID.ADAMANT_DRAGON_MASK),
ALCHEMICAL_HYDRA("Alchemical Hydra", ItemID.IKKLE_HYDRA), ALCHEMICAL_HYDRA("Alchemical Hydra", ItemID.IKKLE_HYDRA),
ANKOU("Ankou", ItemID.ANKOU_MASK), ANKOU("Ankou", ItemID.ANKOU_MASK),
@@ -238,7 +242,7 @@ enum Task
private final String[] targetNames; private final String[] targetNames;
private final int weaknessThreshold; private final int weaknessThreshold;
private final int weaknessItem; private final int weaknessItem;
private final int expectedKillExp; private final int minimumKillXp;
static static
{ {
@@ -260,7 +264,7 @@ enum Task
this.weaknessThreshold = -1; this.weaknessThreshold = -1;
this.weaknessItem = -1; this.weaknessItem = -1;
this.targetNames = targetNames; this.targetNames = targetNames;
this.expectedKillExp = 0; this.minimumKillXp = 0;
} }
Task(String name, int itemSpriteId, int weaknessThreshold, int weaknessItem, String... targetNames) Task(String name, int itemSpriteId, int weaknessThreshold, int weaknessItem, String... targetNames)
@@ -271,10 +275,10 @@ enum Task
this.weaknessThreshold = weaknessThreshold; this.weaknessThreshold = weaknessThreshold;
this.weaknessItem = weaknessItem; this.weaknessItem = weaknessItem;
this.targetNames = targetNames; 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); Preconditions.checkArgument(itemSpriteId >= 0);
this.name = name; this.name = name;
@@ -282,7 +286,7 @@ enum Task
this.weaknessThreshold = -1; this.weaknessThreshold = -1;
this.weaknessItem = -1; this.weaknessItem = -1;
this.targetNames = new String[0]; this.targetNames = new String[0];
this.expectedKillExp = expectedKillExp; this.minimumKillXp = minimumKillXp;
} }
@Nullable @Nullable