From 25f08ed6c9cdb2e034a86deb37344d6d5f07504f Mon Sep 17 00:00:00 2001 From: hondacrx Date: Wed, 4 Jan 2023 16:51:05 -0500 Subject: [PATCH] Core/Instances: Fixed assertion failure with instance id based lockouts Port From (https://github.com/TrinityCore/TrinityCore/commit/7dc25889c6f8785a8d8a98c990e2421ca9b2a0c7) --- Source/Game/Maps/Instances/InstanceLockManager.cs | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/Source/Game/Maps/Instances/InstanceLockManager.cs b/Source/Game/Maps/Instances/InstanceLockManager.cs index e882e717d..f4c76f151 100644 --- a/Source/Game/Maps/Instances/InstanceLockManager.cs +++ b/Source/Game/Maps/Instances/InstanceLockManager.cs @@ -310,8 +310,9 @@ namespace Game.Maps { var sharedData = _instanceLockDataById.LookupByKey(updateEvent.InstanceId); Cypher.Assert(sharedData != null); - Cypher.Assert(sharedData.InstanceId == updateEvent.InstanceId); + Cypher.Assert(sharedData.InstanceId == 0 || sharedData.InstanceId == updateEvent.InstanceId); sharedData.Data = updateEvent.NewData; + sharedData.InstanceId = updateEvent.InstanceId; if (updateEvent.CompletedEncounter != null) { sharedData.CompletedEncountersMask |= 1u << updateEvent.CompletedEncounter.Bit; @@ -519,7 +520,7 @@ namespace Game.Maps public uint GetInstanceId() { return _instanceId; } - public virtual void SetInstanceId(uint instanceId) { _instanceId = instanceId; } + public void SetInstanceId(uint instanceId) { _instanceId = instanceId; } public DateTime GetExpiryTime() { return _expiryTime; } @@ -552,7 +553,6 @@ namespace Game.Maps class SharedInstanceLock : InstanceLock { - /// /// Instance id based locks have two states /// One shared by everyone, which is the real state used by instance @@ -565,12 +565,6 @@ namespace Game.Maps _sharedData = sharedData; } - public override void SetInstanceId(uint instanceId) - { - base.SetInstanceId(instanceId); - _sharedData.InstanceId = instanceId; - } - public override InstanceLockData GetInstanceInitializationData() { return _sharedData; } public SharedInstanceLockData GetSharedData() { return _sharedData; }