! La Pietra della Luna ! Avventura Testuale realizzata da Paolo Lucchesi ! da un'idea di Paolo Lucchesi, Andrea Gnesi e Stefano Masi ! Questo prodotto e' libero, rilasciato sotto licenza GPL (Gnu Public License), ! riportata nel file allegato gpl.txt. ! Questo prodotto e' distribuito senza alcuna garanzia. L'autore non pu@`o essere ! ritenuto responsabile per qualsiasi danno dovuto direttamente o indirettamente ! all'uso del prodotto. ! ------------------------------------------ ! Il Palazzo del Barone ! ------------------------------------------ IRoom TuaStanza "La tua stanza" with description "La stanza che ti @`e stata assegnata, confortevole seppur non troppo grande, @`e arredata con un letto che pare fin troppo comodo, una sedia e un piccolo scrittoio. In un angolo un camino riscalda piacevolmente l'ambiente. L'unica porta si apre nella parete est.", name 'stanza' 'camera', e_to portatuastanza, out_to portatuastanza, cant_go "L'unica porta conduce ad est.", initial [; RightPicture(Window_img, -1, -1); ], has female; Direction -> "corridoio" with name 'corridoio' 'pianerottolo' 'scala' 'scale' 'scalinata', dir_to e_obj; Object -> "sedia" with name 'sedia' 'seggiola', description "@`E solo una normalissima sedia.", before [; Push, Pull, Turn: "Sposti la sedia di qualche palmo."; ], react_before [; Go: if (player in self) ; ], each_turn [; if (player in self) { while(child(self)) move child(self) to parent(self); move player to self; } ], has scenery supporter enterable female; Object -> "scrittoio" with name 'scrittoio' 'scrivania', description "Un piccolo scrittoio in mogano, privo di cassetti.", before [; Search, LookUnder, Push, Pull, Turn: "Lo scrittoio non nasconde niente."; ], ! cant_go "Non credi che in questo modo lo scrittoio possa servire a qualcosa.", has supporter scenery; Object -> "camino" with name 'camino' 'caminetto' 'fuoco' 'ciocco' 'ceppo' 'legno' 'legna' 'cenere', description "Nel camino brucia allegramente un bel ciocco di legno. @`E piacevole fermarsi un attimo a scaldarsi le ossa.", before [; SwitchOff: "Meglio lasciarlo acceso."; SwitchOn: "@`E gi@`a acceso."; Search: "Cercando di non bruciarti osservi l'interno del camino, ma non trovi niente di particolare."; Touch: "@`E caldo, ovviamente."; Receive: <>; ], !cant_go "@`E solo un camino." has container scenery; Object -> letto "letto" with name 'letto' 'cuscino' 'cuscini' 'lenzuolo' 'lenzuola' 'coperta' 'coperte', made false, description [; print "Il letto, comodo e ampio ma forse troppo morbido per i tuoi gusti, "; if (self.made) "@`e perfettamente rifatto."; else "@`e ancora da rifare."; ], react_before [; LieDown: <>; ], before [; Go, Enter, Climb: "Hai troppo da fare per metterti a dormire."; LookUnder: "Niente di strano sotto al letto."; Push, Pull, Turn: "Provi anche a spostare il letto, ma esso non nasconde nulla."; Open, Search: if (self.made) {self.made = false; "Disfai il letto e controlli, senza trovare alcunch@'e."; } "Controlli nel letto ma non trovi niente."; ], has scenery supporter enterable; !Object -> cassapanca "cassapanca" ! with name 'cassapanca' 'cassa' 'panca', ! before [; ! Examine: if (self has open) "Una cassapanca in legno di ciliegio, discretamente grande e aperta."; ! "Una cassapanca in legno, discretamente grande."; ! ], ! has scenery container openable enterable female; MyDoor portatuastanza with pname 'porta' '.x' 'a//' '.or' 'verso' 'ovest' '.or' 'w//' '.or' 'o//' '.or' 'west' '.p' 'porta' '.x' 'della' '.or' 'di' '.x' 'tua' 'stanza' '.or' 'camera' '.x' 'tua', short_name [; if (self in CorridoioOspiti) print "porta verso ovest"; else print "porta"; rtrue; ], door_to [; if (self in CorridoioOspiti) return TuaStanza; return CorridoioOspiti; ], door_dir [; if (self in CorridoioOspiti) return w_to; return e_to; ], found_in TuaStanza CorridoioOspiti, has open; IRoom CorridoioOspiti "Corridoio" with description "Su questo corridoio si aprono gli appartamenti degli ospiti del barone Inderus. La tua camera si trova ad ovest, e un'altra porta si apre ad est. Il corridoio prosegue verso sud.", name 'corridoio', w_to TuaStanza, s_to Pianerottolo, e_to portaguestest, cant_go "La tua stanza @`e ad ovest, il corridoio prosegue verso sud, e un'altra porta conduce a est."; Direction -> "tua camera" with name 'stanza' 'camera', dir_to w_obj, has female; Direction -> "pianerottolo" with name 'pianerottolo' 'scale' 'scala' 'scalinata', dir_to s_obj; MyDoor -> portaguestest "porta verso est" with pname 'porta' '.x' 'verso' '.or' 'a//' '.x' 'est' '.or' 'e//', description "La camera a est, sicuramente migliore di quella che ti e' stata assegnata, @`e chiusa a chiave. D'altronde non credi proprio che il barone abbia altri ospiti oltre a te.", door_to Pianerottolo, ! can't happen door_dir e_to, before [; go, enter: if (self hasnt general) { give self general; <>; } ], has locked; ! Object -> portaguestest "porta verso est" ! with name 'porta' 'verso' 'est' 'e//', ! description "La porta della camera ad est @`e chiusa, ma comunque non ti pare che la camera sia occupata.", ! door_to Pianerottolo, ! can't happen ! door_dir e_to, ! react_before [; ! go, enter: if (noun == e_obj) <>; ! knock: "Nessuna risposta..."; ! ], ! before [; ! go, enter: "La porta @`e chiusa."; ! ], ! has scenery female door openable lockable locked; ! !Object -> OutBagnoOspiti "camera" ! with name 'bagno', ! before [; Go, Enter: PlayerTo(BagnoOspiti,2); rtrue; ], ! has scenery; !IRoom BagnoOspiti "Stanza da bagno" ! with description ! "Questa stanza da bagno @`e decisamente ben fornita. Ci sono un lavabo una vasca in pietra, e un camino acceso. L'unica uscita @`e ad ovest.", ! name 'bagno', ! scenic ! 'lavabo' 'lavandino' 0 "Un largo lavabo in pietra, sfortunatamente vuoto." ! 'pentola' 'camino' 'fuoco' 'caminetto' 0 "Il fuoco nel camino @`e acceso, ma la grossa pentola @`e vuota.", ! w_to CorridoioOspiti, out_to CorridoioOspiti, ! cant_go "Puoi solo andare ad ovest.", ! has light; ! !Object -> vasca "vasca" ! with name 'vasca', ! description "Una vasca in pietra ornata, grande a sufficienza perch@'e vi entrino almeno tre persone. Al momento @`e vuota.", ! has scenery container enterable female open; IRoom Pianerottolo "Pianerottolo al piano superiore", with description "La larga scalinata in pietra che porta al piano superiore del palazzo termina su questo piccolo pianerottolo. Da qui due corridoi conducono verso nord, agli appartamenti degli ospiti e verso est, alle stanze della servit@`u. Un'arcata a sud conduce varso gli appartamenti del barone Inderus.", name 'pianerottolo', !before [; ! Exit: <>; !], n_to CorridoioOspiti, e_to CorridoioServitu, s_to AnticameraBarone, d_to Scalinata, cant_go "I corridoi si dirigono verso nord e verso est, mentre la scala scende al piano inferiore e l'arcata si apre nella parete sud."; Direction -> "tua camera" with name 'stanza' 'camera', dir_to n_obj, has female; Direction -> "arcata" with pname 'anticamera' '.p' 'appartamenti' '.or' 'camera' 'del' 'barone' '.p' 'arco' '.or' 'arcata', dir_to s_obj, has female; Object -> scalinataup "scalinata" with pname 'scala' '.or' 'scalinata' '.or' 'gradini' '.or' 'scalini' '.p' 'piano' 'inferiore', description "La scala che porta al piano inferiore @`e larga e non troppo ripida.", before [; Climb: "La scala scende soltanto."; Exit, Enter: <>; ], has scenery female concealed; NPC -> nilis with short_name [; if (self has proper) print "Nilis"; else print "cameriera"; rtrue; ], name 'nilis' 'cameriera' 'giovane' 'ragazza', article "la", description [; if (self has proper) print "Nilis "; else print "La cameriera "; "@`e una ragazza di non pi@`u di vent'anni, la figura esile e ben formata, i lineamenti del volto quanto meno piacevoli a vedersi."; ], spy 0, vanished FALSE, count 0, path 0, conversor nilistalk, life [; if (player has invisible) { give player ~invisible; print "Come se non ti avesse notato, la ragazza ha un sobbalzo quando ti vede all'improvviso.^"; } Answer: "Non credo proprio che la ragazza possa esserti d'aiuto..."; Kiss: "Provi ad avvicinarti alla giovane, ma desisti quando ti rendi conto che le tue attenzioni non sono gradite..."; Greet: if (self hasnt proper || self in tuastanza) <>; self.talkto(true); "@<>^ @<>"; Give, Show: if (noun == mandato) "Non ti pare una buona idea rivelare pubblicamente chi sei..."; "Non credi che ", (the)noun, " possa interessare ", (arta)self, "."; ThrowAt, Attack: "Non attaccheresti mai una ragazza indifesa..."; ], lifedefault [; "La cameriera non sembra averti prestato attenzione..."; ], each_turn [; give m_nilis ~locked; startdaemon(self); if (self in TuaStanza && (self.spy == 0)) { self.spy = 1; print "^Ti sembra che ", (name)self, ", pi@`u che riassettando, stesse curiosando tra la tua roba; per fortuna non hai lasciato nulla di compromettente in camera...^"; } if (real_location == SalaPranzo && phase==7) { self.count++; if (self.count>=2) { Achieved(28); addhint(h_sparizioni); self.vanished=true; give m_sparizioni ~locked; remove self; remove bano; remove bris; iarin.talk=5; print "^Ad un tratto vedi la giovane "; if (self has proper) print "Nilis"; else print "cameriera"; print " fermarsi immobile, l'espressione sconvolta di un grido silenzioso sul volto, avvolta da una tenuissima cappa di oscurit@`a. In un terribile attimo la sua figura pare perdere di corporeit@`a fino a sparire nel nulla.^"; if (ishere(iarin)) { give nilis proper; print "^", (The)iarin, " per un lungo attimo fissa impietrita il punto dove si trovava la giovane, mentre sussurra soltanto il suo nome: @<> e una sola lacrima scorre sul suo volto. Poi si volta verso di te: @<>^"; } print "^"; remark(6); rtrue; } } ], daemon [; ! Nilis spiona if (real_location==DavantiPalazzo or Biblioteca && nilis hasnt general && phase<4) { give nilis general; move nilis to TuaStanza; rtrue; } if (phase >= 7) rtrue; ! Movimenti Nilis if (self in Pianerottolo && random(5)==1) { self.path = 0; npcmove(self, d_obj, Scalinata, " scende al piano inferiore.", " arriva dal piano superiore."); rtrue; } if (self in Scalinata && random(2)==1 && self.path == 0) { npcmove(self, n_obj, Salone, " si dirige verso il salone."); rtrue; } if (self in Scalinata && random(2)==1 && self.path == 1) { npcmove(self, u_obj, Pianerottolo, " sale al piano superiore.", "La giovane cameriera arriva salendo la scalinata."); rtrue; } if (self in Salone && random(5)==1 && self.path == 0) { npcmove(self, e_obj, SalaPranzo, " si dirige a est, verso la sala da pranzo."); rtrue; } if (self in Salone && random(6)==1) { self.path = 1; npcmove(self, s_obj, Scalinata, "La giovane cameriera si dirige verso sud.", " arriva dal salone."); rtrue; } if (self in SalaPranzo && random(4)==1) { self.path = 1; npcmove(self, w_obj, Salone, " ritorna verso il centro del salone.", " ritorna qui dalla sala da pranzo."); rtrue; } if (self in TuaStanza && self.spy == 1) {self.spy == 2; rtrue; } if (self in TuaStanza && self.spy == 2 && random(3)==1) { npcmove(self, e_obj, CorridoioOspiti, " abbandona la tua stanza con fare quasi imbarazzato.", " esce dalla porta della tua stanza."); rtrue; } if (self in CorridoioOspiti && random(4)==1) { self.path = 1; npcmove(self, s_obj, Pianerottolo, " si dirige verso sud.", " arriva dal corridoio che porta alla tua camera."); } ], has female; Object nilistalk with before [flag; if (nilis in TuaStanza && self hasnt general) { give self general; if (self hasnt proper) { give nilis proper; print "@<>^ @<> La voce di Nilis trema leggermente mentre ti risponde.^"; pretalked = 1; return flag; } else print "@<>^ @<> la voce di Nilis trema leggermente mentre ti risponde, @<>.^"; pretalked = 1; return flag; } if (nilis hasnt proper) { give nilis proper; print "@<>^ @<>^"; pretalked = 1; return flag; } if (flag && easy) { if (t_nilis_barone.cnumber == 0 && nilis.cnumber >= 1) { t_nilis_barone.act(); rtrue; } if (t_nilis_culti.cnumber == 0 && nilis.cnumber >= 2) { t_nilis_culti.act(); rtrue; } if (t_nilis_donna.cnumber == 0 && nilis.cnumber >= 1 && m_donna hasnt locked) { t_nilis_donna.act(); rtrue; } } rfalse; ], description "@<>^ @<>" "@<>^ @<>" "@<>^ @<>" "Non ti sovviene altro da dire a Nilis, al momento.", cant_go [; if (pretalked) print "^"; print_ret (The)nilis, " ascolta la tua domanda per poi rispondere: @<>"; ]; Topic -> with name 'lei' 'ella' 'se' '.x' 'stessa' 'cameriera' 'nilis', !metatopic m_nilis, before [; if (nilis hasnt proper) { give nilis proper; "@<>^ @<>"; } ], description [; give m_hila ~locked; give m_rabam ~locked; "@<>^ @<> sorride mentre ti risponde, @<>"; ] "@<>^ @<>" "@<>^ @<>" "Non hai altro da chiederle."; Topic -> with name 'genitori' 'parenti', description [; give m_hila ~locked; give m_rabam ~locked; "@<>^ @<>"; ] "Forse dovresti chiedere specificatamente del padre o della madre."; Topic -> t_nilis_barone with metatopic m_barone, description "@<>^ @<>" "@<>^ @<>" "@<>^ @<<@`E affabile e cortese, e generoso a suo modo. Ha solo l'abitudine di prendersi certe libert@`a con le giovani donne attorno a lui.@>> Nilis arrossisce leggermente dicendo le ultime parole." "Pensi che ti abbia detto abbastanza."; Topic -> with metatopic m_biblioteca, description "@<>^ @<>" "@<>^ @<>" "@<>^ @<>"; Topic -> t_nilis_culti with metatopic m_culti, description [; if (self has proper) print "@<>^ Per un attimo la ragazza distoglie gli occhi prima di rispondere: @<>."; ] "@<>^ @<> la voce di Nilis trema leggermente, @<>" "@<>^ @<>" "Non credi che ti abbia detto tutto, ma allo stesso tempo non pensi che ti dir@`a altro. Comunque il suo consiglio di chiedere all'osteria potrebbe essere valido."; Topic -> with metatopic m_figli, description "@<>^ La ragazza pare sorpresa dalla tua domanda, ma candidamente risponde: @<>" "La giovane nega di aver mai sentito parlare dei ~Figli della Valle~."; Topic -> t_nilis_donna with metatopic m_donna, description "@<>^ @<>" "@<>^ @<>" "Non credi che la ragazza sappia altro, ma ti chiedi come mai quella strana donna l'abbia osservata a lungo."; Topic -> with metatopic m_naradas, description "@<>^ @<>" "@<>^ @<>" "Non credi che abbia da dirti qualcosa di pi@`u oltre al fatto che trova Naradas leggermente inquietante."; Topic -> with name 'madre' 'mamma', metatopic m_hila, description "@<>^ @<>" "@<>^ @<>" "Non credi che abbia altro da dire su sua madre."; Topic -> with name 'padre' 'babbo' 'pap@`a' 'papa' 'papa^', metatopic m_rabam, description "@<>^ @<>" "@<>^ @<>" "Non credi che voglia dirti altro su suo padre."; Topic -> with metatopic m_vade, description "@<>^ @<>" "@<>^ @<>^ @<>" "Nilis pare fidarsi di Vade, e sostiene che egli sia un caro amico dei suoi genitori. Non credi che voglia dirti altro."; Topic -> with name 'nipote', metatopic m_iarin, description [; give iarin proper; "@<>^ @<>"; ] "@<>^ @<>" "@<>^ @<> Ti pare che Nilis accenni un sorriso." "@<>^ @<>" "Non hai altro da chiedere. Per@`o hai scoperto che Iarin @`e una cara amica della cameriera."; Topic -> t_nilis_dippin with metatopic m_dippin, description "@<>^ @<>" "@<>^ @<<@`E molto rigido e intransigente con i fedeli e molto indulgente con se stesso e con coloro che sanno ricambiarlo.@>>" "@<>^ @<>" "Sai gi@`a che lei non stima il sacerdote, e che lo trova bigotto e ipocrita. Non hai altro da chiedere."; Topic -> with metatopic m_dei, description "@<>^ @<>" "Non pensi ti serva chiedere altro."; Topic -> with metatopic m_osteria, description "@<>^ @<>"; Topic -> with metatopic m_tempio, description [; give m_dippin ~locked; "@<>^ @<>"; ] [; t_nilis_dippin.act(); ]; Topic -> with metatopic m_villaggio, description "@<>^ @<>" "@<>^ @<>" "Non hai altro da chiedere a questo proposito."; Topic -> with metatopic m_foresta, description "@<>^ @<>" "@<<@`E molto vasta la foresta?@>>^ @<>" "Non hai altro da chiedere a proposito della foresta."; IRoom CorridoioServitu "Corridoio", with description "Questo corridoio, in realt@`a decisamente spoglio rispetto al resto del palazzo, conduce agli alloggi della servit@`u. Vedi due porte, verso sud e verso nord, evidentemente le loro stanze.", name 'corridoio', w_to Pianerottolo, n_to portanaradas, s_to portasud, cant_go "Il corridoio si estende verso ovest, e due porte si aprono verso nord e verso sud."; Direction -> "pianerottolo" with name 'pianerottolo' 'scale' 'scalinata' 'scala', dir_to w_obj; MyDoor -> portasud "porta verso sud" with !name 'porta', pname 'porta' '.x' 'a//' '.or' 'verso' 'sud' '.or' 's//', door_to Pianerottolo, ! can't happen door_dir s_to, has locked; MyDoor portanaradas with ! parse_name [w f t k; ! k = wn; ! if (NextWord() ~= 'porta') return 0; ! f = 1; ! w = NextWord(); ! if (w == 'verso' or 'a//') { f++; w=NextWord(); } ! if (self in corridoioservitu && wordinproperty(w, n_obj, name)) return ++f; ! if (self in cameranaradas && wordinproperty(w, s_obj, name)) return ++f; ! wn = k+1; ! w = NextWord(); f=1; ! if (w == 'della' or 'di') { f++; w=NextWord(); } ! if (w == 'camera') { f++; t=true; w=NextWord(); } ! if (w == 'di') { f++; w=NextWord(); } ! if (w == 'naradas') { f++; t=true; } ! if (t) return f; ! wn = k +1; return 1; ! ], pname 'porta' '.x' 'a//' '.or' 'verso' 'nord' '.or' 'n//' '.p' 'porta' '.x' 'della' '.or' 'di' '.x' 'camera' '.x' 'di' '.x' 'naradas', short_name [; if (self in CorridoioServitu) print "porta verso nord"; else print "porta"; rtrue; ], door_to [; if (self in CorridoioServitu) return CameraNaradas; return CorridoioServitu; ], door_dir [; if (self in CorridoioServitu) return n_to; return s_to; ], ! each_turn [; ! if (self in CorridoioServitu) { self.&pname-->5 = 'nord'; self.&pname-->7 = 'n//'; } ! if (self in CameraNaradas) { self.&pname-->5 = 'sud'; self.&pname-->7 = 's//'; } ! ], with_key chiavenaradas, found_in CorridoioServitu CameraNaradas, has locked; IRoom CameraNaradas "Camera di Naradas" with description "La camera di Naradas @`e confortevole e ben arredata. Il letto pare comodo, non troppo morbido, e un camino in un angolo riscalda la stanza. Un comodino trova posto accanto al letto e un armadio prende un'intera parete. La porta @`e a sud.", name 'camera' 'stanza', s_to portanaradas, cant_go "L'unica porta @`e verso sud." has female; Direction -> "corridoio" with name 'corridoio' 'pianerottolo' 'scala' 'scale' 'scalinata', dir_to s_obj; Object -> "letto" with name 'letto' 'cuscino' 'cuscini' 'lenzuolo' 'lenzuola' 'coperta' 'coperte', description "Un bel letto di mogano, evidentemente Naradas ama trattarsi bene.", react_before [; LieDown: <>; ], before [; Go, Enter, Climb: "Non @`e il tuo letto."; LookUnder: "Non trovi niente sotto il letto."; Push, Pull, Turn: "Provi anche a spostare il letto, ma esso non nasconde nulla."; Open, Search: "Perquisisci attentamente il letto di Naradas ma non trovi niente."; ], has scenery supporter enterable; Object -> "camino" with name 'camino' 'caminetto' 'fuoco' 'ciocco' 'ceppo' 'legno' 'legna' 'cenere', description "Nel camino un ceppo di legno sta finendo di bruciare.", before [; SwitchOff: "Tra poco si spegner@`a da solo."; SwitchOn: "Non servirebbe a niente ravvivare il fuoco."; Search: "Non trovi niente all'interno del camino."; Touch: "@`E caldo, ovviamente."; Receive: "Meglio non mettere niente nel camino. Il fuoco non @`e ancora del tutto spento."; ] !cant_go "@`E solo un camino." has scenery container; Prop -> comodinonaradas "comodino" with name 'comodino', description "Un comodino semplice, privo di cassetti.", before [; Search, LookUnder, Push, Pull, Turn: "Il comodino non nasconde niente."; Receive: if (noun hasnt legible) "Meglio non appoggiare cose sul comodino."; ], has supporter; Object -> armadio "armadio" with name 'armadio' 'vestiti' 'vestito' 'abiti' 'abito', before [; Examine: if (self has open) <>; "L'armadio @`e chiuso."; Search: if (child(self)) rfalse; if (self hasnt open) print "Apri l'armadio e cerchi"; else print "Cerchi"; give self open; " tra gli abiti di Naradas ma non trovi niente."; LookUnder: "Non trovi niente sotto l'armadio."; Push, Pull, Turn: "L'armadio non @`e facile da spostare, ma comunque ti sembra proprio non nasconda niente."; ], has scenery container openable enterable female; IRoom AnticameraBarone "Anticamera" with description "Gi@`a l'anticamera dell'appartamento del barone Inderus @`e arredata con uno sfarzo maggiore rispetto alle altre parti del palazzo. Una parete @`e quasi completamente occupata da un affresco, e la stanza @`e illuminata non da torce ma da ornati candelabri in argento. Una scrivania @`e posizionata in un angolo, accanto ad una porta che conduce verso est, mentre un'arcata si apre verso la scala principale, a nord.", name 'anticamera', n_to Pianerottolo, out_to Pianerottolo, e_to portabarone, cant_go "L'unica porta conduce verso est, mentre un'arcata si apre nella parete nord, verso la scalinata.", each_turn [; if (naradas notin self) addhint(h_naradas); ], has female; Direction -> "arcata" with name 'pianerottolo' 'scala' 'scale' 'scalinata' 'arco' 'arcata', dir_to n_obj, has female; Prop -> "affresco" with name 'affresco' 'quadro' 'dipinto', description "L'affresco riproduce la scena di una battaglia in cui la fazione che sta riportando la vittoria @`e guidata da un cavaliere sul cui scudo sono riportate le insegne del casato degli Inderus. Per quanto tu ci pensi, non ti ricordi occasioni in cui gli avi del barone si sono distinti per imprese del genere.", cant_go "@`E solo un affresco sulla parete."; Prop -> "candelabri" with name 'candelabri' 'candelabro' 'candele' 'candela' 'candelieri' 'candeliere', description "I candelabri spandono, oltre che luce, un'idea di eccessivo lusso.", before [; Take, Push, Pull: "I candelabri sono ben fissati alle pareti."; ], cant_go "Non credi che i candelabri possano esserti utili a qualcosa."; NPC -> naradas "Naradas" with name 'naradas' 'maggiordomo' 'segretario', description "Seduto alla sua scrivania, Naradas, il maggiordomo del palazzo nonch@'e segretario personale del barone Inderus, @`e un uomo di mezza et@`a, alto e di corporatura quasi esile. Il suo volto affilato non ispira certo simpatia, ma suggerisce piuttosto l'idea di un'efficienza quasi maniacale.", keygiven false, talkgen false, showletter false, hidekey false, greet false, conversor naradastalk, life [ ; if (player has invisible) { give player ~invisible; print "Naradas rialza gli occhi dalla sua scrivania, come se ti notasse in questo momento.^"; } Answer: "Naradas sembra scrutare l'espressione del tuo volto, perlesso."; Greet: if (self.cnumber == 0 or 3) <>; self.talkto(true); "@<>^ @<>"; Show, Give: if (noun==mandato) { if (~~self.showletter) { self.showletter=TRUE; give m_parnias ~locked; "Naradas legge velocemente il tuo mandato, per poi dire: @<>"; } "@<>"; } "Non pensi proprio che a Naradas interessi ", (the)noun, "."; Kiss, ThrowAt, Attack: "Non ti pare una buona idea..."; !default: "Naradas, immerso nel suo lavoro, non sembra nemmeno prestarti attenzione."; ], lifedefault "Naradas, immerso nel suo lavoro, non sembra nemmeno prestarti attenzione.", orders [; Give: if (noun==chiavebiblioteca) { if (~~self.keygiven) { self.keygiven=1; Achieved(2); move chiavebiblioteca to player; "@<>^ @<<@`E interessato alla nostra biblioteca? Il barone vi accede molto raramente, per non dire mai. Comunque le auguro buona lettura...@>>^ Dicendo questo Naradas ti porge una chiave."; } "@<>^ @<>"; } "@<>"; ], rs 0, each_turn [; if ((~~self.hidekey) && phase>=5) { self.hidekey=true; self.greet=true; "^Mentre entri vedi Naradas che ripone qualcosa all'interno del cassetto della sua scrivania."; } if ((~~self.greet) && player hasnt invisible) { self.greet=true; self.talkto(false); "Come entri Naradas ti rivolge un cenno di saluto."; } if (silenceturns > 2 && random(3) == 1) { switch(++self.rs) { 2: "Naradas continua silenziosamente il suo lavoro."; 5: "Naradas mette in ordine le pratiche sulla sua scrivania."; 8: "Naradas scorre una delle pile di fogli prima di estrarne uno e spostarlo su di un altra pila."; 10: self.rs = 0; } } ], react_before [; Go: if (noun == e_obj or portabarone && player hasnt invisible && guardia in location) { if (barone notin AppartamentiBarone) "Come provi ad avvicinarti alla porta, Naradas dice: @<> A questo punto, vista anche la presenza della guardia, pensi che sia meglio non provare ad entrare."; "Come provi ad avvicinarti alla porta, Naradas ti si rivolge dicendo: @<>. Il tono fermo della voce di Naradas e la presenza della guardia ti spingono a rinunciare al tuo proposito."; } ], has proper transparent; Object naradastalk with before [flag; if (dippin.called >= 4 && dippin.called <=8) "Meglio non interrompere la discussione."; if (flag && easy) { if (naradas.cnumber>=1 && m_biblioteca hasnt locked && (~~naradas.keygiven)) { t_naradas_biblio.act(); rtrue; } if (naradas.cnumber>=2) switch(++self.number) { 1: t_naradas_culti.act(); rtrue; 2: t_naradas_parnias.act(); rtrue; 3: if (m_dippin has locked) { t_naradas_tempio.act(); self.number--; rtrue; } t_naradas_dippin.act(); rtrue; 4: t_naradas_miniere.act(); rtrue; } } rfalse; ], number 0, description "@<>^ @<>" "@<>^ @<>" "@<>^ @<>" "@<>^ @<>" "Non ti sovviene altro che potreti chiedere a Naradas, al momento.", cant_go "Naradas ascolta la tua domanda e risponde con voce asciutta: @<>"; Topic -> with name 'lui' 'se' 'stesso' 'egli', metatopic m_naradas, description "@<>^ @<>" "@<>^ @<>" "Naradas ti ha detto che lavora qui da sette anni, e che si occupa di chi lavora a palazzo e di alcune questioni relative al governo della valle. Non hai altro da chiedere."; Topic -> with metatopic m_barone, description "@<>^ @<>" [; print "@<>^"; if (barone notin AppartamentiBarone) "@<>"; "@<>"; ]; Topic -> t_naradas_biblio with metatopic m_biblioteca, description [; if (~~naradas.keygiven) { naradas.keygiven=TRUE; Achieved(2); move chiavebiblioteca to player; "@<>^ @<<@`E interessato alla nostra biblioteca? Il barone vi accede molto raramente, per non dire mai. Comunque le auguro buona lettura...@>>^ Dicendo questo Naradas ti porge una chiave."; } "@<>^ @<>"; ]; Topic -> t_naradas_parnias with metatopic m_parnias, description "@<>^ @<>" "@<>^ @<>" "@<>^ @<>" "Naradas ti ha gi@`a fornito un'informazione importante: secondo il suo parere, @`e stato il conte Parnias - per cercare di annettere questo feudo - a mettere in giro le voci che hanno portato al tuo incarico."; Topic -> t_naradas_culti with metatopic m_culti, description [; give m_parnias ~locked; "@<>^ @<>"; ] "@<>^ @<>" "Non credi che Naradas potrebbe dirti altro a proposito. Evidentemente non crede che ci sia niente di vero, ma ti ha consigliato di chiedere gi@`u al villaggio."; Topic -> with metatopic m_figli, description "@<>^ @<<@'E un nome che non mi suona nuovo.@>> risponde lui, @<>" "@<>^ @<>" "Naradas crede di aver gi@`a sentito parlare dei ~Figli della Valle~, ma purtroppo non ricorda dove."; Topic -> t_naradas_miniere with metatopic m_miniere, description [; give m_parnias ~locked; "@<>^ @<>"; ] "@<>^ @<>" "A detta di Naradas le miniere sono ormai esaurite, ma il conte Parnias non ci crede."; Topic -> with metatopic m_hila, description "@<>^ @<>" "@<>^ @<<@`E una buona cuoca, non c'@`e molto altro da aggiungere." "Non hai altro da chiedere."; Topic -> with name 'cameriere', metatopic m_nilis, description [; if (self hasnt general) { give self general; "@<>^ @<>"; } if (nilis.spy && self hasnt worn) { give self worn; "@<>^ @<>"; } "Non ti sovviene altro da chiedere."; ]; Topic -> t_naradas_dippin, with metatopic m_dippin, description [; give dippin proper; print "@<>^"; switch(dippin.called) { 0: dippin.called=1; "@<>"; 1,2: "@<>"; default: "@<>"; } ]; Topic -> t_naradas_tempio with metatopic m_tempio, description [; give m_dippin ~locked; "@<>^ @<>"; ] [; t_naradas_dippin.act(); ]; Topic -> with metatopic m_vade, description "@<>^ @<>" "@<>^ @<>" "Non pensi che Naradas possa darti altre informazioni sull'alchimista."; Topic -> with metatopic m_dei, description "@<>^ @<>" "Non hai altro da chiedere."; Topic -> with metatopic m_osteria, description "@<>^ @<>"; Topic -> with metatopic m_palazzo, description "@<>^ @<>" "@<>^ @<>" "Non hai altro da chiedere sull'argomento, e tutto sommato non sei cos@`i interessato al palazzo."; Topic -> with metatopic m_villaggio, description "@<>^ @<>" [; give m_biblioteca ~locked; "@<>^ @<>"; ] "Non credi di avere altre domande sul villaggio."; Topic -> with metatopic m_valle, description "@<>^ @<>" "@<>^ @<>" "Non ti vengono altre domande a proposito della valle."; Topic -> with metatopic m_foresta, description "@<>^ @<> risponde, @<>^" "@<>^ @<>" "Non hai altro da chiedere."; Topic -> with metatopic m_fiume, description "@<>^ @<>" "Non hai altro da chiedere."; Topic -> with metatopic m_pietra, description "@<> @<>" "Non credi che Naradas sappia altro."; NPC guardia "guardia" AnticameraBarone with name 'guardia' 'soldato' 'armigero', description [; print "Un soldato della guardia personale del barone sorveglia la porta ad est. Considerando la sua stazza e corporatura, non vorresti mai doverti scontrare con lui"; if (naradas notin AnticameraBarone) print ", anche se adesso ha sul volto un'espressione di sgomento e terrore che lo rende meno temibile"; "."; ], each_turn [; if (self hasnt general && player hasnt invisible && naradas notin AnticameraBarone) { give self general; addhint(h_naradas); "^@<> dice convulsamente la guardia, @<>"; } ], conversor guardiatalk, life [; if (player has invisible) if (naradas in AnticameraBarone) print "La guardia sembra accorgersi della tua presenza, ma non si muove dal suo posto.^"; else print "La guardia lancia un'urlo molto poco marziale quando ti vede apparire davanti ai suoi occhi.^"; give player ~invisible; if (naradas in AnticameraBarone) "La guardia grugnisce qualcosa di incomprensibile. Meglio lasciarla in pace."; Greet: if (guardia hasnt general || self.cnumber == 0) <>; self.talkto(); "La guardia @`e terrorizzata e ti sta fissando come se si aspettasse delle risposte o un aiuto."; Answer: "La guardia @`e evidentemente terrorizzata e confusa."; Kiss, ThrowAt, Attack: "Pessima idea..."; ], lifedefault [; if (self has general) "L'uomo, evidentemente spaventato e confuso, farfuglia qualcosa di cui non afferri il senso."; "Un ringhio incomprensibile ma eloquente @`e l'unica risposta dell'uomo."; ], react_before [; Go: if (noun == e_obj or portabarone) { if (player has invisible) { print "Attendi il momento propizio e ti intrufoli negli appartamenti del barone.^"; rfalse; } if (naradas in self) rfalse; if (self has general) { print "La guardia prova per un attimo, quasi per abitudine, a pararsi di fronte a te, ma poi vede il tuo sguardo e decide di lasciarti passare.^"; rfalse; } "Come provi ad avvicinarti alla porta la guardia ti si para davanti grugnendo qualcosa di incomprensibile. Il tono minaccioso della sua voce ti fa capire che non ti @`e permesso entrare negli appartamenti del barone."; } ], has female; Object guardiatalk with before [flag; if (guardia hasnt general) "La guardia non sembra molto disposta a parlare."; if (flag && easy && guardia.cnumber == 1) { guardia.cnumber++; t_guardia_naradas.act(); rtrue; } ], description "@<>^ @<>" "@<>^ @<>" "@<>^ @<>" "L'uomo @`e confuso e spaventato dopo aver visto Naradas sparire nel nulla, non pensi possa dirti altro.", cant_go [; if (pretalked) print "^"; if (self has general) "Alla tua domanda l'uomo farfuglia qualcosa con voce tremante, evidentemente non ne sa niente."; "Alla tua domanda l'uomo risponde: @<>"; ]; Topic -> with metatopic m_barone, description [; print "@<>^"; if (barone notin AppartamentiBarone) "@<>"; if (self has general) "@<>"; "@<>"; ]; Topic -> t_guardia_naradas, with metatopic m_naradas, description "@<>^ @<<@`E stato terribile... Il signor Naradas @`e sparito nel nulla, da un momento all'altro... L'ho visto sparire... Era davanti a me, poi l'ho visto sorridere e incrociare le braccia, e un attimo dopo non c'era pi@`u...@>>" "@<>^ @<>" "@<>^ @<>" "Non hai altro da chiedere."; Object scrivanianaradas "scrivania" AnticameraBarone with name 'scrivania' 'tavolo' 'scrittoio' 'cassetto' 'cassetti', description "La scrivania di Naradas @`e in legno di ciliegio, robusta e ben costruita, dotata di un cassetto capiente. Pur essendo pratica e funzionale, @`e un bell'oggetto e deve essere costata alquanto.", before [; Open, Search: if (naradas in parent(self)) "Con Naradas presente non puoi metterti a frugare nella sua scrivania."; give self open; if (self has general) "Fogli, documenti, scartoffie... nient'altro di interessante."; give self general; move chiavenaradas to player; "Aprendo il cassetto della scrivania trovi al suo interno una piccola chiave in ottone. La prendi, potrebbe servire a qualcosa."; Close: if (naradas in parent(self)) <>; if (self has open) { give self ~open; "Richiudi i cassetti."; } "Ti sembra che tutti i cassetti siano chiusi."; Lock, Unlock: if (naradas in parent(self)) "Dovresti avvicinarti alla scrivania, e con Naradas presente non @`e facile."; "I cassetti non hanno serratura."; Push, Pull, Turn, LookUnder: if (naradas in parent(self)) "Sicuramente non mentre Naradas @`e presente."; "La scrivania non nasconde niente."; Receive: "Meglio non lasciare oggetti in giro."; ], has female scenery supporter; Object chiavenaradas "chiave di ottone" with pname 'chiave' '.x' 'di' '.x' 'd^' '.x' 'ottone', description "Una piccola, semplice chiave d'ottone.", has female; MyDoor portabarone "porta" with pname 'porta' '.p' 'porta' '.x' 'degli' '.or' 'della' 'appartamenti' '.or' 'camera' '.or' 'stanza' '.x' 'del' '.x' 'barone', door_to [; if (location==AnticameraBarone) return AppartamentiBarone; return AnticameraBarone; ], door_dir [; if (location==AnticameraBarone) return e_to; return w_to; ], found_in AnticameraBarone AppartamentiBarone; IRoom AppartamentiBarone "Gli appartamenti del barone" with description "Il lusso e lo sfarzo degli appartamenti del barone Inderus lasciano quasi senza fiato. Un arazzo che occupa quasi un'intera parete e un vasto letto a baldacchino sono le prime cose che saltano allo sguardo. Comode poltrone, trofei di caccia, armature e un vasto tappeto completano l'arredamento di questa vasta camera.", name 'camera' 'appartamenti' 'stanza', w_to portabarone, out_to portabarone, cant_go "L'unica porta conduce ad ovest.", each_turn [; if (self has general) { give self ~general; "^Appena entri ti rendi conto che non c'@`e traccia del barone. Evidentemente anche lui deve essere sparito nel nulla."; } ], has light pluralname; Direction -> "anticamera" with name 'anticamera' 'corridoio' 'pianerottolo' 'scala' 'scalinata' 'scale', dir_to w_obj, has female; Prop -> "arazzo" with name 'arazzo' 'quadro' 'dipinto', description "L'arazzo rappresenta una scena di caccia in cui, ben poco realisticamente, un cavaliere @`e accompagnato nella battuta da ragazze che indossano ben poco.", before [; Search, Push, Pull, LookUnder: "L'arazzo non sembra nascondere niente."; Take: "L'arazzo @`e ben fissato alla parete."; ], cant_go "@`E solo un arazzo."; Object -> "letto" with name 'letto' 'cuscino' 'cuscini' 'lenzuolo' 'lenzuola' 'coperta' 'coperte' 'baldacchino', description "Il letto @`e largo e pare molto comodo, e non soltanto per dormire.", react_before [; LieDown: <>; ], before [; Go, Enter, Climb: "Non @`e il tuo letto."; LookUnder: "Non trovi niente sotto il letto."; Push, Pull, Turn: "Il letto @`e troppo pesante."; Open, Search: if (barone in parent(self)) "Non @`e consigliabile, con il barone presente."; "Cerchi nel letto del barone, ma non trovi niente."; ], has scenery supporter enterable; Object -> "poltrone" with name 'poltrone' 'poltrona' 'sedie' 'sedia' 'seggiole' 'seggiola', description "Diverse poltrone sono sparse per la camera.", before [; Push, Pull, Turn, LookUnder: "Cerchi sotto le poltrone, ma non trovi niente."; Go, Enter, Climb: "Non @`e il momento di mettersi a sedere."; ], has scenery supporter enterable female pluralname; Prop -> "trofei" with name 'trofei' 'trofeo' 'animale' 'animali' 'impagliati' 'bestia' 'bestie' 'preda' 'prede', description "Poveri animali impagliati.", cant_go "Questi animali hanno gi@`a sofferto abbastanza.", has pluralname; Prop -> "armature" with name 'armatura' 'armature' 'corazza' 'corazze', description "Armature inutili e puramente decorative.", before [; Touch: "Il metallo lucente delle armature al tocco si rivela essere duttile e leggero."; ], cant_go "Sono solo armature decorative.", has female pluralname; Prop -> "tappeto" with name 'tappeto', description "Il tappeto @`e finemente intrecciato e riprende il tema dell'arazzo.", before [; Take, LookUnder, Push, Pull, Turn: "Non credi che nasconda una botola, n@'e altro."; ]; NPC -> barone "barone Inderus" with name 'barone' 'inderus', article "il", description "Il barone Inderus @`e un uomo che da poco ha lasciato la giovinezza. Alto, magro ma non esile, il suo aspetto @`e ben curato e non stenti a credere che possa riscuotere apprezzamento dall'altro sesso, e non solo per il suo rango. Il suo abbigliamento, fin troppo elegante, ed i suoi modi affettati tradiscono una certa vacuit@`a d'animo che non pu@`o essere solo apparente.", showletter false, disturb false, conversor baronetalk, life [; if (player has invisible) { give player ~invisible; print "Il barone pare sorpreso dalla tua improvvisa apparizione.^"; } Answer: "Il barone solleva lo sguardo, come se stesse in realt@`a pensando ad altro."; Show, Give: if (noun==mandato) { if (~~self.showletter) { self.showletter=true; "Il barone legge velocemente il tuo mandato, poi dice, rendendotelo: @<>."; } "@<>"; } "Probabilmente al barone ", (the)noun, " non interessa."; Kiss, ThrowAt, Attack: "Non mi pare una gran bella idea..."; ! default: "Il barone, immerso nei suoi pensieri, non sembra aver fatto caso a te."; ], lifedefault "Il barone, immerso nei suoi pensieri, non sembra aver fatto caso a te.", daemon [; if (self in Salone && random(6)==1) { npcmove(self, e_obj, SalaPranzo, " si sposta in sala da pranzo.", " arriva dalla parte ovest del salone."); rtrue; } if (self in Salone && random(10)==1) { npcmove(self, s_obj, Scalinata, " si allontana distrattamente verso la scalinata.", " arriva qui dal salone."); rtrue; } if (self in SalaPranzo && random(4)==1) { npcmove(self, w_obj, Salone, " torna verso la parte ovest del salone.", " arriva dalla sala da pranzo."); rtrue; } if (self in Scalinata && random(3)==1) { npcmove(self, n_obj, Salone, " si dirige verso il salone.", " arriva nel salone attraversando l'arco a sud."); rtrue; } ], has; Object baronetalk with before [flag; if ((~~barone.disturb) && barone in AppartamentiBarone) { barone.disturb=true; barone.talkto(true); print "@<> il barone Inderus ti interrompe prima che tu apra bocca, @<>^"; pretalked = 1; return flag; } if (flag && easy) { ! Easy mode if (barone.cnumber == 0) rfalse; if (t_barone_culti.cnumber == 0) { t_barone_culti.act(); rtrue; } if ((t_barone_parnias.cnumber <= 2) && m_parnias hasnt locked) { t_barone_parnias.act(); rtrue; } if (t_barone_miniere.cnumber == 0) { t_barone_miniere.act(); rtrue; } if (m_dippin hasnt locked && t_barone_dippin.cnumber == 0) { t_barone_dippin.act(); rtrue; } if (m_biblioteca hasnt locked && (~~naradas.keygiven) && t_barone_biblio.cnumber == 0) { t_barone_biblio.act(); rtrue; } } ], description [; print "@<>^"; if (barone in AppartamentiBarone) "@<>"; "@<>"; ] [; print "@<>^"; if (barone in AppartamentiBarone) "@<>"; "@<>"; ], cant_go [; if (pretalked) print "^"; "@<> @`e l'unica risposta del barone alla tua domanda."; ]; Topic -> with name 'egli' 'lui' 'se' 'stesso', metatopic m_barone, description "@<>^ Il barone ti fissa con sguardo gelido: @<>" "Non pensi sia il caso di insistere."; Topic -> with metatopic m_naradas, description "@<>^ @<>" "@<>^ @<>" "Non pensi di voler ascoltare altre lodi su Naradas."; Topic -> t_barone_biblio with metatopic m_biblioteca, description "@<>^ @<>" "@<>^ @<>" "@<>^ @<>"; Topic -> t_barone_parnias with metatopic m_parnias, description "@<>^ @<> risponde lui in tono rigido, @<>" "@<>^ @<>" "@<>^ @<>" "@<>^ @<>" "Quindi, stando a quanto sostengono Naradas e il barone, @`e stato il conte Parnias a diffondere quelle voci per annettere la valle al suo feudo. Interessante, ma dubiti che sia tutto qui."; Topic -> t_barone_culti with metatopic m_culti, before [; if (knowcult) { !era: if (action==##Tell && knowcult) if (self hasnt general) { give self general; "@<>^ @<>"; } "Non credi che il barone possa o voglia aiutarti."; } ], description [; give m_parnias ~locked; "@<>^ @<>"; ] "@<>^ @<>" "Secondo il barone le storie sui culti sono solo voci messe in giro ad arte dal conte Parnias. Non credi che aggiunger@`a altro."; Topic -> t_barone_miniere with metatopic m_miniere, description "@<>^ @<>" "@<> @<>" "Il barone sostiene che le miniere sono esaurite, non ti sovviene altro da chiedergli sull'argomento."; Topic -> with metatopic m_hila, description "@<>^ @<>" "@<>^ @<>" "Non credi che il barone sappia dirti altro."; Topic -> with metatopic m_dei, description "Non @`e cosa saggia interrogare i governanti sulla loro fede. Comunque probabilmente sar@`a seguace di Maral o di Aran."; Topic -> with name 'cameriere', metatopic m_nilis, description "@<>^ @<<@`E una ventata d'aria fresca nello stantio di questo vecchio palazzo.@>>" "@<>^ @<>"; Topic -> t_barone_dippin with metatopic m_dippin, name 'tempio' 'templi', description [; give dippin proper; "@<>^ @<>"; ] "@<>^ @<>" "@<>^ @<>"; Topic -> with metatopic m_osteria, description "Non credi sia il caso un argomento da trattare con il barone."; Topic -> with metatopic m_palazzo, description "@<>^ @<>" "Il barone dice di voler allargare il castello, ma non credi che abbia modo di procurarsi il denaro sufficiente, e credi che anche lui lo sappia bene."; Topic -> with metatopic m_valle, description "@<>^ @<>" "Non ti viene altro da dire."; Topic -> with metatopic m_foresta, description "@<>^ @<>" "@<>^ @<>" "Hai l'impressione che tutta la conoscenza che il barone ha della foresta sia finalizzata alla caccia."; Topic -> with metatopic m_pietra, description "@<>^ @<>" "Non pensi che sappia dirti altro."; Topic -> with name 'giardini' 'giardino', metatopic m_rabam, description [; give rabam proper; "@<> @<>"; ] "@<>^ @<<@`E un brav'uomo. Da buon padre, non mi apprezza perch@'e pensa che mi prenda troppe libert@`a con sua figlia.@>>" "Non hai altro da chiedere."; Topic -> with metatopic m_sparizioni, description "@<>^ @<<@`E sicuro di quello che dice? A me queste paiono fanfaluche.@>>" "Non riuscirai a convincere il barone."; IRoom Scalinata "Ai piedi della scalinata" with description "La larga scalinata in pietra che porta al piano superiore occupa quasi completamente questa stanza. Due archi, verso nord e verso ovest, conducono al salone principale e all'ingresso, mentre un corridoio si apre nella parete sud.", u_to Pianerottolo, n_to Salone, s_to CorridoioCucine, w_to Ingresso, cant_go "Puoi andare solo a nord, a ovest, a sud, o salire." has light female; Object -> scalinatadown "scalinata" with pname 'scala' '.or' 'scalinata' '.or' 'gradini' '.or' 'scalini' '.p' 'piano' 'superiore', description "La scala che porta al piano superiore @`e larga e non troppo ripida.", before [; Exit: "La scala sale soltanto."; Climb, Enter: <>; ], has scenery female concealed; Direction -> "salone" with name 'salone' 'sala', dir_to n_obj, description "Oltre l'arco vedi un lussuoso salone."; Direction -> "ingresso" with name 'ingresso' 'atrio', dir_to w_obj, description "L'arco ad ovest conduce al portone d'ingresso."; Prop -> "archi" with name 'arco' 'archi', description "Gli archi conducono verso nord e verso ovest."; IRoom Salone "Salone" with description "Questa enorme sala, sicuramente la stanza pi@`u vasta del palazzo, probabilmente funge da sala da ballo e sala delle udienze, sebbene tu abbia l'impressione che il barone Inderus abbia ben altro da fare che concedere udienze ai suoi sudditi. L'arredamento mescola sfarzo e austerit@`a; le armature ricoperte di polvere, le due panoplie d'armi appese alle pareti e lo stemma del casato mal si sposano con il vasto tappeto cremisi che si stende al centro del salone, con gli arazzi sgargianti e con i quadri licenziosi alle pareti. La parte orientale della stanza, a cui si accede salendo qualche scalino, deve essere usata come sala da pranzo. Un arco verso sud conduce alla scalinata centrale.", name 'salone' 'sala', s_to Scalinata, e_to SalaPranzo, u_to SalaPranzo, cant_go "Dalla sala puoi andare solo verso est o verso sud." has light; Direction -> "sala da pranzo" with pname 'sala' '.x' 'da' '.x' 'pranzo', dir_to e_obj, has female; Direction -> "scalinata" with name 'scalinata' 'scala' 'scale', dir_to s_obj, has female; Prop -> "armature" with name 'armatura' 'armature' 'corazza' 'corazze', description "Le armature esposte sono soltanto degli impressionanti oggetti ornamentali. Osservandole attentamente ti rendi conto che sarebbero completamente inutili in battaglia.", cant_go "Sono solo armature decorative.", has female pluralname; Prop -> "panoplie" with name 'panoplia' 'panoplie' 'armi', description "Le armi di queste panoplie sono solo delle pessime imitazioni.", cant_go "Sono solo inutili oggetti d'arredo.", has female pluralname; Prop -> "stemma" with name 'simbolo' 'casata' 'stemma', description "Un vulcano in campo azzurro. Peccato che lo stemma sia crepato.", cant_go "Pare un oggetto inutile come il casato che rappresenta."; Prop -> "quadri" with name 'quadri' 'dipinti' 'affreschi' 'quadro' 'dipinto' 'affresco', description "I quadri esposti in questa sala rappresentano prevalentemente scene agresti, oppure fanciulle discintamente vestite, o ancora fanciulle discintamente vestite in scene agresti.", before [; Take, Search, Push, Pull, Turn: "I quadri non nascondono niente."; ], cant_go "Forse sono gradevoli alla vista, ma niente di pi@`u.", has pluralname; Prop -> "arazzi" with name 'arazzi' 'arazzo', description "Arazzi finemente intessuti...", before [; Take, Search, Push, Pull, Turn: "Niente dietro gli arazzi."; ], cant_go "Sono solo arazzi.", has pluralname; Prop -> "tappeto" with name 'tappeto', desription "Forse un tempo questo tappeto doveva essere lussuoso come il resto del salone, ma il tempo e il continuo calpestio hanno preteso il loro tributo.", before [; Take, Search, Push, Pull, Turn: "Sotto al tappeto non vedi altro che il pavimento."; ], cant_go "@`E solo un vecchio tappeto."; IRoom SalaPranzo "Sala da Pranzo" with description "Il vasto salone che si apre verso ovest diventa qui una vera e propria sala da pranzo, rialzata rispetto al resto della stanza. Un lungo tavolo @`e sempre apparecchiato e circondato da molte sedie e sgabelli. A sud si apre una porta verso le cucine e un'ampia vetrata mostra giardini del palazzo.", name 'sala', w_to Salone, d_to Salone, s_to Cucine, cant_go "Puoi andare solo verso ovest e verso sud.", has light female; Direction -> "salone" with name 'salone', dir_to w_obj; Direction -> "cucine" with name 'cucine' 'cucina', dir_to s_obj, has female pluralname; Object -> "tavola" with name 'tavolo' 'tavola' 'apparecchiatura' 'stoviglie' 'piatti' 'posate' 'piatto' 'posata' 'forchette' 'forchetta' 'coltello' 'coltelli', description"La tavola @`e perfettamente apparecchiata e pronta per il prossimo pasto.", before [; Search, LookUnder: "Non trovi niente di utile o di particolare."; Push, Pull, Turn: "La tavola @`e troppo pesante."; ], !cant_go "Non credi che possa essere utile.", has scenery female supporter; Object -> "sedie" with name 'sedie' 'sedia' 'seggiole' 'seggiola' 'sgabello' 'sgabelli', description "Sedie e sgabelli mal assortiti tra loro circondano la tavola.", before [; LookUnder, Push, Pull, Turn: "Niente sotto le sedie."; Go, Enter, Climb: "Hai troppo da fare, meglio non sedersi."; Receive: "Meglio non lasciare cose in giro."; ], !cant_go "Sono solo delle sedie.", has female supporter pluralname enterable scenery; Prop -> "vetrata" with name 'vetrata' 'finestra' 'giardino' 'giardini', description "La vetrata, che da luce a tutta la stanza, si apre su di un piccolo giardino ben curato.", before [; Open, Unlock, Enter, Go: "Non c'e' modo di aprire la vetrata."; Attack: "Il barone potrebbe non apprezzare, meglio passare da fuori."; ], has female; IRoom Cucine "Cucine" with description "Le cucine del palazzo sono ampie, spaziose e luminose. Due grossi camini su cui cuocere le varie pietanze, e diversi ripiani e scaffali costituiscono l'arredamento di questa stanza. Due porte conducono a nord e a ovest.", name 'cucina' 'cucine', n_to SalaPranzo, w_to CorridoioCucine, cant_go "Da qui si pu@`o andare solo a nord e a ovest.", has light female; Direction -> "corridoio" with name 'corridoio' 'scalinata' 'scala' 'scale', dir_to w_obj; Direction -> "sala da pranzo" with name 'sala' 'pranzo' 'salone', dir_to n_obj, has female; Object -> "camini" with name 'camino' 'camini' 'caminetto' 'caminetti', description "Al momento entrambi i camini sono spenti.", before [; SwitchOff: "Sono spenti."; SwitchOn: "Ci vuole troppo tempo per accendere un camino di quel genere."; Enter, Search: "Provi anche ad infilare la testa nei camini, ma non trovi niente."; Receive: "Ti pare una cosa inutile."; Touch: "Sono ancora tiepidi."; ], cant_go "Sono normalissimi camini per cucinare." has scenery pluralname container; Prop -> "ripiani" with name 'ripiani' 'ripiano' 'marmo' 'piano' 'piani', description "I ripiani, alcuni in legno, altri con il piano in marmo, sono usati per la preparazione delle pietanze.", before [; Receive: "Non ti pare il caso."; Search, LetGo: "Non c'e' niente sui ripiani."; ], has supporter pluralname; Object -> "scaffali" with name 'scaffale' 'scaffali' 'alimenti' 'alimento' 'cibi' 'cibo' 'utensile' 'utensili', description "Gli scaffali sono carichi di alimenti e utensili di ogni tipo.", before [; Receive: "C'@`e gi@`a abbastanza roba sui ripiani."; Search, LetGo, Take: "Niente di quello che si trova sui ripiani @`e importante."; Push, Pull, Turn: "Gli scaffali sono ben fissati alle pareti."; ], has scenery supporter pluralname; NPC -> hila with short_name [; if (self has proper) print "Hila"; else print "cuoca"; rtrue; ], name 'hila' 'cuoca', article "la", description [; !if (self has proper) print "Hila "; else print "La cuoca "; print (The) self, " "; if (self in Tempio) "@`e seduta davanti all'altare, in silenzio. Sembra proprio che stia piangendo sommessamente."; "@`e indaffarata a rassettare la cucina e iniziare a preparare per il prossimo pasto. @`E una donna ancora non anziana, di robusta corporatura."; ], conversor hilatalk, life [; if (player has invisible) { give player ~invisible; print "La cuoca quasi si spaventa vedendoti all'improvviso.^"; } Greet: if (hilatalk.before(true)) rtrue; self.talkto(true); "@<>^ @<>"; Answer: "Non ti pare che la cuoca ti possa essere d'aiuto per questo."; Show, Give: if (noun == mandato) "Meglio di no... Non ti porterebbe nulla di buono..."; "Pensi che ", (arta)self, " proprio non interessi ",(the)noun, "."; Kiss: "La cuoca decisamente non corrisponde al tuo ideale di donna..."; ThrowAt, Attack: "Ti ha forse fatto qualcosa di male?"; !default: "La cuoca continua a rassettare..."; ], lifedefault "La cuoca continua a rassettare...", rst 0, rsc 0, each_turn [; give m_hila ~locked; if (self in Tempio && random(2) == 1) switch(++self.rst) { 1: print_ret "^", (The) self, " emette un lungo sospiro."; 3: print_ret "^", (The) self, " solleva la testa, fissando la statua di Maral. @`E strano che cerchi conforto proprio qui."; 5: "^Per un attimo ti sembra che ", (the) self, " stia per voltarsi verso di te, ma poi ti rendi conto che lei, in questo momento, non pu@`o accorgersi di niente se non del proprio dolore."; } if (self in Cucine && random(2) == 1 && silenceturns > 2) switch(++self.rsc) { 1: print_ret "^", (The) self, " si mette a rassettare gli alimenti sullo scaffale, portando pi@`u avanti quelli che serviranno per il prossimo pasto."; 3: print_ret "^", (The) self, " si piega per controllare che i camini siano in ordine."; 5: print_ret "^", (The) self, " pulisce sommariamente i ripiani in marmo."; 7: self.rsc = 0; } ] has female; Object hilatalk with before [flag; if (hila in Tempio) "La donna sembra troppo affranta per parlare. Meglio lasciarla in pace."; if (self hasnt general) { give self general; give hila proper; hila.talkto(true); print "@<>^ @<>^"; pretalked = 1; return flag; } if (flag && easy) { if (t_hila_culti.cnumber == 0) { t_hila_culti.act(); rtrue; } if (t_hila_vade.cnumber == 0 && m_vade hasnt locked) { t_hila_vade.act(); rtrue; } if (t_hila_dippin.cnumber == 0 && m_dippin hasnt locked) { t_hila_dippin.act(); rtrue; } } ], description "@<>^ @<>" "Non ti viene altro da dire.", cant_go [; if (pretalked) print "^"; print_ret (The)hila, " ti ascolta, ma risponde soltanto: @<>"; ]; Topic -> with name 'lei' 'se' 'stessa' 'ella', metatopic m_hila, before [; if (hila hasnt proper) { give hila proper; "@<>^ @<>"; } ], description "@<>^ @<>" "@<>^ @<>" "Non hai altro da chiedere."; Topic -> with metatopic m_barone, description "@<>^ @<>" "@<>^ @<>" "@<>^ @<>" "Non hai altro da chiedere, e inoltre credi che la cuoca dovrebbe tenere per se le sue critiche al barone."; Topic -> with metatopic m_biblioteca, description "@<>^ @<>" "@<>^ @<>" "Non hai altro da chiedere; per la biblioteca ti conviene chiedere a Naradas."; Topic -> t_hila_culti with metatopic m_culti, description "@<>^ @<> Dal tono della voce, non sei convinto che ti abbia detto tutto." "@<>^ @<>" "@<>^ @<>" "Non pensi che sappia dirti altro. Per@`o quello che ti ha raccontato a proposito di persone che spariscono @`e da tenere a mente."; Topic -> with metatopic m_figli, description "@<>^ @<>, risponde lei, evitando per@`o di guardarti negli occhi." "La cuoca sostiene di non saper niente dei ~Figli della Valle~. Pensi che sia inutile insistere."; Topic -> with metatopic m_naradas, description "@<>^ @<>" "@<>^ @<>" "@<>^ @<>" "Secondo lei @`e Naradas che governa al posto del barone. Questo in fondo non ti stupisce."; Topic -> with name 'figlia', metatopic m_nilis, before [; if (nilis in SalaPranzo && self hasnt general) { give nilis proper; give self general; "@<>^ @<>"; } if (nilis hasnt proper) { give nilis proper; "@<>^ @<>"; } ], description "@<>^ @<>" "@<>^ @<<@`E normale, quando si @`e la giovane cameriera in un palazzo nobiliare. Ma mia figlia @`e onesta e non lo incoraggia, e il barone in fondo @`e una brava persona. Invece la cosa d@`a molto fastidio a mio marito.@>>" "@<>^ @<<@`E una brava figlia, non c'@`e molto altro da dire. Spero che trovi presto un bravo ragazzo, magari non uno della valle... uno straniero...@>>" "Pensi che sia meglio non trattare ancora l'argomento, visto che a quanto pare la donna ti vedrebbe bene come genero."; Topic -> with name 'marito', metatopic m_rabam, description [; give rabam proper; "@<>^ @<>"; ] "@<>^ @<>" "Non osi chiedere altre informazioni."; Topic -> t_hila_vade with metatopic m_vade, description "@<>^ @<> risponde la donna con un tono di voce esitante." "@<>^ @<>" "Credi che la cuoca sappia altro sull'alchimista, ma non pensi che sia intenzionata a dirtelo."; Topic -> with metatopic m_iarin, description [; give iarin proper; "@<>^ @<<@`E un'amica di mia figlia. Si chiama Iarin.@>>"; ] "@<>^ @<>" "Non pensi che voglia dirti niente di pi@`u del fatto che Iarin @`e amica della figlia, ma @`e evidente che c'@`e altro."; Topic -> with metatopic m_tempio, description [; give m_dippin ~locked; "@<>^ @<>"; ] [; t_hila_dippin.act(); ]; Topic -> t_hila_dippin with metatopic m_dippin, description "@<>^ @<>" [; give dippin proper; "@<>^ @<>"; ] "@<>^ @<>" "@<>^ @<>" "Non credi che la cuoca voglia dirti altro, ed eppure credi che non parlasse sinceramente parlando bene - e fin troppo - del sacerdote Dippin."; Topic -> with metatopic m_dei, description "@<>^ @<>" "Non hai molto da chiedere sull'argomento."; Topic -> with metatopic m_osteria, description [; give m_rabam ~locked; "@<>^ @<>"; ] "Non hai altro da chiedere."; Object pentola "pentola" Cucine with name 'pentola' 'olla' 'pignatta', description [; print "Una grossa pentola di rame"; if (self has general) " vuota, ma sporca d'argilla"; "."; ], initial "Su di uno scaffale c'@`e una grossa pentola di rame.", before [; Smell: if (self has general) "La pentola odora d'argilla."; Receive: if (noun == spiaggia) <>; "Non credi che mettere ", (the) noun, " nella pentola serva a qualcosa."; Fill: if (spiaggia in real_location) <>; if (real_location has waterhere) { move pentolaacqua to parent(self); remove self; "Riempi d'acqua la pentola."; } Tie: if (second==gancio) "Non @`e abbastanza pesante."; ], has female container open; Object pentolaacqua "pentola piena d'acqua" with pname 'pentola' '.p' 'olla' '.p' 'pignatta' '.x' 'piena' '.x' 'd^' '.x' 'acqua' '.p' 'acqua', description "Una grossa pentola di rame piena d'acqua.", before [; Fill: if (spiaggia in real_location) <>; "La pentola @`e gi@`a piena."; Receive: if (noun == spiaggia) <>; "La pentola @`e gi@`a piena."; Drink, Smell: "L'acqua ha un aspetto e un odore pessimi."; Empty, PutOn, EmptyT: if (real_location ofclass ORoom or ERoom) { move pentola to parent(self); remove self; "Versi l'acqua, svuotando la pentola."; } "Non @`e il posto pi@`u adatto."; Tie: if (second==gancio) "Non @`e abbastanza pesante."; ], has female container open; Object pentolaargilla "pentola piena d'argilla" with pname 'pentola' '.p' 'olla' '.p' 'pignatta' '.x' 'piena' '.x' 'd^' '.x' 'argilla' '.p' 'argilla', description [; print "Una grossa pentola di rame, piena fino all'orlo di argilla"; if (self.lifespan==0) print " ormai secca"; "."; ], lifespan 0, before [; Fill: if (spiaggia in real_location) <>; Receive: if (noun == spiaggia) <>; "La pentola @`e gi@`a piena."; Smell: "Senza alcuna sorpresa, la pentola odora d'argilla."; Empty: if (easy && pietradellaluna in real_location) <>; if (real_location ofclass ORoom or ERoom && pietradellaluna notin real_location) { move pentola to parent(pentolaargilla); remove pentolaargilla; "Svuoti la pentola per terra, liberandoti dell'argilla."; } "Non mi sembra il caso di svuotarla qui per terra."; PutOn, EmptyT: if (self.lifespan==0) "Ormai l'argilla nella pentola @`e secca."; if (second==pietradellaluna) { if (iscrizioni notin pietradellaluna) "Non ne vedi il motivo, adesso, o comunque non ti sembra il momento opportuno."; if (pietradellaluna.clay>0) "Credi che sulla pietra ci sia gi@`a abbastanza argilla."; move pentola to parent(pentolaargilla); remove pentolaargilla; pietradellaluna.clay=1; move argillapietra to pietradellaluna; !pietradellaluna.count=38; !Achieved(32); print "Rapidamente versi l'argilla sulla pietra, stendendola con cura"; ! c'era "gia' indurita" if (iarin in real_location) print ", grazie anche all'aiuto di Iarin"; print ", sperando di riuscire a fare un calco sufficientemente preciso. Not"; ! era Aspett if (iarin in real_location) print "ate"; else print "i"; " per@`o che l'argilla @`e ancora fresca e duttile, e non resisterebbe alla sparizione delle incisioni."; !" per troppi attimi trepidanti fino a che le incisioni nella pietra spariscono. Osservi il risultato e noti che @`e sufficiente; anche se non tutte, buona parte delle incisioni sono sempre leggibili in questo improvvisato calco d'argilla."; } Tie: if (second==gancio) "Non @`e abbastanza pesante."; ], each_turn [; give pentola general; if (self.lifespan>0) self.lifespan--; ], has female; IRoom CorridoioCucine "Corridoio" with description "Su questo corridoio, che verso nord conduce alla scalinata, si aprono due uscite. La porta ad ovest @`e elegantemente istoriata, in faggio, mentre pi@`u avanti il corridoio volta verso est, verso le cucine.", name 'corridoio', e_to Cucine, n_to Scalinata, w_to portabiblioteca, cant_go "Il corridoio porta a nord e a est, la porta @`e a ovest.", has light; Direction -> "cucine" with name 'cucine' 'cucina', dir_to e_obj, has pluralname female; Direction -> "scalinata" with name 'scalinata' 'scala' 'scale' 'salone' 'ingresso', dir_to n_obj, has female; MyDoor portabiblioteca "porta" with pname 'porta' '.x' 'di' '.or' 'in' '.x' 'faggio' '.x' 'della' '.x' 'biblioteca' '.p' 'biblioteca' '.p' 'decorazione' '.or' 'libro', printstatus [; give m_biblioteca ~locked; addhint(h_biblioteca); if (self has open && self in CorridoioCucine) "La porta si apre su di una piccola biblioteca."; if (self has open && self in Biblioteca) "La porta si apre sul corridoio."; if (self has open) "La porta @`e aperta."; if (self in CorridoioCucine) "La porta @`e chiusa. La decorazione incisa su di essa rappresenta un libro."; "La porta @`e chiusa."; ], door_to [; if (location==Biblioteca) return CorridoioCucine; return Biblioteca; ], door_dir [; if (location==Biblioteca) return e_to; return w_to; ], with_key ChiaveBiblioteca, found_in CorridoioCucine Biblioteca, has locked; Object ChiaveBiblioteca "chiave della biblioteca" naradas with pname 'chiave' '.x' 'di' '.x' 'ferro' '.p' 'chiave' '.x' 'della' '.x' 'di' '.x' 'biblioteca', article "la", description "Una piccola chiave in ferro.", has female; IRoom Biblioteca "Biblioteca" with description "La biblioteca del palazzo non @`e troppo grande, e probabilmente, a giudicare dall'odore, non viene aperta molto spesso, ma gli scaffali carichi di libri che occupano due intere pareti potrebbero contenere qualcosa d'interessante. Una scrivania, una poltrona e una mappa della valle appesa all'unica parete libera completano l'arredamento della stanza.", name 'biblioteca', e_to portabiblioteca, out_to portabiblioteca, cant_go "L'unica uscita @`e verso est.", before [; smell: "Questo odore di chiuso non passer@`a tanto facilmente..."; ], each_turn [; give m_biblioteca ~locked; solved(h_biblioteca); ], initial [; LeftPicture(Library_img, -1, -1); ], has light female; Object -> "scrivania" with name 'scrivania' 'tavolo' 'scrittoio' 'mogano', description "Una vecchio tavolo in mogano, coperto di polvere.", has supporter female scenery; Object -> "poltrona" with name 'poltrona' 'sedia', description "La poltrona sembra estremamente comoda, ideale per una buona lettura.", react_before [; Go: if (player in self) ; ], each_turn [; if (player in self) { while(child(self)) move child(self) to parent(self); move player to self; } ], has supporter enterable female scenery; Object -> map "mappa" with name 'mappa' 'carta' 'cartina', description [; "La mappa rappresenta l'intera Valle di Nigat: la catena montuosa settentrionale dominata dal monte Kalnam e quella meridionale con l'unica strada - quella che tu hai percorso - che dal passo conduce al ponte di pietra e al villaggio di Har Plenais, e poi il fiume Vlis che scorre da est a ovest, la foresta che riempie quasi l'intera valle e un unico sentiero che, attraverso la foresta, dal villaggio porta fino alle pendici del vulcano."; ! font off; ! ! La mappa @`e stata filtrata con un programma apposito... v. file lunamap.txt ! print "+------------------------------------------------+^ ! | @@94 Kalnam N |^ ! | @@94 @@94 /@@92@@92 @@94 W+E|^ ! | / @@92 @@94 @@94 / @@92_/ @@92@@92 @@94 / @@92 @@94 @@94 S |^ ! |@@94/ @@92/ @@92 / @@92/ / * @@92_/ @@92/ @@92/ @@92 / @@92 @@94 |^ ! | @@92 / / _ ' _ @@92 / @@92/ @@92 |^ ! | _ _ | ' | @@92 @@92 @@94 |^ ! | | _ | _ _ ' _ _ _ _ / @@92|^ ! | _ | | | ' _ | _ | _ | _ | _ |^ ! | | , '_ | _ | _ | _ | _ | |^ ! | * Har |'' | | - | | | |^ ! |@@126 []Plenais'' @@126@@126@@126@@126@@126@@126@@126 | @@126@@126@@126@@126 @@126@@126@@126|^ ! | @@126@@126 '. @@126@@126@@126@@126@@126@@126@@126@@126 _ @@126@@126@@126@@126@@126@@126@@126@@126@@126@@126@@126@@126@@126@@126@@126@@126@@126@@126@@126@@126@@126 |^ ! |@@94 @@126@@126@@126#@@126@@126 _ | _ @@126@@126@@126@@126@@126 @@94 |^ ! | @@92 : @@94 | @@94 | _ @@94 / @@92|^ ! | @@94 : @@94 / @@92 @@94 @@94 / @@92 | / @@92 @@94/ |^ ! |/ @@92 : / @@92 @@92@@94/ @@92 / @@92 @@92 / / @@92 |^ ! +------------------------------------------------+^"; ! font on; ! rtrue; ], before [; Take : "Un po' troppo ingombrante..."; Push, Pull, Search, LookUnder: "La mappa non nasconde niente."; ], has scenery female; Object -> scaffali "scaffali" with name 'scaffali' 'scaffale', before [; Examine, Search: <>; Push, Pull, Turn: "Sono troppo pesanti."; ], has scenery pluralname; Object -> librisugliscaffali "libri" with name 'libri', number 0, before [; Examine, Search: self.listsearch(parent(self)); rtrue; Take: self.listsearch(player); rtrue; ], listsearch [dest; if (dest == 0) dest = parent(self); if (self.number<4) self.number++; switch (self.number) { 1: move storia to dest; "In uno scaffale, tra altri libri sulla storia imperiale, trovi un ben pi@`u interessante libro sulla storia della valle."; 2: move leggende to dest; "Tra una serie di noiosi poemi romanzeschi trovi un libro di leggende che potrebbe riservare qualche sorpresa."; 3: move eibon to dest; !Achieved(3); "Salta ai tuoi occhi un piccolo libro dalla copertina nera, stramente non coperto di polvere come gli altri, come se qualcun'altro lo avesse letto di recente. Accanto ad esso noti anche uno spazio vuoto; a quanto pare manca un volume."; default: "Gli scaffali sono carichi di libri di ben poco valore e ancor minore importanza."; } ], has scenery pluralname; IRoom Ingresso "Ingresso" with description "L'atrio del palazzo @`e quasi completamente spoglio. Il simbolo della casata pende da una parete e un tappeto rosso si stende dal portone principale, verso ovest, all'arco che si apre nella parete orientale e che conduce alla scala e al resto del palazzo.", name 'ingresso' 'atrio', e_to Scalinata, w_to portonepalazzo, out_to portonepalazzo, cant_go "Da qui puoi andare solo a est o a ovest.", has light; Prop -> "stemma" with name 'simbolo' 'casata' 'stemma', description "La casata degli Inderus ha come stemma un vulcano in campo azzurro. Se non altro non @`e il solito leone rampante.", cant_go "Non credi che lo stemma possa servire a qualcosa."; Prop -> "tappeto" with name'tappeto', description "Il tappeto @`e liso, rovinato in pi@`u punti e sporco di fango.", before [; LookUnder, Take, Search, Push, Pull, Turn: "Sotto al tappeto non vedi altro che il pavimento."; ]; Object portonepalazzo "portone del palazzo" with pname 'portone' '.or' 'porta' '.x' 'del' '.or' 'di' '.or' 'della' '.or' 'dell^' 'palazzo' '.or' 'castello' '.or' 'edificio' '.or' 'villa' '.or' 'costruzione' '.p' 'battente' '.or' 'batacchio', description [; if (self has open) { if (location==Ingresso) "Il pesante portone del palazzo si apre sull'esterno."; if (location==DavantiPalazzo) "Il pesante portone del palazzo si apre su di un atrio."; } "Il pesante portone del palazzo @`e chiuso."; ], door_to [; if (location==Ingresso) return DavantiPalazzo; return Ingresso; ], door_dir [; if (location==Ingresso) return w_to; return e_to; ], before [; Enter, Open: if (self hasnt open) "Il portone @`e sbarrato e chiuso a chiave."; Close: if (self has open) "Il portone @`e troppo pesante perch@'e tu riesca a chiuderlo da solo."; Unlock: if (location == DavantiPalazzo) "La sbarra che chiude il portone pu@`o essere tolta solo dall'interno."; if (self has open) "Il portone @`e aperto."; "Non hai le chiavi del portone e non puoi sbloccare la pesante sbarra di legno che lo tiene chiuso."; Lock: if (location == DavantiPalazzo) "La sbarra che chiude il portone pu@`o essere messa solo dall'interno."; if (self has open) <>; <>; Knock: if (self has open) "Il portone @`e gi@`a aperto..."; if (phase~=3 || creature hasnt general) { if (location==Ingresso) "Bussare dall'interno? Strana idea..."; "Percuoti il portone con il battente, ma non hai risposta..."; } print "Percuoti il portone con il battente, e dopo poco questo si apre, lasciandoti entrare. Ti dirigi, esausto, fino alla tua camera. Entro pochi minuti sei nel tuo letto, e quasi immediatamente chiudi gli occhi, cadendo inesorabilmente in un sonno profondo...^^"; Achieved(21); dreambegin(); rtrue; ], react_before [; Knock: if (noun == 0 or NULL) <>; Go: if (real_location == DavantiPalazzo && noun == e_obj && self hasnt open) <>; ], found_in Ingresso DavantiPalazzo, has scenery door open; Object palazzo "palazzo del barone Inderus" with name 'palazzo' 'castello' 'villa' 'costruzione' 'edificio', article "il", description "Il palazzo del barone Inderus @`e una costruzione a due piani, prevalentemente costruita in pietra nera. Pur non essendo troppo grande, questo gli conferisce una certa aura di maestosit@`a.", before [; Go, Enter: if (real_location==DavantiPalazzo) <>; if (real_location==NordPalazzo or SudPalazzo) <>; if (real_location==Giardini) <>; ], found_in DavantiPalazzo NordPalazzo SudPalazzo Giardini, has scenery; ORoom DavantiPalazzo "Di fronte al Palazzo" with description "Uno spiazzo si stende di fronte al palazzo del barone Inderus. Il largo portone del palazzo si apre verso est su di un atrio. A sud vedi una stalla e due piccoli viottoli aggirano il palazzo andando verso nord-est e sud-est, mentre un sentiero battuto conduce verso il villaggio, verso ovest.", name 'spiazzo', e_to portonepalazzo, in_to portonepalazzo, ne_to [; print "Il viottolo volta leggermente verso est, passando dietro la parete nord del palazzo.^"; return NordPalazzo; ], se_to [; print "Il viottolo passa accanto alle stalle prima di curvare verso est e aggirare da sud il palazzo.^"; return SudPalazzo; ], s_to Stalla, w_to SentieroPalazzo, ! nel file lunavil.inf cant_go "Puoi andare a sud, a nord-est, a sud-est, a est e a ovest."; Direction -> "stalla" with name 'stalla' 'stalle', dir_to s_obj, description "La stalla @`e una piccola costruzione in legno verso sud." has female; Direction -> "villaggio" with name 'villaggio' 'borgo' 'har' 'plenais', dir_to w_obj; NPC -> guardie "due guardie" with name 'guardie' 'soldati' 'armigeri' 'guardia' 'soldato' 'armigero', description "Due soldati in uniforme e corazza sono di guardia al portone principale.", conversor guardie_talk, life [; if (player has invisible) { give player ~invisible; print "Nervosamente le guardie paiono accorgersi della tua presenza."; } Answer: "Le due guardie ti sembrano scrupolosamente dedite al loro lavoro."; Show,Give: if (noun == mandato) "@`E meglio che tu faccia vedere la tua lettera d'incarico solo alle persone adatte... E le guardie non sono fra queste..."; "Le guardie non sembrano interessate ", (arta)noun, "."; Kiss: "Meglio di no..."; ThrowAt, Attack: "Sono in due e ben armate... Meglio non rischiare..."; !default: "Le due guardie ti sembrano scrupolosamente dedite al loro lavoro."; ], lifedefault "Le due guardie ti sembrano scrupolosamente dedite al loro lavoro.", has female pluralname proper; Object guardie_talk with number 0, before [; guardie.talkto(false); switch(++self.number) { 1: "@<>"; 2: "@<>"; 3: "@<> Il tono della voce della guardia si fa pi@`u minaccioso."; default: self.number = 4; "Ritieni saggio non insistere oltre."; } ]; ORoom NordPalazzo "A nord del Palazzo" with description "Uno stretto vialetto costeggiato da siepi aggira da nord il palazzo del barone Inderus, andando da est a ovest, dallo spiazzo che si apre davanti al portone ai giardini del palazzo.", name 'vialetto', w_to DavantiPalazzo, !sw_to DavantiPalazzo, e_to Giardini, !se_to Giardini, s_to "Il muro del palazzo ti sembra un po troppo solido...", cant_go "Il vialetto conduce solo ad est e a ovest."; Prop "siepi" with name 'siepe' 'siepi', description "Delle verdi siepi.", found_in NordPalazzo SudPalazzo has female pluralname; ORoom SudPalazzo "A sud del Palazzo" with description "Uno stretto vialetto costeggiato da siepi aggira da sud il palazzo del barone Inderus, andando da est a ovest, dallo spiazzo che si apre davanti al portone ai giardini del palazzo.", name 'vialetto', w_to DavantiPalazzo, !nw_to DavantiPalazzo, e_to Giardini, !ne_to Giardini, n_to "Il muro del palazzo ti sembra un po troppo solido...", cant_go "Il vialetto conduce solo ad est e a ovest."; ERoom Stalla "Stalla" with description "La stalla @`e una piccola costruzione in legno. Il pavimento @`e completamente ricoperto di paglia pressata e sei circondato da balle di fieno, abbeveratoi, mangiatoie...", name 'stalla', n_to DavantiPalazzo, out_to PortonePalazzo, cant_go "L'uscita @`e a nord." has light female waterhere; Prop -> paglia "paglia" with name 'paglia', description "Uno strato di paglia ricopre il pavimento.", before [; LookUnder, Search, Push, Pull, Take, Turn: "La paglia per terra non nasconde niente."; ], has female static; Prop -> "balle di fieno" with pname 'balla' 'balle' 'di' 'fieno', description "Solo balle di fieno...", before [; LookUnder, Search, Push, Pull, Take, Turn: "Sposti le balle di fieno e guardi se nascondono qualcosa al loro interno, ma non trovi niente."; ], has female pluralname; Prop -> "abbeveratoi" with name 'abbeveratoio' 'abbeveratoi' 'acqua', description "L'acqua negli abbeveratoi @`e fresca e limpida.", before [; Drink: "Non hai cos@`i tanta sete."; ], has pluralname static; Prop -> "mangiatoie" with name 'mangiatoia' 'mangiatoie', description "Ai cavalli non viene certo fatto mancare il cibo.", has pluralname static; Object -> cavalli "cavalli" with name 'cinque' 'cavalli' 'destrieri' 'bestie' 'palafreni' 'animali', article "i", description "I cinque cavalli del barone sono veramente degli splendidi animali. Robusti, dal pelo lucido, probabilmente veloci e resistenti, particolarmente adatti alla caccia...", life [; "I cavalli nitriscono nervosamente..."; ], before [; Take, Ride: "Non hai intenzione di venir arrestato per furto di cavalli..."; ], has animate pluralname; Object -> guilnern "Guilnern" with name 'guilnern' 'cavallo' 'destriero' 'palafreno', description "Guilnern @`e il tuo cavallo. Un palafreno sauro, veloce, agile, resistente.", life [; "Guilnern si strofina a te con il muso..."; ], before [; Take, Ride: "Nella valle ti muovi meglio a piedi, e non @`e ancora il momento di partire."; ], has animate proper; ORoom Giardini "Giardini" with description "I giardini del palazzo, non troppo vasti, sono eleganti e ben curati, e iniziano a rifiorire in questi primi giorni di primavera. All'ombra di due castagni, tavoli e panche di legno restano tra prati e aiuole, a disposizione del barone e dei suoi ospiti, mentre una lunga siepe circonda il giardino. Due vialetti, verso nord-ovest e verso sud-ovest, passano ai lati del palazzo.", name 'giardino' 'giardini' 'parco', nw_to [; print "Il vialetto volta verso ovest, lungo il muro nord del palazzo.^"; return NordPalazzo; ], sw_to [; print "Il vialetto volta verso ovest, lungo il muro sud del palazzo.^"; return SudPalazzo; ], cant_go "Puoi andare solo a nord-ovest e a sud-ovest."; Prop -> "castagni" with name 'castagni' 'alberi' 'castagno' 'albero', description "Due alti alberi, su cui stanno iniziando a spuntare le prime foglie dell'anno.", before [; Climb: "Anche i primi rami sono troppo alti."; ], has pluralname static; Prop -> "tavolini" with name 'tavoli' 'tavolini' 'tavolo' 'tavolino', description "I tavoli e le panche di legno non sembrano troppo comodi.", before [; LookUnder, Push, Pull, Search: "Tavoli e panche non nascondono nulla."; ], has supporter pluralname; Prop -> "panche" with name 'panca' 'panche', description "I tavoli e le panche di legno non sembrano troppo comodi.", before [; Go, Enter, Climb: "Non @`e il momento di mettersi a sedere."; LookUnder, Push, Pull, Search: "Tavoli e panche non nascondono nulla."; ], has supporter enterable female pluralname; Prop -> "prato" with name 'prati' 'prato' 'aiuole' 'aiuola' 'erba' 'fiori', description "I prati e le aiuole sono tenuti perfettamente, e tutto il giardino ti pare estremamente rigoglioso, nonostante la stagione ancora fredda." has static; Prop -> "siepe" with name 'siepe' 'siepi', description "La siepe che circonda il giardino @`e perfettamente potata.", before [; Search: "Non trovi nulla all'interno della siepe."; ], has static; NPC -> rabam with short_name [; if (self has proper) print "Rabam"; else print "giardiniere"; rtrue; ], name 'rabam' 'giardiniere', article "il", description [; if (self has proper) print "Rabam "; else print "Il giardiniere "; "sta alacremente e con maestria potando una siepe. @`E un uomo alto e robusto, con una barba folta e ben curata, proprio come la sua siepe."; ], conversor rabamtalk, life [; if (player has invisible) { give player ~invisible; print "L'uomo ti fissa stupito, come se tu fossi apparso dal nulla.^"; } Answer: "L'uomo ti pare perplesso."; Kiss: "Direi di no..."; Show, Give: if (noun == mandato) "Per quanto ne sai, l'uomo potrebbe essere uno di quelli su cui cerchi informazioni... Vuoi davvero rivelargli chi sei?"; "Non pensi che ", (arta)self, " possa interessare ", (the)noun, "."; ThrowAt, Attack: "@`E alto venti centimetri in pi@`u di te... Probabilmente tu sei molto pi@`u veloce di lui, ma non hai voglia di sfidare la sorte..."; !default: "L'uomo continua a lavorare sulla sua siepe..."; ], lifedefault "L'uomo continua a lavorare sulla sua siepe...", rs 0, each_turn [; give m_rabam ~locked; if (silenceturns > 1 && random(2) == 1) { switch(++self.rs) { 3: print_ret "^", (The) self, " si ferma un attimo a tergersi il sudore, poi riprende a potare la siepe."; 6: print_ret "^", (The) self, " si sofferma a controllare i risultati, poi riprende il lavoro."; 8: self.rs = 0; } } ], has; Object rabamtalk with before [flag; if (rabam hasnt proper && self hasnt general) { give self general; print "@<>^ @<>^"; pretalked = 1; return flag; } if (flag && easy) { if (t_rabam_culti.cnumber <= 1) { t_rabam_culti.act(); rtrue; } if (t_rabam_vade.cnumber == 0 && m_vade hasnt locked) { t_rabam_vade.act(); rtrue; } if (t_rabam_dippin.cnumber == 0 && m_dippin hasnt locked) { t_rabam_dippin.act(); rtrue; } if (t_rabam_barone.cnumber == 0) { t_rabam_barone.act(); rtrue; } } ], description [; if (self hasnt proper) print "@<>^"; else print "@<>^"; "@<>"; ] "Non ti viene altro da dire, e l'uomo non sembra abbia molta voglia di parlare.", cant_go [; if (pretalked) print "^"; "Alla tua domanda ", (the)rabam, " risponde: @<>"; ]; Topic -> with name 'egli' 'se' 'stesso' 'lui', metatopic m_rabam, before [; if (rabam hasnt proper) { give rabam proper; "@<>^ @<>"; } ], description "@<<@`E soddisfatto del suo lavoro?@>>^ @<>" "@<<@`E da molto che lavora come giardiniere?@>>^ @<>" "Non hai altro da chiedere."; Topic -> t_rabam_barone with metatopic m_barone, description "@<>^ @<>" "@<>^ L'uomo ti risponde in tono alterato: @<>." "@<>^ @<<@`E poco pi@`u che un ragazzetto viziato. Ma ci sono governanti peggiori.@>>" "Non pensi che ti possa dire altro, e comunque ti pare ovvia che la bassa opinione che ha del barone dipenda in gran parte dalla gelosia che ha verso sua figlia."; Topic -> with metatopic m_biblioteca, description "@<>^ @<>" "@<>^ @<>" "Non credi sappia altro."; Topic -> t_rabam_culti with metatopic m_culti, description "@<>^ @<> risponde lui, distogliendo lo sguardo." "@<>^ @<>" "Dice di non saperne niente e ti ha suggerito di chiedere alla taverna, ti dovrebbe bastare. Ma sicuramente non @`e un buon mentitore."; Topic -> with metatopic m_figli, description "@<>^ L'uomo scrolla le spalle e brontola: @<>" "Il giardiniere nega di sapere alcunch@'e sui ~Figli della Valle~."; Topic -> with metatopic m_naradas, description "@<>^ @<>" "@<>^ @<>" "@<> @<>" "Non hai altro da chiedere, o altro che lui ti possa dire; se non altro conferma il sospetto che sia Naradas in realt@`a a governare sulla valle."; Topic -> with name 'figlia', metatopic m_nilis, description [; if (nilis has proper) "@<>^ @<>"; give nilis proper; "@<>^ @<<@`E Nilis, mia figlia... E spero che lei non si sia fatto idee sul suo conto.@>>"; ] "Non credi che sia saggio trattare l'argomento con un padre irascibile."; Topic -> with name 'moglie', metatopic m_hila, description "@<>^ @<> sospira, @<>" "Non credi che ti possa o voglia dire molto su sua moglie."; Topic -> with metatopic m_tempio, description [; give m_dippin ~locked; "@<>^ @<>"; ] [; t_rabam_dippin.act(); ]; Topic -> t_rabam_dippin with metatopic m_dippin, description "@<>^ @<> Il tono brusco della sua risposta tradisce un livore su cui forse sarebbe meglio far qualche altra domanda." [; give dippin proper; "@<>^ @<>"; ] "@<>^ @<> risponde lui, @<>" "@<>^ @<>" "Credi proprio di aver sentito abbastanza. Le sue idee sul sacerdote Dippin sono interessanti e pericolose: a quanto pare lo ritiene ipocrita, severo e bigotto con i deboli, e rispettoso verso coloro che possono riempire il suo stomato. E sostiene che il culto di Maral stia perdendo fedeli."; Topic -> with metatopic m_osteria, description [; give m_bano ~locked; t_rabam_bano.act(); ]; Topic -> t_rabam_bano with metatopic m_bano, description "@<>^ @<<@`E sempre un buon posto dove passare la serata, e io e l'oste siamo buoni amici. Ma le do un consiglio: non si avvicini a sua figlia. @`E pi@`u geloso di me.@>>" "@<>^ @<>" "Non hai altro da chiedere."; Topic -> with metatopic m_erlik, name 'emporio', description "@<>^ @<>" "@<>^ @<>" "Non credi di dover chiedere altro. Cercherai di essere prudente nel fare acquisti all'emporio."; Topic -> t_rabam_vade with metatopic m_vade, description [; give vade proper; "@<>^ @<> la sua voce trema quasi impercettibilmente mentre continua: @<>."; ] "@<>^ @<<@`E un tipo tranquillo, uno di quelli che pensano ai propri affari e non cercano guai. Non credo di poter dire di pi@`u. Non lo conosco bene.@>>" "Inutile fare altre domande; continuer@`a a sostenere di non conoscerlo, nonostante sia un pessimo bugiardo."; Topic -> with metatopic m_iarin, description "@<>^ @<>" "@<>^ @<>" "Non credi serva fare altre domande."; Topic -> with metatopic m_dei, description "@<>^ @<>" "L'uomo potrebbe offedersi per altre domande sulla sua fede."; Topic -> with metatopic m_foresta, description "@<>^ @<>" "L'uomo ti ha consigliato di evitare la parte occidentale della foresta. Ti chiedi come mai.";