diff options
Diffstat (limited to 'src')
-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(); |