utility functions for constructing resource multisets

This commit is contained in:
Jesse D. McDonald 2015-07-18 18:27:36 -05:00
parent 818385c842
commit fc9414f072
3 changed files with 78 additions and 66 deletions

View File

@ -27,7 +27,7 @@ defaultIntrigueDeck = concat $ map (uncurry replicate) $
Quest { _questType = Mandatory Quest { _questType = Mandatory
, _questTitle = "Repel Drow Invaders" , _questTitle = "Repel Drow Invaders"
, _questQuote = "" , _questQuote = ""
, _questCost = MS.fromList [Cleric, Rogue, Rogue] , _questCost = clerics 1 <> rogues 2
, _questReward = scorePoints 2 , _questReward = scorePoints 2
, _questPlotActions = [] , _questPlotActions = []
}) })
@ -35,7 +35,7 @@ defaultIntrigueDeck = concat $ map (uncurry replicate) $
Quest { _questType = Mandatory Quest { _questType = Mandatory
, _questTitle = "Fend Off Bandits" , _questTitle = "Fend Off Bandits"
, _questQuote = "" , _questQuote = ""
, _questCost = MS.fromList [Fighter, Fighter, Wizard] , _questCost = fighters 2 <> wizards 1
, _questReward = scorePoints 2 , _questReward = scorePoints 2
, _questPlotActions = [] , _questPlotActions = []
}) })
@ -43,7 +43,7 @@ defaultIntrigueDeck = concat $ map (uncurry replicate) $
Quest { _questType = Mandatory Quest { _questType = Mandatory
, _questTitle = "Foil the Zhentarim" , _questTitle = "Foil the Zhentarim"
, _questQuote = "" , _questQuote = ""
, _questCost = MS.fromList [Fighter, Rogue, Wizard] , _questCost = fighters 1 <> rogues 1 <> wizards 1
, _questReward = scorePoints 2 , _questReward = scorePoints 2
, _questPlotActions = [] , _questPlotActions = []
}) })
@ -51,7 +51,7 @@ defaultIntrigueDeck = concat $ map (uncurry replicate) $
Quest { _questType = Mandatory Quest { _questType = Mandatory
, _questTitle = "Stamp Out Cultists" , _questTitle = "Stamp Out Cultists"
, _questQuote = "" , _questQuote = ""
, _questCost = MS.fromList [Cleric, Fighter, Rogue] , _questCost = clerics 1 <> fighters 1 <> rogues 1
, _questReward = scorePoints 2 , _questReward = scorePoints 2
, _questPlotActions = [] , _questPlotActions = []
}) })
@ -59,7 +59,7 @@ defaultIntrigueDeck = concat $ map (uncurry replicate) $
Quest { _questType = Mandatory Quest { _questType = Mandatory
, _questTitle = "Placate Angry Merchants" , _questTitle = "Placate Angry Merchants"
, _questQuote = "" , _questQuote = ""
, _questCost = MS.fromList [Cleric, Fighter, Wizard] , _questCost = clerics 1 <> fighters 1 <> wizards 1
, _questReward = scorePoints 4 , _questReward = scorePoints 4
, _questPlotActions = [] , _questPlotActions = []
}) })
@ -67,7 +67,7 @@ defaultIntrigueDeck = concat $ map (uncurry replicate) $
Quest { _questType = Mandatory Quest { _questType = Mandatory
, _questTitle = "Quell Riots" , _questTitle = "Quell Riots"
, _questQuote = "" , _questQuote = ""
, _questCost = MS.fromList [Cleric, Cleric, Fighter] , _questCost = clerics 2 <> fighters 1
, _questReward = scorePoints 4 , _questReward = scorePoints 4
, _questPlotActions = [] , _questPlotActions = []
}) })

View File

@ -24,7 +24,7 @@ defaultQuestDeck =
[ Quest { _questType = Piety [ Quest { _questType = Piety
, _questTitle = "Recruit Paladins for Tyr" , _questTitle = "Recruit Paladins for Tyr"
, _questQuote = "" , _questQuote = ""
, _questCost = MS.fromOccurList [(Cleric, 2), (Fighter, 4), (Gold, 4)] , _questCost = clerics 2 <> fighters 4 <> gold 4
, _questReward = do , _questReward = do
scorePoints 10 scorePoints 10
takeResources 3 [Cleric] takeResources 3 [Cleric]
@ -33,7 +33,7 @@ defaultQuestDeck =
, Quest { _questType = Piety , Quest { _questType = Piety
, _questTitle = "Defend the Tower of Luck" , _questTitle = "Defend the Tower of Luck"
, _questQuote = "" , _questQuote = ""
, _questCost = MS.fromOccurList [(Cleric, 2), (Fighter, 1), (Rogue, 1), (Wizard, 1)] , _questCost = clerics 2 <> fighters 1 <> rogues 1 <> wizards 1
, _questReward = do , _questReward = do
takeResources 1 [Cleric,Fighter,Rogue,Wizard] takeResources 1 [Cleric,Fighter,Rogue,Wizard]
, _questPlotActions = , _questPlotActions =
@ -42,7 +42,7 @@ defaultQuestDeck =
, Quest { _questType = Piety , Quest { _questType = Piety
, _questTitle = "Protect the House of Wonder" , _questTitle = "Protect the House of Wonder"
, _questQuote = "" , _questQuote = ""
, _questCost = MS.fromOccurList [(Cleric, 2), (Fighter, 1), (Gold, 2)] , _questCost = clerics 2 <> fighters 1 <> gold 2
, _questReward = do , _questReward = do
scorePoints 8 scorePoints 8
, _questPlotActions = , _questPlotActions =
@ -51,7 +51,7 @@ defaultQuestDeck =
, Quest { _questType = Piety , Quest { _questType = Piety
, _questTitle = "Produce a Miracle for the Masses" , _questTitle = "Produce a Miracle for the Masses"
, _questQuote = "" , _questQuote = ""
, _questCost = MS.fromOccurList [(Cleric, 2), (Gold, 4)] , _questCost = clerics 2 <> gold 4
, _questReward = do , _questReward = do
scorePoints 5 scorePoints 5
, _questPlotActions = , _questPlotActions =
@ -64,7 +64,7 @@ defaultQuestDeck =
, Quest { _questType = Piety , Quest { _questType = Piety
, _questTitle = "Convert a Noble to Lathander" , _questTitle = "Convert a Noble to Lathander"
, _questQuote = "" , _questQuote = ""
, _questCost = MS.fromOccurList [(Cleric, 2), (Fighter, 1)] , _questCost = clerics 2 <> fighters 1
, _questReward = do , _questReward = do
scorePoints 8 scorePoints 8
chooseQuest chooseQuest
@ -73,7 +73,7 @@ defaultQuestDeck =
, Quest { _questType = Piety , Quest { _questType = Piety
, _questTitle = "Heal Fallen Gray Hand Soldiers" , _questTitle = "Heal Fallen Gray Hand Soldiers"
, _questQuote = "" , _questQuote = ""
, _questCost = MS.fromOccurList [(Cleric, 2), (Wizard, 1), (Gold, 4)] , _questCost = clerics 2 <> wizards 1 <> gold 4
, _questReward = do , _questReward = do
scorePoints 6 scorePoints 6
takeResources 6 [Fighter] takeResources 6 [Fighter]
@ -82,7 +82,7 @@ defaultQuestDeck =
, Quest { _questType = Piety , Quest { _questType = Piety
, _questTitle = "Create a Shrine to Oghma" , _questTitle = "Create a Shrine to Oghma"
, _questQuote = "" , _questQuote = ""
, _questCost = MS.fromOccurList [(Cleric, 5), (Gold, 2)] , _questCost = clerics 5 <> gold 2
, _questReward = do , _questReward = do
scorePoints 25 scorePoints 25
, _questPlotActions = [] , _questPlotActions = []
@ -90,7 +90,7 @@ defaultQuestDeck =
, Quest { _questType = Piety , Quest { _questType = Piety
, _questTitle = "Seal Gate to Cyric's Realm" , _questTitle = "Seal Gate to Cyric's Realm"
, _questQuote = "" , _questQuote = ""
, _questCost = MS.fromOccurList [(Cleric, 2), (Rogue, 3), (Gold, 4)] , _questCost = clerics 2 <> rogues 3 <> gold 4
, _questReward = do , _questReward = do
scorePoints 20 scorePoints 20
, _questPlotActions = [] , _questPlotActions = []
@ -98,7 +98,7 @@ defaultQuestDeck =
, Quest { _questType = Piety , Quest { _questType = Piety
, _questTitle = "Perform the Penance of Duty" , _questTitle = "Perform the Penance of Duty"
, _questQuote = "" , _questQuote = ""
, _questCost = MS.fromOccurList [(Cleric, 2), (Fighter, 2), (Gold, 4)] , _questCost = clerics 2 <> fighters 2 <> gold 4
, _questReward = do , _questReward = do
scorePoints 12 scorePoints 12
takeResources 1 [Cleric] takeResources 1 [Cleric]
@ -108,7 +108,7 @@ defaultQuestDeck =
, Quest { _questType = Piety , Quest { _questType = Piety
, _questTitle = "Form an Alliance with the Rashemi" , _questTitle = "Form an Alliance with the Rashemi"
, _questQuote = "" , _questQuote = ""
, _questCost = MS.fromOccurList [(Cleric, 2), (Wizard, 1)] , _questCost = clerics 2 <> wizards 1
, _questReward = do , _questReward = do
scorePoints 10 scorePoints 10
chooseQuest chooseQuest
@ -117,7 +117,7 @@ defaultQuestDeck =
, Quest { _questType = Piety , Quest { _questType = Piety
, _questTitle = "Eliminate Vampire Coven" , _questTitle = "Eliminate Vampire Coven"
, _questQuote = "" , _questQuote = ""
, _questCost = MS.fromOccurList [(Cleric, 2), (Fighter, 2), (Rogue, 1)] , _questCost = clerics 2 <> fighters 2 <> rogues 1
, _questReward = do , _questReward = do
scorePoints 11 scorePoints 11
takeResources 4 [Gold] takeResources 4 [Gold]
@ -126,7 +126,7 @@ defaultQuestDeck =
, Quest { _questType = Piety , Quest { _questType = Piety
, _questTitle = "Discover Hidden Temple of Lolth" , _questTitle = "Discover Hidden Temple of Lolth"
, _questQuote = "" , _questQuote = ""
, _questCost = MS.fromOccurList [(Cleric, 2), (Fighter, 1), (Rogue, 1)] , _questCost = clerics 2 <> fighters 1 <> rogues 1
, _questReward = do , _questReward = do
scorePoints 10 scorePoints 10
chooseQuest chooseQuest
@ -135,7 +135,7 @@ defaultQuestDeck =
, Quest { _questType = Warfare , Quest { _questType = Warfare
, _questTitle = "Deliver Weapons to Selûne's Temple" , _questTitle = "Deliver Weapons to Selûne's Temple"
, _questQuote = "" , _questQuote = ""
, _questCost = MS.fromOccurList [(Fighter, 4), (Rogue, 1), (Wizard, 1), (Gold, 2)] , _questCost = fighters 4 <> rogues 1 <> wizards 1 <> gold 2
, _questReward = do , _questReward = do
scorePoints 9 scorePoints 9
takeResources 2 [Cleric] takeResources 2 [Cleric]
@ -144,7 +144,7 @@ defaultQuestDeck =
, Quest { _questType = Warfare , Quest { _questType = Warfare
, _questTitle = "Raid Orc Stronghold" , _questTitle = "Raid Orc Stronghold"
, _questQuote = "" , _questQuote = ""
, _questCost = MS.fromOccurList [(Fighter, 4), (Rogue, 2)] , _questCost = fighters 4 <> rogues 2
, _questReward = do , _questReward = do
scorePoints 8 scorePoints 8
takeResources 4 [Gold] takeResources 4 [Gold]
@ -153,7 +153,7 @@ defaultQuestDeck =
, Quest { _questType = Warfare , Quest { _questType = Warfare
, _questTitle = "Bolster City Guard" , _questTitle = "Bolster City Guard"
, _questQuote = "" , _questQuote = ""
, _questCost = MS.fromOccurList [(Fighter, 9), (Rogue, 2)] , _questCost = fighters 9 <> rogues 2
, _questReward = do , _questReward = do
scorePoints 25 scorePoints 25
, _questPlotActions = [] , _questPlotActions = []
@ -161,7 +161,7 @@ defaultQuestDeck =
, Quest { _questType = Warfare , Quest { _questType = Warfare
, _questTitle = "Recruit Lieutenant" , _questTitle = "Recruit Lieutenant"
, _questQuote = "" , _questQuote = ""
, _questCost = MS.fromOccurList [(Cleric, 1), (Fighter, 5), (Rogue, 1), (Wizard, 1)] , _questCost = clerics 1 <> fighters 5 <> rogues 1 <> wizards 1
, _questReward = do , _questReward = do
noAction noAction
, _questPlotActions = , _questPlotActions =
@ -170,7 +170,7 @@ defaultQuestDeck =
, Quest { _questType = Warfare , Quest { _questType = Warfare
, _questTitle = "Train Bladesingers" , _questTitle = "Train Bladesingers"
, _questQuote = "" , _questQuote = ""
, _questCost = MS.fromOccurList [(Fighter, 3), (Wizard, 1)] , _questCost = fighters 3 <> wizards 1
, _questReward = do , _questReward = do
scorePoints 4 scorePoints 4
takeResources 1 [Fighter] takeResources 1 [Fighter]
@ -180,7 +180,7 @@ defaultQuestDeck =
, Quest { _questType = Warfare , Quest { _questType = Warfare
, _questTitle = "Repel Seawraiths" , _questTitle = "Repel Seawraiths"
, _questQuote = "" , _questQuote = ""
, _questCost = MS.fromOccurList [(Cleric, 1), (Fighter, 4), (Wizard, 1)] , _questCost = clerics 1 <> fighters 4 <> wizards 1
, _questReward = do , _questReward = do
scorePoints 15 scorePoints 15
takeResources 2 [Gold] takeResources 2 [Gold]
@ -189,7 +189,7 @@ defaultQuestDeck =
, Quest { _questType = Warfare , Quest { _questType = Warfare
, _questTitle = "Bolster Griffon Cavalry" , _questTitle = "Bolster Griffon Cavalry"
, _questQuote = "" , _questQuote = ""
, _questCost = MS.fromOccurList [(Fighter, 4), (Gold, 4)] , _questCost = fighters 4 <> gold 4
, _questReward = do , _questReward = do
scorePoints 6 scorePoints 6
, _questPlotActions = , _questPlotActions =
@ -198,7 +198,7 @@ defaultQuestDeck =
, Quest { _questType = Warfare , Quest { _questType = Warfare
, _questTitle = "Deliver an Ultimatum" , _questTitle = "Deliver an Ultimatum"
, _questQuote = "" , _questQuote = ""
, _questCost = MS.fromOccurList [(Fighter, 4), (Rogue, 1), (Wizard, 1)] , _questCost = fighters 4 <> rogues 1 <> wizards 1
, _questReward = do , _questReward = do
scorePoints 11 scorePoints 11
takeResources 4 [Gold] takeResources 4 [Gold]
@ -207,7 +207,7 @@ defaultQuestDeck =
, Quest { _questType = Warfare , Quest { _questType = Warfare
, _questTitle = "Ambush Artor Morlin" , _questTitle = "Ambush Artor Morlin"
, _questQuote = "" , _questQuote = ""
, _questCost = MS.fromOccurList [(Cleric, 1), (Fighter, 3), (Rogue, 1)] , _questCost = clerics 1 <> fighters 3 <> rogues 1
, _questReward = do , _questReward = do
scorePoints 8 scorePoints 8
takeResources 4 [Gold] takeResources 4 [Gold]
@ -216,7 +216,7 @@ defaultQuestDeck =
, Quest { _questType = Warfare , Quest { _questType = Warfare
, _questTitle = "Quell Mercenary Uprising" , _questTitle = "Quell Mercenary Uprising"
, _questQuote = "" , _questQuote = ""
, _questCost = MS.fromOccurList [(Cleric, 1), (Fighter, 4)] , _questCost = clerics 1 <> fighters 4
, _questReward = do , _questReward = do
scorePoints 8 scorePoints 8
takeResources 4 [Gold] takeResources 4 [Gold]
@ -226,7 +226,7 @@ defaultQuestDeck =
, Quest { _questType = Warfare , Quest { _questType = Warfare
, _questTitle = "Confront the Xanathar" , _questTitle = "Confront the Xanathar"
, _questQuote = "" , _questQuote = ""
, _questCost = MS.fromOccurList [(Cleric, 1), (Fighter, 4), (Rogue, 2), (Wizard, 1)] , _questCost = clerics 1 <> fighters 4 <> rogues 2 <> wizards 1
, _questReward = do , _questReward = do
scorePoints 20 scorePoints 20
takeResources 2 [Gold] takeResources 2 [Gold]
@ -235,7 +235,7 @@ defaultQuestDeck =
, Quest { _questType = Warfare , Quest { _questType = Warfare
, _questTitle = "Defeat Uprising from Undermountain" , _questTitle = "Defeat Uprising from Undermountain"
, _questQuote = "" , _questQuote = ""
, _questCost = MS.fromOccurList [(Cleric, 1), (Fighter, 3), (Rogue, 1), (Gold, 2)] , _questCost = clerics 1 <> fighters 3 <> rogues 1 <> gold 2
, _questReward = do , _questReward = do
scorePoints 11 scorePoints 11
takeResources 2 [Fighter] takeResources 2 [Fighter]
@ -244,7 +244,7 @@ defaultQuestDeck =
, Quest { _questType = Skullduggery , Quest { _questType = Skullduggery
, _questTitle = "Place a Sleeper Agent in Skullport" , _questTitle = "Place a Sleeper Agent in Skullport"
, _questQuote = "" , _questQuote = ""
, _questCost = MS.fromOccurList [(Fighter, 1), (Rogue, 4), (Wizard, 1)] , _questCost = fighters 1 <> rogues 4 <> wizards 1
, _questReward = do , _questReward = do
noAction noAction
, _questPlotActions = , _questPlotActions =
@ -253,7 +253,7 @@ defaultQuestDeck =
, Quest { _questType = Skullduggery , Quest { _questType = Skullduggery
, _questTitle = "Establish Shadow Thieves' Guild" , _questTitle = "Establish Shadow Thieves' Guild"
, _questQuote = "" , _questQuote = ""
, _questCost = MS.fromOccurList [(Fighter, 1), (Rogue, 8), (Wizard, 1)] , _questCost = fighters 1 <> rogues 8 <> wizards 1
, _questReward = do , _questReward = do
scorePoints 25 scorePoints 25
, _questPlotActions = [] , _questPlotActions = []
@ -261,7 +261,7 @@ defaultQuestDeck =
, Quest { _questType = Skullduggery , Quest { _questType = Skullduggery
, _questTitle = "Build a Reputation in Skullport" , _questTitle = "Build a Reputation in Skullport"
, _questQuote = "" , _questQuote = ""
, _questCost = MS.fromOccurList [(Fighter, 1), (Rogue, 3), (Gold, 4)] , _questCost = fighters 1 <> rogues 3 <> gold 4
, _questReward = do , _questReward = do
scorePoints 10 scorePoints 10
drawIntrigue drawIntrigue
@ -270,7 +270,7 @@ defaultQuestDeck =
, Quest { _questType = Skullduggery , Quest { _questType = Skullduggery
, _questTitle = "Fence Goods for Duke of Darkness" , _questTitle = "Fence Goods for Duke of Darkness"
, _questQuote = "" , _questQuote = ""
, _questCost = MS.fromOccurList [(Fighter, 1), (Rogue, 3), (Gold, 4)] , _questCost = fighters 1 <> rogues 3 <> gold 4
, _questReward = do , _questReward = do
scorePoints 6 scorePoints 6
, _questPlotActions = , _questPlotActions =
@ -279,7 +279,7 @@ defaultQuestDeck =
, Quest { _questType = Skullduggery , Quest { _questType = Skullduggery
, _questTitle = "Raid on Undermountain" , _questTitle = "Raid on Undermountain"
, _questQuote = "" , _questQuote = ""
, _questCost = MS.fromOccurList [(Cleric, 1), (Fighter, 2), (Rogue, 4), (Wizard, 1)] , _questCost = clerics 1 <> fighters 2 <> rogues 4 <> wizards 1
, _questReward = do , _questReward = do
scorePoints 20 scorePoints 20
takeResources 2 [Gold] takeResources 2 [Gold]
@ -288,7 +288,7 @@ defaultQuestDeck =
, Quest { _questType = Skullduggery , Quest { _questType = Skullduggery
, _questTitle = "Steal from House Adarbrent" , _questTitle = "Steal from House Adarbrent"
, _questQuote = "" , _questQuote = ""
, _questCost = MS.fromOccurList [(Fighter, 1), (Rogue, 4), (Wizard, 1)] , _questCost = fighters 1 <> rogues 4 <> wizards 1
, _questReward = do , _questReward = do
scorePoints 10 scorePoints 10
takeResources 6 [Gold] takeResources 6 [Gold]
@ -297,7 +297,7 @@ defaultQuestDeck =
, Quest { _questType = Skullduggery , Quest { _questType = Skullduggery
, _questTitle = "Prison Break" , _questTitle = "Prison Break"
, _questQuote = "" , _questQuote = ""
, _questCost = MS.fromOccurList [(Rogue, 4), (Wizard, 2), (Gold, 2)] , _questCost = rogues 4 <> wizards 2 <> gold 2
, _questReward = do , _questReward = do
scorePoints 14 scorePoints 14
takeResources 2 [Fighter] takeResources 2 [Fighter]
@ -307,7 +307,7 @@ defaultQuestDeck =
, Quest { _questType = Skullduggery , Quest { _questType = Skullduggery
, _questTitle = "Take Over Rival Organization" , _questTitle = "Take Over Rival Organization"
, _questQuote = "" , _questQuote = ""
, _questCost = MS.fromOccurList [(Fighter, 1), (Rogue, 2), (Wizard, 1), (Gold, 6)] , _questCost = fighters 1 <> rogues 2 <> wizards 1 <> gold 6
, _questReward = do , _questReward = do
scorePoints 10 scorePoints 10
takeResources 4 [Rogue] takeResources 4 [Rogue]
@ -317,7 +317,7 @@ defaultQuestDeck =
, Quest { _questType = Skullduggery , Quest { _questType = Skullduggery
, _questTitle = "Procure Stolen Goods" , _questTitle = "Procure Stolen Goods"
, _questQuote = "" , _questQuote = ""
, _questCost = MS.fromOccurList [(Rogue, 3), (Gold, 6)] , _questCost = rogues 3 <> gold 6
, _questReward = do , _questReward = do
scorePoints 8 scorePoints 8
drawIntrigue drawIntrigue
@ -327,7 +327,7 @@ defaultQuestDeck =
, Quest { _questType = Skullduggery , Quest { _questType = Skullduggery
, _questTitle = "Establish Harpers Safe House" , _questTitle = "Establish Harpers Safe House"
, _questQuote = "" , _questQuote = ""
, _questCost = MS.fromOccurList [(Fighter, 2), (Rogue, 3), (Gold, 2)] , _questCost = fighters 2 <> rogues 3 <> gold 2
, _questReward = do , _questReward = do
scorePoints 8 scorePoints 8
forEachControlledBuilding $ forEachControlledBuilding $
@ -337,7 +337,7 @@ defaultQuestDeck =
, Quest { _questType = Skullduggery , Quest { _questType = Skullduggery
, _questTitle = "Expose Cult Corruption" , _questTitle = "Expose Cult Corruption"
, _questQuote = "" , _questQuote = ""
, _questCost = MS.fromOccurList [(Cleric, 1), (Rogue, 4)] , _questCost = clerics 1 <> rogues 4
, _questReward = do , _questReward = do
scorePoints 4 scorePoints 4
takeResources 2 [Cleric] takeResources 2 [Cleric]
@ -346,7 +346,7 @@ defaultQuestDeck =
, Quest { _questType = Skullduggery , Quest { _questType = Skullduggery
, _questTitle = "Install a Spy in Castle Waterdeep" , _questTitle = "Install a Spy in Castle Waterdeep"
, _questQuote = "" , _questQuote = ""
, _questCost = MS.fromOccurList [(Rogue, 4), (Gold, 4)] , _questCost = rogues 4 <> gold 4
, _questReward = do , _questReward = do
scorePoints 8 scorePoints 8
, _questPlotActions = , _questPlotActions =
@ -355,7 +355,7 @@ defaultQuestDeck =
, Quest { _questType = Arcana , Quest { _questType = Arcana
, _questTitle = "Expose Red Wizards' Spies" , _questTitle = "Expose Red Wizards' Spies"
, _questQuote = "" , _questQuote = ""
, _questCost = MS.fromOccurList [(Cleric, 1), (Fighter, 1), (Rogue, 2), (Wizard, 2), (Gold, 2)] , _questCost = clerics 1 <> fighters 1 <> rogues 2 <> wizards 2 <> gold 2
, _questReward = do , _questReward = do
scorePoints 20 scorePoints 20
drawIntrigue drawIntrigue
@ -364,7 +364,7 @@ defaultQuestDeck =
, Quest { _questType = Arcana , Quest { _questType = Arcana
, _questTitle = "Host Festival for Sune" , _questTitle = "Host Festival for Sune"
, _questQuote = "" , _questQuote = ""
, _questCost = MS.fromOccurList [(Fighter, 2), (Wizard, 2), (Gold, 4)] , _questCost = fighters 2 <> wizards 2 <> gold 4
, _questReward = do , _questReward = do
scorePoints 9 scorePoints 9
takeResources 2 [Cleric] takeResources 2 [Cleric]
@ -373,7 +373,7 @@ defaultQuestDeck =
, Quest { _questType = Arcana , Quest { _questType = Arcana
, _questTitle = "Steal Spellbook from Silverhand" , _questTitle = "Steal Spellbook from Silverhand"
, _questQuote = "" , _questQuote = ""
, _questCost = MS.fromOccurList [(Fighter, 1), (Rogue, 2), (Wizard, 2)] , _questCost = fighters 1 <> rogues 2 <> wizards 2
, _questReward = do , _questReward = do
scorePoints 7 scorePoints 7
drawIntrigue drawIntrigue
@ -384,7 +384,7 @@ defaultQuestDeck =
, Quest { _questType = Arcana , Quest { _questType = Arcana
, _questTitle = "Recruit for Blackstaff Academy" , _questTitle = "Recruit for Blackstaff Academy"
, _questQuote = "" , _questQuote = ""
, _questCost = MS.fromOccurList [(Fighter, 1), (Rogue, 1), (Wizard, 2), (Gold, 4)] , _questCost = fighters 1 <> rogues 1 <> wizards 2 <> gold 4
, _questReward = do , _questReward = do
scorePoints 6 scorePoints 6
takeResources 3 [Wizard] takeResources 3 [Wizard]
@ -393,7 +393,7 @@ defaultQuestDeck =
, Quest { _questType = Arcana , Quest { _questType = Arcana
, _questTitle = "Retrieve Ancient Artifacts" , _questTitle = "Retrieve Ancient Artifacts"
, _questQuote = "" , _questQuote = ""
, _questCost = MS.fromOccurList [(Fighter, 2), (Rogue, 1), (Wizard, 2)] , _questCost = fighters 2 <> rogues 1 <> wizards 2
, _questReward = do , _questReward = do
scorePoints 11 scorePoints 11
takeResources 4 [Gold] takeResources 4 [Gold]
@ -402,7 +402,7 @@ defaultQuestDeck =
, Quest { _questType = Arcana , Quest { _questType = Arcana
, _questTitle = "Recover the Magister's Orb" , _questTitle = "Recover the Magister's Orb"
, _questQuote = "" , _questQuote = ""
, _questCost = MS.fromOccurList [(Rogue, 3), (Wizard, 2)] , _questCost = rogues 3 <> wizards 2
, _questReward = do , _questReward = do
scorePoints 6 scorePoints 6
enableAssignOnceToOpponentsSpace enableAssignOnceToOpponentsSpace
@ -412,7 +412,7 @@ defaultQuestDeck =
, Quest { _questType = Arcana , Quest { _questType = Arcana
, _questTitle = "Study the Illusk Arch" , _questTitle = "Study the Illusk Arch"
, _questQuote = "" , _questQuote = ""
, _questCost = MS.fromOccurList [(Cleric, 1), (Wizard, 2)] , _questCost = clerics 1 <> wizards 2
, _questReward = do , _questReward = do
scorePoints 8 scorePoints 8
, _questPlotActions = , _questPlotActions =
@ -421,7 +421,7 @@ defaultQuestDeck =
, Quest { _questType = Arcana , Quest { _questType = Arcana
, _questTitle = "Explore Ahghairon's Tower" , _questTitle = "Explore Ahghairon's Tower"
, _questQuote = "" , _questQuote = ""
, _questCost = MS.fromOccurList [(Fighter, 1), (Wizard, 2), (Gold, 2)] , _questCost = fighters 1 <> wizards 2 <> gold 2
, _questReward = do , _questReward = do
scorePoints 6 scorePoints 6
, _questPlotActions = , _questPlotActions =
@ -430,7 +430,7 @@ defaultQuestDeck =
, Quest { _questType = Arcana , Quest { _questType = Arcana
, _questTitle = "Infiltrate Halaster's Circle" , _questTitle = "Infiltrate Halaster's Circle"
, _questQuote = "" , _questQuote = ""
, _questCost = MS.fromOccurList [(Wizard, 5), (Gold, 2)] , _questCost = wizards 5 <> gold 2
, _questReward = do , _questReward = do
scorePoints 25 scorePoints 25
, _questPlotActions = [] , _questPlotActions = []
@ -438,7 +438,7 @@ defaultQuestDeck =
, Quest { _questType = Arcana , Quest { _questType = Arcana
, _questTitle = "Domesticate Owlbears" , _questTitle = "Domesticate Owlbears"
, _questQuote = "" , _questQuote = ""
, _questCost = MS.fromOccurList [(Cleric, 1), (Wizard, 2)] , _questCost = clerics 1 <> wizards 2
, _questReward = do , _questReward = do
scorePoints 8 scorePoints 8
takeResources 1 [Fighter] takeResources 1 [Fighter]
@ -448,7 +448,7 @@ defaultQuestDeck =
, Quest { _questType = Arcana , Quest { _questType = Arcana
, _questTitle = "Investigate Aberrant Infestation" , _questTitle = "Investigate Aberrant Infestation"
, _questQuote = "" , _questQuote = ""
, _questCost = MS.fromOccurList [(Cleric, 1), (Fighter, 1), (Wizard, 2)] , _questCost = clerics 1 <> fighters 1 <> wizards 2
, _questReward = do , _questReward = do
scorePoints 13 scorePoints 13
drawIntrigue drawIntrigue
@ -457,7 +457,7 @@ defaultQuestDeck =
, Quest { _questType = Arcana , Quest { _questType = Arcana
, _questTitle = "Research Chronomancy" , _questTitle = "Research Chronomancy"
, _questQuote = "" , _questQuote = ""
, _questCost = MS.fromOccurList [(Wizard, 2), (Gold, 4)] , _questCost = wizards 2 <> gold 4
, _questReward = do , _questReward = do
scorePoints 4 scorePoints 4
takeResources 1 [Wizard] takeResources 1 [Wizard]
@ -467,7 +467,7 @@ defaultQuestDeck =
, Quest { _questType = Commerce , Quest { _questType = Commerce
, _questTitle = "Infiltrate Builder's Hall" , _questTitle = "Infiltrate Builder's Hall"
, _questQuote = "" , _questQuote = ""
, _questCost = MS.fromOccurList [(Fighter, 2), (Rogue, 2), (Gold, 4)] , _questCost = fighters 2 <> rogues 2 <> gold 4
, _questReward = do , _questReward = do
scorePoints 6 scorePoints 6
, _questPlotActions = , _questPlotActions =
@ -476,7 +476,7 @@ defaultQuestDeck =
, Quest { _questType = Commerce , Quest { _questType = Commerce
, _questTitle = "Loot the Crypt of Chauntea" , _questTitle = "Loot the Crypt of Chauntea"
, _questQuote = "" , _questQuote = ""
, _questCost = MS.fromOccurList [(Cleric, 1), (Rogue, 3), (Gold, 2)] , _questCost = clerics 1 <> rogues 3 <> gold 2
, _questReward = do , _questReward = do
scorePoints 7 scorePoints 7
drawIntrigue drawIntrigue
@ -486,7 +486,7 @@ defaultQuestDeck =
, Quest { _questType = Commerce , Quest { _questType = Commerce
, _questTitle = "Impersonate Adarbrent Noble" , _questTitle = "Impersonate Adarbrent Noble"
, _questQuote = "" , _questQuote = ""
, _questCost = MS.fromOccurList [(Cleric, 1), (Fighter, 2), (Rogue, 2), (Wizard, 1), (Gold, 4)] , _questCost = clerics 1 <> fighters 2 <> rogues 2 <> wizards 1 <> gold 4
, _questReward = do , _questReward = do
scorePoints 18 scorePoints 18
drawIntrigue drawIntrigue
@ -496,7 +496,7 @@ defaultQuestDeck =
, Quest { _questType = Commerce , Quest { _questType = Commerce
, _questTitle = "Safeguard Eltorchul Mage" , _questTitle = "Safeguard Eltorchul Mage"
, _questQuote = "" , _questQuote = ""
, _questCost = MS.fromOccurList [(Fighter, 1), (Rogue, 1), (Wizard, 1), (Gold, 4)] , _questCost = fighters 1 <> rogues 1 <> wizards 1 <> gold 4
, _questReward = do , _questReward = do
scorePoints 4 scorePoints 4
takeResources 2 [Wizard] takeResources 2 [Wizard]
@ -505,7 +505,7 @@ defaultQuestDeck =
, Quest { _questType = Commerce , Quest { _questType = Commerce
, _questTitle = "Thin the City Watch" , _questTitle = "Thin the City Watch"
, _questQuote = "" , _questQuote = ""
, _questCost = MS.fromOccurList [(Cleric, 1), (Fighter, 1), (Rogue, 1), (Gold, 4)] , _questCost = clerics 1 <> fighters 1 <> rogues 1 <> gold 4
, _questReward = do , _questReward = do
scorePoints 9 scorePoints 9
takeResources 4 [Rogue] takeResources 4 [Rogue]
@ -514,7 +514,7 @@ defaultQuestDeck =
, Quest { _questType = Commerce , Quest { _questType = Commerce
, _questTitle = "Bribe the Shipwrights" , _questTitle = "Bribe the Shipwrights"
, _questQuote = "" , _questQuote = ""
, _questCost = MS.fromOccurList [(Rogue, 4), (Wizard, 1), (Gold, 4)] , _questCost = rogues 4 <> wizards 1 <> gold 4
, _questReward = do , _questReward = do
scorePoints 10 scorePoints 10
, _questPlotActions = , _questPlotActions =
@ -523,7 +523,7 @@ defaultQuestDeck =
, Quest { _questType = Commerce , Quest { _questType = Commerce
, _questTitle = "Lure Artisans of Mirabar" , _questTitle = "Lure Artisans of Mirabar"
, _questQuote = "" , _questQuote = ""
, _questCost = MS.fromOccurList [(Cleric, 1), (Fighter, 1), (Rogue, 1)] , _questCost = clerics 1 <> fighters 1 <> rogues 1
, _questReward = do , _questReward = do
scorePoints 4 scorePoints 4
chooseFreeBuilding chooseFreeBuilding
@ -532,7 +532,7 @@ defaultQuestDeck =
, Quest { _questType = Commerce , Quest { _questType = Commerce
, _questTitle = "Placate the Walking Statue" , _questTitle = "Placate the Walking Statue"
, _questQuote = "" , _questQuote = ""
, _questCost = MS.fromOccurList [(Cleric, 2), (Rogue, 2)] , _questCost = clerics 2 <> rogues 2
, _questReward = do , _questReward = do
scorePoints 10 scorePoints 10
drawFreeBuilding drawFreeBuilding
@ -541,7 +541,7 @@ defaultQuestDeck =
, Quest { _questType = Commerce , Quest { _questType = Commerce
, _questTitle = "Establish New Merchant Guild" , _questTitle = "Establish New Merchant Guild"
, _questQuote = "" , _questQuote = ""
, _questCost = MS.fromOccurList [(Cleric, 1), (Fighter, 2), (Gold, 4)] , _questCost = clerics 1 <> fighters 2 <> gold 4
, _questReward = do , _questReward = do
scorePoints 8 scorePoints 8
, _questPlotActions = , _questPlotActions =
@ -550,7 +550,7 @@ defaultQuestDeck =
, Quest { _questType = Commerce , Quest { _questType = Commerce
, _questTitle = "Send Aid to the Harpers" , _questTitle = "Send Aid to the Harpers"
, _questQuote = "" , _questQuote = ""
, _questCost = MS.fromOccurList [(Cleric, 1), (Fighter, 1), (Rogue, 1), (Gold, 4)] , _questCost = clerics 1 <> fighters 1 <> rogues 1 <> gold 4
, _questReward = do , _questReward = do
scorePoints 15 scorePoints 15
forOneOpponent $ takeResources 4 [Gold] forOneOpponent $ takeResources 4 [Gold]
@ -559,7 +559,7 @@ defaultQuestDeck =
, Quest { _questType = Commerce , Quest { _questType = Commerce
, _questTitle = "Ally with House Thann" , _questTitle = "Ally with House Thann"
, _questQuote = "" , _questQuote = ""
, _questCost = MS.fromOccurList [(Cleric, 1), (Rogue, 3), (Wizard, 1), (Gold, 8)] , _questCost = clerics 1 <> rogues 3 <> wizards 1 <> gold 8
, _questReward = do , _questReward = do
scorePoints 25 scorePoints 25
, _questPlotActions = [] , _questPlotActions = []
@ -567,7 +567,7 @@ defaultQuestDeck =
, Quest { _questType = Commerce , Quest { _questType = Commerce
, _questTitle = "Spy on the House of Light" , _questTitle = "Spy on the House of Light"
, _questQuote = "" , _questQuote = ""
, _questCost = MS.fromOccurList [(Fighter, 3), (Rogue, 2), (Gold, 2)] , _questCost = fighters 3 <> rogues 2 <> gold 2
, _questReward = do , _questReward = do
scorePoints 6 scorePoints 6
takeResources 6 [Gold] takeResources 6 [Gold]

View File

@ -108,6 +108,11 @@ module Waterdeep.Types
, runWaterdeepM , runWaterdeepM
, canPerformAction , canPerformAction
, filterChoices , filterChoices
, clerics
, fighters
, rogues
, wizards
, gold
) where ) where
import Control.Applicative import Control.Applicative
@ -234,6 +239,13 @@ data Resource = Cleric | Fighter | Rogue | Wizard | Gold
type ResourceSet = Set.Set Resource type ResourceSet = Set.Set Resource
type ResourceBag = MS.MultiSet Resource type ResourceBag = MS.MultiSet Resource
clerics, fighters, rogues, wizards, gold :: MS.Occur -> ResourceBag
clerics n = MS.insertMany Cleric n MS.empty
fighters n = MS.insertMany Fighter n MS.empty
rogues n = MS.insertMany Rogue n MS.empty
wizards n = MS.insertMany Wizard n MS.empty
gold n = MS.insertMany Gold n MS.empty
data QuestType = Piety | Warfare | Skullduggery | Arcana | Commerce | Mandatory data QuestType = Piety | Warfare | Skullduggery | Arcana | Commerce | Mandatory
deriving (Eq,Ord,Enum,Bounded,Show) deriving (Eq,Ord,Enum,Bounded,Show)