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.`;
|
||||
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":
|
||||
|
Loading…
x
Reference in New Issue
Block a user