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;