From 8c3c07cdf4dfa8515aa756e669c2d216648870e8 Mon Sep 17 00:00:00 2001 From: Shauren Date: Thu, 6 Oct 2022 18:34:42 +0200 Subject: Core/Maps: Ensure one of InstanceScript::Create or InstanceScript::Load is called on map creation --- src/server/game/Maps/Map.cpp | 32 +++++++++++++++++++------------- 1 file changed, 19 insertions(+), 13 deletions(-) (limited to 'src/server') 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(); -- cgit v1.2.3