diff --git a/Source/Game/Entities/Player/SceneMgr.cs b/Source/Game/Entities/Player/SceneMgr.cs index 210381aa9..8ff311182 100644 --- a/Source/Game/Entities/Player/SceneMgr.cs +++ b/Source/Game/Entities/Player/SceneMgr.cs @@ -223,6 +223,15 @@ namespace Game.Entities return activeSceneCount; } + public uint? GetInstanceIdBySceneId(uint sceneId) + { + foreach (var (instanceId, template) in _scenesByInstance) + if (template.SceneId == sceneId) + return instanceId; + + return null; + } + public void TriggerDelayedScenes() { foreach (var playScene in _delayedScenes) diff --git a/Source/Game/Spells/Auras/AuraEffect.cs b/Source/Game/Spells/Auras/AuraEffect.cs index e90ca67bd..d5cf4fbfd 100644 --- a/Source/Game/Spells/Auras/AuraEffect.cs +++ b/Source/Game/Spells/Auras/AuraEffect.cs @@ -5887,7 +5887,15 @@ namespace Game.Spells if (apply) player.GetSceneMgr().PlayScene((uint)GetMiscValue()); else + { + if (aurApp.GetRemoveMode() == AuraRemoveMode.Expire) + { + var sceneInstanceId = player.GetSceneMgr().GetInstanceIdBySceneId((uint)GetMiscValue()); + if (sceneInstanceId.HasValue) + player.GetSceneMgr().OnSceneComplete(sceneInstanceId.Value); + } player.GetSceneMgr().CancelSceneBySceneId((uint)GetMiscValue()); + } } [AuraEffectHandler(AuraType.AreaTrigger)]