mirror of
https://github.com/liyunfan1223/azerothcore-wotlk.git
synced 2026-08-04 13:57:52 +00:00
fix(Core/Instances): snapshot minions before state updates (#26519)
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user