enter details for the factions and Lord of Waterdeep cards

This commit is contained in:
Jesse D. McDonald 2014-05-11 19:11:00 -05:00
parent 97aa7a53e4
commit 2c390343cb
6 changed files with 114 additions and 27 deletions

View File

@ -24,7 +24,10 @@ import System.Random.Shuffle
import Text.Printf
import Waterdeep.Actions
import Waterdeep.Buildings
import Waterdeep.Factions
import Waterdeep.Intrigues
import Waterdeep.Logic
import Waterdeep.Lords
import Waterdeep.Quests
import Waterdeep.Types
import Waterdeep.Util
@ -40,30 +43,6 @@ data DisplayState =
}
makeLenses ''DisplayState
f1 = Faction "Jesters" Blue
l1 = Lord "Prince Henry XXX" "" (QuestBonus [Skullduggery, Commerce] 4)
p1 = ("Harry", f1, l1)
f2 = Faction "Pilots" Green
l2 = Lord "Princess Anastasia" "" (QuestBonus [Arcana, Warfare] 4)
p2 = ("Ned", f2, l2)
i1 = IntrigueCard { _intrigueTitle = "Graduation Day"
, _intrigueType = Utility
, _intrigueAction = do
takeResources 2 [Wizard]
forOneOpponent (takeResources 1 [Wizard])
, _intrigueQuote = ""
}
i2 = IntrigueCard { _intrigueTitle = "Call for Adventurers"
, _intrigueType = Utility
, _intrigueAction = do
takeResources 2 [Cleric, Fighter, Rogue, Wizard]
forOneOpponent (takeResources 1 [Cleric, Fighter, Rogue, Wizard])
, _intrigueQuote = ""
}
clearScreen :: IO ()
clearScreen = putStr "\o033[H\o033[2J" >> hFlush stdout
@ -163,7 +142,11 @@ printMenu cs = do
main :: IO ()
main = do
w0 <- newGame [p1, p2] defaultQuestDeck (mrepeat 4 [i1, i2]) defaultBuildingDeck <$> getSplit
players <- zip3 <$> pure ["Ludd", "Nudd"]
<*> shuffleM defaultFactions
<*> shuffleM defaultLords
rndgen <- getSplit
let w0 = newGame players defaultQuestDeck defaultIntrigueDeck defaultBuildingDeck rndgen
ref <- newIORef (DisplayState { _gameState = w0, _gameMessages = [] })
runWaterdeepM (menuPrompt ref (drawState ref)) waterdeepGame w0
return ()

14
src/Waterdeep/Factions.hs Normal file
View File

@ -0,0 +1,14 @@
module Waterdeep.Factions
( defaultFactions
) where
import Waterdeep.Types
defaultFactions :: [Faction]
defaultFactions =
[ Faction { _factionName = "Knights of the Shield", _factionColor = Yellow }
, Faction { _factionName = "City Guard", _factionColor = Black }
, Faction { _factionName = "Silver Stars", _factionColor = Blue }
, Faction { _factionName = "Harpers", _factionColor = Green }
, Faction { _factionName = "Red Sashes", _factionColor = Red }
]

View File

@ -0,0 +1,38 @@
module Waterdeep.Intrigues
( defaultIntrigueDeck
) 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
defaultIntrigueDeck :: [IntrigueCard]
defaultIntrigueDeck = concat $ map (uncurry replicate) $
[ (2, IntrigueCard { _intrigueTitle = "Graduation Day"
, _intrigueType = Utility
, _intrigueAction = do
takeResources 2 [Wizard]
forOneOpponent (takeResources 1 [Wizard])
, _intrigueQuote = ""
})
, (2, IntrigueCard { _intrigueTitle = "Call for Adventurers"
, _intrigueType = Utility
, _intrigueAction = do
takeResources 2 [Cleric, Fighter, Rogue, Wizard]
forOneOpponent (takeResources 1 [Cleric, Fighter, Rogue, Wizard])
, _intrigueQuote = ""
})
]

View File

@ -22,7 +22,6 @@ import Data.Traversable (traverse)
import Lens.Family2
import Lens.Family2.State
import Lens.Family2.Stock
import System.Random.Shuffle
import Text.Printf
import Waterdeep.Actions
import Waterdeep.Buildings (basicBuildings)

53
src/Waterdeep/Lords.hs Normal file
View File

@ -0,0 +1,53 @@
module Waterdeep.Lords
( defaultLords
) where
import Waterdeep.Types
defaultLords :: [Lord]
defaultLords =
[ Lord { _lordName = "Piergeiron the Paladinson"
, _lordQuote = ""
, _lordBonus = QuestBonus [Piety, Warfare] 4
}
, Lord { _lordName = "Nindil Jalbuck"
, _lordQuote = ""
, _lordBonus = QuestBonus [Piety, Skullduggery] 4
}
, Lord { _lordName = "Kyriani Agrivar"
, _lordQuote = ""
, _lordBonus = QuestBonus [Piety, Arcana] 4
}
, Lord { _lordName = "Mirt the Moneylender"
, _lordQuote = ""
, _lordBonus = QuestBonus [Piety, Commerce] 4
}
, Lord { _lordName = "Caladorn Cassalanter"
, _lordQuote = ""
, _lordBonus = QuestBonus [Warfare, Skullduggery] 4
}
, Lord { _lordName = "Khelben Arunsun, the Blackstaff"
, _lordQuote = ""
, _lordBonus = QuestBonus [Warfare, Arcana] 4
}
, Lord { _lordName = "Durnan the Wanderer"
, _lordQuote = ""
, _lordBonus = QuestBonus [Warfare, Commerce] 4
}
, Lord { _lordName = "Brianne Byndraeth"
, _lordQuote = ""
, _lordBonus = QuestBonus [Skullduggery, Arcana] 4
}
, Lord { _lordName = "Nymara Scheiron"
, _lordQuote = ""
, _lordBonus = QuestBonus [Skullduggery, Commerce] 4
}
, Lord { _lordName = "Sammereza Sulphontis"
, _lordQuote = ""
, _lordBonus = QuestBonus [Arcana, Commerce] 4
}
, Lord { _lordName = "Larissa Neathal"
, _lordQuote = ""
, _lordBonus = BuildingBonus 6
}
]

View File

@ -229,7 +229,7 @@ data QuestType = Piety | Warfare | Skullduggery | Arcana | Commerce | Mandato
data IntrigueType = Utility | Attack
deriving (Eq,Ord,Enum,Bounded,Show)
data FactionColor = Red | Yellow | Green | Blue | Black
data FactionColor = Yellow | Black | Blue | Green | Red
deriving (Eq,Ord,Enum,Bounded,Show)
data BonusType = QuestBonus [QuestType] Int