diff --git a/server/routes/games.js b/server/routes/games.js index b0fa50f..1c1876a 100755 --- a/server/routes/games.js +++ b/server/routes/games.js @@ -3270,6 +3270,8 @@ const calculatePoints = (game, update) => { if (player.status === 'Not active') { continue; } + const currentPoints = player.points; + player.points = 0; if (key === game.longestRoad) { player.points += 2; @@ -3295,37 +3297,45 @@ const calculatePoints = (game, update) => { } }); + + if (player.points === currentPoints) { + return; + } + + if (player.points < 10) { + update.players = getFilteredPlayers(game); + continue; + } + /* This player has 10 points! Check if they are the current * player and if so, declare victory! */ - if (player.points >= 10) { - console.log(`${info}: Whoa! ${player.name} has ${player.points}!`); - for (let key in game.sessions) { - if (game.sessions[key].color !== player.color - || game.sessions[key].status === 'Not active') { - continue; - } - const message = `Wahoo! ${player.name} has 10 points on their turn and has won!`; - addChatMessage(game, null, message) - console.log(`${info}: ${message}`); - update.winner = Object.assign({}, player, { - state: 'winner', - robberStole: game.robberStole, - stolen: game.stolen, - chat: game.chat, - turns: game.turns, - players: game.players, - elapsedTime: Date.now() - game.startTime - }); - game.winner = update.winner; - game.state = 'winner'; - game.waiting = []; - stopTurnTimer(game); - sendUpdateToPlayers(game, { - state: game.state, - winner: game.winner, - players: game.players /* unfiltered */ - }); + console.log(`${info}: Whoa! ${player.name} has ${player.points}!`); + for (let key in game.sessions) { + if (game.sessions[key].color !== player.color + || game.sessions[key].status === 'Not active') { + continue; } + const message = `Wahoo! ${player.name} has 10 points on their turn and has won!`; + addChatMessage(game, null, message) + console.log(`${info}: ${message}`); + update.winner = Object.assign({}, player, { + state: 'winner', + robberStole: game.robberStole, + stolen: game.stolen, + chat: game.chat, + turns: game.turns, + players: game.players, + elapsedTime: Date.now() - game.startTime + }); + game.winner = update.winner; + game.state = 'winner'; + game.waiting = []; + stopTurnTimer(game); + sendUpdateToPlayers(game, { + state: game.state, + winner: game.winner, + players: game.players /* unfiltered */ + }); } }