Files
leggenda-del-regolo/src/story/story.js
T

4547 lines
303 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// Storia del prototipo: le scene del paese a gradini (docs/PROGETTO.md, «La mappa») per collaudare il motore.
// Testi, personaggi ed enigmi sono provvisori e verranno sostituiti con i ricordi di Andrea (docs/PROGETTO.md).
// Le forme in `art` sono segnaposto disegnati sopra lo sfondo (vecchietti, squama, catena) in attesa degli sprite.
import { ambience } from './ambience.js';
import { piloti } from './piloti.js';
// Gli indizi del Trebbio per la catena della torcia (dopo le impronte, finché la torcia non c'è): uno per tappa,
// dalla più avanti alla prima.
const castello = say => [{ say, who: 'castello' }];
// Prima del GP di Fortezza l'Arcu va a prendere il Betino in cima alla salita (Andrea, 28 ottobre).
const rincorsa = level => [{ say: 'Aspettate: prendo la rincorsa, che il Betino s\'accende solo in discesa.', who: 'arcu', pose: 'point' }, { closeup: 'gara', level }];
const torchHints = [{
if: 'has:chiavetta',
then: castello('Una chiavetta piccola apre una cosa piccola. All\'area feste c\'è una casetta che aspetta.'),
else: [{
if: 'has:stecco_gomma',
then: castello('Uno stecco che appiccica pesca dove le mani non arrivano. Al ponticino, sotto la griglia, qualcosa luccica.'),
else: [{
if: ['has:stecco', 'has:gomma'],
then: castello('Lo stecco e la gomma, da soli, non servono a niente. Insieme, chissà.'),
else: [{
if: 'has:stecco',
then: [{
if: 'oratorio_aperto',
then: castello('Allo stecco serve qualcosa che appiccica. Guarda per terra all\'oratorio: i ragazzi lasciano sempre qualcosa.'),
else: [{
if: 'has:chiave_oratorio',
then: castello('Hai una chiave in tasca, e alla Pieve c\'è una porta che la aspetta.'),
else: castello('San Pietro tiene le chiavi, e un indovinello per chi le vuole. La risposta è dentro la sua Pieve: guarda il fonte battesimale.'),
}],
}],
else: [{
if: ['has:ghiacciolo', 'has:cedrata'],
then: castello('Ghiacciolo e cedrata in tasca, e li tieni lì? Il ghiacciolo nella cedrata: guarda cosa resta in mano.'),
else: [{
if: 'has:ghiacciolo',
then: castello('Un ghiacciolo da solo si scioglie e basta. Alla Tosca chiedi anche una cedrata.'),
else: castello('Per il buio ci vuole una luce. Comincia dal fresco: la Tosca, al tennis della chiesa, ha un ghiacciolo che fa al caso tuo.'),
}],
}],
}],
}],
}],
}];
// La macchina del tempo che corre, vista da dietro e (all'arrivo) davanti: larga `width` pixel da vicino, le ruote a
// `track` della larghezza dal centro.
const MACCHINA_CORSA = {
frames: { dietro: 'assets/closeups/macchina-dietro.png', lampi: 'assets/closeups/macchina-lampi.png', davanti: 'assets/closeups/macchina-davanti.png' },
width: 220, track: 75,
};
// Il ritorno dal 1997, dalla porta o dal pulsante «Torna al 2007»: la macchina del tempo sparisce, e per rifare il
// viaggio si richiede all'Arcu (Andrea, 29 ottobre).
const RITORNO_2007 = [
{ say: 'Si torna nel 2007. Ciao Vannino, ciao Pierino.' },
{ go: 'via_liguri_magelli', at: [212, 280], face: 'down' },
{ closeup: 'arrivo' },
{ unset: 'macchina_trappola' },
{ say: 'Riportata dove l\'ho presa. Se ti riviene voglia di pokerini, chiedi.', who: 'arcu', pose: 'explain' },
];
// Il ritorno dalla Smarronata del 1993 (Andrea, 31 ottobre): come dal 1997, la macchina riporta al Ponte sulla Sieve
// e sparisce; per tornarci si riguarda lo spiazzo sotto il ponte. [DA ANDREA: le battute]
const RITORNO_1993 = [
{ say: 'Si torna nel 2007. Arrivederci, alpini: e grazie delle bruciate.' },
{ go: 'ponte_sieve', at: [250, 320], face: 'down' },
{ closeup: 'arrivo_1993' },
{ unset: 'macchina_ponte' },
{ say: 'Tutto come prima. Solo le mani, che sanno ancora di castagne.' },
];
export const story = {
title: 'La Leggenda del Regolo',
// La mappa (pulsante «Mappa»): ogni scena con `map: [x, y]` (percentuali della pianta) ci compare quando è
// stata visitata; le strade sono le uscite fra scene. Un posto nuovo entra con la sua riga `map`.
// Si comincia sulla panchina dei vecchietti, dopo una notte brava (Andrea, 31 ottobre): il risveglio è il primo
// piano `risveglio`, che parte entrando in piazza la prima volta.
start: { scene: 'piazza', at: [96, 328], face: 'left' },
// Le fasi del giorno (idea di Andrea, 24 ottobre): seguono la storia, non l'orologio. Il primo capitolo comincia
// di pomeriggio; con le impronte del Regolo viene il tramonto, e quando Andrea ha la torcia è sera. Sulle scene
// all'aperto un velo di colore (`tint`); luci ed effetti possono valere solo in certe fasi (`phase`).
phases: [
{ id: 'pomeriggio' },
{ id: 'tramonto', when: 'indizio_regolo', tint: 'rgba(255, 110, 40, 0.16)' },
{ id: 'sera', when: 'casetta_aperta', tint: 'rgba(24, 28, 90, 0.42)', music: 'assets/audio/sera.mp3' },
// La notte dell'Ingorgo Sonoro (Andrea, 30 ottobre): gli sfondi sono già di notte, il velo serve solo ad Andrea.
// La musica la fanno le console delle scene (`stages`).
{ id: 'ingorgo', when: 'ingorgo', tint: 'rgba(40, 20, 90, 0.16)', scale: 1.6 },
],
// Le zone: un flag che vale solo in certi posti. L'Ingorgo Sonoro (Andrea, 30 ottobre: «era la festa del paese
// fatta una delle prime sere di luglio, da piazza fino a Cambray Digny, compresa piazza del Comune») si accende
// col manifesto in piazza e si spegne uscendo dal centro. [DA ANDREA: le battute sono provvisorie]
zones: [
{
flag: 'ingorgo', scenes: ['piazza', 'via_antica_posta', 'piazzetta_comune', 'antica_posta_alta', 'piazzetta'],
exitsOnly: true, // alla festa si clicca solo per spostarsi (Andrea)
leave: [
{ say: 'Mi stropiccio gli occhi. La musica non c\'è più: è di nuovo maggio.' },
{ say: 'E il palio è sempre sparito. Però che serata.' },
],
},
],
// Il taccuino (pulsante «Taccuino», tasto N): le tappe del capitolo in ordine. Una tappa è fatta quando la sua
// condizione `done` è vera; la prima non fatta è l'obiettivo di adesso. Solo testo: non si sente a voce.
notebook: [
{ done: 'luccichio', text: 'Il palio è sparito dalla scuola, dove lo tenevano: stamani se n\'è accorta la Gianna. La festa è domani. Chiedo in giro: i vecchietti in piazza sanno sempre tutto.' },
{ done: 'squama_presa', text: 'La vecchietta ha visto luccicare qualcosa sotto la panchina, in piazza.' },
{ done: 'indizio_regolo', text: 'Una squama, grossa e luccicante. Chi l\'ha persa avrà lasciato altre tracce: lassù sotto la Fortezza, magari.' },
{ done: 'casetta_aperta', text: 'Le tracce finiscono in una fessura del bastione, buia pesta. Mi serve una torcia: nella casetta dell\'area feste ce n\'è una, ma è chiusa col lucchetto.' },
{ done: 'palio_trovato', text: 'Ho la torcia: di corsa alla fessura sotto la Fortezza!' },
],
notebookHelp: 'Se non so più cosa fare: al Trebbio, la torre dà sempre un consiglio.',
// I quattro rioni del Palio: dopo «Nuova partita» si sceglie per chi corre Andrea, e la partita lo ricorda col
// flag `rione:<id>`. Le battute che parlano del rione di Andrea lo controllano con `if`.
// Per ora si corre solo per Campomigliaio (decisione di Andrea, 24 ottobre: ogni rione vuol dire battute e voci
// in più); gli altri si vedono chiusi (`locked`) e si sbloccano togliendo la riga.
rioni: {
piazza: { name: 'Piazza', colors: 'i rossi', color: '#d0453a', locked: true },
pieve: { name: 'Pieve', colors: 'i bianchi', color: '#f2eee2', locked: true },
cardetole: { name: 'Cardetole', colors: 'i verdi', color: '#3fa34d', locked: true },
campomigliaio: { name: 'Campomigliaio', colors: 'i blu', color: '#2f6fd0' },
},
// Le righe dell'introduzione, sopra il panorama del paese, prima della prima scena.
intro: [
'San Piero a Sieve, nel Mugello. Fine maggio 2007.',
'In paese si prepara il Palio della Fortezza: i quattro rioni si sfidano, e chi vince si porta a casa il palio, il quadro dipinto dai ragazzi delle medie.',
// La riga del rione: quella del rione scelto dopo «Nuova partita» (story.rioni).
{ rione: {
piazza: 'Io corro per la Piazza, i rossi.',
pieve: 'Io corro per la Pieve, i bianchi.',
cardetole: 'Io corro per Cardetole, i verdi: gioco in casa.',
campomigliaio: 'Io corro per Campomigliaio, i blu.',
} },
// [DA ANDREA: la riga che porta al risveglio sulla panchina]
'Ieri sera s\'è fatto tardi. Molto tardi...',
],
// Colonna sonora di Andrea (fatta con Suno): titolo, paese, ricordi (fine e Trebbio).
// splash: la musichetta del cartello d'apertura (tools/jingle.py), suonata una volta sola.
music: { splash: 'assets/audio/cartello.mp3', title: 'assets/audio/titolo.mp3', game: 'assets/audio/paese.mp3', ending: 'assets/audio/ricordi.mp3' },
// I crediti, schermata «Crediti» dal titolo e dalla fine: un ruolo e chi l'ha fatto. Arriveranno man mano.
// Un nome può avere il suo ritratto a pixel (face): nei Ringraziamenti si tocca il nome e compare il volto.
credits: [
{ role: 'Un gioco di', names: [{ name: 'Manzolo (Andrea Manzi)', face: 'assets/credits/manzolo.png' }] },
{ role: 'Idee e consigli', names: [{ name: 'Baldoria (Yuri Baldi)', face: 'assets/credits/baldoria.png' }, { name: 'BaronDeDuke (Gabriele Rossi)', face: 'assets/credits/barondeduke.png' }, { name: 'Tozzino (Francesco Tozzi)', face: 'assets/credits/tozzino.png' }, { name: 'l\'Arcu (Marco Arcuri)', face: 'assets/credits/arcu.png' }, { name: 'Eriketta (Erika Fenaroli)', face: 'assets/credits/eriketta.png' }] },
{ role: 'Storia e aneddoti di San Piero', names: [{ name: 'Francesco Bacci', face: 'assets/credits/bacci.png' }, 'Fabrizio Berti, «Memorie di sport e di paese»'] },
{ role: 'Musica', names: ['Manzolo, con Suno'] },
{ role: 'Sfondi', names: ['dalle fotografie di San Piero di Andrea'] },
// Chi ci ha mandato foto, ricordi o idee: una riga per contributo, si allunga man mano.
{ role: 'Fotografie', names: [{ name: 'Mariano Mirannalti (l\'interno della Pieve)', face: 'assets/credits/mariano.png' }] },
{ role: 'Opere d\'arte nel gioco', names: [{ name: 'il palio del 2007, dipinto dai ragazzi delle medie', face: 'assets/credits/palio.png' }, 'Simone Rocchi (l\'omino di ferro del tennis della chiesa)'] },
{ role: 'Voci', names: ['XTTS-v2 di Coqui'] },
{ role: 'Carattere', names: ['Press Start 2P di CodeMan38 (licenza OFL)'] },
{ role: 'Programmazione', names: ['Manzolo, con Claude e Codex'] },
],
// Primi piani interattivi: libro dell'oratorio e ricerca con la torcia nella fessura.
// Le immagini (Codex, assets/closeups/) hanno l'etichetta e le pagine vuote: titolo e «FINE» li scrive il codice.
closeups: {
// [DA ANDREA: chi è] Partita facoltativa; battute provvisorie.
briscola: {
type: 'briscola', music: 'assets/audio/carte.mp3', names: { player: 'Andrea', cpu: 'Il giocatore' }, decks: { napoletane: 'carte_napoletane' },
win: [{ set: 'briscola_vinta' }, { set: 'briscola_giocata' }, { say: 'Oh, bravo! Ora però rimescolo io.', who: 'giocatore_carte', pose: 'laugh' }],
lose: [{ set: 'briscola_giocata' }, { say: 'I carichi portali qui, mica alla stazione! Rivincita quando vuoi.', who: 'giocatore_carte', pose: 'laugh' }],
draw: [{ set: 'briscola_giocata' }, { say: 'Sessanta pari. Un si litiga nemmeno sul conto!', who: 'giocatore_carte', pose: 'talk' }],
quit: [{ say: 'Vai, ti tengo il posto. Le carte mica scappano.', who: 'giocatore_carte' }],
},
// I tre tavoli da carte suonano il valzer della balera (tools/valzer_carte.py, Andrea: «una sua melodia»).
// Il tressette a coppie ai 21 (idea di Andrea): busso, striscio, volo e accuse. [DA ANDREA: chi sono il socio e l'altro]
tressette: {
type: 'tressette', music: 'assets/audio/carte.mp3', names: { player: 'Andrea', cpu: 'Il giocatore' }, decks: { napoletane: 'carte_napoletane' },
seats: ['Andrea', 'Il giocatore', 'Il socio', 'L\'altro'],
win: [{ set: 'tressette_vinto' }, { say: 'Ventuno per primi. Bella coppia, voi due!', who: 'giocatore_carte', pose: 'laugh' }],
lose: [{ say: 'Ventuno! Il tressette è un\'arte: si studia da piccini.', who: 'giocatore_carte', pose: 'laugh' }],
draw: [],
quit: [{ say: 'Vai, ti tengo il posto. Le carte mica scappano.', who: 'giocatore_carte' }],
},
// La scopa ai 11 (idea di Andrea): carte, mattoni (o denari), settebello, primiera e scope.
scopa: {
type: 'scopa', music: 'assets/audio/carte.mp3', names: { player: 'Andrea', cpu: 'Il giocatore' }, decks: { napoletane: 'carte_napoletane' },
win: [{ set: 'scopa_vinta' }, { say: 'Settebello, primiera e pure le scope. Oggi l\'hai vista bene.', who: 'giocatore_carte', pose: 'talk' }],
lose: [{ say: 'Undici! Il settebello lo sento arrivare da lontano.', who: 'giocatore_carte', pose: 'laugh' }],
draw: [],
quit: [{ say: 'Vai, ti tengo il posto. Le carte mica scappano.', who: 'giocatore_carte' }],
},
// Le bocce al pallaio contro Mariano, il campione (idea di Andrea, 25 ottobre): solo per gloria.
bocce: {
type: 'bocce', music: 'assets/audio/bocce.mp3', // la polka del pallaio (tools/polka_bocce.py, Andrea: «un sound suo»)
picture: 'assets/closeups/pallaio.png',
names: { player: 'Andrea', cpu: 'Mariano' },
win: [
{ say: 'Aspetta, ci vuole il metro...', who: 'mariano', pose: 'measure' },
{ say: 'Hai vinto, ti ci porto!', who: 'mariano', pose: 'laugh' },
{ set: 'bocce_vinte' },
],
lose: [
{ say: 'Bocciato! Al pallaio comando io.', who: 'mariano', pose: 'cheer' },
{ say: 'Quando vuoi la rivincita, sono qui.', who: 'mariano' },
],
quit: [{ say: 'Già stanco? Il pallaio ti aspetta.', who: 'mariano', pose: 'laugh' }],
draw: [{ say: 'Quando vuoi la rivincita, sono qui.', who: 'mariano' }],
},
// «Fai due tiri» al campo da basket del Circolo 4 Maggio (idea di Andrea, 27 ottobre): da solo, dieci palloni,
// si arretra a ogni canestro. La gloria dipende dal livello (basket.LEVELS). [DA ANDREA: le sue battute]
basket: {
type: 'basket',
picture: 'assets/closeups/basket-campo.png',
names: { player: 'Andrea', cpu: 'il canestro' },
win: [
{ say: 'Che mano! Jordan, fatti da parte.' },
{ set: 'basket_vinto' },
],
lose: [
{ say: 'Il ferro oggi era stretto. Riprovo dopo.' },
],
quit: [{ say: 'Lascio il pallone lì. Tanto lo sanno tutti che è mio.' }],
draw: [],
},
// La pesca al lago dell'Anatre coi ragazzi delle canne (idea di Andrea, 28 ottobre): sei lanci, da solo con la
// canna di bambù; la gloria dipende dal livello (pesca.LEVELS). [DA ANDREA: le sue battute]
pesca: {
type: 'pesca',
picture: 'assets/closeups/lago-anatre.png',
names: { player: 'Andrea', cpu: 'il lago' },
win: [
{ say: 'Oh, hai visto? Mica male, per una canna di bambù.', who: 'pescatori', pose: 'laugh' },
{ say: 'Stasera si frigge. Ma prima il palio.' },
{ set: 'pesca_vinta' },
],
lose: [
{ say: 'I pesci c\'erano. Eri te che non c\'eri.', who: 'pescatori', pose: 'talk' },
{ say: 'Si rifà. Dopo il palio.' },
],
quit: [{ say: 'Lascio la canna ai ragazzi. Il lago non scappa, il palio sì.' }],
draw: [],
},
// Il GP di Fortezza (idea di Andrea, 28 ottobre): tre giri coi cinquantini attorno alle mura, gas e sterzo come
// nelle vecchie gare da sala giochi viste dall'alto. Chi corre sta in piloti.js. [DA ANDREA: le battute; la musica]
gara: {
type: 'gara', music: 'assets/audio/gara.mp3', // di Andrea (Suno)
picture: 'assets/closeups/gp-fortezza.png', // Codex, dalla planimetria di Andrea; la strada è il tracciato
// Corre solo chi ha dato il consenso (`consenso: null` vuol dire «da chiedere»: per ora Puntella).
riders: piloti.filter(p => p.consenso !== null),
names: { player: 'Andrea', cpu: 'gli altri' },
win: [
{ say: 'Primo! E col Fifty di serie, o quasi.' },
{ say: 'Si rifà! Questa un vale, avevo la catena lenta.', who: 'arcu', pose: 'shrug' },
{ set: 'gara_vinta' },
],
lose: [
{ say: 'Ho preso tutta la polvere di quelli davanti.' },
{ say: 'Il Fifty è bono. È chi ci sta sopra.', who: 'arcu', pose: 'laugh' },
],
quit: [{ say: 'Lascio stare. Il Fifty mi serve intero, per il palio.' }],
draw: [],
},
// Il biliardo del Circolo 4 Maggio contro l'Ing. Tozzi: cinque birilli, un colpo a testa, si va a 20. [DA ANDREA: le sue battute]
biliardo: {
type: 'biliardo',
picture: 'assets/closeups/biliardo-tavolo.png',
names: { player: 'Andrea', cpu: 'L\'Ing. Tozzi' },
win: [
{ say: 'Venti. Hai vinto te, stasera il caffè lo pago io.', who: 'ing_tozzi' },
{ set: 'biliardo_vinto' },
],
lose: [
{ say: 'Venti! Al biliardo ci vuole la mano ferma, mica la corsa.', who: 'ing_tozzi' },
{ say: 'Quando vuoi, il tavolo è qui.', who: 'ing_tozzi' },
],
quit: [{ say: 'Lasci a metà? Ti segno la sconfitta a tavolino, eh.', who: 'ing_tozzi' }],
draw: [],
},
rinquarto: {
type: 'rinquarto',
picture: 'assets/closeups/biliardo-tavolo.png',
names: { player: 'Andrea', cpu: 'Trappizzio Berti' },
// Andrea contro Trappizzio Berti, sulle stesse posizioni; nell'allenamento il risultato è sempre «pari». [DA ANDREA: le battute]
win: [{ say: 'M\'hai battuto ai rinquarti. Però un lo dire a nessuno.', who: 'bertovo', pose: 'shrug' }, { set: 'rinquarti_vinti' }],
lose: [{ say: 'Le sponde ci sono per qualcosa! Basta chiederglielo per bene.', who: 'bertovo', pose: 'laugh' }],
quit: [{ say: 'Questo me lo tengo per la prossima.' }],
draw: [{ say: 'Visto? Geometrie celestiali. Si riprova quando vuoi.', who: 'bertovo', pose: 'explain' }],
},
// Il viaggio nel tempo dalla macchina del tempo in Via Liguri Magelli: la data sul cruscotto (Codex), poi il Barrettino
// del 10 luglio 1997 (Andrea, 29 ottobre).
viaggio: {
type: 'viaggio',
picture: 'assets/closeups/cruscotto-tempo.png',
display: [220, 158, 212, 62],
date: '10/07/1997 18:30',
complete: [{ closeup: 'partenza' }],
},
// Il viaggio alla Smarronata del 1993, dal Ponte sulla Sieve (Andrea, 31 ottobre): lo stesso cruscotto, un'altra data;
// la partenza e l'arrivo sulla strada del ponte.
viaggio_1993: {
type: 'viaggio',
picture: 'assets/closeups/cruscotto-tempo.png',
display: [220, 158, 212, 62],
date: '17/10/1993 10:30',
complete: [{ closeup: 'partenza_1993' }],
},
partenza_1993: {
type: 'corsa', mode: 'parti', scene: 'ponte_sieve', ...MACCHINA_CORSA,
path: [[250, 350, 1], [325, 205, 0.05]],
complete: [{ go: 'smarronata_1993', at: [320, 330], face: 'up' }],
},
arrivo_1993: {
type: 'corsa', mode: 'arriva', scene: 'ponte_sieve', ...MACCHINA_CORSA,
path: [[150, 470, 2.2], [325, 205, 0.05]],
complete: [],
},
// La partenza vista da fuori: giù per Via Liguri Magelli, il fulmine e le sgommate di fuoco; e l'arrivo, al
// ritorno dal 1997 (Andrea, 30 ottobre; la macchina da dietro e davanti è di Codex).
partenza: {
type: 'corsa', mode: 'parti', scene: 'via_liguri_magelli', ...MACCHINA_CORSA,
path: [[215, 350, 1], [252, 192, 0.05]],
complete: [{ go: 'barrettino_1997', at: [320, 330], face: 'up' }],
},
arrivo: {
type: 'corsa', mode: 'arriva', scene: 'via_liguri_magelli', ...MACCHINA_CORSA,
path: [[110, 470, 2.2], [252, 192, 0.05]],
complete: [],
},
// Il pokerino del Barrettino con Vannino e Pierino (Andrea, 29 ottobre). [DA ANDREA: le battute]
poker: {
type: 'poker',
names: { player: 'Andrea', cpu: 'Vannino e Pierino' },
win: [{ say: 'Tu m\'ha pelato. La prossima volta porta il Barone.', who: 'vannino', pose: 'shrug' }, { set: 'poker_vinto' }],
lose: [{ say: 'Le fiches restano al banco. E tu torna quando hai imparato a bluffare.', who: 'pierino_parigi', pose: 'laugh' }],
quit: [{ say: 'Già finito? E il caffè chi lo paga?', who: 'vannino', pose: 'talk' }],
draw: [{ say: 'Pari. Si rifà domani sera, alla stess\'ora.', who: 'pierino_parigi', pose: 'explain' }],
},
// La cerbottana con lo stucco verde di Pierin di Frilli, contro il muro della piazza (Andrea, 29 ottobre).
// [DA ANDREA: le battute sono provvisorie]
cerbottana: {
type: 'cerbottana',
picture: 'assets/closeups/muro-cerbottana.png',
names: { player: 'Andrea' },
win: [{ say: 'Tutti sul muro, verdi in fila. Lo stucco di Pierino un tradisce mai.' }, { set: 'cerbottana_vinta' }],
lose: [{ say: 'Finito lo stucco. Domani si ripassa da Pierino.' }],
quit: [{ say: 'Il muro resta lì. E l\'odore dello stucco, sulle dita, pure.' }],
draw: [],
},
// La Condor coi pallini gialli al campone delle poste, in gara col Taglia (Andrea, 29 ottobre). [DA ANDREA: le battute]
condor: {
type: 'condor',
picture: 'assets/closeups/campone-condor.png',
names: { player: 'Andrea', cpu: 'il Taglia' },
win: [{ say: 'Battuto il Taglia! Con la sua Condor, per giunta.' }, { say: 'Fortuna. Domani la rivinco.', who: 'taglia', pose: 'shrug' }, { set: 'condor_vinta' }],
lose: [{ say: 'Il Taglia ha la mano ferma. Io ho il fiatone.' }, { say: 'Si torna quando vuoi. I pallini gialli un mancano mai.', who: 'taglia', pose: 'laugh' }],
draw: [{ say: 'Pari. Si rifà?' }, { say: 'Si rifà.', who: 'taglia', pose: 'explain' }],
quit: [{ say: 'La Condor la rendo al Taglia. Per ora.' }],
},
// La campana col gesso sul vialetto del campone delle poste, a turni col Taglia (Andrea, 30 ottobre).
// [DA ANDREA: le battute sono provvisorie]
campana: {
type: 'campana',
picture: 'assets/closeups/campone-campana.png',
names: { player: 'Andrea', cpu: 'il Taglia' },
win: [{ say: 'Dalla 1 fino in cima, e ritorno. A ventisett\'anni, davanti alle poste.' }, { say: 'Te lo dico io: se ti vede qualcuno, domani lo sa tutto il paese.', who: 'taglia', pose: 'laugh' }, { set: 'campana_vinta' }],
lose: [{ say: 'Il Taglia salta come un grillo. Io come un sacco di patate.' }, { say: 'È questione di allenamento.', who: 'taglia', pose: 'explain' }],
draw: [],
quit: [{ say: 'Il gesso lo lascio lì. Ci giocherà qualche bambino, che è più in allenamento di me.' }],
},
// Il manifesto dell'Ingorgo, ingrandito (Andrea, 30 ottobre: «se mi avvicino compaia ingrandito, e poi parta
// l'Ingorgo se ci clicco»). [DA ANDREA: il manifesto vero; questo è di Codex, provvisorio]
manifesto_ingorgo: {
type: 'poster',
picture: 'assets/closeups/manifesto-ingorgo.png',
hint: 'Tocca il manifesto',
tap: [
{ say: 'Il manifesto dell\'Ingorgo Sonoro dell\'anno scorso. Da piazza fino a Cambray Digny, una console in ogni angolo.' },
{ say: 'Quanto darei per essere all\'Ingorgo stasera?!?' },
{ closeup: 'ingorgo' },
],
},
// Il Muro del Sanpierino sul telefonino del Barone (Andrea, 31 ottobre): sale come il libro, nello schermo la
// home di sanpiero50037.it (la Wayback Machine, 31 dicembre 2007, senza la data in alto); un tocco la porta a
// tutto schermo, e il mattone «Nuovo muro del Sanpierino» apre il muro: la pagina vera (assets/muro, fatta da
// tools/muro.py dal muro riesumato in ~/Workspaces/misc/spswall), coi messaggi veri del 2007 (Andrea: «quelli
// veri»; niente email, «Scrivi» spento) e sopra quelli del gioco qui sotto, ognuno con la sua condizione:
// «Aggiorna» ricarica, e la storia che va avanti ne fa comparire di nuovi. [DA ANDREA: messaggi e battute]
muro_sanpierino: {
type: 'telefono',
phone: 'assets/closeups/telefonino-barone.png', // Codex, prompts/closeups/telefonino-barone.txt
screen: [120, 25, 106, 142], // lo schermo, in pixel del telefonino
site: 'assets/closeups/sanpiero50037-home.png', siteSize: [1067, 600],
link: [48, 42, 302, 99], // il mattone del muro, in pixel del sito
paper: '#f7e1c0',
messages: [
{ nick: 'Uno di Cardetole', date: '2007-05-26 00:55:12', text: 'Quest\'anno il palio è nostro!!! [bouncer]\nGli altri rioni si preparino a piangere. [14_bigmouth]' },
{ nick: 'Baron De Duke', date: '2007-05-26 01:40:37', text: 'Chi ha trovato un paio di mutande, le riporti al circolino.\nSenza fare domande. [15_weeping]' },
{ nick: 'Il Regolo', date: '2007-05-26 03:12:08', text: 'IL PALIO ME LO SONO RIPRESO IO. [22_yikes]\nChi lo rivuole, venga a prenderselo. Se ha coraggio.' },
// Quelli che arrivano con la storia: si vedono riaprendo il muro, o con «Aggiorna».
{ when: 'indizio_regolo', nick: 'Uno che passava', date: '2007-05-26 18:20:44', text: 'Ma avete visto le impronte sotto la Fortezza??? Grandi come una pizza!!! [24_shocked]' },
{ when: 'casetta_aperta', nick: 'Il Regolo', date: '2007-05-26 21:03:51', text: 'Ho sentito che qualcuno ha trovato una torcia. Io ho sempre la luna. [28_spin]' },
],
comment: [
{ say: '«Il palio me lo sono ripreso io». Firmato: il Regolo. Alle tre di notte.' },
{ say: 'E sotto ci sono io, con le mutande. Nessuno ha risposto.', who: 'barondeduke', pose: 'facepalm' },
],
closing: [
{ say: 'Barone, il sito è tuo: non puoi vedere chi l\'ha scritto?' },
{ say: 'Potrei. Ma ci vuole il computer di casa. Il telefonino, più di così, non fa.', who: 'barondeduke', pose: 'shrug' },
],
},
// L'inizio della partita: Andrea apre gli occhi sulla panchina dei vecchietti, dopo una notte brava (Andrea,
// 31 ottobre). Le battute `lines` arrivano mentre gli occhi si aprono; `complete` a occhi aperti.
// [DA ANDREA: le battute sono provvisorie]
risveglio: {
type: 'risveglio',
lines: [
{ at: 0.8, say: 'Mmmh... che botta.' },
{ at: 3.0, say: 'Ma... dove sono?' },
{ at: 5.9, say: 'Una panchina. In piazza. Coi vecchietti.' },
],
complete: [
{ say: 'Oh, s\'è svegliato il bello addormentato! Bella nottata, eh?', who: 'vecchietta', pose: 'laugh' },
{ say: 'Ma l\'hai saputo? Il palio è sparito!', who: 'vecchietto', pose: 'point' },
{ say: 'Il palio? Il quadro che hanno dipinto i ragazzi delle medie?' },
{ say: 'Lo tenevano a scuola: stamani la Gianna ha trovato il posto vuoto.', who: 'vecchietta', pose: 'explain' },
{ say: 'La festa è domani: se nessuno lo ritrova, salta tutto. Tocca a me.' },
],
},
// Il vecchio cartello della Smarronata sul lampione del ponte, ingrandito (Codex dal manifesto vero del 1993, senza lo
// sponsor): toccandolo, il ricordo e la macchina del tempo. [DA ANDREA: le battute]
manifesto_smarronata: {
type: 'poster',
picture: 'assets/closeups/manifesto-smarronata.png',
hint: 'Tocca il cartello',
tap: [
{ say: 'La Smarronata del 1993! Gli alpini, sotto il ponte: le bruciate, la polenta, il vino, la fanfara...' },
{ if: 'macchina_ponte', then: [{ say: 'La macchina del tempo è sempre lì che aspetta.' }], else: [
// I ricordi di Andrea (31 ottobre).
{ say: 'Quanto lo aspettavo, da ragazzino, quel fine settimana di ottobre!' },
{ say: 'Gli alpini che sfilavano per il paese suonando, col cappello e la penna: che bellezza.' },
{ say: 'E a scuola ci facevano disegnare i ricci delle castagne. Un ricordo meraviglioso.' },
{ say: 'Quanto ci tornerei, a una Smarronata!' },
{ set: 'macchina_ponte' },
{ say: 'Ma quella... è la macchina del tempo!' },
] },
],
},
// L'incantesimo dell'Ingorgo Sonoro, dal manifesto in piazza: luci, cassa, lampo, ed è la notte della festa.
ingorgo: {
type: 'incanto',
swap: [{ set: 'ingorgo' }],
complete: [
// Più emozione (Andrea: «MAHHH E' L'INGORGOOOOO!!!!!»); la voce legge la versione di tools/pronuncia.json.
{ say: 'Mahhh... è l\'INGORGOOOO!!!' },
{ say: 'Le console, la gente, le spine della birra!' },
{ say: 'Il palio può aspettare una sera. O no?' },
],
},
// Le macchinine sulla pista col gesso, sul parcheggio di Cardetole, contro il Chiaru (Andrea, 28 e 29 ottobre).
// [DA ANDREA: le battute sono provvisorie]
micro: {
type: 'micro', music: 'assets/audio/macchinine.mp3', // di Andrea (Suno, 29 ottobre)
picture: 'assets/closeups/micro-parcheggio.png',
names: { player: 'Andrea', cpu: 'Chiaru' },
win: [{ say: 'Hai vinto te. Ma la mia aveva le ruote piene di gesso, sia chiaro.', who: 'chiaru', pose: 'shrug' }, { set: 'micro_vinto' }],
lose: [{ say: 'Visto? La blu non perde mai. Mai.', who: 'chiaru', pose: 'cheer' }],
quit: [{ say: 'Ti ritiri? Allora la vinco a tavolino.', who: 'chiaru', pose: 'laugh' }],
draw: [{ say: 'Pari. Si rifà, ma la pista la ridisegno io.', who: 'chiaru', pose: 'shrug' }],
},
fessura: {
type: 'torch',
picture: 'assets/closeups/palio-2007.jpg',
crop: [82, 36, 220, 331], // la tela nella foto fornita da Andrea, senza il muro intorno
targets: [
{ at: [185, 195], radius: 52, hint: 'Esamina la pietra a sinistra…', lines: [] },
{ at: [348, 225], radius: 55, hint: 'Qualcosa riflette la luce, più in basso…', lines: [
{ say: 'Laggiù, appoggiato al muro, c\'è un angolo di tela dipinta: una strada bianca, e un omino con la maglia rossa e le braccia alzate.' },
{ say: 'È il palio! Il quadro dei ragazzi delle medie!' },
] },
{ at: [462, 138], radius: 45, hint: 'Un rumore nel buio, a destra…', lines: [
{ say: 'E quelli... sono due occhi gialli!' },
] },
],
complete: [
{ say: 'Spariti nel buio.' },
{ set: 'palio_trovato' },
{ say: 'Il Regolo. E ha il nostro palio.' },
{ say: 'Però non l\'ha portato via: l\'ha messo proprio lassù, in Fortezza. Dove domani portiamo i mattoni col passamano.' },
{ say: 'Il palio è già pronto ad aspettarci. Torno giù a dirlo a tutti: la festa si fa!' },
{ end: true },
],
},
libro: {
closed: 'assets/closeups/libro-chiuso.png',
open: 'assets/closeups/libro-aperto.png',
title: 'La storia infinita',
last: 'FINE',
comment: [{ say: 'Mi ricordavo un finale diverso.' }],
// Chiuso dopo aver visto l'ultima pagina (idea di Andrea, 25 ottobre).
closing: [{ say: 'Il «Nulla» sta viaggiando troppo velocemente nell\'animo umano, devo darmi una mossa!' }],
// Dove scrivere, in pixel delle due immagini: l'etichetta della copertina, le due pagine, la piega.
label: [78, 48, 104, 54],
pages: { left: [56, 26, 96, 194], right: [163, 12, 101, 204], spine: 157 },
paper: '#fbe6bc',
},
},
// I video «Come si gioca» (video/SCALETTA-CARTE.md): il pulsante «Guarda il video» nell'aiuto di ogni gioco.
tutorials: {
briscola: { title: 'Come si gioca: la briscola', src: 'assets/video/briscola.mp4', poster: 'assets/video/briscola.jpg' },
tressette: { title: 'Come si gioca: il tressette ai 21', src: 'assets/video/tressette.mp4', poster: 'assets/video/tressette.jpg' },
scopa: { title: 'Come si gioca: la scopa', src: 'assets/video/scopa.mp4', poster: 'assets/video/scopa.jpg' },
bocce: { title: 'Come si gioca: le bocce', src: 'assets/video/bocce.mp4', poster: 'assets/video/bocce.jpg' },
biliardo: { title: 'Come si gioca: il biliardo', src: 'assets/video/biliardo.mp4', poster: 'assets/video/biliardo.jpg' },
},
characters: {
// [DA ANDREA: chi è] Figura inventata, nessuna persona reale.
giocatore_carte: { name: 'Il giocatore di carte', color: '#edc476', sprite: 'assets/characters/giocatore-carte.json' },
andrea: { name: 'Andrea', color: '#ffffff', sprite: 'assets/characters/andrea.json' },
// Andrea col pallone, per «Fai due tiri» (foglio di Codex dal suo sprite): non parla, lo disegna basket-render.
andrea_basket: { name: 'Andrea', sprite: 'assets/characters/andrea-basket.json' },
andrea_pesca: { name: 'Andrea', sprite: 'assets/characters/andrea-pesca.json' },
// Quattro ragazzi inventati (sprite di Codex, idea di Andrea del 27 ottobre): nessuna persona reale.
pescatori: { name: 'I ragazzi delle canne', color: '#b8f08a', sprite: 'assets/characters/pescatori.json' },
vecchietta: { name: 'Vecchietta', color: '#ffd27a', sprite: 'assets/characters/vecchietta.json' },
vecchietto: { name: 'Vecchietto', color: '#9fe3ff', sprite: 'assets/characters/vecchietto.json' },
castello: { name: 'Lo spirito del Trebbio', color: '#c8f0ff' },
leone: { name: 'Il leone', color: '#f0a070' },
san_pietro: { name: 'San Pietro', color: '#e8e0c8' },
tosca: { name: 'La Tosca', color: '#ffb0d0' },
arcu: { name: 'L\'Arcu', color: '#7fb2ff', sprite: 'assets/characters/arcu.json' },
// L'Ing. Tozzi, il campione del biliardo al Circolo 4 Maggio (sprite da fare con Codex: prompts/personaggi/ing-tozzi-sheet.txt).
// Trappizzio Berti (Fabrizio Berti, consenso dato ad Andrea il 28 ottobre), il re dei rinquarti (sprite di Codex dalla sua foto).
bertovo: { name: 'Trappizzio Berti', color: '#9fd0ff', sprite: 'assets/characters/bertovo.json' },
ing_tozzi: { name: 'L\'Ing. Tozzi', color: '#d9c48a', sprite: 'assets/characters/ing-tozzi.json' },
tozzino: { name: 'Il Tozzino', color: '#c8f5b0', sprite: 'assets/characters/tozzino.json' },
// Il Chiaru (Matteo Chiarusi, consenso dato ad Andrea il 29 ottobre), alla pista col gesso di Cardetole: sprite di
// Codex dalla foto di Andrea.
// Al Barrettino del 1997 (Andrea, 29 ottobre; senza foto, dalla descrizione di Andrea): Vannino, alto, magro, coi
// capelli corti e la fossetta nel mento; Pierino Parigi (consenso del figlio Marco, 29 ottobre), brizzolato, con gli
// occhiali e la barba rada. Sprite di Codex.
vannino: { name: 'Vannino', color: '#ffe6a8', sprite: 'assets/characters/vannino.json' },
pierino_parigi: { name: 'Pierino', color: '#c8e0ff', sprite: 'assets/characters/pierino_parigi.json' },
// Lo zio Mario di Andrea (sprite di Codex dalla foto di Andrea, 29 ottobre), alla Ghiacciomobile nel muro.
zio_mario: { name: 'Lo zio Mario', color: '#cfe3ff', sprite: 'assets/characters/zio_mario.json' },
chiaru: { name: 'Il Chiaru', color: '#ffd6a0', sprite: 'assets/characters/chiaru.json' },
// Andrea Tagliaferri, il Taglia (consenso suo, 29 ottobre): sprite di Codex dalla sua foto.
taglia: { name: 'Il Taglia', color: '#ffe36a', sprite: 'assets/characters/taglia.json' },
barondeduke: { name: 'Il BaronDeDuke', color: '#e0c090', sprite: 'assets/characters/barondeduke.json' },
// Baldoria (Yuri Baldi, nei Ringraziamenti), tifoso della Sampdoria col bandierone (Andrea, 30 ottobre; sprite di Codex).
baldoria: { name: 'Baldoria', color: '#7fb2ff', sprite: 'assets/characters/baldoria.json' },
mariano: { name: 'Mariano', color: '#ffb0a3', sprite: 'assets/characters/mariano.json' },
// Non parla: è una cosa, disegnata come un personaggio per stare davanti o dietro ad Andrea.
fra_peppino: { name: 'Fra Peppino', color: '#e8c89a', sprite: 'assets/characters/fra-peppino.json' },
macchina: { name: 'La macchina del tempo', color: '#c8d8e8', sprite: 'assets/characters/macchina-tempo.json' },
betino: { name: 'il Betino', sprite: 'assets/characters/betino.json' },
ghiacciomobile: { name: 'la Ghiacciomobile', sprite: 'assets/characters/ghiacciomobile.json' },
},
items: {
squama: {
name: 'squama',
icon: { src: 'assets/icons/squama.svg', fill: '#4fae5e' },
actions: {
look: [{ say: 'Una squama verde, grande come una moneta da due euro. Puzza di cantina.' }],
use: [{ say: 'Potrei usarla come plettro. Ma prima scopro di chi è.' }],
},
},
// Lo scherzo del libro (idea di Andrea, 2026-10-23): «La storia infinita» ha una pagina sola.
libro: {
name: 'libro',
icon: { src: 'assets/icons/libro.svg', fill: '#c46a3a' },
droppable: true, // non serve alla storia: si può buttare
actions: {
drop: [{ say: 'Una pagina sola, e pure con la fine. Lo lascio qui per il prossimo lettore.' }, { drop: 'libro' }],
look: [{ say: '«La storia infinita». Bello spesso: questo mi tiene compagnia fino a settembre.' }],
// Il primo piano (story.closeups.libro): la battuta la scopre chi guarda, nessuno la racconta.
open: [{ closeup: 'libro' }],
use: [{ closeup: 'libro' }],
},
},
// La catena del ghiacciolo (idea di Andrea, 2026-10-24): la Tosca dà ghiacciolo e cedrata; il ghiacciolo inzuppato
// nella cedrata lascia lo stecco; stecco più gomma (dall'oratorio) ripesca la chiavetta dalla griglia del
// ponticino; la chiavetta apre la casetta dell'area feste, dove c'è la torcia.
ghiacciolo: {
name: 'ghiacciolo',
icon: { src: 'assets/icons/ghiacciolo.svg' },
actions: {
look: [{ say: 'Un ghiacciolo al limone. Si scioglie a guardarlo.' }],
use: [{ say: 'Da solo? No: il ghiacciolo al limone va inzuppato nella cedrata. È la regola.' }],
},
with: {
cedrata: [
{ drop: 'ghiacciolo' }, { drop: 'cedrata' },
{ say: 'Ghiacciolo dentro la cedrata... si scioglie, frizza, è verde e giallo insieme.' },
{ say: 'Esagerato. Buonissimo. La merenda dei campioni.' },
{ give: 'stecco' }, { set: 'stecco_fatto' }, { say: 'Mi resta lo stecco. Non si sa mai.' },
],
},
},
cedrata: {
name: 'cedrata',
icon: { src: 'assets/icons/cedrata.svg' },
actions: {
look: [{ say: 'Una bottiglietta di cedrata, gelata.' }],
use: [{ say: 'Bevuta liscia è sprecata. Ci vuole qualcosa da inzupparci dentro.' }],
},
},
fanta: {
name: 'Fanta',
icon: { src: 'assets/icons/fanta.svg' },
droppable: true,
alone: true, // si beve subito, senza chiedere «con cosa»
actions: {
look: [{ say: 'Una Fanta ghiacciata, arancione come il tramonto.' }],
use: [{ drop: 'fanta' }, { say: 'Glu glu... arancione fino alle orecchie.' }],
},
},
coca: {
name: 'Coca',
icon: { src: 'assets/icons/coca.svg' },
droppable: true,
alone: true, // si beve subito, senza chiedere «con cosa»
actions: {
look: [{ say: 'Una Coca col vetro appannato dal freddo.' }],
use: [{ drop: 'coca' }, { say: 'Fa le bollicine nel naso. Come sempre.' }],
},
},
spuma: {
name: 'spuma bionda',
icon: { src: 'assets/icons/spuma.svg' },
droppable: true,
alone: true, // si beve subito, senza chiedere «con cosa»
actions: {
look: [{ say: 'Una spuma bionda. Ormai la chiedono solo i nonni. E io.' }],
use: [{ drop: 'spuma' }, { say: 'Buona come ai tempi della festa.' }],
},
},
stecco: {
name: 'stecco',
icon: { src: 'assets/icons/stecco.svg' },
actions: {
look: [{ say: 'Lo stecco del ghiacciolo. Appiccica ancora un po\' di limone.' }],
use: [{ say: 'Da solo non arriva a niente. Ci vorrebbe qualcosa che attacca.' }],
},
with: {
gomma: [{ drop: 'stecco' }, { drop: 'gomma' }, { say: 'Mastico la gomma e la attacco in cima allo stecco.' }, { say: 'Ecco una canna da pesca per chiavi. Brevetto San Piero.' }, { give: 'stecco_gomma' }],
},
},
gomma: {
name: 'gomma',
icon: { src: 'assets/icons/gomma.svg' },
actions: {
look: [{ say: 'Una gomma da masticare alla fragola, ancora incartata.' }],
use: [{ say: 'Masticarla così, per niente? Meglio tenerla per quando serve qualcosa che appiccica.' }],
},
},
stecco_gomma: {
name: 'stecco e gomma',
icon: { src: 'assets/icons/stecco_gomma.svg' },
actions: {
look: [{ say: 'Lo stecco con la gomma in cima. Attacca qualunque cosa. Anche le dita.' }],
},
},
chiavetta: {
name: 'chiavetta',
icon: { src: 'assets/icons/chiavetta.svg' },
actions: {
look: [{ say: 'Una chiavetta piccola, ripescata dalla griglia. Di un lucchetto, o di una casetta.' }],
},
},
torcia: {
name: 'torcia',
icon: { src: 'assets/icons/torcia.svg' },
actions: {
look: [{ say: 'Una torcia rossa, funziona. Per il buio della Fortezza, prima o poi, servirà.' }],
use: [{ say: 'Clic. Accesa. Clic. Spenta. Le pile le tengo per quando serve davvero.' }],
},
},
// La chiave dell'oratorio: la dà San Pietro a chi risolve il suo indovinello. Indispensabile: non si butta.
chiave_oratorio: {
name: 'chiave dell\'oratorio',
icon: { src: 'assets/icons/chiave.svg', fill: '#d9b54a' },
actions: {
look: [{ say: 'Una chiave grossa e antica. Quella dell\'oratorio, parola di San Pietro.' }],
},
},
},
scenes: {
piazza: {
name: 'Piazza Colonna',
map: [32, 45],
background: 'assets/scenes/piazza-colonna.png',
backdrops: [{ when: 'ingorgo', src: 'assets/scenes/ingorgo-piazza.png' }], // Codex, la notte dell'Ingorgo (30 ottobre)
// Le console dell'Ingorgo Sonoro (music.js, mix). [DA ANDREA: quale genere suonava in quale piazza]
// La console grande davanti al palazzo; da Via dell'Antica Posta, a sinistra, arriva il latino del Comune.
stages: [
{ when: 'ingorgo', music: 'assets/audio/ingorgo-house.mp3', at: [195, 235] },
{ when: 'ingorgo', music: 'assets/audio/ingorgo-latino.mp3', at: [-160, 250], far: 600 },
],
effects: [{ type: 'stagelights', phase: 'ingorgo', from: [[116, 146], [276, 146], [196, 140]], wash: [200, 215, 170], bpm: 124, beams: 3, strobe: 4, pulse: 0.08 }, { type: 'lasers', phase: 'ingorgo', at: [196, 150], count: 7, color: '255,60,200', len: 360 }, { type: 'floorspots', phase: 'ingorgo', area: [40, 240, 560, 110], bpm: 124, count: 7 }, { type: 'clouds', area: [160, 0, 440, 80], count: 3, big: true, phase: ['pomeriggio', 'tramonto', 'sera'] }, { type: 'windows', phase: 'sera', rects: [[16, 37, 8, 18], [48, 42, 8, 18], [50, 110, 8, 16], [97, 77, 8, 12], [122, 80, 8, 12], [170, 90, 8, 12], [204, 103, 8, 12], [239, 111, 8, 12], [268, 117, 7, 14], [287, 125, 6, 14], [97, 130, 9, 14], [127, 133, 9, 14], [170, 142, 9, 14], [204, 150, 8, 12], [239, 155, 8, 12], [268, 160, 7, 14], [287, 163, 6, 14], [386, 163, 14, 16], [424, 160, 14, 16], [472, 157, 14, 16], [524, 155, 14, 16], [390, 212, 14, 16], [526, 208, 14, 16]] }, { type: 'birds', phase: ['pomeriggio', 'tramonto'], area: [150, 20, 460, 80] }],
walk: [[84, 244], [330, 238], [345, 230], [362, 238], [462, 246], [466, 276], [544, 276], [548, 248], [588, 250], [600, 290], [640, 300], [640, 360], [0, 360], [0, 330], [84, 318]],
depth: [[236, 0.5], [360, 1.35]],
entry: [345, 240],
speakers: { vecchietta: [24, 250], vecchietto: [56, 244] },
// I vecchietti seduti sulla panchina: fotogrammi in assets/characters (pose e battute in game.personPose).
people: [
{ who: 'vecchietta', at: [24, 317], when: '!ingorgo', size: 0.92, talk: ['talk', 'explain'], blink: 'blink', every: 3.7 },
{ who: 'vecchietto', at: [56, 304], when: '!ingorgo', size: 0.88, talk: ['talk', 'explain'], blink: 'doze', every: 5.3, offset: 2 },
],
hotspots: [
{
id: 'colonna', name: 'colonna', box: [492, 134, 36, 140], at: [505, 290], face: 'up',
actions: {
look: [{ say: 'La colonna, il centro del paese. Da qui passa tutto: le notizie, il Palio, i pettegolezzi.' }, { if: 'rione:piazza', then: [{ say: 'E qui è casa del mio rione: noi rossi.' }] }, { say: 'Ai piedi c\'è una strana scia luccicante che va a sinistra, verso la salita di Villa Adami.' }],
take: [{ say: 'Se mi porto via la colonna, la piazza come la chiamano?' }],
use: [{ say: 'Arrampicarmi? Il palio lassù non c\'è comunque.' }],
},
},
{
// La Torre dello Scoronconcolo (aneddoto trovato da Andrea su Wikipedia, «Michele del Tavolaccino»):
// il sanpierino che aiutò Lorenzino de' Medici ad ammazzare il duca Alessandro, nel 1537.
id: 'torre_scoronconcolo', name: 'Torre dello Scoronconcolo', box: [474, 58, 62, 70], at: [505, 290], face: 'up',
actions: {
look: [
{ say: 'La Torre dello Scoronconcolo. Era una vecchia torre di guardia, già in disuso nel Cinquecento.' },
{ say: 'Ci si rifugiò Michele del Tavolaccino, detto Scoronconcolo, sanpierino: nel 1537 aiutò Lorenzino de\' Medici ad ammazzare il duca Alessandro.' },
{ say: 'Nel 1539 finì sulle galere dell\'ordine gerosolimitano, in guerra contro i Turchi. Altro che Palio.' },
],
open: [{ say: 'Da quassù non ci arrivo. E poi, di nascondigli in quella torre, ce n\'è già stato uno di troppo.' }],
take: [{ say: 'Una torre in tasca? Nemmeno lo Scoronconcolo ci è riuscito.' }],
},
},
{
id: 'bar', name: 'La Colonna', box: [428, 208, 30, 40], at: [443, 252], face: 'up',
actions: {
look: [{ say: 'Il bar della piazza. Chi c\'era dietro il bancone nel 2007? Questo lo sa solo Andrea.' }],
open: [{ say: 'Ci torno quando ho qualche soldo in tasca.' }],
talk: [{ say: 'Parlare con una porta. Neanche al Palio si arriva a tanto.' }],
},
},
{
id: 'verso_gelateria', name: 'strada verso il Fiocco di Neve', box: [570, 150, 28, 100], at: [580, 256], face: 'right', default: 'walk',
actions: {
walk: [{ say: 'Di là c\'è la gelateria del Fiocco di Neve.' }, { say: 'Con questo caldo, un bel gelatino ci starebbe proprio bene...' }, { say: 'No. Prima ritrovo il palio, poi mi premio.' }],
look: [{ say: 'La strada che porta al Fiocco di Neve. Già sento il profumo di cialda.' }],
},
},
{
// La bottega di Pierin di Frilli sotto la tenda rossa: da ragazzi ci si comprava lo stucco verde per la
// cerbottana (Andrea, 29 ottobre). [DA ANDREA: com'era dentro, e cosa diceva Pierino]
id: 'pierin', name: 'la bottega di Pierin di Frilli', box: [598, 176, 42, 92], at: [612, 306], face: 'right', default: 'talk',
actions: {
look: [{ say: 'La bottega di Pierin di Frilli, sotto la tenda rossa. Da ragazzi ci si comprava lo stucco per la cerbottana.' }],
talk: [{ dialogue: 'pierin' }],
open: [{ dialogue: 'pierin' }],
use: [{ dialogue: 'pierin' }],
},
},
{
// Il Circolo 4 Maggio: il portone ad arco del palazzo arancione porta nella sala dei biliardi.
id: 'circolo', name: 'Circolo 4 Maggio', box: [188, 190, 28, 58], at: [202, 252], face: 'up',
actions: {
look: [{ say: 'Il Circolo 4 Maggio. Dentro, dietro il bar, la sala dei biliardi: tre tavoli e il silenzio delle grandi occasioni.' }],
// «Apri» sul portone fa entrare come il clic: nessuno apre una porta per restare fuori.
open: [{ walk: [202, 252] }, { go: 'circolo_4_maggio', at: [590, 202], face: 'left' }],
talk: [{ say: 'Da fuori non si parla con nessuno: al circolo si entra.' }],
},
exit: { scene: 'circolo_4_maggio', at: [590, 202], face: 'left' },
},
{
id: 'manifesto', name: 'manifesto del Palio', box: [256, 196, 18, 24], at: [265, 250], face: 'up', when: '!ingorgo',
art: [{ rect: [256, 196, 18, 24], fill: '#f4efe4' }, { rect: [258, 199, 14, 5], fill: '#b7342e' }, { rect: [258, 207, 12, 2], fill: '#3b3b44' }, { rect: [258, 211, 10, 2], fill: '#3b3b44' }, { rect: [258, 215, 12, 2], fill: '#2f5fb3' }],
actions: {
look: [
{ say: 'Il programma del Palio della Fortezza, con la foto del palio: la strada bianca che sale alla Fortezza, i ragazzi in fila, e uno con la maglia rossa che alza le braccia.' },
{ say: 'Qualcuno ci ha scritto sopra col pennarello: «IL REGOLO SI È RIPRESO IL PALIO».' },
],
take: [{ say: 'Il programma lo so a memoria. Il problema è il palio.' }],
},
},
{
// Il manifesto dell'Ingorgo Sonoro dell'estate prima, mezzo strappato: guardandolo, Andrea esprime il
// desiderio, e la festa arriva (Andrea, 30 ottobre). [DA ANDREA: le battute sono provvisorie]
id: 'manifesto_ingorgo', name: 'vecchio manifesto dell\'Ingorgo Sonoro', box: [223, 195, 22, 26], at: [234, 250], face: 'up', when: '!ingorgo',
// Come quello vero (assets/raw/riferimenti/manifesto-ingorgo-2014.png): blu, il cartello bianco e rosso col DJ.
art: [{ rect: [226, 198, 16, 22], fill: '#1c2050' }, { rect: [233, 201, 2, 2], fill: '#d8262e' }, { rect: [231, 203, 6, 2], fill: '#d8262e' },
{ rect: [229, 205, 10, 4], fill: '#d8262e' }, { rect: [232, 205, 4, 3], fill: '#f4f1e8' }, { rect: [228, 211, 12, 2], fill: '#f4f1e8' },
{ rect: [229, 215, 7, 2], fill: '#ffd23a' }, { rect: [238, 198, 4, 4], fill: '#cdbb9a' }],
actions: {
look: [{ closeup: 'manifesto_ingorgo' }],
take: [{ say: 'Lo lascio dov\'è: è l\'unica cosa che ricorda luglio, qui, a maggio.' }],
},
},
{
id: 'vecchietti', name: 'vecchietti', box: [0, 250, 72, 52], at: [100, 320], face: 'left', default: 'talk', when: '!ingorgo',
actions: {
look: [{ say: 'I vecchietti della panchina. Sanno tutto di tutti, soprattutto quello che non è successo.' }],
talk: [
{
if: ['indizio_regolo', '!chiacchiere'],
then: [
{ set: 'chiacchiere' },
{ say: 'Dice che Andrea ha trovato un serpente lungo dodici metri.', who: 'vecchietto', pose: 'point' },
{ say: 'Ma quale serpente. Secondo me va in Fortezza solo per farsi le canne: torna sempre con gli occhi rossi!', who: 'vecchietta' },
{ say: 'Sono qui, eh. Vi sento.' },
{ say: 'Oh! Andrea! Si parlava d\'un altro.', who: 'vecchietta', pose: 'laugh' },
],
},
{ dialogue: 'vecchietti' },
],
take: [{ say: 'Se li porto via, il paese resta senza notizie.' }],
},
give: {
squama: [{ say: 'Guardate cosa ho trovato.' }, { say: 'Bella! È una patatina?', who: 'vecchietta', pose: 'laugh' }, { say: 'Ma che patatina, è il Regolo che fa la muta!', who: 'vecchietto' }, { say: 'Me la tengo io, grazie.' }],
ghiacciolo: [{ say: 'Al limone! Da ragazza me ne mangiavo tre di fila.', who: 'vecchietta', pose: 'laugh' }, { say: 'E poi tre giorni a letto.', who: 'vecchietto' }, { say: 'Me lo tengo io, allora.' }],
libro: [{ say: '«La storia infinita»? Alla mia età, figliolo, meglio qualcosa di corto.', who: 'vecchietto' }, { say: 'Fidati: è più corto di quel che sembra.' }],
},
},
{
id: 'panchina', name: 'sotto la panchina', box: [0, 304, 64, 18], at: [100, 330], face: 'left',
actions: {
look: [{ if: 'luccichio', then: [{ say: 'Qualcosa luccica, proprio sotto i piedi dei vecchietti.' }], else: [{ say: 'Polvere, un tappo e una cicca. La solita archeologia di piazza.' }] }],
},
},
{
id: 'cosa_luccicante', name: 'cosa luccicante', box: [26, 308, 14, 10], at: [100, 330], face: 'left', when: ['luccichio', '!has:squama', '!squama_presa'],
art: [{ rect: [29, 311, 8, 5], fill: '#7fe08a' }, { rect: [31, 311, 3, 2], fill: '#e6ffe0' }],
actions: {
look: [{ say: 'Una cosa verde e luccicante. Non è un tappo.' }],
take: [{ give: 'squama' }, { set: 'squama_presa' }, { say: 'Una squama! E bella grossa.' }],
},
},
// Si compare in basso: la foto di Via Cipriani è presa dall'altro verso (Andrea, 28 ottobre, va bene così).
{
id: 'verso_campeggio', name: 'Via Cipriani, verso il cinema e il campeggio', box: [330, 190, 34, 48], at: [345, 234], exit: { scene: 'via_cipriani', at: [300, 345], face: 'up' },
},
{
id: 'verso_piazzetta', name: 'Via dell\'Antica Posta, verso Piazzetta Cambray Digny', box: [0, 196, 146, 54], at: [92, 250], exit: { scene: 'via_antica_posta', at: [320, 345], face: 'up' },
},
{
id: 'verso_calimara', name: 'Via Calimara, verso la farmacia', box: [180, 334, 380, 26], at: [360, 354], exit: { scene: 'via_calimara', at: [365, 212], face: 'down' },
},
],
enter: [{ if: '!intro', then: [{ set: 'intro' }, { closeup: 'risveglio' }] }],
},
fortezza: {
name: 'Sotto le mura della Fortezza',
map: [36, 6],
background: 'assets/scenes/fortezza-esterno.png',
music: 'assets/audio/fortezza.mp3', // «Sotto i nove bastioni» (Andrea con Suno, 25 ottobre)
// Nella fessura, con la torcia: il pulviscolo nel fascio di luce, e gli occhi gialli che sbattono.
effects: [
{ type: 'dust', when: 'luce_fessura', area: [494, 278, 14, 22], count: 7 },
{ type: 'blink', when: 'occhi_regolo', rects: [[498, 282, 2, 2], [504, 282, 2, 2]], fill: '#ffe14a', every: 700, closed: 120 },
],
walk: [[110, 284], [300, 280], [330, 272], [348, 274], [400, 292], [442, 294], [640, 352], [640, 360], [0, 360], [0, 315], [60, 310], [105, 295]],
depth: [[272, 0.55], [360, 1.15]],
entry: [175, 352],
speakers: { pescatori: [150, 225] },
// Quattro ragazzi sull'erba si fanno le canne da pesca col bambù.
people: [{ who: 'pescatori', at: [150, 322], idle: 'work', talk: ['work', 'talk'], blink: 'laugh', every: 6, size: 1.25 }],
hotspots: [
{
id: 'pescatori', name: 'ragazzi con le canne', box: [92, 236, 120, 86], at: [240, 334], face: 'left', default: 'talk',
actions: {
look: [{ say: 'Quattro ragazzi che affilano canne di bambù col coltellino e ci legano le lenze.' }],
talk: [{ if: '!pescatori_parlato', then: [
{ set: 'pescatori_parlato' },
{ say: 'Oh, che fate?' },
{ say: 'Si preparano le canne: si va a pescare al lago dell\'Anatre, dietro Cardetole!', who: 'pescatori', pose: 'talk' },
{ say: 'Guarda questa: la lenza la regge anche una carpa di dieci chili.', who: 'pescatori', pose: 'proud' },
{ say: '(Vedi, mia mamma aveva ragione: in Fortezza si viene a farsi le canne.)' },
] }, { dialogue: 'pescatori' }],
},
},
{
id: 'mura', name: 'bastione', box: [420, 0, 220, 290],
actions: {
look: [{ say: 'Nove bastioni, li volle Cosimo I. Per tenere fuori i nemici, dicono. Secondo me per tenere dentro il Regolo.' }],
use: [{ say: 'Arrampicarmi sul bastione? Ho visto film che finivano meglio.' }],
},
},
{
id: 'porta', name: 'porta della Fortezza', box: [325, 226, 26, 46], at: [338, 278], face: 'up',
// La catena: la Fortezza è chiusa da anni.
art: [{ rect: [327, 249, 22, 2], fill: '#9a9aa4' }, { rect: [330, 252, 16, 2], fill: '#7c7c86' }, { rect: [335, 251, 6, 6], fill: '#c9a23a' }],
actions: {
look: [{ say: 'La porta della Fortezza. Chiusa con una catena grossa come il mio braccio.' }],
open: [{ say: 'Niente da fare. La Fortezza è chiusa da anni, e il lucchetto lo sa.' }],
talk: [{ say: 'Regolo? Ci sei?' }, { say: '...' }, { say: 'Ho sentito qualcosa. O era la mia pancia.' }],
},
},
{
id: 'impronte', name: 'strane impronte', box: [246, 304, 84, 18], at: [288, 330],
art: [{ poly: [[248, 318], [266, 310], [288, 314], [308, 306], [328, 304], [329, 307], [309, 310], [288, 318], [266, 315], [249, 321]], fill: 'rgba(70, 52, 30, 0.75)' }, { rect: [289, 314, 3, 2], fill: '#9dffa8' }],
actions: {
look: [{ say: 'Niente scarpe, niente zampe. Qualcosa è strisciato nell\'erba fino alla porta.' }, { say: 'Qualcosa di grosso.' }],
take: [{ say: 'Le impronte non si prendono. Si seguono.' }],
},
with: {
torcia: [{ say: 'Di giorno la torcia non serve: le impronte si vedono benissimo. È il buio della fessura, il problema.' }],
squama: [{
if: 'indizio_regolo',
then: [{ say: 'Ormai lo so: è passato di qui. E le impronte piegano verso il bastione.' }],
else: [
{ say: 'Le metto vicine...' },
{ say: 'Stesso luccichio, stessa puzza di cantina. Il Regolo è passato di qui!' },
{ set: 'indizio_regolo' },
{ say: 'Ma la porta è incatenata da anni. E allora da dove è entrato?' },
{ say: 'Le impronte non finiscono alla porta: piegano verso il bastione.' },
{ say: 'E lì, alla base del muro, c\'è una fessura che prima non avevo notato.' },
],
}],
},
},
// Fine del primo capitolo: la fessura si nota solo quando le impronte la indicano (squama sulle impronte); con la torcia si vede il palio, e due occhi gialli.
// Il dettaglio che lo fa riconoscere è quello del quadro vero (foto di Andrea, assets/raw/palio-2007-foto.jpg),
// già visto sul manifesto in piazza: l'omino con la maglia rossa e le braccia alzate.
{
id: 'fessura', name: 'fessura nel bastione', box: [486, 266, 30, 38], at: [462, 310], face: 'right', when: 'indizio_regolo',
art: [
{ poly: [[490, 301], [493, 288], [497, 276], [502, 270], [507, 278], [510, 290], [512, 302]], fill: '#120c08' },
{ when: 'luce_fessura', poly: [[494, 299], [497, 286], [502, 278], [506, 286], [508, 299]], fill: 'rgba(255, 228, 140, 0.6)' },
{ when: 'luce_fessura', rect: [497, 291, 9, 8], fill: '#d9d2b0' },
{ when: 'luce_fessura', rect: [499, 293, 1, 3], fill: '#c0392b' },
{ when: 'luce_fessura', rect: [503, 294, 1, 3], fill: '#9bb04a' },
],
actions: {
look: [{ say: 'Ecco dove vanno le impronte: dentro questa fessura, larga quanto un gatto grasso!' }, { say: 'Dentro è buio pesto, e ne esce un\'aria fresca da cantina. Senza luce non vedo niente.' }, { if: '!has:torcia', then: [{ say: 'Ci vuole una torcia. Quelli della festa ne tengono una nella casetta dell\'area feste, con le prolunghe.' }] }],
use: [{ say: 'Infilarci la mano al buio? Neanche per sogno.' }],
take: [{ say: 'Una fessura non si prende. Al massimo ci si guarda dentro.' }],
open: [{ say: 'È già aperta. Il problema è che è piccola.' }],
talk: [{ say: 'C\'è nessuno?' }, { say: '...' }, { say: 'Solo l\'eco. Spero.' }],
},
with: {
stecco_gomma: [{ say: 'Troppo buio: non vedo nemmeno dove lo infilo. Prima ci vuole una luce.' }],
torcia: [
{ say: 'Accendo la torcia e la punto dentro...' },
{ closeup: 'fessura' },
],
},
},
{
id: 'sentiero_trebbio', name: 'sentiero per il Trebbio', box: [0, 200, 90, 160], at: [20, 330], exit: { scene: 'sentiero_fortezza', at: [325, 190], face: 'down' },
},
{
id: 'verso_villa_adami', name: 'giù per il Poggio, verso Villa Adami', box: [180, 326, 340, 34], at: [330, 352], exit: { scene: 'salita_fortezza', at: [150, 318], face: 'up' },
},
],
},
// Livello 0: la Pieve vista dalla salita, con la salita per Villa Adami alle spalle.
pieve: {
name: 'La Pieve',
map: [56, 45],
background: 'assets/scenes/pieve-dalla-salita.png',
// Quando parla, dalla statua esce lo spirito di San Pietro con le sue chiavi (disegnato da Codex, idea di Andrea).
speakers: { san_pietro: [300, 100] },
apparitions: [{ who: 'san_pietro', src: 'assets/characters/spirito-san-pietro.png', at: [300, 232], height: 100 }],
// La rampa in primo piano e, dietro il muretto, il sagrato (ci si arriva da sinistra).
walk: [[0, 270], [80, 266], [86, 252], [100, 222], [270, 215], [300, 224], [480, 234], [560, 242], [600, 252], [610, 268], [276, 240], [276, 270], [292, 278], [640, 352], [640, 360], [0, 360]],
depth: [[215, 0.42], [360, 1.15]],
entry: [30, 320],
hotspots: [
{
id: 'chiesa', name: 'Pieve di San Pietro', box: [108, 78, 166, 132], at: [200, 290], face: 'up',
actions: {
look: [{ if: 'rione:pieve', then: [{ say: 'La Pieve di San Pietro. Il mio rione: noi bianchi.' }], else: [{ say: 'La Pieve di San Pietro. Il rione Pieve, quelli in bianco.' }] }],
open: [{ say: 'Il prete è a benedire le carrette del Palio. Torno dopo.' }],
},
},
{
id: 'portone', name: 'portone della Pieve', box: [196, 160, 46, 56], at: [218, 222], face: 'up', exit: { scene: 'pieve_interno', at: [320, 352], face: 'up' },
},
{
id: 'campanile', name: 'campanile', box: [272, 8, 60, 140], at: [300, 300], face: 'up',
actions: {
look: [{ say: 'Il campanile della Pieve. Da lassù si vedrebbe tutto il paese. Anche un serpente con le ali.' }],
},
},
{
// San Pietro, quello delle chiavi: a chi risolve l'indovinello dà la chiave dell'oratorio.
id: 'statua', name: 'statua di San Pietro', box: [330, 170, 26, 56], at: [345, 238], face: 'up', default: 'talk',
give: {
squama: [{ say: 'Figliolo, io tengo le chiavi, non le squame. Portala a chi l\'ha persa.', who: 'san_pietro' }],
chiave_oratorio: [{ say: 'Te l\'ho data io: usala, non restituirla. Le chiavi servono alle porte.', who: 'san_pietro' }],
},
actions: {
look: [{ say: 'La statua di San Pietro, con le chiavi in mano. Lui il palio l\'ha visto passare di sicuro.' }],
talk: [{
if: 'chiave_data',
then: [{ say: 'La chiave te l\'ho già data, figliolo. Di solito ne do di più importanti.', who: 'san_pietro' }],
else: [
{ say: 'Buongiorno, San Pietro.' },
{ say: 'Buongiorno a te, Andrea.', who: 'san_pietro' },
{ say: 'La statua parla?!' },
{ say: 'Tengo le chiavi, è il mio mestiere. Quella dell\'oratorio te la do se rispondi a un indovinello sulla mia Pieve.', who: 'san_pietro' },
{ say: 'Il fonte battesimale, là dentro. Per secoli hanno detto che l\'aveva fatto Luca della Robbia. Chi lo fece davvero?', who: 'san_pietro' },
{ dialogue: 'indovinello' },
],
}],
},
},
{
// La porta resta chiusa finché non si usa la chiave; poi è aperta per sempre e la chiave sparisce.
id: 'porta_oratorio', name: 'porta dell\'oratorio', box: [452, 180, 42, 56], at: [473, 240], face: 'up', default: 'open', when: '!oratorio_aperto',
actions: {
look: [{ say: 'La porta che dà sull\'oratorio. Chiusa a chiave.' }],
open: [{
if: 'has:chiave_oratorio',
then: [{ drop: 'chiave_oratorio' }, { set: 'oratorio_aperto' }, { say: 'Clic! Aperta. La chiave la lascio nella serratura: così resta aperta.' }, { go: 'oratorio', at: [320, 345], face: 'right' }],
else: [{ say: 'Chiusa a chiave. E le chiavi, da queste parti, chi le tiene?' }],
}],
walk: [{ say: 'Chiusa a chiave. E le chiavi, da queste parti, chi le tiene?' }],
},
with: {
chiave_oratorio: [{ drop: 'chiave_oratorio' }, { set: 'oratorio_aperto' }, { say: 'Clic! Aperta. La chiave la lascio nella serratura: così resta aperta.' }, { go: 'oratorio', at: [320, 345], face: 'right' }],
},
},
{
id: 'oratorio', name: 'porta dell\'oratorio', box: [452, 180, 42, 56], at: [473, 240], face: 'up', when: 'oratorio_aperto', exit: { scene: 'oratorio', at: [320, 345], face: 'right' },
},
{
id: 'verso_cardetole', name: 'strada per Cardetole', box: [0, 204, 82, 54], at: [95, 250], face: 'left', exit: { scene: 'carza', at: [300, 350], face: 'up' },
actions: {
look: [{ if: 'rione:cardetole', then: [{ say: 'La strada che scende a Cardetole: casa mia, e il mio rione, i verdi.' }], else: [{ say: 'La strada che scende a Cardetole, il rione dei verdi.' }] }],
},
},
{
id: 'verso_provinciale', name: 'Via Provinciale, verso il River', box: [0, 270, 46, 70], at: [14, 312], face: 'left', exit: { scene: 'provinciale_pignone', at: [268, 216], face: 'down' },
},
{
id: 'verso_forno', name: 'a destra, verso il forno', box: [570, 176, 70, 76], at: [588, 250], exit: { scene: 'forno', at: [628, 300], face: 'left' },
},
{
id: 'salita_villa_adami', name: 'su per Via della Compagnia, verso Villa Adami', box: [440, 330, 200, 30], at: [600, 350], exit: { scene: 'via_compagnia', at: [94, 316], face: 'right' },
},
],
},
// Dentro la Pieve (dalla foto di Mariano Mirannalti): la navata, l'altare, il crocifisso e San Pietro.
pieve_interno: {
name: 'Dentro la Pieve',
map: [56, 39],
background: 'assets/scenes/pieve-interno.png',
music: 'assets/audio/pieve.mp3', // l'organo soave della chiesa (tools/organo.py, 25 ottobre)
effects: [{ type: 'beam', phase: ['pomeriggio', 'tramonto'], poly: [[22, 122], [32, 118], [250, 360], [150, 360]] }, { type: 'dust', phase: ['pomeriggio', 'tramonto'], area: [60, 200, 90, 110], count: 9 }],
// Penombra, e le sei candele dell'altare accese (Andrea, 24 ottobre).
indoor: true,
shade: 'rgba(14, 8, 24, 0.62)',
// Le candele si accendono dal tramonto: di pomeriggio la chiesa è in penombra e basta.
lights: [[284, 157], [294, 159], [304, 155], [336, 155], [346, 159], [356, 157]].map(at => ({ at, phase: ['tramonto', 'sera'] })),
walk: [[262, 360], [290, 256], [350, 256], [380, 360]],
depth: [[256, 0.7], [360, 1.7]],
entry: [320, 352],
hotspots: [
// Il fonte battesimale robbiano (1518), in primo piano a sinistra come nella Pieve vera (disegnato da Codex dalle
// foto): la risposta all'indovinello di San Pietro (curiosità trovata da Andrea).
{
id: 'fonte', name: 'fonte battesimale', box: [0, 228, 150, 132], at: [276, 335], face: 'left',
actions: {
look: [
{ say: 'Il fonte battesimale, in terracotta invetriata bianca e azzurra. Ci hanno battezzato mezzo paese, me compreso.' },
{ say: 'C\'è un cartellino: «Bottega di Giovanni della Robbia, 1518. Per secoli attribuito a Luca della Robbia».' },
{ set: 'fonte_visto' },
],
use: [{ say: 'Sono già battezzato. Una volta basta e avanza.' }],
take: [{ say: 'Pesa come un\'utilitaria. E poi chi lo spiega al parroco?' }],
},
},
// Il libro dimenticato su una panca (idea di Andrea, 24 ottobre): in copertina la risposta, dentro la domanda.
{
id: 'libro_panca', name: 'libro su una panca', box: [516, 314, 44, 26], at: [372, 335], face: 'right',
art: [
// Il libro sulla seduta della prima panca a destra: copertina rossa, il 42 dorato, il taglio delle pagine.
{ rect: [525, 323, 26, 7], fill: '#c0392b' }, { rect: [525, 323, 26, 1], fill: '#e0604a' }, { rect: [526, 330, 24, 2], fill: '#f3e7c4' },
{ rect: [534, 325, 3, 3], fill: '#ffd76a' }, { rect: [538, 325, 3, 3], fill: '#ffd76a' },
// Da vicino: la copertina col 42, poi l'unica pagina con la domanda.
{ when: 'copertina_42', top: true, rect: [255, 60, 130, 170], fill: '#7a1f1f' },
{ when: 'copertina_42', top: true, rect: [263, 68, 114, 154], fill: '#8e2a26' },
{ when: 'copertina_42', top: true, text: '42', at: [320, 146], size: 48, fill: '#e8c25a' },
{ when: 'pagina_domanda', top: true, rect: [240, 70, 160, 150], fill: '#f1e6c4' },
{ when: 'pagina_domanda', top: true, rect: [240, 70, 160, 4], fill: '#d8c79a' },
{ when: 'pagina_domanda', top: true, text: 'Qual era', at: [320, 132], size: 12, fill: '#2a1f30' },
{ when: 'pagina_domanda', top: true, text: 'la domanda?', at: [320, 156], size: 12, fill: '#2a1f30' },
],
actions: {
look: [
{ set: 'copertina_42' },
{ say: 'Un libro dimenticato su una panca. In copertina, niente titolo: solo un numero. 42.' },
{ unset: 'copertina_42' },
],
open: [
{ say: 'Vediamo cosa c\'è dentro...' },
{ set: 'pagina_domanda' },
{ say: 'Una pagina sola: «Qual era la domanda?».' },
{ unset: 'pagina_domanda' },
{ say: 'Ecco. La risposta ce l\'hanno tutti: è la domanda che non si ricorda nessuno.' },
],
take: [{ say: 'Lo lascio dov\'è. Qualcun altro potrebbe cercare la stessa domanda.' }],
},
},
{
id: 'altare', name: 'altare', box: [270, 186, 100, 64], at: [320, 262], face: 'up',
actions: {
look: [{ say: 'L\'altare, coi candelieri dorati e i fiori freschi. Qualcuno li cambia ogni mattina, prima di tutti.' }],
take: [{ say: 'Un candeliere? Mi sa che San Pietro le chiavi del Paradiso me le toglie per sempre.' }],
},
},
{
id: 'crocifisso', name: 'crocifisso', box: [296, 100, 48, 70], at: [320, 262], face: 'up',
actions: {
look: [{ say: 'Il grande crocifisso di legno, davanti alla statua di San Pietro.' }, { say: 'Qui si abbassa la voce senza che nessuno lo chieda.' }],
},
},
{
id: 'san_pietro_statua', name: 'statua di San Pietro', box: [298, 64, 44, 40], at: [320, 262], face: 'up',
actions: {
look: [{ say: 'San Pietro, il patrono. Quello fuori sul sagrato parla. Questo, per fortuna, no.' }],
},
},
{
id: 'panche', name: 'panche', box: [150, 240, 110, 120], at: [280, 320], face: 'left',
actions: {
look: [{ say: 'Le panche dove ci siamo seduti tutti, dal battesimo in poi. Le più scomode del Mugello.' }],
use: [{ say: 'Un minuto seduto... no, se mi siedo qui mi addormento come alla messa delle undici.' }],
},
},
{
id: 'uscita', name: 'esci sul sagrato', box: [240, 334, 160, 26], at: [320, 356], exit: { scene: 'pieve', at: [218, 222], face: 'down' },
},
],
},
// Il cortile dell'oratorio, dietro la porta della canonica: palco, tettoia, tavolate della festa.
oratorio: {
name: 'Oratorio della Pieve',
map: [82, 45],
background: 'assets/scenes/oratorio.png',
speakers: { giocatore_carte: [595, 185] },
people: [{ who: 'giocatore_carte', at: [595, 239], facing: -1, idle: 'sit', talk: ['sit', 'talk'], blink: 'shuffle', every: 5, size: 1.05 }],
walk: [[0, 236], [300, 226], [480, 222], [500, 232], [640, 254], [640, 360], [0, 360]],
depth: [[222, 0.5], [360, 1.15]],
entry: [320, 345],
hotspots: [
{
id: 'palco', name: 'palco', box: [52, 149, 134, 58], at: [120, 238], face: 'up',
actions: {
look: [{ say: 'Il palco dell\'oratorio. D\'estate ci fanno le recite, la tombola e i concerti.' }, { say: 'Adesso è vuoto. Peccato, avevo un numero di giocoleria pronto.' }],
use: [{ say: 'Salire sul palco senza pubblico? Mi vergogno pure da solo.' }],
},
},
{
id: 'tettoia', name: 'tettoia', box: [333, 119, 153, 72], at: [400, 236], face: 'up',
actions: {
look: [{ say: 'La tettoia, dove si mettono le cucine quando c\'è la festa.' }],
},
},
{
id: 'tavolate', name: 'tavolate', box: [500, 128, 140, 113], at: [560, 268], face: 'right',
actions: {
look: [{ say: 'Le tavolate della festa. Fra qualche giorno qui si mangia per tre ore di fila.' }],
use: [{ say: 'Mi siedo e aspetto che arrivi la pastasciutta? Ci vorrebbe una settimana.' }],
},
},
{
// [DA ANDREA: chi è] Seduto alle tavolate, col mazzo davanti.
id: 'giocatore_carte', name: 'Il giocatore di carte', box: [580, 195, 39, 45], at: [580, 266], face: 'right', default: 'talk',
art: [{ rect: [578, 211, 9, 5], fill: '#f3dfb1' }, { rect: [579, 211, 7, 3], fill: '#34584e' }],
actions: {
look: [{ say: 'Ha già mescolato. Mi sa che aspettava proprio un pollo di passaggio.' }],
talk: [{ dialogue: 'giocatore_carte' }],
},
},
{
id: 'gomma_terra', name: 'gomma da masticare', box: [134, 230, 16, 10], at: [140, 244], face: 'up', when: ['!has:gomma', '!gomma_presa'],
art: [{ rect: [137, 233, 10, 4], fill: '#f27ab0' }, { rect: [138, 233, 3, 1], fill: '#ffd0e8' }],
actions: {
look: [{ say: 'Una gomma da masticare ancora incartata, persa davanti al palco. Qualcuno ha perso l\'appetito.' }],
take: [{ give: 'gomma' }, { set: 'gomma_presa' }, { say: 'Una gomma alla fragola. Me la tengo.' }],
},
},
{
// Dopo le tavolate: dove si sovrappongono, vince l'ultimo della lista.
// Sulla prima tavolata, a sinistra del palo: lontano dal giocatore di carte (Andrea: «troppo vicini»).
id: 'libro_dimenticato', name: 'libro dimenticato', box: [512, 198, 22, 14], at: [522, 262], face: 'up', when: ['!has:libro', '!libro_preso'],
art: [{ rect: [517, 203, 11, 5], fill: '#c46a3a' }, { rect: [517, 207, 11, 1], fill: '#f4efe4' }, { rect: [521, 204, 3, 3], fill: '#e8c25a' }],
actions: {
look: [{ say: 'Un libro dimenticato sulle tavolate. Sulla copertina c\'è scritto «La storia infinita».' }],
take: [{ give: 'libro' }, { set: 'libro_preso' }, { say: 'Ricordo di aver visto il film da piccolo... era stupendo!' }, { closeup: 'libro' }],
},
},
{
id: 'cancello', name: 'cancello', box: [477, 166, 23, 52], at: [488, 236], face: 'up',
actions: {
// Il vecchio campo «Alberto Bettini» (Andrea, 25 ottobre; www.polisportivasanpieroasieve.it).
look: [
{ say: 'Il cancello di dietro. Se chiudo gli occhi vedo ancora l\'A. Bettini, il campo da calcio di quando eravamo piccoli: lassù ci sono ancora i riflettori.' },
{ say: 'Il primo vero campo del paese: inaugurato nel 1964 e intitolato ad Alberto Bettini, un giovane consigliere della società scomparso troppo presto.' },
],
open: [{ say: 'Chiuso. Si apre solo quando c\'è la festa.' }],
},
},
{
id: 'verso_pieve', name: 'torna alla Pieve', box: [0, 334, 640, 26], at: [320, 354], exit: { scene: 'pieve', at: [473, 240], face: 'down' },
},
],
},
// Via de' Medici: dalla Piazzetta Cambray Digny sale verso Villa Adami (la Piazzetta è alle spalle, in fondo si va su).
via_de_medici: {
name: 'Via de\' Medici',
map: [22, 32],
background: 'assets/scenes/via-de-medici.png',
walk: [[0, 360], [0, 336], [160, 290], [262, 240], [288, 212], [312, 208], [340, 222], [470, 300], [545, 360]],
depth: [[208, 0.32], [360, 1.25]],
entry: [300, 348],
hotspots: [
{
id: 'portone', name: 'portone ad arco', box: [478, 30, 70, 270], at: [430, 290], face: 'right',
actions: {
look: [{ say: 'Un portone antico con l\'inferriata. Chissà cosa c\'è dietro: una cantina? Un tesoro? La cantina di un tesoro?' }],
open: [{ say: 'Chiuso. Come tutte le porte interessanti di questo paese.' }],
},
},
{
id: 'su_villa_adami', name: 'su, verso Via della Compagnia', box: [272, 186, 60, 34], at: [300, 216], exit: { scene: 'via_compagnia', at: [300, 350], face: 'up' },
},
{
id: 'giu_piazzetta', name: 'giù verso Piazzetta Cambray Digny', box: [0, 334, 545, 26], at: [300, 354], exit: { scene: 'piazzetta', at: [20, 320], face: 'right' },
},
],
},
// Via Pietro Cipriani, fra Via Massorondinaio (alle spalle, verso il campeggio) e la Piazza (in fondo, col Circolo 4 Maggio arancione).
// A destra il Cinema Taiuti, aperto come nel 2007, col cartellone del Rattattù; lassù il campo da basket del Circolo.
via_cipriani: {
name: 'Via Pietro Cipriani',
map: [22, 64],
background: 'assets/scenes/via-cipriani.png',
walk: [[40, 360], [40, 320], [60, 280], [100, 272], [150, 276], [300, 300], [360, 318], [640, 345], [640, 360]],
depth: [[272, 0.45], [360, 1.15]],
entry: [300, 345],
hotspots: [
{
id: 'rattattu', name: 'cartellone del Rattattù', box: [460, 152, 58, 110], at: [480, 336], face: 'up',
actions: {
look: [{ say: 'Il Rattattù: la gara di canto del paese. Si sale sul palco e ci si sfida tutti, chi stona e chi no.' }, { say: 'Quest\'anno mi ci iscrivo. Forse.' }],
},
},
{
id: 'cinema', name: 'Cinema Taiuti', box: [420, 40, 220, 220], at: [520, 340], face: 'up',
actions: {
look: [{ say: 'Il Cinema Taiuti. Una sala, un proiettore e le poltroncine che cigolano a tempo.' }],
open: [{ say: 'A quest\'ora è chiuso. Apre la sera, per il film o per il Rattattù.' }],
},
},
{
id: 'campo_basket', name: 'campo da basket del Circolo', box: [250, 110, 170, 80], at: [340, 316], face: 'up', default: 'use',
actions: {
look: [{ say: 'Il campo da basket del Circolo, lassù oltre la rete. Due tiri ce li faccio sempre volentieri.' }],
use: [{ dialogue: 'basket' }],
walk: [{ dialogue: 'basket' }],
},
},
{
id: 'alla_piazza', name: 'in fondo, la Piazza', box: [80, 230, 120, 50], at: [120, 280], exit: { scene: 'piazza', at: [345, 240], face: 'down' },
},
{
id: 'al_campeggio', name: 'indietro, verso il campeggio', box: [0, 334, 640, 26], at: [300, 354], exit: { scene: 'via_massorondinaio', at: [30, 300], face: 'right' },
},
],
},
// Via Massorondinaio: a sinistra si riprende Via Cipriani (verso la Piazza), a diritto si va al campeggio.
via_massorondinaio: {
name: 'Via Massorondinaio',
map: [17, 74],
background: 'assets/scenes/via-massorondinaio.png',
walk: [[0, 360], [0, 266], [200, 258], [400, 240], [520, 226], [566, 226], [552, 250], [545, 290], [600, 360]],
depth: [[226, 0.4], [360, 1.2]],
entry: [300, 330],
hotspots: [
{
id: 'a_via_cipriani', name: 'a sinistra, Via Cipriani', box: [0, 262, 40, 80], at: [16, 300], face: 'left', exit: { scene: 'via_cipriani', at: [300, 345], face: 'up' },
},
{
id: 'al_campeggio', name: 'a diritto, verso il campeggio', box: [496, 196, 74, 34], at: [535, 232], exit: { scene: 'campeggio', at: [200, 345], face: 'right' },
},
],
},
// Le Mozzète (Via Donatello): in fondo il campo secondario, in basso a destra si scende al ponticino.
mozzete: {
name: 'Le Mozzète',
map: [72, 92],
background: 'assets/scenes/mozzete.png',
walk: [[0, 360], [0, 280], [40, 232], [120, 212], [300, 200], [335, 198], [350, 210], [420, 270], [640, 330], [640, 360]],
depth: [[198, 0.3], [360, 1.2]],
entry: [320, 330],
hotspots: [
{
id: 'fermata', name: 'fermata della corriera', box: [450, 170, 110, 90], at: [470, 300], face: 'right',
actions: {
look: [{ say: 'La fermata della corriera. Da qui si va dappertutto. Se passa.' }],
},
},
{
id: 'al_secondario', name: 'in fondo, il campo secondario', box: [300, 176, 60, 30], at: [330, 206], exit: { scene: 'polisportiva', at: [628, 290], face: 'left' },
},
{
id: 'al_ponticino', name: 'giù a destra, il ponticino delle Mozzète', box: [580, 316, 60, 44], at: [612, 345], face: 'right', exit: { scene: 'ponticino_mozzete', at: [300, 196], face: 'down' },
},
],
},
// Il ponticino delle Mozzète: lassù la congiunzione con le Mozzète, indietro si va verso Coldaia.
ponticino_mozzete: {
name: 'Il ponticino delle Mozzète',
map: [78, 88],
background: 'assets/scenes/ponticino-mozzete.png',
walk: [[0, 360], [0, 300], [200, 270], [280, 190], [320, 186], [380, 230], [520, 290], [640, 310], [640, 360]],
depth: [[186, 0.3], [360, 1.2]],
entry: [300, 340],
hotspots: [
{
id: 'parapetto', name: 'parapetto del ponticino', box: [460, 230, 120, 50], at: [470, 300], face: 'right',
actions: {
look: [{ say: 'Il ponticino delle Mozzète. Sotto ci passa un fossino che d\'estate fa più zanzare che acqua.' }],
},
},
{
id: 'alle_mozzete', name: 'lassù, le Mozzète', box: [270, 166, 60, 30], at: [300, 196], exit: { scene: 'mozzete', at: [612, 345], face: 'left' },
},
{
id: 'a_coldaia', name: 'indietro, verso Coldaia', box: [0, 334, 640, 26], at: [300, 354], exit: { scene: 'coldaia', at: [450, 345], face: 'up' },
},
],
},
// Coldaia: dietro il ponticino delle Mozzète; avanti la falegnameria e poi Gabbiano.
coldaia: {
name: 'Coldaia',
map: [84, 89],
background: 'assets/scenes/coldaia.png',
walk: [[230, 360], [300, 250], [318, 200], [290, 166], [330, 162], [460, 205], [640, 268], [640, 360]],
depth: [[162, 0.3], [360, 1.2]],
entry: [450, 345],
hotspots: [
{
id: 'campo_arato', name: 'campo arato', box: [0, 160, 220, 130], at: [280, 330], face: 'left',
actions: {
look: [{ say: 'Terra appena arata. Profuma di campagna e di trattore.' }],
},
},
{
id: 'alla_falegnameria', name: 'avanti, verso la falegnameria', box: [280, 140, 60, 34], at: [305, 168], exit: { scene: 'falegnameria_coldaia', at: [300, 340], face: 'up' },
},
{
id: 'al_ponticino', name: 'indietro, il ponticino delle Mozzète', box: [220, 334, 420, 26], at: [450, 354], exit: { scene: 'ponticino_mozzete', at: [300, 340], face: 'up' },
},
],
},
// La falegnameria di Coldaia, col fienile delle rotoballe; a diritto si va a Gabbiano.
falegnameria_coldaia: {
name: 'La falegnameria',
map: [90, 91],
background: 'assets/scenes/falegnameria-coldaia.png',
walk: [[0, 360], [0, 300], [100, 260], [160, 220], [185, 220], [230, 250], [640, 250], [640, 360]],
depth: [[220, 0.35], [360, 1.2]],
entry: [300, 340],
hotspots: [
{
id: 'falegnameria', name: 'falegnameria', box: [160, 176, 120, 44], at: [220, 260], face: 'up',
actions: {
look: [{ say: 'La falegnameria. L\'odore di segatura arriva fin qui.' }],
open: [{ say: 'Bussare a una falegnameria? Mi danno una scopa e mi fanno spazzare.' }],
},
},
{
id: 'fienile', name: 'fienile', box: [290, 90, 320, 140], at: [440, 280], face: 'up',
actions: {
look: [{ say: 'Un fienile pieno di rotoballe. Fossi una mucca, sarebbe il paradiso.' }],
},
},
{
id: 'a_gabbiano', name: 'a diritto, verso Gabbiano', box: [140, 190, 64, 32], at: [172, 222], exit: { scene: 'gabbiano', at: [300, 340], face: 'up' },
},
{
id: 'a_coldaia', name: 'indietro, verso Coldaia', box: [0, 334, 640, 26], at: [300, 354], exit: { scene: 'coldaia', at: [305, 170], face: 'down' },
},
],
},
// La strada di Gabbiano, in mezzo alla campagna del Mugello.
gabbiano: {
name: 'Gabbiano',
map: [95, 93],
background: 'assets/scenes/gabbiano.png',
walk: [[0, 360], [0, 300], [200, 260], [400, 215], [430, 186], [445, 186], [520, 240], [640, 280], [640, 360]],
depth: [[186, 0.3], [360, 1.2]],
entry: [300, 340],
hotspots: [
{
id: 'valle', name: 'campagna', box: [150, 140, 260, 60], at: [330, 300], face: 'up',
actions: {
look: [{ say: 'La campagna verso Gabbiano. Da quassù si vede mezzo Mugello.' }, { say: 'Il palio, però, no.' }],
},
},
{
id: 'casolare', name: 'casolare', box: [0, 30, 140, 220], at: [150, 320], face: 'left',
actions: {
look: [{ say: 'Un casolare vecchio, coi mattoni che spuntano dall\'intonaco. Come le mie ginocchia.' }],
},
},
{
id: 'alla_falegnameria', name: 'indietro, verso la falegnameria', box: [0, 334, 640, 26], at: [300, 354], exit: { scene: 'falegnameria_coldaia', at: [172, 224], face: 'down' },
},
],
},
// L'ingresso del campeggio: dalla Piazza per Via Cipriani e Via Massorondinaio; poco dopo, a destra, si sale al Bosco ai Frati.
campeggio: {
name: 'Ingresso del campeggio',
map: [12, 84],
background: 'assets/scenes/campeggio.png',
effects: [{ type: 'cloth', pole: 'right', rects: [[28, 108, 26, 44], [84, 92, 36, 72], [229, 104, 34, 30], [548, 92, 58, 64]] }],
walk: [[150, 360], [165, 262], [420, 266], [640, 286], [640, 360]],
depth: [[262, 0.6], [360, 1.15]],
entry: [200, 345],
hotspots: [
{
id: 'campeggio', name: 'campeggio', box: [190, 120, 220, 140], at: [300, 280], face: 'up',
actions: {
look: [{ say: 'L\'ingresso del campeggio. A giudicare dalle bandiere, ci dorme mezzo mondo.' }],
walk: [{ say: 'Dentro non conosco nessuno. E il Regolo, che io sappia, non va in campeggio.' }],
},
},
{
id: 'bandiere', name: 'bandierine', box: [115, 52, 340, 30], at: [300, 280], face: 'up',
actions: {
look: [{ say: 'Una fila di bandierine di tutti i paesi. Il Palio della Fortezza però è roba nostra.' }],
take: [{ say: 'Senza scala ci arrivo solo con la fantasia.' }],
},
},
{
id: 'bosco_ai_frati', name: 'salita verso il Bosco ai Frati', box: [570, 250, 70, 110], at: [628, 320], exit: { scene: 'bosco_ai_frati', at: [320, 345], face: 'right' },
},
{
id: 'verso_piazza', name: 'Via Massorondinaio, verso la Piazza', box: [150, 290, 100, 70], at: [175, 345], exit: { scene: 'via_massorondinaio', at: [530, 236], face: 'down' },
},
],
},
// Il convento del Bosco ai Frati, nel bosco sopra il campeggio.
bosco_ai_frati: {
name: 'Bosco ai Frati',
map: [12, 96],
background: 'assets/scenes/bosco-ai-frati.png',
effects: [{ type: 'leafshadow', phase: ['pomeriggio', 'tramonto'], area: [0, 296, 230, 50], count: 16 }],
walk: [[0, 304], [100, 298], [480, 292], [640, 300], [640, 360], [0, 360]],
depth: [[292, 0.78], [360, 1.1]],
entry: [320, 345],
// Fra Peppino da Gricignano (sprite di Codex dalla foto di Andrea, 25 ottobre): stava sul sagrato della Pieve,
// ma è un francescano, e il Bosco ai Frati è il loro convento (Andrea, 26 ottobre).
speakers: { fra_peppino: [470, 238] },
people: [{ who: 'fra_peppino', at: [470, 304], facing: -1, idle: 'stand', talk: ['talk', 'explain'], blink: 'blink', every: 4.8 }],
hotspots: [
{
// Battute provvisorie: le vere le scrive Andrea.
id: 'fra_peppino', name: 'Fra Peppino', box: [458, 248, 26, 58], at: [430, 306], face: 'right', default: 'talk',
actions: {
look: [{ say: 'Fra Peppino da Gricignano, col saio e i sandali. Qui al Bosco ai Frati è a casa sua: è un convento di francescani.' }],
talk: [{ say: 'Buongiorno, Fra Peppino!' }, { say: 'Pace e bene, figliolo. Cerchi qualcosa?', who: 'fra_peppino', pose: 'bless' }, { say: 'Il palio. È sparito.' }, { say: 'Le cose sparite, prima o poi, tornano. Come le pecorelle.', who: 'fra_peppino', pose: 'explain' }],
},
},
{
id: 'convento', name: 'chiesa del convento', box: [96, 60, 386, 236], at: [320, 310], face: 'up',
actions: {
look: [{ say: 'Il convento del Bosco ai Frati, in mezzo al bosco. Qui si viene a cercare il fresco e il silenzio.' }],
open: [{ say: 'Meglio non disturbare: i frati sono gli unici in tutto il Mugello che non parlano del Palio.' }],
},
},
{
id: 'porta_convento', name: 'porta del convento', box: [526, 218, 32, 78], at: [540, 304], face: 'up',
actions: {
look: [{ say: 'Una porta ad arco col cancelletto di ferro.' }],
open: [{ say: 'Chiusa. A quest\'ora i frati pregano. O pranzano. O tutte e due.' }],
},
},
{
id: 'tiglio', name: 'tiglio', box: [0, 0, 92, 296], at: [100, 320], face: 'left',
actions: {
look: [{ say: 'Un tiglio enorme. Profuma che sembra una pasticceria.' }],
use: [{ say: 'Arrampicarmi? Ho i pantaloni buoni.' }],
},
},
{
id: 'giu_campeggio', name: 'scendi verso il campeggio', box: [0, 334, 640, 26], at: [320, 354], exit: { scene: 'campeggio', at: [620, 320], face: 'left' },
},
],
},
// Il Comune e l'asilo infantile Antonio Frilli: dalla strada di fronte alla farmacia o da Via Calimara
// (a sinistra in Piazza, dove una volta si veniva qui, c'è la Piazzetta Cambray Digny: Andrea, 27 ottobre).
comune: {
name: 'Il Comune',
map: [11, 45],
background: 'assets/scenes/comune-asilo.png',
walk: [[0, 360], [0, 262], [200, 256], [330, 250], [420, 268], [440, 305], [640, 330], [640, 360]],
depth: [[250, 0.5], [360, 1.15]],
entry: [320, 350],
hotspots: [
{
id: 'torre', name: 'torre dell\'orologio', box: [200, 26, 40, 70], at: [250, 262], face: 'up',
actions: {
look: [{ say: 'La torre dell\'orologio del Comune. Va sempre giusto, tranne quando serve.' }],
},
},
{
id: 'palazzo', name: 'Comune', box: [170, 96, 120, 150], at: [250, 262], face: 'up',
actions: {
look: [{ say: 'Il Comune di San Piero. Qui si fanno i timbri, i permessi e, a quanto pare, anche il Palio.' }],
open: [{ say: 'Senza un modulo in carta bollata non mi fanno entrare neanche a chiedere l\'ora.' }],
},
},
{
id: 'asilo', name: 'asilo Antonio Frilli', box: [300, 140, 150, 90], at: [380, 268], face: 'up',
actions: {
look: [{ say: 'L\'asilo infantile Antonio Frilli. Ci sono passato anch\'io, coi grembiulini a quadretti.' }],
open: [{ say: 'All\'asilo? Ho già dato, grazie.' }],
},
},
{
id: 'alla_scalinata', name: 'a sinistra, la scalinata della Piazzetta', box: [0, 120, 150, 212], at: [40, 300], face: 'left', exit: { scene: 'scalinata', at: [300, 350], face: 'up' },
},
{
id: 'al_giardino', name: 'verso il giardino di Via Calimara', box: [596, 290, 44, 70], at: [600, 340], exit: { scene: 'via_calimara', at: [160, 290], face: 'right' },
},
{
id: 'alla_farmacia', name: 'giù, verso la farmacia', box: [60, 334, 520, 26], at: [320, 354], exit: { scene: 'via_provinciale', at: [622, 244], face: 'left' },
},
],
},
// Il campone delle poste: a destra della stazione; in fondo, le poste.
giardini_poste: {
name: 'Il campone delle poste',
map: [11, 58],
background: 'assets/scenes/giardini-poste.png',
walk: [[0, 360], [0, 232], [640, 232], [640, 360]],
depth: [[232, 0.55], [360, 1.15]],
entry: [580, 340],
speakers: { taglia: [470, 214] },
// Il Taglia con la sua Condor, più alto di Andrea (che è un metro e ottanta).
people: [{ who: 'taglia', at: [470, 296], facing: -1, size: 1.2, idle: 'stand', talk: ['talk', 'explain'], blink: 'blink', every: 3.9 }],
hotspots: [
{
id: 'giochi', name: 'giochi', box: [196, 120, 330, 100], at: [360, 250], face: 'up',
actions: {
look: [{ say: 'Lo scivolo e le altalene. Ho ventisette anni, ufficialmente. Ufficiosamente, un giro ci starebbe.' }],
use: [{ say: 'Un giro sull\'altalena! ... No, c\'è troppa gente che mi conosce.' }],
},
},
{
id: 'panchina', name: 'panchina rossa', box: [56, 164, 56, 22], at: [90, 240], face: 'up',
actions: {
look: [{ say: 'La panchina rossa. Qui si scambiavano le figurine: celo, celo, manca.' }],
},
},
{
id: 'poste', name: 'le poste', box: [0, 100, 110, 50], at: [60, 240], face: 'up',
actions: {
look: [{ say: 'Laggiù le poste. Mia nonna ci andava a ritirare la pensione e tornava con tutte le notizie del paese.' }],
},
},
{
id: 'alla_stazione', name: 'verso la stazione', box: [100, 110, 80, 130], at: [137, 240], exit: { scene: 'stazione', at: [628, 320], face: 'left' },
},
{
// Dietro le poste passa la passeggiata sulla Carza (Andrea, 29 ottobre).
id: 'alla_carza', name: 'dietro, la passeggiata sulla Carza', box: [560, 150, 80, 80], at: [600, 250], exit: { scene: 'passeggiata_poste', at: [280, 240], face: 'right' },
},
{
id: 'alla_strada', name: 'indietro, sulla strada della stazione', box: [100, 336, 440, 24], at: [300, 352], exit: { scene: 'viale_stazione', at: [620, 280], face: 'left' },
},
{
id: 'taglia', name: 'il Taglia', box: [448, 224, 44, 72], at: [430, 306], face: 'right', default: 'talk',
actions: {
look: [{ say: 'Il Taglia, con la Condor in mano. Chi lo batte al campone si merita un monumento.' }],
talk: [{ dialogue: 'taglia' }],
},
},
],
},
// Via Calimara: dalla Piazza scende alla farmacia, in Via Provinciale.
via_calimara: {
name: 'Via Calimara',
map: [36, 58],
background: 'assets/scenes/via-calimara.png',
walk: [[0, 360], [0, 318], [330, 206], [400, 206], [560, 300], [600, 360]],
depth: [[206, 0.3], [360, 1.15]],
entry: [300, 350],
hotspots: [
{
id: 'giardino', name: 'dal giardino, verso il Comune', box: [0, 110, 330, 120], at: [160, 290], face: 'left', exit: { scene: 'comune', at: [600, 340], face: 'left' },
actions: {
look: [{ say: 'Il giardino coi cedri e le panchine. All\'ombra, d\'estate, ci si fa la siesta a turno.' }],
},
},
{
id: 'vetrina', name: 'vetrina', box: [570, 110, 70, 150], at: [540, 300], face: 'right',
actions: {
look: [{ say: 'Una vetrina vuota. Ci vedo solo il mio riflesso, e ha l\'aria di uno che cerca un palio.' }],
},
},
{
id: 'alla_piazza', name: 'in fondo, la Piazza', box: [330, 176, 90, 40], at: [365, 210], exit: { scene: 'piazza', at: [360, 350], face: 'up' },
},
{
id: 'alla_provinciale', name: 'verso la farmacia', box: [0, 330, 640, 30], at: [300, 354], exit: { scene: 'via_provinciale', at: [600, 330], face: 'left' },
},
],
},
// Via Provinciale alla rotonda: il River e la farmacia. Andando avanti, la Pieve.
via_provinciale: {
name: 'Via Provinciale',
map: [40, 71],
background: 'assets/scenes/via-provinciale.png',
walk: [[0, 360], [0, 312], [300, 302], [440, 262], [470, 238], [640, 238], [640, 360]],
depth: [[238, 0.45], [360, 1.15]],
entry: [140, 340],
hotspots: [
{
id: 'river', name: 'il River', box: [60, 128, 190, 110], at: [160, 320], face: 'up',
actions: {
look: [{ say: 'Il River, il bar della rotonda. Fuori gli ombrelloni, dentro i flipper e le figurine.' }],
open: [{ say: 'Un ghiacciolo ci starebbe. Ma prima il palio, poi i ghiaccioli.' }],
},
},
{
id: 'farmacia', name: 'farmacia', box: [356, 176, 50, 60], at: [380, 290], face: 'up',
actions: {
look: [{ say: 'La farmacia, con la croce verde. Mia nonna ci veniva per le pasticche e per le chiacchiere. Più per le chiacchiere.' }],
open: [{ say: 'Non mi fa male niente. Per ora.' }],
},
},
{
id: 'al_ponte', name: 'a sinistra, verso il campo sportivo', box: [0, 216, 60, 100], at: [12, 318], exit: { scene: 'ponte_sieve', at: [300, 350], face: 'up' },
},
{
id: 'alla_pieve', name: 'dietro la farmacia, verso la Pieve', box: [420, 170, 118, 70], at: [480, 242], exit: { scene: 'provinciale_pignone', at: [300, 345], face: 'up' },
},
{
id: 'area_feste', name: 'qui sotto, verso l\'area feste', box: [0, 318, 300, 42], at: [120, 352], exit: { scene: 'area_feste', at: [44, 350], face: 'up' },
},
{
id: 'al_comune', name: 'verso il Comune', box: [540, 40, 100, 198], at: [622, 244], exit: { scene: 'comune', at: [320, 350], face: 'up' },
},
{
id: 'alla_calimara', name: 'Via Calimara, verso la Piazza', box: [520, 260, 120, 100], at: [600, 330], exit: { scene: 'via_calimara', at: [300, 350], face: 'up' },
},
],
},
// Via Provinciale fra la rotonda (alle spalle) e la Pieve (in fondo); a destra sale Via del Pignone.
provinciale_pignone: {
name: 'Via Provinciale',
map: [50, 64],
background: 'assets/scenes/provinciale-pignone.png',
walk: [[30, 360], [30, 330], [130, 270], [245, 212], [290, 212], [340, 228], [540, 232], [540, 258], [640, 300], [640, 360]],
depth: [[212, 0.32], [360, 1.2]],
entry: [300, 345],
hotspots: [
{
id: 'cartelli', name: 'cartelli', box: [570, 162, 52, 28], at: [560, 290], face: 'right',
actions: {
look: [{ say: 'Cartelli per la Pieve, per la stazione, per Firenze. Per il palio, nessuno.' }],
},
},
{
// L'edicola, col chiosco chiuso: qui Andrea comprava le cassette per il Commodore 64 (Andrea, 28 ottobre).
id: 'edicola', name: 'edicola', box: [20, 160, 92, 100], at: [120, 278], face: 'left',
actions: {
look: [
{ say: 'L\'edicola. Qui compravo le cassette per il Commodore 64: trenta giochi a mille lire, diceva la copertina.' },
{ say: 'Si infilava la cassetta, si scriveva LOAD, si premeva play... e si aspettava dieci minuti col registratore che cigolava.' },
{ say: 'Poi, quando andava bene, partiva il gioco. Quando andava male: LOAD ERROR. E si riavvolgeva tutto. Bei tempi.' },
],
open: [{ say: 'Chiusa. E comunque le cassette non le fanno più. Neanche i Commodore.' }],
use: [{ say: 'Vorrei un Topolino e trenta giochi a mille lire. ...Niente, parlo con una serranda.' }],
},
},
{
// La banca all'angolo di Via del Pignone: il bancomat non funziona quasi mai (Andrea, 28 ottobre).
id: 'banca', name: 'banca', box: [368, 166, 80, 50], at: [400, 236], face: 'up',
actions: {
look: [
{ say: 'La banca. Il bancomat funziona solo il mercoledì delle settimane pari, negli anni bisestili, quando Venere si allinea a Plutone.' },
{ say: 'Oggi? Not today.' },
],
open: [{ say: 'Chiusa. Come il bancomat, del resto.' }],
use: [{ say: 'Carta dentro, carta fuori. «Servizio momentaneamente non disponibile». Momentaneamente dal 1998.' }],
},
},
{
id: 'alla_pieve', name: 'in fondo, verso la Pieve', box: [236, 150, 64, 64], at: [268, 216], exit: { scene: 'pieve', at: [24, 312], face: 'right' },
},
{
id: 'via_pignone', name: 'a destra, Via del Pignone', box: [440, 196, 100, 56], at: [530, 245], face: 'right', exit: { scene: 'via_pignone', at: [300, 345], face: 'up' },
},
{
id: 'alla_rotonda', name: 'indietro, verso la rotonda della farmacia', box: [0, 334, 640, 26], at: [300, 354], exit: { scene: 'via_provinciale', at: [480, 246], face: 'down' },
},
],
},
// Via del Pignone dal basso: sul muro a destra il murale di Cistola (Davide Poggi, consenso del 27 ottobre).
// In cima si arriva in Piazzetta Cambray Digny.
via_pignone: {
name: 'Via del Pignone',
map: [46, 54],
background: 'assets/scenes/via-del-pignone.png',
walk: [[0, 360], [0, 300], [150, 258], [290, 226], [335, 206], [352, 206], [350, 240], [345, 282], [640, 290], [640, 360]],
depth: [[206, 0.3], [360, 1.2]],
entry: [300, 345],
hotspots: [
{
id: 'murale', name: 'murale di Cistola', box: [430, 36, 170, 240], at: [470, 300], face: 'right',
actions: {
look: [{ say: 'Cistola. Il talento di via del Pignone.' }, { say: 'Col dieci, come i grandi. Se c\'è un muro che se lo merita, è questo.' }],
talk: [{ say: 'Ciao Cistola! ...Almeno dipinto stai fermo ad ascoltarmi.' }],
},
},
{
id: 'su_piazzetta', name: 'su, verso Piazzetta Cambray Digny', box: [316, 176, 56, 40], at: [343, 210], exit: { scene: 'piazzetta', at: [610, 345], face: 'left' },
},
{
id: 'giu_provinciale', name: 'giù, in Via Provinciale', box: [0, 334, 640, 26], at: [300, 354], exit: { scene: 'provinciale_pignone', at: [530, 245], face: 'left' },
},
],
},
// Piazzetta Cambray Digny, in cima a Via del Pignone, sotto Villa Schifanoia: a sinistra Via de' Medici, a diritto
// Via dell'Antica Posta che scende in Piazza, a destra del palazzo la scalinata che scende al Comune (Andrea, 28 ottobre).
piazzetta: {
name: 'Piazzetta Cambray Digny',
map: [40, 38],
background: 'assets/scenes/piazzetta-cambray-digny.png',
backdrops: [{ when: 'ingorgo', src: 'assets/scenes/ingorgo-piazzetta.png' }], // Codex, la notte dell'Ingorgo (30 ottobre)
// Le console dell'Ingorgo Sonoro (music.js, mix). [DA ANDREA: quale genere suonava in quale piazza]
// La tecno davanti alla casetta bianca; l'underground arriva da giù, da Via dell'Antica Posta.
// Le luci da palco della festa (render.js: stagelights, lasers, mirrorball).
effects: [{ type: 'lasers', phase: 'ingorgo', at: [400, 198], count: 13, len: 460 }, { type: 'lasers', phase: 'ingorgo', at: [370, 200], count: 7, color: '60,220,255' }, { type: 'stagelights', phase: 'ingorgo', from: [[356, 192], [460, 192], [408, 186]], wash: [408, 225, 180], bpm: 132, beams: 3, strobe: 2, pulse: 0.1, colors: ['90,255,110', '255,255,255', '60,220,255'] }, { type: 'floorspots', phase: 'ingorgo', area: [40, 250, 560, 100], bpm: 132, count: 8, colors: ['90,255,110', '255,255,255', '60,220,255'] }],
stages: [
{ when: 'ingorgo', music: 'assets/audio/ingorgo-techno.mp3', at: [495, 245] },
{ when: 'ingorgo', music: 'assets/audio/ingorgo-underground.mp3', at: [700, 300], far: 650 },
],
walk: [[0, 360], [0, 288], [300, 284], [470, 276], [495, 268], [540, 268], [600, 300], [640, 330], [640, 360]],
depth: [[268, 0.55], [360, 1.15]],
entry: [320, 330],
hotspots: [
{
id: 'villa_schifanoia', name: 'Villa Schifanoia', box: [60, 110, 230, 170], at: [180, 300], face: 'up',
actions: {
look: [{ say: 'Il muro di Villa Schifanoia, la villa dei Medici, mezzo coperto dall\'edera.' }, { say: 'Lassù una volta c\'era una torre, per tenere d\'occhio chi passava sulla strada per Bologna. Ne ha viste più di me.' }, { say: 'E la piazzetta si chiama come i Cambray-Digny, gli ultimi signori della villa.' }],
},
},
{
id: 'casetta_bianca', name: 'casetta bianca', box: [296, 196, 160, 90], at: [380, 292], face: 'up',
actions: {
look: [{ say: 'Una casetta piccina, appoggiata al muro della villa come un gatto al sole.' }],
open: [{ say: 'Chiusa. E poi non è casa mia.' }],
},
},
{
id: 'alla_piazza', name: 'a diritto, Via dell\'Antica Posta verso la Piazza', box: [470, 226, 70, 48], at: [510, 274], exit: { scene: 'antica_posta_alta', at: [235, 230], face: 'down' },
},
{
id: 'via_de_medici', name: 'a sinistra, Via de\' Medici', box: [0, 100, 60, 260], at: [20, 320], face: 'left', exit: { scene: 'via_de_medici', at: [300, 348], face: 'up' },
},
{
id: 'giu_scalinata', name: 'a destra, giù per la scalinata verso il Comune', box: [541, 226, 40, 60], at: [560, 285], exit: { scene: 'scalinata', at: [560, 325], face: 'down' },
},
{
id: 'giu_pignone', name: 'giù per Via del Pignone', box: [570, 300, 70, 60], at: [610, 345], exit: { scene: 'via_pignone', at: [343, 212], face: 'down' },
},
],
},
// Via dell'Antica Posta (foto di Andrea, 28 ottobre): dalla Piazza, a sinistra, sale verso Piazzetta Cambray Digny.
// La Piazza è alle spalle; a sinistra, coi tre scalini, la Piazzetta del Comune; in fondo si sale.
via_antica_posta: {
name: 'Via dell\'Antica Posta',
map: [35, 41],
background: 'assets/scenes/via-antica-posta.png',
backdrops: [{ when: 'ingorgo', src: 'assets/scenes/ingorgo-antica-posta.png' }], // Codex, la notte dell'Ingorgo (30 ottobre)
// Le console dell'Ingorgo Sonoro (music.js, mix). [DA ANDREA: quale genere suonava in quale piazza]
// Il bar della birra sui gradini; il latino dal Comune a sinistra, la house giù dalla piazza, l'underground su in cima.
// Le luci da palco della festa (render.js: stagelights, lasers, mirrorball).
effects: [{ type: 'stagelights', phase: 'ingorgo', wash: [90, 190, 130], bpm: 98, colors: ['255,170,60', '255,90,160'], pulse: 0.05 }, { type: 'stagelights', phase: 'ingorgo', from: [[430, 205], [130, 150]], beams: 2, len: 260, bpm: 98 }, { type: 'floorspots', phase: 'ingorgo', area: [40, 230, 560, 120], bpm: 98, count: 5 }],
stages: [
{ when: 'ingorgo', music: 'assets/audio/ingorgo-latino.mp3', at: [-110, 250] },
{ when: 'ingorgo', music: 'assets/audio/ingorgo-house.mp3', at: [320, 560] },
{ when: 'ingorgo', music: 'assets/audio/ingorgo-underground.mp3', at: [384, 40], far: 600 },
],
walk: [[0, 360], [0, 300], [120, 290], [220, 252], [300, 240], [372, 226], [396, 226], [470, 252], [630, 300], [640, 360]],
depth: [[226, 0.35], [360, 1.15]],
entry: [320, 345],
hotspots: [
{
id: 'colonnine', name: 'colonnine con le catene', box: [225, 225, 95, 68], at: [290, 300], face: 'left',
actions: {
look: [{ say: 'Le colonnine con le catene: le macchine di qua non passano.' }, { say: 'Io sì. Scavalcare le catene è uno sport che pratico da quando avevo sei anni.' }],
},
},
{
id: 'tenda', name: 'tenda a righe', box: [508, 182, 30, 28], at: [500, 268], face: 'right',
actions: {
look: [{ say: 'Una tenda a righe bianche e rosse. Fa tanto spiaggia: peccato che il mare sia di là dall\'Appennino.' }],
},
},
{
id: 'muro_edera', name: 'muro con l\'edera', box: [546, 140, 94, 150], at: [570, 296], face: 'right',
actions: {
look: [{ say: 'Il muro di sasso con l\'edera e la ringhiera in cima. Lassù c\'è il verde della villa.' }],
},
},
{
id: 'alla_piazzetta_comune', name: 'a sinistra, il Comune', box: [0, 90, 200, 204], at: [130, 292], face: 'left', exit: { scene: 'piazzetta_comune', at: [260, 350], face: 'up' },
},
{
id: 'su_antica_posta', name: 'su, in fondo a Via dell\'Antica Posta', box: [350, 200, 70, 30], at: [384, 230], exit: { scene: 'antica_posta_alta', at: [240, 350], face: 'up' },
},
{
id: 'alla_piazza', name: 'indietro, la Piazza', box: [0, 334, 640, 26], at: [320, 354], exit: { scene: 'piazza', at: [92, 250], face: 'right' },
},
],
enter: [{ if: '!antica_posta_vista', then: [{ set: 'antica_posta_vista' }, { say: 'Via dell\'Antica Posta. Chissà se la posta antica arrivava prima di quella moderna.' }] }],
},
// La Piazzetta del Comune, dietro il municipio: la torre dell'orologio, le sculture sui pilastrini di mattoni.
piazzetta_comune: {
name: 'Piazzetta del Comune',
map: [32, 39],
background: 'assets/scenes/piazzetta-comune.png',
backdrops: [{ when: 'ingorgo', src: 'assets/scenes/ingorgo-piazzetta-comune.png' }], // Codex, la notte dell'Ingorgo (30 ottobre)
// Le console dell'Ingorgo Sonoro (music.js, mix). [DA ANDREA: quale genere suonava in quale piazza]
// La console del latino davanti al Comune; la house arriva da giù, dalla piazza.
// Le luci da palco della festa (render.js: stagelights, lasers, mirrorball).
effects: [{ type: 'stagelights', phase: 'ingorgo', from: [[232, 212], [332, 212], [282, 205]], wash: [282, 228, 170], bpm: 98, beams: 3, strobe: 8, pulse: 0.08, colors: ['255,120,40', '255,60,120', '255,200,60', '200,80,255'] }, { type: 'floorspots', phase: 'ingorgo', area: [40, 250, 560, 100], bpm: 98, count: 7, colors: ['255,120,40', '255,60,120', '255,200,60', '200,80,255'] }],
stages: [
{ when: 'ingorgo', music: 'assets/audio/ingorgo-latino.mp3', at: [290, 235] },
{ when: 'ingorgo', music: 'assets/audio/ingorgo-house.mp3', at: [260, 640], far: 700 },
],
walk: [[0, 360], [0, 318], [130, 292], [470, 288], [540, 300], [520, 360]],
depth: [[288, 0.55], [360, 1.15]],
entry: [260, 350],
hotspots: [
{
id: 'torre', name: 'torre dell\'orologio', box: [264, 16, 58, 104], at: [290, 294], face: 'up',
actions: {
look: [{ say: 'La torre dell\'orologio, vista dal retro. Anche da qui segna un\'ora tutta sua.' }],
},
},
{
id: 'porta_comune', name: 'porta del Comune', box: [286, 238, 26, 50], at: [298, 292], face: 'up',
actions: {
look: [{ say: 'La porta del Comune. Dal retro, ma sempre Comune.' }],
open: [{ say: 'Chiusa. Anche dalla porta di dietro, senza un modulo non si entra.' }],
},
},
{
id: 'scultura', name: 'scultura alta', box: [264, 248, 22, 68], at: [250, 320], face: 'right',
actions: {
look: [{ say: 'Una scultura moderna, lunga e appuntita. Secondo me è un\'antenna per parlare coi marziani.' }],
},
},
{
id: 'sasso', name: 'scultura a sasso', box: [92, 276, 42, 54], at: [150, 330], face: 'left',
actions: {
look: [{ say: 'Questa sembra un sasso. Ma sta su un piedistallo, quindi è arte.' }],
take: [{ say: 'Pesa più di me. E poi l\'arte non si porta via in tasca.' }],
},
},
{
id: 'vaso_fiori', name: 'vaso di fiori', box: [520, 264, 106, 82], at: [505, 330], face: 'right',
actions: {
look: [{ say: 'Un vasone di fiori. Qualcuno se ne prende cura, al Comune.' }],
},
},
{
id: 'alla_via', name: 'indietro, Via dell\'Antica Posta', box: [0, 336, 520, 24], at: [260, 354], exit: { scene: 'via_antica_posta', at: [140, 294], face: 'right' },
},
],
},
// In cima a Via dell'Antica Posta, prima della Piazzetta: il muro della villa con l'edera, il ponticello sopra la
// strada, il giardinetto con le panchine e due gatti al sole. A sinistra, sotto il ponticello, la scalinata (Andrea).
antica_posta_alta: {
name: 'In cima a Via dell\'Antica Posta',
map: [38, 39],
background: 'assets/scenes/via-antica-posta-alta.png',
backdrops: [{ when: 'ingorgo', src: 'assets/scenes/ingorgo-antica-posta-alta.png' }], // Codex, la notte dell'Ingorgo (30 ottobre)
// Le console dell'Ingorgo Sonoro (music.js, mix). [DA ANDREA: quale genere suonava in quale piazza]
// L'underground sotto il muro della villa; su, in fondo, la tecno di Cambray Digny; giù, lontano, la house.
// Le luci da palco della festa (render.js: stagelights, lasers, mirrorball).
// Qui le luci sono quelle di Codex (Andrea, 30 ottobre: «l'effetto qui mi piaceva molto»): teste sulle casse a
// destra, la palla a specchi che proietta sui due muri e sulla folla, le lampade a inseguimento sulla traversa.
effects: [
{ type: 'pixelbeams', phase: 'ingorgo', from: [[499, 177], [620, 153]], wash: [568, 220, 70], bpm: 122, aim: -0.35, spread: 0.55, sweep: 8, power: 0.28, colors: ['155,65,255', '65,110,255'] },
{ type: 'mirrorball', phase: 'ingorgo', at: [550, 131], hang: 91, from: [499, 177], surfaces: [[430, 60, 205, 140], [18, 105, 155, 85], [35, 245, 570, 105]], bpm: 122, count: 72 },
{ type: 'stagechase', phase: 'ingorgo', points: [[533, 210], [557, 210], [583, 209], [609, 208]], bpm: 122, colors: ['155,65,255', '65,110,255'] },
{ type: 'pixelspots', phase: 'ingorgo', area: [130, 242, 490, 108], bpm: 122, count: 5, size: 20, colors: ['155,65,255', '65,110,255'] },
],
stages: [
{ when: 'ingorgo', music: 'assets/audio/ingorgo-underground.mp3', at: [565, 235] },
{ when: 'ingorgo', music: 'assets/audio/ingorgo-techno.mp3', at: [270, 120], far: 600 },
{ when: 'ingorgo', music: 'assets/audio/ingorgo-house.mp3', at: [240, 640], far: 750 },
],
walk: [[0, 360], [0, 322], [190, 226], [283, 222], [470, 360]],
depth: [[222, 0.35], [360, 1.15]],
entry: [240, 350],
hotspots: [
{
id: 'gatti', name: 'gatti', box: [490, 236, 100, 28], at: [420, 330], face: 'right',
actions: {
look: [{ say: 'Due gatti che dormono sull\'erba. Il Palio, per loro, può anche aspettare.' }],
talk: [{ say: 'Micio, micio... Niente. Per meno di una scatoletta non aprono neanche un occhio.' }],
take: [{ say: 'Svegliare un gatto che dorme al sole? Non sono così coraggioso.' }],
},
},
{
id: 'panchine', name: 'panchine', box: [358, 212, 130, 44], at: [375, 300], face: 'right',
actions: {
look: [{ say: 'Due panchine all\'ombra del muro. Un posto per chi non ha un palio da ritrovare.' }],
use: [{ say: 'Mi siederei volentieri, ma il Palio non si ritrova da solo.' }],
},
},
{
id: 'ponticello', name: 'ponticello', box: [187, 34, 92, 38], at: [235, 240], face: 'up',
actions: {
look: [{ say: 'Un ponticello sopra la strada, da una casa all\'altra. Per andare dal vicino senza fare le scale.' }],
},
},
{
id: 'muro_villa', name: 'muro della villa', box: [383, 0, 257, 205], at: [330, 280], face: 'right',
actions: {
look: [{ say: 'Il muro di Villa Schifanoia, alto alto, con l\'edera che ormai lo tiene su lei.' }],
},
},
{
id: 'su_piazzetta', name: 'su, Piazzetta Cambray Digny', box: [250, 196, 80, 30], at: [280, 226], exit: { scene: 'piazzetta', at: [510, 276], face: 'down' },
},
{
id: 'alla_scalinata', name: 'a sinistra, giù per la scalinata verso il Comune', box: [150, 190, 60, 36], at: [195, 228], exit: { scene: 'scalinata', at: [470, 312], face: 'down' },
},
{
id: 'giu_antica_posta', name: 'giù, Via dell\'Antica Posta', box: [0, 334, 470, 26], at: [240, 354], exit: { scene: 'via_antica_posta', at: [384, 234], face: 'down' },
},
],
},
// La scalinata (foto di Andrea, 28 ottobre): un cortile coi garage; su per le scale la Piazzetta Cambray Digny,
// alle spalle i giardini e il retro del Comune.
scalinata: {
name: 'La scalinata della Piazzetta',
map: [30, 42],
background: 'assets/scenes/scalinata-piazzetta.png',
walk: [[0, 360], [0, 290], [100, 282], [380, 278], [400, 300], [620, 330], [640, 360]],
depth: [[278, 0.55], [360, 1.15]],
entry: [300, 350],
hotspots: [
{
id: 'saracinesca', name: 'saracinesca', box: [268, 196, 62, 79], at: [300, 290], face: 'up',
actions: {
look: [{ say: 'Una saracinesca color ruggine. Dietro, scommetto, una macchina e trent\'anni di roba da buttare.' }],
open: [{ say: 'Chiusa. E se la apro io, mi tocca anche fare ordine.' }],
},
},
{
id: 'panni', name: 'panni stesi', box: [110, 108, 34, 30], at: [130, 290], face: 'up',
actions: {
look: [{ say: 'Panni stesi al sole. Se piove, qui lo sanno tutti prima del telegiornale.' }],
take: [{ say: 'Rubare i panni stesi? Mi conoscono tutti, mi ritroverebbero prima del Palio.' }],
},
},
{
id: 'su_antica_posta', name: 'su per le scale, poi a sinistra verso Via dell\'Antica Posta', box: [440, 196, 90, 70], at: [470, 312], face: 'up', exit: { scene: 'antica_posta_alta', at: [195, 228], face: 'right' },
},
{
id: 'su_piazzetta', name: 'su per le scale, poi a destra verso Piazzetta Cambray Digny', box: [530, 196, 80, 70], at: [560, 325], face: 'up', exit: { scene: 'piazzetta', at: [560, 285], face: 'left' },
},
{
id: 'al_comune', name: 'indietro, i giardini del Comune', box: [0, 334, 640, 26], at: [300, 354], exit: { scene: 'comune', at: [40, 300], face: 'right' },
},
],
},
// L'area feste (il parco Antonio Berti): dalla rotonda del River, a sinistra.
area_feste: {
name: 'Area feste',
map: [30, 84],
background: 'assets/scenes/area-feste.png',
// Dal basso si sale per la scaletta a sinistra, poi si segue il vialetto di pietrini sopra la staccionata.
walk: [[0, 360], [88, 360], [88, 292], [120, 276], [320, 300], [460, 318], [600, 338], [640, 338], [640, 240], [420, 190], [260, 190], [0, 250]],
depth: [[190, 0.35], [360, 1.15]],
entry: [44, 350],
hotspots: [
{
id: 'prato', name: 'prato della festa', box: [120, 190, 520, 80], at: [320, 270], face: 'up',
actions: {
look: [{ say: 'L\'area feste. D\'estate ci montano la pista da ballo, le tavolate e lo stand della pasta.' }, { say: 'Adesso c\'è solo l\'erba. E la fame che mi viene a pensarci.' }],
},
},
{
id: 'casetta', name: 'casetta', box: [170, 146, 26, 22], at: [250, 200], face: 'up',
actions: {
look: [{ if: 'casetta_aperta', then: [{ say: 'La casetta, aperta. Dentro solo prolunghe: la torcia ce l\'ho io.' }], else: [{ say: 'Una casetta chiusa con un lucchetto piccolo. Ci tengono le prolunghe della festa e, dicono, una torcia.' }, { if: '!has:chiavetta', then: [{ say: 'E la chiavetta del lucchetto? Dicono che l\'hanno persa giù al ponticino della Carza.' }] }] }],
open: [{ if: 'casetta_aperta', then: [{ say: 'È già aperta.' }], else: [{ if: 'has:chiavetta', then: [{ drop: 'chiavetta' }, { set: 'casetta_aperta' }, { say: 'La chiavetta entra nel lucchetto... clic!' }, { say: 'Prolunghe, prolunghe, prolunghe... e una torcia.' }, { give: 'torcia' }], else: [{ say: 'Chiusa col lucchetto. Il mistero resta.' }] }] }],
},
with: {
stecco_gomma: [{ say: 'Un lucchetto non si pesca. Ci vuole la sua chiave.' }],
chiavetta: [{ if: 'casetta_aperta', then: [{ say: 'È già aperta.' }], else: [{ drop: 'chiavetta' }, { set: 'casetta_aperta' }, { say: 'La chiavetta entra nel lucchetto... clic!' }, { say: 'Prolunghe, prolunghe, prolunghe... e una torcia.' }, { give: 'torcia' }] }],
},
},
{
id: 'al_piazzale', name: 'laggiù, il piazzale delle feste', box: [40, 100, 120, 70], at: [130, 224], exit: { scene: 'area_feste_festa', at: [320, 350], face: 'up' },
},
{
id: 'alla_rotonda', name: 'giù per la scaletta, verso la rotonda', box: [0, 300, 90, 60], at: [44, 354], exit: { scene: 'via_provinciale', at: [120, 345], face: 'up' },
},
],
},
// La sala dei biliardi del Circolo 4 Maggio (dalla foto di Andrea, 25 ottobre): tre tavoli, il primo è quello
// dove si gioca ai birilli con l'Ing. Tozzi. [DA ANDREA: cosa c'è da ricordare della sala]
circolo_4_maggio: {
name: 'Circolo 4 Maggio, sala dei biliardi',
map: [29, 48],
background: 'assets/scenes/circolo-4-maggio.png',
music: 'assets/audio/biliardo.mp3', // trio jazz da circolo (tools/jazz_biliardo.py, 25 ottobre)
indoor: true,
walk: [[0, 360], [0, 356], [90, 350], [175, 330], [236, 316], [318, 300], [334, 240], [402, 236], [480, 232], [520, 214], [600, 190], [640, 190], [640, 360]],
depth: [[190, 1.2], [360, 2.5]],
entry: [590, 202],
speakers: { ing_tozzi: [452, 150], bertovo: [396, 132] },
// L'Ing. Tozzi aspetta accanto al primo tavolo, con la stecca: si parla con lui per giocare, come con Mariano.
people: [
{ who: 'ing_tozzi', at: [452, 296], facing: 1, idle: 'stand', talk: ['talk', 'explain'], blink: 'blink', every: 4.4 },
// Trappizzio Berti al tavolo di mezzo, coi suoi rinquarti (Andrea, 28 ottobre).
{ who: 'bertovo', at: [396, 238], facing: 1, idle: 'stand', talk: ['talk', 'explain'], blink: 'blink', every: 5.1 },
],
enter: [{ if: '!circolo_visto', then: [{ set: 'circolo_visto' }, { say: 'La sala dei biliardi. Qui dentro si parla piano, e si gioca forte.' }] }],
hotspots: [
{
id: 'biliardo', name: 'biliardo', box: [0, 120, 358, 230], at: [380, 300], face: 'left', default: 'use',
actions: {
look: [{ say: 'Il primo tavolo: il panno verde, il castello di birilli in mezzo, le biglie già pronte.' }, { say: 'L\'Ing. Tozzi gli gira intorno con la stecca in mano, come se aspettasse qualcuno.' }],
use: [{ say: 'Il tavolo è dell\'Ingegnere: prima gli chiedo una partita.' }],
talk: [{ say: 'Si parla col panno, qui. Prendi la stecca.', who: 'ing_tozzi' }],
take: [{ say: 'Una biglia in tasca? Mi sbattono fuori dal circolo.' }],
},
},
{
id: 'ing_tozzi', name: 'l\'Ing. Tozzi', box: [432, 196, 40, 100], at: [410, 304], face: 'right', default: 'talk',
actions: {
look: [{ say: 'L\'Ing. Tozzi, il campione del circolo. Occhiali scuri anche al chiuso: dice che così non vede le biglie degli altri.' }],
talk: [{ dialogue: 'ing_tozzi' }],
},
},
{
id: 'bertovo', name: 'Trappizzio Berti', box: [382, 162, 30, 76], at: [360, 244], face: 'right', default: 'talk',
actions: {
look: [{ say: 'Trappizzio Berti, al tavolo di mezzo. Le biglie le mette dove nessuno ci arriva, e poi ci arriva lui.' }],
talk: [{ dialogue: 'bertovo' }],
},
},
{
id: 'stecche', name: 'rastrelliera delle stecche', box: [140, 0, 60, 110], at: [150, 352], face: 'up',
actions: {
look: [{ say: 'Le stecche del circolo, in fila. Ognuna ha il suo proprietario, e guai a sbagliare.' }],
take: [{ say: 'La stecca me la dà l\'Ingegnere, quando si gioca.' }],
},
},
{
id: 'quadro', name: 'quadro alla parete', box: [300, 30, 36, 55], at: [352, 320], face: 'up',
actions: {
look: [{ say: 'Un campione di biliardo in posa, con la stecca. Avrà il suo nome, ma da qui non si legge.' }],
},
},
{
id: 'armadietto', name: 'armadietto delle stecche', box: [480, 58, 34, 48], at: [496, 242], face: 'up',
actions: {
look: [{ say: 'L\'armadietto a vetri, con le stecche buone. Chiuso a chiave, naturalmente.' }],
open: [{ say: 'Chiuso. Le stecche buone sono per chi le sa usare.' }],
},
},
{
id: 'alla_piazza', name: 'la porta, verso la piazza', box: [550, 30, 80, 160], at: [590, 202], exit: { scene: 'piazza', at: [202, 252], face: 'down' },
},
],
},
// Il ponte sulla Sieve, proseguendo la Provinciale dalla farmacia; di là dal ponte, la polisportiva.
ponte_sieve: {
name: 'Ponte sulla Sieve',
map: [48, 84],
background: 'assets/scenes/ponte-sieve.png',
walk: [[0, 360], [0, 252], [180, 226], [300, 202], [342, 202], [380, 214], [330, 238], [330, 300], [460, 330], [640, 318], [640, 360]],
depth: [[202, 0.4], [360, 1.15]],
entry: [300, 350],
// La macchina del tempo per la Smarronata del 1993, dopo il ricordo dello spiazzo (Andrea, 31 ottobre).
people: [{ who: 'macchina', when: 'macchina_ponte', at: [250, 300], size: 1.5, idle: 'stand', talk: [] }],
hotspots: [
{
// Sotto, a diritto al ponte, fra il fiume e la strada per andare al campo: lì gli alpini facevano la
// Smarronata (Andrea, 31 ottobre). Guardandolo, Andrea ricorda, e compare la macchina del tempo.
// [DA ANDREA: le battute sono provvisorie]
id: 'spiazzo_smarronata', name: 'lo spiazzo sotto il ponte', box: [190, 196, 60, 20], at: [250, 236], face: 'up',
actions: {
look: [
{ say: 'Qui sotto, fra il fiume e la strada del campo, gli alpini facevano la Smarronata.' },
{ if: 'macchina_ponte', then: [{ say: 'E la macchina del tempo è sempre lì, con la data pronta.' }],
else: [{ say: 'Sul lampione di là c\'è ancora un cartello vecchio, mezzo sbiadito.' }] },
],
},
},
{
// Il vecchio cartello della Smarronata legato al lampione sopra lo spiazzo (Andrea, 31 ottobre): si apre
// ingrandito come il manifesto dell'Ingorgo, e toccandolo parte il ricordo e arriva la macchina del tempo.
id: 'cartello_smarronata', name: 'il vecchio cartello della Smarronata', box: [528, 168, 26, 32], at: [352, 212], face: 'right',
art: [{ rect: [535, 175, 12, 17], fill: '#e9e2cc' }, { rect: [536, 176, 10, 2], fill: '#2f6b32' }, { rect: [536, 179, 5, 5], fill: '#5b4a2a' },
{ rect: [542, 180, 4, 5], fill: '#2f6b32' }, { rect: [536, 186, 10, 1], fill: '#b7342e' }, { rect: [536, 188, 8, 1], fill: '#3b3b44' }],
actions: {
look: [{ closeup: 'manifesto_smarronata' }],
take: [{ say: 'Lo lascio dov\'è: dopo tutti questi anni, ormai fa parte del lampione.' }],
},
},
{
id: 'macchina_ponte', name: 'macchina del tempo', box: [190, 262, 120, 50], at: [250, 326], face: 'up', default: 'use', when: 'macchina_ponte',
actions: {
look: [{ say: 'La macchina del tempo, ferma sulla strada del ponte. Sul cruscotto c\'è già ottobre 1993.' }],
use: [{ say: 'Imposto: 17 ottobre 1993, la domenica della Smarronata.' }, { closeup: 'viaggio_1993' }],
open: [{ say: 'Imposto: 17 ottobre 1993, la domenica della Smarronata.' }, { closeup: 'viaggio_1993' }],
},
},
{
id: 'tabernacolo', name: 'tabernacolo dell\'Annunciazione', box: [138, 148, 36, 60], at: [180, 236], face: 'up',
actions: {
// Notizie di Andrea: una copia dell'Annunciazione di Antonio Berti (1904–1990), l'originale è del 1947.
look: [
{ say: 'Il tabernacolo del ponte, con l\'Annunciazione di Antonio Berti, scultore sanpierino.' },
{ say: 'Questa è una copia: l\'originale lo fece nel 1947. Lo stesso Berti del parco dell\'area feste.' },
{ say: 'Chi passa per andare via dal paese, un saluto glielo fa sempre.' },
],
},
},
{
id: 'sieve', name: 'la Sieve', box: [380, 170, 260, 40], at: [340, 210], face: 'right',
actions: {
look: [{ say: 'Sotto il ponte la Carza si butta nella Sieve, e da qui vanno avanti insieme.' }, { say: 'Nel 1758 la piena arrivò fino a Cardetole: in casa mia, di sicuro, c\'erano i pesci.' }],
},
},
{
id: 'alla_polisportiva', name: 'di là dal ponte, il campo sportivo', box: [250, 180, 110, 36], at: [320, 206], exit: { scene: 'polisportiva_principale', at: [40, 330], face: 'right' },
},
{
id: 'alla_provinciale', name: 'indietro, verso la farmacia', box: [0, 330, 640, 30], at: [300, 354], exit: { scene: 'via_provinciale', at: [12, 320], face: 'right' },
},
],
},
// La polisportiva: passato il ponte, prima il campo principale con la tribuna; proseguendo il secondario, coi campi da padel e tennis.
polisportiva: {
name: 'Campo secondario',
map: [62, 96],
background: 'assets/scenes/polisportiva-secondario.png',
walk: [[0, 360], [0, 330], [300, 262], [430, 222], [600, 210], [640, 212], [640, 360]],
depth: [[210, 0.4], [360, 1.15]],
entry: [100, 340],
// Il BaronDeDuke nella discesa verso la polisportiva: aspetta chi gli riporta le mutande perse a poker.
speakers: { barondeduke: [230, 243], macchina: [360, 212] },
people: [
{ who: 'barondeduke', at: [230, 300], facing: -1, idle: 'stand', talk: ['talk', 'explain'], blink: 'blink', every: 4.6 },
// Compare solo dopo che Andrea dice di voler giocare a padel (idea di Andrea, 25 ottobre; sprite di Codex).
{ who: 'macchina', at: [360, 262], size: 1.05, idle: 'stand', when: 'macchina_vista' },
],
hotspots: [
{
id: 'campo', name: 'campo secondario', box: [140, 160, 240, 60], at: [330, 254], face: 'up',
actions: {
look: [{ say: 'Il campo secondario della polisportiva. Qui si allenano i piccoli, e i grandi fanno finta di non guardare.' }],
},
},
{
id: 'cupola', name: 'pallone bianco', box: [320, 140, 70, 40], at: [430, 226], face: 'up',
actions: {
look: [{ say: 'Il pallone bianco della palestra. Da fuori sembra un gigantesco marshmallow.' }],
},
},
{
id: 'tennis', name: 'campi da tennis', box: [520, 190, 120, 40], at: [600, 214], face: 'right', default: 'walk',
actions: {
walk: [{ say: 'Più avanti ci sono i campi da tennis. Racchette, palline e gente che si lamenta del sole.' }],
look: [{ say: 'Laggiù i campi da tennis.' }],
},
},
{
id: 'padel', name: 'capannone del padel', box: [0, 110, 90, 180], at: [40, 345], face: 'left',
actions: {
look: [{ say: 'Il capannone verde del padel.' }, { say: 'Il padel, nel 2007, non so nemmeno cosa sia. Tra qualche anno ci giocheranno tutti, me compreso.' }],
open: [{ say: 'Chiuso. E poi non saprei nemmeno da che parte si tiene la racchetta.' }],
use: [{
if: '!macchina_vista',
then: [
{ say: 'Voglio giocare a padel!' },
{ set: 'macchina_vista' },
{ say: 'Toh, guarda: c\'è una macchina del tempo.' },
{ say: 'Per arrivare al padel mi manca solo un po\' di plutonio. Potrei sentire da Alvarino se ce l\'ha.' },
],
else: [{ say: 'Il padel aspetta. Prima il plutonio: devo sentire Alvarino.' }],
}],
},
},
{
id: 'macchina', name: 'macchina del tempo', box: [311, 219, 98, 43], at: [290, 290], face: 'right', when: 'macchina_vista',
actions: {
look: [{ say: 'Acciaio, portiere ad ali di gabbiano, cavi e bobine dappertutto. E un contenitore vuoto, sul retro.' }, { say: 'Vuoto di plutonio, si capisce.' }],
open: [{ say: 'Le portiere sono già su. È il plutonio che manca.' }],
use: [{ say: 'Senza plutonio non parte. Alvarino, dove sei?' }],
take: [{ say: 'Una macchina in tasca? Neanche nel futuro.' }],
},
},
{
id: 'all_area_feste', name: 'dietro il campo, verso il piazzale delle feste', box: [150, 130, 190, 50], at: [320, 265], exit: { scene: 'area_feste_festa', at: [620, 300], face: 'left' },
},
{
id: 'al_principale', name: 'indietro, verso il campo principale', box: [0, 330, 640, 30], at: [100, 354], exit: { scene: 'polisportiva_principale', at: [620, 330], face: 'left' },
},
{
id: 'alle_mozzete', name: 'a destra, verso le Mozzète', box: [610, 226, 30, 100], at: [628, 290], face: 'right', exit: { scene: 'mozzete', at: [330, 206], face: 'down' },
},
{
id: 'barondeduke', name: 'il BaronDeDuke', box: [212, 245, 36, 55], at: [190, 316], face: 'right', default: 'talk',
give: {
squama: [{ say: 'Me la giochi? Ho un sette e un due, ma un sacco di fiducia.', who: 'barondeduke', pose: 'cards' }, { say: 'No, Barone. A poker le squame non valgono.' }],
ghiacciolo: [{ say: 'A questo giro non punto niente. Nemmeno un ghiacciolo.', who: 'barondeduke', pose: 'facepalm' }],
},
actions: {
look: [{ say: 'Il BaronDeDuke, col cappello da cowboy. Ha l\'aria di uno che aspetta qualcuno, e che spera non lo veda nessuno.' }],
talk: [{ dialogue: 'barondeduke' }],
},
},
],
},
polisportiva_principale: {
name: 'Campo principale',
map: [40, 96],
background: 'assets/scenes/polisportiva-principale.png',
walk: [[0, 298], [640, 298], [640, 360], [0, 360]],
depth: [[298, 1.0], [360, 1.2]],
entry: [40, 330],
// Baldoria sotto la tribuna col bandierone della Sampdoria: ogni tanto lo sventola (Andrea, 30 ottobre).
speakers: { baldoria: [490, 196] },
people: [{ who: 'baldoria', at: [490, 318], facing: -1, idle: 'stand', talk: ['talk', 'explain'], blink: 'blink', every: 4.3,
flourish: { poses: ['wave', 'wave2'], every: 9, for: 2.1, step: 0.35 } }],
hotspots: [
{
id: 'baldoria', name: 'Baldoria', box: [462, 200, 56, 124], at: [430, 326], face: 'right', default: 'talk',
actions: {
look: [{ say: 'Baldoria, con la maglia blucerchiata e un bandierone della Sampdoria grande come lui. Qui a San Piero.' }],
talk: [{ dialogue: 'baldoria' }],
take: [{ say: 'Il bandierone? Prima dovrei passare sul suo cadavere. E non è un modo di dire.' }],
},
},
{
id: 'tribuna', name: 'tribuna', box: [254, 172, 116, 40], at: [310, 320], face: 'up',
actions: {
look: [{ say: 'La tribuna bianca e rossa. La domenica qui c\'è più tifo che al Palio. Quasi.' }],
},
},
{
id: 'campo', name: 'campo', box: [0, 212, 640, 76], at: [320, 320], face: 'up',
actions: {
look: [{ say: 'Il campo principale. Erba vera, righe vere, porte vere. Altro che le maglie per terra.' }],
walk: [{ say: 'Entrare in campo senza permesso? Il custode mi fa fare dieci giri di corsa.' }],
},
},
{
id: 'al_ponte', name: 'indietro, verso il ponte', box: [0, 280, 50, 80], at: [14, 330], exit: { scene: 'ponte_sieve', at: [320, 206], face: 'down' },
},
{
id: 'al_secondario', name: 'avanti, verso il campo secondario', box: [590, 280, 50, 80], at: [626, 330], exit: { scene: 'polisportiva', at: [100, 340], face: 'up' },
},
],
},
// Via Provinciale, a destra dalla Pieve: il forno (la Pieve gli è a destra); a sinistra la stazione, e oltre La Luna e Campomigliaio.
forno: {
name: 'Il forno',
map: [86, 58],
background: 'assets/scenes/forno-conti.png',
walk: [[0, 360], [0, 268], [640, 268], [640, 360]],
depth: [[268, 0.8], [360, 1.15]],
entry: [628, 300],
hotspots: [
{
id: 'forno', name: 'forno', box: [100, 40, 420, 220], at: [320, 290], face: 'up',
actions: {
look: [{ say: 'Il forno. Il profumo del pane arriva fino alla Pieve, e la domenica mattina fino a casa mia.' }],
open: [{ say: 'Una schiacciata calda... no, prima il palio. Però l\'odore me lo porto dietro.' }],
},
},
{
id: 'alla_stazione', name: 'a sinistra, verso la stazione e la scuola', box: [0, 200, 50, 160], at: [12, 300], exit: { scene: 'bivio_provinciale', at: [318, 224], face: 'down' },
},
{
id: 'alla_pieve', name: 'a destra, verso la Pieve', box: [590, 220, 50, 140], at: [628, 300], exit: { scene: 'pieve', at: [588, 250], face: 'left' },
},
{
// Dietro, su per l'arco di Via della Compagnia (Andrea, 29 ottobre).
id: 'all_arco', name: 'dietro, su per l\'arco di Via della Compagnia', box: [60, 334, 520, 26], at: [320, 350], exit: { scene: 'via_compagnia', at: [222, 296], face: 'up' },
},
],
},
stazione: {
name: 'La stazione',
map: [88, 71],
background: 'assets/scenes/stazione.png',
walk: [[0, 360], [0, 270], [640, 270], [640, 360]],
depth: [[270, 0.75], [360, 1.15]],
entry: [628, 320],
hotspots: [
{
id: 'stazione', name: 'stazione', box: [200, 30, 440, 200], at: [400, 290], face: 'up',
actions: {
look: [{ say: 'La stazione della Faentina. Da qui i treni vanno a Firenze e a Faenza, con calma.' }, { say: 'Molta calma.' }],
},
},
{
id: 'bar', name: 'bar della stazione', box: [360, 196, 50, 66], at: [385, 290], face: 'up',
actions: {
look: [{ say: 'Il bar della stazione. Qui si aspetta il treno, e quando il treno è in ritardo si aspetta un altro caffè.' }],
open: [{ say: 'Non ho tempo per un caffè. E poi il caffè mi fa tremare come la carretta del Palio.' }],
},
},
{
id: 'al_ponticino', name: 'a sinistra, verso il ponticino della Carza', box: [0, 190, 56, 120], at: [14, 300], exit: { scene: 'ponticino', at: [474, 202], face: 'down' },
},
{
id: 'al_bivio', name: 'indietro, verso la Provinciale', box: [60, 334, 520, 26], at: [320, 354], exit: { scene: 'viale_stazione', at: [340, 236], face: 'down' },
},
{
id: 'ai_giardini', name: 'a destra, il campone delle poste', box: [590, 190, 50, 100], at: [628, 300], exit: { scene: 'giardini_poste', at: [137, 240], face: 'down' },
},
{
// Dal ponte delle poste si scende sulla passeggiata della Carza (Andrea, 29 ottobre).
id: 'giu_carza', name: 'giù dal ponte, la passeggiata sulla Carza', box: [590, 296, 50, 38], at: [620, 320], exit: { scene: 'ponte_stazione', at: [440, 252], face: 'left' },
},
],
},
// Via Provinciale fra il forno e la stazione: qui si sbuca dalla scuola.
bivio_provinciale: {
name: 'Via Provinciale, al bivio',
map: [78, 64],
background: 'assets/scenes/bivio-provinciale.png',
walk: [[0, 360], [0, 232], [120, 226], [290, 222], [350, 222], [380, 240], [600, 340], [640, 360]],
depth: [[222, 0.5], [360, 1.7]],
entry: [300, 350],
hotspots: [
{
id: 'case', name: 'case gialle', box: [380, 0, 260, 230], at: [460, 300], face: 'right',
actions: {
look: [{ say: 'Le case gialle della Provinciale, coi vasi sul marciapiede. Ogni vaso ha la sua padrona, e guai a toccarlo.' }],
},
},
{
id: 'alla_scuola', name: 'più avanti, la stradina della scuola', box: [170, 196, 80, 40], at: [208, 226], exit: { scene: 'scuola', at: [600, 320], face: 'left' },
},
{
id: 'la_luna', name: 'a sinistra, verso La Luna e Campomigliaio', box: [0, 216, 44, 56], at: [12, 248], exit: { scene: 'provinciale_viale', at: [300, 350], face: 'up' },
},
{
id: 'al_forno', name: 'laggiù, verso il forno', box: [280, 196, 80, 40], at: [318, 224], exit: { scene: 'forno', at: [12, 300], face: 'right' },
},
{
id: 'alla_stazione', name: 'a destra, verso la stazione', box: [560, 250, 80, 110], at: [580, 345], exit: { scene: 'viale_stazione', at: [300, 352], face: 'up' },
},
],
},
// La Provinciale dopo il bivio della stazione, fra gli alberi, prima della Carza (foto di Andrea, 24 ottobre).
provinciale_viale: {
name: 'Via Provinciale, il viale alberato',
map: [72, 68],
background: 'assets/scenes/provinciale-viale.png',
effects: [{ type: 'clouds', area: [300, 10, 220, 120], count: 2 }, { type: 'leaves', area: [20, 40, 360, 250], count: 4, colors: ['#a8c44e', '#efe8c8', '#7fa83a'] }],
walk: [[0, 360], [0, 330], [400, 232], [462, 232], [620, 360]],
depth: [[232, 0.4], [360, 1.7]],
entry: [300, 350],
hotspots: [
{
id: 'verso_la_sieve', name: 'avanti, alla rotonda: Via Cafaggio e La Luna', box: [392, 220, 80, 22], at: [435, 236], exit: { scene: 'rotonda_cafaggio', at: [20, 245], face: 'right' },
},
{
id: 'negozi', name: 'negozi', box: [20, 150, 200, 95], at: [150, 330], face: 'left',
actions: {
look: [{ say: 'I negozi sotto i palazzi, al riparo degli alberi. Con la festa domani, stasera chiudono tardi.' }],
},
},
{
id: 'alberi', name: 'alberi del viale', box: [230, 20, 160, 200], at: [330, 290], face: 'up',
actions: {
look: [{ say: 'Gli alberi del viale: d\'estate fanno un\'ombra che in piazza se la sognano.' }],
use: [{ say: 'Arrampicarmi? Ho ventisette anni, non sette.' }],
},
},
{
id: 'villette', name: 'case col balcone', box: [500, 0, 140, 230], at: [540, 330], face: 'right',
actions: {
look: [{ say: 'Case coi balconi pieni di fiori. Qui il palio si sente da lontano: il giusto.' }],
},
},
{
id: 'al_bivio', name: 'indietro, verso il bivio', box: [0, 334, 620, 26], at: [300, 354], exit: { scene: 'bivio_provinciale', at: [12, 248], face: 'right' },
},
],
},
// La Provinciale lungo la Carza, uscendo dal paese verso La Luna (foto di Andrea, 24 ottobre).
verso_luna: {
name: 'La Provinciale lungo la Carza',
map: [66, 73],
background: 'assets/scenes/verso-luna.png',
effects: [{ type: 'birds', phase: ['pomeriggio', 'tramonto'], area: [200, 30, 400, 90] }, { type: 'clouds', area: [160, 0, 480, 110], count: 3, big: true }, { type: 'fireflies', phase: 'sera', area: [200, 210, 220, 80], count: 8 }, { type: 'sparkle', area: [380, 288, 200, 30], count: 5 }, { type: 'sparkle', area: [430, 210, 40, 30], count: 2 }, { type: 'smoke', at: [113, 116] }, { type: 'lamps', phase: 'sera', points: [[165, 93]] }],
walk: [[0, 360], [0, 200], [168, 190], [182, 196], [330, 360]],
depth: [[192, 0.45], [360, 1.7]],
entry: [150, 206],
hotspots: [
{
id: 'verso_la_luna', name: 'avanti, verso La Luna e Campomigliaio', box: [0, 334, 330, 26], at: [150, 352], exit: { scene: 'campomigliaio_strada', at: [300, 350], face: 'up' },
},
{
id: 'carza', name: 'la Carza', box: [340, 205, 300, 155], at: [250, 300], face: 'right',
actions: {
look: [{ say: 'La Carza, la stessa che passa sotto il ponticino per Cardetole. Più sassi che acqua.' }, { say: 'Da quando scavano le gallerie dell\'alta velocità, d\'estate sparisce. Torna viva d\'inverno.' }],
use: [{ say: 'Scendere nel greto ora? Il palio non sta mica sotto un sasso.' }],
},
},
{
id: 'luna', name: 'la luna', box: [482, 54, 24, 24], at: [200, 300], face: 'right',
actions: {
look: [{ say: 'La luna, già alta in pieno giorno. Proprio sulla strada per La Luna: chi ha dato i nomi qui aveva il senso dell\'umorismo.' }],
take: [{ say: 'Ci arrivo, ci arrivo. Fra un paio di secoli.' }],
},
},
{
id: 'casa_bianca', name: 'casa bianca', box: [84, 112, 80, 64], at: [120, 220], face: 'up',
actions: {
look: [{ say: 'Una casa bianca sotto il bosco, coi pini sopra. Bella vista sulla Carza, e sui camion della Provinciale.' }],
},
},
{
id: 'muretto', name: 'muretto', box: [178, 196, 120, 150], at: [190, 300], face: 'right',
actions: {
look: [{ say: 'Il muretto lungo la Carza, tutto licheni. È più vecchio di me, e sta in piedi meglio.' }],
},
},
{
id: 'al_viale', name: 'indietro, verso la rotonda di Via Cafaggio', box: [0, 182, 240, 26], at: [150, 200], exit: { scene: 'provinciale_luna', at: [200, 352], face: 'up' },
},
],
},
// Campomigliaio, il rione dei blu (foto dell'Arcu): la strada in salita, il Circolo, il ponte vecchio.
campomigliaio_strada: {
name: 'Campomigliaio, la strada',
map: [60, 78],
background: 'assets/scenes/campomigliaio-strada.png',
walk: [[0, 360], [0, 300], [250, 222], [300, 210], [350, 210], [420, 240], [640, 345], [640, 360]],
depth: [[210, 0.35], [360, 1.7]],
entry: [300, 350],
hotspots: [
{
id: 'al_circolo', name: 'su, verso il circolino', box: [270, 195, 90, 25], at: [320, 214], exit: { scene: 'campomigliaio_circolo', at: [150, 345], face: 'up' },
},
{
id: 'torretta', name: 'casa con la torretta', box: [280, 120, 80, 62], at: [320, 222], face: 'up',
actions: {
look: [{ say: 'In cima alla salita, la casa con la torretta. Da quaggiù sembra il castello di Campomigliaio.' }],
},
},
{
id: 'muro', name: 'muro di pietra', box: [430, 190, 210, 140], at: [420, 300], face: 'right',
actions: {
look: [{ say: 'Un muro di sassi a secco, con la ringhiera sopra. Ne ha visti passare di pali.' }],
},
},
{
id: 'porta', name: 'porta marrone', box: [150, 165, 32, 56], at: [180, 270], face: 'left',
actions: {
look: [{ say: 'Una porta marrone, chiusa.' }],
open: [{ say: 'Chiusa. Saranno tutti al circolino.' }],
},
},
{
id: 'alla_carza', name: 'indietro, verso la Provinciale', box: [0, 334, 640, 26], at: [300, 354], exit: { scene: 'verso_luna', at: [150, 330], face: 'up' },
},
],
},
campomigliaio_circolo: {
name: 'Campomigliaio, il circolino',
map: [55, 82],
background: 'assets/scenes/campomigliaio-circolo.png',
effects: [{ type: 'windows', phase: 'sera', rects: [[55, 186, 50, 28], [110, 186, 50, 28], [165, 186, 36, 28], [316, 180, 16, 44]] }],
walk: [[0, 360], [0, 335], [60, 300], [400, 280], [640, 250], [640, 360]],
depth: [[250, 1.0], [360, 1.5]],
entry: [320, 330],
// L'Arcu davanti al circolino, accanto alla fontanella (sprite di Codex, 25 ottobre).
speakers: { arcu: [418, 214] },
// La Ghiacciomobile non è più qui: sta nel muro di Via Liguri Magelli (Andrea, 29 ottobre).
people: [
{ who: 'arcu', at: [418, 292], facing: -1, idle: 'stand', talk: ['talk', 'explain'], blink: 'blink', every: 4.2 },
],
hotspots: [
{
id: 'circolo', name: 'il circolino', box: [100, 0, 380, 205], at: [300, 290], face: 'up',
actions: {
look: [{ say: 'Il circolino: il Circolo SMS di Campomigliaio. Un\'istituzione, qui i volontari hanno sempre fatto miracoli.' }, { say: 'Il sabato sera ci si mangia una pizza ottima, e si sta meglio che a casa. Si respira fratellanza.' }],
open: [{
if: 'rione:campomigliaio',
then: [{ say: 'Se entro ora, mi chiedono tutti del palio. Prima lo ritrovo, poi entro a testa alta.' }],
else: [{ say: 'Il circolino dei blu, il giorno prima del palio? Meglio di no.' }],
}],
},
},
{
id: 'fontanella', name: 'fontanella', box: [364, 212, 26, 58], at: [376, 286], face: 'up',
actions: {
look: [{ say: 'Una fontanella di ghisa. Acqua fresca e gratis, la cosa più preziosa di maggio.' }],
use: [{ say: 'Un sorso d\'acqua. Ora sì che si ragiona.' }],
},
},
{
id: 'insegna', name: 'insegna del circolino', box: [484, 86, 28, 62], at: [500, 272], face: 'up',
actions: {
look: [{ say: 'L\'insegna del circolino. Senza scritte: tanto qui lo sanno tutti dov\'è.' }],
},
},
{
id: 'panchina', name: 'panchina', box: [520, 206, 52, 30], at: [545, 262], face: 'up',
actions: {
look: [{ say: 'La panchina davanti al circolino. Di solito è occupata da chi sa tutto di tutti.' }],
use: [{ say: 'Non è il momento di sedersi. Il palio non si cerca da solo.' }],
},
},
{
id: 'alla_strada', name: 'giù per la strada', box: [0, 334, 300, 26], at: [150, 352], exit: { scene: 'campomigliaio_strada', at: [320, 216], face: 'down' },
},
{
id: 'al_ponte', name: 'a sinistra, verso il ponte', box: [44, 220, 40, 80], at: [70, 312], exit: { scene: 'campomigliaio_ponte', at: [80, 330], face: 'right' },
},
{
id: 'tagliaferro', name: 'a diritto, verso Tagliaferro', box: [596, 210, 44, 60], at: [622, 258], face: 'right', default: 'walk',
actions: {
walk: [{ say: 'A diritto si va a Tagliaferro. Il palio non sarà mica scappato fin laggiù.' }],
look: [{ say: 'La strada va avanti verso Tagliaferro.' }],
},
},
{
id: 'arcu', name: 'l\'Arcu', box: [400, 216, 38, 76], at: [362, 300], face: 'right', default: 'talk',
give: {
squama: [{ say: 'Che è, la mancia? Una squama? Grazie, la metto in cassaforte.', who: 'arcu', pose: 'laugh' }, { say: 'Tienila te, che io di roba verde ne ho già abbastanza sul lavoro.', who: 'arcu' }],
libro: [{ say: 'Un libro? A me? Lo sai che io leggo solo le etichette degli armadi.', who: 'arcu', pose: 'shrug' }],
},
actions: {
look: [{ say: 'L\'Arcu, il mio amico di sempre. Davanti al circolino, come se ci fosse nato.' }],
talk: [{ dialogue: 'arcu' }],
},
},
],
},
campomigliaio_ponte: {
name: 'Campomigliaio, il ponte vecchio',
map: [50, 86],
background: 'assets/scenes/campomigliaio-ponte.png',
effects: [{ type: 'birds', phase: ['pomeriggio', 'tramonto'], area: [100, 10, 300, 60] }, { type: 'clouds', area: [80, 5, 300, 50], count: 2 }, { type: 'fireflies', phase: 'sera', area: [0, 220, 150, 120], count: 7 }, { type: 'sparkle', area: [150, 205, 160, 90], count: 7 }, { type: 'sparkle', area: [330, 300, 110, 40], count: 3 }, { type: 'smoke', at: [605, 50] }],
walk: [[0, 360], [0, 232], [100, 225], [140, 240], [170, 275], [260, 330], [300, 360]],
depth: [[225, 0.6], [360, 1.5]],
entry: [80, 330],
hotspots: [
{
id: 'ponte', name: 'il ponte vecchio', box: [60, 100, 290, 95], at: [110, 240], face: 'up',
actions: {
look: [{ say: 'Il ponte vecchio, coi suoi due archi. Chissà quante piene ha visto passare: io al primo temporale cerco riparo.' }],
},
},
{
id: 'torrente', name: 'il torrente', box: [150, 200, 320, 160], at: [200, 300], face: 'right',
actions: {
look: [{ say: 'L\'acqua è bassa e limpida. Si vedono i sassi del fondo, e nessun palio.' }],
use: [{ say: 'Mi bagno le scarpe e poi chi la sente, la mamma.' }],
},
},
{
id: 'tronco', name: 'tronco', box: [318, 230, 74, 56], at: [215, 315], face: 'right',
actions: {
look: [{ say: 'Un tronco bianco portato giù dalla piena, piantato in mezzo all\'acqua.' }],
take: [{ say: 'Troppo pesante, e troppo bagnato. Lo lascio ai girini.' }],
},
},
{
id: 'al_circolo', name: 'indietro, verso il circolino', box: [0, 334, 280, 26], at: [120, 354], exit: { scene: 'campomigliaio_circolo', at: [76, 314], face: 'right' },
},
],
},
// «Il tennis della chiesa»: il campo dietro la Pieve, dal cancello verde della Carza.
tennis_chiesa: {
name: 'Il tennis della chiesa',
map: [66, 51],
background: 'assets/scenes/tennis-chiesa.png',
speakers: { tosca: [292, 196], mariano: [500, 234] },
// Mariano, il campione del pallaio (sprite di Codex dalla foto di Andrea, 25 ottobre).
people: [{ who: 'mariano', at: [500, 290], facing: -1, idle: 'stand', talk: ['talk', 'explain'], blink: 'blink', every: 4.4 }],
walk: [[0, 360], [0, 300], [200, 290], [420, 268], [640, 258], [640, 360]],
depth: [[258, 0.7], [360, 1.15]],
entry: [320, 350],
hotspots: [
{
id: 'pallaio', name: 'il pallaio', box: [300, 248, 340, 40], at: [400, 300], face: 'up',
actions: {
look: [{ say: 'Il pallaio, dove si gioca a bocce. Qui un punto si discute più di un rigore.' }],
use: [{ say: 'Una partita? Chiedo a Mariano, il campione.' }, { dialogue: 'mariano' }],
},
},
{
id: 'tennis', name: 'campo da tennis', box: [0, 190, 70, 130], at: [40, 310], face: 'left',
actions: {
look: [{ say: 'Di là, dove guarda l\'omino di ferro, c\'è il campo da tennis della chiesa.' }],
},
},
{
id: 'chiosco', name: 'chiosco', box: [240, 196, 106, 72], at: [300, 296], face: 'up', default: 'talk',
give: {
squama: [{ say: 'Tosca, guarda cosa ho trovato.' }, { say: 'Bella. Ma nella cedrata questa non ce la metto.', who: 'tosca' }],
libro: [{ say: 'Un libro? Andrea, qui si legge solo il listino. E costa meno.', who: 'tosca' }],
},
actions: {
look: [{ say: 'Il chiosco del tennis. D\'estate qui c\'è la Tosca coi ghiaccioli.' }],
talk: [{ say: 'Tosca! C\'è la Tosca?' }, { say: 'Eccomi, Andrea! Cosa ti do? Fanta, Coca, cedrata, spuma bionda... o un ghiacciolo?', who: 'tosca' }, { dialogue: 'tosca' }],
open: [{ say: 'Il chiosco si apre da dentro. Basta chiamare la Tosca.' }],
},
},
{
id: 'omino', name: 'omino di ferro', box: [80, 190, 40, 140], at: [130, 320], face: 'left',
actions: {
look: [{ say: 'L\'omino di ferro con la racchetta, una scultura di Simone Rocchi. Almeno lui a tennis ci gioca.' }],
talk: [{ say: 'Partita?' }, { say: '...' }, { say: 'Mi sa che vince lui ai punti. Non si muove mai.' }],
},
},
{
id: 'al_cancello', name: 'dal cancello verde, verso il posticino della Carza', box: [470, 140, 120, 130], at: [515, 280], exit: { scene: 'carza', at: [440, 290], face: 'left' },
},
{
id: 'mariano', name: 'Mariano', box: [482, 238, 36, 52], at: [455, 300], face: 'right', default: 'talk',
actions: {
look: [{ say: 'Mariano, il campione del pallaio. Gli occhiali in testa, il sorriso di chi ha già vinto.' }],
talk: [{ dialogue: 'mariano' }],
},
},
],
},
// Il sentiero nel bosco fra la casa del maestro Bacci (alle spalle) e la Fortezza (a diritto): foto di Andrea,
// 28 ottobre. La pozza c'è anche a Ferragosto (Andrea).
sentiero_fortezza: {
name: 'Il sentiero della Fortezza',
map: [43, 9],
background: 'assets/scenes/sentiero-fortezza.png',
walk: [[0, 360], [0, 321], [208, 267], [292, 196], [317, 181], [342, 181], [375, 217], [500, 292], [640, 325], [640, 360]],
depth: [[181, 0.3], [360, 1.15]],
entry: [320, 350],
hotspots: [
{
id: 'pozza', name: 'pozza', box: [271, 212, 96, 54], at: [250, 285], face: 'right',
actions: {
look: [{ say: 'La pozza. Anche il quindici d\'agosto è sempre bella piena.' }, { say: 'Un giorno ci casco dentro e ci affogo: il primo annegato in mezzo al bosco.' }],
use: [{ say: 'Un bagno nella pozza? No, grazie: non so quanto è fonda, e non lo voglio sapere.' }],
},
},
{
id: 'rete', name: 'rete', box: [0, 140, 230, 150], at: [120, 300], face: 'left',
actions: {
look: [{ say: 'Una rete vecchia, tenuta su coi pali di legno e con la speranza.' }],
},
},
{
id: 'alla_fortezza', name: 'a diritto, verso la Fortezza', box: [295, 160, 70, 36], at: [328, 186], exit: { scene: 'fortezza', at: [20, 330], face: 'right' },
},
{
id: 'alla_casa_bacci', name: 'indietro, verso la casa del maestro Bacci', box: [0, 334, 640, 26], at: [320, 354], exit: { scene: 'casa_maestro_bacci', at: [120, 350], face: 'up' },
},
],
},
// La salita bianca fra la casa del maestro Bacci (alle spalle) e il viale dei cipressi (lassù spuntano i
// cipressi): foto di Andrea, 28 ottobre.
salita_cipressi: {
name: 'La salita dei cipressi',
map: [55, 10],
background: 'assets/scenes/salita-cipressi.png',
walk: [[0, 360], [0, 317], [208, 258], [298, 190], [333, 188], [417, 233], [583, 300], [640, 325], [640, 360]],
depth: [[188, 0.3], [360, 1.15]],
entry: [320, 350],
hotspots: [
{
id: 'cipressi', name: 'cipressi', box: [310, 118, 26, 70], at: [316, 200], face: 'up',
actions: {
look: [{ say: 'Lassù spuntano i cipressi: il viale del Trebbio. Ancora un pezzo di salita.' }],
},
},
{
id: 'cartello', name: 'cartello', box: [104, 144, 26, 26], at: [150, 280], face: 'left',
actions: {
look: [{ say: 'Un cartello bianco. Bianco e basta: chi l\'ha messo s\'è scordato cosa ci voleva scrivere.' }],
},
},
{
id: 'muretto', name: 'muretto', box: [0, 232, 112, 60], at: [120, 300], face: 'left',
actions: {
look: [{ say: 'Un muretto di sassi e mattoni: buono per riprendere fiato a metà salita.' }],
use: [{ say: 'Mi siederei, ma se mi siedo ora non mi rialzo più.' }],
},
},
{
id: 'ai_cipressi', name: 'su, verso i cipressi', box: [290, 162, 66, 32], at: [316, 194], exit: { scene: 'viale_cipressi', at: [300, 350], face: 'up' },
},
{
id: 'alla_casa_bacci', name: 'indietro, verso la casa del maestro Bacci', box: [0, 334, 640, 26], at: [320, 354], exit: { scene: 'casa_maestro_bacci', at: [138, 226], face: 'down' },
},
],
},
// Fra la Fortezza e i cipressi: la stradina fra le vigne, la casa del maestro Bacci, e lassù il Trebbio.
casa_maestro_bacci: {
name: 'La casa del maestro Bacci',
map: [50, 13],
background: 'assets/scenes/casa-maestro-bacci.png',
walk: [[0, 360], [0, 340], [100, 270], [130, 222], [150, 222], [150, 270], [240, 360]],
depth: [[222, 0.3], [360, 1.2]],
entry: [120, 350],
hotspots: [
{
id: 'casa', name: 'giù a destra, la casa del maestro Bacci', box: [500, 296, 140, 64], at: [200, 340], face: 'right',
actions: {
look: [{ say: 'Giù a destra, oltre le vigne, c\'è la casa del maestro Bacci. Mezzo paese ha imparato a leggere e scrivere da lui.' }],
},
},
{
id: 'trebbio', name: 'castello del Trebbio', box: [286, 66, 50, 30], at: [140, 240], face: 'up',
actions: {
look: [{ say: 'Eccolo lì, il castello del Trebbio, in tutto il suo splendore. Da quaggiù sembra una pedina.' }],
},
},
{
id: 'vigne', name: 'vigne', box: [160, 250, 340, 110], at: [190, 320], face: 'right',
actions: {
look: [{ say: 'Le vigne in fila. A settembre qui si vendemmia, e tutto il paese ha le mani appiccicose.' }],
take: [{ say: 'L\'uva a maggio? È ancora un\'idea d\'uva.' }],
},
},
{
id: 'ai_cipressi', name: 'avanti, verso i cipressi e il Trebbio', box: [120, 150, 56, 30], at: [138, 226], exit: { scene: 'salita_cipressi', at: [320, 350], face: 'up' },
},
{
id: 'alla_fortezza', name: 'indietro, verso la Fortezza', box: [0, 330, 240, 30], at: [120, 354], exit: { scene: 'sentiero_fortezza', at: [320, 350], face: 'up' },
},
],
},
// Il piazzale coperto dell'area feste, apparecchiato per la festa.
area_feste_festa: {
name: 'Il piazzale delle feste',
map: [26, 91],
background: 'assets/scenes/area-feste-festa.png',
// Le lucine dei festoni, che si accendono e si spengono; di sera i lampioni.
effects: [
{ type: 'bulbs', points: [[178, 122], [197, 126], [217, 130], [236, 133], [255, 136], [275, 139], [294, 141], [313, 143], [333, 144], [352, 145], [371, 146], [391, 146], [410, 146], [430, 145], [449, 144], [468, 143], [488, 141], [507, 139], [526, 137], [546, 134], [565, 130], [584, 127], [604, 122], [623, 118]] },
{ type: 'lamps', phase: 'sera', points: [[162, 90], [216, 148], [250, 162], [370, 158], [440, 158], [496, 182], [527, 180], [590, 178], [632, 112]] },
],
walk: [[0, 360], [0, 260], [160, 240], [420, 240], [640, 296], [640, 360]],
depth: [[240, 0.55], [360, 2.4]],
entry: [320, 350],
hotspots: [
{
id: 'tavolate', name: 'tavolate', box: [180, 250, 460, 80], at: [250, 340], face: 'right',
actions: {
look: [{ say: 'Le tavolate già apparecchiate per la festa. Fra poco qui non si trova un posto nemmeno a pagarlo.' }],
use: [{ say: 'Mi siedo a tenere il posto? Me lo hanno già tenuto tre zie, a turno.' }],
},
},
{
id: 'bandierine', name: 'bandierine', box: [130, 120, 510, 60], at: [320, 300], face: 'up',
actions: {
look: [{ say: 'Le bandierine colorate da un lampione all\'altro. Le montano ogni anno, e ogni anno ne manca una.' }],
},
},
{
id: 'padiglione', name: 'bar dell\'area feste', box: [0, 110, 120, 140], at: [60, 280], face: 'left',
actions: {
look: [{ say: 'Il bar sotto il porticato. Fra qualche anno ci faranno il Locura.' }, { say: 'E il mercoledì d\'estate, tutti fuori a cena. Stupendo.' }],
open: [{ say: 'Il mercoledì sera è ancora lontano. Prima il palio.' }],
},
},
{
id: 'al_secondario', name: 'di là, verso il campo secondario', box: [590, 170, 50, 110], at: [620, 300], exit: { scene: 'polisportiva', at: [320, 265], face: 'down' },
},
{
id: 'al_parco', name: 'indietro, verso il parco', box: [0, 334, 640, 26], at: [320, 354], exit: { scene: 'area_feste', at: [130, 224], face: 'down' },
},
],
},
// Livello 1: Villa Adami, vista dalla salita della Fortezza guardando in discesa.
villa_adami: {
name: 'Villa Adami',
map: [46, 32],
background: 'assets/scenes/villa-adami.png',
effects: [{ type: 'birds', phase: ['pomeriggio', 'tramonto'], area: [300, 20, 330, 60] }, { type: 'clouds', area: [300, 5, 340, 60], count: 2 }, { type: 'windows', phase: 'sera', rects: [[148, 104, 10, 24], [205, 110, 10, 22], [300, 120, 12, 26], [372, 128, 10, 20], [412, 130, 10, 20], [448, 134, 10, 18], [150, 186, 12, 22], [205, 190, 12, 22], [372, 190, 10, 20], [412, 190, 10, 20], [448, 192, 10, 18]] }, { type: 'flag', at: [251, 4], w: 9, h: 6, colors: ['#f4f1e8', '#2a2a2a'] }],
walk: [[0, 272], [30, 246], [60, 244], [110, 256], [190, 268], [360, 296], [440, 288], [520, 276], [560, 268], [612, 262], [614, 272], [520, 288], [500, 292], [500, 360], [0, 360]],
depth: [[244, 0.5], [360, 1.2]],
entry: [300, 345],
hotspots: [
{
id: 'villa', name: 'Villa Adami', box: [69, 8, 459, 247], at: [300, 300], face: 'up',
actions: {
look: [{ say: 'Villa Adami. Gialla come un tuorlo, con le persiane verdi.' }],
open: [{ say: 'Mica è casa mia. E poi suonare e scappare non si fa più dalla quinta elementare.' }],
},
},
{
id: 'verso_compagnia', name: 'a destra, giù per Via della Compagnia', box: [560, 236, 60, 38], at: [600, 266], exit: { scene: 'via_compagnia', at: [440, 258], face: 'down' },
},
{
id: 'salita', name: 'salita verso la Fortezza', box: [100, 330, 400, 30], at: [300, 354], exit: { scene: 'salita_villa_adami', at: [340, 352], face: 'right' },
},
{
// Oltre il muretto si scende alla scuola e a Via Cafaggio (Andrea, 29 ottobre).
id: 'alla_scuola', name: 'giù, verso la scuola e Via Cafaggio', box: [502, 296, 138, 64], at: [498, 345], exit: { scene: 'via_cafaggio', at: [150, 352], face: 'up' },
},
],
},
// Il Poggio, dalla salita del leone alla Fortezza: la stradina col muretto e tutto il Mugello sotto (foto di Andrea, 24 ottobre).
salita_fortezza: {
name: 'Il Poggio',
map: [37, 12],
background: 'assets/scenes/salita-fortezza.png',
walk: [[0, 360], [0, 322], [80, 264], [150, 246], [195, 246], [222, 262], [296, 360]],
depth: [[246, 0.45], [360, 1.4]],
entry: [150, 345],
hotspots: [
{
id: 'giu_leone', name: 'giù, verso Villa Adami', box: [130, 222, 90, 30], at: [175, 250], exit: { scene: 'salita_villa_adami', at: [326, 259], face: 'right' },
},
{
id: 'su_fortezza', name: 'su, alla Fortezza', box: [0, 334, 296, 26], at: [150, 352], exit: { scene: 'fortezza', at: [330, 300], face: 'left' },
},
{
id: 'panorama', name: 'il Mugello', box: [300, 120, 340, 80], at: [190, 300], face: 'right',
actions: {
look: [{ say: 'Da quassù si vede tutto: i tetti del paese, i campi, e in fondo i monti del Mugello.' }, { say: 'Il palio però da qui non si vede. Ci avevo sperato.' }],
},
},
{
id: 'fico', name: 'fico', box: [460, 200, 180, 160], at: [240, 320], face: 'right',
actions: {
look: [{ say: 'Un fico che si sporge dal muretto. A fine maggio i fichi sono ancora duri: torno ad agosto.' }],
take: [{ say: 'Acerbi. E poi non sono miei.' }],
},
},
{
id: 'case', name: 'case', box: [40, 0, 100, 240], at: [60, 320], face: 'left',
actions: {
look: [{ say: 'Le case del Poggio, che salgono verso la Fortezza coi fiori alle finestre e i muri di sasso.' }],
},
},
],
},
// Tra il livello 1 e il 2: la salita di Villa Adami, con la casa del leone. Si sale alla Fortezza.
salita_villa_adami: {
name: 'Salita di Villa Adami',
map: [38, 19],
background: 'assets/scenes/salita-villa-adami.png',
walk: [[0, 314], [140, 310], [262, 322], [292, 346], [322, 346], [318, 300], [322, 262], [334, 244], [420, 250], [640, 286], [640, 360], [0, 360]],
depth: [[252, 0.5], [360, 1.1]],
entry: [340, 352],
// Quando parla, dalla statua di coccio esce lo spirito di un leone vero (disegnato da Codex, idea di Andrea).
speakers: { leone: [285, 40] },
apparitions: [{ who: 'leone', src: 'assets/characters/spirito-leone.png', at: [440, 100], height: 84 }],
hotspots: [
{
id: 'leone', name: 'leone di terracotta', box: [412, 66, 34, 30], at: [400, 290], face: 'up',
actions: {
look: [{ say: 'Un leone di terracotta che fa la guardia alla salita. Di serpenti, dice, non ne ha visti passare.' }],
talk: [{ say: 'Ciao leone. Visto passare un serpente con le ali?' }, { say: 'Io fo la guardia alla salita, mica ai serpenti.', who: 'leone' }, { say: 'E poi di notte dormo. Come tutti, in questo paese.', who: 'leone' }, { say: 'Un leone di terracotta che parla. Devo dormire di più anch\'io.' }],
take: [{ say: 'Pesa più di me. E poi ha un\'aria permalosa.' }],
},
with: {
torcia: [{ say: 'Ehi! Mi abbagli! Sono di terracotta, mica cieco.', who: 'leone' }, { say: 'Scusa, leone.' }, { say: 'Quella tienila per il buio. Qui c\'è il sole, se non l\'hai notato.', who: 'leone' }],
},
give: {
squama: [{ say: 'Una squama? Io di squame ne ho viste... mai. Io faccio la guardia alla salita.', who: 'leone' }, { say: 'Lo so, lo so. Alla salita.' }],
},
},
{
id: 'verso_scuola', name: 'giù, verso la scuola e Via Cafaggio', box: [0, 286, 120, 44], at: [40, 336], face: 'left', exit: { scene: 'via_cafaggio', at: [300, 350], face: 'up' },
actions: {
look: [{ say: 'Di là si va alla scuola. Ci ho passato abbastanza anni, grazie.' }],
},
},
{
id: 'su_fortezza', name: 'su per il Poggio, verso la Fortezza', box: [168, 196, 182, 46], at: [326, 259], face: 'left', exit: { scene: 'salita_fortezza', at: [175, 252], face: 'down' },
},
{
id: 'verso_villa_adami', name: 'discesa verso Villa Adami', box: [200, 334, 280, 26], at: [340, 356], exit: { scene: 'villa_adami', at: [300, 345], face: 'right' },
},
],
},
// La strada da Pieve a Cardetole: il posticino della Carza, il ponticino, l'area camper.
carza: {
name: 'Il posticino della Carza',
map: [60, 58],
background: 'assets/scenes/carza.png',
effects: [{ type: 'fireflies', phase: 'sera', area: [80, 200, 480, 100], count: 9 }],
walk: [[60, 360], [250, 262], [300, 218], [350, 218], [420, 262], [600, 360]],
depth: [[218, 0.55], [360, 1.65]],
entry: [300, 350],
// Il Tozzino davanti al cancello del tennis, in tenuta, che aspetta Federer.
speakers: { tozzino: [440, 222] },
people: [{ who: 'tozzino', at: [440, 300], facing: -1, idle: 'stand', talk: ['talk', 'explain'], blink: 'blink', every: 3.9 }],
hotspots: [
{
id: 'muro', name: 'casa dell\'ing. Tozzi', box: [0, 120, 200, 140], at: [190, 300], face: 'left',
actions: {
look: [{ say: 'Dietro il muro di sassi c\'è la casa dell\'ingegner Patrizio Giuseppe Tozzi, il babbo del Tozzino.' }, { say: 'Uno che fra qualche anno farà il presidente del gruppo INPS: i pensionati sanpierini che si danno un sacco da fare.' }],
},
},
{
id: 'cancello', name: 'cancello verde, verso il tennis della chiesa', box: [460, 150, 46, 132], at: [440, 290], face: 'right', exit: { scene: 'tennis_chiesa', at: [515, 285], face: 'left' },
actions: {
look: [{ say: 'Il cancello verde, sempre aperto. Di là c\'è il tennis della chiesa.' }],
},
},
{
id: 'al_ponticino', name: 'il ponticino sulla Carza', box: [270, 180, 110, 50], at: [325, 222], exit: { scene: 'ponticino', at: [400, 350], face: 'up' },
},
{
id: 'alla_pieve', name: 'su verso la Pieve', box: [0, 330, 640, 30], at: [300, 354], exit: { scene: 'pieve', at: [95, 250], face: 'right' },
},
{
id: 'tozzino', name: 'il Tozzino', box: [422, 224, 36, 76], at: [392, 312], face: 'right', default: 'talk',
give: {
ghiacciolo: [{ say: 'Grazie, ma prima della partita niente zuccheri. Federer non li tocca.', who: 'tozzino', pose: 'explain' }],
torcia: [{ say: 'Una torcia? Se Federer arriva di notte, magari. Per ora tienila te.', who: 'tozzino', pose: 'watch' }],
},
actions: {
look: [{ say: 'Il Tozzino, vestito di bianco da capo a piedi, con la racchetta. Guarda l\'orologio ogni dieci secondi.' }],
talk: [
{ say: 'Tozzino! Che fai lì davanti al cancello?' },
{ say: 'Aspetto Federer. Oggi si fa una partita.', who: 'tozzino', pose: 'explain' },
{ say: 'Federer? Roger Federer?' },
{ say: 'E chi sennò? Ha chiamato ora: s\'è fermato a Pratolino a mettere le catene. A breve arriva.', who: 'tozzino', pose: 'watch' },
{ say: 'Se non arriva, la vinco a tavolino.', who: 'tozzino', pose: 'look_far' },
],
},
},
],
},
ponticino: {
name: 'Il ponticino sulla Carza',
map: [64, 71],
background: 'assets/scenes/ponticino-carza.png',
walk: [[250, 360], [438, 198], [478, 198], [560, 360]],
depth: [[198, 0.3], [360, 1.15]],
entry: [320, 350],
hotspots: [
{
id: 'torrente', name: 'la Carza', box: [0, 230, 230, 130], at: [300, 330], face: 'left',
actions: {
look: [{ say: 'La Carza. A maggio c\'è poca acqua: d\'estate si scendeva a fare le dighe coi sassi.' }],
use: [{ say: 'Fare i ponti di sassi? Prima il palio. Poi le dighe.' }],
},
},
{
id: 'griglia', name: 'griglia', box: [346, 246, 40, 24], at: [366, 270], face: 'up',
art: [{ rect: [364, 257, 5, 2], fill: '#f2f6ff', when: '!chiavetta_presa' }, { rect: [365, 256, 2, 1], fill: '#ffffff', when: '!chiavetta_presa' }],
actions: {
look: [{ if: 'chiavetta_presa', then: [{ say: 'La griglia. Ormai dentro ci sono solo foglie.' }], else: [{ say: 'Dentro la griglia luccica qualcosa: una chiavetta! È caduta fra le sbarre.' }] }],
take: [{ if: 'chiavetta_presa', then: [{ say: 'Non c\'è più niente da prendere.' }], else: [{ say: 'Le dita non passano fra le sbarre. Ci vorrebbe qualcosa di lungo e sottile... e appiccicoso.' }] }],
},
with: {
stecco_gomma: [{ if: 'chiavetta_presa', then: [{ say: 'La chiavetta l\'ho già ripescata.' }], else: [{ say: 'Giù lo stecco, piano piano... la gomma tocca la chiavetta...' }, { say: 'Eccola, presa!' }, { give: 'chiavetta' }, { set: 'chiavetta_presa' }] }],
stecco: [{ say: 'Lo stecco ci arriva, ma la chiavetta non si attacca. Serve qualcosa di appiccicoso in cima.' }],
gomma: [{ say: 'La gomma da sola non ci arriva. Serve qualcosa per spingerla giù.' }],
},
},
{
id: 'tabernacolo', name: 'tabernacolo della Madonna', box: [442, 148, 36, 44], at: [458, 204], face: 'up',
actions: {
look: [{ say: 'Il piccolo tabernacolo in fondo al ponticino. C\'è sempre un fiore fresco, ma nessuno l\'ha mai visto metterlo.' }],
},
},
{
id: 'all_area_camper', name: 'a sinistra, verso le villette del Giannini', box: [320, 160, 110, 42], at: [442, 202], exit: { scene: 'area_camper', at: [600, 330], face: 'left' },
},
{
// [DA ANDREA: dove si gira per Cardetole, in fondo al ponticino]
id: 'a_cardetole', name: 'in fondo a destra, verso Cardetole', box: [578, 80, 62, 90], at: [476, 204], exit: { scene: 'cardetole', at: [628, 290], face: 'left' },
},
{
id: 'alla_stazione', name: 'a destra, verso la stazione', box: [486, 160, 90, 40], at: [474, 202], exit: { scene: 'stazione', at: [20, 300], face: 'right' },
},
{
id: 'alla_carza', name: 'indietro, verso la Pieve', box: [0, 330, 640, 30], at: [400, 354], exit: { scene: 'carza', at: [325, 222], face: 'down' },
},
],
},
area_camper: {
// Le villette dove abita il Giannini: da qui si va al suo campo (Andrea, 28 ottobre). L'id resta area_camper.
name: 'Le villette del Giannini',
map: [70, 84],
background: 'assets/scenes/area-camper.png',
walk: [[0, 360], [0, 260], [200, 232], [380, 240], [450, 248], [640, 300], [640, 360]],
depth: [[232, 0.5], [360, 1.15]],
entry: [600, 330],
hotspots: [
{
id: 'panchina', name: 'panchina', box: [156, 190, 36, 20], at: [190, 242], face: 'up',
actions: {
look: [{ say: 'La panchina del parco. Ci si sedevano i camperisti a guardare le montagne, con la cartina al contrario.' }],
},
},
{
id: 'villette', name: 'villette', box: [500, 80, 140, 106], at: [560, 280], face: 'right',
actions: {
look: [{ say: 'Le villette rosa coi balconi bianchi. Da qui a casa mia è un attimo.' }],
},
},
{
// Casa è a destra, per la strada (Andrea, 28 ottobre).
id: 'a_cardetole', name: 'verso casa, a Cardetole', box: [572, 188, 68, 96], at: [618, 300], exit: { scene: 'cardetole', at: [560, 348], face: 'up' },
},
{
// Laggiù, in fondo al vialetto vicino alla siepe, il campo del Giannini (Andrea, 28 ottobre).
id: 'al_giannini', name: 'laggiù, il campo del Giannini', box: [330, 150, 96, 74], at: [380, 246], exit: { scene: 'campo_giannini', at: [480, 216], face: 'left' },
},
{
id: 'al_ponticino', name: 'indietro, il ponticino', box: [560, 300, 80, 60], at: [620, 330], exit: { scene: 'ponticino', at: [442, 202], face: 'down' },
},
],
},
// Il prato del parco dei camper visto dall'altra parte: per i ragazzi, «il campo del Giannini». Ci si arriva dal
// lato delle villette dove abita il Giannini (fra gli alberi a destra) e dal Trappola; dal ponticino non si viene
// qui. L'area camper è il campo stesso: i camper stanno qui dietro (Andrea, 28 ottobre).
campo_giannini: {
name: 'Il campo del Giannini',
map: [82, 96],
background: 'assets/scenes/campo-giannini.png',
walk: [[0, 360], [0, 214], [300, 208], [460, 210], [640, 220], [640, 360]],
depth: [[208, 0.4], [360, 1.15]],
entry: [320, 350],
hotspots: [
{
id: 'porte', name: 'porte', box: [300, 180, 120, 30], at: [360, 216], face: 'up',
actions: {
look: [{ say: 'Il campo del Giannini. Qui si giocava a calcio fino a buio, con le porte grandi: roba da campionato.' }],
use: [{ say: 'Senza pallone, e senza la squadra, non vale.' }],
},
},
{
id: 'camper', name: 'qui dietro, i camper', box: [520, 320, 120, 40], at: [560, 340], face: 'down', default: 'look',
actions: {
look: [{ say: 'Qui dietro ci stanno i camper. Ma per noi questo resta il campo del Giannini.' }],
},
},
{
id: 'giochi', name: 'giochi dei bambini', box: [220, 170, 80, 40], at: [260, 216], face: 'up',
actions: {
look: [{ say: 'Gli scivoli dei bambini. Una volta il pallone finiva lì una volta su tre.' }],
},
},
{
// Fra gli alberi a destra si arriva alle villette del Giannini, in fondo al vialetto (Andrea, 28 ottobre).
id: 'all_area_camper', name: 'verso le villette del Giannini', box: [440, 150, 90, 60], at: [480, 216], exit: { scene: 'area_camper', at: [380, 246], face: 'down' },
},
{
id: 'via_liguri_magelli', name: 'dal Trappola, in Via Liguri Magelli', box: [0, 100, 70, 260], at: [30, 260], exit: { scene: 'via_liguri_magelli', at: [520, 306], face: 'left' },
},
],
},
// Via Liguri Magelli (Street View mandato da Andrea, 28 ottobre): a sinistra dal campo del Giannini. A destra la
// casa salmone con la tenda del Trappola (il Barrettino), sul muro giallo la targa della Ghiacciomobile con la sua
// fotina, e in cima alla salita il Betino dell'Arcu (dipinto da Codex nel quadro), di traverso verso la discesa:
// per partire ne ha bisogno, e intanto ferma il traffico.
via_liguri_magelli: {
name: 'Via Liguri Magelli',
map: [76, 97],
background: 'assets/scenes/via-liguri-magelli.png',
// All'inizio la Ghiacciomobile è dentro il muro giallo, coi mattoni rotti (Codex, 29 ottobre); dal tramonto
// (le impronte del Regolo) il muro è rifatto e c'è la sua targa (Andrea, 29 ottobre).
backdrops: [{ when: '!indizio_regolo', src: 'assets/scenes/via-liguri-magelli-muro.png' }],
// La strada gira intorno all'Audi nera parcheggiata davanti al Trappola.
walk: [[0, 360], [0, 320], [140, 262], [226, 198], [272, 198], [300, 242], [370, 246], [400, 252], [580, 318], [640, 330], [640, 360]],
// Le persone in proporzione con la Ghiacciomobile e l'Audi (Andrea, 29 ottobre: erano troppo piccole).
depth: [[198, 0.4], [360, 2.4]],
entry: [320, 340],
speakers: { arcu: [374, 176], zio_mario: [440, 196] },
people: [
// L'Arcu sotto la tenda del Trappola: due minuti fa era a Campomigliaio (Andrea, 28 ottobre).
// La macchina del tempo, dopo i pokerini dell'Arcu.
{ who: 'macchina', when: 'macchina_trappola', at: [200, 262], size: 1.1, idle: 'stand', talk: [] },
{ who: 'arcu', at: [374, 248], facing: -1, size: 1.05, idle: 'stand', talk: ['talk', 'explain'], blink: 'blink', every: 4.2 },
// Lo zio Mario davanti alla Ghiacciomobile nel muro, che si gratta la testa (sprite di Codex dalla sua foto,
// 29 ottobre). Solo finché la macchina è lì. [DA ANDREA: le sue battute]
{ who: 'zio_mario', when: '!indizio_regolo', at: [440, 330], facing: 1, idle: 'think', talk: ['talk', 'explain', 'point'] },
],
hotspots: [
{
id: 'arcu', name: 'l\'Arcu', box: [362, 180, 26, 68], at: [352, 256], face: 'right', default: 'talk',
actions: {
look: [{ say: 'L\'Arcu, sotto la tenda del Trappola. Due minuti fa era a Campomigliaio.' }],
talk: [{ dialogue: 'arcu_trappola' }],
},
},
{
// «Vai dal Trappola, la tenda è il Trappola» (Andrea). [DA ANDREA: com'è dentro, e chi c'è]
id: 'trappola', name: 'dal Trappola', box: [316, 150, 46, 46], at: [340, 252], face: 'right', default: 'walk',
actions: {
look: [{ say: 'La tenda è il Trappola: sotto c\'è il Barrettino.' }],
walk: [{ say: 'Dal Trappola ci si passa dopo. Prima il palio.' }],
},
},
{
// «Di chi è quell'Audi lì?» «Let it be» (che si legge «L'è di Bi»: è di Bini). Andrea, 28 ottobre.
id: 'audi', name: 'Audi nera', box: [292, 198, 68, 40], at: [330, 254], face: 'up', default: 'look',
actions: {
look: [{ say: 'Di chi è quell\'Audi lì?' }, { say: 'Let it be.', who: 'arcu', pose: 'explain' }],
talk: [{ say: 'Di chi è quell\'Audi lì?' }, { say: 'Let it be.', who: 'arcu', pose: 'explain' }],
use: [{ say: 'Non è mica mia. Mi garba, però, nera fiammante.' }],
},
},
{
id: 'targa', name: 'targa della Ghiacciomobile', box: [570, 130, 62, 78], at: [565, 336], face: 'right', default: 'look', when: 'indizio_regolo',
actions: {
look: [{ say: '«Qui riposa la Ghiacciomobile, che si è schiantata lì.»' }, { say: 'C\'è anche la fotina. Pareva sempre nuova.' }],
},
},
{
// La Ghiacciomobile nel muro (prima del tramonto). Le battute erano del circolino (Andrea, 26 ottobre);
// [DA ANDREA] quella dello schianto. Parlandole, Andrea ricorda; lei non risponde.
id: 'ghiacciomobile', name: 'la Ghiacciomobile', box: [462, 192, 140, 92], at: [440, 300], face: 'right', default: 'look', when: '!indizio_regolo',
actions: {
look: [{ say: 'La Ghiacciomobile nera, mezza dentro il muro. Hai visto cose che noi poveri umani non potremmo neppur lontanamente immaginare.' }],
talk: [{ dialogue: 'ghiacciomobile' }],
use: [{ say: 'Per tirarla fuori di lì ci vuole altro che le mie braccia.' }],
},
},
{
id: 'macchina_tempo', name: 'macchina del tempo', box: [150, 214, 104, 48], at: [212, 280], face: 'up', default: 'use', when: 'macchina_trappola',
actions: {
look: [{ say: 'La macchina del tempo, parcheggiata davanti al Trappola. Sul cruscotto la data è già pronta.' }],
use: [{ say: 'Imposto: 10 luglio 1997, ore 18 e 30. Il pokerino da Vannino.' }, { say: 'Monto anch\'io: davanti, però.', who: 'arcu', pose: 'laugh' }, { closeup: 'viaggio' }],
open: [{ say: 'Imposto: 10 luglio 1997, ore 18 e 30. Il pokerino da Vannino.' }, { say: 'Monto anch\'io: davanti, però.', who: 'arcu', pose: 'laugh' }, { closeup: 'viaggio' }],
},
},
{
// La prima battuta è di Andrea (dal circolino, 26 ottobre).
id: 'betino', name: 'il Betino dell\'Arcu', box: [232, 172, 40, 24], at: [250, 206], face: 'up', default: 'look',
actions: {
look: [{ say: 'Nessuno ha mai capito davvero il tuo immenso valore.' }, { say: 'Lassù in cima, di traverso: per partire ha bisogno della discesa. E intanto ferma il traffico.' }],
use: [{ say: 'È il Betino dell\'Arcu. Senza una discesa davanti, un si muove.' }],
},
},
{
// Casa di Andrea è lassù, in cima alla salita, a destra del Betino (Andrea, 28 ottobre).
id: 'a_cardetole', name: 'lassù, verso casa a Cardetole', box: [274, 148, 40, 50], at: [264, 202], exit: { scene: 'cardetole', at: [20, 352], face: 'right' },
},
{
// Il campo del Giannini è laggiù a destra, oltre la siepe (Andrea, 28 ottobre).
id: 'al_giannini', name: 'verso il campo del Giannini', box: [404, 150, 160, 42], at: [520, 306], exit: { scene: 'campo_giannini', at: [60, 250], face: 'right' },
},
// In fondo all'elenco, così sta sopra all'uscita e alla siepe.
{
id: 'zio_mario', name: 'lo zio Mario', box: [418, 206, 46, 124], at: [362, 334], face: 'right', default: 'look', when: '!indizio_regolo',
actions: {
look: [{ say: 'Lo zio Mario. Guarda il muro, guarda la macchina, e si gratta la testa sotto il berretto.' }],
// Il primo scambio con lo zio (Andrea, 29 ottobre).
talk: [{ say: 'Zio, hai problemi?' }, { say: 'I problemi io gli avevo quando andavo a scuola!', who: 'zio_mario', pose: 'laugh' }],
},
},
],
},
// Cardetole, il rione dei verdi, dove abita Andrea: giù dalla Pieve.
cardetole: {
name: 'Cardetole',
map: [90, 84],
background: 'assets/scenes/cardetole.png',
walk: [[0, 360], [0, 344], [120, 332], [200, 304], [262, 292], [330, 292], [372, 296], [640, 266], [640, 360]],
depth: [[266, 0.55], [360, 1.15]],
entry: [300, 350],
// Il Chiaru (Matteo Chiarusi) accanto alla pista col gesso, sul parcheggio sotto casa.
speakers: { chiaru: [520, 214] },
people: [{ who: 'chiaru', at: [520, 318], facing: -1, idle: 'stand', talk: ['talk', 'explain'], blink: 'blink', every: 3.7 }],
hotspots: [
{
id: 'parcheggio', name: 'parcheggio', box: [356, 262, 280, 60], at: [450, 330], face: 'right',
actions: {
look: [{ say: 'Il parcheggio sotto casa. Col gesso ci si disegnava la pista delle macchinine, e si giocava finché non chiamavano per cena.' }],
},
},
{
// Si sale in terrazza (Andrea, 29 ottobre).
id: 'casa', name: 'casa di Andrea, su in terrazza', box: [330, 20, 220, 212], at: [470, 290], face: 'up', exit: { scene: 'terrazza', at: [300, 330], face: 'up' },
actions: {
look: [{ say: 'Casa mia. Secondo piano: quella con la tapparella a metà è la camera di mia sorella, e a destra quella dei miei.' }],
},
},
{
id: 'platano', name: 'platano', box: [90, 0, 170, 206], at: [200, 306], face: 'up',
actions: {
look: [{ say: 'Il prato sotto casa. Qui le porte le facevamo con le maglie per terra: due maglie, un palo ciascuna.' }, { say: 'E ogni gol era «Era fuori!», «No, era dentro!».' }],
use: [{ say: 'Arrampicarmi? Alla mia età, e davanti a tutto il condominio?' }],
},
},
{
// Il prato in salita sotto casa: le parole sono di Andrea (28 ottobre).
id: 'prato', name: 'prato', box: [52, 208, 278, 76], at: [262, 300], face: 'up', default: 'look',
actions: {
look: [
{ say: 'Su questo campo ci abbiamo passato trentacinque anni, giorno, pomeriggio e sera, a giocare a calcio.' },
{ say: 'Le maglie a fare da pali, e i palloni tagliati che entravano nelle terrazze, ovunque.' },
],
},
},
// Le uscite di casa (Andrea, 28 ottobre): in basso a destra il Giannini (le sue villette, dalla strada delle
// villette), a destra il ponticino della Carza, a sinistra il Trappola.
{
id: 'al_giannini', name: 'dal Giannini', box: [440, 322, 200, 38], at: [560, 348], exit: { scene: 'area_camper', at: [618, 300], face: 'left' },
},
{
id: 'al_ponticino', name: 'a destra, il ponticino della Carza', box: [596, 150, 44, 110], at: [628, 290], exit: { scene: 'ponticino', at: [476, 204], face: 'down' },
},
{
id: 'al_trappola', name: 'a sinistra, dal Trappola', box: [0, 236, 50, 104], at: [20, 352], exit: { scene: 'via_liguri_magelli', at: [264, 202], face: 'down' },
},
// In fondo all'elenco, così sta sopra a parcheggio e casa: il clic sul Chiaru è suo (l'ultimo della lista vince).
{
id: 'chiaru', name: 'il Chiaru', box: [498, 212, 46, 106], at: [470, 330], face: 'right', default: 'talk',
actions: {
look: [{ say: 'Il Chiaru, con le ginocchia bianche di gesso e una Formula 1 blu in mano.' }],
talk: [{ dialogue: 'chiaru' }],
},
},
],
},
// Il terrazzo di casa a Cardetole: la vista dalla finestra di Andrea (foto sua, 29 ottobre), il paese che sale e
// lassù la Fortezza. Codex l'ha dipinta dalla foto e ci ha messo il terrazzo davanti. [DA ANDREA: le battute]
terrazza: {
name: 'Il terrazzo di casa',
map: [92, 81],
background: 'assets/scenes/terrazza-cardetole.png',
walk: [[120, 298], [500, 298], [560, 330], [604, 360], [60, 360], [100, 322]],
depth: [[290, 1.8], [360, 2.3]],
entry: [300, 330],
enter: [{ if: '!terrazza_vista', then: [{ say: 'La vista di casa. Da qui si vede mezzo paese, e lassù la Fortezza.' }, { set: 'terrazza_vista' }] }],
hotspots: [
{
id: 'fortezza', name: 'la Fortezza, lassù', box: [176, 44, 52, 30], at: [220, 304], face: 'up',
actions: { look: [{ say: 'Lassù in cima, fra gli alberi, la Fortezza. Da qui pare piccina.' }] },
},
{
id: 'paese', name: 'il paese', box: [196, 96, 220, 60], at: [300, 304], face: 'up',
actions: { look: [{ say: 'Il paese che sale verso la collina, coi tetti uno sull\'altro e il campanile in mezzo.' }] },
},
{
id: 'palazzo', name: 'il palazzo accanto', box: [504, 54, 136, 140], at: [470, 304], face: 'up',
actions: { look: [{ say: 'Il palazzo accanto, di mattoni come il nostro.' }] },
},
{
id: 'gerani', name: 'gerani', box: [500, 226, 100, 94], at: [480, 330], face: 'right',
actions: { look: [{ say: 'I gerani. Guai a chi li tocca.' }], take: [{ say: 'Se ne strappo uno, il palio lo guardo dal letto.' }] },
},
{
id: 'edera', name: 'edera', box: [54, 176, 136, 134], at: [150, 330], face: 'left',
actions: { look: [{ say: 'L\'edera nel vaso: cresce da sola, e si arrampica dove le pare.' }] },
},
{
id: 'sedia', name: 'sedia di plastica', box: [592, 208, 48, 116], at: [560, 340], face: 'right',
actions: { look: [{ say: 'Una sedia di plastica, piegata.' }], use: [{ say: 'Sedermi qui a guardare il paese? Prima il palio.' }] },
},
{
id: 'in_casa', name: 'dentro casa', box: [0, 0, 54, 340], at: [112, 340], face: 'left',
actions: {
look: [{ say: 'La porta-finestra di casa, con la tapparella a metà.' }],
walk: [{ say: 'Se rientro, mi mettono ad apparecchiare. Prima il palio.' }],
open: [{ say: 'Se rientro, mi mettono ad apparecchiare. Prima il palio.' }],
},
},
{
id: 'giu_cardetole', name: 'giù, sotto casa', box: [120, 340, 400, 20], at: [300, 352], exit: { scene: 'cardetole', at: [470, 290], face: 'down' },
},
],
},
// Via della Compagnia (foto di Andrea, 29 ottobre): la strada che sale dalla Pieve verso la Fortezza. Alle spalle
// Via de' Medici, a sinistra l'arco che scende alla Pieve, a destra si sale a Villa Adami. [DA ANDREA: le battute]
via_compagnia: {
name: 'Via della Compagnia',
map: [34, 30],
background: 'assets/scenes/via-della-compagnia.png',
walk: [[0, 360], [0, 318], [88, 306], [200, 292], [250, 290], [330, 272], [420, 254], [446, 248], [460, 262], [540, 360]],
depth: [[248, 0.55], [360, 1.3]],
entry: [300, 350],
hotspots: [
{
id: 'stemma', name: 'stemma di pietra', box: [358, 160, 22, 18], at: [370, 266], face: 'up',
actions: { look: [{ say: 'Un piccolo stemma di pietra sul muro. Chissà di chi era, questa casa, un tempo.' }] },
},
{
id: 'lampione', name: 'lampione', box: [102, 90, 26, 36], at: [150, 306], face: 'up',
actions: { look: [{ say: 'Il lampione di ferro, attaccato al muro. La sera fa una luce gialla che pare d\'altri tempi.' }] },
},
{
// L'arco porta al forno; alla Pieve si scende fra le due case gialle (Andrea, 29 ottobre).
id: 'arco_forno', name: 'sotto l\'arco, giù al forno', box: [198, 222, 50, 66], at: [222, 296], exit: { scene: 'forno', at: [320, 350], face: 'up' },
},
{
id: 'alla_pieve', name: 'fra le case gialle, giù alla Pieve', box: [80, 196, 40, 100], at: [94, 316], exit: { scene: 'pieve', at: [600, 350], face: 'left' },
},
{
id: 'su_villa_adami', name: 'su verso Villa Adami', box: [420, 196, 42, 56], at: [440, 258], exit: { scene: 'villa_adami', at: [600, 266], face: 'left' },
},
{
id: 'giu_medici', name: 'giù per Via de\' Medici', box: [0, 336, 540, 24], at: [300, 352], exit: { scene: 'via_de_medici', at: [300, 216], face: 'down' },
},
],
},
// Via Cafaggio (foto di Andrea, 29 ottobre): scendendo dalla salita di Villa Adami (alle spalle), a sinistra il
// cancello della scuola con la palestra dal tetto a denti, dritto Via Cafaggio, lassù Monte Cacioli con le antenne.
// [DA ANDREA: le battute]
via_cafaggio: {
name: 'Via Cafaggio',
map: [26, 17],
background: 'assets/scenes/via-cafaggio.png',
walk: [[0, 360], [0, 346], [160, 318], [300, 268], [345, 258], [400, 240], [470, 208], [500, 188], [515, 188], [530, 230], [555, 300], [565, 360]],
depth: [[188, 0.3], [360, 1.4]],
entry: [300, 350],
hotspots: [
{
id: 'palestra', name: 'palestra della scuola', box: [20, 165, 250, 60], at: [200, 324], face: 'up',
actions: { look: [{ say: 'La palestra della scuola, col tetto a denti di sega.' }] },
},
{
id: 'monte_cacioli', name: 'Monte Cacioli', box: [230, 86, 170, 56], at: [300, 300], face: 'up',
actions: { look: [{ say: 'Lassù Monte Cacioli, con le antenne in cima.' }] },
},
{
id: 'giu_cafaggio', name: 'dritto, giù per Via Cafaggio', box: [486, 166, 46, 36], at: [507, 192], exit: { scene: 'via_cafaggio_fondo', at: [300, 350], face: 'up' },
},
{
id: 'cancello', name: 'cancello della palestra', box: [298, 188, 52, 70], at: [322, 268], face: 'up',
actions: { look: [{ say: 'Il cancello della palestra. Per la scuola si passa dalla stradina più in là.' }], open: [{ say: 'Chiuso. Per la scuola si passa dalla stradina più in là.' }] },
},
{
// Alla scuola non si passa dal cancello ma dalla stradina subito dopo (Andrea, 29 ottobre).
id: 'alla_scuola', name: 'la stradina della scuola', box: [380, 172, 50, 32], at: [410, 246], exit: { scene: 'scuola', at: [128, 340], face: 'right' },
},
{
id: 'su_villa', name: 'su, verso Villa Adami', box: [0, 336, 280, 24], at: [150, 352], exit: { scene: 'villa_adami', at: [498, 345], face: 'up' },
},
{
id: 'su_salita', name: 'su per la salita, verso la Fortezza', box: [280, 336, 280, 24], at: [400, 352], exit: { scene: 'salita_villa_adami', at: [40, 336], face: 'right' },
},
],
},
// Via Cafaggio più giù (foto di Andrea, 29 ottobre): dritta fra le case, verso la Provinciale. [DA ANDREA: battute]
via_cafaggio_fondo: {
name: 'Via Cafaggio',
map: [44, 40],
background: 'assets/scenes/via-cafaggio-fondo.png',
walk: [[60, 360], [150, 300], [260, 240], [340, 196], [368, 176], [386, 176], [400, 200], [420, 262], [470, 282], [640, 318], [640, 360]],
depth: [[176, 0.3], [360, 1.4]],
entry: [300, 350],
hotspots: [
{
id: 'siepe', name: 'siepe', box: [400, 0, 240, 260], at: [430, 290], face: 'right',
actions: { look: [{ say: 'Una siepe alta come una casa, e l\'edera che si mangia il muro.' }] },
},
{
id: 'villette', name: 'villette', box: [0, 30, 200, 130], at: [200, 300], face: 'left',
actions: { look: [{ say: 'Le villette col giardino e il muretto: qui è tutto in ordine.' }] },
},
{
id: 'avanti_cafaggio', name: 'avanti per Via Cafaggio', box: [350, 150, 56, 34], at: [377, 180], exit: { scene: 'via_cafaggio_avanti', at: [300, 350], face: 'up' },
},
{
id: 'su_cafaggio', name: 'indietro, su per Via Cafaggio', box: [0, 336, 640, 24], at: [300, 352], exit: { scene: 'via_cafaggio', at: [507, 192], face: 'down' },
},
],
},
// Via Cafaggio, ancora avanti (foto di Andrea, 29 ottobre: Codex ha ricostruito il pezzo coperto dal dito).
via_cafaggio_avanti: {
name: 'Via Cafaggio, verso la rotonda',
map: [56, 58],
background: 'assets/scenes/via-cafaggio-avanti.png',
walk: [[0, 360], [0, 330], [110, 268], [230, 190], [248, 176], [272, 176], [300, 200], [360, 262], [440, 330], [460, 360]],
depth: [[176, 0.3], [360, 1.4]],
entry: [300, 350],
hotspots: [
{
id: 'villa_archi', name: 'villa con gli archi', box: [470, 40, 170, 90], at: [380, 300], face: 'right',
actions: { look: [{ say: 'Una villa con gli archi dietro la siepe. Qui le siepi le tosano col righello.' }] },
},
{
id: 'alla_rotonda', name: 'in fondo, alla rotonda della Provinciale', box: [236, 158, 50, 34], at: [260, 180], exit: { scene: 'rotonda_cafaggio', at: [390, 352], face: 'up' },
},
{
id: 'su_cafaggio', name: 'indietro, su per Via Cafaggio', box: [0, 336, 460, 24], at: [300, 352], exit: { scene: 'via_cafaggio_fondo', at: [377, 180], face: 'down' },
},
],
},
// In fondo a Via Cafaggio, la rotonda sulla Provinciale (foto di Andrea, 29 ottobre): a sinistra il viale
// alberato, dritto verso La Luna, lungo la Carza.
rotonda_cafaggio: {
name: 'La rotonda in fondo a Via Cafaggio',
map: [64, 66],
background: 'assets/scenes/rotonda-cafaggio.png',
walk: [[180, 360], [230, 320], [300, 290], [330, 262], [0, 252], [0, 238], [360, 236], [520, 224], [560, 224], [590, 300], [600, 360]],
depth: [[224, 0.4], [360, 1.35]],
entry: [390, 352],
hotspots: [
{
id: 'cipresso', name: 'cipresso', box: [146, 0, 64, 250], at: [300, 292], face: 'left',
actions: { look: [{ say: 'Un cipresso dritto come un fuso, in mezzo all\'aiuola.' }] },
},
{
id: 'panchina', name: 'panchina', box: [68, 252, 110, 40], at: [260, 336], face: 'left',
actions: { look: [{ say: 'Una panchina all\'ombra.' }], use: [{ say: 'Sedersi ora? Prima il palio.' }] },
},
{
id: 'palazzo_rosso', name: 'palazzo di mattoni', box: [204, 136, 146, 88], at: [360, 240], face: 'up',
actions: { look: [{ say: 'Il palazzo di mattoni coi negozi sotto, di là dalla Provinciale.' }] },
},
{
id: 'al_viale', name: 'a sinistra, il viale alberato', box: [0, 222, 60, 40], at: [20, 245], exit: { scene: 'provinciale_viale', at: [435, 238], face: 'down' },
},
{
id: 'verso_luna', name: 'dritto, lungo la Provinciale verso La Luna', box: [500, 204, 60, 30], at: [540, 226], exit: { scene: 'provinciale_luna', at: [330, 198], face: 'down' },
},
{
id: 'su_cafaggio', name: 'indietro, su per Via Cafaggio', box: [180, 336, 420, 24], at: [390, 352], exit: { scene: 'via_cafaggio_avanti', at: [260, 180], face: 'down' },
},
],
},
// La Provinciale fra La Luna (alle spalle) e la rotonda di Via Cafaggio (davanti); a destra, fra i platani, la
// passeggiata sulla Carza (foto di Andrea, 29 ottobre). [DA ANDREA: le battute]
provinciale_luna: {
name: 'La Provinciale, sotto i platani',
map: [65, 70],
background: 'assets/scenes/provinciale-luna.png',
walk: [[0, 360], [0, 262], [150, 222], [290, 200], [380, 192], [420, 192], [470, 200], [505, 240], [510, 268], [400, 268], [390, 360]],
depth: [[190, 0.35], [360, 1.4]],
entry: [200, 352],
hotspots: [
{
id: 'platani', name: 'platani', box: [530, 0, 110, 360], at: [470, 262], face: 'right',
actions: { look: [{ say: 'I platani della Provinciale: d\'estate fanno un\'ombra che pare una galleria.' }] },
},
{
id: 'villette', name: 'villette', box: [0, 70, 250, 110], at: [150, 300], face: 'left',
actions: { look: [{ say: 'Le villette sotto il bosco, coi giardini curati.' }] },
},
{
id: 'alla_rotonda', name: 'avanti, alla rotonda di Via Cafaggio', box: [290, 176, 90, 24], at: [330, 198], exit: { scene: 'rotonda_cafaggio', at: [540, 226], face: 'left' },
},
{
id: 'alla_passeggiata', name: 'a destra, la passeggiata sulla Carza', box: [462, 186, 48, 44], at: [480, 232], exit: { scene: 'passeggiata_carza', at: [330, 352], face: 'up' },
},
{
id: 'alla_luna', name: 'indietro, verso La Luna', box: [0, 336, 390, 24], at: [200, 352], exit: { scene: 'verso_luna', at: [150, 206], face: 'down' },
},
],
},
// La passeggiata sulla Carza (foto di Andrea, 29 ottobre): il prato, il greto e la cascatella che si vede dalla
// Luna. [DA ANDREA: le battute]
passeggiata_carza: {
name: 'La passeggiata sulla Carza',
map: [70, 76],
background: 'assets/scenes/passeggiata-carza.png',
walk: [[0, 360], [0, 300], [190, 300], [230, 270], [330, 235], [420, 200], [540, 195], [560, 260], [520, 300], [540, 360]],
depth: [[195, 0.45], [360, 1.35]],
entry: [330, 352],
hotspots: [
{
id: 'cascata', name: 'la cascatella', box: [288, 172, 84, 36], at: [330, 246], face: 'left',
actions: { look: [{ say: 'La cascatella della Carza: quella che si vede anche dalla Luna.' }, { say: 'D\'estate si veniva a rinfrescare i piedi qui sotto.' }] },
},
{
id: 'greto', name: 'greto della Carza', box: [150, 186, 150, 70], at: [230, 280], face: 'left',
actions: { look: [{ say: 'Il greto pieno di sassi. Dighe, ponti, pesci immaginari: qui ci si passava l\'estate.' }] },
},
{
id: 'lampione', name: 'lampione', box: [504, 70, 26, 186], at: [480, 270], face: 'right',
actions: { look: [{ say: 'Un lampione in mezzo al prato. Di sera la passeggiata la fanno le zanzare.' }] },
},
{
// Il sentiero va avanti a sinistra, dietro il grande albero (Andrea, 29 ottobre).
id: 'avanti_carza', name: 'avanti, lungo la Carza', box: [0, 200, 50, 130], at: [20, 330], exit: { scene: 'passeggiata_carza_avanti', at: [300, 352], face: 'up' },
},
{
id: 'alla_provinciale', name: 'indietro, sulla Provinciale', box: [180, 336, 360, 24], at: [330, 352], exit: { scene: 'provinciale_luna', at: [480, 232], face: 'left' },
},
],
},
// La passeggiata sulla Carza più avanti (foto di Andrea, 29 ottobre): il ponticino, gli orti, il greto.
// [DA ANDREA: le battute]
passeggiata_carza_avanti: {
name: 'La passeggiata sulla Carza, gli orti',
map: [74, 80],
background: 'assets/scenes/passeggiata-carza-avanti.png',
walk: [[0, 360], [0, 300], [180, 236], [262, 186], [300, 186], [350, 222], [470, 262], [560, 300], [600, 360]],
depth: [[186, 0.4], [360, 1.4]],
entry: [300, 352],
hotspots: [
{
id: 'orti', name: 'orti', box: [0, 150, 220, 130], at: [150, 310], face: 'left',
actions: { look: [{ say: 'Gli orti con la rete: cavoli, insalata e i fagioli sulle canne.' }], take: [{ say: 'Un cavolo dall\'orto di qualcun altro? Poi chi lo sente.' }] },
},
{
id: 'ponticino', name: 'ponticino', box: [280, 182, 72, 40], at: [316, 232], face: 'up',
actions: { look: [{ say: 'Un ponticino di ferro sul fosso. Due passi e sei di là.' }] },
},
{
id: 'greto', name: 'greto della Carza', box: [470, 210, 170, 126], at: [520, 300], face: 'right',
actions: { look: [{ say: 'Il greto bianco della Carza, con un filo d\'acqua in mezzo ai sassi.' }] },
},
{
id: 'in_fondo', name: 'avanti, lungo la Carza', box: [252, 146, 56, 34], at: [282, 190], exit: { scene: 'passeggiata_poste', at: [250, 352], face: 'up' },
},
{
id: 'indietro', name: 'indietro, verso la cascatella', box: [0, 336, 600, 24], at: [300, 352], exit: { scene: 'passeggiata_carza', at: [20, 330], face: 'right' },
},
],
},
// La passeggiata sulla Carza, dietro le case (foto di Andrea, 29 ottobre): a sinistra si va al campone delle poste,
// dritto si continua verso il ponte delle poste. [DA ANDREA: le battute]
passeggiata_poste: {
name: 'La passeggiata sulla Carza, dietro le poste',
map: [16, 64],
background: 'assets/scenes/passeggiata-carza-poste.png',
walk: [[90, 360], [180, 300], [260, 250], [300, 224], [318, 224], [330, 250], [350, 300], [420, 360]],
depth: [[224, 0.45], [360, 1.4]],
entry: [250, 352],
hotspots: [
{
id: 'casa', name: 'casa con la siepe', box: [0, 0, 150, 170], at: [150, 330], face: 'left',
actions: { look: [{ say: 'Una casa con la siepe rossa davanti. Da quel balcone si vede tutta la Carza.' }] },
},
{
id: 'carza', name: 'la Carza', box: [440, 230, 200, 130], at: [370, 320], face: 'right',
actions: { look: [{ say: 'La Carza sotto il muretto, con le canne dritte nell\'acqua e il muro vecchio di sassi.' }] },
},
{
id: 'al_campone', name: 'a sinistra, il campone delle poste', box: [226, 196, 48, 40], at: [280, 240], exit: { scene: 'giardini_poste', at: [600, 250], face: 'left' },
},
{
id: 'avanti', name: 'avanti, verso il ponte delle poste', box: [286, 196, 52, 30], at: [310, 226], exit: { scene: 'passeggiata_ponte', at: [225, 352], face: 'up' },
},
{
id: 'indietro', name: 'indietro, verso gli orti', box: [90, 336, 330, 24], at: [250, 352], exit: { scene: 'passeggiata_carza_avanti', at: [282, 190], face: 'down' },
},
],
},
// L'ultimo pezzo della passeggiata sulla Carza (foto di Andrea, 29 ottobre): gli orti a sinistra, la Carza a destra,
// in fondo il ponte che collega le poste alla stazione. [DA ANDREA: le battute]
passeggiata_ponte: {
name: 'La passeggiata sulla Carza, verso il ponte',
map: [14, 70],
background: 'assets/scenes/passeggiata-carza-ponte.png',
walk: [[150, 360], [200, 290], [226, 200], [242, 200], [260, 280], [300, 360]],
depth: [[200, 0.4], [360, 1.4]],
entry: [225, 352],
hotspots: [
{
id: 'orti', name: 'orti', box: [0, 140, 170, 180], at: [190, 320], face: 'left',
actions: { look: [{ say: 'Gli orti fatti coi bancali e le cassette, il bidone blu per l\'acqua. Ognuno a modo suo.' }] },
},
{
id: 'carza', name: 'la Carza', box: [450, 210, 190, 150], at: [270, 330], face: 'right',
actions: { look: [{ say: 'Qui la Carza ha un po\' d\'acqua chiara fra i sassi bianchi.' }] },
},
{
id: 'al_ponte', name: 'avanti, al ponte delle poste', box: [212, 168, 46, 36], at: [234, 204], exit: { scene: 'ponte_stazione', at: [300, 352], face: 'up' },
},
{
id: 'indietro', name: 'indietro, dietro le poste', box: [150, 336, 150, 24], at: [225, 352], exit: { scene: 'passeggiata_poste', at: [310, 226], face: 'down' },
},
],
},
// In fondo alla passeggiata sulla Carza, sotto il ponte ad archi che collega le poste alla stazione (foto di Andrea,
// 29 ottobre): il viottolo a sinistra sale sul ponte. [DA ANDREA: le battute]
ponte_stazione: {
name: 'Sotto il ponte delle poste',
map: [12, 75],
background: 'assets/scenes/ponte-carza-stazione.png',
walk: [[0, 360], [0, 320], [60, 290], [120, 240], [150, 190], [168, 190], [200, 240], [300, 232], [420, 236], [520, 280], [640, 300], [640, 360]],
depth: [[190, 0.4], [360, 1.35]],
entry: [300, 352],
hotspots: [
{
id: 'ponte', name: 'il ponte ad archi', box: [190, 124, 200, 90], at: [300, 240], face: 'up',
actions: { look: [{ say: 'Il ponte delle poste, coi suoi tre archi di mattoni: da sotto pare più vecchio del paese.' }] },
},
{
id: 'orti', name: 'orti', box: [0, 180, 120, 90], at: [80, 300], face: 'left',
actions: { look: [{ say: 'Altri orti, coi cavoli grossi come palloni.' }] },
},
{
id: 'carza', name: 'la Carza', box: [440, 210, 200, 90], at: [460, 262], face: 'right',
actions: { look: [{ say: 'La Carza passa sotto gli archi e se ne va verso la Sieve.' }] },
},
{
// Il viottolo passa sotto l'arco e va avanti lungo la Carza; alla stazione si sale dalla parte destra del ponte
// (Andrea, 29 ottobre).
id: 'avanti_carza', name: 'avanti per il viottolo, sotto il ponte', box: [136, 158, 46, 34], at: [158, 192], exit: { scene: 'orti_zio_mario', at: [400, 352], face: 'up' },
},
{
id: 'su_ponte', name: 'su sul ponte, alla stazione', box: [410, 86, 100, 60], at: [440, 252], exit: { scene: 'stazione', at: [620, 320], face: 'left' },
},
{
id: 'indietro', name: 'indietro lungo la Carza', box: [0, 336, 640, 24], at: [300, 352], exit: { scene: 'passeggiata_ponte', at: [234, 204], face: 'down' },
},
],
},
// Oltre il ponte delle poste, lungo la Carza (foto di Andrea, 29 ottobre): la casa gialla al sole è quella dello zio
// Mario, e sotto ci sono i suoi orti. In fondo la passerella. [DA ANDREA: le battute]
orti_zio_mario: {
name: 'Gli orti dello zio Mario',
map: [8, 82],
background: 'assets/scenes/orti-zio-mario.png',
walk: [[150, 360], [300, 250], [280, 236], [340, 236], [420, 248], [640, 330], [640, 360]],
depth: [[236, 0.45], [360, 1.35]],
entry: [400, 352],
// Al tramonto, quando la Ghiacciomobile è già un ricordo con la targa, lo zio Mario è nel suo orto (Andrea,
// 30 ottobre), e ti aspetta a cena.
speakers: { zio_mario: [250, 240] },
people: [{ who: 'zio_mario', when: 'indizio_regolo', at: [250, 318], facing: -1, idle: 'stand', talk: ['talk', 'explain', 'point'] }],
hotspots: [
{
id: 'casa_zio', name: 'casa dello zio Mario', box: [80, 90, 200, 90], at: [260, 290], face: 'left',
actions: { look: [{ say: 'La casa dello zio Mario, quella gialla al sole.' }] },
},
{
id: 'orti', name: 'gli orti dello zio Mario', box: [0, 180, 250, 170], at: [205, 330], face: 'left',
actions: {
look: [{ say: 'Gli orti dello zio Mario: pomodori sulle canne, insalata, cavoli. Tutto in fila come soldati.' }],
take: [{ say: 'Un pomodoro dell\'orto dello zio? Se se ne accorge, e se ne accorge, son dolori.' }],
},
},
{
id: 'passerella', name: 'la passerella sulla Carza', box: [384, 186, 70, 30], at: [410, 252], face: 'up',
actions: { look: [{ say: 'Laggiù la passerella coperta sulla Carza.' }], walk: [{ say: 'Di là ci passo un\'altra volta: prima il palio.' }] },
},
{
id: 'indietro', name: 'indietro, verso il ponte delle poste', box: [150, 336, 490, 24], at: [400, 352], exit: { scene: 'ponte_stazione', at: [158, 192], face: 'down' },
},
{
id: 'zio_mario', name: 'lo zio Mario', box: [228, 248, 44, 72], at: [300, 330], face: 'left', default: 'talk', when: 'indizio_regolo',
actions: {
look: [{ say: 'Lo zio Mario nel suo orto, col sole che va giù dietro la casa.' }],
// Le battute sono di Andrea (30 ottobre).
talk: [
{ say: 'Ti s\'aspetta a cena, che c\'è la vitella di maiale.', who: 'zio_mario', pose: 'explain' },
{ say: 'Non ti avevo visto, pensavo tu fossi andato all\'estero.' },
{ say: 'Io ho girato tanto... il Falcione.', who: 'zio_mario', pose: 'laugh' },
{ say: 'Zio, che sei stanco?' },
{ say: 'No, dormo!', who: 'zio_mario', pose: 'laugh' },
{ say: 'Zio, a me mi garba Michael Jackson!' },
{ say: 'Mai col gesso!', who: 'zio_mario', pose: 'laugh' },
],
},
},
],
},
// La strada fra il bivio della Provinciale (alle spalle) e la stazione (in fondo); a destra si va al campone delle
// poste (foto di Andrea, 29 ottobre). [DA ANDREA: le battute]
viale_stazione: {
name: 'Verso la stazione',
map: [20, 52],
background: 'assets/scenes/viale-stazione.png',
walk: [[30, 360], [230, 280], [320, 240], [330, 228], [360, 228], [400, 250], [440, 262], [600, 268], [640, 290], [640, 360]],
depth: [[228, 0.35], [360, 1.4]],
entry: [300, 352],
hotspots: [
{
id: 'case', name: 'case coi balconi fioriti', box: [0, 0, 230, 270], at: [200, 320], face: 'left',
actions: { look: [{ say: 'Le case coi balconi pieni di vasi: qui ogni finestra è un giardino.' }] },
},
{
id: 'palazzo', name: 'palazzo di mattoni', box: [450, 20, 190, 220], at: [520, 280], face: 'right',
actions: { look: [{ say: 'Il palazzo di mattoni e intonaco, coi balconi in fila.' }] },
},
{
id: 'alla_stazione', name: 'avanti, la stazione', box: [320, 196, 50, 36], at: [340, 236], exit: { scene: 'stazione', at: [320, 350], face: 'up' },
},
{
id: 'al_campone', name: 'a destra, il campone delle poste', box: [590, 240, 50, 60], at: [620, 280], exit: { scene: 'giardini_poste', at: [300, 352], face: 'up' },
},
{
id: 'al_bivio', name: 'indietro, al bivio della Provinciale', box: [30, 336, 610, 24], at: [300, 352], exit: { scene: 'bivio_provinciale', at: [580, 345], face: 'left' },
},
],
},
// Il Barrettino il 10 luglio 1997 alle 18:30 (Andrea, 29 ottobre; l'interno è una proposta di Codex, [DA ANDREA]):
// Vannino e Pierino Parigi con la tavola apparecchiata da poker. Si torna nel 2007 dalla porta.
// La Smarronata del 1993 (Andrea, 31 ottobre): la festa delle castagne del Gruppo Alpini di San Piero, sotto il ponte
// sulla Sieve, fra il fiume e la strada del campo. Sfondo di Codex dai fotogrammi del video del 1993
// (assets/raw/smarronata). Ci si arriva solo con la macchina del tempo. [DA ANDREA: battute, alpini, minigioco]
smarronata_1993: {
name: 'La Smarronata, 17 ottobre 1993',
viaggio: true,
back: { label: 'Torna al 2007', actions: RITORNO_1993 },
background: 'assets/scenes/smarronata-1993.png',
walk: [[125, 245], [330, 232], [590, 238], [600, 262], [420, 292], [400, 360], [250, 360], [240, 276], [125, 276]],
depth: [[232, 0.55], [360, 1.2]],
entry: [320, 340],
enter: [{ if: '!visto_1993', then: [{ set: 'visto_1993' }, { say: 'La Smarronata! Ottobre 1993. Si sente già l\'odore delle bruciate.' }] }],
// Il cartellone sopra la festa, e i cartelli degli stand (come nel video: vino gratis, polenta).
art: [
{ text: 'LA SMARRONATA', at: [191, 134], size: 5, fill: '#2f6b32' },
{ text: 'ALPINI S.PIERO', at: [191, 144], size: 4, fill: '#b7342e' },
],
hotspots: [
{
id: 'bruciatore', name: 'il cilindro delle bruciate', box: [192, 188, 68, 54], at: [226, 262], face: 'up',
actions: {
look: [{ say: 'Il cilindro delle bruciate: si gira la manovella sopra il fuoco, e le castagne ci ballano dentro.' }],
use: [{ say: 'Si gira piano, sennò le bruciate si bruciano davvero.' }],
take: [{ say: 'Una bruciata calda, presa al volo. Scotta! Ma è buonissima.' }],
},
},
{
id: 'sacchi', name: 'i sacchi di castagne', box: [110, 202, 58, 40], at: [150, 262], face: 'up',
actions: { look: [{ say: 'Sacchi di marroni del Mugello, pronti per il fuoco.' }], take: [{ say: 'Un sacco intero? Gli alpini mi rincorrono fino al ponte.' }] },
},
{
id: 'legna', name: 'la catasta di legna', box: [262, 206, 48, 34], at: [286, 254], face: 'up',
actions: { look: [{ say: 'La legna per il fuoco delle bruciate. Ce n\'è per tutto il pomeriggio.' }] },
},
{
id: 'cartellone', name: 'il cartellone della festa', box: [153, 122, 76, 31], at: [226, 262], face: 'up',
actions: { look: [{ say: 'La Smarronata del Gruppo Alpini di San Piero a Sieve: 16 e 17 ottobre.' }] },
},
{
id: 'tendone', name: 'il tendone giallo', box: [330, 146, 260, 86], at: [430, 244], face: 'up', default: 'walk',
actions: {
look: [{ say: 'Il tendone giallo, con le tavolate e le tovaglie verdi.' }],
walk: [{ walk: [430, 244] }, { go: 'smarronata_tendone', at: [320, 340], face: 'up' }],
open: [{ walk: [430, 244] }, { go: 'smarronata_tendone', at: [320, 340], face: 'up' }],
},
},
{
// La scaletta del terrazzino, in basso a sinistra: si risale alla strada, e alla macchina del tempo.
id: 'scaletta_1993', name: 'su, alla strada: si torna nel 2007', box: [0, 280, 110, 80], at: [250, 340], face: 'left', default: 'walk',
actions: { look: [{ say: 'Di lassù si torna alla strada del ponte, e alla macchina del tempo.' }], walk: RITORNO_1993, open: RITORNO_1993 },
},
{
id: 'stand_polenta', name: 'lo stand della polenta', box: [504, 175, 74, 80], at: [520, 262], face: 'up',
actions: { look: [{ say: 'La polenta degli alpini, tagliata col filo sul tagliere.' }], take: [{ say: 'Una fetta di polenta. Ci vorrebbe un po\' di sugo, ma va bene così.' }] },
},
{
id: 'stand_vino', name: 'lo stand del vino', box: [579, 158, 61, 104], at: [570, 262], face: 'right',
actions: {
look: [{ say: 'Il vino degli alpini, nelle damigiane impagliate. Sul cartello c\'era scritto «gratis».' }],
take: [{ say: 'Un bicchiere solo. Poi mi tocca guidare la macchina del tempo.' }],
},
},
{
id: 'ponte_1993', name: 'il ponte sulla Sieve', box: [14, 132, 186, 76], at: [150, 262], face: 'up',
actions: { look: [{ say: 'Il ponte sulla Sieve, visto da sotto. Di lassù, nel 2007, la macchina del tempo mi aspetta.' }] },
},
],
},
// Sotto il tendone giallo della Smarronata: le tavolate con le tovaglie verdi (Andrea, 31 ottobre; sfondo di Codex
// dal fotogramma del video del 1993). [DA ANDREA: le battute, e chi c'era a tavola]
smarronata_tendone: {
name: 'Il tendone della Smarronata, 1993',
viaggio: true,
back: { label: 'Torna al 2007', actions: RITORNO_1993 },
background: 'assets/scenes/smarronata-tendone.png',
indoor: true,
walk: [[0, 360], [0, 262], [150, 262], [165, 175], [215, 175], [225, 262], [400, 262], [640, 270], [640, 360]],
depth: [[175, 0.5], [360, 1.3]],
entry: [320, 340],
hotspots: [
{
id: 'tavolata', name: 'la tavolata', box: [218, 140, 182, 122], at: [320, 290], face: 'up',
actions: {
look: [{ say: 'Tovaglie verdi di carta, le tovagliette, l\'acqua e il vino. Fra poco qui non ci sarà un posto libero.' }],
use: [{ say: 'Mi siedo un attimo ad aspettare la polenta.' }, { say: '...Macché: sono le dieci e mezzo, la polenta arriva a mezzogiorno.' }],
},
},
{
id: 'bancone_tendone', name: 'il bancone', box: [330, 132, 170, 34], at: [300, 270], face: 'up',
actions: { look: [{ say: 'In fondo il bancone, coi piatti in pila e il vino. Da lì escono i vassoi.' }] },
},
{
id: 'tavole_sinistra', name: 'le tavole', box: [0, 140, 160, 112], at: [120, 290], face: 'left',
actions: { look: [{ say: 'Altre tavolate, apparecchiate fino in fondo. Gli alpini fanno le cose in grande.' }] },
},
{
id: 'tavole_destra', name: 'le tavole', box: [400, 140, 240, 128], at: [480, 300], face: 'right',
actions: { look: [{ say: 'Le sedie di legno, quelle pieghevoli che si chiudono sulle dita.' }] },
},
{
id: 'fuori_tendone', name: 'fuori, alla festa', box: [0, 336, 640, 24], at: [320, 354], default: 'walk',
actions: { walk: [{ go: 'smarronata_1993', at: [430, 250], face: 'down' }], open: [{ go: 'smarronata_1993', at: [430, 250], face: 'down' }] },
},
],
},
barrettino_1997: {
name: 'Il Barrettino, 10 luglio 1997',
// Ci si arriva solo con la macchina del tempo: niente mappa, niente strade (la porta riporta nel 2007).
viaggio: true,
// Il pulsante «Torna al 2007», sempre lì in alto: per uscire da quel tempo senza cercare la porta (Andrea, 29 ottobre).
back: { label: 'Torna al 2007', actions: RITORNO_2007 },
background: 'assets/scenes/barrettino-1997.png',
indoor: true,
walk: [[0, 360], [0, 300], [110, 282], [540, 282], [640, 300], [640, 360]],
depth: [[282, 2.1], [360, 2.6]],
entry: [320, 330],
enter: [{ if: '!visto_1997', then: [{ set: 'visto_1997' }, { say: 'Il Barrettino. Nel 1997. Si sente ancora l\'odore del caffè e delle sigarette.' }] }],
speakers: { vannino: [160, 120], pierino_parigi: [470, 120], arcu: [580, 130] },
people: [
{ who: 'vannino', at: [160, 300], facing: 1, size: 1, idle: 'stand', talk: ['talk', 'explain'], blink: 'blink', every: 4.1 },
{ who: 'pierino_parigi', at: [470, 300], facing: -1, size: 1, idle: 'cards', talk: ['talk', 'explain'], blink: 'blink', every: 3.6 },
// L'Arcu è venuto con me, a guardare la partita (Andrea, 29 ottobre). [DA ANDREA: le battute]
{ who: 'arcu', at: [585, 318], facing: -1, size: 1.05, idle: 'stand', talk: ['talk', 'explain'], blink: 'blink', every: 4.2 },
],
hotspots: [
{
id: 'tavola', name: 'la tavola da poker', box: [236, 186, 150, 70], at: [320, 300], face: 'up', default: 'talk',
actions: {
look: [{ say: 'Il panno verde, le fiches in pila, il mazzo e il posacenere pieno. Una sedia è vuota: è per me.' }],
talk: [{ dialogue: 'pokerino' }],
use: [{ dialogue: 'pokerino' }],
},
},
{
id: 'vannino', name: 'Vannino', box: [130, 160, 60, 140], at: [220, 320], face: 'left', default: 'talk',
actions: { look: [{ say: 'Vannino, alto e secco, col canovaccio sulla spalla. E quella fossetta nel mento.' }], talk: [{ dialogue: 'pokerino' }] },
},
{
id: 'pierino', name: 'Pierino', box: [440, 160, 60, 140], at: [410, 320], face: 'right', default: 'talk',
actions: { look: [{ say: 'Pierino Parigi, con gli occhiali sul naso, che guarda le carte come se lo tradissero.' }], talk: [{ dialogue: 'pokerino' }] },
},
{
id: 'arcu', name: 'l\'Arcu', box: [566, 170, 40, 150], at: [540, 320], face: 'right', default: 'talk',
actions: {
look: [{ say: 'L\'Arcu, venuto con me nel 1997. Guarda le carte di tutti e non dice nulla. Per ora.' }],
talk: [
{ say: 'Arcu, tu non giochi?' },
{ say: 'Io guardo. Chi guarda un perde mai.', who: 'arcu', pose: 'explain' },
{ say: 'E quando vuoi si torna: la macchina è fuori, basta dirlo.', who: 'arcu', pose: 'talk' },
],
},
},
{
id: 'televisore', name: 'televisore', box: [440, 20, 60, 50], at: [480, 300], face: 'up',
actions: { look: [{ say: 'Il televisore a tubo. È il 1997: niente smartphone, solo il televideo.' }] },
},
{
id: 'porta', name: 'la porta: si torna nel 2007', box: [70, 30, 70, 230], at: [120, 300], face: 'left', default: 'walk',
actions: {
look: [{ say: 'Fuori c\'è la sera del 1997. E parcheggiata lì, la macchina del tempo.' }],
walk: RITORNO_2007,
open: RITORNO_2007,
},
},
],
},
// L'ingresso della scuola, giù per la strada dalla salita di Villa Adami: dal cancello alle porte a vetri.
scuola: {
name: 'La scuola',
map: [14, 19],
background: 'assets/scenes/scuola.png',
// Il tricolore che sventola in cima all'asta.
effects: [{ type: 'birds', phase: ['pomeriggio', 'tramonto'], area: [150, 30, 400, 70] }, { type: 'clouds', area: [130, 10, 380, 100], count: 3 }, { type: 'flag', at: [122, 117], w: 13, h: 9, colors: ['#2f9a4a', '#f4f1e8', '#d2393a'] }],
walk: [[110, 360], [118, 226], [140, 222], [268, 220], [290, 232], [470, 330], [620, 300], [640, 300], [640, 360]],
depth: [[220, 0.42], [360, 1.32]],
entry: [300, 350],
hotspots: [
{
id: 'pino', name: 'pino', box: [222, 40, 120, 70], at: [250, 232], face: 'up',
actions: {
look: [{ say: 'Un pino a ombrello enorme. Alla ricreazione, tutti all\'ombra lì sotto. Sembra ieri.' }],
},
},
{
id: 'bandiere', name: 'bandiere', box: [110, 110, 170, 52], at: [200, 230], face: 'up',
actions: {
look: [{ say: 'Il tricolore e la bandiera europea. Almeno loro a scuola ci stanno volentieri.' }],
take: [{ say: 'Rubare una bandiera davanti alla scuola? Ci manca solo che mi richiamino in presidenza, a ventisette anni.' }],
},
},
{
id: 'porte', name: 'porte della scuola', box: [130, 164, 136, 56], at: [200, 230], face: 'up',
actions: {
look: [{ say: 'Le porte a vetri della scuola. Di là ci sono i banchi, la lavagna e la campanella.' }, { say: 'E fino a ieri c\'era anche il palio: lo tenevano qui. Stamani la Gianna ha trovato il posto vuoto.' }],
open: [{ say: 'Chiuse. E la Gianna stamani ha già guardato in ogni aula e in ogni armadio: qui il palio non c\'è più.' }, { say: 'Chi l\'ha preso è passato dal paese. In piazza qualcuno avrà visto qualcosa.' }],
walk: [{ say: 'Chiuse. E la Gianna stamani ha già guardato in ogni aula e in ogni armadio: qui il palio non c\'è più.' }, { say: 'Chi l\'ha preso è passato dal paese. In piazza qualcuno avrà visto qualcosa.' }],
},
},
{
id: 'palazzine', name: 'palazzine gialle', box: [340, 30, 300, 196], at: [330, 262], face: 'right',
actions: {
look: [{ say: 'Le palazzine gialle accanto alla scuola, con la scala arancione.' }, { say: 'Da lassù la ricreazione si vede tutta.' }],
},
},
{
id: 'al_bivio', name: 'a destra, verso la Provinciale', box: [584, 220, 56, 120], at: [600, 320], exit: { scene: 'bivio_provinciale', at: [208, 226], face: 'right' },
},
{
id: 'alla_salita', name: 'a sinistra, dal cancello verso Via Cafaggio', box: [0, 240, 130, 120], at: [128, 340], exit: { scene: 'via_cafaggio', at: [410, 246], face: 'down' },
},
],
},
// Il viale dei cipressi, la strada bianca tra la Fortezza e il Trebbio: in fondo c'è il castello.
viale_cipressi: {
name: 'Viale dei cipressi',
map: [60, 6],
background: 'assets/scenes/viale-cipressi.png',
effects: [{ type: 'clouds', area: [230, 10, 140, 120], count: 2 }, { type: 'sway', rects: [[322, 58, 30, 150], [346, 8, 32, 190], [312, 108, 18, 110], [244, 118, 26, 100]] }],
walk: [[30, 360], [200, 300], [288, 252], [312, 250], [420, 300], [600, 360]],
depth: [[250, 0.16], [360, 1.2]],
entry: [300, 350],
hotspots: [
{
id: 'cipressi', name: 'cipressi', box: [440, 0, 200, 270], at: [400, 300], face: 'right',
actions: {
look: [{ say: 'I cipressi in fila, dritti come soldatini. Da piccolo li contavo. Non sono mai arrivato in fondo.' }],
take: [{ say: 'Un cipresso in tasca? Neanche nei sogni.' }],
},
},
{
id: 'al_trebbio', name: 'in fondo, verso il Trebbio', box: [262, 214, 76, 50], at: [300, 256], exit: { scene: 'trebbio', at: [110, 345], face: 'right' },
},
{
id: 'alla_fortezza', name: 'indietro, verso la casa del maestro Bacci', box: [0, 330, 640, 30], at: [300, 352], exit: { scene: 'salita_cipressi', at: [316, 196], face: 'down' },
},
],
},
trebbio: {
name: 'Castello del Trebbio',
map: [84, 6],
background: 'assets/scenes/trebbio.png',
effects: [{ type: 'clouds', area: [180, 0, 460, 110], count: 3, big: true }, { type: 'sway', rects: [[237, 140, 20, 60], [165, 160, 20, 48], [305, 132, 14, 30], [560, 120, 22, 80], [600, 120, 20, 80], [620, 100, 20, 100], [530, 160, 20, 40]] }, { type: 'fireflies', phase: 'sera', area: [80, 290, 440, 60], count: 10 }, { type: 'birds', phase: ['pomeriggio', 'tramonto'], area: [200, 30, 400, 80] }],
music: 'assets/audio/ricordi.mp3',
walk: [[86, 308], [300, 306], [356, 308], [470, 312], [500, 324], [486, 360], [88, 360], [80, 330]],
depth: [[306, 0.75], [360, 1.05]],
entry: [110, 345],
// Lo spirito del castello, lo scrivano dei Medici (disegnato da Codex, scelto da Andrea il 24 ottobre): compare quando parla.
speakers: { castello: [446, 178] },
apparitions: [{ who: 'castello', src: 'assets/characters/spirito-trebbio-scriba.png', at: [446, 304], height: 120 }],
enter: [{ if: '!trebbio_visto', then: [{ set: 'trebbio_visto' }, { say: 'Il Trebbio. Quassù anche i pensieri vanno più piano.' }] }],
hotspots: [
{
id: 'torre', name: 'torre del castello', box: [345, 26, 88, 196], at: [330, 312], face: 'up', default: 'talk',
with: {
torcia: [{ say: 'Luce? In seicento anni ne ho vista tanta. Tienila per il buio, che quello non manca mai.', who: 'castello' }],
},
give: {
squama: [{ say: 'Non a me. Portala vicino a chi l\'ha persa: le cose parlano solo dove sono cadute.', who: 'castello' }],
},
actions: {
look: [{ say: 'La torre del Trebbio. Da ragazzo ci si rifugiò Amerigo Vespucci, per scappare dalla peste di Firenze.' }, { say: 'Poi ha trovato l\'America. Anche lui partendo da un posto tranquillo.' }],
talk: [{ dialogue: 'castello' }],
open: [{ say: 'È un castello, mica una scatola di biscotti.' }],
},
},
{
id: 'pergolato', name: 'pergolato', box: [278, 222, 122, 52], at: [328, 312], face: 'up',
actions: {
look: [{ say: 'Il pergolato, coi suoi pilastri. Un giorno li conto tutti.' }],
take: [{ say: 'Una vite? Ci vuole la vendemmia, non uno con le mani in tasca.' }],
},
},
{
id: 'scalinata', name: 'scalinata', box: [304, 276, 50, 32], at: [328, 312], face: 'up',
actions: {
look: [{ say: 'La scala che sale al pergolato.' }],
use: [{ say: 'Più tardi salgo. Per ora mi godo il silenzio.' }],
},
},
{
id: 'verso_fortezza', name: 'viale dei cipressi, verso la Fortezza', box: [0, 250, 110, 110], at: [92, 345], exit: { scene: 'viale_cipressi', at: [300, 256], face: 'down' },
},
],
},
},
dialogues: {
// Andrea parla alla Ghiacciomobile (battute di Andrea, 26 ottobre): la macchina resta zitta, e va bene così.
ghiacciomobile: {
nodes: {
start: { options: [
// La scelta la dice già Andrea (game.choose): dopo, solo il silenzio della macchina.
{ text: 'Mi ricordi come avete fatto quella volta a tornare illesi dopo aver lasciato una fiancata a Campolungo?', then: [{ say: '...' }] },
{ text: 'Ho sentito dire dal Trappola che pensavi di poter attraversare i muri.', say: 'Ho sentito dire dal Trappola che pensavi di poter attraversare i muri. Ti stimo tanto.', then: [{ say: '...' }] },
{ text: 'Riposa, Ghiacciomobile.', next: 'end' },
] },
},
},
giocatore_carte: {
nodes: {
start: { options: [
{ text: 'Una briscola?', when: '!briscola_giocata', next: 'mazzo', then: [{ say: 'Gnamo. In due, senza soci e senza scuse.', who: 'giocatore_carte', pose: 'shuffle' }] },
{ text: 'Rivincita a briscola?', when: 'briscola_giocata', next: 'mazzo', then: [{ say: 'Il tavolo è qui. Il coraggio ce lo metti te.', who: 'giocatore_carte', pose: 'laugh' }] },
{ text: 'Una scopa?', next: 'mazzo_scopa', then: [{ say: 'Ai undici. E occhio al settebello: quello è sempre mio.', who: 'giocatore_carte', pose: 'shuffle' }] },
{ text: 'Un tressette ai 21?', next: 'mazzo_tressette', then: [{ say: 'Ci vuole quattro: chiamo quei due che giocano qui dietro. Uno ti fa da socio.', who: 'giocatore_carte', pose: 'talk' }] },
{ text: 'Ora cerco il palio. A dopo.', next: 'end' },
] },
// Il mazzo (idea di Andrea): le toscane di casa, o le napoletane. Stesse regole, cambiano i disegni.
mazzo: { options: [
{ text: 'Con le toscane.', next: 'livello', then: [{ unset: 'carte_napoletane' }, { say: 'Brao. Gobbo, donna e regio, come Dio comanda. Come la vuoi?', who: 'giocatore_carte' }] },
{ text: 'Con le napoletane.', next: 'livello', then: [{ set: 'carte_napoletane' }, { say: 'Le napoletane? Le tengo per i villeggianti. Come la vuoi?', who: 'giocatore_carte', pose: 'shuffle' }] },
{ text: 'Ci ripenso.', next: 'end' },
] },
livello: { options: [
{ text: 'Alla bona.', next: 'end', then: [{ say: 'Alla bona. I carichi li regalo, oggi.', who: 'giocatore_carte' }, { closeup: 'briscola', level: 'bona' }] },
{ text: 'Seria.', next: 'end', then: [{ say: 'Allora posa il gomito e guarda le carte.', who: 'giocatore_carte' }, { closeup: 'briscola', level: 'seria' }] },
{ text: 'A fassi male.', next: 'end', then: [{ say: 'Io le conto tutte. Anche quelle che butti via per sbaglio.', who: 'giocatore_carte', pose: 'shuffle' }, { closeup: 'briscola', level: 'male' }] },
{ text: 'Ci ripenso.', next: 'end' },
] },
// La scopa: stesse scelte (e stesse battute) della briscola.
mazzo_scopa: { options: [
{ text: 'Con le toscane.', next: 'livello_scopa', then: [{ unset: 'carte_napoletane' }, { say: 'Brao. Gobbo, donna e regio, come Dio comanda. Come la vuoi?', who: 'giocatore_carte' }] },
{ text: 'Con le napoletane.', next: 'livello_scopa', then: [{ set: 'carte_napoletane' }, { say: 'Le napoletane? Le tengo per i villeggianti. Come la vuoi?', who: 'giocatore_carte', pose: 'shuffle' }] },
{ text: 'Ci ripenso.', next: 'end' },
] },
livello_scopa: { options: [
{ text: 'Alla bona.', next: 'end', then: [{ say: 'Alla bona. I carichi li regalo, oggi.', who: 'giocatore_carte' }, { closeup: 'scopa', level: 'bona' }] },
{ text: 'Seria.', next: 'end', then: [{ say: 'Allora posa il gomito e guarda le carte.', who: 'giocatore_carte' }, { closeup: 'scopa', level: 'seria' }] },
{ text: 'A fassi male.', next: 'end', then: [{ say: 'Io le conto tutte. Anche quelle che butti via per sbaglio.', who: 'giocatore_carte', pose: 'shuffle' }, { closeup: 'scopa', level: 'male' }] },
{ text: 'Ci ripenso.', next: 'end' },
] },
// Il tressette: stesse scelte (e stesse battute) della briscola, poi il tavolo in quattro.
mazzo_tressette: { options: [
{ text: 'Con le toscane.', next: 'livello_tressette', then: [{ unset: 'carte_napoletane' }, { say: 'Brao. Gobbo, donna e regio, come Dio comanda. Come la vuoi?', who: 'giocatore_carte' }] },
{ text: 'Con le napoletane.', next: 'livello_tressette', then: [{ set: 'carte_napoletane' }, { say: 'Le napoletane? Le tengo per i villeggianti. Come la vuoi?', who: 'giocatore_carte', pose: 'shuffle' }] },
{ text: 'Ci ripenso.', next: 'end' },
] },
livello_tressette: { options: [
{ text: 'Alla bona.', next: 'end', then: [{ say: 'Alla bona. I carichi li regalo, oggi.', who: 'giocatore_carte' }, { closeup: 'tressette', level: 'bona' }] },
{ text: 'Seria.', next: 'end', then: [{ say: 'Allora posa il gomito e guarda le carte.', who: 'giocatore_carte' }, { closeup: 'tressette', level: 'seria' }] },
{ text: 'A fassi male.', next: 'end', then: [{ say: 'Io le conto tutte. Anche quelle che butti via per sbaglio.', who: 'giocatore_carte', pose: 'shuffle' }, { closeup: 'tressette', level: 'male' }] },
{ text: 'Ci ripenso.', next: 'end' },
] },
},
},
// Il chiosco della Tosca: le bibite si bevono subito; ghiacciolo e cedrata si portano via (una volta per tipo).
tosca: {
nodes: {
start: {
options: [
{ text: 'Una Fanta.', when: '!has:fanta', then: [{ say: 'Eccola, ghiacciata.', who: 'tosca' }, { give: 'fanta' }] },
{ text: 'Una Coca.', when: '!has:coca', then: [{ say: 'Tieni, col vetro appannato.', who: 'tosca' }, { give: 'coca' }] },
{ text: 'Una spuma bionda.', when: '!has:spuma', then: [{ say: 'La spuma bionda! Ormai la chiedono solo i nonni.', who: 'tosca' }, { give: 'spuma' }] },
{ text: 'Una cedrata, da portare via.', when: ['!has:cedrata', '!stecco_fatto'], then: [{ say: 'Cedrata. Bella fresca.', who: 'tosca' }, { give: 'cedrata' }] },
{ text: 'Un ghiacciolo al limone.', when: ['!has:ghiacciolo', '!stecco_fatto'], then: [{ say: 'Al limone, l\'ultimo della cassetta.', who: 'tosca' }, { give: 'ghiacciolo' }] },
{
id: 'tosca_voci', once: true, when: 'indizio_regolo', text: 'Tosca, cosa si dice in giro?',
then: [
{ say: 'Che sei andato sotto la Fortezza da solo. Il paese parla, Andrea.', who: 'tosca' },
{ say: 'Prenditi una cedrata, che le chiacchiere mettono sete.', who: 'tosca' },
],
},
{ text: 'Niente, grazie Tosca.', next: 'end', then: [{ say: 'Quando ti viene sete, sai dove trovarmi.', who: 'tosca' }] },
],
},
},
},
// L'indovinello di San Pietro sul fonte battesimale robbiano della Pieve: la risposta è sul cartellino del fonte.
indovinello: {
nodes: {
start: {
options: [
{ text: 'Luca della Robbia.', then: [{ say: 'Così si è detto per secoli. E per secoli si è sbagliato. Entra e leggi bene.', who: 'san_pietro' }] },
{ text: 'Andrea della Robbia.', then: [{ say: 'Il babbo? Ci sei quasi. Ma la bottega, nel 1518, la mandava avanti un altro.', who: 'san_pietro' }] },
{
text: 'Giovanni della Robbia.', next: 'end',
then: [
{ say: 'Bravo! Giovanni della Robbia, nel 1518. Hai letto il cartellino, eh?', who: 'san_pietro' },
{ say: 'Eccoti la chiave dell\'oratorio. Trattala bene: è più vecchia di tuo nonno.', who: 'san_pietro' },
{ give: 'chiave_oratorio' }, { set: 'chiave_data' },
{ say: 'Grazie, San Pietro!' },
],
},
{ text: 'Michelangelo.', then: [{ say: 'Michelangelo? Quello aveva altro da fare. Prova con qualcuno che lavorava la terracotta.', who: 'san_pietro' }] },
{ text: 'Ci penso e torno.', next: 'end', then: [{ say: 'Le chiavi non scappano. E io nemmeno. Il fonte è lì dentro, se vuoi dare un\'occhiata.', who: 'san_pietro' }] },
],
},
},
},
vecchietti: {
nodes: {
start: {
options: [
{
text: 'Avete visto chi ha preso il palio?',
then: [
{ say: 'È stato il Regolo! Quello che cadde dal cielo quando scavavano le fondamenta.', who: 'vecchietta' },
{ say: 'Macché cielo! Mangiava le bestie, e lo presero i soldati di Napoleone.', who: 'vecchietto', pose: 'point' },
{ say: 'Napoleone? A San Piero? Ma se un c\'è mai venuto!', who: 'vecchietta', pose: 'point' },
{ say: 'E il Regolo sì?', who: 'vecchietto', pose: 'shrug' },
],
},
{
id: 'stanotte', once: true, text: 'Avete notato niente di strano stanotte?',
then: [
{ say: 'Io dormivo. Alla mia età si dorme anche in piedi.', who: 'vecchietto', pose: 'doze' },
{ say: 'Io stamani ho visto luccicare qualcosa sotto la panchina.', who: 'vecchietta' },
{ say: 'Ma con la mia schiena, chi ci si china?', who: 'vecchietta', pose: 'look_down' },
{ set: 'luccichio' },
],
},
{
text: 'Come vi sembra il Palio di quest\'anno?',
then: [
{ say: 'Senza il palio? Una festa così non s\'è mai vista.', who: 'vecchietto', pose: 'shrug' },
{ say: 'Nel mio, di Palio, si correva con le carriole vere. Mica come voi.', who: 'vecchietta' },
],
},
// Il pettegolezzo cambia con le scoperte di Andrea (consiglio di Codex, 25 ottobre).
{
id: 'news_squama', once: true, when: 'squama_presa', text: 'Ho trovato una squama, sotto la panchina.',
then: [
{ say: 'L\'avevo detto io, che luccicava!', who: 'vecchietta', pose: 'point' },
{ say: 'Una squama a maggio? Allora il Regolo fa la muta, come le bisce.', who: 'vecchietto' },
{ say: 'O l\'ha persa uno della sfilata, col costume. Che ne sai.', who: 'vecchietta', pose: 'arms_crossed' },
],
},
{
id: 'news_impronte', once: true, when: 'indizio_regolo', text: 'Sotto la Fortezza ci sono impronte, e vanno verso il bastione.',
then: [
{ say: 'Lo sapevo. Stanotte ho sentito raspare, dalla parte della Fortezza.', who: 'vecchietto', pose: 'point' },
{ say: 'Tu stanotte dormivi. L\'hai detto tu.', who: 'vecchietta' },
{ say: 'Si può dormire e sentire. Alla mia età si fa tutto insieme.', who: 'vecchietto', pose: 'shrug' },
],
},
{
id: 'news_torcia', once: true, when: 'casetta_aperta', text: 'Ho una torcia. Stasera salgo alla Fortezza.',
then: [
{ say: 'Di sera? Lassù? Allora salutaci il Regolo.', who: 'vecchietto', pose: 'doze' },
{ say: 'E se ti mangia, almeno la festa ha un argomento.', who: 'vecchietta', pose: 'laugh' },
{ say: 'Grazie dell\'incoraggiamento.' },
],
},
{ text: 'Ci vediamo dopo.', next: 'end', then: [{ say: 'Salutaci i tuoi!', who: 'vecchietta' }, { say: 'E se ti perdi, sali al Trebbio e chiedi alla torre. Ne sa più di noi due messi insieme.', who: 'vecchietto' }] },
],
},
},
},
// Il BaronDeDuke nella discesa verso la polisportiva: le mutande perse a poker, e il Muro del Sanpierino sul
// telefonino (Andrea, 31 ottobre: lui è il webmaster di sanpiero50037.it).
barondeduke: {
nodes: {
start: { options: [
{ text: 'Barone! Che ci fai qui?', then: [
{ say: 'Aspetto uno che mi deve riportare le mutande.', who: 'barondeduke' },
{ say: 'Le... mutande?' },
{ say: 'Le ho perse a poker, ieri sera.', who: 'barondeduke', pose: 'facepalm' },
{ say: 'Avevo due donne e due jack. Entra la terza donna, e penso: «Male male si divide».', who: 'barondeduke', pose: 'cards' },
{ say: 'E invece?' },
{ say: 'L\'altro aveva colore.', who: 'barondeduke', pose: 'shrug' },
] },
// [DA ANDREA: le battute sono provvisorie]
{ text: 'Hai visto cosa c\'era sul muro del Sanpierino?', next: 'end', then: [
{ say: 'Il muro? Aspetta, ce l\'ho qui sul telefonino.', who: 'barondeduke', pose: 'explain' },
{ closeup: 'muro_sanpierino' },
] },
{ text: 'Ci vediamo, Barone.', next: 'end' },
] },
},
},
// L'Arcu davanti al circolino (battute di Andrea, 25 ottobre). Lavora alla Casa dell'Armadio: «Armando» è apposta.
arcu: {
nodes: {
start: {
options: [
{ text: 'Ma che è sempre là, Borgo?', then: [{ say: 'E chi lo sposta???', who: 'arcu', pose: 'shrug' }] },
{ text: 'Come va alla Casa dell\'Armando?', then: [{ say: 'Mah... un si fa una sega...', who: 'arcu', pose: 'explain' }] },
// Anche l'Arcu segue le scoperte di Andrea.
{
id: 'arcu_squama', once: true, when: 'squama_presa', text: 'Ho trovato una squama del Regolo.',
then: [
{ say: 'Fammi vedere... Verde. Come la Panda di mi\' zio.', who: 'arcu', pose: 'laugh' },
{ say: 'Verde! Allora il Regolo tifa Cardetole. Tradimento.', who: 'arcu', pose: 'point' },
],
},
{
id: 'arcu_impronte', once: true, when: 'indizio_regolo', text: 'Sotto la Fortezza ci sono le sue impronte.',
then: [
{ say: 'E te ci vai da solo? Io ti aspetto qui.', who: 'arcu', pose: 'shrug' },
{ say: 'Qualcuno deve raccontarlo, dopo.', who: 'arcu', pose: 'explain' },
],
},
{
id: 'arcu_torcia', once: true, when: 'casetta_aperta', text: 'Ho la torcia. Stasera entro nella fessura.',
then: [
{ say: 'Fai una cosa: se vedi due occhi gialli, un sono i fari della Provinciale.', who: 'arcu', pose: 'explain' },
{ say: 'Grazie, Arcu. Molto utile.' },
],
},
{
text: 'Cosa stavamo dicendo???',
then: [
{ say: '.............', who: 'arcu' },
{ say: 'Ma ti si è bruciata la memoria, fratello???!?' },
{ say: '...I pompieri per cosa?', who: 'arcu', pose: 'shrug' },
],
},
{ text: 'S\'ha andà a fallo!?!?', then: [{ say: 'Gnamo! Ma prima mi fo una segarettina di quelle mi fo io!', who: 'arcu', pose: 'laugh' }] },
{ text: 'Ci si becca da i\' Trappola, ai\' Barrettino!', next: 'end' },
],
},
},
},
// Mariano al pallaio: una mano a bocce, solo per gloria; se Andrea vince, la promessa di Brento Sanico.
// I ragazzi delle canne: «S'ha andà a fallo?!?» (Andrea, 28 ottobre) e si va a pescare.
pescatori: {
nodes: {
start: {
options: [
{ text: 'S\'ha andà a fallo?!?', next: 'livello', then: [
{ say: 'Gnamo! La canna ti si dà noi.', who: 'pescatori', pose: 'laugh' },
{ say: 'Come peschi?', who: 'pescatori', pose: 'talk' },
] },
{ text: 'Quanti ne prendete, di solito?', then: [{ say: 'Dipende da chi racconta. Il Nanni dice dieci, il cestino dice due.', who: 'pescatori', pose: 'laugh' }] },
{ text: 'Buona pesca, ragazzi.', next: 'end', then: [{ say: 'Se vedi il palio, salutacelo!', who: 'pescatori', pose: 'talk' }] },
],
},
livello: {
options: [
{ text: 'Alla bona, tanto per bagnare la lenza.', next: 'end', then: [{ say: 'Alla bona. Due pesci e si va a casa contenti.', who: 'pescatori' }, { closeup: 'pesca', level: 'bona' }] },
{ text: 'Seria.', next: 'end', then: [{ say: 'Seria: tre pesci, e lo stivale non conta.', who: 'pescatori', pose: 'proud' }, { closeup: 'pesca', level: 'seria' }] },
{ text: 'A fassi male.', next: 'end', then: [{ say: 'A fassi male? Quattro pesci, e le carpe tirano come trattori.', who: 'pescatori', pose: 'laugh' }, { closeup: 'pesca', level: 'male' }] },
],
},
},
},
// L'Arcu dal Trappola (Andrea, 28 ottobre): lo scherzo sulla velocità del Betino, poi la sfida: «il giro della Fortezza» (Andrea), cioè il GP di Fortezza;
// prima del via prende la rincorsa per accenderlo in discesa. [DA ANDREA: le battute sono provvisorie]
arcu_trappola: {
nodes: {
start: {
options: [
{ text: 'Ma ti ho visto du\' minuti fa a Campomigliaio!', then: [
{ say: 'E allora? Col Betino ci metto un attimo.', who: 'arcu', pose: 'explain' },
{ say: 'In discesa.', who: 'arcu', pose: 'laugh' },
{ say: 'E in salita?' },
{ say: 'In salita si spinge.', who: 'arcu', pose: 'shrug' },
] },
{ text: 'Si fa una gara coi motorini? Il giro della Fortezza!', next: 'gara', then: [
{ say: 'Col Betino? Io un perdo mai: un vo mai forte abbastanza da cadere.', who: 'arcu', pose: 'explain' },
{ say: 'Come la si fa?', who: 'arcu', pose: 'talk' },
] },
// I pokerini da Vannino: l'Arcu fa comparire la macchina del tempo (Andrea, 29 ottobre). [DA ANDREA: le battute dell'Arcu]
{ text: 'Bei tempi quando qui si faceva i pokerini...', next: 'end', then: [
{ if: 'macchina_trappola', then: [{ say: 'La macchina è sempre lì. La data è già impostata.', who: 'arcu', pose: 'explain' }], else: [
{ say: 'I pokerini da Vannino, col Pierino che bluffava anche a briscola.', who: 'arcu', pose: 'laugh' },
{ say: 'Ci vuoi tornare? Aspetta.', who: 'arcu', pose: 'explain' },
{ set: 'macchina_trappola' },
{ say: 'Ma quella è... la macchina del tempo!' },
// Andrea, 29 ottobre.
{ say: 'Il plutonio l\'ho trovato da Alvarino. Per un pelo stavano arrivando i Libici a prenderglielo tutto.', who: 'arcu', pose: 'talk' },
{ say: 'Basta salire e mettere la data.', who: 'arcu', pose: 'explain' },
] },
] },
{ text: 'Ci si vede dopo, Arcu.', next: 'end' },
],
},
gara: {
options: [
{ text: 'Alla bona, un giro di paese.', next: 'end', then: [{ say: 'Alla bona. Chi arriva ultimo paga le paste.', who: 'arcu', pose: 'laugh' }, ...rincorsa('bona')] },
{ text: 'Seria.', next: 'end', then: [{ say: 'Seria. Tre giri, e la paglia in curva è vera.', who: 'arcu', pose: 'explain' }, ...rincorsa('seria')] },
{ text: 'Ginocchio in terra.', next: 'end', then: [{ say: 'Ginocchio in terra? Puntella un vede l\'ora.', who: 'arcu', pose: 'shrug' }, ...rincorsa('male')] },
{ text: 'No, lascia perdere.', next: 'start' },
],
},
},
},
// Da solo al campo del Circolo: Andrea decide quanto farsi male.
basket: {
nodes: {
start: {
options: [
{ text: 'Due tiri alla bona, tanto per scaldarmi.', next: 'end', then: [{ say: 'Tre su dieci e sono contento.' }, { closeup: 'basket', level: 'bona' }] },
{ text: 'Due tiri seri.', next: 'end', then: [{ say: 'Cinque su dieci. Come ai tempi del Circolino.' }, { closeup: 'basket', level: 'seria' }] },
{ text: 'A fassi male.', next: 'end', then: [{ say: 'Sette su dieci, senza guardare la parabola. Vediamo chi sono.' }, { closeup: 'basket', level: 'male' }] },
{ text: 'Lascia stare, ho il palio da trovare.', next: 'end' },
],
},
},
},
mariano: {
nodes: {
start: {
options: [
{
text: 'Mariano! Facciamo una partita a bocce?', when: '!bocce_vinte', next: 'livello',
then: [
{ say: 'Con me? Al pallaio sono il campione.', who: 'mariano', pose: 'explain' },
{ say: 'Facciamo così: se mi batti, ti porto a Brento Sanico.', who: 'mariano' },
{ say: 'Come la vuoi?', who: 'mariano' },
],
},
{ text: 'La rivincita?', when: 'bocce_vinte', next: 'livello', then: [{ say: 'Il campione non scappa. Come la vuoi?', who: 'mariano', pose: 'throw' }] },
{ text: 'Allora, Brento Sanico?', when: 'bocce_vinte', then: [{ say: 'Promesso: ti ci porto. Ma prima ritrova il palio, che senza festa non si parte.', who: 'mariano', pose: 'explain' }] },
{ text: 'Ciao Mariano.', next: 'end' },
],
},
// La difficoltà (Andrea, 25 ottobre): quanto si impegna Mariano.
livello: {
options: [
{ text: 'Alla bona.', next: 'end', then: [{ say: 'Alla bona: tiro con gli occhi chiusi.', who: 'mariano', pose: 'laugh' }, { closeup: 'bocce', level: 'bona' }] },
{ text: 'Seria.', next: 'end', then: [{ say: 'Seria. Così mi piace.', who: 'mariano' }, { closeup: 'bocce', level: 'seria' }] },
{ text: 'A fassi male.', next: 'end', then: [{ say: 'A fassi male? Poi non piangere, eh.', who: 'mariano', pose: 'cheer' }, { closeup: 'bocce', level: 'male' }] },
],
},
},
},
// Da Pierin di Frilli: la cerbottana e lo stucco verde, poi il muro della piazza (Andrea, 29 ottobre).
pierin: {
nodes: {
start: {
options: [
{ text: 'Una cerbottana e un po\' di stucco, Pierino!', next: 'livello', then: [
{ say: 'Lo stucco verde di Pierino: quell\'odore non te lo levi più dalle dita.' },
{ say: 'Ora un muro. Quello della piazza va benissimo.' },
] },
{ text: 'Niente, grazie: guardavo.', next: 'end' },
],
},
livello: {
options: [
{ text: 'Alla bona.', next: 'end', then: [{ closeup: 'cerbottana', level: 'bona' }] },
{ text: 'Seria.', next: 'end', then: [{ closeup: 'cerbottana', level: 'seria' }] },
{ text: 'A fassi male.', next: 'end', then: [{ closeup: 'cerbottana', level: 'male' }] },
{ text: 'No, dopo.', next: 'end' },
],
},
},
},
// Al Barrettino del 1997: il pokerino con Vannino e Pierino. [DA ANDREA: le battute]
pokerino: {
nodes: {
start: {
options: [
{ text: 'C\'è posto per uno?', next: 'livello', then: [
{ say: 'La sedia è lì. Invito due, punto cinque. Come la vuoi?', who: 'vannino', pose: 'explain' },
] },
{ text: 'Vannino, un caffè?', then: [{ say: 'Subito. Ma prima una mano, sennò che ci fai qui?', who: 'vannino', pose: 'talk' }] },
{ text: 'Pierino, come va la mano?', then: [{ say: 'Bene. O male. Con me un si sa mai, ed è questo il bello.', who: 'pierino_parigi', pose: 'laugh' }] },
{ text: 'Dopo.', next: 'end' },
],
},
livello: {
options: [
{ text: 'Alla bona.', next: 'end', then: [{ say: 'Alla bona: si gioca per il caffè.', who: 'pierino_parigi', pose: 'talk' }, { closeup: 'poker', level: 'bona' }] },
{ text: 'Seria.', next: 'end', then: [{ say: 'Seria. Carte, Vannino.', who: 'pierino_parigi', pose: 'cards' }, { closeup: 'poker', level: 'seria' }] },
{ text: 'A fassi male.', next: 'end', then: [{ say: 'A fassi male? Allora io bluffo.', who: 'pierino_parigi', pose: 'laugh' }, { closeup: 'poker', level: 'male' }] },
{ text: 'No, aspetta.', next: 'start' },
],
},
},
},
// Il Taglia al campone delle poste, con la Condor (Andrea, 29 ottobre). [DA ANDREA: battute provvisorie]
// Baldoria al campo sportivo. [DA ANDREA: le battute sono provvisorie]
baldoria: {
nodes: {
start: {
options: [
{ text: 'Baldoria! Ma che ci fai col bandierone al campo?', then: [
{ say: 'Mi alleno. Il bandierone va sventolato tutti i giorni, sennò si arrugginisce il braccio.', who: 'baldoria', pose: 'explain' },
{ say: 'Forza Doria!', who: 'baldoria', pose: 'wave' },
] },
{ text: 'Guarda che qui la Sampdoria non ci gioca.', then: [
{ say: 'La Samp gioca dovunque ci sia un blucerchiato. E oggi ci sono io.', who: 'baldoria', pose: 'cheer' },
] },
{ text: 'Hai visto passare il palio, per caso?', then: [
{ say: 'L\'unico palio che conosco è blu, bianco, rosso e nero. E ce l\'ho in mano.', who: 'baldoria', pose: 'laugh' },
] },
{ text: 'Ciao, Baldoria.', next: 'end' },
],
},
},
},
taglia: {
nodes: {
start: {
options: [
{ text: 'Taglia! Si fa una gara con la Condor?', next: 'livello', then: [
{ say: 'Io ho già tirato: ora tocca a te. Dodici pallini gialli, e devi fare più di me.', who: 'taglia', pose: 'explain' },
{ say: 'Come la vuoi?', who: 'taglia', pose: 'talk' },
] },
{ text: 'A cosa si tira?', then: [
{ say: 'Il cartone sull\'albero, le lattine sulla panchina, le bottigliette sulla porta e il palloncino all\'altalena.', who: 'taglia', pose: 'explain' },
{ say: 'E se la vuoi seria, ogni tanto ti tiro una lattina in aria.', who: 'taglia', pose: 'laugh' },
] },
{ text: 'E una partita a campana, Taglia?', next: 'campana', then: [
{ say: 'A campana? Alla nostra età?', who: 'taglia', pose: 'laugh' },
{ say: 'Va bene: il gesso ce l\'ho in tasca, il sassolino lo scelgo io. Sul vialetto, dalla 1 alla 8, e chi pesta la riga passa la mano.', who: 'taglia', pose: 'explain' },
] },
{ text: 'Ci si vede, Taglia.', next: 'end' },
],
},
livello: {
options: [
{ text: 'Alla bona.', next: 'end', then: [{ say: 'Alla bona: ti faccio vedere dove arriva il pallino.', who: 'taglia', pose: 'talk' }, { closeup: 'condor', level: 'bona' }] },
{ text: 'Seria.', next: 'end', then: [{ say: 'Seria. Occhio alla lattina in aria.', who: 'taglia', pose: 'explain' }, { closeup: 'condor', level: 'seria' }] },
{ text: 'A fassi male.', next: 'end', then: [{ say: 'A fassi male? Allora tiro più forte, e più spesso.', who: 'taglia', pose: 'laugh' }, { closeup: 'condor', level: 'male' }] },
{ text: 'No, dopo.', next: 'start' },
],
},
campana: {
options: [
{ text: 'Alla bona.', next: 'end', then: [{ say: 'Alla bona: le righe un contano. Comincia te.', who: 'taglia', pose: 'talk' }, { closeup: 'campana', level: 'bona' }] },
{ text: 'Seria.', next: 'end', then: [{ say: 'Seria: chi tocca la riga è fuori. Comincia te.', who: 'taglia', pose: 'explain' }, { closeup: 'campana', level: 'seria' }] },
{ text: 'A fassi male.', next: 'end', then: [{ say: 'A fassi male? Io la campana la facevo a occhi chiusi.', who: 'taglia', pose: 'laugh' }, { closeup: 'campana', level: 'male' }] },
{ text: 'No, dopo.', next: 'start' },
],
},
},
},
// Il Chiaru al parcheggio di Cardetole, accanto alla pista col gesso (Andrea, 29 ottobre). [DA ANDREA: battute provvisorie]
chiaru: {
nodes: {
start: {
options: [
{ text: 'Si fa una gara alle macchinine?!?!', next: 'livello', then: [{ say: 'Un giro, una spinta a testa, prima te. Tutta fuori dal gesso, si torna indietro. Come la vuoi?', who: 'chiaru', pose: 'explain' }] },
{ text: 'Che pista hai disegnato?', then: [
{ say: 'Rettilineo, curvone, rettilineo, e in fondo la esse. Nella esse chi ha fretta esce.', who: 'chiaru', pose: 'explain' },
{ say: 'Il tombino l\'ho lasciato in pista: porta fortuna.', who: 'chiaru', pose: 'talk' },
] },
// I nomi alla francese delle penalità (Andrea, 29 ottobre): per tutte si torna indietro.
{ text: 'Le regole sono quelle solite?', then: [
{ say: 'Le solite. Chi accompagna la macchinina col dito: accompagnè.', who: 'chiaru', pose: 'explain' },
{ say: 'Chi taglia la strada: tagliè. Chi si ribalta: cappottè. E chi esce tutto dal gesso, fuori.', who: 'chiaru', pose: 'talk' },
{ say: 'In tutti i casi, si torna dov\'eri prima.', who: 'chiaru', pose: 'shrug' },
] },
// Il saluto (Andrea, 29 ottobre).
{ text: 'Vado a fare un girino alle case rosse.', next: 'end', then: [{ say: 'Vorrai dire un giochino!', who: 'chiaru', pose: 'laugh' }, { say: 'Ciao Mattè.' }] },
],
},
livello: {
options: [
{ text: 'Alla bona.', next: 'end', then: [{ say: 'Alla bona: ti faccio vedere dove si ferma. E io vado piano.', who: 'chiaru', pose: 'talk' }, { closeup: 'micro', level: 'bona' }] },
{ text: 'Seria.', next: 'end', then: [{ say: 'Seria. Così mi piace.', who: 'chiaru', pose: 'explain' }, { closeup: 'micro', level: 'seria' }] },
{ text: 'A fassi male.', next: 'end', then: [{ say: 'A fassi male. Poi non piangere.', who: 'chiaru', pose: 'laugh' }, { closeup: 'micro', level: 'male' }] },
{ text: 'No, aspetta.', next: 'start', then: [{ say: 'Io intanto ripasso il gesso.', who: 'chiaru', pose: 'stand' }] },
],
},
},
},
// Trappizzio Berti al tavolo di mezzo: le biglie nascoste e «Oh tirami questo rinquarto!?» (Andrea, 28 ottobre).
// [DA ANDREA: le battute sono provvisorie, tranne la sua sfida]
// Andrea, parlandogli, lo chiama Fabri (29 ottobre).
bertovo: {
nodes: {
start: {
options: [
{ text: 'Fabri! Che fai, giochi da solo?', then: [
{ say: 'Da solo? Io gioco contro le sponde. E vinco quasi sempre.', who: 'bertovo', pose: 'explain' },
] },
{ text: 'Come fai a prendere le biglie dove nessuno ci arriva?', then: [
{ say: 'Geometria. La biglia va dove le dici, basta chiederglielo per bene.', who: 'bertovo', pose: 'chalk' },
{ say: 'E con un po\' di gesso.', who: 'bertovo', pose: 'laugh' },
] },
// L'allenamento: lui tira per primo e fa vedere, poi lo rifai te, senza punti.
{ text: 'Dai, fammi vedere un rinquarto.', next: 'end', then: [
{ say: 'Guarda bene: prima lo tiro io, poi lo rifai te. Tre posizioni, una sponda.', who: 'bertovo', pose: 'chalk' },
{ closeup: 'rinquarto', level: 'allenamento' },
] },
{ text: 'Si fa una sfida a rinquarti?', next: 'sfida', then: [
{ say: 'Le biglie le metto io, nascoste per bene. Tiri te, poi tiro io. Oh tirami questo rinquarto!?', who: 'bertovo', pose: 'explain' },
] },
{ text: 'Ci si vede, Fabri.', next: 'end', then: [{ say: 'Occhio alle sponde, fuori.', who: 'bertovo', pose: 'shrug' }] },
],
},
sfida: {
options: [
{ text: 'Alla bona, una sponda e basta.', next: 'end', then: [{ say: 'Una sponda. Roba da principianti, ma va bene.', who: 'bertovo', pose: 'shrug' }, { closeup: 'rinquarto', level: 'bona' }] },
{ text: 'Seria.', next: 'end', then: [{ say: 'Due sponde. Così mi piace.', who: 'bertovo', pose: 'talk' }, { closeup: 'rinquarto', level: 'seria' }] },
{ text: 'A fassi male.', next: 'end', then: [{ say: 'Tre sponde e niente aiuti. Qui nascono le geometrie celestiali.', who: 'bertovo', pose: 'cheer' }, { closeup: 'rinquarto', level: 'male' }] },
{ text: 'No, mi tremano le mani.', next: 'start', then: [{ say: 'Il tavolo è qui. Le sponde non scappano.', who: 'bertovo', pose: 'laugh' }] },
],
},
},
},
ing_tozzi: {
nodes: {
start: {
options: [
{
text: 'Ingegnere, una partita ai birilli?', when: '!biliardo_vinto', next: 'livello',
then: [{ say: 'Una partita ai birilli? Si va a venti. Come la vuoi?', who: 'ing_tozzi', pose: 'chalk' }],
},
{ text: 'La rivincita?', when: 'biliardo_vinto', next: 'livello', then: [{ say: 'Ci mancherebbe. Stavolta guardo bene. Come la vuoi?', who: 'ing_tozzi', pose: 'explain' }] },
{ text: 'Arrivederci, Ingegnere.', next: 'end' },
],
},
// La difficoltà: quanti colpi prova a vuoto l'Ingegnere, e quanto gli trema la mano.
livello: {
options: [
{ text: 'Alla bona.', next: 'end', then: [{ say: 'Alla bona: tiro senza occhiali.', who: 'ing_tozzi', pose: 'laugh' }, { say: 'Gnamo.' }, { closeup: 'biliardo', level: 'bona' }] },
{ text: 'Seria.', next: 'end', then: [{ say: 'Seria. Dammi il gesso.', who: 'ing_tozzi', pose: 'chalk' }, { say: 'Gnamo.' }, { closeup: 'biliardo', level: 'seria' }] },
{ text: 'A fassi male.', next: 'end', then: [{ say: 'A fassi male? Allora mi tolgo la giacca. Ah no, non ce l\'ho.', who: 'ing_tozzi', pose: 'explain' }, { say: 'Gnamo.' }, { closeup: 'biliardo', level: 'male' }] },
],
},
},
},
// Lo "psicologo": il castello ascolta e risponde con un indizio su quello che manca.
castello: {
nodes: {
start: {
options: [
{
text: 'Sono bloccato. Mi dai un consiglio?',
then: [
{ say: 'Siediti. Guarda il Mugello. Respira.', who: 'castello' },
{
if: '!luccichio',
then: [{ say: 'Chi sa tutto del paese di solito sta seduto. Prova a chiedere a chi passa le giornate in piazza.', who: 'castello' }],
else: [{
if: ['!has:squama', '!squama_presa'],
then: [{ say: 'Le cose che luccicano non stanno mai in alto. Guarda in basso, vicino a chi te ne ha parlato.', who: 'castello' }],
else: [{
if: '!indizio_regolo',
then: [{ say: 'Una squama da sola non dice niente. Ma vicino alle sue impronte, sotto la Fortezza, magari sì.', who: 'castello' }],
else: [{ if: 'has:torcia', then: [{ say: 'Hai la luce, e sotto la Fortezza c\'è il buio. Mettili insieme.', who: 'castello' }], else: torchHints }],
}],
}],
},
],
},
{
text: 'Ma tu ce l\'hai mai visto, il Regolo?',
then: [{ say: 'Io ho visto passare i Medici, la peste e Vespucci. Un serpente in più non mi spaventa.', who: 'castello' }],
},
// Andrea al Trebbio ci sale sempre a piedi: quattro chilometri da casa, due di salita (ricordo suo).
{
text: 'Lo sai che quassù ci vengo sempre a piedi?',
then: [
{ say: 'Lo so. Ti sento arrivare dal fiatone, un chilometro prima.', who: 'castello' },
{ say: 'Da casa sono quattro chilometri. E due sono di salita, di quella bella.' },
{ say: 'Eppure torni sempre. Qualcosa, quassù, l\'hai trovato.', who: 'castello' },
{ say: 'Ho trovato la mia strada!' },
{ say: '...Io, che ancora non so cosa fare da grande.' },
],
},
{
text: 'E te, da grande, cosa volevi fare?',
then: [
{ say: 'Il castello.', who: 'castello' },
{ say: 'Mi è venuto bene. Non avere fretta: a me ci son voluti seicento anni.', who: 'castello' },
],
},
{ text: 'Niente, volevo solo un po\' di pace.', next: 'end', then: [{ say: 'Quella qui non manca mai. Torna quando vuoi.', who: 'castello' }] },
],
},
},
},
},
};
// Solo decorazione: nessun hotspot, flag o modifica ai salvataggi.
for (const [id, effects] of Object.entries(ambience)) story.scenes[id].effects = [...(story.scenes[id].effects ?? []), ...effects];