public override void DoSpecializedAction(PlayerState currentPlayer, GameState gameState) { currentPlayer.LookAtCardsFromDeck(5); PlayerActionChoice choice = currentPlayer.RequestPlayerChooseBetween(gameState, acceptableChoice => acceptableChoice == PlayerActionChoice.Discard || acceptableChoice == PlayerActionChoice.TopDeck); if (choice == PlayerActionChoice.TopDeck) { currentPlayer.RequestPlayerTopDeckRevealedCardsInAnyOrder(gameState); } else if (choice == PlayerActionChoice.Discard) { currentPlayer.MoveRevealedCardsToDiscard(gameState); } }
public override void DoSpecializedAction(PlayerState currentPlayer, GameState gameState) { currentPlayer.RevealCardsFromDeck(4); currentPlayer.MoveRevealedCardsToHand(card => card.isVictory); currentPlayer.RequestPlayerTopDeckRevealedCardsInAnyOrder(gameState); }
public override void DoSpecializedAction(PlayerState currentPlayer, GameState gameState) { currentPlayer.RevealCardsFromDeck(4, gameState); currentPlayer.MoveRevealedCardsToHand(card => card == Copper.card || card == Potion.card); currentPlayer.RequestPlayerTopDeckRevealedCardsInAnyOrder(gameState); }
public override void DoSpecializedAttack(PlayerState currentPlayer, PlayerState otherPlayer, GameState gameState) { otherPlayer.RevealCardsFromDeck(2, gameState); PlayerActionChoice choice = currentPlayer.RequestPlayerChooseBetween(gameState, actionChoice => actionChoice == PlayerActionChoice.Discard || actionChoice == PlayerActionChoice.TopDeck); switch (choice) { case PlayerActionChoice.Discard: { otherPlayer.MoveRevealedCardsToDiscard(gameState); break; } case PlayerActionChoice.TopDeck: { otherPlayer.RequestPlayerTopDeckRevealedCardsInAnyOrder(gameState); break; } default: throw new Exception(); } }