diff --git a/assets/icons/coca.svg b/assets/icons/coca.svg new file mode 100644 index 0000000..60f1d38 --- /dev/null +++ b/assets/icons/coca.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/fanta.svg b/assets/icons/fanta.svg new file mode 100644 index 0000000..04efb52 --- /dev/null +++ b/assets/icons/fanta.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/spuma.svg b/assets/icons/spuma.svg new file mode 100644 index 0000000..35e8bbe --- /dev/null +++ b/assets/icons/spuma.svg @@ -0,0 +1 @@ + diff --git a/assets/voices/andrea-0d9794e650.mp3 b/assets/voices/andrea-0d9794e650.mp3 deleted file mode 100644 index e8ac258..0000000 Binary files a/assets/voices/andrea-0d9794e650.mp3 and /dev/null differ diff --git a/assets/voices/andrea-139cc72b05.mp3 b/assets/voices/andrea-139cc72b05.mp3 new file mode 100644 index 0000000..0031e1f Binary files /dev/null and b/assets/voices/andrea-139cc72b05.mp3 differ diff --git a/assets/voices/andrea-6216c97894.mp3 b/assets/voices/andrea-6216c97894.mp3 new file mode 100644 index 0000000..9b7857b Binary files /dev/null and b/assets/voices/andrea-6216c97894.mp3 differ diff --git a/assets/voices/andrea-70fdbe36de.mp3 b/assets/voices/andrea-70fdbe36de.mp3 new file mode 100644 index 0000000..4bb7165 Binary files /dev/null and b/assets/voices/andrea-70fdbe36de.mp3 differ diff --git a/assets/voices/andrea-9631d9ce30.mp3 b/assets/voices/andrea-9631d9ce30.mp3 new file mode 100644 index 0000000..6d6040f Binary files /dev/null and b/assets/voices/andrea-9631d9ce30.mp3 differ diff --git a/assets/voices/andrea-aaa51e9e69.mp3 b/assets/voices/andrea-aaa51e9e69.mp3 new file mode 100644 index 0000000..dcf911b Binary files /dev/null and b/assets/voices/andrea-aaa51e9e69.mp3 differ diff --git a/assets/voices/andrea-ae47136080.mp3 b/assets/voices/andrea-ae47136080.mp3 deleted file mode 100644 index 2403f04..0000000 Binary files a/assets/voices/andrea-ae47136080.mp3 and /dev/null differ diff --git a/assets/voices/andrea-b143e9177f.mp3 b/assets/voices/andrea-b143e9177f.mp3 new file mode 100644 index 0000000..2dcd578 Binary files /dev/null and b/assets/voices/andrea-b143e9177f.mp3 differ diff --git a/assets/voices/andrea-d13933a255.mp3 b/assets/voices/andrea-d13933a255.mp3 deleted file mode 100644 index 17673b7..0000000 Binary files a/assets/voices/andrea-d13933a255.mp3 and /dev/null differ diff --git a/assets/voices/index.json b/assets/voices/index.json index 855e902..8e60813 100644 --- a/assets/voices/index.json +++ b/assets/voices/index.json @@ -867,6 +867,30 @@ "file": "andrea-69907b4352.mp3", "sec": 5.27 }, + "andrea|Una Fanta ghiacciata, arancione come il tramonto.": { + "file": "andrea-9631d9ce30.mp3", + "sec": 3.18 + }, + "andrea|Glu glu... arancione fino alle orecchie.": { + "file": "andrea-aaa51e9e69.mp3", + "sec": 4.08 + }, + "andrea|Una Coca col vetro appannato dal freddo.": { + "file": "andrea-70fdbe36de.mp3", + "sec": 2.52 + }, + "andrea|Fa le bollicine nel naso. Come sempre.": { + "file": "andrea-b143e9177f.mp3", + "sec": 3.34 + }, + "andrea|Una spuma bionda. Ormai la chiedono solo i nonni. E io.": { + "file": "andrea-139cc72b05.mp3", + "sec": 5.12 + }, + "andrea|Buona come ai tempi della festa.": { + "file": "andrea-6216c97894.mp3", + "sec": 2.06 + }, "andrea|Lo stecco del ghiacciolo. Appiccica ancora un po' di limone.": { "file": "andrea-942c0fe126.mp3", "sec": 4.23 @@ -915,26 +939,14 @@ "file": "tosca-133c83efc3.mp3", "sec": 1.79 }, - "andrea|Glu glu... arancione fino alle orecchie. Grazie, Tosca!": { - "file": "andrea-ae47136080.mp3", - "sec": 6.05 - }, - "tosca|Tieni.": { - "file": "tosca-db5640a086.mp3", - "sec": 0.46 - }, - "andrea|Fa le bollicine nel naso. Come sempre. Grazie!": { - "file": "andrea-d13933a255.mp3", - "sec": 4.57 + "tosca|Tieni, col vetro appannato.": { + "file": "tosca-01b56ee7c1.mp3", + "sec": 1.9 }, "tosca|La spuma bionda! Ormai la chiedono solo i nonni.": { "file": "tosca-b4008e55ce.mp3", "sec": 3.8 }, - "andrea|E io. Buona come ai tempi della festa.": { - "file": "andrea-0d9794e650.mp3", - "sec": 3.05 - }, "tosca|Cedrata. Bella fresca.": { "file": "tosca-d6b114d197.mp3", "sec": 2.24 diff --git a/assets/voices/tosca-01b56ee7c1.mp3 b/assets/voices/tosca-01b56ee7c1.mp3 new file mode 100644 index 0000000..ee14f86 Binary files /dev/null and b/assets/voices/tosca-01b56ee7c1.mp3 differ diff --git a/assets/voices/tosca-db5640a086.mp3 b/assets/voices/tosca-db5640a086.mp3 deleted file mode 100644 index 3d8bb79..0000000 Binary files a/assets/voices/tosca-db5640a086.mp3 and /dev/null differ diff --git a/src/story/story.js b/src/story/story.js index 97ff510..f6f2b07 100644 --- a/src/story/story.js +++ b/src/story/story.js @@ -92,6 +92,33 @@ export const story = { use: [{ say: 'Bevuta liscia è sprecata. Ci vuole qualcosa da inzupparci dentro.' }], }, }, + fanta: { + name: 'Fanta', + icon: { src: 'assets/icons/fanta.svg' }, + droppable: true, + actions: { + look: [{ say: 'Una Fanta ghiacciata, arancione come il tramonto.' }], + use: [{ drop: 'fanta' }, { say: 'Glu glu... arancione fino alle orecchie.' }], + }, + }, + coca: { + name: 'Coca', + icon: { src: 'assets/icons/coca.svg' }, + droppable: true, + actions: { + look: [{ say: 'Una Coca col vetro appannato dal freddo.' }], + use: [{ drop: 'coca' }, { say: 'Fa le bollicine nel naso. Come sempre.' }], + }, + }, + spuma: { + name: 'spuma bionda', + icon: { src: 'assets/icons/spuma.svg' }, + droppable: true, + actions: { + look: [{ say: 'Una spuma bionda. Ormai la chiedono solo i nonni. E io.' }], + use: [{ drop: 'spuma' }, { say: 'Buona come ai tempi della festa.' }], + }, + }, stecco: { name: 'stecco', icon: { src: 'assets/icons/stecco.svg' }, @@ -1369,9 +1396,9 @@ export const story = { nodes: { start: { options: [ - { text: 'Una Fanta.', then: [{ say: 'Eccola, ghiacciata.', who: 'tosca' }, { say: 'Glu glu... arancione fino alle orecchie. Grazie, Tosca!' }] }, - { text: 'Una Coca.', then: [{ say: 'Tieni.', who: 'tosca' }, { say: 'Fa le bollicine nel naso. Come sempre. Grazie!' }] }, - { text: 'Una spuma bionda.', then: [{ say: 'La spuma bionda! Ormai la chiedono solo i nonni.', who: 'tosca' }, { say: 'E io. Buona come ai tempi della festa.' }] }, + { text: 'Una Fanta.', when: '!has:fanta', then: [{ say: 'Eccola, ghiacciata.', who: 'tosca' }, { give: 'fanta' }] }, + { text: 'Una Coca.', when: '!has:coca', then: [{ say: 'Tieni, col vetro appannato.', who: 'tosca' }, { give: 'coca' }] }, + { text: 'Una spuma bionda.', when: '!has:spuma', then: [{ say: 'La spuma bionda! Ormai la chiedono solo i nonni.', who: 'tosca' }, { give: 'spuma' }] }, { text: 'Una cedrata, da portare via.', when: ['!has:cedrata', '!stecco_fatto'], then: [{ say: 'Cedrata. Bella fresca.', who: 'tosca' }, { give: 'cedrata' }] }, { text: 'Un ghiacciolo al limone.', when: ['!has:ghiacciolo', '!stecco_fatto'], then: [{ say: 'Al limone, l\'ultimo della cassetta.', who: 'tosca' }, { give: 'ghiacciolo' }] }, { text: 'Niente, grazie Tosca.', next: 'end', then: [{ say: 'Quando ti viene sete, sai dove trovarmi.', who: 'tosca' }] }, diff --git a/tests/story.test.mjs b/tests/story.test.mjs index 713d396..ed42451 100644 --- a/tests/story.test.mjs +++ b/tests/story.test.mjs @@ -210,7 +210,7 @@ test('si buttano solo gli oggetti che non servono', () => { settle(g); assert.deepEqual(g.state.inventory, ['squama']); for (const [id, item] of Object.entries(story.items)) - if (id !== 'libro') assert.ok(!item.droppable, `${id} serve alla storia: non deve potersi buttare`); + if (!['libro', 'fanta', 'coca', 'spuma'].includes(id)) assert.ok(!item.droppable, `${id} serve alla storia: non deve potersi buttare`); }); test('ogni oggetto ha la sua icona a pixel', () => { @@ -238,9 +238,12 @@ test('la catena del ghiacciolo: Tosca, cedrata, stecco, gomma, griglia, chiavett 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('Una Coca.'); + assert.deepEqual(g.state.inventory, ['coca'], 'la Coca finisce nell\'inventario'); answer('Un ghiacciolo al limone.'); answer('Una cedrata, da portare via.'); answer('Niente, grazie Tosca.'); + g.act('use', 'coca'); say(); 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');