La catena del ghiacciolo: la Tosca e le bibite, ghiacciolo nella cedrata, stecco e gomma, la chiavetta nella griglia del ponticino, la torcia nella casetta
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017egeN2amL84ErjfgQFtEDn
This commit is contained in:
@@ -231,3 +231,33 @@ test('le strade vanno e tornano: niente sensi unici, e ogni posto si raggiunge d
|
||||
while (queue.length) for (const b of exits[queue.shift()] ?? []) if (!seen.has(b)) { seen.add(b); queue.push(b); }
|
||||
for (const id of Object.keys(story.scenes)) assert.ok(seen.has(id), `${id} non si raggiunge`);
|
||||
});
|
||||
|
||||
test('la catena del ghiacciolo: Tosca, cedrata, stecco, gomma, griglia, chiavetta, casetta, torcia', () => {
|
||||
const g = new Game(story);
|
||||
const say = () => settle(g);
|
||||
const answer = text => { const i = g.options().findIndex(o => o.text === text); assert.ok(i >= 0, `manca «${text}»`); g.choose(i); say(); };
|
||||
g.go('tennis_chiesa'); say();
|
||||
g.act('talk', 'chiosco'); say();
|
||||
answer('Un ghiacciolo al limone.');
|
||||
answer('Una cedrata, da portare via.');
|
||||
answer('Niente, grazie Tosca.');
|
||||
assert.deepEqual(g.state.inventory, ['ghiacciolo', 'cedrata']);
|
||||
g.act('use', 'cedrata', 'ghiacciolo'); say();
|
||||
assert.deepEqual(g.state.inventory, ['stecco'], 'inzuppato e mangiato: resta lo stecco');
|
||||
g.act('talk', 'chiosco'); say();
|
||||
assert.ok(!g.options().some(o => o.text.startsWith('Un ghiacciolo')), 'il ghiacciolo era l\'ultimo');
|
||||
answer('Niente, grazie Tosca.');
|
||||
g.go('ponticino'); say();
|
||||
g.act('use', 'griglia', 'stecco'); say();
|
||||
assert.ok(!g.state.inventory.includes('chiavetta'), 'senza gomma non si attacca');
|
||||
g.go('oratorio'); say();
|
||||
g.act('take', 'gomma_terra'); say();
|
||||
g.act('use', 'gomma', 'stecco'); say();
|
||||
assert.deepEqual(g.state.inventory, ['stecco_gomma']);
|
||||
g.go('ponticino'); say();
|
||||
g.act('use', 'griglia', 'stecco_gomma'); say();
|
||||
assert.ok(g.state.inventory.includes('chiavetta'));
|
||||
g.go('area_feste'); say();
|
||||
g.act('open', 'casetta'); say();
|
||||
assert.ok(g.state.flags.casetta_aperta && g.state.inventory.includes('torcia') && !g.state.inventory.includes('chiavetta'));
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user