From cda6e619d049703dbbfbf8608bf9df86a277c34b Mon Sep 17 00:00:00 2001 From: Gultask <100873791+Gultask@users.noreply.github.com> Date: Fri, 6 Feb 2026 18:07:27 -0300 Subject: [PATCH] fix(Core/Threat): Melee creatures should only target units they can attack when rooted (#24526) --- src/server/game/Combat/ThreatMgr.cpp | 3 +++ .../BlackrockMountain/MoltenCore/boss_ragnaros.cpp | 1 + .../Outland/Auchindoun/ShadowLabyrinth/boss_murmur.cpp | 5 ----- 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/src/server/game/Combat/ThreatMgr.cpp b/src/server/game/Combat/ThreatMgr.cpp index 59da5a32a..432c0b396 100644 --- a/src/server/game/Combat/ThreatMgr.cpp +++ b/src/server/game/Combat/ThreatMgr.cpp @@ -468,6 +468,9 @@ bool ThreatContainer::IsPreferredTarget(Creature* attacker, Unit* target) const if (target->HasAuraTypeWithCaster(SPELL_AURA_IGNORED, attacker->GetGUID())) return false; + if (attacker->HasUnitState(UNIT_STATE_ROOT) && attacker->IsCombatMovementAllowed() && !attacker->IsWithinMeleeRange(target)) + return false; + return true; } diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/boss_ragnaros.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/boss_ragnaros.cpp index b5d3ece2d..a0d2f2b50 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/boss_ragnaros.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/boss_ragnaros.cpp @@ -254,6 +254,7 @@ public: bool CanAIAttack(Unit const* victim) const override { + // Used for Magma Blast handling to force EnterEvadeMode if there are no melee targets return me->IsWithinMeleeRange(victim); } diff --git a/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/boss_murmur.cpp b/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/boss_murmur.cpp index 649b5e579..60feacbce 100644 --- a/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/boss_murmur.cpp +++ b/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/boss_murmur.cpp @@ -85,11 +85,6 @@ struct boss_murmur : public BossAI }, 3600ms, 10900ms, GROUP_OOC_CAST); } - bool CanAIAttack(Unit const* victim) const override - { - return me->IsWithinMeleeRange(victim); - } - void EnterEvadeMode(EvadeReason why) override { if (me->GetThreatMgr().GetThreatList().empty())