diff options
Diffstat (limited to 'src/server/game/Instances/InstanceScript.cpp')
-rw-r--r-- | src/server/game/Instances/InstanceScript.cpp | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/src/server/game/Instances/InstanceScript.cpp b/src/server/game/Instances/InstanceScript.cpp index fd3d16a2772..2494c4852af 100644 --- a/src/server/game/Instances/InstanceScript.cpp +++ b/src/server/game/Instances/InstanceScript.cpp @@ -477,6 +477,12 @@ void InstanceScript::Load(char const* data) InstanceScriptDataReader reader(*this); if (reader.Load(data) == InstanceScriptDataReader::Result::Ok) { + // in loot-based lockouts instance can be loaded with later boss marked as killed without preceding bosses + // but we still need to have them alive + for (uint32 i = 0; i < bosses.size(); ++i) + if (bosses[i].state == DONE && !CheckRequiredBosses(i)) + bosses[i].state = NOT_STARTED; + UpdateSpawnGroups(); AfterDataLoad(); } @@ -740,6 +746,15 @@ bool InstanceScript::IsEncounterCompleted(uint32 dungeonEncounterId) const return false; } +bool InstanceScript::IsEncounterCompletedInMaskByBossId(uint32 completedEncountersMask, uint32 bossId) const +{ + if (DungeonEncounterEntry const* dungeonEncounter = GetBossDungeonEncounter(bossId)) + if (completedEncountersMask & (1 << dungeonEncounter->Bit)) + return bosses[bossId].state == DONE; + + return false; +} + void InstanceScript::SetEntranceLocation(uint32 worldSafeLocationId) { _entranceId = worldSafeLocationId; |