You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

151 lines
3.2 KiB

export const geese = [5, 9, 14, 18, 23, 27, 32, 36, 41, 45, 50, 54, 59];
// Coordinates in the author's 1254 × 1254 artwork. Each index is its game square.
export const ocaCenters = [
[80, 811],
[80, 945],
[80, 1083],
[199, 1083],
[325, 1083],
[450, 1083],
[574, 1083],
[696, 1083],
[821, 1083],
[953, 1083],
[1085, 1083],
[1085, 945],
[1085, 811],
[1085, 673],
[1085, 537],
[1085, 406],
[1085, 272],
[1085, 136],
[956, 136],
[821, 136],
[688, 136],
[563, 136],
[438, 136],
[313, 136],
[187, 136],
[187, 272],
[187, 406],
[187, 537],
[187, 673],
[199, 811],
[199, 945],
[324, 945],
[450, 945],
[574, 945],
[696, 945],
[821, 945],
[953, 945],
[953, 811],
[953, 673],
[953, 537],
[953, 406],
[956, 272],
[821, 272],
[688, 272],
[563, 272],
[438, 272],
[313, 272],
[313, 406],
[313, 537],
[313, 673],
[325, 811],
[452, 811],
[574, 811],
[695, 811],
[819, 811],
[821, 673],
[821, 537],
[821, 406],
[688, 406],
[563, 406],
[438, 406],
[438, 537],
[438, 673],
[628, 607],
];
export const ocaBoard = {
image: '/boards/oca-spiral.png',
width: 1254,
height: 1254,
viewport: { x: 24, y: 72, width: 1124, height: 1078 },
centers: ocaCenters,
};
export function ocaCell(n) {
const info = {
title: n === 0 ? 'Inicio' : `Casilla ${n}`,
kind: 'normal',
description:
'Aquí no hay premio ni penalización. En tu turno avanzarás lo que indique el dado.',
};
if (geese.includes(n))
return {
...info,
title: `Casilla ${n} · Oca`,
kind: 'advantage',
description:
n === 59
? 'Vuelves a lanzar el dado. Esta es la última oca antes del jardín.'
: `De oca a oca: saltas a la casilla ${geese[geese.indexOf(n) + 1]} y vuelves a lanzar.`,
};
const specials = {
0: [
'Inicio',
'normal',
'Aquí comienza la partida. Lanza el dado para entrar en el recorrido.',
],
6: [
'Puente',
'advantage',
'Saltas al puente de la casilla 12 y vuelves a lanzar.',
],
12: [
'Puente',
'advantage',
'Vuelves al puente de la casilla 6 y lanzas otra vez.',
],
19: [
'Posada',
'danger',
'Descansas un turno. El siguiente jugador continúa la partida.',
],
26: [
'Dados',
'advantage',
'Saltas a la casilla 53 y vuelves a lanzar el dado.',
],
31: [
'Pozo',
'danger',
'Pierdes tres turnos antes de poder volver a lanzar.',
],
42: [
'Laberinto',
'danger',
'Retrocedes a la casilla 30. Termina tu turno.',
],
52: [
'Cárcel',
'danger',
'Pierdes dos turnos antes de poder volver a lanzar.',
],
53: ['Dados', 'advantage', 'Vuelves a la casilla 26 y lanzas otra vez.'],
58: ['Calavera', 'danger', 'Vuelves al inicio y termina tu turno.'],
63: [
'El jardín · Meta',
'advantage',
'Ganas al llegar con una tirada exacta. Si te pasas de 63, retrocedes las casillas sobrantes.',
],
};
const special = specials[n];
return special
? {
title: n ? `Casilla ${n} · ${special[0]}` : special[0],
kind: special[1],
description: special[2],
}
: info;
}

Powered by TurnKey Linux.