Il GP di Fortezza: gara dei cinquantini attorno alle mura (pista di Codex dalla planimetria, sterzo, acceleratori, miscela, buche, presentazione dei piloti coi motorini dalle foto); Via Liguri Magelli col Trappola, la targa della Ghiacciomobile e il Betino in cima alla salita; l'Arcu lancia la sfida dal Trappola e ha la voce nuova (Andrea)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GiECdCPptNRwbVzjzHbohi
This commit is contained in:
+108
-10
@@ -2,10 +2,13 @@
|
||||
// Testi, personaggi ed enigmi sono provvisori e verranno sostituiti con i ricordi di Andrea (docs/PROGETTO.md).
|
||||
// Le forme in `art` sono segnaposto disegnati sopra lo sfondo (vecchietti, squama, catena) in attesa degli sprite.
|
||||
import { ambience } from './ambience.js';
|
||||
import { piloti } from './piloti.js';
|
||||
|
||||
// Gli indizi del Trebbio per la catena della torcia (dopo le impronte, finché la torcia non c'è): uno per tappa,
|
||||
// dalla più avanti alla prima.
|
||||
const castello = say => [{ say, who: 'castello' }];
|
||||
// Prima del GP di Fortezza l'Arcu va a prendere il Betino in cima alla salita (Andrea, 28 ottobre).
|
||||
const rincorsa = level => [{ say: 'Aspettate: prendo la rincorsa, che il Betino s\'accende solo in discesa.', who: 'arcu', pose: 'point' }, { closeup: 'gara', level }];
|
||||
const torchHints = [{
|
||||
if: 'has:chiavetta',
|
||||
then: castello('Una chiavetta piccola apre una cosa piccola. All\'area feste c\'è una casetta che aspetta.'),
|
||||
@@ -184,6 +187,26 @@ export const story = {
|
||||
quit: [{ say: 'Lascio la canna ai ragazzi. Il lago non scappa, il palio sì.' }],
|
||||
draw: [],
|
||||
},
|
||||
// Il GP di Fortezza (idea di Andrea, 28 ottobre): tre giri coi cinquantini attorno alle mura, gas e sterzo come
|
||||
// nelle vecchie gare da sala giochi viste dall'alto. Chi corre sta in piloti.js. [DA ANDREA: le battute; la musica]
|
||||
gara: {
|
||||
type: 'gara', music: 'assets/audio/gara.mp3', // di Andrea (Suno)
|
||||
picture: 'assets/closeups/gp-fortezza.png', // Codex, dalla planimetria di Andrea; la strada è il tracciato
|
||||
// Corre solo chi ha dato il consenso (`consenso: null` vuol dire «da chiedere»: per ora Puntella).
|
||||
riders: piloti.filter(p => p.consenso !== null),
|
||||
names: { player: 'Andrea', cpu: 'gli altri' },
|
||||
win: [
|
||||
{ say: 'Primo! E col Fifty di serie, o quasi.' },
|
||||
{ say: 'Si rifà! Questa un vale, avevo la catena lenta.', who: 'arcu', pose: 'shrug' },
|
||||
{ set: 'gara_vinta' },
|
||||
],
|
||||
lose: [
|
||||
{ say: 'Ho preso tutta la polvere di quelli davanti.' },
|
||||
{ say: 'Il Fifty è bono. È chi ci sta sopra.', who: 'arcu', pose: 'laugh' },
|
||||
],
|
||||
quit: [{ say: 'Lascio stare. Il Fifty mi serve intero, per il palio.' }],
|
||||
draw: [],
|
||||
},
|
||||
// Il biliardo del Circolo 4 Maggio contro l'Ing. Tozzi: cinque birilli, un colpo a testa, si va a 20. [DA ANDREA: le sue battute]
|
||||
biliardo: {
|
||||
type: 'biliardo',
|
||||
@@ -2059,19 +2082,11 @@ export const story = {
|
||||
people: [
|
||||
{ who: 'arcu', at: [418, 292], facing: -1, idle: 'stand', talk: ['talk', 'explain'], blink: 'blink', every: 4.2 },
|
||||
// Oggetti statici: ordinati per profondità come la macchina del tempo, senza voce.
|
||||
// Con la depth della scena misurano circa 78 e 160 px; restano sopra il bordo di walk.
|
||||
{ who: 'betino', at: [480, 263], size: 0.767, idle: 'idle', talk: [] },
|
||||
// Con la depth della scena misura circa 160 px; resta sopra il bordo di walk. (Il Betino dell'Arcu sta in
|
||||
// cima alla salita di Via Liguri Magelli, Andrea 28 ottobre.)
|
||||
{ who: 'ghiacciomobile', at: [176, 286], size: 0.986, idle: 'idle', talk: [] },
|
||||
],
|
||||
hotspots: [
|
||||
{
|
||||
id: 'betino', name: 'il Betino', box: [441, 212, 78, 51], at: [480, 282], face: 'up', default: 'look',
|
||||
// Il motorino di Andrea (sprite di Codex, 26 ottobre); la battuta è sua.
|
||||
actions: {
|
||||
look: [{ say: 'Nessuno ha mai capito davvero il tuo immenso valore.' }],
|
||||
use: [{ say: 'O via, lascialo riposare. A pedalare oggi ci penso io.' }],
|
||||
},
|
||||
},
|
||||
{
|
||||
id: 'ghiacciomobile', name: 'la Ghiacciomobile', box: [96, 215, 160, 71], at: [240, 308], face: 'up', default: 'look',
|
||||
// La Corsa nera degli amici (sprite di Codex, 26 ottobre). Parlandole, Andrea ricorda; lei non risponde.
|
||||
@@ -2630,6 +2645,60 @@ export const story = {
|
||||
{
|
||||
id: 'al_ponticino', name: 'verso il ponticino della Carza', box: [440, 150, 90, 60], at: [480, 216], exit: { scene: 'ponticino', at: [444, 204], face: 'right' },
|
||||
},
|
||||
{
|
||||
id: 'via_liguri_magelli', name: 'Via Liguri Magelli', box: [0, 100, 70, 260], at: [30, 260], exit: { scene: 'via_liguri_magelli', at: [320, 340], face: 'up' },
|
||||
},
|
||||
],
|
||||
},
|
||||
// Via Liguri Magelli (Street View mandato da Andrea, 28 ottobre): a sinistra dal campo del Giannini. A destra la
|
||||
// casa salmone con la tenda del Trappola (il Barrettino), sul muro giallo la targa della Ghiacciomobile con la sua
|
||||
// fotina, e in cima alla salita il Betino dell'Arcu (dipinto da Codex nel quadro), di traverso verso la discesa:
|
||||
// per partire ne ha bisogno, e intanto ferma il traffico.
|
||||
via_liguri_magelli: {
|
||||
name: 'Via Liguri Magelli',
|
||||
map: [76, 97],
|
||||
background: 'assets/scenes/via-liguri-magelli.png',
|
||||
walk: [[0, 360], [0, 320], [140, 262], [226, 198], [272, 198], [400, 250], [580, 318], [640, 330], [640, 360]],
|
||||
depth: [[198, 0.3], [360, 1.1]],
|
||||
entry: [320, 340],
|
||||
speakers: { arcu: [374, 176] },
|
||||
people: [
|
||||
// L'Arcu sotto la tenda del Trappola: due minuti fa era a Campomigliaio (Andrea, 28 ottobre).
|
||||
{ who: 'arcu', at: [374, 248], facing: -1, size: 1.3, idle: 'stand', talk: ['talk', 'explain'], blink: 'blink', every: 4.2 },
|
||||
],
|
||||
hotspots: [
|
||||
{
|
||||
id: 'arcu', name: 'l\'Arcu', box: [362, 180, 26, 68], at: [352, 256], face: 'right', default: 'talk',
|
||||
actions: {
|
||||
look: [{ say: 'L\'Arcu, sotto la tenda del Trappola. Due minuti fa era a Campomigliaio.' }],
|
||||
talk: [{ dialogue: 'arcu_trappola' }],
|
||||
},
|
||||
},
|
||||
{
|
||||
// «Vai dal Trappola, la tenda è il Trappola» (Andrea). [DA ANDREA: com'è dentro, e chi c'è]
|
||||
id: 'trappola', name: 'dal Trappola', box: [316, 150, 46, 72], at: [340, 238], face: 'right', default: 'walk',
|
||||
actions: {
|
||||
look: [{ say: 'La tenda è il Trappola: sotto c\'è il Barrettino.' }],
|
||||
walk: [{ say: 'Dal Trappola ci si passa dopo. Prima il palio.' }],
|
||||
},
|
||||
},
|
||||
{
|
||||
id: 'targa', name: 'targa della Ghiacciomobile', box: [570, 130, 62, 78], at: [565, 336], face: 'right', default: 'look',
|
||||
actions: {
|
||||
look: [{ say: '«Qui riposa la Ghiacciomobile, che si è schiantata lì.»' }, { say: 'C\'è anche la fotina. Pareva sempre nuova.' }],
|
||||
},
|
||||
},
|
||||
{
|
||||
// La prima battuta è di Andrea (dal circolino, 26 ottobre).
|
||||
id: 'betino', name: 'il Betino dell\'Arcu', box: [232, 172, 40, 24], at: [250, 206], face: 'up', default: 'look',
|
||||
actions: {
|
||||
look: [{ say: 'Nessuno ha mai capito davvero il tuo immenso valore.' }, { say: 'Lassù in cima, di traverso: per partire ha bisogno della discesa. E intanto ferma il traffico.' }],
|
||||
use: [{ say: 'È il Betino dell\'Arcu. Senza una discesa davanti, un si muove.' }],
|
||||
},
|
||||
},
|
||||
{
|
||||
id: 'al_giannini', name: 'verso il campo del Giannini', box: [180, 330, 280, 30], at: [320, 345], exit: { scene: 'campo_giannini', at: [60, 250], face: 'right' },
|
||||
},
|
||||
],
|
||||
},
|
||||
// Cardetole, il rione dei verdi, dove abita Andrea: giù dalla Pieve.
|
||||
@@ -3009,6 +3078,35 @@ export const story = {
|
||||
},
|
||||
},
|
||||
},
|
||||
// L'Arcu dal Trappola (Andrea, 28 ottobre): lo scherzo sulla velocità del Betino, poi la sfida: «il giro della Fortezza» (Andrea), cioè il GP di Fortezza;
|
||||
// prima del via prende la rincorsa per accenderlo in discesa. [DA ANDREA: le battute sono provvisorie]
|
||||
arcu_trappola: {
|
||||
nodes: {
|
||||
start: {
|
||||
options: [
|
||||
{ text: 'Ma ti ho visto du\' minuti fa a Campomigliaio!', then: [
|
||||
{ say: 'E allora? Col Betino ci metto un attimo.', who: 'arcu', pose: 'explain' },
|
||||
{ say: 'In discesa.', who: 'arcu', pose: 'laugh' },
|
||||
{ say: 'E in salita?' },
|
||||
{ say: 'In salita si spinge.', who: 'arcu', pose: 'shrug' },
|
||||
] },
|
||||
{ text: 'Si fa una gara coi motorini? Il giro della Fortezza!', next: 'gara', then: [
|
||||
{ say: 'Col Betino? Io un perdo mai: un vo mai forte abbastanza da cadere.', who: 'arcu', pose: 'explain' },
|
||||
{ say: 'Come la si fa?', who: 'arcu', pose: 'talk' },
|
||||
] },
|
||||
{ text: 'Ci si vede dopo, Arcu.', next: 'end' },
|
||||
],
|
||||
},
|
||||
gara: {
|
||||
options: [
|
||||
{ text: 'Alla bona, un giro di paese.', next: 'end', then: [{ say: 'Alla bona. Chi arriva ultimo paga le paste.', who: 'arcu', pose: 'laugh' }, ...rincorsa('bona')] },
|
||||
{ text: 'Seria.', next: 'end', then: [{ say: 'Seria. Tre giri, e la paglia in curva è vera.', who: 'arcu', pose: 'explain' }, ...rincorsa('seria')] },
|
||||
{ text: 'Ginocchio in terra.', next: 'end', then: [{ say: 'Ginocchio in terra? Puntella un vede l\'ora.', who: 'arcu', pose: 'shrug' }, ...rincorsa('male')] },
|
||||
{ text: 'No, lascia perdere.', next: 'start' },
|
||||
],
|
||||
},
|
||||
},
|
||||
},
|
||||
// Da solo al campo del Circolo: Andrea decide quanto farsi male.
|
||||
basket: {
|
||||
nodes: {
|
||||
|
||||
Reference in New Issue
Block a user