slayerplugin: Correct Jad and Zuk task tracking

This adds a field to Task which dictates the expected exp gain of the
task. When set to a non-zero value, it will prevent slayer exp gains
from registering as a kill unless they are of exactly that amount.

Closes runelite/runelite#1865
This commit is contained in:
Jordan Atwood
2019-07-12 23:27:18 -07:00
parent 5844c7c5de
commit 50dba92338
3 changed files with 85 additions and 3 deletions

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()
{