From 121a2c01794ad332b240e48cf9723c00b853fbf9 Mon Sep 17 00:00:00 2001 From: Davis Cook Date: Mon, 11 Feb 2019 17:04:44 -0500 Subject: [PATCH 1/4] Add separate color for superior slayer monsters --- .../client/plugins/slayer/SlayerConfig.java | 10 ++++++ .../client/plugins/slayer/SlayerPlugin.java | 36 +++++++++++++++++++ .../plugins/slayer/TargetClickboxOverlay.java | 7 +++- 3 files changed, 52 insertions(+), 1 deletion(-) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/slayer/SlayerConfig.java b/runelite-client/src/main/java/net/runelite/client/plugins/slayer/SlayerConfig.java index 47aa58a1ab..15823eb547 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/slayer/SlayerConfig.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/slayer/SlayerConfig.java @@ -101,6 +101,16 @@ public interface SlayerConfig extends Config @ConfigItem( position = 7, + keyName = "superiorColor", + name = "Superior Color", + description = "Color of the highlighted superior slayer creatures" + ) + default Color getSuperiorColor() { + return Color.MAGENTA; + } + + @ConfigItem( + position = 8, keyName = "weaknessPrompt", name = "Show Monster Weakness", description = "Show an overlay on a monster when it is weak enough to finish off (Only Lizards, Gargoyles & Rockslugs)" 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 ff8d6e39bb..fa46224cb0 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 @@ -38,6 +38,7 @@ import java.util.List; import java.util.concurrent.ScheduledExecutorService; import java.util.regex.Matcher; import java.util.regex.Pattern; +import java.util.stream.Collectors; import javax.inject.Inject; import joptsimple.internal.Strings; import lombok.AccessLevel; @@ -52,6 +53,7 @@ import net.runelite.api.MessageNode; import net.runelite.api.NPC; import net.runelite.api.NPCComposition; import static net.runelite.api.Skill.SLAYER; +import net.runelite.api.NpcID; import net.runelite.api.coords.WorldPoint; import net.runelite.api.events.ChatMessage; import net.runelite.api.events.ConfigChanged; @@ -125,6 +127,36 @@ public class SlayerPlugin extends Plugin private static final Pattern TASK_STRING_VALIDATION = Pattern.compile("[^a-zA-Z0-9' -]"); private static final int TASK_STRING_MAX_LENGTH = 50; + // Superiors + private static List SUPERIOR_SLAYER_MONSTERS = Arrays.asList( + "Crushing hand", + "Chasm crawler", + "Screaming banshee", + "Screaming twisted banshee", + "Giant rockslug", + "Cockathrice", + "Flaming pyrelord", + "Monstrous basilisk", + "Malevolent mage", + "Insatiable bloodveld", + "Insatiable mutated bloodveld", + "Vitreous jelly", + "Vitreous warped jelly", + "Cave abomination", + "Abhorrent spectre", + "Repugnant spectre", + "Choke devil", + "King kurask", + "Marble gargoyle", + "Nechryarch", + "Greater abyssal demon", + "Night beast", + "Nuclear smoke devil"); + + static { + SUPERIOR_SLAYER_MONSTERS = SUPERIOR_SLAYER_MONSTERS.stream().map(name -> name.toLowerCase()).collect(Collectors.toList()); + } + @Inject private Client client; @@ -539,6 +571,10 @@ public class SlayerPlugin extends Plugin cachedXp = slayerExp; } + boolean isSuperior(String name) { + return SUPERIOR_SLAYER_MONSTERS.contains(name.toLowerCase()); + } + @Subscribe private void onConfigChanged(ConfigChanged event) { diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/slayer/TargetClickboxOverlay.java b/runelite-client/src/main/java/net/runelite/client/plugins/slayer/TargetClickboxOverlay.java index cc52cf9ac1..409a650acb 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/slayer/TargetClickboxOverlay.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/slayer/TargetClickboxOverlay.java @@ -63,7 +63,12 @@ public class TargetClickboxOverlay extends Overlay List targets = plugin.getHighlightedTargets(); for (NPC target : targets) { - renderTargetOverlay(graphics, target, config.getTargetColor()); + Color coloration = config.getTargetColor(); + if (plugin.isSuperior(target.getName())) { + coloration = config.getSuperiorColor(); + } + + renderTargetOverlay(graphics, target, coloration); } return null; From 1cf7801045f043a52988816c8e46a88d48212034 Mon Sep 17 00:00:00 2001 From: Davis Cook Date: Mon, 11 Feb 2019 17:16:02 -0500 Subject: [PATCH 2/4] fix checkstyle violations --- .../net/runelite/client/plugins/slayer/SlayerConfig.java | 4 +++- .../net/runelite/client/plugins/slayer/SlayerPlugin.java | 7 ++++--- .../client/plugins/slayer/TargetClickboxOverlay.java | 3 ++- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/slayer/SlayerConfig.java b/runelite-client/src/main/java/net/runelite/client/plugins/slayer/SlayerConfig.java index 15823eb547..4bf8864336 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/slayer/SlayerConfig.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/slayer/SlayerConfig.java @@ -33,6 +33,7 @@ import net.runelite.client.config.ConfigItem; @ConfigGroup("slayer") public interface SlayerConfig extends Config { + @ConfigItem( position = 1, keyName = "infobox", @@ -105,7 +106,8 @@ public interface SlayerConfig extends Config name = "Superior Color", description = "Color of the highlighted superior slayer creatures" ) - default Color getSuperiorColor() { + default Color getSuperiorColor() + { return Color.MAGENTA; } 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 fa46224cb0..a8a01f4b27 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 @@ -53,7 +53,6 @@ import net.runelite.api.MessageNode; import net.runelite.api.NPC; import net.runelite.api.NPCComposition; import static net.runelite.api.Skill.SLAYER; -import net.runelite.api.NpcID; import net.runelite.api.coords.WorldPoint; import net.runelite.api.events.ChatMessage; import net.runelite.api.events.ConfigChanged; @@ -153,7 +152,8 @@ public class SlayerPlugin extends Plugin "Night beast", "Nuclear smoke devil"); - static { + static + { SUPERIOR_SLAYER_MONSTERS = SUPERIOR_SLAYER_MONSTERS.stream().map(name -> name.toLowerCase()).collect(Collectors.toList()); } @@ -571,7 +571,8 @@ public class SlayerPlugin extends Plugin cachedXp = slayerExp; } - boolean isSuperior(String name) { + boolean isSuperior(String name) + { return SUPERIOR_SLAYER_MONSTERS.contains(name.toLowerCase()); } diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/slayer/TargetClickboxOverlay.java b/runelite-client/src/main/java/net/runelite/client/plugins/slayer/TargetClickboxOverlay.java index 409a650acb..598798ac97 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/slayer/TargetClickboxOverlay.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/slayer/TargetClickboxOverlay.java @@ -64,7 +64,8 @@ public class TargetClickboxOverlay extends Overlay for (NPC target : targets) { Color coloration = config.getTargetColor(); - if (plugin.isSuperior(target.getName())) { + if (plugin.isSuperior(target.getName())) + { coloration = config.getSuperiorColor(); } From 0baf0a8ecb3ecb31db6341665dd4a35ebb04d4d0 Mon Sep 17 00:00:00 2001 From: Davis Cook Date: Tue, 12 Feb 2019 01:11:06 -0500 Subject: [PATCH 3/4] remove static block initialization of superior list --- .../client/plugins/slayer/SlayerPlugin.java | 54 +++++++++---------- .../plugins/slayer/SlayerPluginTest.java | 9 ++++ 2 files changed, 34 insertions(+), 29 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 a8a01f4b27..8a4fa470fb 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 @@ -127,35 +127,31 @@ public class SlayerPlugin extends Plugin private static final int TASK_STRING_MAX_LENGTH = 50; // Superiors - private static List SUPERIOR_SLAYER_MONSTERS = Arrays.asList( - "Crushing hand", - "Chasm crawler", - "Screaming banshee", - "Screaming twisted banshee", - "Giant rockslug", - "Cockathrice", - "Flaming pyrelord", - "Monstrous basilisk", - "Malevolent mage", - "Insatiable bloodveld", - "Insatiable mutated bloodveld", - "Vitreous jelly", - "Vitreous warped jelly", - "Cave abomination", - "Abhorrent spectre", - "Repugnant spectre", - "Choke devil", - "King kurask", - "Marble gargoyle", - "Nechryarch", - "Greater abyssal demon", - "Night beast", - "Nuclear smoke devil"); - - static - { - SUPERIOR_SLAYER_MONSTERS = SUPERIOR_SLAYER_MONSTERS.stream().map(name -> name.toLowerCase()).collect(Collectors.toList()); - } + @VisibleForTesting + static List SUPERIOR_SLAYER_MONSTERS = Arrays.asList( + "crushing hand", + "chasm crawler", + "screaming banshee", + "screaming twisted banshee", + "giant rockslug", + "cockathrice", + "flaming pyrelord", + "monstrous basilisk", + "malevolent mage", + "insatiable bloodveld", + "insatiable mutated bloodveld", + "vitreous jelly", + "vitreous warped jelly", + "cave abomination", + "abhorrent spectre", + "repugnant spectre", + "choke devil", + "king kurask", + "marble gargoyle", + "nechryarch", + "greater abyssal demon", + "night beast", + "nuclear smoke devil"); @Inject private Client client; 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 6bfa00f4f2..318c711e46 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 @@ -561,4 +561,13 @@ public class SlayerPluginTest verify(chatMessageManager, never()).update(any(MessageNode.class)); } + + @Test + public void testSuperiorsLowercase() + { + for (String name : SlayerPlugin.SUPERIOR_SLAYER_MONSTERS) + { + assertEquals(name, name.toLowerCase()); + } + } } From ee2c0fcaa0f43db01928fca45b5a1d6b2e70f02c Mon Sep 17 00:00:00 2001 From: Davis Cook Date: Tue, 12 Feb 2019 01:20:10 -0500 Subject: [PATCH 4/4] fix checkstyle violation --- .../java/net/runelite/client/plugins/slayer/SlayerPlugin.java | 1 - 1 file changed, 1 deletion(-) 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 8a4fa470fb..68bd47cc1e 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 @@ -38,7 +38,6 @@ import java.util.List; import java.util.concurrent.ScheduledExecutorService; import java.util.regex.Matcher; import java.util.regex.Pattern; -import java.util.stream.Collectors; import javax.inject.Inject; import joptsimple.internal.Strings; import lombok.AccessLevel;