     vp
 }
 
+makeCard 'Explorer', action, {
+  cost: 5
+
+  playEffect: (state) ->
+    cardToGain = c.Silver
+
+    if c.Province in state.current.hand
+      state.log("…revealing a Province.")
+      cardToGain = c.Gold
+
+    if state.countInSupply(cardToGain) > 0
+      state.gainCard(state.current, cardToGain, true)
+      transferCard(cardToGain, state.current.discard, state.current.hand)
+      state.log("…and gaining a #{cardToGain}, putting it in the hand.")
+    else
+      state.log("…but there are no #{cardToGain}s available to gain.")
+}
+
 makeCard 'Farming Village', action, {
   cost: 4
   actions: 2

    state.gainOneOf(state.current, choices)
}

makeCard 'Vineyard', c.Estate, {
  cost: 0
  costPotion: 1
  getVP: (state) -> Math.floor(state.current.numActionCardsInDeck().length / 3)
}

makeCard 'Warehouse', action, {

      state.log("…gaining #{numGolds} Golds, putting them on top of the deck.")      
}

makeCard 'Tribute', action, {
  cost: 5

  playEffect: (state) ->
    revealedCards = state.players[1].discardFromDeck(2)

    unique = []
    for card in revealedCards
      if card not in unique
        unique.push(card)

    for card in unique
      if card.isAction
        state.current.actions += 2
      if card.isTreasure
        state.current.coins += 2
      if card.isVictory
        state.current.drawCards(2)
}

makeCard "Trusty Steed", c["Bag of Gold"], {
  actions: 0
  playEffect: (state) ->
