From f670656393a7f35e12aabb4034d40e16f0ea5196 Mon Sep 17 00:00:00 2001 From: hondacrx Date: Sun, 21 May 2023 17:19:33 -0400 Subject: [PATCH] Core/Auras: Implement SpellAuraInterruptFlags2::EndOfEncounter Port From (https://github.com/TrinityCore/TrinityCore/commit/998ee363c5e41141da158ea39c0dae0814967fba) --- Source/Game/BattleGrounds/BattleGround.cs | 2 ++ Source/Game/Entities/Unit/Unit.cs | 5 +++++ Source/Game/Maps/Instances/InstanceScript.cs | 4 ++++ 3 files changed, 11 insertions(+) diff --git a/Source/Game/BattleGrounds/BattleGround.cs b/Source/Game/BattleGrounds/BattleGround.cs index 0eef945d3..cf2f41c4c 100644 --- a/Source/Game/BattleGrounds/BattleGround.cs +++ b/Source/Game/BattleGrounds/BattleGround.cs @@ -852,6 +852,8 @@ namespace Game.BattleGrounds player.RemoveAura(BattlegroundConst.SpellMercenaryShapeshift); player.RemovePlayerFlagEx(PlayerFlagsEx.MercenaryMode); + player.AtEndOfEncounter(); + player.RemoveAurasWithInterruptFlags(SpellAuraInterruptFlags2.LeaveArenaOrBattleground); if (!player.IsAlive()) // resurrect on exit diff --git a/Source/Game/Entities/Unit/Unit.cs b/Source/Game/Entities/Unit/Unit.cs index 816da57bb..aefd03b00 100644 --- a/Source/Game/Entities/Unit/Unit.cs +++ b/Source/Game/Entities/Unit/Unit.cs @@ -591,6 +591,11 @@ namespace Game.Entities Unit.ProcSkillsAndAuras(this, null, new ProcFlagsInit(ProcFlags.EncounterStart), new ProcFlagsInit(), ProcFlagsSpellType.MaskAll, ProcFlagsSpellPhase.None, ProcFlagsHit.None, null, null, null); } + void AtEndOfEncounter() + { + RemoveAurasWithInterruptFlags(SpellAuraInterruptFlags2.EndOfEncounter); + } + public void _RegisterDynObject(DynamicObject dynObj) { m_dynObj.Add(dynObj); diff --git a/Source/Game/Maps/Instances/InstanceScript.cs b/Source/Game/Maps/Instances/InstanceScript.cs index 8f6cc8091..1250a2566 100644 --- a/Source/Game/Maps/Instances/InstanceScript.cs +++ b/Source/Game/Maps/Instances/InstanceScript.cs @@ -372,6 +372,8 @@ namespace Game.Maps case EncounterState.Fail: ResetCombatResurrections(); SendEncounterEnd(); + + instance.DoOnPlayers(player => player.AtEndOfEncounter()); break; case EncounterState.Done: ResetCombatResurrections(); @@ -382,6 +384,8 @@ namespace Game.Maps DoUpdateCriteria(CriteriaType.DefeatDungeonEncounter, dungeonEncounter.Id); SendBossKillCredit(dungeonEncounter.Id); } + + instance.DoOnPlayers(player => player.AtEndOfEncounter()); break; default: break;