예제 #1
0
        public void Play(TurnContext context)
        {
            if (context.ActivePlayer.Hand.CardCount > 0)
            {
                var gainUtility = new GainUtility(context, context.ActivePlayer);

                var activity = Activities.SelectACardToTrash(context, context.ActivePlayer, this, card =>
                {
                    if (card is IActionCard)
                    {
                        gainUtility.Gain <Duchy>();
                    }
                    if (card is ITreasureCard)
                    {
                        gainUtility.Gain <Transmute>();
                    }
                    if (card is IVictoryCard)
                    {
                        gainUtility.Gain <Gold>();
                    }
                });

                context.AddSingleActivity(activity, this);
            }
        }
예제 #2
0
 public void Play(TurnContext context)
 {
     context.DrawCards(3);
     if (context.ActivePlayer.Hand.CardCount > 0)
     {
         context.AddSingleActivity(Activities.PutCardFromHandOnTopOfDeck(context, this), this);
     }
 }
예제 #3
0
        public void Play(TurnContext context)
        {
            var    gainUtility = new GainUtility(context, context.ActivePlayer);
            Action gainSilver  = () => gainUtility.Gain <Silver>(context.ActivePlayer.Hand);
            Action gainGold    = () => gainUtility.Gain <Gold>(context.ActivePlayer.Hand);

            if (context.ActivePlayer.Hand.OfType <Province>().Any())
            {
                var activity = Activities.ChooseYesOrNo(
                    context.Game.Log,
                    context.ActivePlayer,
                    "Reveal a Province to gain a Gold?",
                    this,
                    gainGold,
                    gainSilver);
                context.AddSingleActivity(activity, this);
            }
            else
            {
                gainSilver();
            }
        }
예제 #4
0
        public void Play(TurnContext context)
        {
            var activity = Activities.GainACardCostingUpToX(context.Game.Log, context.ActivePlayer, 4, this);

            activity.AfterCardGained = card =>
            {
                if (card is IActionCard)
                {
                    context.RemainingActions += 1;
                }
                if (card is ITreasureCard)
                {
                    context.AvailableSpend += 1;
                }
                if (card is IVictoryCard)
                {
                    context.DrawCards(1);
                }
            };

            context.AddSingleActivity(activity, this);
        }
예제 #5
0
 public void Play(TurnContext context)
 {
     context.AddSingleActivity(
         Activities.GainACardCostingUpToX(context.Game.Log, context.ActivePlayer, 4, this), this);
 }
예제 #6
0
 public void Play(TurnContext context)
 {
     context.RemainingActions += 1;
     context.AddSingleActivity(Activities.DiscardCardsToDrawCards(context, this), this);
 }
예제 #7
0
 public void Play(TurnContext context)
 {
     context.RemainingActions += 2;
     context.AddSingleActivity(
         Activities.GainAnActionCardCostingUpToX(context.Game.Log, context.ActivePlayer, 5, this, true), this);
 }