From 226591a02e3f9c4c18007776a3b31d20906ba7a3 Mon Sep 17 00:00:00 2001 From: Andrew <47818697+Nyeriah@users.noreply.github.com> Date: Sat, 10 Jan 2026 10:36:35 -0300 Subject: [PATCH] fix(Scripts/AN): Ensure only the watchers minions start the event (#24371) --- .../AzjolNerub/instance_azjol_nerub.cpp | 47 +++++++++++++------ 1 file changed, 33 insertions(+), 14 deletions(-) diff --git a/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/instance_azjol_nerub.cpp b/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/instance_azjol_nerub.cpp index 67d975040..6e449d084 100644 --- a/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/instance_azjol_nerub.cpp +++ b/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/instance_azjol_nerub.cpp @@ -118,22 +118,41 @@ public: void OnUnitDeath(Unit* unit) override { - if (unit->EntryEquals(NPC_WATCHER_GASHRA, NPC_WATCHER_NARJIL, NPC_WATCHER_SILTHIK, NPC_ANUBAR_SHADOWCASTER, NPC_ANUBAR_SKIRMISHER, NPC_ANUBAR_WARRIOR)) + if (!unit->EntryEquals(NPC_WATCHER_GASHRA, NPC_WATCHER_NARJIL, NPC_WATCHER_SILTHIK, NPC_ANUBAR_SHADOWCASTER, NPC_ANUBAR_SKIRMISHER, NPC_ANUBAR_WARRIOR)) + return; + + Creature* creature = unit->ToCreature(); + if (!creature) + return; + + // For trash mobs, ensure their leader is a Watcher + if (unit->EntryEquals(NPC_ANUBAR_SHADOWCASTER, NPC_ANUBAR_SKIRMISHER, NPC_ANUBAR_WARRIOR)) { - if (Creature* creature = unit->ToCreature()) - { - ObjectGuid creatureGuid = creature->GetGUID(); - scheduler.CancelAll(); - scheduler.Schedule(1s, [this, creatureGuid](TaskContext /*context*/) - { - if (Creature* creature = instance->GetCreature(creatureGuid)) - if (CreatureGroup* formation = creature->GetFormation()) - if (!formation->IsAnyMemberAlive()) - if (Creature* krikthir = GetCreature(DATA_KRIKTHIR)) - krikthir->AI()->DoAction(ACTION_MINION_DIED); - }); - } + CreatureGroup* formation = creature->GetFormation(); + if (!formation) + return; + + Creature* leader = formation->GetLeader(); + if (!leader || !leader->EntryEquals(NPC_WATCHER_GASHRA, NPC_WATCHER_NARJIL, NPC_WATCHER_SILTHIK)) + return; } + + ObjectGuid creatureGuid = creature->GetGUID(); + + scheduler.CancelAll(); + scheduler.Schedule(1s, [this, creatureGuid](TaskContext /*context*/) + { + Creature* creature = instance->GetCreature(creatureGuid); + if (!creature) + return; + + CreatureGroup* formation = creature->GetFormation(); + if (!formation || formation->IsAnyMemberAlive()) + return; + + if (Creature* krikthir = GetCreature(DATA_KRIKTHIR)) + krikthir->AI()->DoAction(ACTION_MINION_DIED); + }); } };