Admin can now send roll for all rolls
Signed-off-by: James Ketrenos <james_eikona@ketrenos.com>
This commit is contained in:
parent
9711c72646
commit
e264f0ae8d
@ -270,14 +270,7 @@ const roll = (game, session) => {
|
|||||||
error = `You already rolled this turn.`;
|
error = `You already rolled this turn.`;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
game.dice = [ Math.ceil(Math.random() * 6), Math.ceil(Math.random() * 6) ];
|
processRoll(game, [ 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);
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
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) => {
|
const getPlayer = (game, color) => {
|
||||||
if (!game) {
|
if (!game) {
|
||||||
return {
|
return {
|
||||||
@ -471,20 +484,37 @@ const adminActions = (game, action, value) => {
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case "roll":
|
case "roll":
|
||||||
let dice = value.replace(/.*-/, '');
|
let parts = value.match(/^([1-6])(-([1-6]))?$/);
|
||||||
switch (value.replace(/-.*/, '')) {
|
if (!parts) {
|
||||||
case 'orange': color = 'O'; break;
|
return `Unable to parse roll request.`;
|
||||||
case 'red': color = 'R'; break;
|
|
||||||
case 'blue': color = 'B'; break;
|
|
||||||
case 'white': color = 'W'; break;
|
|
||||||
}
|
}
|
||||||
if (!color) {
|
let dice = [ parseInt(parts[1]) ];
|
||||||
return `Unable to find player ${value.replace(/-.*/, '')}`
|
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;
|
break;
|
||||||
|
|
||||||
case "kick":
|
case "kick":
|
||||||
|
Loading…
x
Reference in New Issue
Block a user