From 9b924522d0549dd67b10e2cbdfc20297dd21e182 Mon Sep 17 00:00:00 2001 From: Shauren Date: Thu, 2 Jan 2020 14:19:35 +0100 Subject: Core/Instances: Delete InstanceSaveMgr and replace most of its uses with new InstanceLockMgr --- src/server/game/Instances/InstanceScript.cpp | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) (limited to 'src/server/game/Instances/InstanceScript.cpp') diff --git a/src/server/game/Instances/InstanceScript.cpp b/src/server/game/Instances/InstanceScript.cpp index 358ce8d60c0..159eb82b89e 100644 --- a/src/server/game/Instances/InstanceScript.cpp +++ b/src/server/game/Instances/InstanceScript.cpp @@ -451,7 +451,7 @@ bool InstanceScript::SetBossState(uint32 id, EncounterState state) bossInfo->state = state; SaveToDB(); - if (state == DONE) + if (state == DONE && dungeonEncounter) instance->UpdateInstanceLock(dungeonEncounter, { id, state }); } @@ -779,11 +779,20 @@ bool InstanceScript::CheckAchievementCriteriaMeet(uint32 criteria_id, Player con return false; } +bool InstanceScript::IsEncounterCompleted(uint32 dungeonEncounterId) const +{ + for (std::size_t i = 0; i < bosses.size(); ++i) + for (std::size_t j = 0; j < bosses[i].DungeonEncounters.size(); ++j) + if (bosses[i].DungeonEncounters[j] && bosses[i].DungeonEncounters[j]->ID == dungeonEncounterId) + return bosses[i].state == DONE; + + return false; +} + void InstanceScript::SetEntranceLocation(uint32 worldSafeLocationId) { _entranceId = worldSafeLocationId; - if (_temporaryEntranceId) - _temporaryEntranceId = 0; + _temporaryEntranceId = 0; } void InstanceScript::SendEncounterUnit(uint32 type, Unit* unit /*= nullptr*/, uint8 priority) -- cgit v1.2.3