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
+19 -14
View File
@@ -4923,21 +4923,26 @@ namespace Game.Maps
if (i_data == null) if (i_data == null)
return; return;
if (i_instanceLock != null) if (i_instanceLock == null || i_instanceLock.GetInstanceId() == 0)
{ {
MapDb2Entries entries = new(GetEntry(), GetMapDifficulty()); i_data.Create();
if (entries.IsInstanceIdBound() || IsRaid() || entries.MapDifficulty.IsRestoringDungeonState() || !i_owningGroupRef.IsValid()) return;
{ }
InstanceLockData lockData = i_instanceLock.GetInstanceInitializationData();
i_data.SetCompletedEncountersMask(lockData.CompletedEncountersMask); MapDb2Entries entries = new(GetEntry(), GetMapDifficulty());
i_data.SetEntranceLocation(lockData.EntranceWorldSafeLocId); if (!entries.IsInstanceIdBound() || !IsRaid() || !entries.MapDifficulty.IsRestoringDungeonState() || i_owningGroupRef.IsValid())
if (!lockData.Data.IsEmpty()) {
{ i_data.Create();
Log.outDebug(LogFilter.Maps, "Loading instance data for `{0}` with id {1}", return;
Global.ObjectMgr.GetScriptName(i_script_id), i_InstanceId); }
i_data.Load(lockData.Data);
} 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 `{Global.ObjectMgr.GetScriptName(i_script_id)}` with id {i_InstanceId}");
i_data.Load(lockData.Data);
} }
else else
i_data.Create(); i_data.Create();