From d0fd1dd7cd7416a458cdde6f7f35c47fbcbcfa69 Mon Sep 17 00:00:00 2001 From: James Ketrenos Date: Mon, 18 Apr 2022 13:37:56 -0700 Subject: [PATCH] Implemented Roll Doubles, and Twelve === 2 house rules. Signed-off-by: James Ketrenos --- client/src/HouseRules.js | 19 +++++++++++++------ client/src/ViewCard.js | 4 ++-- server/routes/games.js | 33 +++++++++++++++++++++++++++++++++ 3 files changed, 48 insertions(+), 8 deletions(-) diff --git a/client/src/HouseRules.js b/client/src/HouseRules.js index da005c5..2ef6e89 100644 --- a/client/src/HouseRules.js +++ b/client/src/HouseRules.js @@ -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: , + element: < div>If you roll doubles, players get those resources and + then you must 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., + implemented: true, }, { title: `Robin Hood robber`, key: `robin-hood-robber`, @@ -248,7 +255,7 @@ const HouseRules = ({ houseRulesActive, setHouseRulesActive }) => { { defaultChecked && item.element } })); - }, [rules, setRules, setRuleElements, state, ws ]); + }, [rules, setRules, setRuleElements, state, ws, setRule ]); if (!houseRulesActive) { return <>; diff --git a/client/src/ViewCard.js b/client/src/ViewCard.js index 1d201a9..cd97c16 100644 --- a/client/src/ViewCard.js +++ b/client/src/ViewCard.js @@ -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': diff --git a/server/routes/games.js b/server/routes/games.js index bb4f73d..60beef6 100755 --- a/server/routes/games.js +++ b/server/routes/games.js @@ -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.`);