! 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. ! ------------------------------------------ ! Iarin (png) ! ------------------------------------------ NPC iarin with short_name [; if (self has proper) print "Iarin"; else print "ragazza"; rtrue; ], name 'ragazza' 'giovane' 'iarin' 'druida', description [; #IfDef DGAME; !print "(Trust=", self.trust, ")^"; #EndIf; ! La descrizione varia nelle diverse situazioni print "@`E una ragazza di poco pi@`u di vent'anni, non molto alta, e - sebbene non sia particolarmente appariscente - a una seconda occhiata ti rendi facilmente conto che i suoi lineamenti, la figura minuta ma ben proporzionata, il suo modo di muoversi e la dolcezza e la profondit@`a che ha nei suoi occhi castani le donano una bellezza particolare che non ti lascia affatto indifferente."; if (self in Radura && phase==2) print " Indossa un corto abito bianco, cinto in vita da un sottile nastro d'argento."; if (pendente in self) print " Al suo collo noti un piccolo pendente in argento, con la foggia di una foglia di quercia."; if (self in dvasca) print "^", (The)self, " adesso si trova insieme a te immersa nell'acqua che riempie la vasca scavata nella roccia. Non dovresti, ma per un attimo lasci correre lo sguardo sulla sua figura, soffermandoti per@`o poi qualche attimo sul suo volto prima di accorgerti che lei ti sta sorridendo."; if (self in pietre) print "^", (The)self, " adesso @`e sdraiata sulla nera pietra, il suo corsetto aperto lascia scoperto il suo seno. Nei suoi occhi leggi paura e tristezza, ma anche estremo coraggio."; ""; ], describe [; ! if (self.lastloc ~= real_location) { ! switch(random(5)) { ! 1: print "^", (The)self, " ti sta seguendo.^"; ! 2: print "^", (The)self, " arriva accanto a te.^"; ! 3: print "^", (The)self, " arriva qui, fermandosi al tuo fianco.^"; ! 4: print "^Vedi arrivare ", (the)self, ".^"; ! default: print "^", (The)self, " ti segue.^"; ! } ! rtrue; ! } if (self in pietre) "^", (The)self, " @`e distesa sulla pietra di basalto."; if (self in dvasca) "^Anche ", (the)self, " si trova immersa nell'acqua della vasca."; if (self.follower) "^", (The)self, " @`e qui, accanto a te."; rfalse; ], ! Tutti i flag e le variabili di stato per la gestione known FALSE, meet FALSE, follower FALSE, errand 0, ! Conosciuta, incontrata, sta seguendo, incarico zio showdlibro FALSE, showdiario FALSE, showfiala FALSE, ! Oggetti mostrategli greetnilis FALSE, seenoak FALSE, seenbody FALSE, seenstone FALSE, ! Oggetti da lei visti kissed 0, tellstone FALSE, tellstone2, tellmap FALSE, ! Argomenti trattati count 0, trust 0, talk 0, phrase 0, ct5 0, ! Stato dei dialoghi e altro (nota trust) herselfstone 0, herselfdream 0, ! Altro stato, per gestire "about herself" backhome false, todruid 0, donedruid false, daemonrun false, knowlian false, conversor iarintalk, react_before [; Go: if (self.todruid == 1 && self in Radura) { self.todruid = 2; <>; } if (self.todruid && self in Radura) { self.follower = false; print "Mentre ti allontani ", (the)self, " dice: @<>."; } if (self.todruid > 0 && self.todruid < 12 && self in DTempio && noun == n_obj) { self.follower = false; addhint(h_iarinvasca); print "Ti addentri nel passaggio che conduce al luogo sacro ma ti rendi conto che ", (the)iarin, " non riesce a raggiungerti, come se qualcosa stesse bloccandola.^"; } !Touch: if (noun == quercia && self.todruid == 0) "@<> dice la ragazza interrompendoti, @<>."; ], before [; Touch: if (self in pietre) "Con la mano carezzi la guancia della giovane, e lei ti sorride; il suo sguardo sembra immensamente triste."; if (self in dvasca) "Non ti dispiacerebbe, ma sarebbe un gesto estremamente ardito e sconveniente."; ], life [x; if (player has invisible && (~~self.meet)) { give player ~invisible; print "La ragazza, nel vederti apparire, pare sorpresa.^"; } if (self in Radura && phase==2) "La ragazza si volta verso di te dicendo: @<>"; Answer: "Non credi che lei ti abbia capito."; Greet: <>; Kiss: if (self.trust < 5) "A te non dispiacerebbe affatto, ma intuisci che la ragazza potrebbe non essere d'accordo."; if (self in dvasca && self.trust < 6) "Non ti dispiacerebbe, ma vista la situazione in cui vi trovate pensi che lei potrebbe trovarlo un gesto troppo ardito."; if (self.kissed >= 1 && self notin pietre && self notin dvasca) "Sarebbe chiedere troppo alla fortuna."; if (self in dvasca && self.kissed >= 2) "Sarebbe chiedere veramente troppo alla fortuna."; if (self in pietre && self.kissed >= 3) "Lo vorresti, non vorresti fare altro, ma @`e troppo tardi."; self.kissed=true; self.trust++; Achieved(39); if (self in pietre) { self.kissed=3; "Ti avvicini al volto di Iarin, stesa sulla fredda pietra, e la baci dolcemente. Lei risponde al bacio, arrossendo leggermente, e poi ti sorride con la tristezza negli occhi."; } if (self in dvasca) { Achieved(40); self.kissed=2; "Ti avvicini a Iarin, e lei si volta verso di te, con una luce di serenit@`a nei suoi occhi castani; poi la cingi tra le tue braccia, stringendola a te, e avvicini la tua bocca alla sua. Lei risponde al tuo bacio con dolcezza e passione mentre senti il suo corpo nudo contro il tuo, il suo seno sul tuo petto. Per ben pi@`u di qualche istante rimanete una nelle braccia dell'altro, godendo di quel momento, prima di sciogliere l'abbraccio che vi lega, allontanandovi di qualche passo e sorridendovi l'un l'altra."; } self.kissed=1; "D'improvviso ti avvicini alla giovane e la cingi tra le braccia, baciandola dolcemente. Lei risponde al bacio, per poi allontanarsi di qualche passo, sorridendoti ed arrossendo."; Show, Give: ! Mostriamole alcuni oggetti if (noun == mandato) "Non @`e la cosa pi@`u saggia da fare..."; if (noun == dlibro) { if (~~self.showdlibro) { self.showdlibro=TRUE; self.trust++; self.trust++; "Porgi alla ragazza il libro trovato nei sotterranei. Lei lo prende lo legge, mentre un'espressione incredula appare sul suo volto. @<> dice senza interrompere la lettura, @<>^ Una volta terminata la lettura, ti rende il libro aggiungendo: @<>."; } "Porgi alla ragazza il libro, e lei lo prende per rileggere qualche passaggio, per poi rendertelo."; } if (noun == diariotriven) { if (~~self.showdiario) { self.showdiario==TRUE; self.trust++; "@<> dici mentre le mostri il diario dello stregone. Lei ne scorre il contenuto e poi, rendendotelo, dice: @<>."; } "Le mostri il diario dello stregone. Lei lo prende per rileggere, ti pare, il brano del rituale delle creature attorno alla pietra."; } if (noun == storia) "La ragazza prende il libro e lo sfoglia velocemente, poi te lo rende dicendo: @<>."; if (noun == leggende) "@<> risponde, @<>"; if (noun == eibon or devermismisteriis) "Come le porgi il libro vedi che lei lo rifiuta dicendo: @<>."; if (noun == fiala && (~~fiala.empty)) { if (~~self.showfiala) { self.showfiala=TRUE; self.trust++; } "Porgi la fiala alla ragazza che la osserva attentamente per qualche attimo, e poi te la rende dicendo: @<>."; } "Non ti pare che ", (the)self, " sia interessata ", (arta)noun, "."; ThrowAt, Attack: ! Gestione dell'azione risolutiva if (action==##Attack && self in pietre) { x = 0; if ((second==stiletto or 0) && stiletto in player) x = stiletto; else if ((second==spada or 0) && spada in player) x = spada; if (x == 0) "Non possiedi l'arma adatta per farlo."; print "Appoggi la lama "; if (x == stiletto) print "del tuo pugnale"; else print "della tua spada"; print " sul seno nudo di Iarin. Lei ti guarda e annuisce, sorridendo. Ti rendi conto che il tuo volto @`e rigato di lacrime, e la sua decisione e il suo coraggio rendono ancora pi@`u difficile il tuo compito.^"; NoPicture(); self.daemonrun = false; !StopDaemon(self); move corpoiarin to parent(self); remove self; give x general; if (officianti.count==7) print "La sacerdotessa di colpo affonda il pugnale nel petto di Nilis, squarciando il cuore della povera vittima. Il portale @`e aperto. Con orrore infinito Sod Nigguerth sta varcando le porte di questo mondo.^Nello stesso attimo spingi ", (the)x, " nel seno di Iarin, "; else print "Spingi ", (the)x, " nel suo seno, "; print "la lama dilania la sua carne e penetra nel cuore. La ragazza ha un ultimo tremito, ma non emette un grido; solo i suoi occhi si voltano verso di te un'ultima volta. Poi Iarin giace immobile, mentre il suo sangue bagna la pietra sotto di lei.^"; if (officianti.count>=7) { win=TRUE; remove rituale; solved(h_evocazione); addhint(h_iarincura); Achieved(37); remove sodnigguerth; officianti.count=10; waitkey(); MakeMovie(7); print "Di colpo una nube argentea circonda l'immensa e terribile Sod Nigguerth. Tra la disperazione dei suoi adoratori, con un grido inumano che sembra provenire dalle nebbie stesse del tempo, l'oscura madre dai mille cuccioli viene ricacciata nei suoi abissi, sparendo nel nulla, bandita da questo mondo dal sacrificio di Iarin.^"; if (easy && fiala in player && (~~fiala.empty)) print "^Vorresti poter fare qualcosa per lei. Vorresti che non fosse troppo tardi. Tutta la saggezza del culto druidico @`e servita solo a questo?^"; } rtrue; } "Non oseresti mai."; !default: "La ragazza ti sorride, fissandoti con i suoi occhi che paiono scrutare nella tua anima."; ], lifedefault "La ragazza ti sorride, fissandoti con i suoi occhi che paiono scrutare nella tua anima.", orders [; ! > IARIN, LEGA IL GANCIO AL CONTRAPPESO (o viceversa) Tie, Insert, Take, Lock, Close, PutOn: if ((noun == gancio or contrappeso or corde) && (second == gancio or contrappeso or nothing or NULL) && (noun ~= second)) { if (contrappeso hasnt general) { give contrappeso general; "@<> le dici, @<>^ Sporgendosi pericolosamente, Iarin afferra la corda e fa passare il gancio attraverso l'anello, fissandolo saldamente."; } } ! > IARIN, SDRAIATI LieDown, Enter, Climb: if (action==##LieDown || noun==pietre) { if (pietre in real_location) { if (self in pietre) "Iarin si @`e gi@`a distesa sulla pietra."; print "@<>^"; if (~~self.seenstone) { addhint(h_iarindubbi); "@<>"; } if (self.trust<8 || (~~self.showdlibro)) { addhint(h_iarindubbi); "@<>"; } solved(h_iarindubbi); move iarin to pietre; AbovePicture(IarinStone_img, -1, -1); "@<> risponde la ragazza, la voce piena di tristezza, @<<@`E come se la leggenda del vulcano diventasse vera...@>>^Poi Iarin si apre il corsetto, togliendolo, e si avvicina a te per darti un leggero bacio sulle labbra prima di sdraiarsi sulla fredda pietra. Infine ti sorride dicendo: @<>."; } } Go: if (self.todruid) "@<> risponde lei, @<>"; if (self.follower) "@<> risponde lei, @<>"; NotUnderstood: "@<>"; default: "Sembra che non ne abbia intenzione..."; ], daemon [; !self.lastloc = locationof(self); if (real_location==Laboratorio && ishere(vade) && (~~self.known) &&(~~self.meet)) { ! Primo ingresso di Iarin self.count++; if (self.count>=3) { self.count=0; self.known=true; move self to Laboratorio; Achieved(5); RightPicture(Iarin_img, -1, -1); print "^Ad un tratto la porta principale si apre, e una giovane ragazza entra dicendo @<> rivolta all'alchimista."; if (player hasnt invisible) { print " Subito dopo si accorge di te e ti rivolge un sorriso dicendo @<>^ @<>^ @<>^"; give self proper; self.knowlian = true; self.talkto(false); } give m_iarin ~locked; ""; } } if (self in Radura) self.errand = 255; if (self in Laboratorio && vade in Laboratorio && self.errand < 3) self.errand++; if (self in Laboratorio && vade in Laboratorio && self.errand == 3 && ((~~ishere(self)) || silenceturns > 1)) { self.errand = 4; if (ishere(self)) { give iarin proper; give m_aloe ~locked; print_ret "^", (The) vade, " si rivolge verso la ragazza dicendo: @<>^ Iarin si volge verso di lui rispondendo: @<>."; } } if (self.errand == 4) { #IfDef TARGET_GLULX; if (picture == Iarin_img) NoPicture(); #EndIf; if (self in Laboratorio) { if (player hasnt invisible) npcmove(self, s_obj, DavantiAlchimista, " ti rivolge un sorriso di saluto e esce in strada.", " esce dal negozio, sorridendoti.", 2); else npcmove(self, s_obj, DavantiAlchimista, " esce in strada.", " esce dal negozio.", 2); rtrue; } if (self in DavantiAlchimista) { npcmove(self, w_obj, PiazzaVillaggio, " si dirige verso la piazza del villaggio.", " arriva dalla strada che conduce verso est.", 2); rtrue; } if (self in PiazzaVillaggio) { npcmove(self, n_obj, DavantiEmporio, " continua a camminare verso nord.", " arriva dalla piazza.", 2); rtrue; } if (self in DavantiEmporio) { npcmove(self, e_obj, Emporio, " entra all'interno dell'emporio.", " arriva all'interno dell'emporio, salutando con un sorriso.", 2); self.errand = 5; rtrue; } } if (self.errand == 5) { self.errand = 6; if (ishere(self)) { give erlik proper; give vade proper; give m_aloe ~locked; "^@<> dice la ragazza, @<>^ Erlik prende un piccolo involucro da una pila di merce e lo consegna alla ragazza dicendo: @<>."; } } if (self.errand == 6) { if (self in Emporio) { npcmove(self, w_obj, DavantiEmporio, " saluta dicendo @<> ed esce dal negozio.", " esce dall'emporio.", 2); rtrue; } if (self in DavantiEmporio) { npcmove(self, s_obj, PiazzaVillaggio, " si dirige verso la piazza di buon passo.", " arriva da nord.", 2); rtrue; } if (self in PiazzaVillaggio) { npcmove(self, e_obj, DavantiAlchimista, " si dirige verso est, tornando verso il laboratorio.", " arriva dalla piazza.", 2); rtrue; } if (self in DavantiAlchimista) { npcmove(self, n_obj, Laboratorio, " entra nel laboratorio.", " entra nel laboratorio.", 2); self.errand = 7; rtrue; } } if (self.errand == 7) { self.errand = 127; if (ishere(self)) { give iarin proper; give m_aloe ~locked; "^@<> dice lei porgendo l'involucro, @<>^ @<> risponde lui mentre ripone l'aloe tra le altre sostanze."; } } if (real_location==Radura && ishere(self) && self.donedruid) { solved(h_miniere); addhint(h_iarinminiere); } if (real_location==Radura && ishere(self) && (~~self.meet) && phase==3) { ! Iarin ti attende nella radura Achieved(19); self.meet=TRUE; self.follower=TRUE; self.talk=1; self.trust++; give m_iarin ~locked; addhint(h_iarinmeet); print "^Ti accorgi subito di non essere solo. Seduta ai piedi dell'altare di pietra vedi "; if (self has proper) print "Iarin, "; if (self.known) print "la nipote dell'alchimista"; else print "la ragazza"; print " che danzava durante il rito dei figli della valle. Ella si rivolge verso di te "; if (player has invisible) "nonostante la protezione del manto d'ombra, "; print "sorridendoti timidamente, e dice: @<>.^"; self.talkto(true); } if ((~~ishere(self)) && insetto in parent(self) && parent(self)~=nothing) { ! Iarin preda degli insetti move corpoiarin to parent(self); remove self; remove insetto; self.daemonrun = false; !StopDaemon(self); "^Mentre ti allontani ti par di udire la voce di Iarin, un ultimo grido soffocato."; } if (self.follower && (~~ishere(self)) && self notin pietre) { ! iarin ti segue if (real_location == dsacro && self.todruid > 0 && self.todruid < 12) ; else { move self to real_location; if (iarintalkingwith) self.talkto(true); if (location == real_location) switch(random(5)) { 1: print "^", (The)self, " ti sta seguendo.^"; 2: print "^", (The)self, " arriva accanto a te.^"; 3: print "^", (The)self, " arriva qui, fermandosi al tuo fianco.^"; 4: print "^Vedi arrivare ", (the)self, ".^"; default: print "^", (The)self, " ti segue.^"; } else print "^Nell'oscurit@`a senti i passi di ", (the)self, " che ti raggiunge.^"; } } if (ishere(self) && phase==3 && creature has general) { ! Iarin ti manda a dormire self.count++; if (self.count==8) print "^", (The)self, " ti dice: @<>.^"; } if (ishere(self) && real_location==DavantiPalazzo or DavantiAlchimista && phase==3 && creature has general) {! Iarin va a dormire print "^", (The) self, " dice: @<> Poi, sorprendendoti, ti da un leggero bacio sulla guancia e aggiunge @<>"; if (real_location==DavantiPalazzo) self.backhome = true; !print "per allontanarsi subito dopo in direzione del villaggio.^"; else { remove self; print ", apre la porta della bottega ed entra.^"; } if (self hasnt proper) { give self.proper; print "@<> aggiunge voltandosi e sorridendoti, @<>^"; if (~~self.knowlian) { self.knowlian=true; print "@<> le rispondi sorridendo a tua volta, prima che lei si volti nuovamente."; } } if (real_location==DavantiAlchimista) print "Subito dopo la porta si chiude alle sue spalle e senti il rumore della chiave che gira nella toppa."; print "^"; give self.proper; self.count=0; self.follower=FALSE; self.trust++; } if (self.backhome) { if (self in DavantiPalazzo) { npcmove(self, w_obj, SentieroPalazzo, " si allontana subito dopo in direzione del villaggio.", " arriva da est.", 0); rtrue; } if (self in SentieroPalazzo) { npcmove(self, s_obj, DavantiEmporio, " si dirige verso sud, verso il villaggio immerso nelle tenebre.", " arriva dal sentiero che porta verso il palazzo.", 0); rtrue; } if (self in DavantiEmporio) { npcmove(self, s_obj, PiazzaVillaggio, " si dirige attraverso il villaggio addormentato verso la piazza.", " arriva da nord.", 0); rtrue; } if (self in PiazzaVillaggio) { npcmove(self, e_obj, DavantiAlchimista, " attraversa la piazza silenziosa e si dirige verso est.", " arriva dalla piazza del villaggio.", 0); rtrue; } if (self in DavantiAlchimista) { npcmove(self, n_obj, Laboratorio, " si volta verso di te, sorridendoti, poi apre la porta della bottega e entra.^Subito dopo la porta si chiude alle sue spalle e senti il rumore della chiave che gira nella toppa.", " fa qualcosa di impossibile.", 0); self.backhome = false; remove self; rtrue; } } if (phase==5 && (~~self.follower) && ishere(self) && (~~self.todruid) && (~~self.donedruid)) { ! Iarin attende nella radura, secondo giorno self.talk=2; self.backhome=false; self.follower=true; self.todruid=1; self.talkto(false); addhint(h_iarinquercia); solved(h_nextday); RightPicture(Iarin_img, -1, -1); print "^Iarin, come ti vede, ti sorride dicendo: @<>. Osservando il suo volto, stanco e provato, intuisci che nemmeno lei ha passato una notte tranquilla.^"; } if (self.talk==3 && self in DavantiMiniere) self.talk=0; ], each_turn [; if (self.todruid) { self.follower=true; if (self in DCavernaStatue && self.todruid == 4) { self.todruid = 5; print "^", (The)iarin, " si sofferma ad osservare le statue, leggendo attentamente le parole scritte sul libro.^"; } if (self in DCavernaStatue && self.todruid < 4) { self.todruid = 4; print "^", (The)iarin, " si osserva intorno, meravigliata. Poi si volta verso di te chiedendoti: @<>. Come tu annuisci, lei continua: @<<@`E stupendo. Le grotte pi@`u nascoste dell'antico culto@>>.^I suoi occhi brillano di gioia mentre corrono dal tuo volto alla volta della caverna, dal fusto della quercia alle due enormi statue.^"; } if (self in DCavernaVasca && self.todruid == 8) { self.todruid = 12; solved(h_iarinvasca); Achieved(24); DVasca.wiarin = 1; RightPicture(Bath_img, -1, -1); print "^@<> dice ad un tratto ", (the)iarin, ". Poi si volge verso di te chiedendo: @<>^Nonostante l'oscurit@`a della caverna, sei sicuro che sia arrossita mentre te lo stava chiedendo, cos@`i a malincuore le volti le spalle, mentre lei si toglie gli abiti e entra lentamente nella vasca.^Per solo un attimo volgi la testa, intravedendola mentre si immerge nell'acqua, per poi attendere silenziosamente fino a che ", (the)iarin, " non esce dalla vasca e indossa nuovamente i suoi abiti.^"; #IfDef TARGET_GLULX; waitkey(); NoPicture(); #EndIf; print "@<> dice lei, @<>^Quando ti volti verso di lei, ti accorgi che ti sta sorridendo, serena.^"; } if (self in DCavernaVasca && self.todruid == 5 or 6 or 7) { if (self.todruid++ == 6) print "^", (The)iarin, " si avvicina alla vasca e si china per sentire l'acqua con la mano, mentre dice: @<<'Siate puri', c'@`e scritto sul libro... Credo che intendesse puri come quest'acqua@>>.^"; } if (self in DTempio && (~~self.donedruid)) { self.donedruid = true; print "^", (The)iarin, " volta la testa guardando le colonne, l'altare e ogni altra cosa che la circonda. Riesci quasi a percepire la gioia e la serenit@`a che sta provando in questo momento.^"; } if ((self in DCorridoio2 || self.todruid >= 21) && self.todruid >= 15) { self.todruid = 0; self.donedruid = true; self.talk = 3; print "^@<> dice sorridendo ", (the)iarin, ", @<>^Nella sua voce percepisci una tranquillit@`a e una risolutezza che forse prima di venire qui non aveva.^"; } if (self.todruid >= 15) self.todruid++; if (self in DSacro && self.todruid == 12 or 13 or 14) { switch (self.todruid++) { 12: print "^", (The)iarin, " si ferma davanti all'altare per un attimo, gli occhi socchiusi, poi dice a voce bassa: @<>.^"; 13: print "^", (The)iarin, " osserva l'altare, sfiorandolo appena con la mano.^"; 14: Achieved(25); solved(h_iarinquercia); move dnicchia to DSacro; RightPicture(Vial_img, -1, -1); print "^Ad un tratto ", (the)iarin, " si sfila il pendente che porta al collo e lo appoggia nell'incisione sopra l'altare. Con un rumore sordo un pezzo di roccia si sposta, lasciando una nicchia aperta nella parete.^"; } } } if (phase==5 && self.follower && real_location has woods) ! Frasi casuali nel bosco switch (++self.ct5) { 13: print "^Indicando gli alberi attorno a voi, Iarin dice: @<>^"; 27: print "^@<>, dice Iarin, @<>^"; } if (phase>=5 && self in Cunicolo && (~~self.tellmap)) { ! Miniere? self.tellmap=TRUE; print "^Mentre percorrete la galleria, Iarin dice: @<>.^"; } if (ishere(nilis) && (~~self.greetnilis)) { self.greetnilis=TRUE; print "^", (The)self, " e ", (the)nilis, " si scambiano un veloce saluto; dal loro sguardo capisci quanto l'affetto che le lega sia profondo.^"; } if (self in Radura && (~~self.seenoak) && ! Iarin vede la quercia (alberofiamme in Radura || alberomorto in Radura)) { self.seenoak=TRUE; self.talk = 8; print "^Vedendo la quercia bruciata, Iarin crolla in ginocchio piangendo. Ma la sua disperazione dura solo qualche attimo. Subito dopo la vedi rialzarsi fieramente, e le leggi una nuova risolutezza negli occhi ancora arrossati.^"; } if (ishere(corpovade) && (~~self.seenbody)) { ! Iarin vede Vade svenuto self.seenbody=TRUE; self.talk=9; print "^La ragazza si getta subito sul corpo dell'uomo, come per vedere se sia ancora vivo. Quando si rialza una lacrima scorre sul suo volto, mentre dice: @<<@`E ancora vivo... Ma non so cosa sia successo, n@'e se potr@`a riprendere conoscenza@>>.^"; } if (self in FondoBaratro && phase==8 && ! Miniere senza aver visto la pietra? (~~self.tellstone) && (~~self.seenstone)) { self.tellstone=TRUE; print "^@<> dice ad un tratto Iarin, @<>.^"; if (easy) print "^Forse dovresti prestarle ascolto.^"; } if (self in GalleriaSalita && phase==8 && (~~self.tellstone2) && (~~self.seenstone) && (self.showdlibro)) { ! Come sopra, secondo avviso self.tellstone2=TRUE; print "^Mentre risalite la galleria, Iarin ti dice: @<>.^"; if (easy) print "^Dovresti proprio prestarle ascolto. Tornate alla pietra.^"; } if (self in FondoBaratro && phase<8) { fondogal.cs++; if (fondogal.cs==3) print "^Ad un tratto Iarin si volge verso di te e chiede, indicando un piccolo segno sulla parete: ~Quel simbolo triangolare significa qualcosa, secondo te?~^"; } if (self notin FondoBaratro && fondogal.cs<3) fondogal.cs==0; if (self in GalleriaSalita && self.talk==6) self.talk=0; if (self in Sulponte && precipizio hasnt general && cucciolo has general) { ! "Salta nel baratro" give precipizio general; print "^Iarin appoggia una mano sulla tua spalla e ti indica un punto verso il basso, verso il precipizio, dicendo: @<>.^"; } rtrue; ], has female transparent; Object iarintalk with c1 0, c2 0, before [flag; iarin.talkto(true); if (iarin in pietre) { ! Caso particolare if (self has general) "In questo momento preferisci non dire altro."; give self general; "@<>^ @<>"; } if (iarin.talk) if (flag || iarin.talk <= 5) { ! Iarin deve parlare di un certo argomento switch(iarin.talk) { 1: print "Prima che tu apra bocca, la giovane ti interrompe e inizia a parlare: @<>.^"; if (iarin hasnt proper || (~~iarin.knowlian)) { print "@<> aggiunge, @<>^"; if (~~iarin.knowlian) print "Stupito dall'impeto e dalla risoluzione con cui si @`e rivolta a te, che pure sei venuto a cercare prove sul suo culto, non puoi far altro che fissarla e rispondere: @<>.^"; } give iarin proper; iarin.knowlian = true; 2: if (iarin.todruid == 1) iarin.todruid=2; print "@<> ti interrompe lei, @<>^ @<>^ @<>^"; 3: print "Prima che tu possa dire qualunque cosa, ", (the)iarin, " dice: @<>.^ @<> le rispondi, @<>^"; 4: print "@<> ti interrompe ", (the)iarin, ", @<>^ @<> rispondi, @<>^"; 5: print "@<> ti interrompe lei prima che tu dica qualcosa, @<>^ @<>^ @<>^"; 6: print "@<>^ @<>^"; 7: print "@<>^ @<>^"; 8: print "@<>^ @<> risponde lei a bassa voce, @<>^"; 9: print "@<>^ @<>^"; 10: print "@<>^ @<>^"; default: print "@<> dice la ragazza, @<>^"; } iarin.talk=0; rtrue; } if (flag && easy) { if (pietre in real_location && iarin notin pietre) { action=##LieDown; iarin.orders(); rtrue; } if (contrappeso in real_location && contrappeso hasnt general) { action=##tie; noun=contrappeso; second=gancio; iarin.orders(); rtrue; } if (iarin.seenstone && t_iarin_iscrizioni.cnumber == 0) { t_iarin_iscrizioni.act(); rtrue; } if (iarin.meet) { if (iarin.phrase > 2 && t_iarin_pietra.cnumber == 0) { t_iarin_pietra.act(); rtrue; } if (iarin.phrase > t_iarin_culti.number && t_iarin_culti.number < 3) { t_iarin_culti.act(); rtrue; } } if ((~~iarin.meet) && self.c1 > 0) { if (t_iarin_culti.cnumber == 0) { t_iarin_culti.act(); rtrue; } if (t_iarin_pietra hasnt general) { t_iarin_pietra.act(); rtrue; } } } ], description [k; if (iarin.meet) { ! Quando Iarin e' gia' in team if (iarin.seenstone && iarin.phrase < 5) iarin.phrase = 5; switch(++iarin.phrase) { 1: "@<>^ @<>"; 2: "@<>^ @<>"; 3: "@<>^ @<>"; 4: "@<>^ @<>. Il sorriso della ragazza mentre dice queste parole @`e dolcissimo."; 5: "@<>^ @<>"; 6: "@<>^ @<>"; } if (iarin.seenstone && (t_iarin_iscrizioni.cnumber < 3)) { t_iarin_iscrizioni.act(); rtrue; } if (iarin.seenstone) "In questo momento, dopo quello che avete letto sulla pietra, non ti viene altro da dire."; k = ++iarintalk.c2; if (k >= 5) k = random(k); switch(k) { 1: "@<>^ @<>"; 2: "@<>^ @<>"; 3: "@<>^ @<>"; 4: "@<>^ @<>"; default: "Non ti viene niente da dire..."; } }; ! Altrimenti if (iarin hasnt proper || (~~iarin.knowlian)) { give iarin proper; iarin.knowlian = true; "@<<@`E sempre un vero piacere incontrare una ragazza tanto graziosa. Io sono Lian Caeras, al tuo servizio. Ma Lian pu@`o bastare.@>>^ @<<@`E per me un piacere incontrare una persona cos@`i galante. Il mio nome @`e Iarin.@>>"; } else switch(++iarintalk.c1) { !! Nota: come mai ++self.c1 non funziona? 1: "@<>^ @<>"; 2: "@<>^ @<>"; default: "Non hai altro da dire, per ora."; } ], cant_go [; print_ret (The)iarin, " ti ascolta sorridendo, ma poi risponde dispiaciuta: @<>"; ]; Topic -> with metatopic m_iarin, name 'ella' 'lei' 'se' 'stessa', before [; if (iarin.seenstone && (~~iarin.herselfstone)) { iarin.herselfstone=true; "@<>^ @<>"; } if (phase == 5 && (~~iarin.herselfdream)) { iarin.herselfdream=true; "@<>^ @<>"; } if (iarin hasnt proper || (~~iarin.knowlian)) { give iarin proper; iarin.knowlian = true; "@<>^ @<>^ @<>"; } if (iarin.meet && self hasnt general) { give self general; "@<> @<> risponde lei, @<>"; } ], description "@<>^ @<>" "@<>^ @<>" "Non hai altro da chiedere."; Topic -> with metatopic m_barone, before [; if (UltimaStanza has general) "@<>^ @<>"; ], description "@<>^ @<>" "@<>^ @<>" "La ragazza non trattiene certo i suoi giudizi negativi - ma tutt'altro che sbagliati - nei confronti del barone."; Topic -> t_iarin_culti with metatopic m_culti, name 'figli', number 0, before [; if (wtopicword == 'rito' or 'rituale') { if (pietre in real_location) { action=##LieDown; iarin.orders(); rtrue; } ! Trasformato in > IARIN, SDRAIATI if (iarin.seenstone) { t_iarin_iscrizioni.act(); rtrue; } } if (iarin.trust>=3 && self hasnt general) { give self general; "@<>^ @<>"; } if (iarin.meet) switch(++self.number) { 1: "@<>^ @<>"; 2: "@<>^ @<>"; 3: "@<>^ @<>"; default: "Non ti viene altro da chiederle."; } ], description "@<>^ @<>" "@<>^ @<>" "Sembra che non ne sappia niente, anche se ti incuriosisce il fatto che abbia voluto difendere - sostenendo che non fanno male a nessuno - qualcosa che lei non crede che esista."; Topic -> with metatopic m_figli, before [; if (iarin.meet || iarin.trust>=3) {t_iarin_culti.act(); rtrue; } if (seguaci.count > 0) "@<>^ @<>"; ], description "@<>^ La ragazza trasale un attimo per poi rispondere subito: @<>" "Lei dice di non saperne niente, ma @`e una pessima mentitrice."; Topic -> with metatopic m_naradas, before [; if (UltimaStanza has general) "@<>^ @<>"; if (devermismisteriis has general && self hasnt general) { give self general; "@<>^ @<>^ @<>"; ], description "@<>^ @<>" "@<>^ @<>" "Non pensi di doverle chiedere altro a proposito di Naradas."; Topic -> with metatopic m_donna, before [; if (UltimaStanza has general) { if (self hasnt general) { give self general; print "@<>^ @< 0) print "@`e la donna che "; "era passata a fare acquisti al villaggio qualche tempo fa. Probabilmente organizzava tutto gi@`a da allora.@>>"; } "Non hai altro da chiedere."; } ], description "@<<@`E passata una donna dal villaggio, qualche tempo fa?@>>^ @<>" "@<>^ @<>" "Non credi sappia dirti altro. Per@`o la donna @`e passata dal laboratorio dell'alchimista, dall'emporio e dalla forgia. Potresti chiedere l@`i."; Topic -> with metatopic m_dippin, description [; give dippin proper; "@<>^ @<>"; ] "@<>^ @<>" "La ragazza non sopporta Dippin, @`e ovvio. Per@`o difficilmente ti dir@`a altro su di lui."; Topic -> with metatopic m_cerdil, before [; if (cerdil.vanished) "@<>^ @<>"; ], description "@<>^ @<>" "Non pensi sappia dirti qualcosa di interessante."; Topic -> with metatopic m_vade, name 'zio', before [; if (iarin.seenbody) "@<> @<>"; if (iarin.meet) "@<>^ @<>"; ], description "@<>^ @<>" "@<>^ @<>" "Non hai altro da chiederle, ovviamente ha una stima altissima di suo zio."; Topic -> with metatopic m_aloe, description "@<>^ @<>" "Non ti viene altro da chiedere."; Topic -> with metatopic m_erlik, description [; give erlik proper; "@<>^ @<>"; ] "@<>^ @<<@`E un gran chiaccherone, e adora sentire e raccontare storie. Ti consiglio di parlarci, se non l'hai ancora fatto.@>>" "Non ti sovviene altro da chiedere."; Topic -> t_iarin_nilis with metatopic m_nilis, vt 0, before [; give nilis proper; if (UltimaStanza has general) "@<>^ @<> Una lacrima scorre sul volto della ragazza."; if (nilis.vanished && self hasnt general) { give self general; "@<>^ @<>"; } if (iarin.trust>=4 && t_iarin_nilis.vt == 1) { self.vt = 2; "@<>^ @<>"; } ], description [; if (iarin.trust>=4) { t_iarin_nilis.vt = 2; "@<>^ @<>^"; } t_iarin_nilis.vt = 1; "@<>^ @<>"; ] "@<>^ @<<@`E una carissima ragazza, e la mia pi@`u cara amica. Con questo credo di aver detto tutto.@>>" "Non ti viene altro da chiederle su Nilis."; Topic -> with metatopic m_hila, before [; if (hila has proper && iarin.meet && self hasnt general) { give self general; "@<>^ @<>"; } ], description [; give hila proper; give nilis proper; "@<>^ @<>"; ] "@<>^ @<<@`E una cara amica di famiglia, e una brava persona, come ce ne sono ormai troppo poche.@>>" "Non pensi di aver altro da chiedere a proposito di Hila."; Topic -> with metatopic m_rabam, before [; if (rabam has proper && iarin.meet && self hasnt general) { give self general; "@<>^ @<>"; } ], description [; give rabam proper; give hila proper; give nilis proper; "@<>^ @<<@`E bravo, vero? @`E burbero, ma nasconde un cuore d'oro. Si chiama Rabam, e lavora a palazzo con sua moglie Hila e sua figlia Nilis.@>>"; ] "Non pensi di aver altro da chiedere a proposito di Rabam."; Topic -> with metatopic m_triven, description "@<>^ @<>" "@<>^ @<>" "Lo zio pu@`o saperne qualcosa di pi@`u, e la taverna rimane un buon posto dove chiedere informazioni."; Topic -> with metatopic m_bris, description "@<>^ @<>" "Non credi possa dirti qualcosa di interessante."; Topic -> with metatopic m_bano, description "@<>^ @<>" "Non hai altro da chiedere."; Topic -> with metatopic m_olfer, description "@<>^ @<>" "@<>^ @<>" "Credi che non sappia dirti niente di particolare sul fabbro."; Topic -> with name 'pendente' 'amuleto' 'collana', before [; if (pendente notin iarin) "@<>"; if (iarin.trust<3) { give self general; "@<<@`E molto bello, l'amuleto che hai al collo.@>>^ @<>"; } ], description [; if (self has general) print "@<>^@<<"; else print "@<<@`E molto bello, l'amuleto che hai al collo.@>>^@<>"; ] "@<>^ @<>" "@<>^ @<>" "Non hai altro da chiedere."; Topic -> with name 'contrappeso' 'gancio' 'anello' 'imbracatura', description [; if (contrappeso in parent(iarin)) { ! TRasformato in IARIN, LEGA IL CONTRAPPESO AL GANCIO !print "@<>^"; action=##tie; noun=contrappeso; second=gancio; iarin.orders(); rtrue; } "Non vedi niente di simile."; ]; Topic -> t_iarin_pietra with metatopic m_pietra, name 'altare', before [; if (pietre in real_location) { ! Trasformato in > IARIN, SDRAIATI action=##LieDown; iarin.orders(); rtrue; } if (iarin.seenstone) { t_iarin_iscrizioni.act(); rtrue; } if ((~~iarin.meet) && self hasnt general) { give self general; "@<>^ @<>"; } if (~~iarin.meet) "Per il momento non ti viene altro da chiedere."; ], description "@<>^ @<>" "@<>^ @<>" "Iarin ritiene quella pietra importante, e anche tu ne sei convinto. Per il resto non hai altro da chiederle."; Topic -> t_iarin_iscrizioni with metatopic m_iscrizioni, before [; if (~~iarin.seenstone) "Non pensi che ne sappia niente."; ], description "@<>^ @<>" "@<>^ @<>" "@<>^ @<> ti interrompe, @<>^ Non trovi le parole per rispondere a questa domanda." "Il coraggio di Iarin ti soprende, ma capisci anche la sua tristezza, e preferisci non insistere."; Topic -> with metatopic m_sodnigguerth, before [; if (~~iarin.seenstone) "Non pensi che ne sappia niente."; ], description "@<>^ @<>" "@<>^ @<>" "Non pensi di avere altro da dire."; Topic -> with name 'sogno' 'sogni' 'incubo' 'incubi', before [; if (phase<5 && self hasnt general) { give self general; "@<>^ @<>"; } "Non hai altro da chiedere."; ], description "@<>^ @<<@`E successo anche a te?@>> la sua voce trema per il terrore, @<>" "@<>^ @<>" "Il suo sogno @`e stato molto simile al tuo. Non pu@`o essere una coincidenza."; Topic -> with name 'visione' 'visioni', before [; if (~~iarin.meet) "Non credi sia un argomento di cui parlare ora."; ], description "@<>^ @<>" "@<> @<> La ragazza @`e visibilmente scossa mentre riferisce i dettagli della sua visione." "Preferisci non chiedere altro su quello che ha visto nella caverna."; Topic -> with metatopic m_valle, before [; if (iarin.trust > 3 && self hasnt general) { give self general; "@<>^ @<>"; } ], description "@<>^ @<>" "Non ti sovviene altro da dire."; Topic -> with metatopic m_villaggio, description "@<>^ @<<@`E solo un villaggio in una piccola valle. Non credo nasconda grossi segreti.@>>" "@<>^ @<>" "Non hai altro da chiedere."; Topic -> with metatopic m_miniere, description "@<>^ @<>" "@<>^ @<>" "Non hai altro da chiedere a proposito delle miniere."; Topic -> with metatopic m_fiume, description "@<>^ @<>" "Non credi che sappia qualcosa di interessante sul fiume."; Topic -> with metatopic m_foresta, description "@<>^ @<>" "Non credi di avere altro da chiedere sulla foresta."; Object pendente "pendente" with name 'pendente' 'amuleto' 'collana', description [; print "Un piccolo pendente in argento lavorato. La sua forma @`e quella di una foglia di quercia"; if (player has msight) print " e emana una tenue luminescenza dorata"; "."; ], aura "Il pendente emana un'aura che associ alle parole ~vista~ e ~protezione~."; Object corpoiarin "corpo di Iarin" with pname 'corpo' '.or' 'cadavere' '.or' 'seno' '.or' 'cuore' '.x' 'dilaniato' '.x' 'di' '.x' 'della' '.x' 'iarin' '.x' 'giovane' '.x' 'ragazza' '.p' 'iarin' '.or' 'ragazza' '.p' 'ferita', article "il", description [; if (self in pietre) "Il corpo di Iarin giace senza vita, disteso sulla fredda pietra nera. La lama che @`e entrata nel suo seno nudo ha squarciato il suo cuore. Il suo volto @`e sereno, e pare che ancora sorrida."; "Il corpo dilaniato di Iarin giace senza vita, riverso sul freddo suolo, la sua pelle squarciata. Non puoi fare a meno di pensare che forse avresti potuto salvarla."; ], before [; Touch: "Accarezzi dolcemente, come per un ultimo saluto, la povera Iarin; ti pare impossibile che quel corpo sia adesso privo di vita."; !Kiss: "Appoggi per l'ultima volta le tue labbra sulle sue, sentendole gi@`a fredde e prive di vita."; Take, Push, Pull: "Vorresti farlo, ma comprendi che non riusciresti mai a portar via di qui il corpo della giovane."; ], initial [; if (self in pietre) "Il corpo di Iarin giace sulla nera pietra."; "Il corpo di Iarin giace riverso per terra."; ], has static;