La Smarronata del 1993: dal vecchio cartello sul lampione del Ponte sulla Sieve, coi ricordi di Andrea, la macchina del tempo porta alla festa delle castagne degli alpini sotto il ponte, col bruciatore delle bruciate, gli stand e il tendone giallo con le tavolate; dalle scene del viaggio la mappa non porta più via; tolte le battute sull'altezza del Taglia (Andrea)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GiECd9RWGMKV7n3K1mdy8T
This commit is contained in:
+29
-2
@@ -3,7 +3,7 @@ import assert from 'node:assert/strict';
|
||||
import { backgroundOrder } from '../src/engine/render.js';
|
||||
import { story } from '../src/story/story.js';
|
||||
import { solution } from '../src/story/solution.js';
|
||||
import { Game, VERBS, checkSave, introText, shuffledCredits, matchPlace, reelPictures } from '../src/engine/game.js';
|
||||
import { Game, VERBS, checkSave, introText, shuffledCredits, matchPlace, reelPictures, POSTER_READY } from '../src/engine/game.js';
|
||||
import { inside } from '../src/engine/geometry.js';
|
||||
import { existsSync, readFileSync } from 'node:fs';
|
||||
import { settle, exploreTorch } from './helpers.mjs';
|
||||
@@ -350,7 +350,8 @@ test('le strade vanno e tornano: niente sensi unici, e ogni posto si raggiunge d
|
||||
const text = JSON.stringify(story);
|
||||
assert.ok(text.includes(`"go":"${id}"`), `${id}: nessun viaggio ci porta`);
|
||||
const back = JSON.stringify(sc.hotspots).match(/"go":"([a-z_0-9]+)"/g)?.map(m => m.slice(6, -1)) ?? [];
|
||||
assert.ok(back.some(b => seen.has(b)), `${id}: non si torna indietro`);
|
||||
// Si torna in una scena vera, o in un'altra del viaggio (il tendone della Smarronata riporta alla festa).
|
||||
assert.ok(back.some(b => seen.has(b) || story.scenes[b]?.viaggio), `${id}: non si torna indietro`);
|
||||
}
|
||||
});
|
||||
|
||||
@@ -691,3 +692,29 @@ test('i file che il Docker copia sono leggibili da tutti (nginx gira con un altr
|
||||
dirs.forEach(walk);
|
||||
assert.deepEqual(closed, [], 'file non leggibili da nginx (chmod 644)');
|
||||
});
|
||||
|
||||
test('la Smarronata del 1993: lo spiazzo sotto il ponte fa comparire la macchina, il viaggio, la festa, il tendone e il ritorno', () => {
|
||||
const g = new Game(story);
|
||||
settle(g); g.go('ponte_sieve', [250, 320]); settle(g);
|
||||
assert.ok(!g.hotspot('macchina_ponte'), 'prima del ricordo la macchina non c\'è');
|
||||
// Il vecchio cartello sul lampione: si apre ingrandito, e toccandolo arriva la macchina del tempo.
|
||||
g.act('look', 'cartello_smarronata'); settle(g);
|
||||
assert.equal(g.closeup?.id, 'manifesto_smarronata');
|
||||
g.update(POSTER_READY); assert.ok(g.closeupTap()); settle(g);
|
||||
assert.ok(g.state.flags.macchina_ponte && g.hotspot('macchina_ponte'));
|
||||
g.act('use', 'macchina_ponte'); settle(g);
|
||||
assert.equal(g.closeup?.id, 'viaggio_1993');
|
||||
// Il cruscotto, poi la partenza vista da fuori: due primi piani di fila.
|
||||
for (let i = 0; i < 4000 && (g.closeup || g.queue.length || g.speech); i++) { g.skip(); g.update(0.05); }
|
||||
settle(g);
|
||||
assert.equal(g.state.scene, 'smarronata_1993');
|
||||
assert.ok(!g.travel('piazza'), 'dal 1993 la mappa non porta via: si torna con la macchina');
|
||||
g.act('walk', 'tendone'); settle(g);
|
||||
assert.equal(g.state.scene, 'smarronata_tendone');
|
||||
g.act('walk', 'fuori_tendone'); settle(g);
|
||||
assert.equal(g.state.scene, 'smarronata_1993');
|
||||
assert.ok(g.goBack()); for (let i = 0; i < 4000 && (g.closeup || g.queue.length || g.speech); i++) { g.skip(); g.update(0.05); }
|
||||
settle(g);
|
||||
assert.equal(g.state.scene, 'ponte_sieve');
|
||||
assert.ok(!g.state.flags.macchina_ponte, 'tornati nel 2007 la macchina sparisce');
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user