! 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. ! ------------------------------------------ ! Introduzione ! ------------------------------------------ ORoom PonteIn "Il ponte" with description "Un imponente ponte di pietra, largo e robusto, supera il fiume Vlis e segna l'ingresso alla valle di Nigat. Nelle tenebre di questa notte sono visibili le case di un piccolo villaggio verso nord, e, in lontananza, le sagome scure delle montagne.", name 'ponte', before [; Listen: "Senti solo il fiume Vlis che scorre impetuoso..."; ], n_to VillaggioIn, s_to "Dopo aver cavalcato per giorni non hai intenzione di lasciare questa valle... e hai ancor meno intenzione di farlo in piena notte.", cant_go "La notte @`e troppo scura, meglio non abbandonare la strada principale, verso nord.", initial [; AbovePicture(Volcano_img, -1, -1); ], has light; Direction -> "villaggio" with name 'villaggio' 'borgo' 'case' 'edifici' 'costruzioni' 'abitazioni' 'casa' 'edificio' 'palazzo' 'castello' 'villa' 'costruzione' 'abitazione' 'har' 'plenais', dir_to n_obj, description "Le case di un piccolo villaggio, verso nord, si frappongono fra te e il palazzo del barone Inderus."; Distance -> "fiume" with name 'fiume' 'torrente' 'vlis', description "Il fiume in piena scorre nel buio.", cant_go "Dovresti scendere gli argini, e sarebbe poco saggio farlo in piena notte."; Distance -> "vulcano" with name 'montagne' 'monti' 'catena' 'vulcano' 'monte' 'montagna' 'kalnam' 'sagome' 'scure', description "Tra le montagne svetta un alto vulcano spento.", cant_go "Le montagne sono decisamente troppo lontane."; Distance -> "foresta" with name 'valle' 'nigat' 'foresta' 'alberi' 'bosco' 'albero', description "La vasta foresta che occupa quasi tutta la valle si stende verso est, limitata solo dai monti.", cant_go "La foresta @`e troppo lontana.", has female; ORoom VillaggioIn "Il villaggio" with description "In questa notte le case del villaggio hanno un aspetto quasi spettrale. La piazza principale e le vie adiacenti sono immerse nella totale oscurit@`a, e cos@`i la strada principale che taglia il villaggio da nord a sud; nemmeno la minima luce filtra dalle finestre, tanto da far credere che il villaggio sia disabitato.", name 'villaggio' 'borgo' 'case' 'piazza' 'edifici' 'casa' 'strada' 'costruzioni' 'abitazioni' 'abitazione' 'har' 'plenais', before [; Listen: "Un silenzio quasi innaturale avvolge l'intero villaggio."; ], s_to PonteIn, n_to SentieroPalazzoIn, cant_go "La strada che attraversa il villaggio conduce da nord a sud; meglio rimandare le esplorazioni a domani.", has light; Direction -> "ponte" with name 'ponte', dir_to s_obj; Direction -> "palazzo" with name 'palazzo' 'edificio' 'castello' 'villa' 'costruzione', dir_to n_obj; Prop -> "finestre" with name 'finestre' 'finestra', description "Non una luce, non un rumore...", before [; Listen: <>; ], has pluralname static female; ORoom SentieroPalazzoIn "Sentiero per il palazzo" with description "La fiochissima luce di questa notte permette a malapena di distinguere un piccolo sentiero. Verso sud si stendono le piccole case del villaggio appena attraversato, e ad est si vede appena la scura sagoma di un vasto edificio che dovrebbe essere il palazzo del barone. In lontananza, verso nord, le alte montagne si stagliano nell'oscurit@`a, e tra loro l'ombra del monte Kalnam domina tutta la valle.", name 'sentiero' 'strada', s_to VillaggioIn, e_to DavantiPalazzoIn, compass_look [ obj; if (obj == e_obj) { if (creatura in self) "La strada per il palazzo @`e bloccata da quell'essere deforme."; if (self has general && creatura hasnt general) "Qualcosa o qualcuno sta bloccando la strada per il palazzo, ma nel buio non riesci a capire di cosa si tratti."; "La strada per il palazzo sembra particolarmente buia."; } ], before [; Listen: "Ti par di udire qualcosa di strano."; Go: if (noun == e_obj) { if (player in GuilnernIn) { give GuilnernIn general; PlayerTo(self,1); addhint(h_frobez); solved(h_begin); print "Guilnern sente qualcosa davanti a voi e si imbizzarisce, disarcionandoti. Fortunatamente riesci a controllare la caduta.^"; if (easy) "^@`E troppo buio per capire cosa @`e successo. Forse dovresti far ricorso allle tue conoscenze arcane."; rtrue; } if (creatura in self) { "Quell'ombra, quella creatura, si trova sul tuo sentiero, e solo la sua presenza riempie il tuo cuore di sgomento. Non trovi la forza di muovere solo un passo in quella direzione."; } if (self hasnt general) { give self general; "Provi a muovere qualche passo in direzione del palazzo, quando ti accorgi che qualcosa o qualcuno si trova sulla tua strada."; } if (creatura hasnt general) { "Non osi avvicinarti prima di aver scoperto cosa o chi ti aspetta pi@`u avanti."; } } ], each_turn [; if (player has light) solved(h_frobez); if (player has light && self has general && creatura notin self && creatura hasnt general) { addhint(h_creatura); move creatura to self; "^Grazie alla tua capacit@`a di vedere nelle tenebre riesci a scorgere la scura sagoma di una creatura solo vagamente umanoide, e il terrore ti pervade a questa visione."; } ], cant_go "Il palazzo @`e verso est e il villaggio verso sud, e con questa oscurit@`a conviene non lasciare il sentiero.", has light; Direction -> "villaggio" with name 'case' 'villaggio' 'borgo' 'edifici' 'casa' 'costruzioni' 'abitazioni' 'abitazione' 'har' 'plenais', dir_to s_obj, description "Sembra quasi un villaggio fantasma..."; Direction -> dirpalazzo "palazzo" with name 'palazzo' 'edificio' 'costruzione' 'castello' 'villa', dir_to e_obj, description [; <>; ], !"Il palazzo, ormai poco lontano, non pare troppo imponente...", cant_go "Ci saranno ancora un centinaio di passi tra te e il palazzo."; Distance -> "vulcano" with name 'monti' 'montagne' 'monte' 'montagna' 'catena' 'vulcano' 'kalnam', description "Il monte Kalnam, un vulcano spento, spicca tra le altre montagne.", cant_go "Il vulcano e le montagne sono troppo lontane."; ORoom DavantiPalazzoIn "Davanti al palazzo" with description "Nell'oscurit@`a quasi completa il sentiero termina davanti al palazzo del barone. Verso est il pesante portone @`e chiuso, mentre a sud @`e visibile un edificio che potrebbe essere una stalla.", before [; Listen: "Tutto tace."; ], e_to portoneIn, s_to portasudIn, w_to SentieroPalazzoIn, cant_go "Meglio non allontanarsi dal palazzo.", each_turn [; if (self hasnt general) { addhint(h_palazzo); give self general; "^Anche se la creatura @`e fuggita, hai come l'impressione che decine di occhi, e non tutti umani, ti stiano osservando."; } ], has light; Direction -> "villaggio" with name 'villaggio' 'borgo' 'case' 'casa' 'costruzioni' 'edifici' 'abitazioni' 'abitazione' 'sentiero' 'har' 'plenais', dir_to w_obj, description "Il sentiero verso ovest conduce indietro fino al villaggio."; Object -> "palazzo" with name 'palazzo' 'edificio' 'costruzione' 'castello' 'villa', description "Il palazzo del barone @`e un tozzo edificio a due piani.", before [; Enter: <>; Open, Unlock: <>; Knock: <>; Push: <>; ], has scenery; Object -> portoneIn "portone" with pname 'portone' '.or' 'porta' '.x' 'del' '.or' 'dell^' '.or' 'della' '.or' 'di' '.x' 'palazzo' '.or' 'edificio' '.or' 'costruzione' '.or' 'villa' '.or' 'castello' '.p' 'battente' '.or' 'batacchio', description "Il pesante portone @`e in legno, con borchiature intarsiate e un battente. Pare chiuso, probabilmente sprangato dall'interno.", door_to "Il portone @`e inesorabilmente chiuso.", door_dir e_to, knocked 0, before [; Open, Unlock, Enter: "Il portone @`e sbarrato dall'interno. Non hai alcuna possibilit@`a di riuscire ad aprirlo."; Knock: give self general; print "Con il battente percuoti pi@`u volte il portone, e ti par di sentire i tuoi colpi echeggiare all'interno.^"; if (easy) "^Ora non devi far altro che aspettare, e sperare che vengano presto ad aprire il portone."; rtrue; ], react_before [; Knock: if (noun == 0 or NULL) <>; Go: if (noun == e_obj) <>; ], each_turn [; if (self has general) self.knocked++; switch(self.knocked) { 3: "^Come senti dei rumori dietro a te, un brivido corre lungo la tua schiena. Nel buio percepisci una malvagit@`a di cui tutto ignori."; 5: endintro(); } ], has scenery door; Object -> "stalla" with name 'stalla' 'stalle', description "Il palazzo del barone @`e un tozzo edificio a due piani.", before [; Enter: <>; Open, Unlock: <>; Knock: <>; Push: <>; ], has scenery; Object -> portasudIn "porta di legno verso sud" with pname 'porta' '.x' 'di' '.x' 'legno' '.x' 'verso' '.or' 'a//' '.x' 'sud' '.or' 's//' '.x' 'delle' '.or' 'della' '.x' 'stalle' '.or' 'stalla', description "Una larga porta di legno chiude la stalla.", before [; Open, Unlock, Enter: "La porta @`e ben chiusa. Avresti bisogno di tempo per aprirla."; Knock: "Nessuna risposta."; ], react_before [; Go: if (noun == s_obj) <>; ], has scenery female door; !Object -> portanordIn "porta verso nord" ! with name 'porta' 'verso' 'nord', ! description "Una porta di legno rinforzato.", ! before [; ! Open: "La porta @`e chiusa e sprangata dall'interno."; ! Knock: "Nessuna risposta"; ! ], ! has scenery female; Object guilnernIn "Guilnern" with name 'guilnern' 'cavallo' 'destriero' 'palafreno', description "Guilnern @`e il tuo cavallo. Un palafreno sauro, veloce, agile, resistente.", life [; attack: "Non oseresti far del male alla tua fedele cavalcatura."; default: "Il suo nitrito riempie l'aria. Guilnern sembra molto agitato."; ], before [; Take, Ride, Climb: if (self has general) "Guilnern @`e molto nervoso. Ora @`e impossibile risalire in sella."; if (player in self) "Stai gi@`a cavalcando Guilnern."; if (parent(player)~=parent(self)) "Non riesci a salire in sella."; print "Balzi in sella a Guilnern.^"; PlayerTo(GuilnernIn,2); rtrue; Receive: "Non @`e un cavallo da tiro."; Go: rtrue; ], each_turn [x; x = (player in self); while(child(self)) move child(self) to parent(self); if (x) move player to self; ], has animate proper supporter enterable; Object creatura "creatura" with name 'sagoma' 'figura' 'creatura' 'essere' 'umanoide' 'ombra', description [; print "Poco lontano da te una sagoma scura si muove nella notte. Per quello che riesci a scorgere non @`e un uomo, n@'e un animale. Pare una creatura dalla forma vagamente umanoide, ma ben pi@`u alto di una persona normale; la postura solo parzialmente eretta, i movimenti animaleschi, e la sensazione di pericolo e di terrore che pare emanare da quell'essere bastano a farti gelare il sangue nelle vene.^"; if (easy) "^Forse nel tuo inventario possiedi qualcosa che possa essere usato contro questa creatura."; rtrue; ], escape [; solved(h_creatura); Achieved(0); give self general; remove self; " colpisce la creatura e questa, quasi terrorizzata, fugge nell'oscurit@`a lanciando un grido che niente ha di umano."; ], before [; Missile: print "Il dardo"; self.escape(); rtrue; Take, Push, PushDir, Search, Jumpover: "Non osi avvicinarti..."; ], react_before [; Drop: if (noun == stiletto && verb_word == 'lancia') <>; ], life [; Answer, Tell, Ask: "Non hai risposta... La creatura pare osservarti..."; Attack: if (second==stiletto) { move second to real_location; print "Il tuo pugnale"; self.escape(); rtrue; } "L'innaturale terrore dentro di te ti impedisce perfino di avvicinarti."; ThrowAt: if (noun==stiletto) { move noun to real_location; print "Il tuo pugnale"; self.escape(); rtrue; } default: "L'irrazionale e inspiegabile paura che quest'essere ti infonde non ti permette di avvicinarti."; ], has static female animate; [endintro; Achieved(1); print "Per un attimo uno spiraglio si apre tra le nuvole e la luce della luna illumina alle tue spalle qualcosa di orribile e di enorme, una creatura che non pu@`o esistere in questo mondo, terrificante ben pi@`u di qualsiasi cosa ti abbia sbarrato la strada dianzi. Nella tua mente senti risuonare uno strano mormorio che ti parla di tutto l'odio e la malvagit@`a che formano quest'essere e pervadono questo mondo senza speranza, e le gambe ti cedono.^ @`E solo un attimo, ma non ricordi di aver mai provato in vita tua una disperazione ed un terrore tanto profondi. Poi l'oscurit@`a torna ad avvolgere ogni cosa con il suo manto mentre, con immenso sollievo, senti aprirsi il portone del palazzo.^^"; waitkey(); MakeMovie(1); print "Due guardie ti scortano all'interno, dove vieni accolto dal maggiordomo e segretario personale del barone Inderus, Naradas. Vieni accompagnato alla tua camera, mentre le guardie si occupano di recuperare Guilnern e portarlo alle stalle.^ Nonostante il terrore che ti ha assalito e sconvolto, la stanchezza e una quasi innaturale spossatezza ti fanno cadere ben presto in un sonno profondo e, per fortuna, senza sogni.^ Il sole @`e gi@`a alto nel cielo quando finalmente ti desti.^^"; waitkey(); remark(1); move stiletto to player; move soldi to player; move spada to player; move mandato to player; move grimorio to player; magic.obliterate(); magic.addmana(23); hintlist.clear(); addhint(h_firstday); ! waitkey(); PlayerTo(TuaStanza,2); phase=1; night=0; !StartDaemon(nilis); !StartDaemon(dippin); !StartDaemon(iarin); iarin.daemonrun = true; ];