public override void DoSpecializedAction(PlayerState currentPlayer, GameState gameState) { currentPlayer.AddCoinTokens(2); int coinCount = currentPlayer.actions.GetCoinAmountToUseInButcher(gameState); if (coinCount > currentPlayer.AvailableCoinTokens) { throw new Exception("Tried to use too many coins"); } Card trashedCard = currentPlayer.RequestPlayerTrashCardFromHand(gameState, card => true, isOptional: true); if (trashedCard == null) { return; } currentPlayer.AddCoinTokens(-coinCount); currentPlayer.RequestPlayerGainCardFromSupply( gameState, card => card.CurrentCoinCost(currentPlayer) == trashedCard.CurrentCoinCost(currentPlayer) + coinCount && card.potionCost == trashedCard.potionCost, "Must gain a card costing exactly equal to the cost of the card trashed plus any coin spent"); }
public override void DoSpecializedAction(PlayerState currentPlayer, GameState gameState) { if (currentPlayer.RequestPlayerDiscardCardFromHand(gameState, card => card.isTreasure, isOptional: true)) { currentPlayer.AddCoinTokens(1); } }
public override void DoSpecializedAction(PlayerState currentPlayer, GameState gameState) { currentPlayer.AddCoinTokens(1); }
private new void DoSpecializedActionOnBuyWhileInPlay(PlayerState currentPlayer, GameState gameState, Card boughtCard) { currentPlayer.AddCoinTokens(1); }