コード例 #1
0
        private void CheckAbility(GenericShip ship, Type tokenType)
        {
            // To avoid infinite loop
            if (IsAbilityUsed)
            {
                return;
            }

            if (ship.Owner.PlayerNo == HostShip.Owner.PlayerNo)
            {
                return;
            }

            if (ActionsHolder.HasTargetLockOn(HostShip, ship))
            {
                return;
            }

            TokenColors tokenColor = TokensManager.GetTokenColorByType(tokenType);

            if (tokenColor != TokenColors.Red && tokenColor != TokenColors.Orange)
            {
                return;
            }

            DistanceInfo distInfo = new DistanceInfo(HostShip, ship);

            if (distInfo.Range == 1 || distInfo.Range == 2)
            {
                ShipWithAssignedToken = ship;
                RegisterAbilityTrigger(TriggerTypes.OnTokenIsAssigned, AskAcquireTargetLock);
            }
        }
コード例 #2
0
        public bool HasTokenByColor(TokenColors tokensColor)
        {
            foreach (GenericToken tok in AssignedTokens)
            {
                if (tok.TokenColor == tokensColor)
                {
                    return(true);
                }
            }

            return(false);
        }
コード例 #3
0
        public void RemoveAllTokensByColor(TokenColors color, Action callback)
        {
            GenericToken tokenToRemove = AssignedTokens.FirstOrDefault(token => token.TokenColor == color);

            if (tokenToRemove != null)
            {
                RemoveToken(
                    tokenToRemove,
                    delegate { RemoveAllTokensByColor(color, callback); }
                    );
            }
            else
            {
                callback();
            }
        }
コード例 #4
0
        private void PettyOfficerThanissonEffect(GenericShip ship, GenericToken token)
        {
            TokenColors tokenColor = token.TokenColor;

            //During the Activation or Engagement Phase, after an enemy ship in your "arc standard
            //front" at range 0-1 gains a red or orange token, if you are not stressed, you may gain 1 stress
            //token. If you do, that ship gains 1 additional token of the type that it gained.
            if ((Phases.CurrentPhase is MainPhases.ActivationPhase || Phases.CurrentPhase is MainPhases.CombatPhase) &&
                (tokenColor == TokenColors.Red || tokenColor == TokenColors.Orange) &&
                token.GetType() != typeof(RedTargetLockToken) &&
                !HostShip.Tokens.HasToken(typeof(StressToken)) &&
                ship.Owner.PlayerNo != HostShip.Owner.PlayerNo &&
                HostShip.SectorsInfo.IsShipInSector(ship, ArcType.Front) &&
                HostShip.SectorsInfo.RangeToShipBySector(ship, ArcType.Front) <= 1)
            {
                ShipWithToken = ship;
                Token         = token;
                RegisterAbilityTrigger(TriggerTypes.OnTokenIsAssigned, ShowDecision);
            }
        }