! scene 31 ! 31 Prehistoric man preserved in Siberian ice. (See Winchell-Walks and Talks in the Geological field-p. 156 et seq.) ! 91 Lost winter day-slept over-20 yrs. later. Sleep in chair on summer night-false dawn-old scenery and sensations-cold-old persons now dead-horror-frozen? !189 Ancient necropolis-bronze door in hillside which opens as the moonlight strikes it-focussed by ancient lens in pylon opposite? Object GlobeNeige31 "globe de neige" InRoulotte class ObjetPortail with name 'globe', adjective 'neige' 'verre', secoue 0, time_left 0, time_out [; if (TestScope(self, Feu31) == true) { print "^La neige dans le globe retomba complètement.^" ;} self.secoue = 0 ; ], description [; if (self.secoue == 0) { affichette(3130) ; } if (self.secoue == 1) { affichette(3131) ; } print "Un globe à neige en verre, ce genre de gadget que l'on secoue ou tourne pour voir un paysage enneigé.^"; rtrue ; ], before [; Take,Touch,Pull,Push,Turn,Wave : if (player in InRoulotte) { self.secoue = 1 ; StartTimer(GlobeNeige31, 4); print "Je retournai le globe pour pouvoir admirer la neige synthétique qu'il y avait à l'intérieur.^Mais au moment où je reposai le globe, je sentis les contours de la roulotte se troubler, et ma tête tourner comme si c'était elle que j'avais secouée en tout sens...^"; move self to player ; self.obtenu = 1; Demarrer31(); return 2; } else { self.secoue = 1 ; ; StartTimer(GlobeNeige31, 4); print "Je retournai le globe pour pouvoir admirer de nouveau cette belle neige synthétique qui tombait sur le monde.^" ; rtrue ; } ], has concealed ; Object Piece31 "L'intérieur de la fuste" class Lieu with name 'cottage' 'chalet' 'fuste' 'rondins' 'rondin' 'fenetres' 'fenetre' 'table', description [; if (self hasnt visited) { Affiche(3136); print "Au terme d'une errance dans des éthers dont je ne me rappelais plus ni la consistance ni l'apparence, je me retrouvai debout dans un petit chalet rustique mais confortable. Les murs en rondins bruts contrastaient vivement avec les intérieurs victoriens auxquels j'étais habitué, mais l'impression n'était pas déplaisante, bien au contraire. Une cheminée en pierre, bien qu'elle fut éteinte, apportait un sentiment de confort supplémentaire à cette pièce unique. Une porte sans vitrage donnait sur l'extérieur.^"; rtrue ; } if (dehors31.enneige == 0) { Affiche(3136); print "J'étais dans un petit chalet en rondins, dont la rusticité et la simplicité m'étaient agréables. Une cheminée en pierre apportait un sentiment de confort supplémentaire à cette pièce unique. ^Au-dehors le soleil couchant d'été apportait des tonalités apaisantes pour mon esprit.^" ; rtrue ; } else { Affiche(3137); print "Le vieux chalet était assez délabré et relativement sale. La cheminée en pierre était la seule trace de civilisation dans cet endroit.^"; rtrue; } ; ], before [; Listen: listen31(); rtrue ; Smell: smell31(); rtrue ; ], e_to Dehors31, out_to Dehors31, has ; Object Porte31 "porte" with name 'porte', description "Une porte en bois.", when_closed "La porte était fermée.", when_open "La porte était ouverte.", door_to dehors31, door_dir e_to, found_in Piece31 Dehors31, has static door openable open female scenery; Object Chaise31 "chaise" Piece31 class Bois with name 'chaise' 'chaises//p' 'dossier' 'sculpture', adjective 'bois' 'cassee' 'sapin', article "une", plural "chaises", broken 0, description [; if (self.broken == 1) {print "Cette chaise était maintenant cassée, avec un pied qui lui manquait.^" ; rtrue;} else "Une chaise en sapin, au dossier grossièrement sculpté." ; ], before [; Enter,Utiliser: if (self.broken == 1) {print "La fatigue et l'énervement étant mon lot du moment, je décidai, un peu frustré d'avoir brisé l'unique chaise, de m'adosser au mur.^" ;} if (dehors31.enneige == 0) {move player to self ; print "À ce moment mon corps fut pris d'engourdissement et de lassitude intense, et au bout de quelques instants je m'endormis profondément.^" ; pause(); Affiche(3137); print "^^^^Après un repos sans rêve qui me parut une éternité, je me réveillai avec des courbatures un peu partout dans le dos et la nuque. Étrangement, le foyer était alors allumé, des flammes vives venaient apporter un peu de gaieté dans un environnement dorénavant sinistre.^"; dehors31.enneige = 1 ; give Feu31 on ; move Cristal31 to Feu31 ; Cristal31.cleaned =0 ; rtrue ;} else print "Je n'avais pas envie de sombrer de nouveau dans un sommeil aussi profond. J'évitai donc cette chaise comme la peste.^" ; rtrue ; Attack: if (self.broken ==0) { print "Je cassai la chaise en plusieurs morceaux.^" ; self.broken = 1 ; move PiedChaise31 to location ; rtrue ;} else "C'était déjà cassé." ; Take: "Je n'avais pas besoin de m'encombrer avec cela..."; ], has female supporter; Object PiedChaise31 "pied de chaise" class Bois with name 'pied' 'morceaux' 'morceau', adjective 'chaise' 'bois', description "Il était séparé du reste de la chaise.", before [; Insert,Tie,PutOn: if (second == Vetements31) { fabrique_torche31() ; rtrue ; } ], has ; Object Torche31 "torche" with name 'torche' 'pied', description "Une torche de fortune.", time_left 0, time_out [; if ((TestScope(self, Player) == true) && self has on) { print "La torche s'était éteinte.^"; } give self ~light ~on; ], before [; Give: if (second == HommeDesNeiges31) { print "Que valait une torche sans le secret du feu ? L'homme ne voulait pas de ce présent.^" ; rtrue ; } SwitchOn: if (((TestScope(self, Feu31) == true) && (Feu31 has on)) || ((TestScope(self, Brasero31) == true) && (Brasero31 has on))) { give self light; give self on ; StartTimer(self, 38); print "J'allumai la torche en la mettant dans le feu.^"; rtrue ; } else { print "Je n'avais rien pour l'allumer.^" ; rtrue ; } SwitchOff: give self ~light; give self ~on ; "J'éteignis la torche.^"; ThrowAt: if ((second == Byakhee31) && (self hasnt on)) { << Attack Byakhee31 >> ; } if ((second == Byakhee31) && (self has on)) { print "L'animal reçut la torche allumée sur son dos, et ses ailes s'enflammèrent rapidement. Il bascula sur le côté et repartit en hurlant vers le haut du sanctuaire, pour disparaître au dehors par une vitre cassée.^" ; remove Byakhee31 ; Byakhee31.present = 0 ; rtrue ; } ], has female switchable ~on scored; Object Feu31 "cheminée" Piece31 with name 'feu' 'foyer' 'cheminee' 'flammes' 'flamme' 'cendre' 'cendres', adjective 'jaune' 'jaunes' 'pierre' , description "Une cheminée en pierres jaunes.", before [; Search: if ((Cristal31 in self) && (Feu31 hasnt on)) { print "Il y avait une sorte de caillou dans les cendres.^" ; give Cristal31 ~concealed ; give self transparent ; rtrue ; } if ((Cristal31 notin self) && (Feu31 hasnt on)) { print "Il n'y avait rien de notable ici à part des cendres qui me salissaient les mains.^" ; rtrue ; } if ((Cristal31 in self) && (Feu31 has on)) { print "Le feu m'empêchait de pousser plus avant mes investigations dans cette cheminée.^" ; rtrue ; } SwitchOn: if (Torche31 has on) { give self light; give self on ; print "Je rallumai le feu avec ma torche.^" ; rtrue ; } else { print "Je n'avais rien d'autre pour l'allumer.^" ; rtrue ; } SwitchOff: if (self has on) { give self ~light; give self ~on ; !give Buche31 ~on ; "J'éteignis le feu en l'étouffant progressivement."; } else { print "C'était déjà éteint.^" ; rtrue ; } ], each_turn [; if ((Torche31 in self) && (Torche31 hasnt on)) { print "Quelques braises sous la cendre dans la cheminée me permirent de ranimer la torche.^" ; give Torche31 light; give Torche31 on ; StartTimer(Torche31, 28);} ], has female light static scenery container switchable ~on open; Object Vetements31 "vêtements de paysan" Piece31 with name 'habits' 'habit' 'vetements' 'vetement', adjective 'petits' 'paysan' 'paysans', description "Des vêtements de paysans.", before [; Wear: print "Ceux que j'avais me convenaient assez, de plus ceux-ci étaient trop petits pour ma taille.^" ; rtrue ; Attack,Dechirer: if (PiedChaise31 in location) { fabrique_torche31() ; rtrue ; } Insert,Tie,PutOn: if (second == PiedChaise31) { fabrique_torche31() ; rtrue ; } else if (second == Chaise31) "Si je voulais faire quelque chose de cela, il m'aurait fallu avoir un plus petit morceau de bois."; Burn: "Cela n'avait pas trop d'intérêt de brûler cela de cette façon, il faudrait un support pour allumer ce tissu." ; Search: "Je n'y trouvai rien d'intéressant."; ], has pluralname clothing; Object Dehors31 "Dehors" class Lieu with name 'dehors' 'environs', scenic_look 'cottage' 'chalet' 'fuste' 'rondins' 'rondin' 0 "Le chalet d'où j'étais arrivé." 'prairie' 'prairies' 'verdoyantes' 'paturages' 0 "Un fort joli décor.", enneige 0, viewed 0, description [; if (self.enneige == 0) { Affiche(3138); print "Les environs étaient constitués de prairies verdoyantes, que l'on pouvait admirer en contrebas. Les collines un peu plus loin étaient couvertes de pâturages.^"; rtrue ; } else { Affiche(3139); Musique(3190); print "Un hiver qui semblait avoir duré éternellement recouvrait les pentes environnantes. Une sensation de calme sans limite venait apaiser mon esprit, mais je n'avais pas l'impression d'être tout à fait seul ici. Il n'y avait pas d'humains à proximité, mais des animaux, et peut-être, autre chose encore ? En tout cas la seule piste praticable se trouvait vers une vallée un peu plus au nord. ^" ; if (self.viewed == 0) { print "Par quel phénomène hors du commun cela avait-il pu arriver ? Combien de temps s'était écoulé durant mon assoupissement ? Je ne l'ai jamais su, mais cela n'était rien face à ce qui allait se dérouler par la suite.^"; self.viewed = 1; rtrue; } rtrue; }; ], w_to Piece31, in_to Piece31, d_to [; if (dehors31.enneige == 1) { PlayerTo(Vallee31); rtrue;} ], n_to [; if (dehors31.enneige == 1) { PlayerTo(Vallee31); rtrue;} ] , cant_go "Je risquais de me perdre si je m'aventurais ainsi sans but précis.", before [; Listen: listen31(); rtrue ; Smell: smell31(); rtrue ; ], has ; Object Vallee31 "Dehors" class Lieu with name 'dehors', viewed 0, description [; Affiche(3141) ; if (self.viewed == 0) { print "Après quelques minutes de marche dans la neige poudreuse et délicate, j'atteignis la vallée un peu plus en bas. L'espace n'était pas si grand en fait, et je pouvais seulement encore avancer un peu plus, mais il était vain et sans doute dangeureux d'essayer d'entrer dans la forêt alentour.^^"; self.viewed = 1 ; rtrue; } else print "La vallée était large comme un stade, et entourée de forêts.^" ; ], before [; Listen: "Le vent apportait un peu de vie dans ce désert blanc. Mais il me sembla également qu'il y eut d'autres sons, des animaux, impossibles à identifier formellement."; Smell: "Je ne m'habituais pas encore suffisamment au froid qui me piquait le nez pour arriver à y déceler la moindre odeur."; ], s_to Dehors31, u_to Dehors31, n_to Vallee31b, cant_go "Je préférai ne pas m'éloigner des endroits dégagés.", has ; Object Vallee31b "Dehors" class Lieu with name 'dehors', viewed 0, description [; Affiche(3141) ; if (self.viewed == 0) { print "J'arrivai au bout de cette vallée, face à la montagne qui assombrissait tout ce qui était à sa base. J'eus un fort sentiment d'oppression, diminué malgré tout par l'étonnement de m'être retrouvé dans ce monde, qui m'apparaissait comme un rêve fou et unique. ^"; self.viewed = 1 ; rtrue; } else print "Le fond de la vallée était assombri par la montagne la plus proche. ^" ; if (vegetation31.brulee == 1) print "Le passage vers le col s'élevait graduellement vers le nord-ouest.^" ; ], s_to Vallee31, n_to "Les montagnes étaient infranchissables par là.", nw_to [; if (cristal31.broken == 1) { print "Avant de poursuivre, une intuition me dit que j'avais sans doute perdu un élément essentiel pour ma quête, mais je pouvais quand même essayer de continuer ma route.^"; } if ((vegetation31.brulee == 1) && ((cristal31 in player) || (cristal31.broken == 1))) { PlayerTo(Col31) ; rtrue ;} if ((vegetation31.brulee == 0) && (cristal31 notin player) && (cristal31.broken == 0)) { print "J'avais envie de continuer dans cette direction, mais une intuition me faisait repenser que je n'avais peut-être pas fouillé de fond en comble ce chalet. De plus le chemin était ici bloqué par une végétation sèche et abondante.^" ; rtrue ;} if ((vegetation31.brulee == 0)) { print "Même si cela n'était pas une forêt, la végétation était encore trop dense par ce chemin pour passer ainsi, mais je pouvais sans doute trouver un moyen pour la dégager.^" ; rtrue ;} else print "J'avais envie de continuer dans cette direction, mais une intuition me faisait repenser que je n'avais peut-être pas fouillé de fond en comble ce chalet.^" ; rtrue ; ], cant_go "Je ne pouvais aller dans cette direction.", before [; Listen: "Le vent tourbillonnait de plus en plus auprès de la falaise, et semblait hurler face à des dieux inconnus des hommes."; Smell: "Je ne m'habituais pas encore suffisamment au froid pour arriver à y déceler la moindre odeur."; ], each_turn[k; k = random(8); switch(k) { 1: print "^Un oiseau noir passa rapidement au dessus de moi, se dirigeant vers la montagne sombre avec un croassement lugubre, et disparaissant ensuite de ma vision. ^"; 2: print "^Un oiseau passa près de moi, pour s'enfoncer dans la forêt. ^"; 3: print "^Dans le crépuscule qui s'annonçait, les ombres de la montagne s'étiraient tragiquement sur l'espace dégagé de la petite vallée. ^"; 4: print "^Je me sentais perdu comme jamais je ne l'avais été au cours de ma vie.^"; } ], has ; Object decormontagnes31 "montagne" with name 'orniere' 'chemin' 'vegetation' 'buissons' 'foret' 'arbres' 'arbre' 'branches' 'branche' 'acces' 'buisson' 'verdure' 'montagnes' 'montagne' 'piste' 'falaise' 'roche' 'neige' 'collines' 'colline' 'pente' 'pentes', description "Le chalet dominait une partie des environs, mais un peu plus loin vers le nord se trouvaient des montagnes qui semblaient dépasser en hauteur tout ce qu'il y avait dans le monde connu. Le soleil allait se coucher entre les deux cimes à cette époque de l'année, mais aucun archéologue ni théologien ne viendrait jamais ici pour donner du sens à cet étrange spectacle qui s'offrait à mes yeux. ", before[; Search: "Il n'y avait rien à remarquer de particulier par ici."; ], found_in dehors31, has scenery static ; Object vegetation31 "végétation" with name 'vegetation' 'vegetaux' 'buissons' 'foret' 'forets' 'arbres' 'arbre' 'branches' 'branche' 'buisson' 'verdure', brulee 0, description "Une forêt recouverte de neige entourait à perte de vue cette vallée encaissée entre deux grandes montagnes.", before[; Examine, Search: print "Les arbres étaient trop éloignés pour pouvoir les détailler, et je ne souhaitais vraiment pas m'approcher de ces bois sur les côtés, certainement emplis d'animaux sauvages et sanguinaires. La montagne la plus proche quant à elle semblait totalement inaccessible, sauf par une grande ornière vers le nord, nord-ouest" ; if (self.brulee == 0 ) ", laquelle était envahie de végétaux."; else "."; Listen: "J'eus l'impression d'entendre des bêtes sauvages, des loups peut-être ?"; Burn,SwitchOn: if (self.brulee == 1 ) "J'avais déjà brûlé tout ce qui était possible ici."; else { if (Player notin vallee31b) { "Je pouvais voir de loin la ceinture de végétation autour de la montagne, mais il fallait encore m'approcher un peu."; } else { if ((Torche31 in Player) && (Torche31 has on)) { print "Avec ma torche, j'allumai un feu dans les végétaux secs devant moi, et cela brûla tout ce qui entravait mon passage, révélant un chemin en direction du flanc de montagne, qui empruntait une ornière menant derrière un gros mur de pierre au nord ouest.^" ; self.brulee = 1 ; rtrue ; } else "Il m'aurait fallu une source de chaleur pour allumer ces branchages." ; } } ], found_in vallee31 vallee31b, has scenery static ; Object Roche31 "montagne" with name 'chemin' 'orniere' 'acces' 'montagnes' 'montagne' 'falaise' 'roche' 'neige' 'collines' 'colline' 'pente' 'pentes' 'vallee', adjective 'grandes' 'grande', description "Une forêt recouverte de neige entourait à perte de vue cette vallée encaissée entre deux grandes montagnes.", before[; Examine, Search: Affiche(3140) ; print "Une forêt recouverte de neige entourait à perte de vue cette vallée encaissée entre deux grands monts entourés de brouillard. ^" ; if (vegetation31.brulee == 0) { print "L'unique accès à une des montagnes, par l'ornière au nord-ouest, était bloqué par de la végétation dense et desséchée.^"; rtrue ; } else { print "L'accès à la montagne était maintenant un peu plus dégagé vers le nord-ouest.^"; rtrue ; } Listen: "La montagne était silencieuse."; ], found_in vallee31 vallee31b, has scenery static ; Object Col31 "Sur un col glacial" class Lieu with name 'col', viewed 0, description [; Affiche(3140); if (self.viewed == 0) { print "Le chemin passait assez près des premiers arbres de la forêt, mais heureusement cela ne dura pas bien longtemps, et après quelques centaines de mètres j'arrivai sur un terrain complètement à découvert, qui traversait un gigantesque fossé où la roche avait été comme violemment arrachée à la montagne sur une dizaine de mètres de large.^Puis le chemin monta brusquement, pour rejoindre ensuite de hautes marches taillées dans la roche. Il n'y avait pas de rambarde ni de garde-fou ici, et au bout d'une centaine de marches, je me retrouvai à une hauteur impressionnante, un faux pas devenant ici mortel. Je ne pus que continuer vers l'ouest à ce niveau, tout en espérant qu'il n'y eût pas subitement une brusque rafale de vent qui aurait pu m'entraîner en bas.^"; self.viewed = 1 ; rtrue; } else print "Le chemin continuait vers l'ouest, sur un passage large comme un passage de porte.^" ; ], before [; Wait,Think,Sleep,Pray: print "Quelle bonne idée j'avais eu là, des maigres bêtes de la nuit arrivèrent sur cette proie sans défense qui les attendait, et m'enlevèrent dans la nuit.^"; Perdu31(); rtrue; ], s_to "J'avais déjà exploré tout ce qui me semblait nécessaire dans la vallée du bas, il me fallait progresser plus avant si je voulais partir d'ici.", w_to CercleVallee31, cant_go [; print "Un faux pas arrive si vite si on ne regarde pas où on met ses pieds et que l'on prend une direction autre que celle qui semble la plus évidente. Je chutai de plusieurs dizaines de mètres et m'écrasai tout en bas."; Perdu31(); rtrue; ], has ; Class Cratere31 with name 'montagne' 'cratere' 'ouverture' 'vallon' 'vallee', scenic_look 'oiseaux' 'oiseau' 'creatures' 'ailees' 'creature' 0 "Ces silhouettes inquiétantes apparaissaient puis disparaissaient comme elles étaient venues. À ce moment je n'en aperçus plus une seule, mais je savais que cela ne durerait pas, et qu'elles reviendraient dès que j'aurai baissé les yeux." 'falaises' 'falaise' 0 "Abruptes. Et infranchissables depuis ici." 'brumes' 'brume' 'brouillard' 0 "Je n'étais pas assez proche pour voir avec discernement ce qu'il y avait là." 'neige' 0 "La neige était moins dense ici qu'au dehors.", before [; Listen: "Le vent tourbillonnait de plus en plus auprès de la falaise, comme une sorcière-chaman qui aurait effectué une danse rituelle avant de tomber en transe pour communiquer avec le royaume des morts."; Smell: "Je ne m'habituais pas encore suffisamment au froid pour arriver à y déceler la moindre odeur."; ], each_turn[k; k = random(12); switch(k) { 1: "^Les ombres sans chaleur des bords de la montagne venaient recouvrir une partie du plateau de ce cratère, rendant l'identification des lieux assez imprécise."; 2: "^Étaient-ce des oiseaux géants ou d'autres créatures ailées qui planaient dans le ciel autour du cratère, semblant patrouiller ou protéger l'endroit ?"; 3: "^La nuit était tombée sur la vallée, mais le clair de lune apportait un peu de lumière."; 4: if (Torche31 has on) { give Torche31 ~light ; give Torche31 ~on ; print "^Je me sentais perdu dans cette immensité. Soudain une bourrasque de vent éteignit ma torche de fortune. Heureusement il faisait encore assez clair pour se diriger ici, grâce au clair de lune.^"; } else "^Je me sentais perdu dans cette immensité."; } ], has light; ! faire un message 1 fois sur 2 seulement pour éviter la lassiture... ! si possible incorporer plus de messages dans la version finale. Object CercleVallee31 "Dans la montagne" class Cratere31 class Lieu with viewed 0, description [ ; Musique(3191); Affiche(3142); if (self.viewed == 0) { print "Ayant passé un gros rocher qui cachait la vallée plus bas, je fis face à une ouverture dans le côté de la montagne. Diamétralement opposée, la montagne jumelle présentait une ouverture similaire, vers un univers que je n'eus jamais le loisir d'explorer par la suite. En passant cette entrée je découvris avec stupéfaction, au bout d'un tunnel éclairé par son extrémité, qu'elle menait vers un cratère dans la montagne.^Il y avait une sorte de brouillard au centre de cette vallée, un voile de brume propre à cacher des créatures monstrueuses ou des mystères effrayants.^"; self.viewed = 1 ; rtrue; } else "Le cratère de la montagne renfermait un vallon aux dimensions hors-normes."; ], n_to CercleVallee31b, u_to HautPylone31, w_to CercleVallee31c, nw_to CercleVallee31c, e_to "Longer le périmètre du cratère ne m'apportait rien, car tout se passait au centre.", cant_go "Les montagnes étaient infranchissables par là. En tout cas j'étais tout au sud du cratère.", has ; Object CercleVallee31b "Dans la montagne" class Cratere31 class Lieu with name 'colline' 'ouvertures', description [; Affiche(3143); print "^La brume se dissipait au fur et à mesure que j'approchais du centre du cratère. Il s'avérait qu'en fait ce centre n'était pas plat comme le reste, mais il supportait une assez grande colline, dans laquelle étaient creusées des ouvertures. Le plus impressionnant en ces lieux était la porte à double vantaux qui avait été comme enchâssée dans la pente, pour en protéger les mystères.^"; ], s_to CercleVallee31, n_to [; TestPortes31() ; rtrue ; ], in_to [; TestPortes31() ; rtrue ; ], w_to CercleVallee31c, cant_go "Il n'y avait pas de sorties de ce côté-là de la montagne.", has ; ! la mise en scène est sympa, mais c'est pas cool pour ceux qui font les images... [TestPortes31; if (cristal31.broken == 1) { print "Les portes de bronze semblaient fermées mais l'une d'elle était félée, et une partie s'en était détachée, si bien que je pus me glisser par cette entrée improvisée.^"; PlayerTo(InMausolee31); rtrue ;} if (portes31 hasnt open) { print "Ces portes de bronze étaient hermétiquement closes. ^"; return 1; } else { print "En passant le seuil de ce tombeau, le temps me donna soudainement l'impression d'être aussi tangible que l'espace, et j'eus le sentiment de faire un retour dans le passé. ^"; PlayerTo(InMausolee31); rtrue ; } ]; Object CercleVallee31c "Dans la montagne" class Cratere31 class Lieu with name 'peripherie', description [; Affiche(3144); "Je longeai la périphérie de la montagne, et arrivai sur un autre côté, semblable en tout point au reste de l'endroit, mais sans sortie vers la vallée au-dehors. Par contre une assez grande fosse avait été creusée là, avec une pente douce pour y accéder."; ], s_to CercleVallee31, d_to [;<>;], e_to CercleVallee31b, cant_go "Il n'y avait pas de sorties de ce côté-là de la montagne.", has ; Object Fosse31 "fosse" CercleVallee31c with name 'fosse' 'trou', description "La fosse était large d'une quarantaine de pieds, et profonde de dix environ.", has static scenery container female enterable open transparent; Object BlocGlace31 "bloc de glace" Fosse31 with name 'bloc' 'blocs' 'glace' 'poils' 'reflets' 'touffes' 'cube', fondu 0, description [; if (self.fondu==0) { affiche(3152) ; print "Parmi divers blocs qui s'étaient formés là au cours des temps, celui-ci était un peu plus étrange que les autres, en présentant des reflets sombres et inquiétants.^" ; } else { affiche(3153) ; print "Le bloc de glace était presque entièrement fondu, et une partie de la glace était été réduite en morceau, au pied du bloc.^" ;} ], before [; Take: "Je n'avais aucun intérêt à faire cela."; Search: if (self.fondu==0) "Une forme sombre et vaguement humaine semblait emprisonnée dans cette glace."; else "Quelques touffes de poils hirsutes restaient accrochées à la glace."; Attack: "La surface de la glace était trop dure pour moi."; ], has static ; Object Pylone31 "pilier" CercleVallee31 with name 'pylone' 'colonne' 'pilier' 'poteau' 'granit' 'escalier' 'marches' 'marche', adjective 'granit' 'noir' 'effile', description [; Affichette(3150); "C'était un pilier effilé, mais avec une large base, tout en granit noir et entouré d'un escalier du même granit qui montait à perte de vue vers le ciel. C'était une tour de Babel élevée sans doute avant la construction de Babylone et d'Etemenanki, alors que le puissant Mardouk n'était qu'un enfant inoffensif, et tout ceci à la gloire de Dieux bien plus anciens et cruels. Mais alors que la mythique citée antique devait resplendir de gloire et résonner des chants et des fêtes, on ne pouvait imaginer cet endroit que comme éternellement lugubre et vide, le théatre de rituels honnis et interdits."; ], has static ; Object HautPylone31 "En haut du pilier" !class Cratere31 class Lieu with name 'pilier' 'tour' 'marches' 'escaliers' 'plateforme' 'plate-forme', viewed 0, initial [; if (self.viewed == 0) { self.viewed = 1; "Au prix d'un effort surhumain, je gravis les centaines de marches irrégulières qui s'enroulaient autour de ce pilier."; } ], description [; Affiche(3144); "La fin des escaliers arrivait à l'air libre, formant une plate-forme large à peu près comme la cabane que je venais de quitter, et le vent me pressait contre les bords sans rambarde. Le sommet de la tour était hors d'atteinte, aux confins du ciel, et sans moyen d'y accéder pour un humain."; ], d_to CercleVallee31, u_to "Il n'y avait pas moyen de monter plus haut, la tour ne semblait pas avoir de sommet, et les escaliers s'arrêtaient au niveau de la plate-forme où je me trouvais.", has ; Object Cristal31 "pierre" Feu31 with cleaned 0, broken 0, name 'cristal' 'crystal' 'caillou' 'oeuf' 'rocher' 'forme' 'pierre' 'bogue', short_name [; if (self.cleaned == 0) print "caillou"; else print "cristal"; rtrue; ], adjective 'ovoide' 'poli' 'lisse' 'terreux' 'transparent' 'pur' 'pure' 'parfait', description [; Affichette(3145); if (self in Feu31) { print "Rien à dire de spécial là-dessus.^"; rtrue ;} if (self.cleaned == 0) "Un caillou en forme d'oeuf, de la taille de ma main."; else "Le cristal était de forme ovoïde, et ne représentait pas de forme connue, mais il semblait avoir été poli pour lui donner une signification. Sa surface était étrangement lisse."; ], before [; Rub, Touch: if (self.cleaned == 0) "Je frottai le rocher, sans rien découvrir de plus, si ce n'était que de petits morceaux terreux se détachaient de l'ensemble."; else "La pierre était déjà suffisamment brillante comme cela. Mais en la touchant, je sentis une sorte de chaleur traverser mon corps."; Attack: if (self in Feu31) "Je devais déjà récupérer la pierre pour faire cela." ; if (self.cleaned == 0) { print "En frappant le rocher, la bogue qui l'entourait se brisa, et à l'intérieur un cristal transparent se révéla à mes yeux.^" ; Achieved(9); self.cleaned=1; rtrue ; } else { print "Ce n'était pourtant qu'un léger coup, et la pierre semblait pourtant très résistante. Mais le choc s'intensifia en résonnant dans le cristal pur et parfait, et celui-ci se brisa finalement en mille morceaux, dans un son mat et étrangement sec. La gaffe !^"; self.broken = 1; remove self; score = score - 1; move Cristal31morceaux to location; rtrue; } Insert,PutOn,Tie: if ((second == Piedestal31) && (self.cleaned == 1)) { print "Le cristal semblait être taillé pour cet emplacement.^" ; move self to Piedestal31 ; rtrue; } if ((second == Piedestal31) && (self.cleaned == 0)) { print "Le rocher ne rentrait pas dans cela et tomba devant moi. Mais en touchant le sol de granit noir, une sorte de bogue qui l'entourait se brisa, et à l'intérieur un cristal transparent se révéla à mes yeux !^" ; move self to location ; self.cleaned = 1 ; rtrue ; } else { rfalse ; } Take: if ((Cristal31 in Feu31) && (Feu31 has on)) "Le feu m'empêchait de faire cela."; ThrowAt, Drop: if (second == Byakhee31) { print "Je lançai le cristal vers l'animal, qui le reçut sur son abdomen. Il cessa alors toute activité, se tourna vers moi avec un regard terrifié dans ses yeux vides. La pierre disparu sous sa peau, et son corps fut pris de tremblements dont les ondes me couchèrent au sol." ; pause() ; print "Lorsque je rouvris les yeux, il avait disparu de ma vue. ^" ; remove Byakhee31 ; remove self ; Byakhee31.present = 0 ; rtrue ; } if (location == Col31) { print "La pierre tomba dans les abîmes, disparaissant pour toujours.^" ; score = score - 1 ; remove self ; rtrue ; } else { print "Je laissai tomber le rocher devant moi.^" ; rfalse ; } Give: if (second == Byakhee31) { print "Je tendis la pierre brillante vers la créature. " ; if ((Byakhee31.attaque == 1) && (HommeDesNeiges31 in location)) { print "Comme gagné par plus d'énergie à la vue de cette roche, la créature dans un sursaut de rage tua instantanément l'homme qui l'attaquait. Son corps retomba à quelques mètres de là, et la créature s'approcha doucement de moi. "; Byakhee31.attaque = 0; } print "Elle prit le cristal entre ses griffes pendant un instant, et me la redonna peu après. "; pause(); print "Elle me souleva ensuite du sol, et s'élevant haut dans le ciel glacial de cet hiver, m'emporta loin de ce monde."; Byakhee31.present = 0; remove Byakhee31; Gagne31(); rtrue; } if (second == HommeDesNeiges31) { print "L'homme sourit et sortit d'une poche de ses guenilles une statuette similaire à celle qu'il était en train de sculpter, qu'il m'offrit en échange.^"; move Statuette31 to player; Statuette31.obtenu = 1; move Cristal31 to HommeDesNeiges31; Achieved(1) ; ! StopTimer(Byakhee31); ! normalement redondant avec la fct de réinitialisation Gagne31(); rtrue ; } ], has ; Object Cristal31morceaux "morceaux" with cleaned 0, name 'cristal' 'pierre' 'morceaux' 'bogue', adjective 'mille', description "Il n'y avait plus rien de la pierre originale, et ces morceaux étaient inutilisables.", before [; Rub, Touch, Attack,Take,ThrowAt, Drop,Insert,PutOn : << Examine self >> ; ], has scenery static concealed pluralname; Object Piedestal31 "support métallique" HautPylone31 with name 'piedestal' 'socle' 'pied' 'support' 'plaque' 'metal' 'argent' 'argente' 'trou', adjective 'rouge' 'argente' 'argentee' 'lisse' 'metallique', description [; ! Affichette(3146); ! TODO ! "Un piédestal en métal rouge, forgé d'une main de maître, pour représenter des formes abstraites qui n'avaient pas ou plus cours sur notre planète. Il soutenait une plaque argentée et lisse qui était percée d'un trou gros comme la paume de la main."; ], position 2, each_turn [; if ((Cristal31 in self) && (self.position==0) && (BlocGlace31.fondu==0)) { print "^Un rayon de lune traversa le cristal avec une lumière électrique, pour aller se refléter avec un éclat vif sur une surface en contrebas. Et au bout d'un moment, cet éclat diminua pour enfin se résorber totalement après quelques minutes, ne laissant plus que le rayon de lune se perdre dans le lointain.^"; BlocGlace31.fondu=1; rtrue ; } if ((Cristal31 in self) && (self.position==0) && (BlocGlace31.fondu==1)) "^Un rayon de lune traversa le cristal avec une lumière électrique pour aller se perdre dans le lointain, vers l'ouest."; if ((Cristal31 in self) && (self.position==1) && (portes31 has locked)) { print "^Un rayon de lune traversa le cristal avec une lumière électrique pour aller se refléter devant moi, vers le nord. La lumière en était atténuée par la brume, mais un imposant halo doré illuminait toute la vallée.^"; StartTimer(portes31, 4); rtrue ; } if ((Cristal31 in self) && (self.position==1) && (portes31 hasnt locked)) "^Un rayon de lune traversa le cristal pour aller mourir vers les brumes dans le nord."; if ((Cristal31 in self) && (self.position==2)) "^Un rayon de lune traversa le cristal pour aller se perdre au pied de la muraille à l'est."; ], before [; Turn, Push, Pull: if (self.position == 0) { print "Je tournai la base du support vers l'est.^" ; self.position = 2 ; rtrue ;} ; if (self.position == 2) { print "Je tournai la base du support vers le nord.^" ; self.position = 1 ; rtrue ;} ; if (self.position == 1) { print "Je tournai la base du support vers l'ouest.^" ; self.position = 0 ; rtrue ;} ; ], has static supporter transparent container open; Object Mausolee31 "nécropole" CercleVallee31b with name 'mausolee' 'tombe' 'tombeau' 'necropole' 'colline', description [; Affiche(3146); "La colline était assez ventrue, ayant un peu la forme d'un fantasmagorique mausolée pyramidal. Elle se finissait en pointe douce, à une hauteur de quelques cent cinquante pieds. Des trous réguliers en recouvraient la surface, et une titanesque porte de bronze terne en occupait la base."; ], has scenery static container enterable openable ~open; Object portes31 "monumentales portes de bronze" CercleVallee31b with name 'ouverture' 'porte' 'portes' 'sortie' 'voie' 'runes' 'vantaux' 'bronze', adjective 'monumentale' 'monumentales', article "de", description [; if (self hasnt open) { Affiche(3147); "J'apercevais à travers la brume diffuse de cette nuit, éclairée faiblement par une lune nonchalante, des portes en bronze de taille herculéennes, grandes comme peut-être huit fois ma taille. Nul doute quant à l'origine extra-humaine de cette construction. À moins que ceci n'ait été réalisé dans des temps immémoriaux, quand les hommes étaient reliés au divin d'une toute autre manière qu'à notre époque moderne..."; } else "Ces portes en bronze de taille herculéennes étaient ouvertes vers un passage que ne parvenaient pas à éclairer les rayons de lune."; ], each_turn [; if ((self.time_left ~= 0) && (Piedestal31.position == 1) && (self has locked)) { print "Je pus constater que le rayon de lune frappait exactement le centre de la porte, l'éclairant d'une façon terrifiante, et révélant furtivement des scènes en bas-relief dont je ne voulais plus me rappeler. À mon approche, avec un ronflement rugueux, les portes ont lentement commencées à se mouvoir latéralement pour rentrer dans les côtés de la colline. Mais il était trop tard, ou plutôt j'étais arrivé trop tôt... Le tableau horrible qui s'était imposé à mon esprit m'avait rendu fou.^"; give self open; give self ~locked; self.disarmed=1 ; Perdu31(); rtrue ; } ], before [; Attack, Open, Push : if (self has open) { print "Elles étaient déjà ouvertes ^"; give self open; return 2; } else print "Autant pousser les rochers à côté, ces portes étaient trop lourdes pour être manipulées par un humain. ^" ; rtrue ; Close, Pull : if (self has open) { print "Autant tirer les rochers à côté, ces portes étaient trop lourdes. ^"; return 2; } Touch : "L'atmosphère glaciale de cet endroit avait communiqué au métal dépoli un contact totalement givrant, qu'il m'était impossible de supporter."; ], time_left 0, time_out [; if (self.disarmed == 0) { self.disarmed=1 ; give self ~locked ; give self open ; print "La lumière dorée s'estompa alors. Un grand bruit résonna vers le nord et donna matière à l'écho.^"; } ], disarmed 0, has female pluralname openable lockable ~open locked static ; Object InMausolee31 "Dans le temple hors du temps" class Lieu with name 'temple' 'necropole' 'mausolee', scenic_look 'vitre' 'vitres' 0 "Des vitres qui ne laissaient passer aucune lumière se trouvaient à une distance incroyable, vers le haut de ce sanctuaire.", viewed 0, initial [; if (BlocGlace31.fondu==1) { move HommeDesNeiges31 to location; move Statuette31 to location ; } ], description [; Affiche(3149); if (self.viewed == 0) { self.viewed = 1 ; print "L'intérieur de cette sorte de nécropole dépassait tout ce que l'imagination pouvait concevoir, à la fois en grandiloquence, en esprit, en démesure et en horreur. Ceux qui avaient construit et décoré cet endroit étaient très certainement morts fous, à moins qu'il ne s'agisse d'une toute autre trempe d'humains ou de créatures dont la volonté dépassait le bien et le mal.^L'espace qui s'étalait sous mes yeux fiévreux semblait infini, et pourtant un sentiment d'oppression récurrent m'empêchait de goûter pleinement aux volumes illimités de cet intérieur. Des sons et des odeurs subtils m'enivraient de plaisir, tandis qu'une sourde vibration venait me soulever le coeur et provoquait chez moi de nauséeuses pensées suicidaires.^Dans un coin de cet endroit se trouvait un brasero qui lançait des lueurs sinistres."; } else "J'étais dans l'intérieur de la nécropole fantastique."; ], before [; Listen: "Je n'entendais rien mis à part mes propres pas qui résonnaient en ces lieux, mais je perçevais également une sorte de bourdonnement sourd qui me bouleversait terriblement."; ], out_to CercleVallee31b, s_to CercleVallee31b, cant_go "Impossible de ressortir par là.", has ; Object Statuette31 "statuette" class ObjetAutel with description [; if (self in player && (location == InMausolee31 || location ofclass Cratere31) ) { ! (Samuel) cette fin peut-elle être atteinte ? print "La statuette représentait une femme gironde, qui pouvait bien symboliser une déesse aux yeux de celui qui l'avait sculptée.^"; print "En touchant et me concentrant sur cette statuette, je sentis ce monde de glace perdre sa consistance, et progressivement disparaître. Je pouvais enfin quitter cet univers où j'étais devenu prisonnier.^" ; Gagne31(); rtrue ; } if (location == InMausolee31) "La statuette était trop loin de moi pour pouvoir la voir distinctement."; else "La statuette représentait une femme, qui pouvait bien symboliser une déesse aux yeux de celui qui l'avait sculptée."; ], name 'statuette' 'os', adjective 'os', before [; Take: if (Cristal31 notin HommeDesNeiges31) "L'homme ne m'aurait pas donné son bien sans rien en échange."; ], has female ; Object HommeDesNeiges31 "homme des neiges" class Homme with name 'homme', article 'l^', adjective 'prehistorique' 'neige' 'neiges', description [; Affichette(3151); print "L'homme avait un aspect rude. Il ressemblait aux hommes de Cro-Magnon tels qu'ils étaient décrits dans la plupart des livres de paléoanthropologie. Pourtant il présentait une figure joviale et sympathique, comme certains oncles lointains que l'on retrouvait après des années de séparation.^" ; if (Byakhee31.attaque == 0) { print "Il était en train de finir de sculpter une petite statuette dans un os.^"; } ; ], initial [; print "Un homme habillé de façon primitive se tenait là.^" ; ], life [ran; Attack: "Il était beaucoup trop fort pour moi, de plus il ne semblait pas agressif."; ! Give: ! if (second == Cristal31) ! {print "L'homme sourit et sortit d'une poche de ses guenilles une statuette similaire à celle qu'il était en train de sculpter, qu'il m'offrit en échange.^"; move Statuette31 to player ; move Cristal31 to self ; rtrue ; } ! if (second == Torche31) ! {print "Que valait une torche sans le secret du feu ? L'homme ne voulait pas de ce présent.^" ; rtrue ;} ; ! ! (Samuel) Il aurait fallu utiliser la "fake action" Receive au lieu de Give pour que cela fonctionne. ! Ask, Tell: Affichette(3151); print "Nous n'avions malheureusement pas le même langage, aussi il ne nous était pas possible de communiquer ensemble. "; ran = random(3); switch(ran) { 1: "L'homme émit un petit grognement plaintif."; 2: "L'homme se gratta la tête."; 3: "L'homme regarda de côté comme pour essayer de mieux comprendre."; } ], has ; Object Brasero31 "brasero" InMausolee31 with name 'feu' 'foyer' 'brasero' 'flammes' 'flamme' , adjective 'jaune' 'jaunes' 'metal' , description "Un brasero en métal.", before [; Search: "Il n'y avait rien d'autre qu'un feu qui semblait brûler là depuis des temps immémoriaux."; SwitchOn: if (self hasnt on) { if (Torche31 has on) { give self light; give self on ; "Je rallumai le feu avec ma torche."; } else "Je n'avais rien d'autre pour l'allumer."; } else "Le braséro était déjà allumé."; SwitchOff: if (self has on) { give self ~light; give self ~on ; print "J'éteignis le feu. À ce moment, par une relation inexplicable selon les sciences et la logique scientifique, tout ce qui m'entoura fut plongé dans les ténèbres, y compris la lune et les étoiles au dehors. Peut-être était-ce un feu sacré ?^"; Perdu31(); } else "C'était déjà éteint."; ], has light scenery static container switchable on open; Object Byakhee31 InMausolee31 class Monstre with name 'byakhee' 'insecte' 'chauve-souris' 'chauve' 'souris' 'animal', description [; affichette(3154) ; "C'était une sorte de créature se situant à moitié entre le règne des insectes et celui des chauves-souris. Elle possédait un gros corps gris semi-translucide de la taille d'un homme, avec un abdomen ressemblant à celui d'une guêpe, des ailes démoniaques et des pattes griffues redoutables. Sa tête surmontée de deux antennes ressemblait à un crâne de cheval, mais pourvu d'une mâchoire imposante avec des dents comme des poignards."; ], attaque 0, present 1, life [; Attack: if ((HommeDesNeiges31 in location) && (self.attaque == 1)) { print "Avec nos forces réunies, nous pûmes tuer la bête. Pris par une curiosité morbide, j'allais examiner son cadavre, quand l'homme me repoussa violemment en arrière. ^" ; pause() ; print "L'abdomen de l'animal se mit alors à rougir et provoqua une fumée épaisse et pestilentielle. A travers la fumée je pus voir ce que je n'aurais jamais cru possible : la créature se dématérialisa doucement et disparut en provoquant un souffle qui nous fit tomber tous les deux.^" ; remove self ; self.present = 0 ; self.attaque = 0 ; rtrue ; } else { print "Dans un acte de désespoir, j'essayait d'attaquer ce monstre en premier, mais ma tentative fut un peu futile." ; Perdu31(); rtrue ; } ], time_left 0, time_out [; if ((HommeDesNeiges31 in location) && (self.present == 1)) { print "Mais au bout d'un moment, les forces de l'homme le trahirent, et il se fit éliminer par le monstre. ^" ; pause(); print "Puis l'animal fonça sur moi toutes griffes dehors."; self.attaque = 0 ; self.present = 0 ; Perdu31(); rtrue ; } else { if (self.present == 1) { print "L'animal me poursuivit et fonça sur moi toutes griffes dehors."; self.attaque = 0; self.present = 0; Perdu31(); rtrue; } } ], each_turn[; if (self.time_left > 0) { if (self.attaque == 1) print "L'homme se battait courageusement contre la créature ailée.^" ; } if (self.time_left == 3) { if (HommeDesNeiges31 in location) { print "La créature devint de plus en plus agressive, et se préparait à m'attaquer. C'est alors que l'homme près de moi tira de sa veste un long couteau taillé dans un silex bleuté. Il se jeta sur la bête, et il s'ensuivit un combat sanglant entre les deux protagonistes.^" ; self.attaque = 1 ; rtrue ; } else "La créature devenait de plus en plus agressive, et semblait prête à me dévorer. " ; } ], initial [; StartTimer(self, 5); "Un animal inquiétant voletait dans le fond de la nécropole."; ], has proper static; [fabrique_torche31; print "Je déchirai le vêtement en morceaux pour l'attacher au morceau de bois, faisant ainsi une sorte de torche que je pris avec moi.^"; remove PiedChaise31 ; remove Vetements31 ; move Torche31 to Player ; rtrue ; ]; [smell31; if (dehors31.enneige == 0) "Du bois avait sans doute été fraîchement coupé un peu plus loin, et des odeurs d'herbes sèches et de foin embaumaient l'air."; else "Le froid qui emplissait l'air me gelait les narines."; ]; [listen31; if (dehors31.enneige == 0) "Des oiseaux et des animaux sauvages entouraient ce coin de paradis."; else "Il planait un silence de mort dans l'air."; ]; !========================================================== ! Routines ! Réinitialisation des variables et des objets [ReInit31 init_tout; GlobeNeige31.time_left=0; GlobeNeige31.secoue=0; give Piece31 ~visited; give Porte31 open; Chaise31.broken=0; cristal31.broken = 0; Dehors31.enneige=0; give Feu31 ~on ~transparent ~light; remove PiedChaise31 ; remove Torche31; give Torche31 ~light ~on; Torche31.time_left=0; move Vetements31 to Piece31; Dehors31.enneige=0; Dehors31.viewed=0; Vallee31.viewed=0; Vallee31b.viewed=0; vegetation31.brulee=0; Col31.viewed=0; CercleVallee31.viewed=0; BlocGlace31.fondu=0; HautPylone31.viewed=0; Piedestal31.position=2; remove Cristal31morceaux; Cristal31morceaux.cleaned=0; give Mausolee31 ~open; give Portes31 ~open locked; Portes31.disarmed=0; Portes31.time_left=0; InMausolee31.viewed=0; give Brasero31 on light; Byakhee31.attaque = 0; Byakhee31.present = 1; move Byakhee31 to InMausolee31; if (init_tout) { move Cristal31 to Feu31; give Cristal31 concealed; Cristal31.cleaned=0 ; remove Statuette31; } ]; ! Démarrer la scène : initialisation, compte à rebours et position du joueur. [Demarrer31; scene_en_cours = '31'; scene_31_visitee = true; ReInit31(true); ! si le joueur a déjà joué, on lui reprend ce qu'il a gagné PlayerTo(Piece31); ]; ! Stopper la scène : réinitialisation, arrêt des timers [Stopper31 init_tout; ReInit31(init_tout); StopTimer(Torche31); StopTimer(Portes31); StopTimer(Byakhee31); DeplacerObjetsPortails(); ! si le joueur a perdu des objets "portail" dans la scène, ! les renvoyer dans la roulotte ]; ! Perdu [Perdu31; Perdu(); ! stoppe scène en cours et affichage message perdu ou retour roulotte ]; ! Gagne [Gagne31; Gagne(); ! stoppe scène en cours et affichage message gagné ou retour roulotte ];