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

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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.