From 65f7d0f6b1f8c6180900bd3dc235391a1685282e Mon Sep 17 00:00:00 2001 From: Ganom Date: Mon, 1 Jul 2019 16:33:35 -0400 Subject: [PATCH] Maiden Handler now utilizes npc definition changed for nylos. --- .../client/plugins/theatre/TheatrePlugin.java | 10 ++++++ .../plugins/theatre/rooms/MaidenHandler.java | 31 +++++++++++++------ 2 files changed, 32 insertions(+), 9 deletions(-) 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..628d6d8a71 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; @@ -233,6 +240,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 +269,7 @@ public class MaidenHandler extends RoomHandler case "s1": case "s2": nyloCall = msg; + log.debug("Nylo Call Assigned: " + msg); break; } } @@ -280,14 +301,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())