From 9268ca9784dc229f0dcd63ea2e21dfd867b5f000 Mon Sep 17 00:00:00 2001 From: Andrew <47818697+Nyeriah@users.noreply.github.com> Date: Fri, 20 Mar 2026 18:27:00 -0300 Subject: [PATCH] fix(Scripts/EoE): fix Vortex only hitting 8 players (#25119) Co-authored-by: Claude Opus 4.6 --- .../Nexus/EyeOfEternity/boss_malygos.cpp | 13 +++----- .../instance_eye_of_eternity.cpp | 31 +++++++------------ 2 files changed, 16 insertions(+), 28 deletions(-) diff --git a/src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp b/src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp index 0829623ba..df57c3368 100644 --- a/src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp +++ b/src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp @@ -1232,18 +1232,15 @@ class spell_malygos_vortex_visual : public AuraScript if (!caster) return; - for (auto const* ref : caster->GetThreatMgr().GetUnsortedThreatList()) + if (InstanceScript* instance = caster->GetInstanceScript()) { - if (Player* player = ref->GetVictim()->ToPlayer()) + if (Creature* trigger = ObjectAccessor::GetCreature(*caster, instance->GetGuidData(DATA_VORTEX_TRIGGER))) { - if (player->IsGameMaster()) - continue; - - if (InstanceScript* instance =caster->GetInstanceScript()) + caster->GetMap()->DoForAllPlayers([&](Player* player) { - if (Creature* trigger =ObjectAccessor::GetCreature(*caster, instance->GetGuidData(DATA_VORTEX_TRIGGER))) + if (player->IsAlive() && !player->IsGameMaster()) trigger->CastSpell(player, SPELL_VORTEX_TELEPORT, true); - } + }); } } diff --git a/src/server/scripts/Northrend/Nexus/EyeOfEternity/instance_eye_of_eternity.cpp b/src/server/scripts/Northrend/Nexus/EyeOfEternity/instance_eye_of_eternity.cpp index 4cec1ceb0..17de6107e 100644 --- a/src/server/scripts/Northrend/Nexus/EyeOfEternity/instance_eye_of_eternity.cpp +++ b/src/server/scripts/Northrend/Nexus/EyeOfEternity/instance_eye_of_eternity.cpp @@ -72,31 +72,22 @@ struct instance_eye_of_eternity : public InstanceScript void VortexHandling() { - Creature* malygos = GetCreature(DATA_MALYGOS); - if (!malygos) + if (_vortexTriggers.empty()) return; - for (ObjectGuid const& guid : _vortexTriggers) + size_t triggerIndex = 0; + size_t triggerCount = _vortexTriggers.size(); + + instance->DoForAllPlayers([&](Player* player) { - uint8 counter = 0; - if (Creature* trigger = instance->GetCreature(guid)) - { - for (auto* ref : malygos->GetThreatMgr().GetUnsortedThreatList()) - { - if (counter >= 5) - break; + if (!player->IsAlive() || player->IsGameMaster()) + return; - if (Player* player = ref->GetVictim()->ToPlayer()) - { - if (player->IsGameMaster() || player->HasAura(SPELL_VORTEX_4)) - continue; + if (Creature* trigger = instance->GetCreature(_vortexTriggers[triggerIndex])) + player->CastSpell(trigger, SPELL_VORTEX_4, true); - player->CastSpell(trigger, SPELL_VORTEX_4, true); - counter++; - } - } - } - } + triggerIndex = (triggerIndex + 1) % triggerCount; + }); } void OnPlayerEnter(Player* player) override