From 3aebd0325aa9a8f9c22d58846119465cd41fd897 Mon Sep 17 00:00:00 2001 From: James Ketrenos Date: Fri, 11 Feb 2022 17:46:49 -0800 Subject: [PATCH] You cannot skip/done until Robber is finished! Signed-off-by: James Ketrenos --- server/routes/games.js | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/server/routes/games.js b/server/routes/games.js index 3eaaae9..fd6e660 100755 --- a/server/routes/games.js +++ b/server/routes/games.js @@ -354,6 +354,7 @@ const processRoll = (game, dice) => { game.turn.roll = game.dice[0] + game.dice[1]; if (game.turn.roll === 7) { addChatMessage(game, null, `ROBBER! ROBBER! ROBBER!`); + game.turn.robberDone = false; delete game.turn.placedRobber; for (let id in game.sessions) { const player = game.sessions[id].player; @@ -870,7 +871,16 @@ router.put("/:id/:action/:value?", async (req, res) => { case 'pass': if (game.turn.name !== name) { error = `You cannot pass when it isn't your turn.` + break; } + + /* If the current turn is a robber placement, and everyone has + * discarded, set the limits for where the robber can be placed */ + if (game.turn && game.turn.roll === 7 && !game.turn.robberDone) { + error = `Robber is in action. Turn can not stop until all Robber tasks are resolved.`; + break; + } + if (!error) { const next = getNextPlayer(game, name); game.turn = { @@ -922,6 +932,7 @@ router.put("/:id/:action/:value?", async (req, res) => { addChatMessage(game, session, `${session.name} must select player to steal resource from.`); } else { game.turn.actions = []; + game.turn.robberDone = true; delete game.turn.limits; addChatMessage(game, session, `The Robber was moved to a terrain with no other players.`); } @@ -955,6 +966,7 @@ router.put("/:id/:action/:value?", async (req, res) => { addChatMessage(game, session, `${session.name} randomly stole ${type} from ${playerNameFromColor(game, value)}.`); } + game.turn.robberDone = true; break; case 'place-settlement': if (game.state !== 'initial-placement' && game.state !== 'normal') {