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;