1
0

Admin can now send roll for all rolls

Signed-off-by: James Ketrenos <james_eikona@ketrenos.com>
This commit is contained in:
James Ketrenos 2022-02-08 15:47:22 -08:00
parent 9711c72646
commit e264f0ae8d

View File

@ -270,14 +270,7 @@ const roll = (game, session) => {
error = `You already rolled this turn.`;
break;
}
game.dice = [ Math.ceil(Math.random() * 6), Math.ceil(Math.random() * 6) ];
addChatMessage(game, session, `${name} rolled ${game.dice[0]}, ${game.dice[1]}.`);
game.turn.roll = game.dice[0] + game.dice[1];
if (game.turn.roll === 7) {
addChatMessage(game, null, `ROBBER! ROBBER! ROBBER!`);
} else {
distributeResources(game, game.turn.roll);
}
processRoll(game, [ Math.ceil(Math.random() * 6), Math.ceil(Math.random() * 6) ]);
break;
default:
@ -341,6 +334,26 @@ const distributeResources = (game, roll) => {
}
}
const processRoll = (game, dice) => {
let session;
for (let id in game.sessions) {
if (game.sessions[id].name === game.turn.name) {
session = game.sessions[id];
}
}
if (!session) {
console.error(`Cannot process roll without an active player session`);
return;
}
game.dice = dice;
addChatMessage(game, session, `${session.name} rolled ${game.dice[0]}, ${game.dice[1]}.`);
game.turn.roll = game.dice[0] + game.dice[1];
if (game.turn.roll === 7) {
addChatMessage(game, null, `ROBBER! ROBBER! ROBBER!`);
} else {
distributeResources(game, game.turn.roll);
}
}
const getPlayer = (game, color) => {
if (!game) {
return {
@ -471,20 +484,37 @@ const adminActions = (game, action, value) => {
break;
case "roll":
let dice = value.replace(/.*-/, '');
switch (value.replace(/-.*/, '')) {
case 'orange': color = 'O'; break;
case 'red': color = 'R'; break;
case 'blue': color = 'B'; break;
case 'white': color = 'W'; break;
let parts = value.match(/^([1-6])(-([1-6]))?$/);
if (!parts) {
return `Unable to parse roll request.`;
}
if (!color) {
return `Unable to find player ${value.replace(/-.*/, '')}`
let dice = [ parseInt(parts[1]) ];
if (parts[3]) {
dice.push(parseInt(parts[3]));
}
let session;
for (let id in game.sessions) {
if (game.sessions[id].name === game.turn.name) {
session = game.sessions[id];
}
}
if (!session) {
return `Unable to determine current player turn for admin roll.`;
}
console.log(dice, parts);
addChatMessage(game, null, `Admin rolling ${dice.join(', ')} for ${game.turn.name}.`);
switch (game.state) {
case 'game-order':
game.dice = dice;
message = `${game.turn.name} rolled ${game.dice[0]}.`;
addChatMessage(game, session, message);
message = undefined;
processGameOrder(game, session.player, game.dice[0]);
break;
case 'normal':
processRoll(game, dice);
break;
}
addChatMessage(game, null, `Admin rolled ${dice} for ${color}.`);
player = game.players[color];
processGameOrder(game, player, dice);
break;
case "kick":