La Smarronata piena di gente com'era: i volontari della Misericordia alle bruciate, la fanfara degli alpini, la polenta, il vino, la gente coi cartocci e le coppie del liscio; il fuoco vivo sotto il cilindro delle bruciate; nei Ringraziamenti la dedica allo zio Mario (Andrea)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GiECd9RWGMKV7n3K1mdy8T
This commit is contained in:
2026-10-31 12:39:56 +01:00
co-authored by Claude Opus 5.5
parent 4f2ee45abf
commit 5a38e0eafe
39 changed files with 645 additions and 2 deletions
+70
View File
@@ -0,0 +1,70 @@
{
"image": "alpino_vino.png",
"height": 120,
"frames": {
"stand": {
"x": 0,
"y": 0,
"w": 69,
"h": 120,
"ax": 28.2,
"ay": 120
},
"blink": {
"x": 71,
"y": 0,
"w": 69,
"h": 120,
"ax": 28.0,
"ay": 120
},
"talk": {
"x": 142,
"y": 0,
"w": 72,
"h": 120,
"ax": 29.4,
"ay": 120
},
"explain": {
"x": 216,
"y": 0,
"w": 71,
"h": 116,
"ax": 29.3,
"ay": 116
},
"pour": {
"x": 289,
"y": 0,
"w": 72,
"h": 122,
"ax": 30.5,
"ay": 122
},
"pour2": {
"x": 363,
"y": 0,
"w": 73,
"h": 122,
"ax": 30.3,
"ay": 122
},
"give": {
"x": 438,
"y": 0,
"w": 66,
"h": 118,
"ax": 24.5,
"ay": 118
},
"cheers": {
"x": 506,
"y": 0,
"w": 72,
"h": 120,
"ax": 33.4,
"ay": 120
}
}
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 125 KiB

+70
View File
@@ -0,0 +1,70 @@
{
"image": "cuochi.png",
"height": 120,
"frames": {
"stand": {
"x": 0,
"y": 0,
"w": 95,
"h": 120,
"ax": 41.9,
"ay": 120
},
"blink": {
"x": 97,
"y": 0,
"w": 95,
"h": 120,
"ax": 42.6,
"ay": 120
},
"talk": {
"x": 194,
"y": 0,
"w": 96,
"h": 120,
"ax": 44.4,
"ay": 120
},
"explain": {
"x": 292,
"y": 0,
"w": 95,
"h": 120,
"ax": 44.5,
"ay": 120
},
"work": {
"x": 389,
"y": 0,
"w": 101,
"h": 120,
"ax": 46.7,
"ay": 120
},
"work2": {
"x": 492,
"y": 0,
"w": 101,
"h": 119,
"ax": 45.9,
"ay": 119
},
"give": {
"x": 595,
"y": 0,
"w": 104,
"h": 121,
"ax": 43.1,
"ay": 121
},
"laugh": {
"x": 701,
"y": 0,
"w": 92,
"h": 117,
"ax": 43.7,
"ay": 117
}
}
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 191 KiB

+70
View File
@@ -0,0 +1,70 @@
{
"image": "fanfara.png",
"height": 120,
"frames": {
"stand": {
"x": 0,
"y": 0,
"w": 107,
"h": 120,
"ax": 47.1,
"ay": 120
},
"blink": {
"x": 109,
"y": 0,
"w": 106,
"h": 120,
"ax": 47.1,
"ay": 120
},
"talk": {
"x": 217,
"y": 0,
"w": 110,
"h": 120,
"ax": 50.3,
"ay": 120
},
"laugh": {
"x": 329,
"y": 0,
"w": 107,
"h": 120,
"ax": 47.0,
"ay": 120
},
"play": {
"x": 438,
"y": 0,
"w": 112,
"h": 113,
"ax": 50.3,
"ay": 113
},
"play2": {
"x": 552,
"y": 0,
"w": 114,
"h": 118,
"ax": 51.8,
"ay": 118
},
"play3": {
"x": 668,
"y": 0,
"w": 111,
"h": 115,
"ax": 51.6,
"ay": 115
},
"bow": {
"x": 781,
"y": 0,
"w": 110,
"h": 104,
"ax": 51.2,
"ay": 104
}
}
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 222 KiB

+70
View File
@@ -0,0 +1,70 @@
{
"image": "gente.png",
"height": 115,
"frames": {
"stand": {
"x": 0,
"y": 0,
"w": 126,
"h": 115,
"ax": 62.9,
"ay": 115
},
"blink": {
"x": 128,
"y": 0,
"w": 125,
"h": 115,
"ax": 62.8,
"ay": 115
},
"talk": {
"x": 255,
"y": 0,
"w": 126,
"h": 115,
"ax": 62.9,
"ay": 115
},
"talk2": {
"x": 383,
"y": 0,
"w": 126,
"h": 115,
"ax": 63.9,
"ay": 115
},
"eat": {
"x": 511,
"y": 0,
"w": 128,
"h": 117,
"ax": 62.9,
"ay": 117
},
"eat2": {
"x": 641,
"y": 0,
"w": 128,
"h": 117,
"ax": 63.0,
"ay": 117
},
"laugh": {
"x": 771,
"y": 0,
"w": 127,
"h": 117,
"ax": 62.0,
"ay": 117
},
"toast": {
"x": 900,
"y": 0,
"w": 127,
"h": 116,
"ax": 62.5,
"ay": 116
}
}
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 271 KiB

+70
View File
@@ -0,0 +1,70 @@
{
"image": "liscio.png",
"height": 115,
"frames": {
"stand": {
"x": 0,
"y": 0,
"w": 108,
"h": 115,
"ax": 54.5,
"ay": 115
},
"blink": {
"x": 110,
"y": 0,
"w": 108,
"h": 115,
"ax": 54.3,
"ay": 115
},
"talk": {
"x": 220,
"y": 0,
"w": 111,
"h": 115,
"ax": 57.2,
"ay": 115
},
"laugh": {
"x": 333,
"y": 0,
"w": 110,
"h": 115,
"ax": 55.6,
"ay": 115
},
"dance1": {
"x": 445,
"y": 0,
"w": 117,
"h": 112,
"ax": 57.2,
"ay": 112
},
"dance2": {
"x": 564,
"y": 0,
"w": 115,
"h": 111,
"ax": 57.0,
"ay": 111
},
"dance3": {
"x": 681,
"y": 0,
"w": 115,
"h": 112,
"ax": 56.5,
"ay": 112
},
"dance4": {
"x": 798,
"y": 0,
"w": 113,
"h": 113,
"ax": 54.4,
"ay": 113
}
}
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 230 KiB

+70
View File
@@ -0,0 +1,70 @@
{
"image": "volontari.png",
"height": 120,
"frames": {
"stand": {
"x": 0,
"y": 0,
"w": 102,
"h": 120,
"ax": 48.3,
"ay": 120
},
"blink": {
"x": 104,
"y": 0,
"w": 102,
"h": 120,
"ax": 48.3,
"ay": 120
},
"talk": {
"x": 208,
"y": 0,
"w": 101,
"h": 121,
"ax": 47.4,
"ay": 121
},
"explain": {
"x": 311,
"y": 0,
"w": 100,
"h": 120,
"ax": 47.4,
"ay": 120
},
"work": {
"x": 413,
"y": 0,
"w": 107,
"h": 112,
"ax": 49.0,
"ay": 112
},
"work2": {
"x": 522,
"y": 0,
"w": 104,
"h": 111,
"ax": 47.4,
"ay": 111
},
"give": {
"x": 628,
"y": 0,
"w": 100,
"h": 121,
"ax": 47.8,
"ay": 121
},
"laugh": {
"x": 730,
"y": 0,
"w": 100,
"h": 119,
"ax": 48.2,
"ay": 119
}
}
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 195 KiB

Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+76
View File
@@ -1967,6 +1967,74 @@
"file": "andrea-fd9e22e01d.mp3", "file": "andrea-fd9e22e01d.mp3",
"sec": 4.32 "sec": 4.32
}, },
"andrea|I volontari della Misericordia, alle bruciate: uno rimescola, l'altro riempie i cartocci.": {
"file": "andrea-bfd09556ea.mp3",
"sec": 5.63
},
"andrea|Che Iddio ve ne renda merito!! A voi e agli alpini!": {
"file": "andrea-6933735b75.mp3",
"sec": 3.95
},
"volontari|E a te, figliolo. To', un cartoccio: son belle calde.": {
"file": "volontari-e8705fe901.mp3",
"sec": 5.14
},
"andrea|Scottano! Ma son buonissime.": {
"file": "andrea-ff81f048f5.mp3",
"sec": 2.79
},
"andrea|La fanfara degli alpini. Quando sfilavano per il paese suonando, s'affacciava tutto San Piero.": {
"file": "andrea-9904de279c.mp3",
"sec": 6.69
},
"fanfara|Un'altra? Questa la sanno anche i sassi!": {
"file": "fanfara-d1179f98fa.mp3",
"sec": 3.72
},
"andrea|La polenta degli alpini: uno gira nel paiolo, l'altro la taglia col filo.": {
"file": "andrea-773164c1a1.mp3",
"sec": 5.26
},
"cuochi|Un po' di pazienza: la polenta vuole il suo tempo.": {
"file": "cuochi-9503d771cf.mp3",
"sec": 3.67
},
"andrea|L'alpino del vino. Il naso rosso, a forza d'assaggiarlo, se l'è guadagnato.": {
"file": "andrea-ce03d2a10e.mp3",
"sec": 5.65
},
"alpino_vino|Gratis, ma col giudizio: un bicchiere a testa!": {
"file": "alpino_vino-2a029d581d.mp3",
"sec": 3.39
},
"andrea|Alla salute degli alpini!": {
"file": "andrea-46e16fd214.mp3",
"sec": 2.87
},
"alpino_vino|Alla salute!": {
"file": "alpino_vino-7f4871f89d.mp3",
"sec": 0.94
},
"andrea|La gente della festa, coi cartocci di bruciate e il bicchiere di vino.": {
"file": "andrea-241b4a7d6a.mp3",
"sec": 4.71
},
"gente|Hai visto che bruciate quest'anno? Belle grosse!": {
"file": "gente-0f6e151dd6.mp3",
"sec": 3.69
},
"andrea|Il liscio nello spiazzo: valzer e mazurche, e i nonni ballano meglio di tutti.": {
"file": "andrea-8fff6bb18b.mp3",
"sec": 5.82
},
"liscio|Balli anche te? Dai, che la mazurca la sanno tutti!": {
"file": "liscio-9e08aa07f3.mp3",
"sec": 4.5
},
"andrea|Un'altra volta. Questa macchina del tempo mi fa girare la testa già da sé.": {
"file": "andrea-f2e4a9450c.mp3",
"sec": 5.48
},
"andrea|Di lassù si torna alla strada del ponte, e alla macchina del tempo.": { "andrea|Di lassù si torna alla strada del ponte, e alla macchina del tempo.": {
"file": "andrea-27b72f57db.mp3", "file": "andrea-27b72f57db.mp3",
"sec": 3.86 "sec": 3.86
@@ -2019,6 +2087,14 @@
"file": "andrea-40a22ff371.mp3", "file": "andrea-40a22ff371.mp3",
"sec": 4.27 "sec": 4.27
}, },
"andrea|Sono entrati a vedere se la polenta è pronta. Non lo è.": {
"file": "andrea-68c8b4a477.mp3",
"sec": 4.49
},
"gente|Siediti con noi, che a mezzogiorno qui non si trova un posto!": {
"file": "gente-0f4228e156.mp3",
"sec": 4.01
},
"andrea|Si torna nel 2007. Ciao Vannino, ciao Pierino.": { "andrea|Si torna nel 2007. Ciao Vannino, ciao Pierino.": {
"file": "andrea-baa95acb36.mp3", "file": "andrea-baa95acb36.mp3",
"sec": 4.41 "sec": 4.41
Binary file not shown.
Binary file not shown.
+9 -2
View File
@@ -27,8 +27,15 @@ Online su 50037.manzolo.it tutto fino agli effetti ambientali di Codex. Aperto,
(`smarronata_tendone`, le tavolate). Sfondi di Codex dai fotogrammi del video del 1993 (`assets/raw/smarronata/`). (`smarronata_tendone`, le tavolate). Sfondi di Codex dai fotogrammi del video del 1993 (`assets/raw/smarronata/`).
«Torna al 2007» o la scaletta riportano al ponte, e la macchina sparisce. Dalle scene del viaggio (anche il «Torna al 2007» o la scaletta riportano al ponte, e la macchina sparisce. Dalle scene del viaggio (anche il
Barrettino) la mappa non porta più via. Test in `story.test.mjs`, prova `npm run browser:smarronata`. Barrettino) la mappa non porta più via. Test in `story.test.mjs`, prova `npm run browser:smarronata`.
[DA ANDREA] le battute; gli alpini (sprite di Codex: col cappello e la penna, la camicia a quadri); un minigioco Il tendone col tetto a botte e la fascia tricolore (come nel video), i cartelli dipinti della polenta e del vino gratis
delle bruciate (girare il cilindro sul fuoco); la fanfara. da guardare nel tendone, il fuoco vivo sotto il cilindro (effetto `fire`) col fumo. La gente (sprite di gruppo di
Codex, inventati, vestiti come nel video): i volontari della Misericordia alle bruciate («Che Iddio ve ne renda
merito!! A voi e agli alpini!»), la fanfara degli alpini, gli alpini della polenta e del vino, la gente coi cartocci
(anche nel tendone), le coppie del liscio che girano (`flourish` continuo).
[DA ANDREA] le battute; la musica del liscio (prompt per Suno dato ad Andrea: va in `assets/audio/` e suona vicino
alle coppie, come le console dell'Ingorgo); un minigioco delle bruciate (girare il cilindro sul fuoco).
- **Dedica allo zio Mario (31 ottobre)**: nei Ringraziamenti, sotto quella al Lele e più piccola: «Al mio caro zio
Mario, che mi ha fatto vivere tante avventure più belle della fantasia.»
- **Il Taglia (31 ottobre)**: tolte le battute sulla sua altezza (Baldoria: non gli fa piacere). - **Il Taglia (31 ottobre)**: tolte le battute sulla sua altezza (Baldoria: non gli fa piacere).
- **Il Muro del Sanpierino sul telefonino del Barone (31 ottobre)**: il Barone ora ha un dialogo a scelte (le - **Il Muro del Sanpierino sul telefonino del Barone (31 ottobre)**: il Barone ora ha un dialogo a scelte (le
mutande, oppure «Hai visto cosa c'era sul muro del Sanpierino?»). Col muro tira fuori il telefonino, che sale dal mutande, oppure «Hai visto cosa c'era sul muro del Sanpierino?»). Col muro tira fuori il telefonino, che sale dal
+1
View File
@@ -101,6 +101,7 @@
<section id="credits" class="overlay" hidden aria-label="Ringraziamenti"> <section id="credits" class="overlay" hidden aria-label="Ringraziamenti">
<h2>Ringraziamenti</h2> <h2>Ringraziamenti</h2>
<p class="dedication credits-dedication">Al Lele, che mi ha fatto conoscere Monkey Island.</p> <p class="dedication credits-dedication">Al Lele, che mi ha fatto conoscere Monkey Island.</p>
<p class="dedication credits-dedication dedication-small">Al mio caro zio Mario, che mi ha fatto vivere tante avventure più belle della fantasia.</p>
<dl id="credits-list"></dl> <dl id="credits-list"></dl>
<div id="credits-reel"><button class="arrow prev" type="button" aria-label="Foto precedente">‹</button><div class="track" aria-label="Le immagini del gioco: toccane una per vederla grande"></div><button class="arrow next" type="button" aria-label="Foto successiva">›</button></div> <div id="credits-reel"><button class="arrow prev" type="button" aria-label="Foto precedente">‹</button><div class="track" aria-label="Le immagini del gioco: toccane una per vederla grande"></div><button class="arrow next" type="button" aria-label="Foto successiva">›</button></div>
<p class="legal">Monkey Island è un marchio di Lucasfilm Ltd., citato solo nella dedica: questo gioco non è affiliato né approvato da Lucasfilm.</p> <p class="legal">Monkey Island è un marchio di Lucasfilm Ltd., citato solo nella dedica: questo gioco non è affiliato né approvato da Lucasfilm.</p>
+25
View File
@@ -351,6 +351,31 @@ export const EFFECTS = {
ctx.fillRect(x0 + c, y0 + dy, 1, h); ctx.fillRect(x0 + c, y0 + dy, 1, h);
} }
}, },
// Il fuoco di legna (il braciere delle bruciate alla Smarronata, Andrea 31 ottobre): lingue che guizzano a scatti
// sulla base `area` [x, y, w, h], rosse fuori e gialle dentro, e un bagliore caldo che pulsa.
fire(ctx, e, time) {
const [x, y, w, h] = e.area, step = e.every ?? 110, n = Math.max(3, Math.round(w / 4));
ctx.save();
ctx.globalCompositeOperation = 'lighter';
const g = ctx.createRadialGradient(x + w / 2, y + h / 2, 0, x + w / 2, y + h / 2, w * 0.9);
g.addColorStop(0, `rgba(255, 140, 50, ${0.28 + 0.08 * Math.sin(time / 170)})`);
g.addColorStop(1, 'rgba(255, 90, 30, 0)');
ctx.fillStyle = g;
ctx.fillRect(x - w, y - w, w * 3, w * 2.4);
ctx.restore();
// Ogni lingua: righe che si stringono salendo, gialla alla base, arancio a metà, rossa in punta, e ondeggia.
for (let i = 0; i < n; i++) {
const t = Math.floor(time / step) * 13 + i * 7, cx = x + (i + 0.5) * w / n;
const tall = Math.round(h * (0.5 + 0.8 * hash(t))), base = y + h, lean = (hash(t + 1) - 0.5) * 3;
for (let r = 0; r < tall; r++) {
const k = r / tall, half = Math.max(0.5, 2.2 * (1 - k)), px = cx + lean * k;
ctx.fillStyle = k < 0.3 ? '#ffe27a' : k < 0.65 ? '#ff9a2e' : '#d8401c';
ctx.fillRect(Math.round(px - half), base - r - 1, Math.max(1, Math.round(half * 2)), 1);
}
// Una scintilla che sale, ogni tanto.
if (hash(t + 3) < 0.25) { ctx.fillStyle = '#ffd25a'; ctx.fillRect(Math.round(cx + lean), base - tall - 2 - Math.round(hash(t + 9) * 5), 1, 1); }
}
},
// Il fumo da un comignolo: sbuffi che salgono, crescono e svaniscono. // Il fumo da un comignolo: sbuffi che salgono, crescono e svaniscono.
smoke(ctx, e, time) { smoke(ctx, e, time) {
const [x, y] = e.at, life = 2600; const [x, y] = e.at, life = 2600;
+83
View File
@@ -522,6 +522,13 @@ export const story = {
andrea_pesca: { name: 'Andrea', sprite: 'assets/characters/andrea-pesca.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. // 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' }, pescatori: { name: 'I ragazzi delle canne', color: '#b8f08a', sprite: 'assets/characters/pescatori.json' },
// La gente della Smarronata del 1993 (Andrea, 31 ottobre): tutti inventati, vestiti come nei fotogrammi del video.
volontari: { name: 'I volontari della Misericordia', color: '#c8d0b0', sprite: 'assets/characters/volontari.json' },
fanfara: { name: 'La fanfara degli alpini', color: '#e0c060', sprite: 'assets/characters/fanfara.json' },
cuochi: { name: 'Gli alpini della polenta', color: '#f0d070', sprite: 'assets/characters/cuochi.json' },
alpino_vino: { name: 'L\'alpino del vino', color: '#e08080', sprite: 'assets/characters/alpino_vino.json' },
gente: { name: 'La gente della festa', color: '#d8b8a0', sprite: 'assets/characters/gente.json' },
liscio: { name: 'Le coppie del liscio', color: '#f0a0a0', sprite: 'assets/characters/liscio.json' },
vecchietta: { name: 'Vecchietta', color: '#ffd27a', sprite: 'assets/characters/vecchietta.json' }, vecchietta: { name: 'Vecchietta', color: '#ffd27a', sprite: 'assets/characters/vecchietta.json' },
vecchietto: { name: 'Vecchietto', color: '#9fe3ff', sprite: 'assets/characters/vecchietto.json' }, vecchietto: { name: 'Vecchietto', color: '#9fe3ff', sprite: 'assets/characters/vecchietto.json' },
castello: { name: 'Lo spirito del Trebbio', color: '#c8f0ff' }, castello: { name: 'Lo spirito del Trebbio', color: '#c8f0ff' },
@@ -3698,6 +3705,19 @@ export const story = {
viaggio: true, viaggio: true,
back: { label: 'Torna al 2007', actions: RITORNO_1993 }, back: { label: 'Torna al 2007', actions: RITORNO_1993 },
background: 'assets/scenes/smarronata-1993.png', background: 'assets/scenes/smarronata-1993.png',
// Il fuoco sotto il cilindro delle bruciate, col fumo che sale (Andrea, 31 ottobre).
effects: [{ type: 'fire', area: [206, 219, 36, 8] }, { type: 'smoke', at: [226, 186] }, { type: 'smoke', at: [214, 192] }],
// La gente della festa (Andrea, 31 ottobre: «rendiamola bella come allora»): i volontari della Misericordia alle
// bruciate, la fanfara degli alpini, gli alpini della polenta e del vino, la gente coi cartocci, il liscio.
speakers: { volontari: [176, 144], fanfara: [330, 141], cuochi: [474, 148], alpino_vino: [606, 159], gente: [250, 196], liscio: [430, 201] },
people: [
{ who: 'volontari', at: [176, 262], size: 1.35, idle: 'stand', talk: ['talk', 'explain'], blink: 'blink', every: 4.4, flourish: { poses: ['work', 'work2'], every: 5, for: 3.6, step: 0.45 } },
{ who: 'fanfara', at: [330, 244], size: 1.35, idle: 'stand', talk: ['talk', 'laugh'], blink: 'blink', every: 5.2, flourish: { poses: ['play', 'play2', 'play3', 'play2'], every: 7, for: 5.6, step: 0.35 } },
{ who: 'cuochi', at: [474, 258], size: 1.3, idle: 'stand', talk: ['talk', 'explain'], blink: 'blink', every: 4.8, offset: 1.5, flourish: { poses: ['work', 'work2'], every: 4.6, for: 3.2, step: 0.4 } },
{ who: 'alpino_vino', at: [606, 270], size: 1.2, facing: -1, idle: 'stand', talk: ['talk', 'explain'], blink: 'blink', every: 3.9, flourish: { poses: ['pour', 'pour2', 'give'], every: 8, for: 2.4, step: 0.6 } },
{ who: 'liscio', at: [430, 318], idle: 'dance1', talk: ['talk', 'laugh'], flourish: { poses: ['dance1', 'dance2', 'dance3', 'dance4'], every: 2.4, for: 2.4, step: 0.3 } },
{ who: 'gente', at: [250, 308], idle: 'stand', talk: ['talk', 'talk2'], blink: 'blink', every: 4.1, flourish: { poses: ['eat', 'eat2', 'eat', 'eat2'], every: 6, for: 2.4, step: 0.5 } },
],
walk: [[125, 245], [330, 232], [590, 238], [600, 262], [420, 292], [400, 360], [250, 360], [240, 276], [125, 276]], 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]], depth: [[232, 0.55], [360, 1.2]],
entry: [320, 340], entry: [320, 340],
@@ -3736,6 +3756,60 @@ export const story = {
open: [{ walk: [430, 244] }, { go: 'smarronata_tendone', at: [320, 340], face: 'up' }], open: [{ walk: [430, 244] }, { go: 'smarronata_tendone', at: [320, 340], face: 'up' }],
}, },
}, },
// La gente: ultima nell'elenco, così sta sopra le cose dello sfondo. [DA ANDREA: le battute]
{
id: 'volontari', name: 'i volontari della Misericordia', box: [130, 148, 97, 114], at: [200, 272], face: 'left', default: 'talk',
actions: {
look: [{ say: 'I volontari della Misericordia, alle bruciate: uno rimescola, l\'altro riempie i cartocci.' }],
talk: [
{ say: 'Che Iddio ve ne renda merito!! A voi e agli alpini!' },
{ say: 'E a te, figliolo. To\', un cartoccio: son belle calde.', who: 'volontari', pose: 'give' },
{ say: 'Scottano! Ma son buonissime.' },
],
},
},
{
id: 'fanfara', name: 'la fanfara degli alpini', box: [291, 145, 88, 99], at: [330, 262], face: 'up', default: 'talk',
actions: {
look: [{ say: 'La fanfara degli alpini. Quando sfilavano per il paese suonando, s\'affacciava tutto San Piero.' }],
talk: [{ say: 'Un\'altra? Questa la sanno anche i sassi!', who: 'fanfara', pose: 'laugh' }],
},
},
{
id: 'cuochi', name: 'gli alpini della polenta', box: [437, 152, 84, 106], at: [474, 270], face: 'up', default: 'talk',
actions: {
look: [{ say: 'La polenta degli alpini: uno gira nel paiolo, l\'altro la taglia col filo.' }],
talk: [{ say: 'Un po\' di pazienza: la polenta vuole il suo tempo.', who: 'cuochi', pose: 'explain' }],
},
},
{
id: 'alpino_vino', name: 'l\'alpino del vino', box: [581, 163, 62, 107], at: [565, 262], face: 'right', default: 'talk',
actions: {
look: [{ say: 'L\'alpino del vino. Il naso rosso, a forza d\'assaggiarlo, se l\'è guadagnato.' }],
talk: [
{ say: 'Gratis, ma col giudizio: un bicchiere a testa!', who: 'alpino_vino', pose: 'give' },
{ say: 'Alla salute degli alpini!' },
{ say: 'Alla salute!', who: 'alpino_vino', pose: 'cheers' },
],
},
},
{
id: 'gente', name: 'la gente della festa', box: [191, 200, 118, 108], at: [320, 330], face: 'left', default: 'talk',
actions: {
look: [{ say: 'La gente della festa, coi cartocci di bruciate e il bicchiere di vino.' }],
talk: [{ say: 'Hai visto che bruciate quest\'anno? Belle grosse!', who: 'gente', pose: 'talk2' }],
},
},
{
id: 'liscio', name: 'le coppie del liscio', box: [376, 205, 107, 113], at: [340, 330], face: 'right', default: 'talk',
actions: {
look: [{ say: 'Il liscio nello spiazzo: valzer e mazurche, e i nonni ballano meglio di tutti.' }],
talk: [
{ say: 'Balli anche te? Dai, che la mazurca la sanno tutti!', who: 'liscio', pose: 'talk' },
{ say: 'Un\'altra volta. Questa macchina del tempo mi fa girare la testa già da sé.' },
],
},
},
{ {
// La scaletta del terrazzino, in basso a sinistra: si risale alla strada, e alla macchina del tempo. // 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', id: 'scaletta_1993', name: 'su, alla strada: si torna nel 2007', box: [0, 280, 110, 80], at: [250, 340], face: 'left', default: 'walk',
@@ -3766,6 +3840,8 @@ export const story = {
back: { label: 'Torna al 2007', actions: RITORNO_1993 }, back: { label: 'Torna al 2007', actions: RITORNO_1993 },
background: 'assets/scenes/smarronata-tendone.png', background: 'assets/scenes/smarronata-tendone.png',
indoor: true, indoor: true,
speakers: { gente: [470, 176] },
people: [{ who: 'gente', at: [470, 300], idle: 'stand', talk: ['talk', 'talk2'], blink: 'blink', every: 4.1, flourish: { poses: ['toast', 'laugh'], every: 7, for: 1.6, step: 0.8 } }],
walk: [[0, 360], [0, 262], [150, 262], [165, 175], [215, 175], [225, 262], [400, 262], [640, 270], [640, 360]], 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]], depth: [[175, 0.5], [360, 1.3]],
entry: [320, 340], entry: [320, 340],
@@ -3801,6 +3877,13 @@ export const story = {
id: 'tavole_destra', name: 'le tavole', box: [400, 140, 240, 128], at: [480, 300], face: 'right', 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.' }] }, actions: { look: [{ say: 'Le sedie di legno, quelle pieghevoli che si chiudono sulle dita.' }] },
}, },
{
id: 'gente_tendone', name: 'la gente della festa', box: [405, 180, 131, 120], at: [380, 320], face: 'right', default: 'talk',
actions: {
look: [{ say: 'Sono entrati a vedere se la polenta è pronta. Non lo è.' }],
talk: [{ say: 'Siediti con noi, che a mezzogiorno qui non si trova un posto!', who: 'gente', pose: 'talk' }],
},
},
{ {
id: 'fuori_tendone', name: 'fuori, alla festa', box: [0, 336, 640, 24], at: [320, 354], default: 'walk', 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' }] }, actions: { walk: [{ go: 'smarronata_1993', at: [430, 250], face: 'down' }], open: [{ go: 'smarronata_1993', at: [430, 250], face: 'down' }] },
+3
View File
@@ -212,6 +212,8 @@ body.full #sound { position: fixed; z-index: 13; top: max(8px, env(safe-area-ins
.overlay p { margin: 0; max-width: 34em; font-size: clamp(9.36px, 1.44vw, 14.4px); } .overlay p { margin: 0; max-width: 34em; font-size: clamp(9.36px, 1.44vw, 14.4px); }
.subtitle { color: var(--dim); } .subtitle { color: var(--dim); }
.dedication { margin-top: .8em !important; font-style: italic; color: var(--accent); } .dedication { margin-top: .8em !important; font-style: italic; color: var(--accent); }
/* La seconda dedica, allo zio Mario (Andrea, 31 ottobre): sotto quella del Lele, più piccola. */
.dedication-small { margin-top: .3em !important; font-size: .78em; opacity: .85; }
.buttons { display: flex; gap: 10px; flex-wrap: wrap; justify-content: center; margin-top: .4em; } .buttons { display: flex; gap: 10px; flex-wrap: wrap; justify-content: center; margin-top: .4em; }
.buttons button { font: inherit; font-weight: bold; font-size: clamp(10.8px, 1.58vw, 15.84px); padding: .45em 1.2em; border-radius: 6px; cursor: pointer; .buttons button { font: inherit; font-weight: bold; font-size: clamp(10.8px, 1.58vw, 15.84px); padding: .45em 1.2em; border-radius: 6px; cursor: pointer;
color: var(--bg); background: var(--accent); border: 0; } color: var(--bg); background: var(--accent); border: 0; }
@@ -271,6 +273,7 @@ body.full #sound { position: fixed; z-index: 13; top: max(8px, env(safe-area-ins
/* I crediti crescono con chi contribuisce: scorre solo l'elenco, dedica e Chiudi restano sempre in vista. */ /* I crediti crescono con chi contribuisce: scorre solo l'elenco, dedica e Chiudi restano sempre in vista. */
#credits { justify-content: flex-start; overflow: hidden; padding-top: 4%; background: rgba(15, 10, 20, .96); } #credits { justify-content: flex-start; overflow: hidden; padding-top: 4%; background: rgba(15, 10, 20, .96); }
#credits .credits-dedication { margin: .2em 0 .5em !important; font-size: clamp(10px, 1.6vw, 17px); } #credits .credits-dedication { margin: .2em 0 .5em !important; font-size: clamp(10px, 1.6vw, 17px); }
#credits .dedication-small { margin: -.3em 0 .6em !important; font-size: clamp(8px, 1.15vw, 13px); }
/* Due colonne: il ruolo a destra della sua colonna, il nome a sinistra della sua, allineati sulla riga. */ /* Due colonne: il ruolo a destra della sua colonna, il nome a sinistra della sua, allineati sulla riga. */
#credits dl { flex: 1 1 auto; min-height: 0; overflow-y: auto; align-content: start; padding-right: .4em; margin: .2em 0 0; display: grid; grid-template-columns: 1fr 1fr; column-gap: 1em; row-gap: .45em; align-items: baseline; width: min(100%, 44em); scrollbar-width: thin; } #credits dl { flex: 1 1 auto; min-height: 0; overflow-y: auto; align-content: start; padding-right: .4em; margin: .2em 0 0; display: grid; grid-template-columns: 1fr 1fr; column-gap: 1em; row-gap: .45em; align-items: baseline; width: min(100%, 44em); scrollbar-width: thin; }
#credits dt { text-align: right; color: var(--dim); font-size: clamp(7.2px, 1.01vw, 10.08px); letter-spacing: .12em; text-transform: uppercase; } #credits dt { text-align: right; color: var(--dim); font-size: clamp(7.2px, 1.01vw, 10.08px); letter-spacing: .12em; text-transform: uppercase; }
+5
View File
@@ -58,6 +58,11 @@ try {
await run(); await run();
assert.equal(await page.evaluate(() => game.state.scene), 'ponte_sieve'); assert.equal(await page.evaluate(() => game.state.scene), 'ponte_sieve');
assert.ok(!await page.evaluate(() => game.state.flags.macchina_ponte), 'tornati, la macchina sparisce'); assert.ok(!await page.evaluate(() => game.state.flags.macchina_ponte), 'tornati, la macchina sparisce');
// Nei Ringraziamenti, sotto la dedica al Lele, quella allo zio Mario.
await page.evaluate(() => document.querySelector('.open-credits').click());
await page.waitForSelector('#credits:not([hidden])');
assert.match(await page.textContent('#credits'), /zio Mario/);
await page.screenshot({ path: `${out}/6-crediti.png` });
assert.deepEqual(errors, []); assert.deepEqual(errors, []);
console.log(`ok: schermate in ${out}`); console.log(`ok: schermate in ${out}`);
} finally { await browser?.close(); server.kill(); } } finally { await browser?.close(); server.kill(); }
+23
View File
@@ -76,5 +76,28 @@
}, },
"baldoria": { "baldoria": {
"speaker": "Marcos Rudaski" "speaker": "Marcos Rudaski"
},
"volontari": {
"speaker": "Ludvig Milivoj",
"filtro": "asetrate=24000*0.94,aresample=24000,atempo=1.03"
},
"fanfara": {
"speaker": "Gilberto Mathias",
"filtro": "asetrate=24000*0.92,aresample=24000,atempo=1.04"
},
"cuochi": {
"speaker": "Kumar Dahl",
"filtro": "asetrate=24000*0.93,aresample=24000,atempo=1.04"
},
"alpino_vino": {
"speaker": "Wulf Carlevaro"
},
"gente": {
"speaker": "Luis Moray",
"filtro": "asetrate=24000*0.96,aresample=24000,atempo=1.02"
},
"liscio": {
"speaker": "Viktor Menelaos",
"filtro": "asetrate=24000*0.9,aresample=24000,atempo=1.06"
} }
} }