L'Ingorgo più da discoteca: fasci più forti e numerosi, colpo di colore a ogni battuta, strobo a raffica, macchie di luce sulla folla, laser anche in piazza, palla a specchi su tutta la scena; alla festa si clicca solo per spostarsi; il manifesto più facile da toccare col dito; il video breve dell'Ingorgo (Andrea)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GiECd9Quo9nEdXyjXYF8ma
This commit is contained in:
2026-10-30 22:59:54 +01:00
co-authored by Claude Opus 5.5
parent 9f2b045ab0
commit 40d5780255
7 changed files with 241 additions and 19 deletions
+21
View File
@@ -96,6 +96,15 @@ test('chiudendo l\'effetto prima del lampo, la festa arriva lo stesso', () => {
assert.ok(g.state.flags.ingorgo);
});
test('col dito il manifesto dell\'Ingorgo si prende anche toccando vicino, e non si scambia con quello del Palio', () => {
const g = new Game(story); g.go('piazza'); settle(g);
const [x, y, w, h] = g.hotspot('manifesto_ingorgo').box, reach = 28; // 22 pixel di schermo su un iPhone in orizzontale
for (const p of [[x + w / 2, y + h / 2], [x - 6, y + h / 2], [x + w + 4, y + h / 2], [x + w / 2, y + h + 6]])
assert.equal(g.hotspotAt(p, reach)?.id, 'manifesto_ingorgo', `tocco in ${p}`);
const palio = g.hotspot('manifesto').box;
assert.equal(g.hotspotAt([palio[0] + palio[2] / 2, palio[1] + palio[3] / 2], reach)?.id, 'manifesto');
});
test('il manifesto ingrandito si chiude senza fare niente: niente festa', () => {
const g = new Game(story); g.go('piazza'); settle(g);
g.act('look', 'manifesto_ingorgo'); settle(g);
@@ -103,6 +112,18 @@ test('il manifesto ingrandito si chiude senza fare niente: niente festa', () =>
assert.ok(!g.state.flags.ingorgo && !g.closeup);
});
test('alla festa si clicca solo per andare da un posto all\'altro', () => {
const g = fromPiazza();
for (const scene of ZONE.scenes) {
g.go(scene); settle(g);
const list = g.hotspots();
assert.ok(list.length && list.every(h => h.exit), `${scene}: solo le uscite`);
assert.ok(story.scenes[scene].hotspots.some(h => !h.exit), `${scene}: di giorno c'è anche altro`);
}
g.go('piazza'); settle(g);
assert.equal(g.hotspotAt([505, 200]), null, 'la colonna, alla festa, non risponde');
});
test('alla festa le luci da palco si muovono, e solo alla festa', () => {
globalThis.Image = class { set src(v) {} };
try {