diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Instances/InstanceScript.cpp | 20 | ||||
-rw-r--r-- | src/server/game/Instances/InstanceScript.h | 7 | ||||
-rw-r--r-- | src/server/game/Maps/Map.cpp | 1 |
3 files changed, 9 insertions, 19 deletions
diff --git a/src/server/game/Instances/InstanceScript.cpp b/src/server/game/Instances/InstanceScript.cpp index cea02363830..080bb7aa86f 100644 --- a/src/server/game/Instances/InstanceScript.cpp +++ b/src/server/game/Instances/InstanceScript.cpp @@ -64,7 +64,7 @@ DungeonEncounterEntry const* BossInfo::GetDungeonEncounterForDifficulty(Difficul return itr != DungeonEncounters.end() ? *itr : nullptr; } -InstanceScript::InstanceScript(InstanceMap* map) : instance(map), completedEncounters(0), _instanceSpawnGroups(sObjectMgr->GetInstanceSpawnGroupsForMap(map->GetId())), +InstanceScript::InstanceScript(InstanceMap* map) : instance(map), _instanceSpawnGroups(sObjectMgr->GetInstanceSpawnGroupsForMap(map->GetId())), _entranceId(0), _temporaryEntranceId(0), _combatResurrectionTimer(0), _combatResurrectionCharges(0), _combatResurrectionTimerStarted(false) { #ifdef TRINITY_API_USE_DYNAMIC_LINKING @@ -433,6 +433,8 @@ bool InstanceScript::SetBossState(uint32 id, EncounterState state) { DoUpdateCriteria(CriteriaType::DefeatDungeonEncounter, dungeonEncounter->ID); SendBossKillCredit(dungeonEncounter->ID); + if (dungeonEncounter->CompleteWorldStateID) + DoUpdateWorldState(dungeonEncounter->CompleteWorldStateID, 1); } instance->DoOnPlayers([](Player* player) @@ -494,9 +496,15 @@ void InstanceScript::Load(char const* data) // 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; + if (DungeonEncounterEntry const* dungeonEncounter = bosses[i].GetDungeonEncounterForDifficulty(instance->GetDifficultyID())) + if (dungeonEncounter->CompleteWorldStateID) + DoUpdateWorldState(dungeonEncounter->CompleteWorldStateID, bosses[i].state == DONE ? 1 : 0); + } + UpdateSpawnGroups(); AfterDataLoad(); } @@ -905,16 +913,6 @@ void InstanceScript::UpdateEncounterStateForSpellCast(uint32 spellId, Unit* sour UpdateEncounterState(ENCOUNTER_CREDIT_CAST_SPELL, spellId, source); } -void InstanceScript::SetCompletedEncountersMask(uint32 newMask) -{ - completedEncounters = newMask; - - if (DungeonEncounterList const* encounters = sObjectMgr->GetDungeonEncounterList(instance->GetId(), instance->GetDifficultyID())) - for (DungeonEncounter const& encounter : *encounters) - if (completedEncounters & (1 << encounter.dbcEntry->Bit) && encounter.dbcEntry->CompleteWorldStateID) - DoUpdateWorldState(encounter.dbcEntry->CompleteWorldStateID, 1); -} - void InstanceScript::UpdatePhasing() { instance->DoOnPlayers([](Player const* player) diff --git a/src/server/game/Instances/InstanceScript.h b/src/server/game/Instances/InstanceScript.h index cff0af222fc..414f53b04d9 100644 --- a/src/server/game/Instances/InstanceScript.h +++ b/src/server/game/Instances/InstanceScript.h @@ -288,12 +288,6 @@ class TC_GAME_API InstanceScript : public ZoneScript void UpdateEncounterStateForKilledCreature(uint32 creatureId, Unit* source); void UpdateEncounterStateForSpellCast(uint32 spellId, Unit* source); - // Used only during loading - void SetCompletedEncountersMask(uint32 newMask); - - // Returns completed encounters mask for packets - uint32 GetCompletedEncounterMask() const { return completedEncounters; } - bool IsEncounterCompleted(uint32 dungeonEncounterId) const; bool IsEncounterCompletedInMaskByBossId(uint32 completedEncountersMask, uint32 bossId) const; @@ -381,7 +375,6 @@ class TC_GAME_API InstanceScript : public ZoneScript ObjectInfoMap _creatureInfo; ObjectInfoMap _gameObjectInfo; ObjectGuidMap _objectGuids; - uint32 completedEncounters; // DEPRECATED, REMOVE std::vector<InstanceSpawnGroupInfo> const* const _instanceSpawnGroups; std::unordered_set<uint32> _activatedAreaTriggers; uint32 _entranceId; diff --git a/src/server/game/Maps/Map.cpp b/src/server/game/Maps/Map.cpp index fd426253cc6..14ee54b2c38 100644 --- a/src/server/game/Maps/Map.cpp +++ b/src/server/game/Maps/Map.cpp @@ -2965,7 +2965,6 @@ void InstanceMap::CreateInstanceData() } InstanceLockData const* lockData = i_instanceLock->GetInstanceInitializationData(); - i_data->SetCompletedEncountersMask(lockData->CompletedEncountersMask); i_data->SetEntranceLocation(lockData->EntranceWorldSafeLocId); if (!lockData->Data.empty()) { |