public override void DoSpecializedAction(PlayerState currentPlayer, GameState gameState)
{
currentPlayer.GainCardFromSupply(Silver.card, gameState);
// look at the top card of the deck and discard or put it back
Card card = currentPlayer.DrawAndLookAtOneCardFromDeck();
if (card != null)
{
if (currentPlayer.actions.ShouldPlayerDiscardCardFromDeck(gameState, currentPlayer, card))
{
currentPlayer.gameLog.PushScope();
currentPlayer.MoveLookedAtCardsToDiscard(gameState);
currentPlayer.gameLog.PlayerDiscardCard(currentPlayer, card);
currentPlayer.gameLog.PopScope();
}
else
{
currentPlayer.MoveLookedAtCardToTopOfDeck(card);
}
}
currentPlayer.DrawUntilCountInHand(5);
currentPlayer.RequestPlayerTrashCardFromHand(gameState, acceptableCard => !acceptableCard.isTreasure, isOptional: true);
}