1
0

You cannot skip/done until Robber is finished!

Signed-off-by: James Ketrenos <james_eikona@ketrenos.com>
This commit is contained in:
James Ketrenos 2022-02-11 17:46:49 -08:00
parent 3fe70fa739
commit 3aebd0325a

View File

@ -354,6 +354,7 @@ const processRoll = (game, dice) => {
game.turn.roll = game.dice[0] + game.dice[1]; game.turn.roll = game.dice[0] + game.dice[1];
if (game.turn.roll === 7) { if (game.turn.roll === 7) {
addChatMessage(game, null, `ROBBER! ROBBER! ROBBER!`); addChatMessage(game, null, `ROBBER! ROBBER! ROBBER!`);
game.turn.robberDone = false;
delete game.turn.placedRobber; delete game.turn.placedRobber;
for (let id in game.sessions) { for (let id in game.sessions) {
const player = game.sessions[id].player; const player = game.sessions[id].player;
@ -870,7 +871,16 @@ router.put("/:id/:action/:value?", async (req, res) => {
case 'pass': case 'pass':
if (game.turn.name !== name) { if (game.turn.name !== name) {
error = `You cannot pass when it isn't your turn.` 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) { if (!error) {
const next = getNextPlayer(game, name); const next = getNextPlayer(game, name);
game.turn = { 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.`); addChatMessage(game, session, `${session.name} must select player to steal resource from.`);
} else { } else {
game.turn.actions = []; game.turn.actions = [];
game.turn.robberDone = true;
delete game.turn.limits; delete game.turn.limits;
addChatMessage(game, session, `The Robber was moved to a terrain with no other players.`); 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, addChatMessage(game, session,
`${session.name} randomly stole ${type} from ${playerNameFromColor(game, value)}.`); `${session.name} randomly stole ${type} from ${playerNameFromColor(game, value)}.`);
} }
game.turn.robberDone = true;
break; break;
case 'place-settlement': case 'place-settlement':
if (game.state !== 'initial-placement' && game.state !== 'normal') { if (game.state !== 'initial-placement' && game.state !== 'normal') {