Merge pull request #9360 from Nightfirecat/fix-jad-zuk-task-tracking

slayerplugin: Correct Jad and Zuk task tracking
This commit is contained in:
Adam
2019-07-15 16:56:29 -04:00
committed by GitHub
3 changed files with 85 additions and 3 deletions

View File

@@ -535,7 +535,15 @@ public class SlayerPlugin extends Plugin
return;
}
killedOne();
final int taskKillExp = Task.getTask(taskName).getExpectedKillExp();
// Only count exp gain as a kill if the task either has no expected exp for a kill, or if the exp gain is equal
// to the expected exp gain for the task.
if (taskKillExp == 0 || taskKillExp == slayerExp - cachedXp)
{
killedOne();
}
cachedXp = slayerExp;
}

View File

@@ -107,7 +107,7 @@ enum Task
ICEFIENDS("Icefiends", ItemID.ICE_DIAMOND),
INFERNAL_MAGES("Infernal mages", ItemID.INFERNAL_MAGE, "Malevolent mage"),
IRON_DRAGONS("Iron dragons", ItemID.IRON_DRAGON_MASK),
JAD("TzTok-Jad", ItemID.TZREKJAD),
JAD("TzTok-Jad", ItemID.TZREKJAD, 25250),
JELLIES("Jellies", ItemID.JELLY, "Jelly"),
JUNGLE_HORROR("Jungle horrors", ItemID.ENSOULED_HORROR_HEAD),
KALPHITE("Kalphite", ItemID.KALPHITE_SOLDIER),
@@ -171,7 +171,7 @@ enum Task
ZILYANA("Commander Zilyana", ItemID.PET_ZILYANA),
ZOMBIES("Zombies", ItemID.ZOMBIE_HEAD, "Undead"),
ZULRAH("Zulrah", ItemID.PET_SNAKELING),
ZUK("TzKal-Zuk", ItemID.TZREKZUK);
ZUK("TzKal-Zuk", ItemID.TZREKZUK, 101890);
//</editor-fold>
private static final Map<String, Task> tasks;
@@ -181,6 +181,7 @@ enum Task
private final String[] targetNames;
private final int weaknessThreshold;
private final int weaknessItem;
private final int expectedKillExp;
static
{
@@ -202,6 +203,7 @@ enum Task
this.weaknessThreshold = -1;
this.weaknessItem = -1;
this.targetNames = targetNames;
this.expectedKillExp = 0;
}
Task(String name, int itemSpriteId, int weaknessThreshold, int weaknessItem, String... targetNames)
@@ -212,6 +214,18 @@ enum Task
this.weaknessThreshold = weaknessThreshold;
this.weaknessItem = weaknessItem;
this.targetNames = targetNames;
this.expectedKillExp = 0;
}
Task(String name, int itemSpriteId, int expectedKillExp)
{
Preconditions.checkArgument(itemSpriteId >= 0);
this.name = name;
this.itemSpriteId = itemSpriteId;
this.weaknessThreshold = -1;
this.weaknessItem = -1;
this.targetNames = new String[0];
this.expectedKillExp = expectedKillExp;
}
static Task getTask(String taskName)

View File

@@ -35,8 +35,10 @@ import static net.runelite.api.ChatMessageType.GAMEMESSAGE;
import net.runelite.api.Client;
import net.runelite.api.MessageNode;
import net.runelite.api.Player;
import net.runelite.api.Skill;
import net.runelite.api.coords.LocalPoint;
import net.runelite.api.events.ChatMessage;
import net.runelite.api.events.ExperienceChanged;
import net.runelite.api.events.GameTick;
import net.runelite.api.widgets.Widget;
import net.runelite.api.widgets.WidgetInfo;
@@ -418,6 +420,64 @@ public class SlayerPluginTest
verifyNoMoreInteractions(notifier);
}
@Test
public void testJadTaskKill()
{
final Player player = mock(Player.class);
when(player.getLocalLocation()).thenReturn(new LocalPoint(0, 0));
when(client.getLocalPlayer()).thenReturn(player);
final ExperienceChanged experienceChanged = new ExperienceChanged();
experienceChanged.setSkill(Skill.SLAYER);
when(client.getSkillExperience(Skill.SLAYER)).thenReturn(100);
slayerPlugin.onExperienceChanged(experienceChanged);
slayerPlugin.setTaskName("TzTok-Jad");
slayerPlugin.setAmount(1);
// One bat kill
when(client.getSkillExperience(Skill.SLAYER)).thenReturn(110);
slayerPlugin.onExperienceChanged(experienceChanged);
assertEquals(1, slayerPlugin.getAmount());
// One Jad kill
when(client.getSkillExperience(Skill.SLAYER)).thenReturn(25_360);
slayerPlugin.onExperienceChanged(experienceChanged);
assertEquals(0, slayerPlugin.getAmount());
}
@Test
public void testZukTaskKill()
{
final Player player = mock(Player.class);
when(player.getLocalLocation()).thenReturn(new LocalPoint(0, 0));
when(client.getLocalPlayer()).thenReturn(player);
final ExperienceChanged experienceChanged = new ExperienceChanged();
experienceChanged.setSkill(Skill.SLAYER);
when(client.getSkillExperience(Skill.SLAYER)).thenReturn(100);
slayerPlugin.onExperienceChanged(experienceChanged);
slayerPlugin.setTaskName("TzKal-Zuk");
slayerPlugin.setAmount(1);
// One bat kill
when(client.getSkillExperience(Skill.SLAYER)).thenReturn(125);
slayerPlugin.onExperienceChanged(experienceChanged);
assertEquals(1, slayerPlugin.getAmount());
// One Zuk kill
when(client.getSkillExperience(Skill.SLAYER)).thenReturn(102_015);
slayerPlugin.onExperienceChanged(experienceChanged);
assertEquals(0, slayerPlugin.getAmount());
}
@Test
public void testBraceletSlaughter()
{