From fd377ebc0d10174018980300b591a71bdee61f6f Mon Sep 17 00:00:00 2001 From: hondacrx Date: Sun, 21 May 2023 17:17:00 -0400 Subject: [PATCH] Core/Auras: Implement SpellAuraInterruptFlags2::StartOfEncounter Port From (https://github.com/TrinityCore/TrinityCore/commit/15135ce16f76d1635fa5606c99822b60bced94bf) --- Source/Game/BattleGrounds/BattleGround.cs | 7 +++++++ Source/Game/Entities/Unit/Unit.cs | 8 ++++++++ Source/Game/Maps/Instances/InstanceScript.cs | 6 +----- 3 files changed, 16 insertions(+), 5 deletions(-) diff --git a/Source/Game/BattleGrounds/BattleGround.cs b/Source/Game/BattleGrounds/BattleGround.cs index 2d2e27b0c..0eef945d3 100644 --- a/Source/Game/BattleGrounds/BattleGround.cs +++ b/Source/Game/BattleGrounds/BattleGround.cs @@ -407,6 +407,13 @@ namespace Game.BattleGrounds SetStatus(BattlegroundStatus.InProgress); SetStartDelayTime(StartDelayTimes[BattlegroundConst.EventIdFourth]); + foreach (var (guid, _) in GetPlayers()) + { + Player player = Global.ObjAccessor.FindPlayer(guid); + if (player != null) + player.AtStartOfEncounter(); + } + // Remove preparation if (IsArena()) { diff --git a/Source/Game/Entities/Unit/Unit.cs b/Source/Game/Entities/Unit/Unit.cs index 5d403d45a..816da57bb 100644 --- a/Source/Game/Entities/Unit/Unit.cs +++ b/Source/Game/Entities/Unit/Unit.cs @@ -583,6 +583,14 @@ namespace Game.Entities return GetTransport(); } + public void AtStartOfEncounter() + { + RemoveAurasWithInterruptFlags(SpellAuraInterruptFlags2.StartOfEncounter); + + if (IsAlive()) + Unit.ProcSkillsAndAuras(this, null, new ProcFlagsInit(ProcFlags.EncounterStart), new ProcFlagsInit(), ProcFlagsSpellType.MaskAll, ProcFlagsSpellPhase.None, ProcFlagsHit.None, null, null, null); + } + 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 52d00f49f..8f6cc8091 100644 --- a/Source/Game/Maps/Instances/InstanceScript.cs +++ b/Source/Game/Maps/Instances/InstanceScript.cs @@ -366,11 +366,7 @@ namespace Game.Maps InitializeCombatResurrections(1, resInterval); SendEncounterStart(1, 9, resInterval, resInterval); - instance.DoOnPlayers(player => - { - if (player.IsAlive()) - Unit.ProcSkillsAndAuras(player, null, new ProcFlagsInit(ProcFlags.EncounterStart), new ProcFlagsInit(), ProcFlagsSpellType.MaskAll, ProcFlagsSpellPhase.None, ProcFlagsHit.None, null, null, null); - }); + instance.DoOnPlayers(player => player.AtStartOfEncounter()); break; } case EncounterState.Fail: