Newsgroup: it.comp.giochi.avventure.testuali
Titolo: [inform] Grammatica per verbo ESCI

Ciao a tutti,
Nella mia ultima (nonchè prima) avventura (ancora in versione BETA) mi
è stato fatto notare che dovrei ampliare la grammatica.
Mentre sono riuscto a gestire alcuni nuovi verbi o azioni ho alcune
difficoltà con il verbo ESCI.
Il personaggio si trova immerso in una vasca e al termine di una serie
di operazioni deve riemergere.
Ho messo come uscita dalla stanza la direzione SU/UP, ma mi è stato
fatto notare che bisognerebbe poter anche dare il comando ESCI DALLA
VASCA.
La stanza (vasca) non è un container e vorrei evitare di definirla
cosi' perchè quando ho provato il gioco non ha funzionato
correttamente.
Posso aggiustare il tiro con la grammatica?
Come?
Grazi mille anticipate
aggiungo il listato della stanza VASCA
Room  vasca "Nella vasca" 
  with  name 'vasca' 'pareti' 'cristallo',
  	description 
  		"Quattro pareti di cristallo robustissimo e
perfettamente trasparente poggiate su un basamento di acciaio, 
            il tutto pieno d'acqua e sigillato perfettamente.",
  		initial[;
            print "^^^^
            ^Sei appeso a testa in giù in questa massa d'acqua legato
mani e piedi. Devi liberarti per la gioia del pubblico e per la tua
vita.
            ^Resti immobile alcuni secondi nell'attesa che la vasca
venga rapidamente coperta con il telo che ti nasconde alla vista del
pubblico.
            ^Devi rallentare il tempo, pero' sai che non potrai
trattenere il respiro in eterno...^^";
            ],
        turns_active 0,
        each_turn[; 
        		switch (++(self.turns_active)){
        		8: "^Il tempo passa... Senti arrivare la PRIMA
contrazione Diaframmale."; 
        		14: "^Sei già alla SECONDA contrazione
Diaframmale. Devi sbrigarti, più di metà del tuo tempo se n'è andato";
        		19: "^Senti la TERZA contrazione Diaframmale.
Riesci a stento a non aprire la bocca per respirare.
        			^Sei veramente agli sgoccioli."; 
        		23: deadflag = true; "^La quarta contrazione
non arriva. Il tuo corpo governa i tuoi muscoli involontari 
        		e ti ordina di respirare. Non importa cosa c'è
fuori... non puoi resistere... ti contorci, ti agiti, devi respirare
        		^^ Apri la bocca e per un istante senti i
polmoni riempirsi di... ACQUA.
        		^^Per fortuna perdi conoscenza e non ti
accorgi di quello che accade negli istanti successivi.
        		^^Il pubblico che si agita, crisi isteriche.
        		^Qualcuno comincia a gridare 'TIRATELO FUORI,
FATE QUALCHE COSA!!!'
        		^Gli aiutanti che accorrono e sfondano le
pareti di cristallo, il palco si inonda d'aqua, ma nessuno ci fa caso.
        		^Tutti guardano solo il tuo corpo immobile."; 
        		}
        	],
        before[;
        	Go, Exit:
        		if (catena has worn || cinghia has worn){
        			if (noun == vasca)
        				print_ret "Provi a uscire
dalla vasca ma sei bloccato.";
        			else
        				print_ret "Non puoi andare da
nessuna parte così legato.";
        		}
        		else
        			if (noun == vasca)
        			playerto (palco);
        ],
        u_to palco,
        cant_go "L'unica via d'uscita è la superficie.",
  has ;

 difficoltà con il verbo ESCI.
<snip>
un hack molto semplice, ancorché poco elegante, è ridefinire la 
grammatica in modo che "Esci dalla vasca" sia una nuova azione 
completamente:
Extend 'esci' first * 'dalla' 'vasca' -> EsciVasca;
[; EsciVascaSub: <<go up>>; ];
o qualcosa di molto simile. Naturalmente puoi anche estendere tutto il 
verbo Esci e controllare se la location corrente è la vasca, passando in 
caso contrario il controllo alla libreria (per mantenere il 
comportamento di default). Un po' più carino ma meno immediato da scrivere.
ciao
S
PS a rigore però la vasca dovrebbe essere un container: qual è il 
problema che te lo impedisce?

problema che te lo impedisce?
Se imposto la vasca come container il comando esci dalla vasca
funziona, pero' smette di funzionare correttamente il conteggio delle
azioni (vedi listato) e non capisco perchč. In partica il messaggio
che deve comparire al turno 8 esce al turno 5.
Non capisco. preferisco modificare il verbo.
ciao