diff options
author | Shauren <shauren.trinity@gmail.com> | 2020-01-02 14:19:35 +0100 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2022-10-04 00:19:38 +0200 |
commit | 9b924522d0549dd67b10e2cbdfc20297dd21e182 (patch) | |
tree | f0fcdf96902b7c497c1bc65db83621a8dfadf43a /src/server/game/Instances/InstanceScript.cpp | |
parent | a131542855d23022714a97640be1c8d68a741c31 (diff) |
Core/Instances: Delete InstanceSaveMgr and replace most of its uses with new InstanceLockMgr
Diffstat (limited to 'src/server/game/Instances/InstanceScript.cpp')
-rw-r--r-- | src/server/game/Instances/InstanceScript.cpp | 15 |
1 files changed, 12 insertions, 3 deletions
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) |