public virtual void InvalidateStrayPlayer(PlayerMobile player) { if (State == PvPBattleState.Internal || Hidden || player == null || player.Deleted) { return; } if (player.InRegion(SpectateRegion)) { if (IsParticipant(player)) { Eject(player, false); } if (!IsSpectator(player)) { AddSpectator(player, false); } } else if (player.InRegion(BattleRegion)) { if (IsParticipant(player)) { if (IsSpectator(player)) { RemoveSpectator(player, false); } Queue.Remove(player); if (DebugMode || player.AccessLevel < AccessLevel.Counselor) { if (player.Flying && !Options.Rules.CanFly) { player.Flying = false; } if (player.Mounted) { var canMount = Options.Rules.CanMount; if (player.Mount is EtherealMount) { canMount = Options.Rules.CanMountEthereal; } if (!canMount) { player.Dismount(); } } } } else if (!IsSpectator(player)) { if ((DebugMode || player.AccessLevel < AccessLevel.Counselor) && SpectateAllowed) { AddSpectator(player, true); } else if (player.AccessLevel < AccessLevel.Counselor) { Eject(player, true); } } } }