Fasi del giorno legate alla storia (pomeriggio, tramonto, sera) ed effetti animati: lucine, lampioni, acqua, fumo, bandiere, foglie, pulviscolo, occhi che sbattono

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01ApqNBvNbNCwXqR2RLo8QJh
This commit is contained in:
2026-10-24 23:13:13 +02:00
co-authored by Claude Opus 5.5
parent 9cb026074b
commit ab2bfff1ad
5 changed files with 177 additions and 8 deletions
+27 -3
View File
@@ -44,6 +44,14 @@ export const story = {
// 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`.
start: { scene: 'piazza', at: [250, 320] },
// 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)' },
],
// 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: [
@@ -329,6 +337,11 @@ export const story = {
name: 'Sotto le mura della Fortezza',
map: [36, 6],
background: 'assets/scenes/fortezza-esterno.png',
// 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],
@@ -383,8 +396,6 @@ export const story = {
{ 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' },
{ when: 'occhi_regolo', rect: [498, 282, 2, 2], fill: '#ffe14a' },
{ when: 'occhi_regolo', rect: [504, 282, 2, 2], fill: '#ffe14a' },
],
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.' }] }],
@@ -507,8 +518,10 @@ export const story = {
map: [56, 39],
background: 'assets/scenes/pieve-interno.png',
// Penombra, e le sei candele dell'altare accese (Andrea, 24 ottobre).
indoor: true,
shade: 'rgba(14, 8, 24, 0.62)',
lights: [{ at: [284, 157] }, { at: [294, 159] }, { at: [304, 155] }, { at: [336, 155] }, { at: [346, 159] }, { at: [356, 157] }],
// 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],
@@ -1091,6 +1104,7 @@ export const story = {
name: 'Via Provinciale, il viale alberato',
map: [72, 68],
background: 'assets/scenes/provinciale-viale.png',
effects: [{ type: 'leaves', area: [20, 40, 360, 250], count: 7 }],
walk: [[0, 360], [0, 330], [400, 232], [462, 232], [620, 360]],
depth: [[232, 0.4], [360, 1.7]],
entry: [300, 350],
@@ -1127,6 +1141,7 @@ export const story = {
name: 'La Provinciale lungo la Carza',
map: [66, 73],
background: 'assets/scenes/verso-luna.png',
effects: [{ 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],
@@ -1259,6 +1274,7 @@ export const story = {
name: 'Campomigliaio, il ponte vecchio',
map: [50, 86],
background: 'assets/scenes/campomigliaio-ponte.png',
effects: [{ 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],
@@ -1372,6 +1388,11 @@ export const story = {
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, 1.15]],
entry: [320, 350],
@@ -1409,6 +1430,7 @@ export const story = {
name: 'Villa Adami',
map: [46, 32],
background: 'assets/scenes/villa-adami.png',
effects: [{ 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],
@@ -1665,6 +1687,8 @@ export const story = {
name: 'La scuola',
map: [14, 19],
background: 'assets/scenes/scuola.png',
// Il tricolore che sventola in cima all'asta.
effects: [{ 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],