aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Maps/Map.cpp32
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();