! scenes 11 et 39 ! 11 Odd nocturnal ritual. Beasts dance and march to musick. ! 39 Sounds-possibly musical-heard in the night from other worlds or realms of being. [EcouterMusique39; Musique(3101) ; print "Une musique se diffusait doucement dans l'air, mais je n'arrivais pas à l'identifier, et au bout d'un moment je n'entendis plus que des sons indistincts qui se mélangeaient avec le ressac de la mer et le vent dans les dunes.^"; rtrue; ]; Object Galet39 "galet" InRoulotte class ObjetPortail with name 'galet' , cleaned 0, description [; if (self.cleaned == 0) { Affichette(17); print "Un galet plat et large, un peu terreux.^" ; rtrue ; } else { Affichette(18); print "Un galet plat et large, reluisant après mon nettoyage. Il était veiné comme la peau d'une jeune femme.^"; rtrue; }; ], before [; Take, Touch, Push, Pull: if (player in InRoulotte) { print "Ce galet avait un aspect intéressant. Non seulement il piquait ma curiosité naturelle face aux roches de façon générale, mais de plus il semblait très lisse, et agréable au toucher. On ne pouvait que vouloir s'en emparer, ce que je tentais de faire sans attendre, mais dès le premier contact j'eus l'impression d'être englouti dans des vagues tourbillonnantes, et d'être emporté au large.^Ce ne fut que plusieurs heures plus tard que je me réveillai dans un lieu parfaitement inconnu.^"; move self to player ; self.obtenu = 1; Attend(); Demarrer39(); return 2; } else { print "M'attarder sur ce galet semblait n'avoir aucun effet hors de la croisée des lieux communs.^"; rfalse; } Rub: if (player in InRoulotte) { << touch self >> ; } else { print "Je frottai le galet pour le débarrasser de son sable mêlé de terre.^"; self.cleaned=1; rtrue; } ThrowAt,Insert: if (location == Piece39 or Plage39 && second == mer39) { print "Je lançai la pierre dans l'eau, et elle fit quelques ricochets avant de disparaître mollement sous l'intrigante surface de la mer.^" ; remove self ; rtrue; } else { print "Je jetai la pierre devant moi.^" ; move self to Location ; rtrue ; } ]; Object Piece39 "Dans la nuit" class Lieu with name 'plage', scenic_all 'bande' 0 NULL, scenic_look 'nuit' 'lueur' 'lune' 'brume' 'contour' 'contours' 'environ' 'environs' 0 "Les contours des environs se discernaient difficilement dans la lueur de la lune voilée par la brume." 'route' 'arbre' 'arbres' 0 "D'où j'étais, je ne voyais de la route que les arbres qui la bordaient." 'passage' 0 "Un passage au nord permettait de quitter la plage." , scenic_smell 'air' 'brise' 'marine' 'relent' 'relents' 'poisson' 'poissons' 'vase' 0 "Il régnait dans les environs une odeur désagréable de poisson et de vase.", scenic_listen 'bruit' 'singulier' 'furtif' 'musique' 0 EcouterMusique39, description [; Affiche(14); if (self hasnt visited) { Musique(3990); print "Je me retrouvai sur une plage en pleine nuit, une nuit douce mais inquiétante. Les contours des environs se discernaient difficilement dans la lueur de la lune voilée par la brume. Néanmoins, l'air n'était pas trop frais, et une brise marine m'offrait des relents un peu écoeurants de vieux poissons. La plage n'était pas très accueillante à ce moment de la journée, ou bien peut-être était-ce une impression générale liée à cet endroit. De plus j'avais comme l'impression d'entendre un bruit singulier et furtif. Je pouvais continuer l'exploration de cet endroit vers le nord.^"; rtrue; } else { print "La plage était un espace un peu vide et triste, constitué d'une bande de sable guère large, mais qui s'étendait à perte de vue vers le sud. Des dunes à l'est m'empêchaient de remonter vers la route bordée d'arbres plus haut, mais un passage au nord permettait de quitter la plage. Vers l'ouest, la mer tourmentée ne me disait rien qui vaille.^" ; rtrue ; } ], before [; Listen: if (~~noun) return EcouterMusique39(); Smell: if (~~noun) return smell39(); Swim: << enter mer39>> ; ], n_to Plage39, e_to "Les dunes m'empêchaient de remonter vers la route bordée d'arbres, plus haut.", w_to "Pour rien au monde je n'aurais voulu entrer dans cette eau malodorante et suspecte... Pour rien au monde ?", s_to "Je sentais que mes pas ne pourraient me porter au bout de cet infini constitué de sable. Il n'y avait rien pour moi dans cette direction.", cant_go "Je ne pouvais aller dans cette direction. Un passage au nord permettait de quitter la plage."; Object Plage39 "Dans la nuit" class Lieu with name 'plage', description [;Affiche(16); if (self hasnt visited) "Je continuai à marcher d'un pas désabusé sur cette plage, pour me retrouver à son extrémité nord."; else "J'étais de retour à l'extrémité nord de la plage."; ], before [; Listen: if (~~noun) { print "Une musique se diffusait doucement dans l'air, venant d'un peu plus au sud, mais je n'arrivais pas à l'identifier, et au bout d'un moment je n'entendis plus que des sons indistincts qui s'embrouillaient dans ma tête.^"; rtrue; } Smell: if (~~noun) return smell39(); Swim: << enter mer39>> ; ], s_to Piece39, e_to Cote39, cant_go "Je ne pouvais aller que vers le sud ou l'est.", has ; Object Cote39 "Dans la nuit" class Lieu with description [;Affiche(19);print "Je m'étais éloigné de la mer. Je pouvais alors un peu mieux respirer. Le chemin était bouché par ici, une épaisse végétation bloquant l'accès à la plage depuis l'extérieur.^";], name 'plage', w_to Plage39, cant_go "Je ne pouvais aller que vers l'ouest, vers la mer.", before [; Listen: if (~~noun) { print "Je n'entendais rien de notable ici, si ce n'était le son du vent.^"; rtrue; } ], has ; Object Sarcophage39 "tombeau" with name 'Sarcophage' 'tombe' 'tombeau' 'cercueil' 'mousse', adjective 'familial' 'pierre', description [;Affichette(20); print "Un tombeau en pierre à moitié couvert de mousse, et en partie caché par la végétation des buissons.^";], before [; Search: if (self has open) { if (idole39 in self) {print "Il y avait une idole en métal au fond du tombeau.^"; rtrue;} else print "Je ne remarquai rien de plus que l'évidence.^" ; rtrue; } else print "L'aspect extérieur du tombeau donnait une impression de force imposante. Il était fermé par un lourd couvercle en pierre.^"; give CouvercleSarcophage39 ~scenery ; rtrue ; Open : if (self hasnt open) {print "Je ne pouvais faire ceci simplement. Le couvercle était trop lourd pour être soulevé comme un coffre en bois.^"; rtrue ;} Close : if (self has open) {print "Le couvercle était trop lourd pour être manipulé comme un coffre en bois.^"; rtrue ;} ], after [; Examine: if (self has open) {print "Il était ouvert.^"; rtrue ;} else "Le couvercle était fermé."; ], found_in Cote39, has scenery static container enterable openable ~open; Object CouvercleSarcophage39 "couvercle" Sarcophage39 with name 'couvercle' 'inscription' 'inscriptions' 'croix', adjective 'esoteriques' 'esoterique' 'lourd', description [; ! Affichette(21); ! TODO ! print "Ce couvercle était couvert d'inscriptions ésotériques, dans une langue qui m'était inconnue. Les lettres traçaient des symboles blasphématoires dont la forme me donnait la chair de poule. Elles avaient dû être inscrites là bien après la construction du tombeau.^";], before[; Open: <>; Close: <>; Push, Pull: if (Sarcophage39 hasnt open) { print "Je poussai de toutes mes forces sur le couvercle qui semblait mobile. Il commença à bouger lentement, dans un frottement rauque, puis il bascula rapidement lorsque je réussis enfin à rompre son point d'équilibre. Il tomba alors au sol, et se cassa en partie, fendant tout un angle et par la même occasion une branche de la croix qui avait été sculptée dessus.^"; give Sarcophage39 open; rtrue ; } ! JB : ok, mais il faudra faire une description alternative pour le couvercle cassé...(et ne pas afficher l'image) else { "Le couvercle était à terre, et il était bien trop lourd pour que je puisse le remettre en place."; } ], found_in Cote39, has scenery static ; Object vegetation39 "végétation" with name 'chemin' 'vegetation' 'vegetaux' 'buissons' 'foret' 'arbres' 'arbre' 'branches' 'branche' 'maison' 'acces' 'buisson' 'verdure', adjective 'dense' 'epaisse' 'vegetal', description "la végétation.", before[; Examine, Search: give Sarcophage39 ~scenery ; print "Il y avait eu ici un domaine et une maison en limite de la plage, mais je ne pouvais pas les atteindre de ce côté, car la végétation y était trop dense. De toute façon la bâtisse semblait en ruine et sans grand intérêt, à moins que cela ne fût la peur qui brisa mon ardeur. En revanche en retirant quelques grosses branches il était possible de dégager un tombeau familial en bordure de la propriété.^" ; rtrue ; ], found_in Cote39, has scenery static ; Object idole39 "idole" Sarcophage39 with description [; Affichette(22); print "La petite idole en métal représentait un dieu ancien qui m'était inconnu. Sa surface était lisse et agréable au toucher. Un dessin sur son ventre dépeignait de façon très rudimentaire des monstres marins attirés par des notes de musique sortant d'un instrument amorphe, mais une barrière faite de rochers assemblés par des créatures semblables à ce dieu les tenait à distance.^"; ], name 'idole', adjective 'metal' 'petite', has female scored; Class Caillou (6) with description [; ! Affichette(15); ! TODO print "Les rochers que l'on pouvait trouver près de la rive étaient assez réguliers, presque comme des pavés.^"; ], article "une", plural "roches", name 'caillou' 'cailloux//p' 'roche' 'roches' 'rocher' 'rochers//p', before [ x ; Rub: print "Ayant séjourné des années ou peut-être même des siècles dans l'eau mouvante, le rocher n'était pas spécialement poussiéreux, et il n'avait pas non plus de vase.^"; rtrue; Take: x = noun ; if ( x ofclass caillou && (x in dunes39)) "Poser ces rochers sur la dune m'avait semblé une bonne idée un instant auparavant, je n'allais donc pas les reprendre."; ThrowAt,Insert: if (location == Piece39 && second == mer39) {print "Je retournai ce rocher à l'élément marin.^" ; rfalse; } else rfalse ; Listen: print "Je n'entendis rien de particulier en provenance des rochers.^" ; rtrue ; ], has concealed female ; Caillou granite39 "rocher" Cote39 with short_name "roche de granite", name 'gneiss' 'granite', adjective 'grenat', description "Une roche granitique, cela pouvait être un gneiss à grenat.", has ~concealed; Caillou ardoise39 "rocher" Piece39 with short_name "roche noire", name 'ardoise' 'schiste', adjective 'noire' 'noir', description "Une roche de couleur ardoise, et de type schiste, mais je ne savais pas son nom exact."; Caillou quartz39 "rocher" Plage39 with short_name "roche de quartz grise", name 'cristal' 'quartz', adjective 'gris' 'grise' 'grisatre', description "Un cristal de quartz, qui avait la particularité d'être un peu grisâtre."; Caillou basalte39 "rocher" Piece39 with short_name "roche de basalte", name 'olivine' 'tholeiite' 'basalte', description "Un morceau de basalte, que je reconnaissais comme une olivine tholéiite."; Object dunes39 "dunes" with name 'dunes' 'dune' 'sol' 'sable', article "les", boite 0, emboite 0, description [; Affiche(23); print "Des dunes, du sable.^"; ], before [x ; Listen: "En approchant mon oreille du sol, c'était comme si un géant frappait ses pieds sous la terre. Ce bruit semblait provenir de la mer."; Enter: "La pente en était trop abrupte et instable."; Receive: x = noun ; if ( x ofclass caillou && (ocarina39 notin dunes39)) { print "Quel intérêt avais-je à poser ce rocher sur la dune ?^" ; rtrue ;} if ( x ofclass caillou && (ocarina39 in dunes39)) {print "Cela semblait une bonne idée de poser cela près de l'instrument.^"; self.emboite++ ; if (self.emboite == 4 ) { self.boite = 1 ; ocarina39.disarmed = 1 ; print "Finalement, l'agencement des pierres disposées autour de l'ocarina allait complètement l'emprisonner. Le vent ne pourrait plus jouer ses notes outrageuses dans l'instrument démoniaque. " ; rfalse ; } ; ! pb avec rfalse, cela affiche que je place le dernier rocher après avoir parlé de l'agencement final, d'où cet emploi du futur dans le passé pour faire un peu moins bizarre. Si vous avez d'autres idées... rfalse ;} else rfalse ; ], found_in piece39 Plage39, has female scenery supporter pluralname; Object mer39 "mer" with description [; print "La mer semblait être comme de la poix dans cette nuit morne, la seule légèreté qui en émanait était lorsque les embruns venaient mourir à mes pieds. Qu'aurait-elle bien pu révéler si on y avait prêté meilleure attention ? Plus au loin vers le large, l'eau semblait plus visqueuse et sombre, mais peut-être était-ce la nuit qui me donnait cette impression inconfortable.^";], before [ x ; Listen: "Un bruit monotone, qui ressemblait à une plainte venant de l'au-delà. Et comme une impression de répétition. À moins que cela soit encore plus profond sous terre. Je ne voulus pas me concentrer plus sur ce bruit hypnotique, car j'aurais pu en devenir fou."; Swim, Enter: print "J'entrai dans l'eau poisseuse. Et je me sentis aussitôt happé vers le fond.^" ; Perdu39() ; rtrue ; Search, Touch: print "M'avançant précautionneusement, je vis indistinctement quelques rochers qui affleuraient entre les vagues, lorsque la visibilité le permettait. Mais je ne voulais pas m'y aventurer plus.^"; objectloop(x ofclass caillou) give x ~concealed ; rtrue ; Smell : return smell39(); ], article "la", name 'mer' 'ocean' 'eau' 'vase' 'ressac', invent [; ! When listing objects in the player's inventory if (c_style&FULLINV_BIT) rfalse; ! When listing objects at the end of a room description if (inventory_stage == 1) switch (children(self)) { 0: print "la mer"; 1: print "la mer"; default: print "la mer"; } rtrue; ], found_in piece39 Plage39, has female scenery supporter open container transparent; Object ocarina39 "ocarina" Piece39 class ObjetAutel with description [; if (self.disarmed ~= 0) { print "C'était un instrument étrange qui ne ressemblait à rien de ce que je connaissais, même s'il avait un peu l'apparence d'un ocarina.^" ; rtrue ;} else {Affichette(25);print "Il s'agissait d'un instrument rond, un peu comme un ocarina, avec des gravures maléfiques. Il semblait flotter dans l'air.^"; rtrue; } ; ], before [; Take, Touch: if (self.disarmed == 0) {print "L'ocarina se déplaça lorsque je cherchai à l'agripper, pour ensuite se poser sur une dune plus loin.^" ; move self to Dunes39 ; rtrue; } if (self.disarmed == 1) {print "Je pus enfin prendre possession de cet instrument, en bouchant avec mes mains le sifflet qui lui donnait vie. ^" ; move self to Player ; self.obtenu=1; give self ~static; self.disarmed = 2 ; Gagne39() ; rtrue ;} if (self.disarmed == 2) {print "Ok.^" ; move self to Player ; rtrue ;} Ask, Tell: print "Tandis que je parlais, l'ocarina s'était momentanément arrêté de jouer, pour reprendre de plus belle ensuite.^"; self.time_left = self.time_left + 3 ; rtrue; Blow, Sing, JouerInstrument: print "Je n'ai pas réussi à sortir un seul son de cet instrument. Mais tandis que j'essayais de jouer, je sentis un flux d'air très puissant entrer dans mes poumons, comme si c'était l'ocarina qui jouait en moi.^"; deadflag=1; print "^Je terminai mon aventure ici."; rtrue; Listen: print "Il m'était difficile de savoir exactement si les sons que je percevais venait de cet instrument, sortaient de mon imagination, ou bien étaient dissous dans cet air même que je respirais péniblement.^"; rtrue ; Attack: if (self.disarmed == 0) {print "L'ocarina se déplaça lorsque je cherchai à l'agripper, pour ensuite se poser sur une dune plus loin.^" ; move ocarina39 to Dunes39 ; rtrue; } else print "C'était impossible, il était trop dur et ne cassait pas.^" ; rtrue ; ], name 'ocarina' 'gravures' 'instrument', adjective 'malefiques' 'musique' 'rond', time_left 0, time_out [; if (self.disarmed == 0) { if (TestScope(player, ocarina39) == true) { print "^Soudain, je vis des ombres sortir de cet instrument. D'abord très vaporeuses, elles prirent progressivement plus de consistance, pour ensuite former un cercle, leurs bras levés vers le ciel, toujours sous les sons démentiels de cette musique obsédante qui s'accélérait et s'amplifiait de plus en plus. Elles se tournèrent alors vers la mer, et lentement je vis surgir hors de l'eau la chose qu'elles avaient invoquée. Je voulu courir au loin pour m'échapper, mais c'était peine perdue.^" ; Perdu39() ; rtrue ; } else { print "^Soudain, de la plage vinrent des ombres. Derrière elles une créature terrifiante les accompagnait. J'eu tellement peur que je m'évanouis, ce qui m'évita l'horreur d'être dévoré vivant et conscient.^"; Perdu39() ; rtrue ; } }; ], initial [; print "Un instrument de musique reposait au sol.^" ; rtrue ; ], disarmed 0, has static animate; [smell39; print "Il régnait dans les environs une odeur désagréable de poisson et de vase.^"; rtrue ; ]; !========================================================== ! Routines ! Réinitialisation des variables et des objets [ReInit39 init_tout; give Piece39 ~visited; give Plage39 ~visited; ! remettre les cailloux à leur place move granite39 to Cote39; give granite39 ~concealed; ! celui-là n'est pas caché move ardoise39 to Piece39; give ardoise39 concealed; move quartz39 to Plage39; give quartz39 concealed; move basalte39 to Piece39; give basalte39 concealed; ! dunes dunes39.boite=0; dunes39.emboite=0; ! remettre le tombeau dans son état initial give Sarcophage39 ~open; give Sarcophage39 scenery; give CouvercleSarcophage39 scenery; ! remettre la flute et l'idole dans le lieu ! sauf si on a gagné if (init_tout) { move idole39 to Sarcophage39; move ocarina39 to Piece39; ocarina39.disarmed=0; give ocarina39 static; } ]; ! Démarrer la scène : initialisation, compte à rebours et position du joueur. [Demarrer39; scene_en_cours = '39'; scene_39_visitee = true; ReInit39(true); ! si le joueur a déjà joué, on lui reprend l'ocarina gagné. StartTimer(ocarina39, 29); PlayerTo(piece39); ]; ! Stopper la scène : réinitialisation, arrêt des timers [Stopper39 init_tout; ReInit39(init_tout); StopTimer(ocarina39); DeplacerObjetsPortails(); ! si le joueur a perdu des objets "portail" dans la scène, ! les renvoyer dans la roulotte ]; ! Perdu [Perdu39; Perdu(); ! stoppe scène en cours et affichage message perdu ou retour roulotte ]; ! Gagne [Gagne39; Achieved(0) ; Gagne(); ! stoppe scène en cours et affichage message gagné ou retour roulotte ]; ! l'ocarina joue des notes qui attirent des monstres. Pour l'arrêter: rochers dans mer. ! assembler rocher en monticule ! pb "parler à la ..." => crash car manque dans la bibl.