|
|
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;
|
|
|
}
|