diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/agility/AgilityConfig.java b/runelite-client/src/main/java/net/runelite/client/plugins/agility/AgilityConfig.java index 5ecdda516b..de9962d678 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/agility/AgilityConfig.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/agility/AgilityConfig.java @@ -28,11 +28,19 @@ import java.awt.Color; import net.runelite.client.config.Config; import net.runelite.client.config.ConfigGroup; import net.runelite.client.config.ConfigItem; +import net.runelite.client.config.ConfigSection; import net.runelite.client.config.Units; @ConfigGroup("agility") public interface AgilityConfig extends Config { + @ConfigSection( + name = "Hallowed Sepulchre", + description = "Settings for Hallowed Sepulchre highlights", + position = 17 + ) + String sepulchreSection = "Hallowed Sepulchre"; + @ConfigItem( keyName = "showClickboxes", name = "Show Clickboxes", @@ -223,9 +231,10 @@ public interface AgilityConfig extends Config @ConfigItem( keyName = "highlightSepulchreNpcs", - name = "Highlight Sepulchre Projectiles", + name = "Highlight Projectiles", description = "Highlights arrows and swords in the Sepulchre", - position = 15 + position = 17, + section = sepulchreSection ) default boolean highlightSepulchreNpcs() { @@ -234,12 +243,37 @@ public interface AgilityConfig extends Config @ConfigItem( keyName = "sepulchreHighlightColor", - name = "Sepulchre Highlight", + name = "Projectile Color", description = "Overlay color for arrows and swords", - position = 16 + position = 18, + section = sepulchreSection ) default Color sepulchreHighlightColor() { return Color.GREEN; } + + @ConfigItem( + keyName = "highlightSepulchreObstacles", + name = "Highlight Obstacles", + description = "Highlights pillars and stairs in the Sepulchre", + position = 19, + section = sepulchreSection + ) + default boolean highlightSepulchreObstacles() + { + return true; + } + + @ConfigItem( + keyName = "highlightSepulchreSkilling", + name = "Highlight Skill Challenges", + description = "Highlights skilling challenges in the Sepulchre", + position = 20, + section = sepulchreSection + ) + default boolean highlightSepulchreSkilling() + { + return true; + } } diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/agility/AgilityOverlay.java b/runelite-client/src/main/java/net/runelite/client/plugins/agility/AgilityOverlay.java index a7118cc1ab..96e52d22f8 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/agility/AgilityOverlay.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/agility/AgilityOverlay.java @@ -78,7 +78,9 @@ class AgilityOverlay extends Overlay { if (Obstacles.SHORTCUT_OBSTACLE_IDS.containsKey(object.getId()) && !config.highlightShortcuts() || Obstacles.TRAP_OBSTACLE_IDS.contains(object.getId()) && !config.showTrapOverlay() || - Obstacles.COURSE_OBSTACLE_IDS.contains(object.getId()) && !config.showClickboxes()) + Obstacles.COURSE_OBSTACLE_IDS.contains(object.getId()) && !config.showClickboxes() || + Obstacles.SEPULCHRE_OBSTACLE_IDS.contains(object.getId()) && !config.highlightSepulchreObstacles() || + Obstacles.SEPULCHRE_SKILL_OBSTACLE_IDS.contains(object.getId()) && !config.highlightSepulchreSkilling()) { return; } diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/agility/AgilityPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/agility/AgilityPlugin.java index a430c0e6d7..a13d9b3689 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/agility/AgilityPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/agility/AgilityPlugin.java @@ -438,7 +438,9 @@ public class AgilityPlugin extends Plugin if (Obstacles.COURSE_OBSTACLE_IDS.contains(newObject.getId()) || Obstacles.PORTAL_OBSTACLE_IDS.contains(newObject.getId()) || (Obstacles.TRAP_OBSTACLE_IDS.contains(newObject.getId()) - && Obstacles.TRAP_OBSTACLE_REGIONS.contains(newObject.getWorldLocation().getRegionID()))) + && Obstacles.TRAP_OBSTACLE_REGIONS.contains(newObject.getWorldLocation().getRegionID())) || + Obstacles.SEPULCHRE_OBSTACLE_IDS.contains(newObject.getId()) || + Obstacles.SEPULCHRE_SKILL_OBSTACLE_IDS.contains(newObject.getId())) { obstacles.put(newObject, new Obstacle(tile, null)); } diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/agility/Obstacles.java b/runelite-client/src/main/java/net/runelite/client/plugins/agility/Obstacles.java index b1b58b5f17..dd8809820b 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/agility/Obstacles.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/agility/Obstacles.java @@ -95,12 +95,7 @@ class Obstacles ZIP_LINE_11645, ZIP_LINE_11646, // Prifddinas LADDER_36221, TIGHTROPE_36225, CHIMNEY_36227, ROOF_EDGE, DARK_HOLE_36229, LADDER_36231, LADDER_36232, - ROPE_BRIDGE_36233, TIGHTROPE_36234, ROPE_BRIDGE_36235, TIGHTROPE_36236, TIGHTROPE_36237, DARK_HOLE_36238, - // Hallowed Sepulchre - GATE_38460, PLATFORM_38455, PLATFORM_38456, PLATFORM_38457, PLATFORM_38458, PLATFORM_38459, - PLATFORM_38470, PLATFORM_38477, STAIRS_38462, STAIRS_38463, STAIRS_38464, STAIRS_38465, - STAIRS_38466, STAIRS_38467, STAIRS_38468, STAIRS_38469, STAIRS_38471, STAIRS_38472, - STAIRS_38473, STAIRS_38474, STAIRS_38475, STAIRS_38476 + ROPE_BRIDGE_36233, TIGHTROPE_36234, ROPE_BRIDGE_36235, TIGHTROPE_36236, TIGHTROPE_36237, DARK_HOLE_36238 ); static final Set PORTAL_OBSTACLE_IDS = ImmutableSet.of( @@ -129,4 +124,18 @@ class Obstacles } SHORTCUT_OBSTACLE_IDS = builder.build(); } + + static final Set SEPULCHRE_OBSTACLE_IDS = ImmutableSet.of( + // Stairs and Platforms (and one Gate) + GATE_38460, PLATFORM_38455, PLATFORM_38456, PLATFORM_38457, PLATFORM_38458, PLATFORM_38459, + PLATFORM_38470, PLATFORM_38477, STAIRS_38462, STAIRS_38463, STAIRS_38464, STAIRS_38465, + STAIRS_38466, STAIRS_38467, STAIRS_38468, STAIRS_38469, STAIRS_38471, STAIRS_38472, + STAIRS_38473, STAIRS_38474, STAIRS_38475, STAIRS_38476 + ); + + static final Set SEPULCHRE_SKILL_OBSTACLE_IDS = ImmutableSet.of( + // Grapple, Portal, and Bridge skill obstacles + // They are multilocs, thus we use the NullObjectID + NULL_39524, NULL_39525, NULL_39526, NULL_39527, NULL_39528, NULL_39533 + ); }