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");
}