module Dominion.Cards.Original ( -- | Playing a card is easy: -- -- > playerId `plays` adventurer module Dominion.Cards.Original ) where import Dominion.Types adventurer = Card "Adventurer" 6 [Action] [AdventurerEffect] bureaucrat = Card "Bureaucrat" 4 [Action, Attack] [BureaucratEffect] -- | -- > playerId `plays` cellar `with` (Cellar [list of cards to discard]) cellar = Card "Cellar" 2 [Action] [PlusAction 1, CellarEffect] -- > To move your deck into the discard pile: -- -- > playerId `plays` chancellor `with` (Chancellor True) -- -- If you don't want to, you don't have to use the followup action at all: -- -- > playerId `plays` chancellor chancellor = Card "Chancellor" 3 [Action] [PlusCoin 2, ChancellorEffect] -- | -- > playerId `plays` chapel `with` (Chapel [list of cards to trash]) chapel = Card "Chapel" 2 [Action] [TrashCards 4] councilRoom = Card "Council Room" 5 [Action] [PlusCard 4, PlusBuy 1, OthersPlusCard 1] -- | To gain a market, for example: -- -- > playerId `plays` feast `with` (Feast market) feast = Card "Feast" 4 [Action] [TrashThisCard, GainCardUpto 5] festival = Card "Festival" 5 [Action] [PlusAction 2, PlusCoin 2, PlusBuy 1] laboratory = Card "Laboratory" 5 [Action] [PlusCard 2, PlusAction 1] library = Card "Library" 5 [Action] [LibraryEffect] market = Card "Market" 5 [Action] [PlusAction 1, PlusCoin 1, PlusCard 1, PlusBuy 1] militia = Card "Militia" 4 [Action, Attack] [PlusCoin 2, OthersDiscardTo 3] -- | -- > playerId `plays` mine `with` (Mine copper) mine = Card "Mine" 5 [Action] [MineEffect] moat = Card "Moat" 2 [Action, Reaction] [PlusCard 2] moneylender = Card "Moneylender" 4 [Action] [MoneylenderEffect] -- | To turn a gold into a province: -- -- > playerId `plays` remodel `with` (Remodel (gold, province)) remodel = Card "Remodel" 4 [Action] [RemodelEffect] smithy = Card "Smithy" 4 [Action] [PlusCard 3] -- | The `Spy` `FollowupAction` takes two lists: a list of cards you would -- discard for yourself, and a list of cards you would discard for others: -- -- > playerId `plays` spy `with` ([estate, duchy, province], [silver, gold]) spy = Card "Spy" 4 [Action, Attack] [PlusCard 1, PlusAction 1, SpyEffect] -- gets a list of the treasure cards that the player -- had. You return either TrashOnly to have the player -- trash a card, or GainTrashedCard to gain the trashed -- card. -- | You need to provide a function that takes a list of treasure cards and -- picks one to trash. You can either return a `TrashOnly` to trash the -- card, or a `GainTrashedCard` to put it into your discard pile. -- -- > playerId `plays` thief `with` (Thief (GainTrashedCard . sortBy (comparing coinValue))) thief = Card "Thief" 4 [Action, Attack] [ThiefEffect] -- | -- > playerId `plays` throneRoom `with` (ThroneRoom market) throneRoom = Card "Throne Room" 4 [Action] [PlayActionCard 2] village = Card "Village" 3 [Action] [PlusCard 1, PlusAction 2] witch = Card "Witch" 5 [Action, Attack] [PlusCard 2, OthersGainCurse 1] woodcutter = Card "Woodcutter" 3 [Action] [PlusCoin 2, PlusBuy 1] -- | -- > playerId `plays` workshop `with` (Workshop gardens) workshop = Card "Workshop" 3 [Action] [GainCardUpto 4] gardens = Card "Gardens" 4 [Victory] [GardensEffect] -- All the action cards from the original game. originalCards = [adventurer , bureaucrat , cellar , chancellor , chapel , councilRoom, feast , festival , laboratory , library , market , militia , mine , moat , moneylender, remodel , smithy , spy , thief , throneRoom , village , witch , woodcutter , workshop , gardens ]