From a83502a337204d95aecfa687c15659e78ae853d7 Mon Sep 17 00:00:00 2001 From: iguaan Date: Sun, 27 May 2018 00:35:09 +0300 Subject: [PATCH] slayerplugin: fixed bracelet charge counter --- .../client/plugins/slayer/SlayerPlugin.java | 25 +++++++++++++------ .../plugins/slayer/SlayerPluginTest.java | 19 +++++++++++--- 2 files changed, 34 insertions(+), 10 deletions(-) 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 7ae368ad84..2115b59892 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 @@ -90,9 +90,11 @@ public class SlayerPlugin extends Plugin private static final String CHAT_BRACELET_SLAUGHTER = "Your bracelet of slaughter prevents your slayer"; private static final Pattern CHAT_BRACELET_SLAUGHTER_REGEX = Pattern.compile("Your bracelet of slaughter prevents your slayer count decreasing. It has (\\d{1,2}) charge[s]? left."); private static final String CHAT_BRACELET_EXPEDITIOUS = "Your expeditious bracelet helps you progress your"; - private static final Pattern CHAT_BRACELET_EXPEDITIOUS_REGEX = Pattern.compile("Your expeditious bracelet helps you progress your slayer task faster. It has (\\d{1,2}) charge[s]? left."); + private static final Pattern CHAT_BRACELET_EXPEDITIOUS_REGEX = Pattern.compile("Your expeditious bracelet helps you progress your slayer faster. It has (\\d{1,2}) charge[s]? left."); private static final String CHAT_BRACELET_SLAUGHTER_CHARGE = "Your bracelet of slaughter has "; + private static final Pattern CHAT_BRACELET_SLAUGHTER_CHARGE_REGEX = Pattern.compile("Your bracelet of slaughter has (\\d{1,2}) charge[s]? left."); private static final String CHAT_BRACELET_EXPEDITIOUS_CHARGE = "Your expeditious bracelet has "; + private static final Pattern CHAT_BRACELET_EXPEDITIOUS_CHARGE_REGEX = Pattern.compile("Your expeditious bracelet has (\\d{1,2}) charge[s]? left."); //NPC messages private static final Pattern NPC_ASSIGN_MESSAGE = Pattern.compile(".*Your new task is to kill\\s*(\\d*) (.*)\\."); @@ -337,16 +339,25 @@ public class SlayerPlugin extends Plugin if (chatMsg.startsWith(CHAT_BRACELET_EXPEDITIOUS_CHARGE)) { - expeditiousChargeCount = Integer.parseInt(chatMsg - .replace(CHAT_BRACELET_EXPEDITIOUS_CHARGE, "") - .replace(" charges left.", "")); + Matcher mExpeditious = CHAT_BRACELET_EXPEDITIOUS_CHARGE_REGEX.matcher(chatMsg); + + if (!mExpeditious.find()) + { + return; + } + + expeditiousChargeCount = Integer.parseInt(mExpeditious.group(1)); config.expeditious(expeditiousChargeCount); } if (chatMsg.startsWith(CHAT_BRACELET_SLAUGHTER_CHARGE)) { - slaughterChargeCount = Integer.parseInt(chatMsg - .replace(CHAT_BRACELET_SLAUGHTER_CHARGE, "") - .replace(" charges left.", "")); + Matcher mSlaughter = CHAT_BRACELET_SLAUGHTER_CHARGE_REGEX.matcher(chatMsg); + if (!mSlaughter.find()) + { + return; + } + + slaughterChargeCount = Integer.parseInt(mSlaughter.group(1)); config.slaughter(slaughterChargeCount); } diff --git a/runelite-client/src/test/java/net/runelite/client/plugins/slayer/SlayerPluginTest.java b/runelite-client/src/test/java/net/runelite/client/plugins/slayer/SlayerPluginTest.java index 9aac75ee3d..4d3c5562a6 100644 --- a/runelite-client/src/test/java/net/runelite/client/plugins/slayer/SlayerPluginTest.java +++ b/runelite-client/src/test/java/net/runelite/client/plugins/slayer/SlayerPluginTest.java @@ -67,17 +67,20 @@ public class SlayerPluginTest private static final String SUPERIOR_MESSAGE = "A superior foe has appeared..."; private static final String BRACLET_SLAUGHTER = "Your bracelet of slaughter prevents your slayer count decreasing. It has 9 charges left."; - private static final String BRACLET_EXPEDITIOUS = "Your expeditious bracelet helps you progress your slayer task faster. It has 9 charges left."; + private static final String BRACLET_EXPEDITIOUS = "Your expeditious bracelet helps you progress your slayer faster. It has 9 charges left."; private static final String BRACLET_SLAUGHTER_V2 = "Your bracelet of slaughter prevents your slayer count decreasing. It has 1 charge left."; - private static final String BRACLET_EXPEDITIOUS_V2 = "Your expeditious bracelet helps you progress your slayer task faster. It has 1 charge left."; + private static final String BRACLET_EXPEDITIOUS_V2 = "Your expeditious bracelet helps you progress your slayer faster. It has 1 charge left."; private static final String BRACLET_SLAUGHTER_V3 = "Your bracelet of slaughter prevents your slayer count decreasing. It then crumbles to dust."; - private static final String BRACLET_EXPEDITIOUS_V3 = "Your expeditious bracelet helps you progress your slayer task faster. It then crumbles to dust."; + private static final String BRACLET_EXPEDITIOUS_V3 = "Your expeditious bracelet helps you progress your slayer faster. It then crumbles to dust."; private static final String CHAT_BRACELET_SLAUGHTER_CHARGE = "Your bracelet of slaughter has 12 charges left."; private static final String CHAT_BRACELET_EXPEDITIOUS_CHARGE = "Your expeditious bracelet has 12 charges left."; + private static final String CHAT_BRACELET_SLAUGHTER_CHARGE_ONE = "Your bracelet of slaughter has 1 charge left."; + private static final String CHAT_BRACELET_EXPEDITIOUS_CHARGE_ONE = "Your expeditious bracelet has 1 charge left."; + private static final String BREAK_SLAUGHTER = "The bracelet shatters. Your next bracelet of slaughter
will start afresh from 30 charges."; private static final String BREAK_EXPEDITIOUS = "The bracelet shatters. Your next expeditious bracelet
will start afresh from 30 charges."; @@ -242,6 +245,11 @@ public class SlayerPluginTest assertEquals(12, slayerPlugin.getSlaughterChargeCount()); + chatMessageEvent = new ChatMessage(SERVER, "", CHAT_BRACELET_SLAUGHTER_CHARGE_ONE, null); + slayerPlugin.onChatMessage(chatMessageEvent); + + assertEquals(1, slayerPlugin.getSlaughterChargeCount()); + slayerPlugin.setSlaughterChargeCount(1); chatMessageEvent = new ChatMessage(SERVER, "", BRACLET_SLAUGHTER_V3, null); slayerPlugin.onChatMessage(chatMessageEvent); @@ -285,6 +293,11 @@ public class SlayerPluginTest assertEquals(12, slayerPlugin.getExpeditiousChargeCount()); + chatMessageEvent = new ChatMessage(SERVER, "", CHAT_BRACELET_EXPEDITIOUS_CHARGE_ONE, null); + slayerPlugin.onChatMessage(chatMessageEvent); + + assertEquals(1, slayerPlugin.getExpeditiousChargeCount()); + slayerPlugin.setExpeditiousChargeCount(1); chatMessageEvent = new ChatMessage(SERVER, "", BRACLET_EXPEDITIOUS_V3, null); slayerPlugin.onChatMessage(chatMessageEvent);