aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Instances/InstanceScript.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/game/Instances/InstanceScript.cpp')
-rw-r--r--src/server/game/Instances/InstanceScript.cpp15
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;