private RequestPlayerTopDeckCardFromHand ( |
||
gameState | ||
acceptableCard | CardPredicate | |
isOptional | bool | |
return | Dominion.Card |
public override void DoSpecializedAttack(PlayerState currentPlayer, PlayerState otherPlayer, GameState gameState) { CardPredicate acceptableCard = card => card.isVictory; Card cardTopDecked = otherPlayer.RequestPlayerTopDeckCardFromHand(gameState, acceptableCard, isOptional: false); if (cardTopDecked == null) { otherPlayer.RevealHand(); } else { otherPlayer.RevealCard(cardTopDecked, DeckPlacement.TopOfDeck); } }
public override void DoSpecializedAttack(PlayerState currentPlayer, PlayerState otherPlayer, GameState gameState) { while (currentPlayer.Hand.Count > 3) { currentPlayer.RequestPlayerTopDeckCardFromHand(gameState, acceptableCard => true, isOptional: false); } }
public override bool DoReactionToAttackWhileInHand(PlayerState currentPlayer, GameState gameState, out bool cancelsAttack) { cancelsAttack = false; if (currentPlayer.actions.ShouldRevealCardFromHand(gameState, this)) { currentPlayer.DrawAdditionalCardsIntoHand(2); for (int i = 0; i < 2; ++i) { currentPlayer.RequestPlayerTopDeckCardFromHand(gameState, acceptableCard => true, false); } return true; } else { return false; } }
public override void DoSpecializedAction(PlayerState currentPlayer, GameState gameState) { currentPlayer.RequestPlayerTopDeckCardFromHand(gameState, acceptableCard => true, isOptional: false); }
public override void DoSpecializedAction(PlayerState currentPlayer, GameState gameState) { PlayerActionChoice choice = currentPlayer.RequestPlayerChooseBetween(gameState, acceptableChoice => acceptableChoice == PlayerActionChoice.Discard || acceptableChoice == PlayerActionChoice.GainCard || acceptableChoice == PlayerActionChoice.TopDeck); switch (choice) { case PlayerActionChoice.Discard: currentPlayer.RequestPlayerDiscardCardsFromHand(gameState, 2, isOptional: false); break; case PlayerActionChoice.GainCard: currentPlayer.GainCardFromSupply(Cards.Copper, gameState); break; case PlayerActionChoice.TopDeck: currentPlayer.RequestPlayerTopDeckCardFromHand(gameState, acceptableCard => true, isOptional: false); break; } PlayerActionChoice choice2 = currentPlayer.RequestPlayerChooseBetween(gameState, acceptableChoice => acceptableChoice == PlayerActionChoice.PlusCoin || acceptableChoice == PlayerActionChoice.Trash || acceptableChoice == PlayerActionChoice.GainCard); switch (choice2) { case PlayerActionChoice.PlusCoin: currentPlayer.AddCoins(3); break; case PlayerActionChoice.Trash: currentPlayer.TrashHand(gameState); break; case PlayerActionChoice.GainCard: currentPlayer.GainCardFromSupply(Cards.Duchy, gameState); break; } }