예제 #1
0
		public override void Play(Player player)
		{
			base.Play(player);

			player.Gain(player._Game.Table[TypeClass.Rats]);

			CardCollection nonRats = player.Hand[c => c.CardType != TypeClass.Rats];
			if (nonRats.Count > 0)
			{
				Choice choiceTrash = new Choice("Choose a non-Rats card to trash", this, nonRats, player);
				ChoiceResult resultTrash = player.MakeChoice(choiceTrash);
				player.Trash(player.RetrieveCardsFrom(DeckLocation.Hand, resultTrash.Cards));
			}
			else
			{
				player.ReturnHand(player.RevealHand());
			}
		}
예제 #2
0
		public override void Play(Player player)
		{
			base.Play(player);

			player.ReturnHand(player.RevealHand());

			Currency negativeCurrency = new Currency(-Math.Min(player.Currency.Coin.Value, player.Hand[Cards.Category.Treasure].Count));
			player.ReceiveBenefit(this, new CardBenefit() { Currency = negativeCurrency });
		}
예제 #3
0
		public override void Play(Player player)
		{
			base.Play(player);

			player.ReturnHand(player.RevealHand());

			int plusActions = 0;
			if (player.CurrentTurn.CardsResolved.Count(c => c.LogicalCard.CardType == TypeClass.Crossroads) == 1)
				plusActions = 3;
			player.ReceiveBenefit(this, new CardBenefit() { Cards = player.Hand[Cards.Category.Victory].Count, Actions = plusActions });
		}
예제 #4
0
		public override void Play(Player player)
		{
			base.Play(player);

			player.ReturnHand(player.RevealHand());

			List<Type> cardTypes = new List<Type>();
			foreach (Card card in player.Hand)
			{
				Type t = card.CardType;
				if (!cardTypes.Contains(t))
					cardTypes.Add(t);
			}

			CardBenefit benefit = new CardBenefit();
			if (player.Hand.Count == cardTypes.Count)
				benefit.Cards = 3;
			else
				benefit.Cards = 1;
			player.ReceiveBenefit(this, benefit);
		}
예제 #5
0
		public override void Play(Player player)
		{
			base.Play(player);

			player.ReturnHand(player.RevealHand());

			Boolean foundUniqueCard = false;
			player.BeginDrawing();
			while (player.CanDraw)
			{
				player.Draw(DeckLocation.Revealed);
				if (player.Hand[player.Revealed.Last().CardType].Count == 0)
				{
					foundUniqueCard = true;
					break;
				}
			}
			player.EndDrawing();

			if (foundUniqueCard && player.Revealed.Count > 0)
				player.AddCardToHand(player.RetrieveCardFrom(DeckLocation.Revealed, player.Revealed.Last()));

			player.DiscardRevealed();
		}
예제 #6
0
		public override void Play(Player player)
		{
			base.Play(player);

			player.ReturnHand(player.RevealHand());

			if (player.Hand[Category.Action].Count == 0)
				player.ReceiveBenefit(this, new CardBenefit() { Cards = 2 });
		}