diff --git a/runelite-api/src/main/java/net/runelite/api/events/NpcCompositionChanged.java b/runelite-api/src/main/java/net/runelite/api/events/NpcDefinitionChanged.java similarity index 97% rename from runelite-api/src/main/java/net/runelite/api/events/NpcCompositionChanged.java rename to runelite-api/src/main/java/net/runelite/api/events/NpcDefinitionChanged.java index 29cdd890b6..7d9569f5bd 100644 --- a/runelite-api/src/main/java/net/runelite/api/events/NpcCompositionChanged.java +++ b/runelite-api/src/main/java/net/runelite/api/events/NpcDefinitionChanged.java @@ -31,7 +31,7 @@ import net.runelite.api.NPC; * Fires after the composition of an {@link NPC} changes. */ @Value -public class NpcCompositionChanged +public class NpcDefinitionChanged { /** * The NPC of which the composition changed. diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/npchighlight/NpcIndicatorsPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/npchighlight/NpcIndicatorsPlugin.java index 07b877e1a8..63ec966f6d 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/npchighlight/NpcIndicatorsPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/npchighlight/NpcIndicatorsPlugin.java @@ -59,7 +59,7 @@ import net.runelite.api.events.GameTick; import net.runelite.api.events.GraphicsObjectCreated; import net.runelite.api.events.MenuEntryAdded; import net.runelite.api.events.MenuOptionClicked; -import net.runelite.api.events.NpcCompositionChanged; +import net.runelite.api.events.NpcDefinitionChanged; import net.runelite.api.events.NpcDespawned; import net.runelite.api.events.NpcSpawned; import net.runelite.client.callback.ClientThread; @@ -333,7 +333,7 @@ public class NpcIndicatorsPlugin extends Plugin } @Subscribe - public void onNpcCompositionChanged(NpcCompositionChanged event) + public void onNpcDefinitionChanged(NpcDefinitionChanged event) { NPC npc = event.getNpc(); highlightNpcIfMatch(npc); 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 d54b21f7dd..b805edd030 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 @@ -67,7 +67,7 @@ import net.runelite.api.events.ExperienceChanged; import net.runelite.api.events.GameStateChanged; import net.runelite.api.events.GameTick; import net.runelite.api.events.InteractingChanged; -import net.runelite.api.events.NpcCompositionChanged; +import net.runelite.api.events.NpcDefinitionChanged; import net.runelite.api.events.NpcDespawned; import net.runelite.api.events.NpcSpawned; import net.runelite.api.events.VarbitChanged; @@ -351,7 +351,7 @@ public class SlayerPlugin extends Plugin } @Subscribe - public void onNpcCompositionChanged(NpcCompositionChanged event) + public void onNpcDefinitionChanged(NpcDefinitionChanged event) { NPC npc = event.getNpc(); diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/theatre/TheatrePlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/theatre/TheatrePlugin.java index 5f975d675e..2a08416e84 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/theatre/TheatrePlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/theatre/TheatrePlugin.java @@ -23,6 +23,7 @@ import net.runelite.api.events.ChatMessage; import net.runelite.api.events.ConfigChanged; import net.runelite.api.events.GameTick; import net.runelite.api.events.GroundObjectSpawned; +import net.runelite.api.events.NpcDefinitionChanged; import net.runelite.api.events.NpcDespawned; import net.runelite.api.events.NpcSpawned; import net.runelite.api.events.ProjectileMoved; @@ -154,6 +155,15 @@ public class TheatrePlugin extends Plugin } } + @Subscribe + public void onNpcDefinitionChanged(NpcDefinitionChanged event) + { + if (maidenHandler != null) + { + maidenHandler.onNpcDefinitionChanged(event); + } + } + @Subscribe public void onNpcSpawned(NpcSpawned event) { diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/theatre/rooms/MaidenHandler.java b/runelite-client/src/main/java/net/runelite/client/plugins/theatre/rooms/MaidenHandler.java index 4f109e80c6..68115623fa 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/theatre/rooms/MaidenHandler.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/theatre/rooms/MaidenHandler.java @@ -14,6 +14,7 @@ import net.runelite.api.GraphicsObject; import net.runelite.api.NPC; import net.runelite.api.coords.WorldPoint; import net.runelite.api.events.ChatMessage; +import net.runelite.api.events.NpcDefinitionChanged; import net.runelite.api.events.NpcDespawned; import net.runelite.api.events.NpcSpawned; import net.runelite.api.events.SpotAnimationChanged; @@ -59,7 +60,7 @@ public class MaidenHandler extends RoomHandler private List bloodSpawnLocation = new ArrayList<>(); private List bloodSpawnTarget = new ArrayList<>(); private NPC maiden; - private String nyloCall = "n1"; + private String nyloCall; private Set nylos = new HashSet<>(); private List healers = new ArrayList<>(); private int healerCount = 0; @@ -101,6 +102,7 @@ public class MaidenHandler extends RoomHandler this.bloodSpawnLocation.clear(); this.bloodSpawnTarget.clear(); this.healers.clear(); + this.nylos.clear(); this.healerCount = 0; this.startTime = -1; this.wave = 1; @@ -117,6 +119,11 @@ public class MaidenHandler extends RoomHandler final String location = nylo.getSpawnLocation().getName(); + if (nyloCall == null || nyloCall.equals("")) + { + nyloCall = "n1"; + } + if (location.equals(nyloCall)) { Color color = Color.WHITE; @@ -217,11 +224,8 @@ public class MaidenHandler extends RoomHandler } if (!N1.contains(wp) && !N2.contains(wp) && !S1.contains(wp) && !S2.contains(wp)) { - log.debug("------------------------"); - log.debug("No World Points Matched"); - log.debug("Dumping Location"); - log.debug("Instance Loc: " + wp); - log.debug("------------------------"); + log.info("No World Points Matched"); + log.info("Instance Loc: " + wp); } break; case "Blood spawn": @@ -233,6 +237,19 @@ public class MaidenHandler extends RoomHandler } } + public void onNpcDefinitionChanged(NpcDefinitionChanged event) + { + NPC npc = event.getNpc(); + + if (npc.getName() != null && npc.getName().equals("Nylocas Matomenos")) + { + if (npc.getId() == -1) + { + nylos.removeIf(c -> c.getNpc() == npc); + } + } + } + public void onChatMessage(ChatMessage event) { if (event.getSender() != null && !event.getSender().equals(client.getLocalPlayer().getName())) @@ -249,6 +266,7 @@ public class MaidenHandler extends RoomHandler case "s1": case "s2": nyloCall = msg; + log.debug("Nylo Call Assigned: " + msg); break; } } @@ -280,14 +298,6 @@ public class MaidenHandler extends RoomHandler return; } - if (!nylos.isEmpty()) - { - for (Nylos nylo : nylos) - { - nylos.removeIf(c -> c.getNpc().getId() == -1); - } - } - bloodThrows.clear(); for (GraphicsObject o : client.getGraphicsObjects()) diff --git a/runelite-mixins/src/main/java/net/runelite/mixins/RSNPCMixin.java b/runelite-mixins/src/main/java/net/runelite/mixins/RSNPCMixin.java index 327886a637..e33afa700b 100644 --- a/runelite-mixins/src/main/java/net/runelite/mixins/RSNPCMixin.java +++ b/runelite-mixins/src/main/java/net/runelite/mixins/RSNPCMixin.java @@ -29,7 +29,7 @@ import net.runelite.api.AnimationID; import net.runelite.api.NPCDefinition; import net.runelite.api.Perspective; import net.runelite.api.coords.LocalPoint; -import net.runelite.api.events.NpcCompositionChanged; +import net.runelite.api.events.NpcDefinitionChanged; import net.runelite.api.events.NpcDespawned; import net.runelite.api.mixins.Copy; import net.runelite.api.mixins.FieldHook; @@ -114,7 +114,7 @@ public abstract class RSNPCMixin implements RSNPC } else if (this.getId() != -1) { - client.getCallbacks().post(new NpcCompositionChanged(this)); + client.getCallbacks().post(new NpcDefinitionChanged(this)); } }