Implemented Roll Doubles, and Twelve === 2 house rules.
Signed-off-by: James Ketrenos <james_eikona@ketrenos.com>
This commit is contained in:
parent
0c19b38c4d
commit
d0fd1dd7cd
@ -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 <></>;
|
||||||
|
@ -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:
|
||||||
@ -93,7 +93,7 @@ const ViewCard = ({cardActive, setCardActive}) => {
|
|||||||
&& rules['victory-points'].enabled
|
&& rules['victory-points'].enabled
|
||||||
? rules['victory-points'].points
|
? rules['victory-points'].points
|
||||||
: 0;
|
: 0;
|
||||||
|
|
||||||
let cardName = '';
|
let cardName = '';
|
||||||
switch (lookup) {
|
switch (lookup) {
|
||||||
case 'army':
|
case 'army':
|
||||||
|
@ -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.`);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user