From 0fbdee96ca4a626673f30492b907bc6748f69434 Mon Sep 17 00:00:00 2001 From: Hondacrx Date: Sun, 8 Jun 2025 16:01:12 -0400 Subject: [PATCH] Core/Auras: Send scene complete if a SPELL_AURA_PLAY_SCENE aura is removed by expiration Port From (https://github.com/TrinityCore/TrinityCore/commit/e58fa4c35eaf24cfa4866b8ca24a61d45a3382d2) --- Source/Game/Entities/Player/SceneMgr.cs | 9 +++++++++ Source/Game/Spells/Auras/AuraEffect.cs | 8 ++++++++ 2 files changed, 17 insertions(+) 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)]