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]); }, [ws, rules]);
useEffect(() => { useEffect(() => {
/* https://icebreaker.com/games/catan-1/feature/catan-house-rules */
setRuleElements([ { setRuleElements([ {
title: `More victory points`, title: `More victory points`,
key: `victory-points`, key: `victory-points`,
@ -175,14 +176,20 @@ const HouseRules = ({ houseRulesActive, setHouseRulesActive }) => {
ws, rules, ws, rules,
field: `discard-desert` field: `discard-desert`
}} />, }} />,
}, { }, {
title: `Roll double, roll again`, title: `Roll double, roll again`,
key: `roll-double-roll-again`, key: `roll-double-roll-again`,
description: `Roll again if you roll two of the same number.`, description: `Roll again if you roll two of the same number.`,
element: <NotImplemented {...{ element: < div>If you roll doubles, players get those resources and
ws, rules, then you must roll again.</div >,
field: `roll-double-roll-again` 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`, title: `Robin Hood robber`,
key: `robin-hood-robber`, key: `robin-hood-robber`,
@ -248,7 +255,7 @@ const HouseRules = ({ houseRulesActive, setHouseRulesActive }) => {
{ defaultChecked && item.element } { defaultChecked && item.element }
</div> </div>
})); }));
}, [rules, setRules, setRuleElements, state, ws ]); }, [rules, setRules, setRuleElements, state, ws, setRule ]);
if (!houseRulesActive) { if (!houseRulesActive) {
return <></>; return <></>;

View File

@ -30,7 +30,7 @@ const ViewCard = ({cardActive, setCardActive}) => {
} }
if ('rules' in data.update if ('rules' in data.update
&& !equal(data.update.rules, rules)) { && !equal(data.update.rules, rules)) {
setRules(rules); setRules(data.update.rules);
} }
break; break;
default: default:

View File

@ -363,6 +363,28 @@ const processRoll = (game, session, dice) => {
game.turn.roll = dice[0] + dice[1]; game.turn.roll = dice[0] + dice[1];
if (game.turn.roll !== 7) { if (game.turn.roll !== 7) {
distributeResources(game, game.turn.roll); 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) { for (let id in game.sessions) {
if (game.sessions[id].player) { if (game.sessions[id].player) {
sendUpdateToPlayer(game, game.sessions[id], { sendUpdateToPlayer(game, game.sessions[id], {
@ -370,6 +392,7 @@ const processRoll = (game, session, dice) => {
}); });
} }
} }
sendUpdateToPlayers(game, { sendUpdateToPlayers(game, {
turn: game.turn, turn: game.turn,
players: getFilteredPlayers(game), players: getFilteredPlayers(game),
@ -2602,6 +2625,16 @@ const setRules = (game, session, rules) => {
} }
game.rules[rule] = rules[rule]; game.rules[rule] = rules[rule];
break; 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': case 'tiles-start-facing-down':
addChatMessage(game, null, addChatMessage(game, null,
`${getName(session)} has ${rules[rule].enabled ? 'en' : 'dis'}abled the Tiles Start Facing Down house rule.`); `${getName(session)} has ${rules[rule].enabled ? 'en' : 'dis'}abled the Tiles Start Facing Down house rule.`);