1
0

Implemented Roll Doubles, and Twelve === 2 house rules.

Signed-off-by: James Ketrenos <james_eikona@ketrenos.com>
This commit is contained in:
James Ketrenos 2022-04-18 13:37:56 -07:00
parent 0c19b38c4d
commit d0fd1dd7cd
3 changed files with 48 additions and 8 deletions

View File

@ -120,6 +120,7 @@ const HouseRules = ({ houseRulesActive, setHouseRulesActive }) => {
}, [ws, rules]);
useEffect(() => {
/* https://icebreaker.com/games/catan-1/feature/catan-house-rules */
setRuleElements([ {
title: `More victory points`,
key: `victory-points`,
@ -175,14 +176,20 @@ const HouseRules = ({ houseRulesActive, setHouseRulesActive }) => {
ws, rules,
field: `discard-desert`
}} />,
}, {
}, {
title: `Roll double, roll again`,
key: `roll-double-roll-again`,
description: `Roll again if you roll two of the same number.`,
element: <NotImplemented {...{
ws, rules,
field: `roll-double-roll-again`
}} />,
element: < div>If you roll doubles, players get those resources and
then you must roll again.</div >,
implemented: true,
}, {
title: `Twelve and Two are synonyms`,
key: `twelve-and-two-are-synonyms`,
description: `If twelve is rolled, two scores as well. And vice-versa.`,
element: < div>If you roll a twelve or two, resources are triggered
for both.</div >,
implemented: true,
}, {
title: `Robin Hood robber`,
key: `robin-hood-robber`,
@ -248,7 +255,7 @@ const HouseRules = ({ houseRulesActive, setHouseRulesActive }) => {
{ defaultChecked && item.element }
</div>
}));
}, [rules, setRules, setRuleElements, state, ws ]);
}, [rules, setRules, setRuleElements, state, ws, setRule ]);
if (!houseRulesActive) {
return <></>;

View File

@ -30,7 +30,7 @@ const ViewCard = ({cardActive, setCardActive}) => {
}
if ('rules' in data.update
&& !equal(data.update.rules, rules)) {
setRules(rules);
setRules(data.update.rules);
}
break;
default:
@ -93,7 +93,7 @@ const ViewCard = ({cardActive, setCardActive}) => {
&& rules['victory-points'].enabled
? rules['victory-points'].points
: 0;
let cardName = '';
switch (lookup) {
case 'army':

View File

@ -363,6 +363,28 @@ const processRoll = (game, session, dice) => {
game.turn.roll = dice[0] + dice[1];
if (game.turn.roll !== 7) {
distributeResources(game, game.turn.roll);
if ('twelve-and-two-are-synonyms' in game.rules) {
if (dice[0] + dice[1] === 12) {
addChatMessage(game, session, `House rule 'Twelve and Two are
Synonyms' activated. Twelve was rolled, so two is triggered too!`);
distributeResources(game, 2);
}
if (dice[0] + dice[1] === 2) {
addChatMessage(game, session, `House rule 'Twelve and Two are
Synonyms' activated. Two was rolled, so twelve is triggered too!`);
distributeResources(game, 12);
}
}
if ('roll-double-roll-again' in game.rules) {
if (dice[0] === dice[1]) {
addChatMessage(game, session, `House rule `Roll Double, Roll
Again` activated.`);
game.turn.roll = 0;
}
}
for (let id in game.sessions) {
if (game.sessions[id].player) {
sendUpdateToPlayer(game, game.sessions[id], {
@ -370,6 +392,7 @@ const processRoll = (game, session, dice) => {
});
}
}
sendUpdateToPlayers(game, {
turn: game.turn,
players: getFilteredPlayers(game),
@ -2602,6 +2625,16 @@ const setRules = (game, session, rules) => {
}
game.rules[rule] = rules[rule];
break;
case 'roll-double-roll-again':
addChatMessage(game, null,
`${getName(session)} has ${rules[rule].enabled ? 'en' : 'dis'}abled the Roll Double, Roll Again house rule.`);
game.rules[rule] = rules[rule];
break;
case 'twelve-and-two-are-synonyms':
addChatMessage(game, null,
`${getName(session)} has ${rules[rule].enabled ? 'en' : 'dis'}abled the Twelve and Two are Synonyms house rule.`);
game.rules[rule] = rules[rule];
break;
case 'tiles-start-facing-down':
addChatMessage(game, null,
`${getName(session)} has ${rules[rule].enabled ? 'en' : 'dis'}abled the Tiles Start Facing Down house rule.`);