Core/Instances: Save instance entrance based on completed encounters

Port From (https://github.com/TrinityCore/TrinityCore/commit/4cbaaa343543e0fde5d90b87f762804997f1dbac)
This commit is contained in:
hondacrx
2022-10-04 14:53:22 -04:00
parent 7a65cf1434
commit 2b09e4227b
3 changed files with 34 additions and 6 deletions
@@ -267,6 +267,9 @@ namespace Game.Maps
if (!entries.MapDifficulty.IsUsingEncounterLocks())
instanceLock.GetData().CompletedEncountersMask |= updateEvent.InstanceCompletedEncountersMask;
if (updateEvent.EntranceWorldSafeLocId.HasValue)
instanceLock.GetData().EntranceWorldSafeLocId = updateEvent.EntranceWorldSafeLocId.Value;
if (instanceLock.IsExpired())
{
Cypher.Assert(instanceLock.IsExtended(), "Instance lock must have been extended to create instance map from it");
@@ -299,6 +302,9 @@ namespace Game.Maps
Log.outDebug(LogFilter.Instance, $"Instance {updateEvent.InstanceId} gains completed encounter [{updateEvent.CompletedEncounter.Id}-{updateEvent.CompletedEncounter.Name[Global.WorldMgr.GetDefaultDbcLocale()]}]");
}
if (updateEvent.EntranceWorldSafeLocId.HasValue)
sharedData.EntranceWorldSafeLocId = updateEvent.EntranceWorldSafeLocId.Value;
trans.Append($"DELETE FROM instance2 WHERE instanceId={sharedData.InstanceId}");
string escapedData = sharedData.Data;
CharacterDatabase.EscapeString(ref escapedData);
@@ -505,13 +511,15 @@ namespace Game.Maps
public string NewData;
public uint InstanceCompletedEncountersMask;
public DungeonEncounterRecord CompletedEncounter;
public uint? EntranceWorldSafeLocId;
public InstanceLockUpdateEvent(uint instanceId, string newData, uint instanceCompletedEncountersMask, DungeonEncounterRecord completedEncounter)
public InstanceLockUpdateEvent(uint instanceId, string newData, uint instanceCompletedEncountersMask, DungeonEncounterRecord completedEncounter, uint? entranceWorldSafeLocId)
{
InstanceId = instanceId;
NewData = newData;
InstanceCompletedEncountersMask = instanceCompletedEncountersMask;
CompletedEncounter = completedEncounter;
EntranceWorldSafeLocId = entranceWorldSafeLocId;
}
}
}