Inform e Glulx/RUINS, l'avventura comincia/La maschera facciale (non di carnevale)
Dopo aver riposto la statuetta pigmea nella cassa d’imballaggio, ritornate nel corridoio e, spingendo la lampada verso sud, varcate la soglia di quella che, alla luce della lampada al sodio, si rivela essere la sala di un magnifico Tempio che mostra segni di scavi da preesistenti miniere di calcare. Verso il lato occidentale, due lunghi cornicioni si dirigono a sud, e delle pitture particolarmente vivide e impegnative mostrano un sovrano corazzato che calpesta un prigioniero. Il Tempio poi, è dominato da una grande lastra di pietra sulla cui superficie giace una maschera facciale in mosaico di giada. La osservate attentamente per un po’, e ne deducete che è troppo bella per appartenere a una compagnia teatrale, e che quindi è autentica; soddisfatti del vostro immenso "acume archeologico", provate a indossarla (non senza averla prima fotografata) ma vi accorgete che non c’è neanche uno specchio per vedere come vi sta. Improvvisamente, attraverso gli occhi di ossidiana della maschera, qualcosa appare davanti ai vostri occhi increduli: un sacerdote mummificato, che attende che voi parliate.
La maschera facciale (non di carnevale)
[modifica | modifica sorgente]Alcuni oggetti definiti all’interno di un’avventura testuale hanno la caratteristica di poter essere indossati (e successivamente tolti) dal giocatore: ne costituiscono dei classici esempi un orologio, un paio di guanti, una maglietta e, ovviamente, una maschera, definita in Ruins come segue:
Treasure -> -> mask "maschera facciale in mosaico di giada" with name 'giada' 'mosaico' 'facciale' 'maschera' 'faccia', initial "Una maschera facciale in mosaico di giada @`e appoggiata sull'altare.", description "Sarebbe stupendo se si potesse esporre nel museo.", after [; Wear: move priest to Shrine; if (location == Shrine) "Guardando attraverso gli occhi di ossidiana della maschera in mosaico, si rivela una presenza spettrale: un sacerdote mummificato aspetta che tu parli."; Disrobe: remove priest; ], cultural_value 10, has female clothing;
Come potete vedere, un oggetto di questo tipo è contraddistinto dall’attributo clothing
. Quando la maschera viene indossata (wear
), l’oggetto priest
(il sacerdote) viene spostato nella sala del Tempio
; se poi il giocatore si trova nella sala, Inform stampa a video il relativo messaggio. Quando la maschera viene invece tolta (disrobe
) il sacerdote scompare.
Ma la vera novità di questo oggetto, sta proprio nella sua definizione, perché al posto di Object
troviamo ora Treasure
: come mai?
È arrivato il momento di parlare delle classi
. Esse si usano quando si vuole far sì che uno stesso codice venga utilizzato da più oggetti. Nel paragrafo precedente abbiamo definito l’oggetto statuette
nel seguente modo:
Object -> statuette "statuetta pigmea" with name 'serpente' 'maya' 'pigmea' 'spirito' 'preziosa' 'statuetta' 'statua', initial "C'@`e una preziosa statuetta maya qui!", description "@`E una statuetta minacciosa di uno spirito pigmeo di aspetto quasi grottesco. Ha un serpente intorno al collo.", before [; Take, Remove: if (self in packing_case) "@`E meglio aspettare che sia la fondazione Carneige a disimballare dalla cassa un manufatto cos@`i prezioso."; if (self.photographed_in_situ == false) "Questi sono gli anni '30 e non i tempi andati. Prendere un manufatto senza prima registrarlo equivale a un saccheggio."; Photograph: if (self has moved) "Cosa? Vorresti contraffare una registrazione archeologica?"; if (self.photographed_in_situ) "Non di nuovo."; ], after [; Insert: if (second == packing_case) { score = score + self.cultural_value; if (score == MAX_SCORE) deadflag = 2; "Depositat", (genderandnumber) noun, " al sicuro!"; } Photograph: self.photographed_in_situ = true; ], cultural_value 5, photographed_in_situ false, has female
Nella nostra avventura, la parte di codice relativa alle proprietà after
e before
è quella da mettere in comune tra più oggetti (i diversi tesori che il giocatore deve raccogliere e riporre nella cassa per poterla terminare). Ecco perché è stata definita la classe Treasure
:
Class Treasure with before [; Take, Remove: if (self in packing_case) "@`E meglio aspettare che sia la fondazione Carneige a disimballare dalla cassa un manufatto cos@`i prezioso."; if (self.photographed_in_situ == false) "Questi sono gli anni '30 e non i tempi andati. Prendere un manufatto senza prima registrarlo equivale a un saccheggio."; Photograph: if (self has moved) "Cosa? Vorresti contraffare una registrazione archeologica?"; if (self.photographed_in_situ) "Non di nuovo."; ], after [; Insert: if (second == packing_case) { score = score + self.cultural_value; if (score == MAX_SCORE) deadflag = 2; "Depositat", (genderandnumber) noun, " al sicuro!"; } Photograph: self.photographed_in_situ = true; ], cultural_value 5, photographed_in_situ false;
In questo modo, possiamo ridefinire l’oggetto statuette
come segue:
Treasure -> statuette "statuetta pigmea" with name 'serpente' 'maya' 'pigmea' 'spirito' 'preziosa' 'statuetta' 'statua', initial "C'@`e una preziosa statuetta maya qui!", description "@`E una statuetta minacciosa di uno spirito pigmeo di aspetto quasi grottesco. Ha un serpente intorno al collo.", has female;
Dal momento che appartiene alla classe Treasure
, ne condivide automaticamente tutto il codice in essa contenuto, e lo stesso vale per l’oggetto mask
: un bel risparmio, non vi pare?
Altre novità arrivano dall’oggetto stone_table
(il ripiano dell’altare), così definito:
Object -> stone_table "ripiano dell'altare" with name 'pietra' 'tavolo' 'lastra' 'altare' 'grande', initial "Una grande lastra di pietra che funge da tavolo o altare, domina il Tempio.", has enterable supporter static;
L’attributo enterable
si usa per quei contenitori in cui è possibile entrare e, ovviamente, uscire (se sono aperti). Qui però abbiamo anche l’attributo supporter
, che fa in modo che il giocatore possa salire sopra l’altare senza però potervi entrare (azione che in questo caso non avrebbe alcun senso):
Il Tempio Questo magnifico tempio mostra segni di scavi da preesistenti miniere di calcare, specialmente verso il lato occidentale, dove due lunghi cornicioni si dirigono verso sud. La grande porta di pietra gialla è aperta. Ci sono delle pitture impegnative e vivide qui, troppo lucide per essere guardate e ottenute mediante incisione da parte di un popolo altamente organizzato. Mostrano un sovrano corazzato che calpesta un prigioniero. Una grande lastra di pietra che funge da tavolo o altare, domina il Tempio. Sopra il ripiano dell'altare vedi una maschera facciale in mosaico di giada >sali sull'altare Ti trovi sopra il ripiano dell'altare. Una maschera facciale in mosaico di giada è appoggiata sull'altare. >g Il Tempio (sopra il ripiano dell'altare) Questo magnifico tempio mostra segni di scavi da preesistenti miniere di calcare, specialmente verso il lato occidentale, dove due lunghi cornicioni si dirigono verso sud. La lampada al sodio, posata a terra, si sta lentamente consumando. La grande porta di pietra gialla è aperta. Ci sono delle pitture impegnative e vivide qui, troppo lucide per essere guardate e ottenute mediante incisione da parte di un popolo altamente organizzato. Mostrano un sovrano corazzato che calpesta un prigioniero. Una maschera facciale in mosaico di giada è appoggiata sull'altare. >
Prima di concludere il paragrafo, proviamo ancora a vedere com'è possibile creare una porta fittizia:
Object -> StoneDoor "porta di pietra" with name 'porta' 'massiccia' 'grande' 'pietra' 'gialla', initial "Il passaggio @`e bloccato da una massiccia porta di pietra gialla.", description "@`E solo una grossa porta di pietra.", before [; Enter: self.vanish(); <<Go s_obj>>; ], react_before [; Go: if (noun == s_obj) { self.vanish(); <<Go s_obj>>; } ], vanish [; remove self; print "Non appena la tocchi, la porta svanisce.^"; ], has female locked lockable openable;
Questo genere di "trucchi" è molto apprezzato in questo tipo di avventure. In poche parole, ecco come si presenta la nuova StoneDoor
:
Corridoio in pendenza Un corridoio basso e squadrato va da nord verso sud, inclinandosi verso la fine. C'è una preziosa statuetta maya qui! Il passaggio è bloccato da una massiccia porta di pietra gialla. >apri la porta Sembra essere chiusa a chiave. >apri la porta con la chiave Non sembra entrare nella serratura. >spingi la lampada a sud Non appena la tocchi, la porta svanisce. Il Tempio Questo magnifico tempio mostra segni di scavi da preesistenti miniere di calcare, specialmente verso il lato occidentale, dove due lunghi cornicioni si dirigono verso sud. Ci sono delle pitture impegnative e vivide qui, troppo lucide per essere guardate e ottenute mediante incisione da parte di un popolo altamente organizzato. Mostrano un sovrano corazzato che calpesta un prigioniero.<br Una grande lastra di pietra che funge da tavolo o altare, domina il Tempio. Sopra il ripiano dell'altare vedi una maschera facciale in mosaico di giada.br> >spingi la lampada a nord Corridoio in pendenza C'è una preziosa statuetta maya qui! >
Apparentemente, sembra essere una vera e propria porta, mentre in realtà è solo un’illusione ottica: basta passarci attraverso (spingendo la lampada a sud o andando verso sud) che questa scompare. Occorre infine dare un’occhiata alle direzioni sud
dell’oggetto Corridor
e nord
dell’oggetto Shrine
:
Object Corridor "Corridoio in pendenza" with description "Un corridoio basso e squadrato va da nord verso sud, inclinandosi verso la fine.", n_to Square_Chamber, s_to Shrine;
e
Object Shrine "Il Tempio" with description "Questo magnifico tempio mostra segni di scavi da preesistenti miniere di calcare, specialmente verso il lato occidentale, dove due lunghi cornicioni si dirigono verso sud.", n_to Corridor,
in precedenza, entrambe le direzioni puntavano all’oggetto StoneDoor
, che era di fatto una vera e propria porta; ora, invece, StoneDoor è un oggetto qualsiasi che non può più fare da tramite per queste due stanze. Ecco quindi, il motivo per cui è necessario cambiarle[1].
Note
[modifica | modifica sorgente]