fix(Scripts/EoE): fix Vortex only hitting 8 players (#25119)

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Andrew
2026-03-20 18:27:00 -03:00
committed by GitHub
parent 0464e90853
commit 9268ca9784
2 changed files with 16 additions and 28 deletions

View File

@@ -1232,18 +1232,15 @@ class spell_malygos_vortex_visual : public AuraScript
if (!caster) if (!caster)
return; 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()) caster->GetMap()->DoForAllPlayers([&](Player* player)
continue;
if (InstanceScript* instance =caster->GetInstanceScript())
{ {
if (Creature* trigger =ObjectAccessor::GetCreature(*caster, instance->GetGuidData(DATA_VORTEX_TRIGGER))) if (player->IsAlive() && !player->IsGameMaster())
trigger->CastSpell(player, SPELL_VORTEX_TELEPORT, true); trigger->CastSpell(player, SPELL_VORTEX_TELEPORT, true);
} });
} }
} }

View File

@@ -72,31 +72,22 @@ struct instance_eye_of_eternity : public InstanceScript
void VortexHandling() void VortexHandling()
{ {
Creature* malygos = GetCreature(DATA_MALYGOS); if (_vortexTriggers.empty())
if (!malygos)
return; return;
for (ObjectGuid const& guid : _vortexTriggers) size_t triggerIndex = 0;
size_t triggerCount = _vortexTriggers.size();
instance->DoForAllPlayers([&](Player* player)
{ {
uint8 counter = 0; if (!player->IsAlive() || player->IsGameMaster())
if (Creature* trigger = instance->GetCreature(guid)) return;
{
for (auto* ref : malygos->GetThreatMgr().GetUnsortedThreatList())
{
if (counter >= 5)
break;
if (Player* player = ref->GetVictim()->ToPlayer()) if (Creature* trigger = instance->GetCreature(_vortexTriggers[triggerIndex]))
{ player->CastSpell(trigger, SPELL_VORTEX_4, true);
if (player->IsGameMaster() || player->HasAura(SPELL_VORTEX_4))
continue;
player->CastSpell(trigger, SPELL_VORTEX_4, true); triggerIndex = (triggerIndex + 1) % triggerCount;
counter++; });
}
}
}
}
} }
void OnPlayerEnter(Player* player) override void OnPlayerEnter(Player* player) override