diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/chatcommands/ChatCommandsPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/chatcommands/ChatCommandsPlugin.java
index 006c8c7700..2bc4aad635 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/chatcommands/ChatCommandsPlugin.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/chatcommands/ChatCommandsPlugin.java
@@ -93,6 +93,8 @@ public class ChatCommandsPlugin extends Plugin
private static final Pattern KILLCOUNT_PATTERN = Pattern.compile("Your (.+) (?:kill|harvest|lap|completion) count is:
(\\d+)");
private static final Pattern RAIDS_PATTERN = Pattern.compile("Your completed (.+) count is: (\\d+)");
private static final Pattern RAIDS_PB_PATTERN = Pattern.compile("Congratulations - your raid is complete!
Team size: (?:[0-9]+ players|Solo) Duration: ([0-9:]+) \\(new personal best\\)");
+ private static final Pattern TOB_WAVE_PB_PATTERN = Pattern.compile("^.*Theatre of Blood wave completion time: ([0-9:]+) \\(Personal best!\\)");
+ private static final Pattern TOB_WAVE_DURATION_PATTERN = Pattern.compile("^.*Theatre of Blood wave completion time: [0-9:]+
Personal best: ([0-9:]+)");
private static final Pattern WINTERTODT_PATTERN = Pattern.compile("Your subdued Wintertodt count is: (\\d+)");
private static final Pattern BARROWS_PATTERN = Pattern.compile("Your Barrows chest count is: (\\d+)");
private static final Pattern KILL_DURATION_PATTERN = Pattern.compile("(?i)^(?:Fight |Lap |Challenge |Corrupted challenge )?duration: [0-9:]+\\. Personal best: ([0-9:]+)");
@@ -358,6 +360,18 @@ public class ChatCommandsPlugin extends Plugin
matchPb(matcher);
}
+ matcher = TOB_WAVE_PB_PATTERN.matcher(message);
+ if (matcher.find())
+ {
+ matchPb(matcher);
+ }
+
+ matcher = TOB_WAVE_DURATION_PATTERN.matcher(message);
+ if (matcher.find())
+ {
+ matchPb(matcher);
+ }
+
lastBossKill = null;
}
diff --git a/runelite-client/src/test/java/net/runelite/client/plugins/chatcommands/ChatCommandsPluginTest.java b/runelite-client/src/test/java/net/runelite/client/plugins/chatcommands/ChatCommandsPluginTest.java
index 905d90ae29..2f64ca267e 100644
--- a/runelite-client/src/test/java/net/runelite/client/plugins/chatcommands/ChatCommandsPluginTest.java
+++ b/runelite-client/src/test/java/net/runelite/client/plugins/chatcommands/ChatCommandsPluginTest.java
@@ -138,10 +138,42 @@ public class ChatCommandsPluginTest
@Test
public void testTheatreOfBlood()
{
+ ChatMessage chatMessage = new ChatMessage(null, GAMEMESSAGE, "", "Wave 'The Final Challenge' complete! Duration: 5:04
Theatre of Blood wave completion time: 37:04 (Personal best!)", null, 0);
+ chatCommandsPlugin.onChatMessage(chatMessage);
+
ChatMessage chatMessageEvent = new ChatMessage(null, GAMEMESSAGE, "", "Your completed Theatre of Blood count is: 73.", null, 0);
chatCommandsPlugin.onChatMessage(chatMessageEvent);
verify(configManager).setConfiguration("killcount.adam", "theatre of blood", 73);
+ verify(configManager).setConfiguration("personalbest.adam", "theatre of blood", 37 * 60 + 4);
+ }
+
+ @Test
+ public void testTheatreOfBloodUnknownPB()
+ {
+ ChatMessage chatMessage = new ChatMessage(null, GAMEMESSAGE, "", "Wave 'The Final Challenge' complete! Duration: 5:04
Theatre of Blood wave completion time: 38:17
Personal best: 37:04", null, 0);
+ chatCommandsPlugin.onChatMessage(chatMessage);
+
+ ChatMessage chatMessageEvent = new ChatMessage(null, GAMEMESSAGE, "", "Your completed Theatre of Blood count is: 73.", null, 0);
+ chatCommandsPlugin.onChatMessage(chatMessageEvent);
+
+ verify(configManager).setConfiguration("killcount.adam", "theatre of blood", 73);
+ verify(configManager).setConfiguration("personalbest.adam", "theatre of blood", 37 * 60 + 4);
+ }
+
+ @Test
+ public void testTheatreOfBloodNoPB()
+ {
+ when(configManager.getConfiguration("personalbest.adam", "theatre of blood", int.class)).thenReturn(37 * 60 + 4); // 37:04
+
+ ChatMessage chatMessage = new ChatMessage(null, GAMEMESSAGE, "", "Wave 'The Final Challenge' complete! Duration: 5:04
Theatre of Blood wave completion time: 38:17
Personal best: 37:10", null, 0);
+ chatCommandsPlugin.onChatMessage(chatMessage);
+
+ ChatMessage chatMessageEvent = new ChatMessage(null, GAMEMESSAGE, "", "Your completed Theatre of Blood count is: 73.", null, 0);
+ chatCommandsPlugin.onChatMessage(chatMessageEvent);
+
+ verify(configManager).setConfiguration("killcount.adam", "theatre of blood", 73);
+ verify(configManager, never()).setConfiguration(eq("personalbest.adam"), eq("theatre of blood"), anyInt());
}
@Test