enter details for the cards in the Quest deck
This commit is contained in:
parent
349472da78
commit
c788c563fa
|
|
@ -24,6 +24,7 @@ import System.Random.Shuffle
|
||||||
import Text.Printf
|
import Text.Printf
|
||||||
import Waterdeep.Actions
|
import Waterdeep.Actions
|
||||||
import Waterdeep.Logic
|
import Waterdeep.Logic
|
||||||
|
import Waterdeep.Quests
|
||||||
import Waterdeep.Types
|
import Waterdeep.Types
|
||||||
import Waterdeep.Util
|
import Waterdeep.Util
|
||||||
|
|
||||||
|
|
@ -46,30 +47,6 @@ f2 = Faction "Pilots" Green
|
||||||
l2 = Lord "Princess Anastasia" "" (QuestBonus [Arcana, Warfare] 4)
|
l2 = Lord "Princess Anastasia" "" (QuestBonus [Arcana, Warfare] 4)
|
||||||
p2 = ("Ned", f2, l2)
|
p2 = ("Ned", f2, l2)
|
||||||
|
|
||||||
q1 = Quest { _questType = Arcana
|
|
||||||
, _questTitle = "Research Palantirs"
|
|
||||||
, _questQuote = ""
|
|
||||||
, _questAction = do
|
|
||||||
returnResources 1 [Cleric]
|
|
||||||
returnResources 1 [Rogue]
|
|
||||||
returnResources 1 [Rogue]
|
|
||||||
returnResources 1 [Wizard]
|
|
||||||
returnResources 4 [Gold]
|
|
||||||
scorePoints 15
|
|
||||||
takeResources 8 [Gold]
|
|
||||||
, _questPlotActions = []
|
|
||||||
}
|
|
||||||
|
|
||||||
q2 = Quest { _questType = Skullduggery
|
|
||||||
, _questTitle = "Rob Waterdeep Bank"
|
|
||||||
, _questQuote = ""
|
|
||||||
, _questAction = do
|
|
||||||
returnResources 8 [Rogue]
|
|
||||||
scorePoints 10
|
|
||||||
takeResources 16 [Gold]
|
|
||||||
, _questPlotActions = []
|
|
||||||
}
|
|
||||||
|
|
||||||
b1 = Building { _buildingCost = 6
|
b1 = Building { _buildingCost = 6
|
||||||
, _buildingTitle = "Monastary"
|
, _buildingTitle = "Monastary"
|
||||||
, _buildingAction = takeResources 2 [Cleric]
|
, _buildingAction = takeResources 2 [Cleric]
|
||||||
|
|
@ -181,7 +158,7 @@ menuPrompt ref redraw (NotifyState w) = do
|
||||||
modifyIORef ref (gameState .~ w)
|
modifyIORef ref (gameState .~ w)
|
||||||
redraw
|
redraw
|
||||||
menuPrompt ref redraw (Broadcast s) = do
|
menuPrompt ref redraw (Broadcast s) = do
|
||||||
modifyIORef ref (gameMessages %~ ((s:) . take 2))
|
modifyIORef ref (gameMessages %~ ((s:) . take 4))
|
||||||
redraw
|
redraw
|
||||||
menuPrompt ref redraw prm@(SolicitChoice p t cs) = do
|
menuPrompt ref redraw prm@(SolicitChoice p t cs) = do
|
||||||
let menuSize = length cs
|
let menuSize = length cs
|
||||||
|
|
@ -220,7 +197,7 @@ printMenu cs = do
|
||||||
|
|
||||||
main :: IO ()
|
main :: IO ()
|
||||||
main = do
|
main = do
|
||||||
w0 <- newGame [p1, p2] (mrepeat 4 [q1, q2]) (mrepeat 4 [i1, i2]) [b1, b2, b3, b4, b5] <$> getSplit
|
w0 <- newGame [p1, p2] defaultQuestDeck (mrepeat 4 [i1, i2]) [b1, b2, b3, b4, b5] <$> getSplit
|
||||||
ref <- newIORef (DisplayState { _gameState = w0, _gameMessages = [] })
|
ref <- newIORef (DisplayState { _gameState = w0, _gameMessages = [] })
|
||||||
Just (winners, w') <- runWaterdeepM (menuPrompt ref (drawState ref)) waterdeepGame w0
|
Just (winners, w') <- runWaterdeepM (menuPrompt ref (drawState ref)) waterdeepGame w0
|
||||||
let playerIDToName n = w0 ^. gamePlayerName n
|
let playerIDToName n = w0 ^. gamePlayerName n
|
||||||
|
|
|
||||||
|
|
@ -32,14 +32,15 @@ module Waterdeep.Actions
|
||||||
, gainAmbassador
|
, gainAmbassador
|
||||||
, assignMandatoryQuest
|
, assignMandatoryQuest
|
||||||
, becomeFirstPlayer
|
, becomeFirstPlayer
|
||||||
|
, enableAssignOnceToOpponentsSpace
|
||||||
, forOneOpponent
|
, forOneOpponent
|
||||||
, forEachOpponent
|
, forEachOpponent
|
||||||
, forCurrentPlayer
|
, forCurrentPlayer
|
||||||
|
, forEachBuilding
|
||||||
|
, forEachControlledBuilding
|
||||||
, restockCliffwatchInn
|
, restockCliffwatchInn
|
||||||
, restockBuildersHall
|
, restockBuildersHall
|
||||||
, getOpponents
|
, getOpponents
|
||||||
, getNumberOfBuildings
|
|
||||||
, getNumberOfControlledBuildings
|
|
||||||
) where
|
) where
|
||||||
|
|
||||||
import Control.Applicative
|
import Control.Applicative
|
||||||
|
|
@ -171,12 +172,13 @@ completeQuest = do
|
||||||
let choices = map (\(i,q) -> (q ^. questTitle, (i, q))) availQuests
|
let choices = map (\(i,q) -> (q ^. questTitle, (i, q))) availQuests
|
||||||
(i, quest) <- solicitChoice "Complete one quest:" $ nubOn fst choices
|
(i, quest) <- solicitChoice "Complete one quest:" $ nubOn fst choices
|
||||||
activePlayerState . playerIncompleteQuests %= deleteAt i
|
activePlayerState . playerIncompleteQuests %= deleteAt i
|
||||||
quest ^. questAction
|
quest ^. questCost
|
||||||
|
name <- use activePlayerName
|
||||||
|
broadcast $ name ++ " completed the " ++ (quest ^. questTitle) ++ " quest."
|
||||||
|
quest ^. questReward
|
||||||
if null (quest ^. questPlotActions)
|
if null (quest ^. questPlotActions)
|
||||||
then activePlayerState . playerCompletedQuests <>= [quest]
|
then activePlayerState . playerCompletedQuests <>= [quest]
|
||||||
else activePlayerState . playerActivePlotQuests <>= [quest]
|
else activePlayerState . playerActivePlotQuests <>= [quest]
|
||||||
name <- use $ activePlayerName
|
|
||||||
broadcast $ name ++ " completed the " ++ (quest ^. questTitle) ++ " quest."
|
|
||||||
|
|
||||||
chooseAndCompleteQuest :: GameAction -> GameAction
|
chooseAndCompleteQuest :: GameAction -> GameAction
|
||||||
chooseAndCompleteQuest bonusAction = do
|
chooseAndCompleteQuest bonusAction = do
|
||||||
|
|
@ -187,12 +189,13 @@ chooseAndCompleteQuest bonusAction = do
|
||||||
True -> do
|
True -> do
|
||||||
incompleteQuests <- use (activePlayerState . playerIncompleteQuests)
|
incompleteQuests <- use (activePlayerState . playerIncompleteQuests)
|
||||||
guard . not . or $ map ((== Mandatory) . view questType) incompleteQuests
|
guard . not . or $ map ((== Mandatory) . view questType) incompleteQuests
|
||||||
quest ^. questAction
|
quest ^. questCost
|
||||||
|
name <- use $ activePlayerName
|
||||||
|
broadcast $ name ++ " completed the " ++ (quest ^. questTitle) ++ " quest."
|
||||||
|
quest ^. questReward
|
||||||
if null (quest ^. questPlotActions)
|
if null (quest ^. questPlotActions)
|
||||||
then activePlayerState . playerCompletedQuests <>= [quest]
|
then activePlayerState . playerCompletedQuests <>= [quest]
|
||||||
else activePlayerState . playerActivePlotQuests <>= [quest]
|
else activePlayerState . playerActivePlotQuests <>= [quest]
|
||||||
name <- use $ activePlayerName
|
|
||||||
broadcast $ name ++ " completed the " ++ (quest ^. questTitle) ++ " quest."
|
|
||||||
bonusAction
|
bonusAction
|
||||||
False -> do
|
False -> do
|
||||||
activePlayerState . playerIncompleteQuests <>= [quest]
|
activePlayerState . playerIncompleteQuests <>= [quest]
|
||||||
|
|
@ -379,6 +382,10 @@ becomeFirstPlayer = do
|
||||||
name <- use $ activePlayerName
|
name <- use $ activePlayerName
|
||||||
broadcast $ name ++ " is now the first player."
|
broadcast $ name ++ " is now the first player."
|
||||||
|
|
||||||
|
enableAssignOnceToOpponentsSpace :: GameAction
|
||||||
|
enableAssignOnceToOpponentsSpace = do
|
||||||
|
activePlayerState . playerCanUseOpSpace .= True
|
||||||
|
|
||||||
forOneOpponent :: GameAction -> GameAction
|
forOneOpponent :: GameAction -> GameAction
|
||||||
forOneOpponent a1 = do
|
forOneOpponent a1 = do
|
||||||
opponents <- getOpponents
|
opponents <- getOpponents
|
||||||
|
|
@ -469,14 +476,17 @@ getOpponents = do
|
||||||
p <- use gameActivePlayer
|
p <- use gameActivePlayer
|
||||||
filter (\p1 -> (p1 ^. playerNumber) /= p) . toListOf traverse <$> use gamePlayerStates
|
filter (\p1 -> (p1 ^. playerNumber) /= p) . toListOf traverse <$> use gamePlayerStates
|
||||||
|
|
||||||
getNumberOfBuildings :: Waterdeep Int
|
forEachBuilding :: GameAction -> GameAction
|
||||||
getNumberOfBuildings = countOf traverse isOwned <$> use gameBuildings
|
forEachBuilding m = do
|
||||||
|
advancedBuildings <- countOf traverse isAdvanced <$> use gameBuildings
|
||||||
|
replicateM_ advancedBuildings m
|
||||||
where
|
where
|
||||||
isOwned b = b ^. buildingOwner /= noPlayerID
|
isAdvanced b = b ^. buildingOwner /= noPlayerID
|
||||||
|
|
||||||
getNumberOfControlledBuildings :: Waterdeep Int
|
forEachControlledBuilding :: GameAction -> GameAction
|
||||||
getNumberOfControlledBuildings = do
|
forEachControlledBuilding m = do
|
||||||
p <- use gameActivePlayer
|
p <- use gameActivePlayer
|
||||||
countOf traverse (`isOwnedBy` p) <$> use gameBuildings
|
controlledBuildings <- countOf traverse (`isControlledBy` p) <$> use gameBuildings
|
||||||
|
replicateM_ controlledBuildings m
|
||||||
where
|
where
|
||||||
b `isOwnedBy` p = b ^. buildingOwner == p
|
b `isControlledBy` p = b ^. buildingOwner == p
|
||||||
|
|
|
||||||
|
|
@ -118,8 +118,8 @@ waterdeepGame = do
|
||||||
when (passes < np) $ do
|
when (passes < np) $ do
|
||||||
advanceToNextPlayer
|
advanceToNextPlayer
|
||||||
loop
|
loop
|
||||||
|
broadcast $ "Game over!"
|
||||||
scoreFinalPoints
|
scoreFinalPoints
|
||||||
notifyState
|
|
||||||
determineWinners
|
determineWinners
|
||||||
|
|
||||||
advanceToNextPlayer :: Waterdeep ()
|
advanceToNextPlayer :: Waterdeep ()
|
||||||
|
|
@ -144,9 +144,11 @@ beginRound round = do
|
||||||
activePlayerState . playerUsedPlotQuests .= []
|
activePlayerState . playerUsedPlotQuests .= []
|
||||||
activePlayerState . playerActivePlotQuests <>= qs
|
activePlayerState . playerActivePlotQuests <>= qs
|
||||||
activePlayerState . playerAgentsInPool .= agents
|
activePlayerState . playerAgentsInPool .= agents
|
||||||
|
activePlayerState . playerCanUseOpSpace .= False
|
||||||
use (activePlayerState . playerHasLieutenant) >>= \case
|
use (activePlayerState . playerHasLieutenant) >>= \case
|
||||||
True -> activePlayerState . playerAgentsInPool += 1 >> return ()
|
True -> activePlayerState . playerAgentsInPool += 1 >> return ()
|
||||||
False -> return ()
|
False -> return ()
|
||||||
|
--TODO: Start-of-round plot actions
|
||||||
|
|
||||||
scoreFinalPoints :: Waterdeep ()
|
scoreFinalPoints :: Waterdeep ()
|
||||||
scoreFinalPoints = do
|
scoreFinalPoints = do
|
||||||
|
|
@ -184,6 +186,7 @@ determineWinners = do
|
||||||
let winners1 = filter ((== bestScore) . view playerScore) playerStates
|
let winners1 = filter ((== bestScore) . view playerScore) playerStates
|
||||||
let bestGold = maximum $ map playerGold winners1
|
let bestGold = maximum $ map playerGold winners1
|
||||||
let winners2 = filter ((== bestGold) . playerGold) winners1
|
let winners2 = filter ((== bestGold) . playerGold) winners1
|
||||||
|
broadcast $ "Winners: " ++ (intercalate ", " (winners2 ^.. traverse . playerName))
|
||||||
return (winners2 ^.. traverse . playerNumber)
|
return (winners2 ^.. traverse . playerNumber)
|
||||||
where
|
where
|
||||||
playerGold = MS.occur Gold . view playerTavern
|
playerGold = MS.occur Gold . view playerTavern
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,754 @@
|
||||||
|
module Waterdeep.Quests
|
||||||
|
( defaultQuestDeck
|
||||||
|
) where
|
||||||
|
|
||||||
|
import Control.Applicative
|
||||||
|
import Control.Monad
|
||||||
|
import Data.List
|
||||||
|
import Data.Monoid
|
||||||
|
import Data.Traversable (traverse)
|
||||||
|
import Lens.Family2
|
||||||
|
import Lens.Family2.Stock
|
||||||
|
import Lens.Family2.State
|
||||||
|
import Lens.Family2.TH
|
||||||
|
import Waterdeep.Actions
|
||||||
|
import Waterdeep.Types
|
||||||
|
import Waterdeep.Util
|
||||||
|
|
||||||
|
import qualified Data.IntMap as IM
|
||||||
|
import qualified Data.Map as M
|
||||||
|
import qualified Data.MultiSet as MS
|
||||||
|
|
||||||
|
defaultQuestDeck :: [Quest]
|
||||||
|
defaultQuestDeck =
|
||||||
|
[ Quest { _questType = Piety
|
||||||
|
, _questTitle = "Recruit Paladins for Tyr"
|
||||||
|
, _questQuote = ""
|
||||||
|
, _questCost = do
|
||||||
|
returnResources 2 [Cleric]
|
||||||
|
returnResources 4 [Fighter]
|
||||||
|
returnResources 4 [Gold]
|
||||||
|
, _questReward = do
|
||||||
|
scorePoints 10
|
||||||
|
takeResources 3 [Cleric]
|
||||||
|
, _questPlotActions = []
|
||||||
|
}
|
||||||
|
, Quest { _questType = Piety
|
||||||
|
, _questTitle = "Defend the Tower of Luck"
|
||||||
|
, _questQuote = ""
|
||||||
|
, _questCost = do
|
||||||
|
returnResources 2 [Cleric]
|
||||||
|
returnResources 1 [Fighter]
|
||||||
|
returnResources 1 [Rogue]
|
||||||
|
returnResources 1 [Wizard]
|
||||||
|
, _questReward = do
|
||||||
|
takeResources 1 [Cleric,Fighter,Rogue,Wizard]
|
||||||
|
, _questPlotActions =
|
||||||
|
[(StartOfRound, takeResources 1 [Cleric,Fighter,Rogue,Wizard])]
|
||||||
|
}
|
||||||
|
, Quest { _questType = Piety
|
||||||
|
, _questTitle = "Protect the House of Wonder"
|
||||||
|
, _questQuote = ""
|
||||||
|
, _questCost = do
|
||||||
|
returnResources 2 [Cleric]
|
||||||
|
returnResources 1 [Fighter]
|
||||||
|
returnResources 2 [Gold]
|
||||||
|
, _questReward = do
|
||||||
|
scorePoints 8
|
||||||
|
, _questPlotActions =
|
||||||
|
[(Whenever (CompletesQuest [Piety]), scorePoints 2)]
|
||||||
|
}
|
||||||
|
, Quest { _questType = Piety
|
||||||
|
, _questTitle = "Produce a Miracle for the Masses"
|
||||||
|
, _questQuote = ""
|
||||||
|
, _questCost = do
|
||||||
|
returnResources 2 [Cleric]
|
||||||
|
returnResources 4 [Gold]
|
||||||
|
, _questReward = do
|
||||||
|
scorePoints 5
|
||||||
|
, _questPlotActions =
|
||||||
|
[( OncePerRoundWhen (ActionProvides [Cleric])
|
||||||
|
, do { returnResources 1 [Fighter, Rogue, Wizard]
|
||||||
|
; takeResources 1 [Cleric]
|
||||||
|
})]
|
||||||
|
}
|
||||||
|
, Quest { _questType = Piety
|
||||||
|
, _questTitle = "Convert a Noble to Lathander"
|
||||||
|
, _questQuote = ""
|
||||||
|
, _questCost = do
|
||||||
|
returnResources 2 [Cleric]
|
||||||
|
returnResources 1 [Fighter]
|
||||||
|
, _questReward = do
|
||||||
|
scorePoints 8
|
||||||
|
chooseQuest
|
||||||
|
, _questPlotActions = []
|
||||||
|
}
|
||||||
|
, Quest { _questType = Piety
|
||||||
|
, _questTitle = "Heal Fallen Gray Hand Soldiers"
|
||||||
|
, _questQuote = ""
|
||||||
|
, _questCost = do
|
||||||
|
returnResources 2 [Cleric]
|
||||||
|
returnResources 1 [Wizard]
|
||||||
|
returnResources 4 [Gold]
|
||||||
|
, _questReward = do
|
||||||
|
scorePoints 6
|
||||||
|
takeResources 6 [Fighter]
|
||||||
|
, _questPlotActions = []
|
||||||
|
}
|
||||||
|
, Quest { _questType = Piety
|
||||||
|
, _questTitle = "Create a Shrine to Oghma"
|
||||||
|
, _questQuote = ""
|
||||||
|
, _questCost = do
|
||||||
|
returnResources 5 [Cleric]
|
||||||
|
returnResources 2 [Gold]
|
||||||
|
, _questReward = do
|
||||||
|
scorePoints 25
|
||||||
|
, _questPlotActions = []
|
||||||
|
}
|
||||||
|
, Quest { _questType = Piety
|
||||||
|
, _questTitle = "Seal Gate to Cyric's Realm"
|
||||||
|
, _questQuote = ""
|
||||||
|
, _questCost = do
|
||||||
|
returnResources 2 [Cleric]
|
||||||
|
returnResources 3 [Rogue]
|
||||||
|
returnResources 4 [Gold]
|
||||||
|
, _questReward = do
|
||||||
|
scorePoints 20
|
||||||
|
, _questPlotActions = []
|
||||||
|
}
|
||||||
|
, Quest { _questType = Piety
|
||||||
|
, _questTitle = "Perform the Penance of Duty"
|
||||||
|
, _questQuote = ""
|
||||||
|
, _questCost = do
|
||||||
|
returnResources 2 [Cleric]
|
||||||
|
returnResources 2 [Fighter]
|
||||||
|
returnResources 4 [Gold]
|
||||||
|
, _questReward = do
|
||||||
|
scorePoints 12
|
||||||
|
takeResources 1 [Cleric]
|
||||||
|
takeResources 1 [Fighter]
|
||||||
|
, _questPlotActions = []
|
||||||
|
}
|
||||||
|
, Quest { _questType = Piety
|
||||||
|
, _questTitle = "Form an Alliance with the Rashemi"
|
||||||
|
, _questQuote = ""
|
||||||
|
, _questCost = do
|
||||||
|
returnResources 2 [Cleric]
|
||||||
|
returnResources 1 [Wizard]
|
||||||
|
, _questReward = do
|
||||||
|
scorePoints 10
|
||||||
|
chooseQuest
|
||||||
|
, _questPlotActions = []
|
||||||
|
}
|
||||||
|
, Quest { _questType = Piety
|
||||||
|
, _questTitle = "Eliminate Vampire Coven"
|
||||||
|
, _questQuote = ""
|
||||||
|
, _questCost = do
|
||||||
|
returnResources 2 [Cleric]
|
||||||
|
returnResources 2 [Fighter]
|
||||||
|
returnResources 1 [Rogue]
|
||||||
|
, _questReward = do
|
||||||
|
scorePoints 11
|
||||||
|
takeResources 4 [Gold]
|
||||||
|
, _questPlotActions = []
|
||||||
|
}
|
||||||
|
, Quest { _questType = Piety
|
||||||
|
, _questTitle = "Discover Hidden Temple of Lolth"
|
||||||
|
, _questQuote = ""
|
||||||
|
, _questCost = do
|
||||||
|
returnResources 2 [Cleric]
|
||||||
|
returnResources 1 [Fighter]
|
||||||
|
returnResources 1 [Rogue]
|
||||||
|
, _questReward = do
|
||||||
|
scorePoints 10
|
||||||
|
chooseQuest
|
||||||
|
, _questPlotActions = []
|
||||||
|
}
|
||||||
|
, Quest { _questType = Warfare
|
||||||
|
, _questTitle = "Deliver Weapons to Selûne's Temple"
|
||||||
|
, _questQuote = ""
|
||||||
|
, _questCost = do
|
||||||
|
returnResources 4 [Fighter]
|
||||||
|
returnResources 1 [Rogue]
|
||||||
|
returnResources 1 [Wizard]
|
||||||
|
returnResources 2 [Gold]
|
||||||
|
, _questReward = do
|
||||||
|
scorePoints 9
|
||||||
|
takeResources 2 [Cleric]
|
||||||
|
, _questPlotActions = []
|
||||||
|
}
|
||||||
|
, Quest { _questType = Warfare
|
||||||
|
, _questTitle = "Raid Orc Stronghold"
|
||||||
|
, _questQuote = ""
|
||||||
|
, _questCost = do
|
||||||
|
returnResources 4 [Fighter]
|
||||||
|
returnResources 2 [Rogue]
|
||||||
|
, _questReward = do
|
||||||
|
scorePoints 8
|
||||||
|
takeResources 4 [Gold]
|
||||||
|
, _questPlotActions = []
|
||||||
|
}
|
||||||
|
, Quest { _questType = Warfare
|
||||||
|
, _questTitle = "Bolster City Guard"
|
||||||
|
, _questQuote = ""
|
||||||
|
, _questCost = do
|
||||||
|
returnResources 9 [Fighter]
|
||||||
|
returnResources 2 [Rogue]
|
||||||
|
, _questReward = do
|
||||||
|
scorePoints 25
|
||||||
|
, _questPlotActions = []
|
||||||
|
}
|
||||||
|
, Quest { _questType = Warfare
|
||||||
|
, _questTitle = "Recruit Lieutenant"
|
||||||
|
, _questQuote = ""
|
||||||
|
, _questCost = do
|
||||||
|
returnResources 1 [Cleric]
|
||||||
|
returnResources 5 [Fighter]
|
||||||
|
returnResources 1 [Rogue]
|
||||||
|
returnResources 1 [Wizard]
|
||||||
|
, _questReward = do
|
||||||
|
noAction
|
||||||
|
, _questPlotActions =
|
||||||
|
[(Immediately, gainLieutenant)]
|
||||||
|
}
|
||||||
|
, Quest { _questType = Warfare
|
||||||
|
, _questTitle = "Train Bladesingers"
|
||||||
|
, _questQuote = ""
|
||||||
|
, _questCost = do
|
||||||
|
returnResources 3 [Fighter]
|
||||||
|
returnResources 1 [Wizard]
|
||||||
|
, _questReward = do
|
||||||
|
scorePoints 4
|
||||||
|
takeResources 1 [Fighter]
|
||||||
|
takeResources 1 [Wizard]
|
||||||
|
, _questPlotActions = []
|
||||||
|
}
|
||||||
|
, Quest { _questType = Warfare
|
||||||
|
, _questTitle = "Repel Seawraiths"
|
||||||
|
, _questQuote = ""
|
||||||
|
, _questCost = do
|
||||||
|
returnResources 1 [Cleric]
|
||||||
|
returnResources 4 [Fighter]
|
||||||
|
returnResources 1 [Wizard]
|
||||||
|
, _questReward = do
|
||||||
|
scorePoints 15
|
||||||
|
takeResources 2 [Gold]
|
||||||
|
, _questPlotActions = []
|
||||||
|
}
|
||||||
|
, Quest { _questType = Warfare
|
||||||
|
, _questTitle = "Bolster Griffon Cavalry"
|
||||||
|
, _questQuote = ""
|
||||||
|
, _questCost = do
|
||||||
|
returnResources 4 [Fighter]
|
||||||
|
returnResources 4 [Gold]
|
||||||
|
, _questReward = do
|
||||||
|
scorePoints 6
|
||||||
|
, _questPlotActions =
|
||||||
|
[(Whenever (ActionProvides [Fighter])
|
||||||
|
, takeResources 1 [Fighter])]
|
||||||
|
}
|
||||||
|
, Quest { _questType = Warfare
|
||||||
|
, _questTitle = "Deliver an Ultimatum"
|
||||||
|
, _questQuote = ""
|
||||||
|
, _questCost = do
|
||||||
|
returnResources 4 [Fighter]
|
||||||
|
returnResources 1 [Rogue]
|
||||||
|
returnResources 1 [Wizard]
|
||||||
|
, _questReward = do
|
||||||
|
scorePoints 11
|
||||||
|
takeResources 4 [Gold]
|
||||||
|
, _questPlotActions = []
|
||||||
|
}
|
||||||
|
, Quest { _questType = Warfare
|
||||||
|
, _questTitle = "Ambush Artor Morlin"
|
||||||
|
, _questQuote = ""
|
||||||
|
, _questCost = do
|
||||||
|
returnResources 1 [Cleric]
|
||||||
|
returnResources 3 [Fighter]
|
||||||
|
returnResources 1 [Rogue]
|
||||||
|
, _questReward = do
|
||||||
|
scorePoints 8
|
||||||
|
takeResources 4 [Gold]
|
||||||
|
, _questPlotActions = []
|
||||||
|
}
|
||||||
|
, Quest { _questType = Warfare
|
||||||
|
, _questTitle = "Quell Mercenary Uprising"
|
||||||
|
, _questQuote = ""
|
||||||
|
, _questCost = do
|
||||||
|
returnResources 1 [Cleric]
|
||||||
|
returnResources 4 [Fighter]
|
||||||
|
, _questReward = do
|
||||||
|
scorePoints 8
|
||||||
|
takeResources 4 [Gold]
|
||||||
|
, _questPlotActions =
|
||||||
|
[(Whenever (CompletesQuest [Warfare]), scorePoints 2)]
|
||||||
|
}
|
||||||
|
, Quest { _questType = Warfare
|
||||||
|
, _questTitle = "Confront the Xanathar"
|
||||||
|
, _questQuote = ""
|
||||||
|
, _questCost = do
|
||||||
|
returnResources 1 [Cleric]
|
||||||
|
returnResources 4 [Fighter]
|
||||||
|
returnResources 2 [Rogue]
|
||||||
|
returnResources 1 [Wizard]
|
||||||
|
, _questReward = do
|
||||||
|
scorePoints 20
|
||||||
|
takeResources 2 [Gold]
|
||||||
|
, _questPlotActions = []
|
||||||
|
}
|
||||||
|
, Quest { _questType = Warfare
|
||||||
|
, _questTitle = "Defeat Uprising from Undermountain"
|
||||||
|
, _questQuote = ""
|
||||||
|
, _questCost = do
|
||||||
|
returnResources 1 [Cleric]
|
||||||
|
returnResources 3 [Fighter]
|
||||||
|
returnResources 1 [Rogue]
|
||||||
|
returnResources 2 [Gold]
|
||||||
|
, _questReward = do
|
||||||
|
scorePoints 11
|
||||||
|
takeResources 2 [Fighter]
|
||||||
|
, _questPlotActions = []
|
||||||
|
}
|
||||||
|
, Quest { _questType = Skullduggery
|
||||||
|
, _questTitle = "Place a Sleeper Agent in Skullport"
|
||||||
|
, _questQuote = ""
|
||||||
|
, _questCost = do
|
||||||
|
returnResources 1 [Fighter]
|
||||||
|
returnResources 4 [Rogue]
|
||||||
|
returnResources 1 [Wizard]
|
||||||
|
, _questReward = do
|
||||||
|
noAction
|
||||||
|
, _questPlotActions =
|
||||||
|
[(Whenever PlaysIntrigue, scorePoints 2)]
|
||||||
|
}
|
||||||
|
, Quest { _questType = Skullduggery
|
||||||
|
, _questTitle = "Establish Shadow Thieves' Guild"
|
||||||
|
, _questQuote = ""
|
||||||
|
, _questCost = do
|
||||||
|
returnResources 1 [Fighter]
|
||||||
|
returnResources 8 [Rogue]
|
||||||
|
returnResources 1 [Wizard]
|
||||||
|
, _questReward = do
|
||||||
|
scorePoints 25
|
||||||
|
, _questPlotActions = []
|
||||||
|
}
|
||||||
|
, Quest { _questType = Skullduggery
|
||||||
|
, _questTitle = "Build a Reputation in Skullport"
|
||||||
|
, _questQuote = ""
|
||||||
|
, _questCost = do
|
||||||
|
returnResources 1 [Fighter]
|
||||||
|
returnResources 3 [Rogue]
|
||||||
|
returnResources 4 [Gold]
|
||||||
|
, _questReward = do
|
||||||
|
scorePoints 10
|
||||||
|
drawIntrigue
|
||||||
|
, _questPlotActions = []
|
||||||
|
}
|
||||||
|
, Quest { _questType = Skullduggery
|
||||||
|
, _questTitle = "Fence Goods for Duke of Darkness"
|
||||||
|
, _questQuote = ""
|
||||||
|
, _questCost = do
|
||||||
|
returnResources 1 [Fighter]
|
||||||
|
returnResources 3 [Rogue]
|
||||||
|
returnResources 4 [Gold]
|
||||||
|
, _questReward = do
|
||||||
|
scorePoints 6
|
||||||
|
, _questPlotActions =
|
||||||
|
[(Whenever (ActionProvides [Rogue]), takeResources 2 [Gold])]
|
||||||
|
}
|
||||||
|
, Quest { _questType = Skullduggery
|
||||||
|
, _questTitle = "Raid on Undermountain"
|
||||||
|
, _questQuote = ""
|
||||||
|
, _questCost = do
|
||||||
|
returnResources 1 [Cleric]
|
||||||
|
returnResources 2 [Fighter]
|
||||||
|
returnResources 4 [Rogue]
|
||||||
|
returnResources 1 [Wizard]
|
||||||
|
, _questReward = do
|
||||||
|
scorePoints 20
|
||||||
|
takeResources 2 [Gold]
|
||||||
|
, _questPlotActions = []
|
||||||
|
}
|
||||||
|
, Quest { _questType = Skullduggery
|
||||||
|
, _questTitle = "Steal from House Adarbrent"
|
||||||
|
, _questQuote = ""
|
||||||
|
, _questCost = do
|
||||||
|
returnResources 1 [Fighter]
|
||||||
|
returnResources 4 [Rogue]
|
||||||
|
returnResources 1 [Wizard]
|
||||||
|
, _questReward = do
|
||||||
|
scorePoints 10
|
||||||
|
takeResources 6 [Gold]
|
||||||
|
, _questPlotActions = []
|
||||||
|
}
|
||||||
|
, Quest { _questType = Skullduggery
|
||||||
|
, _questTitle = "Prison Break"
|
||||||
|
, _questQuote = ""
|
||||||
|
, _questCost = do
|
||||||
|
returnResources 4 [Rogue]
|
||||||
|
returnResources 2 [Wizard]
|
||||||
|
returnResources 2 [Gold]
|
||||||
|
, _questReward = do
|
||||||
|
scorePoints 14
|
||||||
|
takeResources 2 [Fighter]
|
||||||
|
playIntrigue
|
||||||
|
, _questPlotActions = []
|
||||||
|
}
|
||||||
|
, Quest { _questType = Skullduggery
|
||||||
|
, _questTitle = "Take Over Rival Organization"
|
||||||
|
, _questQuote = ""
|
||||||
|
, _questCost = do
|
||||||
|
returnResources 1 [Fighter]
|
||||||
|
returnResources 2 [Rogue]
|
||||||
|
returnResources 1 [Wizard]
|
||||||
|
returnResources 6 [Gold]
|
||||||
|
, _questReward = do
|
||||||
|
scorePoints 10
|
||||||
|
takeResources 4 [Rogue]
|
||||||
|
playIntrigue
|
||||||
|
, _questPlotActions = []
|
||||||
|
}
|
||||||
|
, Quest { _questType = Skullduggery
|
||||||
|
, _questTitle = "Procure Stolen Goods"
|
||||||
|
, _questQuote = ""
|
||||||
|
, _questCost = do
|
||||||
|
returnResources 3 [Rogue]
|
||||||
|
returnResources 6 [Gold]
|
||||||
|
, _questReward = do
|
||||||
|
scorePoints 8
|
||||||
|
drawIntrigue
|
||||||
|
drawIntrigue
|
||||||
|
, _questPlotActions = []
|
||||||
|
}
|
||||||
|
, Quest { _questType = Skullduggery
|
||||||
|
, _questTitle = "Establish Harpers Safe House"
|
||||||
|
, _questQuote = ""
|
||||||
|
, _questCost = do
|
||||||
|
returnResources 2 [Fighter]
|
||||||
|
returnResources 3 [Rogue]
|
||||||
|
returnResources 2 [Gold]
|
||||||
|
, _questReward = do
|
||||||
|
scorePoints 8
|
||||||
|
forEachControlledBuilding $
|
||||||
|
scorePoints 2
|
||||||
|
, _questPlotActions = []
|
||||||
|
}
|
||||||
|
, Quest { _questType = Skullduggery
|
||||||
|
, _questTitle = "Expose Cult Corruption"
|
||||||
|
, _questQuote = ""
|
||||||
|
, _questCost = do
|
||||||
|
returnResources 1 [Cleric]
|
||||||
|
returnResources 4 [Rogue]
|
||||||
|
, _questReward = do
|
||||||
|
scorePoints 4
|
||||||
|
takeResources 2 [Cleric]
|
||||||
|
, _questPlotActions = []
|
||||||
|
}
|
||||||
|
, Quest { _questType = Skullduggery
|
||||||
|
, _questTitle = "Install a Spy in Castle Waterdeep"
|
||||||
|
, _questQuote = ""
|
||||||
|
, _questCost = do
|
||||||
|
returnResources 4 [Rogue]
|
||||||
|
returnResources 4 [Gold]
|
||||||
|
, _questReward = do
|
||||||
|
scorePoints 8
|
||||||
|
, _questPlotActions =
|
||||||
|
[(Whenever (CompletesQuest [Skullduggery]), scorePoints 2)]
|
||||||
|
}
|
||||||
|
, Quest { _questType = Arcana
|
||||||
|
, _questTitle = "Expose Red Wizards' Spies"
|
||||||
|
, _questQuote = ""
|
||||||
|
, _questCost = do
|
||||||
|
returnResources 1 [Cleric]
|
||||||
|
returnResources 1 [Fighter]
|
||||||
|
returnResources 2 [Rogue]
|
||||||
|
returnResources 2 [Wizard]
|
||||||
|
returnResources 2 [Gold]
|
||||||
|
, _questReward = do
|
||||||
|
scorePoints 20
|
||||||
|
drawIntrigue
|
||||||
|
, _questPlotActions = []
|
||||||
|
}
|
||||||
|
, Quest { _questType = Arcana
|
||||||
|
, _questTitle = "Host Festival for Sune"
|
||||||
|
, _questQuote = ""
|
||||||
|
, _questCost = do
|
||||||
|
returnResources 2 [Fighter]
|
||||||
|
returnResources 2 [Wizard]
|
||||||
|
returnResources 4 [Gold]
|
||||||
|
, _questReward = do
|
||||||
|
scorePoints 9
|
||||||
|
takeResources 2 [Cleric]
|
||||||
|
, _questPlotActions = []
|
||||||
|
}
|
||||||
|
, Quest { _questType = Arcana
|
||||||
|
, _questTitle = "Steal Spellbook from Silverhand"
|
||||||
|
, _questQuote = ""
|
||||||
|
, _questCost = do
|
||||||
|
returnResources 1 [Fighter]
|
||||||
|
returnResources 2 [Rogue]
|
||||||
|
returnResources 2 [Wizard]
|
||||||
|
, _questReward = do
|
||||||
|
scorePoints 7
|
||||||
|
drawIntrigue
|
||||||
|
drawIntrigue
|
||||||
|
takeResources 4 [Gold]
|
||||||
|
, _questPlotActions = []
|
||||||
|
}
|
||||||
|
, Quest { _questType = Arcana
|
||||||
|
, _questTitle = "Recruit for Blackstaff Academy"
|
||||||
|
, _questQuote = ""
|
||||||
|
, _questCost = do
|
||||||
|
returnResources 1 [Fighter]
|
||||||
|
returnResources 1 [Rogue]
|
||||||
|
returnResources 2 [Wizard]
|
||||||
|
returnResources 4 [Gold]
|
||||||
|
, _questReward = do
|
||||||
|
scorePoints 6
|
||||||
|
takeResources 3 [Wizard]
|
||||||
|
, _questPlotActions = []
|
||||||
|
}
|
||||||
|
, Quest { _questType = Arcana
|
||||||
|
, _questTitle = "Retrieve Ancient Artifacts"
|
||||||
|
, _questQuote = ""
|
||||||
|
, _questCost = do
|
||||||
|
returnResources 2 [Fighter]
|
||||||
|
returnResources 1 [Rogue]
|
||||||
|
returnResources 2 [Wizard]
|
||||||
|
, _questReward = do
|
||||||
|
scorePoints 11
|
||||||
|
takeResources 4 [Gold]
|
||||||
|
, _questPlotActions = []
|
||||||
|
}
|
||||||
|
, Quest { _questType = Arcana
|
||||||
|
, _questTitle = "Recover the Magister's Orb"
|
||||||
|
, _questQuote = ""
|
||||||
|
, _questCost = do
|
||||||
|
returnResources 3 [Rogue]
|
||||||
|
returnResources 2 [Wizard]
|
||||||
|
, _questReward = do
|
||||||
|
scorePoints 6
|
||||||
|
enableAssignOnceToOpponentsSpace
|
||||||
|
, _questPlotActions =
|
||||||
|
[(StartOfRound, enableAssignOnceToOpponentsSpace)]
|
||||||
|
}
|
||||||
|
, Quest { _questType = Arcana
|
||||||
|
, _questTitle = "Study the Illusk Arch"
|
||||||
|
, _questQuote = ""
|
||||||
|
, _questCost = do
|
||||||
|
returnResources 1 [Cleric]
|
||||||
|
returnResources 2 [Wizard]
|
||||||
|
, _questReward = do
|
||||||
|
scorePoints 8
|
||||||
|
, _questPlotActions =
|
||||||
|
[(Whenever (CompletesQuest [Arcana]), scorePoints 2)]
|
||||||
|
}
|
||||||
|
, Quest { _questType = Arcana
|
||||||
|
, _questTitle = "Explore Ahghairon's Tower"
|
||||||
|
, _questQuote = ""
|
||||||
|
, _questCost = do
|
||||||
|
returnResources 1 [Fighter]
|
||||||
|
returnResources 2 [Wizard]
|
||||||
|
returnResources 2 [Gold]
|
||||||
|
, _questReward = do
|
||||||
|
scorePoints 6
|
||||||
|
, _questPlotActions =
|
||||||
|
[(Whenever (ActionProvides [Wizard]), drawIntrigue)]
|
||||||
|
}
|
||||||
|
, Quest { _questType = Arcana
|
||||||
|
, _questTitle = "Infiltrate Halaster's Circle"
|
||||||
|
, _questQuote = ""
|
||||||
|
, _questCost = do
|
||||||
|
returnResources 5 [Wizard]
|
||||||
|
returnResources 2 [Gold]
|
||||||
|
, _questReward = do
|
||||||
|
scorePoints 25
|
||||||
|
, _questPlotActions = []
|
||||||
|
}
|
||||||
|
, Quest { _questType = Arcana
|
||||||
|
, _questTitle = "Domesticate Owlbears"
|
||||||
|
, _questQuote = ""
|
||||||
|
, _questCost = do
|
||||||
|
returnResources 1 [Cleric]
|
||||||
|
returnResources 2 [Wizard]
|
||||||
|
, _questReward = do
|
||||||
|
scorePoints 8
|
||||||
|
takeResources 1 [Fighter]
|
||||||
|
takeResources 2 [Gold]
|
||||||
|
, _questPlotActions = []
|
||||||
|
}
|
||||||
|
, Quest { _questType = Arcana
|
||||||
|
, _questTitle = "Investigate Aberrant Infestation"
|
||||||
|
, _questQuote = ""
|
||||||
|
, _questCost = do
|
||||||
|
returnResources 1 [Cleric]
|
||||||
|
returnResources 1 [Fighter]
|
||||||
|
returnResources 2 [Wizard]
|
||||||
|
, _questReward = do
|
||||||
|
scorePoints 13
|
||||||
|
drawIntrigue
|
||||||
|
, _questPlotActions = []
|
||||||
|
}
|
||||||
|
, Quest { _questType = Arcana
|
||||||
|
, _questTitle = "Research Chronomancy"
|
||||||
|
, _questQuote = ""
|
||||||
|
, _questCost = do
|
||||||
|
returnResources 2 [Wizard]
|
||||||
|
returnResources 4 [Gold]
|
||||||
|
, _questReward = do
|
||||||
|
scorePoints 4
|
||||||
|
takeResources 1 [Wizard]
|
||||||
|
returnAgent
|
||||||
|
, _questPlotActions = []
|
||||||
|
}
|
||||||
|
, Quest { _questType = Commerce
|
||||||
|
, _questTitle = "Infiltrate Builder's Hall"
|
||||||
|
, _questQuote = ""
|
||||||
|
, _questCost = do
|
||||||
|
returnResources 2 [Fighter]
|
||||||
|
returnResources 2 [Rogue]
|
||||||
|
returnResources 4 [Gold]
|
||||||
|
, _questReward = do
|
||||||
|
scorePoints 6
|
||||||
|
, _questPlotActions =
|
||||||
|
[(Whenever BuysBuilding, scorePoints 4)]
|
||||||
|
}
|
||||||
|
, Quest { _questType = Commerce
|
||||||
|
, _questTitle = "Loot the Crypt of Chauntea"
|
||||||
|
, _questQuote = ""
|
||||||
|
, _questCost = do
|
||||||
|
returnResources 1 [Cleric]
|
||||||
|
returnResources 3 [Rogue]
|
||||||
|
returnResources 2 [Gold]
|
||||||
|
, _questReward = do
|
||||||
|
scorePoints 7
|
||||||
|
drawIntrigue
|
||||||
|
drawQuest
|
||||||
|
, _questPlotActions = []
|
||||||
|
}
|
||||||
|
, Quest { _questType = Commerce
|
||||||
|
, _questTitle = "Impersonate Adarbrent Noble"
|
||||||
|
, _questQuote = ""
|
||||||
|
, _questCost = do
|
||||||
|
returnResources 1 [Cleric]
|
||||||
|
returnResources 2 [Fighter]
|
||||||
|
returnResources 2 [Rogue]
|
||||||
|
returnResources 1 [Wizard]
|
||||||
|
returnResources 4 [Gold]
|
||||||
|
, _questReward = do
|
||||||
|
scorePoints 18
|
||||||
|
drawIntrigue
|
||||||
|
drawIntrigue
|
||||||
|
, _questPlotActions = []
|
||||||
|
}
|
||||||
|
, Quest { _questType = Commerce
|
||||||
|
, _questTitle = "Safeguard Eltorchul Mage"
|
||||||
|
, _questQuote = ""
|
||||||
|
, _questCost = do
|
||||||
|
returnResources 1 [Fighter]
|
||||||
|
returnResources 1 [Rogue]
|
||||||
|
returnResources 1 [Wizard]
|
||||||
|
returnResources 4 [Gold]
|
||||||
|
, _questReward = do
|
||||||
|
scorePoints 4
|
||||||
|
takeResources 2 [Wizard]
|
||||||
|
, _questPlotActions = []
|
||||||
|
}
|
||||||
|
, Quest { _questType = Commerce
|
||||||
|
, _questTitle = "Thin the City Watch"
|
||||||
|
, _questQuote = ""
|
||||||
|
, _questCost = do
|
||||||
|
returnResources 1 [Cleric]
|
||||||
|
returnResources 1 [Fighter]
|
||||||
|
returnResources 1 [Rogue]
|
||||||
|
returnResources 4 [Gold]
|
||||||
|
, _questReward = do
|
||||||
|
scorePoints 9
|
||||||
|
takeResources 4 [Rogue]
|
||||||
|
, _questPlotActions = []
|
||||||
|
}
|
||||||
|
, Quest { _questType = Commerce
|
||||||
|
, _questTitle = "Bribe the Shipwrights"
|
||||||
|
, _questQuote = ""
|
||||||
|
, _questCost = do
|
||||||
|
returnResources 4 [Rogue]
|
||||||
|
returnResources 1 [Wizard]
|
||||||
|
returnResources 4 [Gold]
|
||||||
|
, _questReward = do
|
||||||
|
scorePoints 10
|
||||||
|
, _questPlotActions =
|
||||||
|
[(Whenever (ActionProvides [Gold]), takeResources 1 [Rogue])]
|
||||||
|
}
|
||||||
|
, Quest { _questType = Commerce
|
||||||
|
, _questTitle = "Lure Artisans of Mirabar"
|
||||||
|
, _questQuote = ""
|
||||||
|
, _questCost = do
|
||||||
|
returnResources 1 [Cleric]
|
||||||
|
returnResources 1 [Fighter]
|
||||||
|
returnResources 1 [Rogue]
|
||||||
|
, _questReward = do
|
||||||
|
scorePoints 4
|
||||||
|
chooseFreeBuilding
|
||||||
|
, _questPlotActions = []
|
||||||
|
}
|
||||||
|
, Quest { _questType = Commerce
|
||||||
|
, _questTitle = "Placate the Walking Statue"
|
||||||
|
, _questQuote = ""
|
||||||
|
, _questCost = do
|
||||||
|
returnResources 2 [Cleric]
|
||||||
|
returnResources 2 [Rogue]
|
||||||
|
, _questReward = do
|
||||||
|
scorePoints 10
|
||||||
|
drawFreeBuilding
|
||||||
|
, _questPlotActions = []
|
||||||
|
}
|
||||||
|
, Quest { _questType = Commerce
|
||||||
|
, _questTitle = "Establish New Merchant Guild"
|
||||||
|
, _questQuote = ""
|
||||||
|
, _questCost = do
|
||||||
|
returnResources 1 [Cleric]
|
||||||
|
returnResources 2 [Fighter]
|
||||||
|
returnResources 4 [Gold]
|
||||||
|
, _questReward = do
|
||||||
|
scorePoints 8
|
||||||
|
, _questPlotActions =
|
||||||
|
[(Whenever (CompletesQuest [Commerce]), scorePoints 2)]
|
||||||
|
}
|
||||||
|
, Quest { _questType = Commerce
|
||||||
|
, _questTitle = "Send Aid to the Harpers"
|
||||||
|
, _questQuote = ""
|
||||||
|
, _questCost = do
|
||||||
|
returnResources 1 [Cleric]
|
||||||
|
returnResources 1 [Fighter]
|
||||||
|
returnResources 1 [Rogue]
|
||||||
|
returnResources 4 [Gold]
|
||||||
|
, _questReward = do
|
||||||
|
scorePoints 15
|
||||||
|
forOneOpponent $ takeResources 4 [Gold]
|
||||||
|
, _questPlotActions = []
|
||||||
|
}
|
||||||
|
, Quest { _questType = Commerce
|
||||||
|
, _questTitle = "Ally with House Thann"
|
||||||
|
, _questQuote = ""
|
||||||
|
, _questCost = do
|
||||||
|
returnResources 1 [Cleric]
|
||||||
|
returnResources 3 [Rogue]
|
||||||
|
returnResources 1 [Wizard]
|
||||||
|
returnResources 8 [Gold]
|
||||||
|
, _questReward = do
|
||||||
|
scorePoints 25
|
||||||
|
, _questPlotActions = []
|
||||||
|
}
|
||||||
|
, Quest { _questType = Commerce
|
||||||
|
, _questTitle = "Spy on the House of Light"
|
||||||
|
, _questQuote = ""
|
||||||
|
, _questCost = do
|
||||||
|
returnResources 3 [Fighter]
|
||||||
|
returnResources 2 [Rogue]
|
||||||
|
returnResources 2 [Gold]
|
||||||
|
, _questReward = do
|
||||||
|
scorePoints 6
|
||||||
|
takeResources 6 [Gold]
|
||||||
|
, _questPlotActions = []
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
@ -39,7 +39,8 @@ module Waterdeep.Types
|
||||||
, questType
|
, questType
|
||||||
, questTitle
|
, questTitle
|
||||||
, questQuote
|
, questQuote
|
||||||
, questAction
|
, questCost
|
||||||
|
, questReward
|
||||||
, questPlotActions
|
, questPlotActions
|
||||||
, intrigueTitle
|
, intrigueTitle
|
||||||
, intrigueType
|
, intrigueType
|
||||||
|
|
@ -59,6 +60,7 @@ module Waterdeep.Types
|
||||||
, playerAgentsInPool
|
, playerAgentsInPool
|
||||||
, playerHasLieutenant
|
, playerHasLieutenant
|
||||||
, playerHasAmbassador
|
, playerHasAmbassador
|
||||||
|
, playerCanUseOpSpace
|
||||||
, building
|
, building
|
||||||
, buildingAgents
|
, buildingAgents
|
||||||
, buildingOwner
|
, buildingOwner
|
||||||
|
|
@ -156,7 +158,8 @@ data Quest =
|
||||||
{ _questType :: QuestType
|
{ _questType :: QuestType
|
||||||
, _questTitle :: String
|
, _questTitle :: String
|
||||||
, _questQuote :: String
|
, _questQuote :: String
|
||||||
, _questAction :: GameAction
|
, _questCost :: GameAction
|
||||||
|
, _questReward :: GameAction
|
||||||
, _questPlotActions :: [(PlotCondition, GameAction)]
|
, _questPlotActions :: [(PlotCondition, GameAction)]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -184,6 +187,7 @@ data PlayerState =
|
||||||
, _playerAgentsInPool :: Int
|
, _playerAgentsInPool :: Int
|
||||||
, _playerHasLieutenant :: Bool
|
, _playerHasLieutenant :: Bool
|
||||||
, _playerHasAmbassador :: Bool
|
, _playerHasAmbassador :: Bool
|
||||||
|
, _playerCanUseOpSpace :: Bool
|
||||||
}
|
}
|
||||||
|
|
||||||
data BuildingState =
|
data BuildingState =
|
||||||
|
|
@ -243,7 +247,8 @@ data PlotQualifier = ActionProvides [Resource]
|
||||||
| BuysBuilding
|
| BuysBuilding
|
||||||
deriving (Eq,Show)
|
deriving (Eq,Show)
|
||||||
|
|
||||||
data PlotCondition = StartOfRound
|
data PlotCondition = Immediately
|
||||||
|
| StartOfRound
|
||||||
| OncePerRound
|
| OncePerRound
|
||||||
| OncePerRoundWhen PlotQualifier
|
| OncePerRoundWhen PlotQualifier
|
||||||
| Whenever PlotQualifier
|
| Whenever PlotQualifier
|
||||||
|
|
@ -356,6 +361,7 @@ newPlayerState i (name, faction, lord) =
|
||||||
, _playerAgentsInPool = 0
|
, _playerAgentsInPool = 0
|
||||||
, _playerHasLieutenant = False
|
, _playerHasLieutenant = False
|
||||||
, _playerHasAmbassador = False
|
, _playerHasAmbassador = False
|
||||||
|
, _playerCanUseOpSpace = False
|
||||||
}
|
}
|
||||||
|
|
||||||
newBuildingState :: PlayerID -> Building -> BuildingState
|
newBuildingState :: PlayerID -> Building -> BuildingState
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue