         {trash: 2}
       ])
       applyBenefit(state, benefit)
-  ]
-}
-
+}
+

  buys: 1
  isPrize: true
  mayBeBought: (state) -> false
  playEffects: [
    (state) ->
      state.bridges += 2
  ]
}

makeCard 'Quarry', c.Silver, {
  cost: 4
  coins: 1
  playEffects: [
    (state) ->
      state.quarries += 1
  ]
}

makeCard 'Shanty Town', action, {
  cost: 3
  actions: +2
  playEffects: [
    (state) -> state.revealHand(0),
    (state) ->
      state.current.drawCards(state.current.shantyTownDraws())
  ]
}

makeCard 'Steward', action, {
  cost: 3
  playEffects: [
    (state) ->
      benefit = state.current.ai.chooseBenefit(state, [
        {cards: 2},

  # This is 10 by default, but some types of cards override it.
  startingSupply: (state) -> 10

  #### Complex effects
  # More complex effects of a card can be defined using arbitrary functions
  # that modify the state. These functions are no-ops in `basicCard`, and
  # may be overridden by cards that need them:

  # - What happens when the card is bought?
  buyEffect: (state) ->
  # - What happens (besides the simple effects defined above) when the card is
  #   played?
  playEffect: (state) ->
  # - What happens when this card is in play and another card is gained?
  gainInPlayEffect: (state) ->
  # - What happens when this card is cleaned up from play?
  cleanupEffect: (state) ->
  # - What happens when the card is in play as a Duration at the start of
  #   the turn?
  durationEffect: (state) ->
  # - What happens when the card is shuffled into the draw deck?
  shuffleEffect: (state) ->
  # - What happens when this card is in hand and an opponent plays an attack?
  attackReaction: (state) ->
  # - What happens when this card is in hand and its owner gains a card?
  gainReaction: (state) ->
  
  # This defines everything that happens when a card is played, including
  # basic effects and complex effects defined in `playEffect`. Cards
  # should not override `onPlay`; they should override `playEffect` instead.
  onPlay: (state) ->
    state.current.actions += this.getActions(state)
    state.current.coins += this.getCoins(state)
