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..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", @@ -101,6 +102,17 @@ 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 65494c5c78..4808a29d12 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 @@ -133,6 +133,33 @@ 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 + @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 ClientToolbar clientToolbar; @@ -575,6 +602,11 @@ 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..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 @@ -63,7 +63,13 @@ 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; 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 ec4cdbd84b..c3b893552e 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()); + } + } }