werewolf 0.2.0.0 → 0.2.0.1
raw patch · 5 files changed
+26/−26 lines, 5 files
Files
- CHANGELOG.md +7/−0
- app/Werewolf/Commands/Help.hs +9/−18
- src/Game/Werewolf/Engine.hs +7/−5
- src/Game/Werewolf/Response.hs +1/−1
- werewolf.cabal +2/−2
CHANGELOG.md view
@@ -2,6 +2,13 @@ #### Upcoming +#### v0.2.0.1++*Revisions*++* Tidied up the help text to be smaller. ([#26](https://github.com/hjwylde/werewolf/issues/26))+* Fixed a bug where the turn was advanced to Werewolves when no Werewolves were alive. ([#26](https://github.com/hjwylde/werewolf/issues/26))+ #### v0.2.0.0 *Major*
app/Werewolf/Commands/Help.hs view
@@ -61,31 +61,22 @@ commandsMessages :: [Text] commandsMessages = map T.unlines [[- "Usage: COMMAND ARG ..."- ], [- "Available commands:",- " end - end the current game",- " help - help documents",- " see - see a player's allegiance",- " start - start a new game",- " vote - vote against a player"- ], [- "End:",+ "End: end the current game", "Usage: end",- " Ends the current game."+ "- Ends the current game." ], [- "See:",+ "See: see a player's allegiance", "Usage: see PLAYER",- " See a player's allegiance. A Seer may determine a player's allegiance once per day."+ "- See a player's allegiance. A Seer may determine a player's allegiance once per day." ], [- "Start:",- "Usage: start PLAYER ...",- " Starts a new game with the given players. A game requires at least 7 players."+ "Start: start a new game",+ "Usage: start [--extra-roles ROLE,...] PLAYER ...",+ "- Starts a new game with the given players and extra roles. A game requires at least 7 players." ], [- "Vote:",+ "Vote: vote against a player", "Usage: vote PLAYER", T.unwords [- " Vote against a player.",+ "- Vote against a player.", "A townsperson may vote at daytime to lynch someone", "and a Werewolf may vote at nighttime to kill a Villager." ]
src/Game/Werewolf/Engine.hs view
@@ -127,7 +127,9 @@ turn' <- use turn alivePlayers <- uses players filterAlive - let nextTurn = head . drop1 $ filter (turnAvailable alivePlayers) (dropWhile (turn' /=) turnRotation)+ let nextTurn = if length (nub $ map (_allegiance . _role) alivePlayers) <= 1+ then NoOne+ else head . drop1 $ filter (turnAvailable alivePlayers) (dropWhile (turn' /=) turnRotation) tell $ turnMessages nextTurn alivePlayers @@ -135,10 +137,10 @@ sees .= Map.empty votes .= Map.empty where- turnAvailable alivePlayers Seers = not . null $ filterSeers alivePlayers- turnAvailable _ Villagers = True- turnAvailable _ Werewolves = True- turnAvailable _ NoOne = False+ turnAvailable alivePlayers Seers = not . null $ filterSeers alivePlayers+ turnAvailable alivePlayers Villagers = not . null $ filterVillagers alivePlayers+ turnAvailable alivePlayers Werewolves = not . null $ filterWerewolves alivePlayers+ turnAvailable _ NoOne = False checkGameOver :: (MonadState Game m, MonadWriter [Message] m) => m () checkGameOver = do
src/Game/Werewolf/Response.hs view
@@ -125,7 +125,7 @@ turnMessages Seers players = seersTurnMessages $ filter isSeer players turnMessages Villagers _ = [villagersTurnMessage] turnMessages Werewolves players = werewolvesTurnMessages $ filter isWerewolf players-turnMessages NoOne _ = undefined+turnMessages NoOne _ = [] seersTurnMessages :: [Player] -> [Message] seersTurnMessages seers = nightFallsMessage:(publicMessage "The Seers wake up."):(map (\seer -> privateMessage [seer ^. name] "Who's allegiance would you like to see?") seers)
werewolf.cabal view
@@ -1,5 +1,5 @@ name: werewolf-version: 0.2.0.0+version: 0.2.0.1 author: Henry J. Wylde maintainer: public@hjwylde.com@@ -14,7 +14,7 @@ license-file: LICENSE cabal-version: >= 1.10-category: Development+category: Game build-type: Simple extra-source-files: CHANGELOG.md README.md