diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/ztob/TheatreConfig.java b/runelite-client/src/main/java/net/runelite/client/plugins/ztob/TheatreConfig.java index 942b2721a3..963a2dcbe0 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/ztob/TheatreConfig.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/ztob/TheatreConfig.java @@ -11,6 +11,7 @@ package net.runelite.client.plugins.ztob; import net.runelite.client.config.Config; import net.runelite.client.config.ConfigGroup; import net.runelite.client.config.ConfigItem; +import net.runelite.client.config.Range; @ConfigGroup("Theatre") @@ -106,8 +107,19 @@ public interface TheatreConfig extends Config return true; } + @ConfigItem( + position = 8, + keyName = "highlightSote", + name = "Sote Missiles", + description = "Highlight Sotetseg's Missiles with pray type" + ) + default boolean highlightSote() + { + return true; + } + @ConfigItem( - position = 8, + position = 9, keyName = "SotetsegMaze1", name = "Sotetseg maze", description = "" @@ -118,7 +130,7 @@ public interface TheatreConfig extends Config } @ConfigItem( - position = 9, + position = 10, keyName = "SotetsegMaze2", name = "Sotetseg maze (solo mode)", description = "" @@ -129,7 +141,7 @@ public interface TheatreConfig extends Config } @ConfigItem( - position = 10, + position = 11, keyName = "XarpusExhumed", name = "Xarpus Exhumed", description = "" @@ -140,7 +152,7 @@ public interface TheatreConfig extends Config } @ConfigItem( - position = 11, + position = 12, keyName = "XarpusTick", name = "Xarpus Tick", description = "" @@ -151,7 +163,7 @@ public interface TheatreConfig extends Config } @ConfigItem( - position = 12, + position = 13, keyName = "xarpusExhumes", name = "Xarpus Exhume Counter", description = "" @@ -162,7 +174,7 @@ public interface TheatreConfig extends Config } @ConfigItem( - position = 13, + position = 14, keyName = "VerzikCupcakes", name = "Verzik Projectile Markers", description = "" @@ -173,7 +185,7 @@ public interface TheatreConfig extends Config } @ConfigItem( - position = 14, + position = 15, keyName = "VerzikTick", name = "Verzik P3 Tick", description = "" @@ -184,7 +196,7 @@ public interface TheatreConfig extends Config } @ConfigItem( - position = 15, + position = 16, keyName = "VerzikMelee", name = "Verzik P3 Melee Range", description = "" @@ -195,7 +207,7 @@ public interface TheatreConfig extends Config } @ConfigItem( - position = 16, + position = 17, keyName = "VerzikYellow", name = "Verzik Yellow Timing", description = "" @@ -206,7 +218,7 @@ public interface TheatreConfig extends Config } @ConfigItem( - position = 17, + position = 18, keyName = "Verzik Nylo", name = "Verzik Nylo Overlay", description = "" @@ -217,7 +229,7 @@ public interface TheatreConfig extends Config } @ConfigItem( - position = 18, + position = 19, keyName = "VerzikTankTile", name = "Verzik P3 Tile Overlay", description = "" diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/ztob/TheatreOverlay.java b/runelite-client/src/main/java/net/runelite/client/plugins/ztob/TheatreOverlay.java index b332ef1624..14a158f136 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/ztob/TheatreOverlay.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/ztob/TheatreOverlay.java @@ -168,6 +168,35 @@ public class TheatreOverlay extends Overlay { if (plugin.isRunSotetseg()) { + if (config.highlightSote()) + { + for (Projectile projectile : plugin.getSotetseg_MageProjectiles()) + { + String text = "Mage"; + int x = (int) projectile.getX(); + int y = (int) projectile.getY(); + LocalPoint projectilePoint = new LocalPoint(x, y); + Point textLocation = Perspective.getCanvasTextLocation(client, graphics, projectilePoint, text, 0); + if (textLocation != null) + { + OverlayUtil.renderTextLocation(graphics, textLocation, text, Color.CYAN); + } + } + + for (Projectile projectile : plugin.getSotetseg_RangeProjectiles()) + { + String text = "Range"; + int x = (int) projectile.getX(); + int y = (int) projectile.getY(); + LocalPoint projectilePoint = new LocalPoint(x, y); + Point textLocation = Perspective.getCanvasTextLocation(client, graphics, projectilePoint, text, 0); + if (textLocation != null) + { + OverlayUtil.renderTextLocation(graphics, textLocation, text, Color.GREEN); + } + } + } + if (config.SotetsegMaze1()) { int i = 1; diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/ztob/TheatrePlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/ztob/TheatrePlugin.java index be1a7ccb3e..f68664f676 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/ztob/TheatrePlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/ztob/TheatrePlugin.java @@ -188,6 +188,12 @@ public class TheatrePlugin extends Plugin { @Getter(AccessLevel.PACKAGE) private final Map Verzik_RangeProjectiles = new HashMap<>(); + @Getter(AccessLevel.PACKAGE) + private final List Sotetseg_MageProjectiles = new ArrayList<>(); + + @Getter(AccessLevel.PACKAGE) + private final List Sotetseg_RangeProjectiles = new ArrayList<>(); + @Getter(AccessLevel.PACKAGE) private int P3_TicksUntilAttack = -1; @@ -558,6 +564,16 @@ public class TheatrePlugin extends Plugin { Verzik_RangeProjectiles.put(projectile, p); } } + if (runSotetseg) + { + Projectile projectile = event.getProjectile(); + if (projectile.getId() == 1606) { + Sotetseg_MageProjectiles.add(projectile); + } + if (projectile.getId() == 1607) { + Sotetseg_RangeProjectiles.add(projectile); + } + } } @Subscribe @@ -731,6 +747,24 @@ public class TheatrePlugin extends Plugin { } } + if (!getSotetseg_MageProjectiles().isEmpty()) { + for (Iterator it = Sotetseg_MageProjectiles.iterator(); it.hasNext(); ) { + Projectile projectile = it.next(); + if (projectile.getRemainingCycles() < 1) { + it.remove(); + } + } + } + + if (!getSotetseg_RangeProjectiles().isEmpty()) { + for (Iterator it = Sotetseg_RangeProjectiles.iterator(); it.hasNext(); ) { + Projectile projectile = it.next(); + if (projectile.getRemainingCycles() < 1) { + it.remove(); + } + } + } + if (!sotetsegFighting) { if (!BlackTilesUnderworld.isEmpty() && !RedTilesUnderworld.isEmpty() && GridPath.isEmpty()) { int minX = 99999;