public override void Play(Player player) { base.Play(player); // We're looking for 2 non-Golem Action cards player.BeginDrawing(); while (player.Revealed[Category.Action].Count(c => c.CardType != Cards.Alchemy.TypeClass.Golem) < 2 && player.CanDraw) player.Draw(DeckLocation.Revealed); player.EndDrawing(); player.Revealed.BeginChanges(); CardCollection actions = player.Revealed[c => (c.Category & Category.Action) == Category.Action && c.CardType != Cards.Alchemy.TypeClass.Golem]; player.DiscardRevealed(c => !actions.Contains(c)); player.Revealed.EndChanges(); CardCollection cardsToPlay = player.RetrieveCardsFrom(DeckLocation.Revealed); Choice choice = new Choice("Which card would you like to play first?", this, actions, player); ChoiceResult result = player.MakeChoice(choice); if (result.Cards.Count > 0) { actions.Remove(result.Cards[0]); // Play the first (selected) one player.AddCardInto(DeckLocation.Private, result.Cards[0]); player.Actions++; player.PlayCardInternal(result.Cards[0], "first"); } else player.PlayNothing("first"); if (actions.Count > 0) { // Play the other one player.AddCardInto(DeckLocation.Private, actions[0]); player.Actions++; player.PlayCardInternal(actions[0], "second"); } else player.PlayNothing("second"); }
public override void Play(Player player) { base.Play(player); Choice choice = new Choice(String.Format("You may play a Treasure card twice", player), this, player.Hand[Cards.Category.Treasure], player, false, 0, 1); ChoiceResult result = player.MakeChoice(choice); if (result.Cards.Count > 0) { Card card = result.Cards[0]; player.PlayCardInternal(card); player.PlayCardInternal(card, " again"); if (player.InPlay.Contains(card)) player.Trash(player.RetrieveCardFrom(DeckLocation.InPlay, card)); } else player.PlayNothing(); }
public override void Play(Player player) { base.Play(player); // Perform attack on every player IEnumerator<Player> enumerator = player._Game.GetPlayersStartingWithEnumerator(player); enumerator.MoveNext(); while (enumerator.MoveNext()) { Player attackee = enumerator.Current; // Skip if the attack is blocked (Moat, Lighthouse, etc.) if (this.IsAttackBlocked[attackee]) continue; attackee.Gain(player._Game.Table[TypeClass.RuinsSupply]); } if (player.Hand[TypeClass.Cultist].Count > 0) { Choice choicePlayer = Choice.CreateYesNoChoice("Do you want to play a Cultist from your hand?", this, player); ChoiceResult resultPlayer = player.MakeChoice(choicePlayer); if (resultPlayer.Options[0] == "Yes") { player.Actions++; player.PlayCardInternal(player.Hand[TypeClass.Cultist][0]); } } }
public override void Play(Player player) { base.Play(player); player.BeginDrawing(); while (player.Revealed[Category.Treasure].Count < 1 && player.CanDraw) player.Draw(DeckLocation.Revealed); player.EndDrawing(); CardCollection cards = player.Revealed[Cards.Category.Treasure]; player.DiscardRevealed(c => !cards.Contains(c)); if (cards.Count > 0) player.PlayCardInternal(cards[0]); }