Core/Maps: Ensure one of InstanceScript::Create or InstanceScript::Load is called on map creation

Port From (https://github.com/TrinityCore/TrinityCore/commit/8c3c07cdf4dfa8515aa756e669c2d216648870e8)
This commit is contained in:
hondacrx
2022-10-06 20:53:15 -04:00
parent 39e9e73277
commit 0fa2b60d89
+11 -6
View File
@@ -4923,22 +4923,27 @@ namespace Game.Maps
if (i_data == null)
return;
if (i_instanceLock != null)
if (i_instanceLock == null || i_instanceLock.GetInstanceId() == 0)
{
i_data.Create();
return;
}
MapDb2Entries entries = new(GetEntry(), GetMapDifficulty());
if (entries.IsInstanceIdBound() || IsRaid() || entries.MapDifficulty.IsRestoringDungeonState() || !i_owningGroupRef.IsValid())
if (!entries.IsInstanceIdBound() || !IsRaid() || !entries.MapDifficulty.IsRestoringDungeonState() || i_owningGroupRef.IsValid())
{
i_data.Create();
return;
}
InstanceLockData lockData = i_instanceLock.GetInstanceInitializationData();
i_data.SetCompletedEncountersMask(lockData.CompletedEncountersMask);
i_data.SetEntranceLocation(lockData.EntranceWorldSafeLocId);
if (!lockData.Data.IsEmpty())
{
Log.outDebug(LogFilter.Maps, "Loading instance data for `{0}` with id {1}",
Global.ObjectMgr.GetScriptName(i_script_id), i_InstanceId);
Log.outDebug(LogFilter.Maps, $"Loading instance data for `{Global.ObjectMgr.GetScriptName(i_script_id)}` with id {i_InstanceId}");
i_data.Load(lockData.Data);
}
}
}
else
i_data.Create();
}