fix(Core/Instances): snapshot minions before state updates (#26519)
This commit is contained in:
parent
e7823750f9
commit
a43f01c351
1 changed files with 7 additions and 4 deletions
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue