From 68d065f603e70a9a228425a933b4cc6cff24ba63 Mon Sep 17 00:00:00 2001 From: sogladev Date: Wed, 12 Aug 2026 00:33:43 +0200 Subject: [PATCH] fix(Scripts/Naxxramas): Gluth can no longer be combat stuck with an add (#27100) --- .../Northrend/Naxxramas/boss_gluth.cpp | 26 ++++++++++++------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/src/server/scripts/Northrend/Naxxramas/boss_gluth.cpp b/src/server/scripts/Northrend/Naxxramas/boss_gluth.cpp index 0aa6b05504..0675e03ee1 100644 --- a/src/server/scripts/Northrend/Naxxramas/boss_gluth.cpp +++ b/src/server/scripts/Northrend/Naxxramas/boss_gluth.cpp @@ -134,13 +134,9 @@ public: instance->StorePersistentData(PERSISTENT_DATA_IMMORTAL_FAIL, 1); } - bool SelectPlayerInRoom() + Player* SelectPlayerInRoom() const { - if (me->IsInCombat()) - return false; - - Map::PlayerList const& pList = me->GetMap()->GetPlayers(); - for (auto const& itr : pList) + for (auto const& itr : me->GetMap()->GetPlayers()) { Player* player = itr.GetSource(); if (!player || !player->IsAlive()) @@ -149,16 +145,26 @@ public: if (player->GetPositionZ() > 300.0f || me->GetExactDist(player) > 50.0f) continue; - AttackStart(player); - return true; + return player; } - return false; + return nullptr; } void UpdateAI(uint32 diff) override { - if (!UpdateVictimWithGaze() && !SelectPlayerInRoom()) + Player* player = SelectPlayerInRoom(); + + if (!player) + { + // prevents an issue where Gluth remains stuck in combat with a zombie chow + if (me->IsEngaged()) + EnterEvadeMode(EVADE_REASON_NO_HOSTILES); + return; + } + + if (!UpdateVictimWithGaze()) + AttackStart(player); events.Update(diff); if (me->HasUnitState(UNIT_STATE_CASTING))