diff options
author | Shauren <shauren.trinity@gmail.com> | 2022-10-06 18:34:42 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2022-10-06 18:34:42 +0200 |
commit | 8c3c07cdf4dfa8515aa756e669c2d216648870e8 (patch) | |
tree | bdf53e0b1112bb8faaf4d6b90d14dc686fb71a50 /src/server/game/Maps/Map.cpp | |
parent | 9ce47e6809eecc891904e272b368596fdc55e6a4 (diff) |
Core/Maps: Ensure one of InstanceScript::Create or InstanceScript::Load is called on map creation
Diffstat (limited to 'src/server/game/Maps/Map.cpp')
-rw-r--r-- | src/server/game/Maps/Map.cpp | 32 |
1 files changed, 19 insertions, 13 deletions
diff --git a/src/server/game/Maps/Map.cpp b/src/server/game/Maps/Map.cpp index 477b2e55d6d..9f8e38571db 100644 --- a/src/server/game/Maps/Map.cpp +++ b/src/server/game/Maps/Map.cpp @@ -2943,20 +2943,26 @@ void InstanceMap::CreateInstanceData() if (!i_data) return; - if (i_instanceLock) + if (!i_instanceLock || !i_instanceLock->GetInstanceId()) { - MapDb2Entries entries{ GetEntry(), GetMapDifficulty() }; - if (entries.IsInstanceIdBound() || IsRaid() || entries.MapDifficulty->IsRestoringDungeonState() || !i_owningGroupRef.isValid()) - { - InstanceLockData const* lockData = i_instanceLock->GetInstanceInitializationData(); - i_data->SetCompletedEncountersMask(lockData->CompletedEncountersMask); - i_data->SetEntranceLocation(lockData->EntranceWorldSafeLocId); - if (!lockData->Data.empty()) - { - TC_LOG_DEBUG("maps", "Loading instance data for `%s` with id %u", sObjectMgr->GetScriptName(i_script_id).c_str(), i_InstanceId); - i_data->Load(lockData->Data.c_str()); - } - } + i_data->Create(); + return; + } + + MapDb2Entries entries{ GetEntry(), GetMapDifficulty() }; + if (!entries.IsInstanceIdBound() && !IsRaid() && !entries.MapDifficulty->IsRestoringDungeonState() && i_owningGroupRef.isValid()) + { + i_data->Create(); + return; + } + + InstanceLockData const* lockData = i_instanceLock->GetInstanceInitializationData(); + i_data->SetCompletedEncountersMask(lockData->CompletedEncountersMask); + i_data->SetEntranceLocation(lockData->EntranceWorldSafeLocId); + if (!lockData->Data.empty()) + { + TC_LOG_DEBUG("maps", "Loading instance data for `%s` with id %u", sObjectMgr->GetScriptName(i_script_id).c_str(), i_InstanceId); + i_data->Load(lockData->Data.c_str()); } else i_data->Create(); |