示例#1
0
        public override Chase Play(
            Chase currentState,
            List <ICard> targetCards,
            UIManager uiManager
            )
        {
            int cardsShuffled = currentState.PlayerDiscard.Count;

            ChaseMutator mutator = new ChaseMutator(currentState, uiManager, $"playing {this.Name}")
                                   .AddControl(-this.ControlCost)
                                   .ActivateCard(this);

            if (currentState.PlayerExhaust.Count > 0)
            {
                mutator.ResurrectFromExhaustToHand(currentState.PlayerExhaust.Last());
            }

            foreach (IPlayerCard repairedDamage in targetCards)
            {
                if (repairedDamage != null)
                {
                    mutator.ExhaustFromHand(repairedDamage);
                }
            }

            return(mutator
                   .DiscardFromHand(this)
                   .Done());
        }
示例#2
0
        public override Chase Play(
            Chase currentState,
            List <ICard> targetCards,
            UIManager uiManager
            )
        {
            ChaseMutator muta = new ChaseMutator(currentState, uiManager, $"playing {this.Name}")
                                .AddControl(-this.ControlCost)
                                .ActivateCard(this)
                                .AddPlayerSpeed(currentState.MaxPlayerSpeed - currentState.PlayerSpeed)
                                .AddLead(LeadIncrease)
                                .AddDamageToTopOfDeck(DamageTaken);

            foreach (IRouteCard targetCard in targetCards)
            {
                if (targetCard != null)
                {
                    muta.DiscardFromRoute(targetCard);
                }
            }

            return(muta
                   .DiscardFromHand(this)
                   .Done());
        }
示例#3
0
        public override Chase Play(
            Chase currentState,
            List <ICard> targetCards,
            UIManager uiManager
            )
        {
            int speedIncrease = SpeedIncrease;
            int leadIncrease  = LeadIncrease;

            if (currentState.PlayerSpeed != 0)
            {
                speedIncrease = 0;
                leadIncrease  = 0;
            }
            ChaseMutator muta = new ChaseMutator(currentState, uiManager, $"playing {this.Name}")
                                .AddControl(-this.ControlCost)
                                .ActivateCard(this)
                                .AddPlayerSpeed(speedIncrease)
                                .AddLead(leadIncrease)
                                .DiscardFromHand(this);

            foreach (IRouteCard targetCard in targetCards)
            {
                if (targetCard != null)
                {
                    muta.DiscardFromRoute(targetCard);
                }
            }

            return(muta.Done());
        }
示例#4
0
        public override Chase Play(Chase currentState, UIManager uiManager)
        {
            ChaseMutator mutator = new ChaseMutator(currentState, uiManager, $"playing {this.Name}");

            mutator.ActivateCard(this);

            mutator.AddPlayerSpeed(-(currentState.PlayerSpeed - SetSpeedTo));
            mutator.AddLead(LeadIncrease);

            return(mutator.ExhaustFromRoute(this).Done());
        }
示例#5
0
        public override Chase Play(Chase currentState, UIManager uiManager)
        {
            ChaseMutator mutator = new ChaseMutator(currentState, uiManager, $"playing {this.Name}");

            mutator.ActivateCard(this);
            if (currentState.PlayerSpeed > SpeedThreshold)
            {
                mutator.AddDamageToTopOfDeck(Damage);
            }
            return(mutator.DiscardFromRoute(this).Done());
        }
示例#6
0
        public override Chase Play(Chase currentState, UIManager uiManager)
        {
            ChaseMutator mutator = new ChaseMutator(currentState, uiManager, $"playing {this.Name}");

            if (currentState.Lead >= LeadRequired)
            {
                mutator.SetPlayerHasWon();
            }

            return(mutator
                   .ActivateCard(this)
                   .DiscardFromRoute(this)
                   .Done());
        }
示例#7
0
        public override Chase Play(
            Chase currentState,
            List <ICard> targetCards,
            UIManager uiManager
            )
        {
            ChaseMutator muta = new ChaseMutator(currentState, uiManager, $"playing {this.Name}")
                                .AddControl(-this.ControlCost)
                                .ActivateCard(this)
                                .AddControl(
                Mathf.FloorToInt(ControlPerSpeed * currentState.PlayerSpeed)
                )
                                .DiscardFromHand(this);

            return(muta.Done());
        }
示例#8
0
        public override Chase Play(Chase currentState, UIManager uiManager)
        {
            ChaseMutator mutator = new ChaseMutator(currentState, uiManager, $"playing {this.Name}");

            mutator.ActivateCard(this);
            bool triggerFirstDecrease  = currentState.PlayerSpeed > SpeedThreshold1;
            bool triggerSecondDecrease = currentState.PlayerSpeed - SpeedDecrease1 > SpeedThreshold2;

            if (triggerFirstDecrease)
            {
                mutator.AddPlayerSpeed(-SpeedDecrease1);
            }
            if (triggerSecondDecrease)
            {
                mutator.AddPlayerSpeed(-SpeedDecrease2);
            }

            return(mutator.DiscardFromRoute(this).Done());
        }
示例#9
0
        public override Chase Play(
            Chase currentState,
            List <ICard> targetCards,
            UIManager uiManager)
        {
            ChaseMutator chaseMutator = new ChaseMutator(currentState, uiManager, $"playing {this.Name}")
                                        .AddControl(-this.ControlCost)
                                        .ActivateCard(this)
                                        .AddLead(LeadGained);

            if (currentState.Lead <= ExtraLeadGainMaxTrigger)
            {
                chaseMutator.AddLead(ExtraLeadGainValue);
            }

            return(chaseMutator
                   .ExhaustFromHand(this)
                   .Done());
        }
示例#10
0
        public override Chase Play(
            Chase currentState,
            List <ICard> targetCards,
            UIManager uiManager
            )
        {
            ChaseMutator mutator = new ChaseMutator(currentState, uiManager, $"playing {this.Name}")
                                   .AddControl(-this.ControlCost)
                                   .ActivateCard(this);

            foreach (IPlayerCard card in targetCards)
            {
                mutator.DrawSpecific(card);
            }

            return(mutator
                   .DiscardFromHand(this)
                   .Done());
        }
示例#11
0
        public override Chase Play(
            Chase currentState,
            List <ICard> targetCards,
            UIManager uiManager
            )
        {
            ChaseMutator mutator = new ChaseMutator(currentState, uiManager, $"playing {this.Name}")
                                   .AddControl(-this.ControlCost)
                                   .ActivateCard(this)
                                   .AddLead(LeadIncrease);

            if (currentState.CurrentRoute.Exists(route => route.CardType == RouteCardType.Maneuver))
            {
                mutator.AddLead(LeadIncreaseOnManeuver);
            }

            return(mutator
                   .ExhaustFromHand(this)
                   .Done());
        }
示例#12
0
        public override Chase Play(
            Chase currentState,
            List <ICard> targetCards,
            UIManager uiManager
            )
        {
            ChaseMutator muta = new ChaseMutator(currentState, uiManager, $"playing {this.Name}")
                                .AddControl(-this.ControlCost)
                                .ActivateCard(this)
                                .DiscardFromHand(this);

            foreach (IRouteCard targetCard in targetCards)
            {
                if (targetCard != null)
                {
                    muta.DiscardFromRoute(targetCard);
                }
            }

            return(muta.Done());
        }
示例#13
0
        public override Chase Play(
            Chase currentState,
            List <ICard> targetCards,
            UIManager uiManager
            )
        {
            int cardsShuffled = currentState.PlayerDiscard.Count;

            ChaseMutator mutator = new ChaseMutator(currentState, uiManager, $"playing {this.Name}")
                                   .AddControl(-this.ControlCost)
                                   .ActivateCard(this)
                                   .RecyclePlayerDeck();

            if (cardsShuffled >= MinCardsShuffledForDraw)
            {
                mutator.DrawCards(NumCardsToDraw);
            }

            return(mutator
                   .DiscardFromHand(this)
                   .Done());
        }
示例#14
0
        public override Chase Play(
            Chase currentState,
            List <ICard> targetCards,
            UIManager uiManager
            )
        {
            ChaseMutator mutator = new ChaseMutator(currentState, uiManager, $"playing {this.Name}")
                                   .AddControl(-this.ControlCost)
                                   .ActivateCard(this);

            foreach (IPlayerCard repairedDamage in targetCards)
            {
                if (repairedDamage != null)
                {
                    mutator.ExhaustFromHand(repairedDamage);
                }
            }

            return(mutator
                   .ExhaustFromHand(this)
                   .Done());
        }
示例#15
0
        public override Chase Play(
            Chase currentState,
            List <ICard> targetCards,
            UIManager uiManager
            )
        {
            ChaseMutator chase = new ChaseMutator(currentState, uiManager, $"playing {this.Name}")
                                 .AddControl(-this.ControlCost)
                                 .ActivateCard(this)
                                 .DrawCards(CardsToDraw);

            foreach (IPlayerCard discardedCard in targetCards)
            {
                if (discardedCard != null)
                {
                    chase.DiscardFromHand(discardedCard);
                }
            }

            return(chase
                   .DiscardFromHand(this)
                   .Done());
        }