public override bool Check(Agent agent)
        {
            agent = agent == null || !agent.IsMount ? agent : agent.RiderAgent;
            if (agent == null)
            {
                return(false);
            }
            MissionMultiplayerFlagDomination gameModeInstance = this.GameModeInstance;

            LastRemainingFlagCondition.FlagOwner flagOwner = LastRemainingFlagCondition.FlagOwner.None;
            int num = 0;

            foreach (FlagCapturePoint allCapturePoint in gameModeInstance.AllCapturePoints)
            {
                if (!allCapturePoint.IsDeactivated)
                {
                    ++num;
                    Team flagOwnerTeam = gameModeInstance.GetFlagOwnerTeam(allCapturePoint);
                    flagOwner = flagOwnerTeam != null ? (flagOwnerTeam != agent.Team ? LastRemainingFlagCondition.FlagOwner.Enemy : LastRemainingFlagCondition.FlagOwner.Ally) : LastRemainingFlagCondition.FlagOwner.None;
                }
            }
            if (num != 1)
            {
                return(false);
            }
            return(this._owner == LastRemainingFlagCondition.FlagOwner.Any || this._owner == flagOwner);
        }
        protected override void Deserialize(XmlNode node)
        {
            string str = node?.Attributes?["owner"]?.Value;

            this._owner = LastRemainingFlagCondition.FlagOwner.Any;
            if (str == null || Enum.TryParse <LastRemainingFlagCondition.FlagOwner>(str, true, out this._owner))
            {
                return;
            }
            this._owner = LastRemainingFlagCondition.FlagOwner.Any;
        }