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); } }
public void Play(TurnContext context) { context.DrawCards(3); if (context.ActivePlayer.Hand.CardCount > 0) { context.AddSingleActivity(Activities.PutCardFromHandOnTopOfDeck(context, this), this); } }
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(); } }
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); }
public void Play(TurnContext context) { context.AddSingleActivity( Activities.GainACardCostingUpToX(context.Game.Log, context.ActivePlayer, 4, this), this); }
public void Play(TurnContext context) { context.RemainingActions += 1; context.AddSingleActivity(Activities.DiscardCardsToDrawCards(context, this), this); }
public void Play(TurnContext context) { context.RemainingActions += 2; context.AddSingleActivity( Activities.GainAnActionCardCostingUpToX(context.Game.Log, context.ActivePlayer, 5, this, true), this); }