From 2c390343cb9075f81a19536408aff605b1613aaf Mon Sep 17 00:00:00 2001 From: Jesse McDonald Date: Sun, 11 May 2014 19:11:00 -0500 Subject: [PATCH] enter details for the factions and Lord of Waterdeep cards --- src/ConsoleUI.hs | 33 ++++++------------------ src/Waterdeep/Factions.hs | 14 ++++++++++ src/Waterdeep/Intrigues.hs | 38 +++++++++++++++++++++++++++ src/Waterdeep/Logic.hs | 1 - src/Waterdeep/Lords.hs | 53 ++++++++++++++++++++++++++++++++++++++ src/Waterdeep/Types.hs | 2 +- 6 files changed, 114 insertions(+), 27 deletions(-) create mode 100644 src/Waterdeep/Factions.hs create mode 100644 src/Waterdeep/Intrigues.hs create mode 100644 src/Waterdeep/Lords.hs diff --git a/src/ConsoleUI.hs b/src/ConsoleUI.hs index 52c88c1..62e703b 100755 --- a/src/ConsoleUI.hs +++ b/src/ConsoleUI.hs @@ -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 () diff --git a/src/Waterdeep/Factions.hs b/src/Waterdeep/Factions.hs new file mode 100644 index 0000000..6881480 --- /dev/null +++ b/src/Waterdeep/Factions.hs @@ -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 } + ] diff --git a/src/Waterdeep/Intrigues.hs b/src/Waterdeep/Intrigues.hs new file mode 100644 index 0000000..4d63153 --- /dev/null +++ b/src/Waterdeep/Intrigues.hs @@ -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 = "" + }) + ] diff --git a/src/Waterdeep/Logic.hs b/src/Waterdeep/Logic.hs index 286d6f8..74425ca 100644 --- a/src/Waterdeep/Logic.hs +++ b/src/Waterdeep/Logic.hs @@ -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) diff --git a/src/Waterdeep/Lords.hs b/src/Waterdeep/Lords.hs new file mode 100644 index 0000000..e6d7fe6 --- /dev/null +++ b/src/Waterdeep/Lords.hs @@ -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 + } + ] diff --git a/src/Waterdeep/Types.hs b/src/Waterdeep/Types.hs index 674c50c..46a4222 100644 --- a/src/Waterdeep/Types.hs +++ b/src/Waterdeep/Types.hs @@ -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