fix(Core/Instances): snapshot minions before state updates (#26519)

This commit is contained in:
Yehonal
2026-07-14 23:22:27 +02:00
committed by GitHub
parent e7823750f9
commit a43f01c351

View File

@@ -398,6 +398,8 @@ bool InstanceScript::SetBossState(uint32 id, EncounterState state)
if (id < bosses.size())
{
BossInfo* bossInfo = &bosses[id];
MinionSet minions = bossInfo->minion;
sScriptMgr->OnBeforeSetBossState(id, state, bossInfo->state, instance);
if (bossInfo->state == TO_BE_DECIDED) // loading
{
@@ -410,8 +412,8 @@ bool InstanceScript::SetBossState(uint32 id, EncounterState state)
return false;
if (state == DONE)
for (MinionSet::iterator i = bossInfo->minion.begin(); i != bossInfo->minion.end(); ++i)
if ((*i)->isWorldBoss() && (*i)->IsAlive())
for (Creature* minion : minions)
if (minion && minion->isWorldBoss() && minion->IsAlive())
return false;
bossInfo->state = state;
@@ -422,8 +424,9 @@ bool InstanceScript::SetBossState(uint32 id, EncounterState state)
for (DoorSet::iterator i = bossInfo->door[type].begin(); i != bossInfo->door[type].end(); ++i)
UpdateDoorState(*i);
for (MinionSet::iterator i = bossInfo->minion.begin(); i != bossInfo->minion.end(); ++i)
UpdateMinionState(*i, state);
for (Creature* minion : minions)
if (minion)
UpdateMinionState(minion, state);
return true;
}