aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2022-10-06 18:34:42 +0200
committerShauren <shauren.trinity@gmail.com>2022-10-06 18:34:42 +0200
commit8c3c07cdf4dfa8515aa756e669c2d216648870e8 (patch)
treebdf53e0b1112bb8faaf4d6b90d14dc686fb71a50
parent9ce47e6809eecc891904e272b368596fdc55e6a4 (diff)
Core/Maps: Ensure one of InstanceScript::Create or InstanceScript::Load is called on map creation
-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();