!========================================================== !Constant Story "190 Primal mummy in museum - awakes and changes place with visitor."; !Constant Headline ! "^Segment codé par Hugo Labrande, alias Mule Hollandaise^"; !Release 1; Serial "070417"; !========================================================== !Variables !Point d'entrée dans le bureau du gardien Global oldturn190; !Include "Parser"; !Include "VerbLib"; !========================================================== ! Pièces Object CartePostale190 "carte postale" InRoulotte class ObjetPortail with name 'carte' 'postale' 'timbre', description "Une carte postale représentant un objet de musée d'origine inconnue", before [; Take, Touch, Push, Pull,Lire: if (location == InRoulotte) { print "^J'allais toucher cette carte, quand un choc dans mon corps me fit perdre connaissance. Lorsque je me réveillai, je me retrouvai ailleurs.^"; move self to player ; self.obtenu=1; Attend(); Demarrer190(); return 2; } else { print "M'attarder sur cette carte postale semblait n'avoir aucun effet hors de la croisée des lieux communs.^"; rfalse; } ], has female concealed; ! (move self c'est pour gagner le score... -- Otto ) Object piece190 "Entrée du musée" class Lieu with name 'musee' 'hall' 'entree', scenic_all ! 'gardien' 0 "Le gardien n'était pas ici. Probablement dans son bureau." 'fenetre' 'fenetres' 'vitre' 'vitres' 'vitrail' 'vitraux' 'mur' 'murs' 'statue' 'statues' 'alcove' 'alcoves' 'colonne' 'colonnes' 'lampe' 'lampes' 'pilier' 'piliers' 'arc' 'arche' 0 "Il n'y avait rien de notable à ce sujet", scenic_look 'expo' 'exposition' 'civilisations' 'piece' 'pieces' 'salle' 'premiere' 'egypte' 'egyptienne' 'egyptiennes' 'grece' 'grecque' 'grecques' 'azteque' 'azteques' 'nordique' 'nordiques' 'nord' 0 "La première salle de l'exposition était accessible par l'escalier de marbre, droit devant, au nord." 'inscription' 'pancarte' 'ecriteau' 0 "~INTERDIT AU PUBLIC~. Le message était clair.", description [; Affiche(26); print "J'étais dans le hall d'entrée du musée Harthrowe, où semblait se dérouler une exposition de pièces rassemblées autour du thème ~L'au-delà dans les civilisations anciennes~, notamment dans les civilisations égyptiennes, grecques, aztèques et nordiques. Dans le hall en lui-même, il n'y avait pas grand-chose à voir : tout droit, au nord, un large escalier de marbre menait à la première salle de l'exposition, consacrée à l'Égypte ancienne ; "; if (gardien190 in location) { print "deux pots de fleurs, dont l'un était brisé, égayaient un peu le lieu d'architecture somme toute un peu froide.^"; } else { print "de part et d'autre des marches, deux pots de fleurs égayaient un peu le lieu, d'architecture somme toute un peu froide.^"; } rtrue; ], n_to egypt190, u_to egypt190, out_to "Si j'avais été transporté par le musée, c'était pour une raison : je décidai en conséquence de poursuivre l'exploration du musée.", w_to [; if (gardien190 in piece190) {oldturn190 = turns;}; return porte_gard190; ], in_to [; return self.w_to();], has scenery; Object gard190 "Bureau du gardien" class Lieu with name 'piece' 'salle', ! pas bureau car il y a un objet bureau scenic_look 'document' 'documents' 'administratifs' 'papier' 'papiers' 0 "Je n'étais pas spécialement attiré par ce genre de paperasse." 'chaise' 'chaises' 0 "Il n'y avait rien de spécial à propos de ces chaises droites et peu confortables." 'panneau' 0 "Il n'y avait rien de notable au sujet du panneau en lui-même." 'telephone' 'lampe' 'crayons' 'cendrier' 'allumettes' 'boite' 0 "Des objets du décor.", scenic_touch 'document' 'documents' 'administratifs' 'papier' 'papiers' 0 "Je n'étais pas spécialement attiré par ce genre de paperasse.", description [; Affiche(27); print "J'étais dans le bureau du gardien. Je voyais un bureau couvert de documents administratifs, quelques chaises chaises de part et d'autre du bureau"; print_ret " et une tasse de café."; ], e_to [; print "Alors que je m'apprêtais à sortir du bureau, je tombai nez-à-nez avec le gardien ! D'un air méfiant, il me questionna :^^~D'où vous venez, vous ? Qu'est-ce que vous faisiez dans mon bureau ?^- Euh... bredouillai-je d'un air gêné. Rien, en fait je cherchais les toilettes, je suis rentré là par inadvertance, et... Ne vous inquiétez pas, je n'ai rien touché !~^Le gardien me regarda d'un air mauvais : ~Ouais, c'est ça... Allez, ouste, fichez le camp !~^^Il rentra dans son bureau et claqua la porte. J'avais eu chaud...^"; Attend(); move gardien190 to gard190; give porte_gard190 locked; give porte_gard190 ~open; MoveFloatingObjects(); Affichette(33); return piece190; ], out_to [; return self.e_to(); ], each_turn [; if (turns-oldturn190==4) { Attend(); print "^La porte s'ouvrit soudain en grand et je me retournai en sursautant : c'était le gardien. Au moment où il me vit, il devint tout rouge, et cria :^^~VOUS ! Qu'est-ce que vous fichez là ? Vous avez pas vu la pancarte ?! Il est FORMELLEMENT interdit de rentrer ici ! Dégagez de là !~^^Je battis en retraite, en bredouillant quelques excuses, et sortis le plus vite possible.^"; Attend(); move gardien190 to gard190; give porte_gard190 locked; give porte_gard190 ~open; MoveFloatingObjects(); Affiche(33); PlayerTo(piece190); } ], has scenery; Object egypt190 "Salle de l'Égypte Ancienne" class Lieu with name 'premiere' 'salle' 'egypte' 'ancienne', scenic_look 'papyrus' 'hieroglyphes' 'etape' 'etapes' 'pesee' 'balance' 'ame' 'mort' 'divinite' 'divinites' 'dieu' 'dieux' 'dessin' 'dessins' 'plume' 'coeur' 0 "Je pouvais voir divers papyrus couverts de hiéroglyphes, ou d'autres encore dessinés représentant les différentes étapes après la mort, la pesée de l'âme par les divinités, etc." 'planche' 'explicative' 'clouee' 0 "L'embaumement, un rite bien étrange pour moi... Le sarcophage contenait-il une réelle momie, ou bien était-il vide ?" 'statue' 'statues' 0 "Magnifiques.", description [; Affiche(28); "Il s'agissait de la première salle de l'exposition, consacrée à l'Égypte Ancienne. On pouvait y voir divers papyrus couverts de hiéroglyphes, ou d'autres encore dessinés représentant les différentes étapes après la mort, la pesée de l'âme par les divinités, etc. Une planche explicative du musée était clouée au mur, détaillant les processus intervenant dans l'embaumement du défunt. Mais la chose la plus attirante dans cette salle était sans conteste l'imposant sarcophage qui y trônait : massif et beau, je le trouvais tout simplement fascinant. Que le musée ait réussi à s'en procurer un était extraordinaire."; ], n_to nord190, e_to grece190, s_to [; if (momie190 in location) { print "Je regardai les escaliers : avais-je une chance de m'en tirer en fuyant vers le hall ?^"; momie190.massacrer_le_joueur(); rtrue; } else return piece190; ], d_to [; return self.s_to();], cant_go "Je ne pouvais aller dans cette direction. La salle consacrée aux civilisations nordiques se trouvait au nord. Celle consacrée à la Grèce antique était à l'est. Un imposant escalier de marbre redescendait vers le hall d'entrée.", has scenery; Object grece190 "Salle de la Grèce Antique" class Lieu with name 'salle' 'grece' 'antique', scenic_look 'fresque' 'fresques' 'mosaique' 'mosaiques' 'trajet' 'ame' 'au-dela' 'mort' 'styx' 'hades' 'charon' 'barque' 'enfer' 'enfers' 'sisyphe' 'champ' 'champs' 'elysees' 'elyseens' 0 "Je pouvais admirer des fresques et des mosaïques, qui représentaient pour la plupart le trajet de l'âme dans l'au-delà. On pouvait y voir les Enfers, et je reconnus la barque de Charon sur le Styx, Sisyphe, Hadès, et les Champs-Élyséens." 'mur' 'murs' 'panneau' 'panneaux' 'citation' 'citations' 0 "Sur les murs, des panneaux faisaient ressortir en grand des citations de grands auteurs grecs à propos des Enfers...", description [; Affiche(29); "La salle consacrée à la Grèce antique était superbement décorée : on pouvait y admirer des fresques et des mosaïques, qui représentaient pour la plupart le trajet de l'âme dans l'au-delà. On pouvait y voir les Enfers, et je reconnus la barque de Charon sur le Styx, Sisyphe, Hadès, et les Champs-Élyséens. Sur les murs, des panneaux faisaient ressortir en grand des citations de grands auteurs grecs à propos des Enfers..."; ], w_to egypt190, n_to azt190, cant_go "Je ne pouvais aller dans cette direction. La salle consacrée à l'Égypte antique se trouvait à l'ouest. Celle consacrée à la civilisation aztèque était au nord.", has scenery; Object nord190 "Salle nordique" class Lieu with name 'salle' 'nordique' 'nordiques', scenic_look 'piece' 'pieces' 'archeologiques' 'manuscrit' 'manuscrits' 'planche' 'planches' 'explicatives' 'mort' 'au-dela' 'valhalla' 'gimble' 0 "Il s'agissait de vieux manuscrits, remarquablement conservés d'après ce que je pouvais en juger, agrémentés de planches explicatives. Je pus voir qu'il était détaillé ce qu'il était censé advenir après la mort, et des termes nordiques tels que le Valhalla, önd, Herfjottur ou le Gimble retinrent mon attention.", ! TODO GIMBLE ?? -> voir avec Mule Hollandaise si on peut mettre Önd / Herfjottur à la place ! tels que le Valhalla ou le Gimble retinrent mon attention. description [; Affiche(30); "Cette salle était consacrée aux civilisations nordiques. Du fait du nombre limité de pièces archéologiques relatives à ces civilisations, il semblait normal que ce musée n'aie pu s'en procurer beaucoup. Il s'agissait de vieux manuscrits, remarquablement conservés d'après ce que je pouvais en juger, agrémentés de planches explicatives. Je pus voir qu'il était détaillé ce qu'il était censé advenir après la mort, et des termes nordiques tels que le Valhalla ou le Gimble retinrent mon attention."; ], s_to egypt190, e_to azt190, cant_go "Je ne pouvais aller dans cette direction. La salle consacrée à l'Égypte antique se trouvait au sud. Celle consacrée à la civilisation aztèque était à l'est.", has scenery; Object azt190 "Salle aztèque" class Lieu with name 'salle' 'civilisation' 'azteque', scenic_look 'codex' 'parchemin' 'parchemins' 'dessin' 'dessins' 'scene' 'scenes' 'bataille' 'sacrifice' 'rituel' 'couteau' 'couteaux' 'pierrerie' 'pierreries' 'masque' 'masques' 'funeraire' 'funeraires' 'statuette' 'divinite' 'divinites' 'dieu' 'dieux' 0 "Il y avait de nombreux codex, ces parchemins dessinés représentant diverses scènes, qui allaient de scènes de bataille aux scènes de sacrifice rituel. De nombreux objets étaient aussi présents : couteaux de sacrifice incrustés de pierreries, masques funéraires, statuettes de divinités..." 'inscription' 'pancarte' 'ecriteau' 0 "~INTERDIT AU PUBLIC~. Le message était clair.", description [; Affiche(31); "Je me trouvais dans la salle consacrée à la civilisation aztèque. Il y avait de nombreux codex, ces parchemins dessinés représentant diverses scènes, qui allaient de scènes de bataille aux scènes de sacrifice rituel. De nombreux objets étaient aussi présents : couteaux de sacrifice incrustés de pierreries, masques funéraires, statuettes de divinités..."; ], w_to nord190, s_to grece190, in_to porte190, n_to porte190, cant_go "Je ne pouvais aller dans cette direction. La salle consacrée aux civilisations nordiques se trouvait à l'ouest. Celle consacrée à la Grèce antique était au sud. La porte de la réserve était au nord.", has scenery; Object reser190 "Réserve" class Lieu with name 'reserve' 'piece', scenic_look 'lumiere' 'fenetre' 'volet' 'volets' 0 "Le peu de lumière filtrant à travers les volets clots suffisait à donner un peu de visibilité aux objets stockés dans la réserve." 'capharnaum' 'objet' 'objets' 'art' 'tableau' 'tableaux' 0 "Des membres de statues, des tableaux, des objets d'art divers..." 'membre' 'membres' 'bras' 'jambe' 'main' 'pied' 'statue' 'statues' 0 "Il y avait certainement de quoi faire quelques statues entières avec tout ces morceaux, mais cela ne présentait aucun intérêt dans la situation actuelle.", description [; Affiche(32); print_ret "La pièce était sombre, et la seule chose qui me permettait de distinguer quelque chose était un peu de lumière filtrant à travers une fenêtre aux volets clos. Elle était d'après ce que je pouvais voir remplie d'objets d'art ; je distinguais des membres de statues, des tableaux... Tous ces objets étaient propriété du musée ou simplement prêtés ; un grand capharnaüm d'objets d'art qui donnait envie de s'y attarder, d'autant plus que j'étais absolument seul. Cependant, je n'avais pas le temps de regarder ailleurs : il fallait que je trouve un moyen de neutraliser la force maléfique au plus vite."; ], out_to porte190, s_to [; return self.out_to();], has scenery; !========================================================== ! Objets Object gardien190 "gardien" gard190 class Homme with description [; Affichette(33);"Le gardien était occupé pour le moment à ramasser les débris du pot de fleurs que j'avais fait tomber, pour le remplacer par un autre semblable."; ], name 'gardien' 'conservateur' 'homme', adjective 'musee', initial "Le gardien du musée était là, occupé à ramasser les débris du pot brisé, pour le remplacer par un autre semblable.", before [; Tell: "Mieux valait ne pas tenter d'engager la conversation avec ce grincheux, occupé pour l'heure à ramasser les débris du pot de fleurs en maugréant dans sa barbe."; ], has ; Object fleur190 "joli pot de fleurs" piece190 with name 'pot' 'pots' 'fleur' 'fleurs' 'terre', adjective 'joli' 'beau' 'autre', nb_casses 0, before [; Examine : if (self.nb_casses==0) { print "Un pot de jolies fleurs, fraîchement arrosées par le gardien, apparemment. "; return self.casser_pot(); } else { if (gardien190 in location) { "Un pot de jolies fleurs, pas encore cassé celui-là..."; } else { "Un pot de jolies fleurs, posé là par le gardien en remplacement du précédent."; } } Smell : if (self.nb_casses==0) { return self.casser_pot(); } else { "Hmmm, l'odeur enivrante des fleurs."; } Touch : if (self.nb_casses==0) { return self.casser_pot(); } Take : if (self.nb_casses==0) { return self.casser_pot(); } else { "Mieux valait laisser ces fleurs là où elles étaient."; } Push, Pull, Attack : return self.casser_pot(); ], casser_pot[; if (gardien190 in gard190) ! si le gardien est dans son bureau { self.nb_casses++; if (self.nb_casses==1) { print "Alors que je m'approchais pour en sentir le parfum, un éclat de voix dans le hall me fit sursauter, et je heurtai le pot de ma main. Le pot s'écrasa au sol avec un grand fracas. Je m'écartai vivement du pot brisé - juste à temps, car le gardien, ayant entendu le bruit, ouvrit la porte de son bureau, furieux.^^~Ah, encore ! Ah, les sales gosses ! Vous les avez vus, monsieur ?~^^Je haussai les épaules en signe d'impuissance. Il soupira, maugréa, et sortit de son bureau avec une petite pelle pour ramasser les débris, laissant la porte de son bureau ouverte.^"; move gardien190 to piece190; give porte_gard190 ~locked; give porte_gard190 open; MoveFloatingObjects(); rtrue; } if (self.nb_casses==2) { print "Ne pouvant réprimer un petit sourire, je m'approchai doucement du pot que le gardien venait de remplacer, puis, d'un mouvement rapide, je l'envoyai se briser sur le sol, puis m'éloignai rapidement de quelques pas.^^Comme je l'avais prévu, le gardien sortit brusquement de son bureau. Il me regarda un instant d'un air suspicieux, puis, sans un mot, commença à ramasser les débris comme il l'avait fait pour le pot précédent.^"; move gardien190 to piece190; give porte_gard190 ~locked; give porte_gard190 open; MoveFloatingObjects(); rtrue; } if (self.nb_casses>=3) { print "Je m'apprêtais à briser à nouveau le pot, mais à l'instant même où j'allais passer à l'action, le gardien sortit en trombe de son bureau.^^~Je m'en doutais ! Vous avez un problème avec les fleurs, c'est ça ? Sortez immédiatement de ce musée et n'y remettez jamais les pieds !~^"; Perdu190(); rtrue; } } else ! Si le gardien n'est pas dans son bureau { "Je n'allais pas briser un pot de fleurs juste sous les yeux du gardien !"; } ], has scenery; Object pelle190 "pelle" with name 'pelle', adjective 'petite' 'gardien' 'metallique' 'metal', description "Une petite pelle métallique pour les saletés.", found_in [; return (location==piece190 && gardien190 in piece190);], before [; Take, Touch : "Mieux valait ne pas énerver le gardien un peu plus."; ], has scenery female; Object debris190 "pot de fleurs brisé" with name 'debris' 'pot' 'pots' 'fleurs' 'terre' 'salete' 'saletes' 'bris' 'éclat' 'éclats', adjective 'brise' 'casse', description "Le pot de fleurs était éparpillé en mille débris.", found_in [; return (location==piece190 && gardien190 in piece190);], before [; Examine, Smell, Listen : Take, Touch : "Je préférai laisser le gardien s'occuper de le ramasser."; Attack : "Il était déjà cassé."; default : "Je préférai laisser le gardien s'occuper de le ramasser."; ], has scenery; Object porte_gard190 "porte du bureau" with name 'porte', adjective 'bureau' 'gardien' 'conservateur' 'musee', article 'la', when_closed [; if (location == piece190) "À l'ouest, se trouvait la porte fermée du bureau du gardien du musée, portant l'inscription ~INTERDIT AU PUBLIC~."; else "Derrière moi, la porte du bureau était fermée."; ], when_open [; if (location == piece190) "À l'ouest, se trouvait la porte ouverte du bureau du gardien du musée, portant l'inscription ~INTERDIT AU PUBLIC~."; else "Derrière moi, la porte du bureau était entrouverte."; ], description [; if (location == piece190) { if (self has open) { "En sortant, le gardien avait laissé la porte de son bureau ouverte."; } "La porte, fermée, portait l'inscription ~INTERDIT AU PUBLIC~."; } else { if (self has open) { "La porte était entrouverte."; } else { "La porte était fermée."; } } ], door_to [; if (location == piece190) return gard190; else return piece190; ], door_dir [; if (location == piece190) return in_to; else return out_to; ], found_in piece190 gard190, before [; Search: if (self hasnt open) ; if (self has open) {<>;} else {rtrue;} Push, Pull, Turn : "Souhaitais-je ouvrir ou bien fermer la porte, cela n'était plus très clair dans mon esprit."; Take : "Impossible."; Attack : "À cette époque, les portes s'ouvraient plutôt avec délicatesse."; Toctoc : if (gardien190 in gard190) "~Laissez-moi tranquille, je travaille !~"; else "Aucun intérêt, le gardien n'était plus dans son bureau... D'ailleurs, la porte était ouverte..."; ], has static female door openable lockable locked; Object bureau_factice190 "bureau" piece190 with name 'bureau', adjective 'gardien' 'conservateur' 'musee', before [; Examine : <>; Open : print "(ouvrir la porte)^"; <>; Close : print "(fermer la porte)^"; <>; Enter : <>; Search : <>; ], has concealed male scenery; Object escalier190 "escalier" with name 'escalier' 'marche' 'marches' 'marbre', description [; if (location == piece190) { "L'escalier imposant, en marbre, montait vers la salle consacrée à l'Égypte ancienne."; } if (location == egypt190) { "L'escalier imposant, en marbre, descendait vers le hall d'entrée."; } ], before [; Enter, Take: if (location == piece190) { <>; ! "monter à l'escalier", "prendre l'escalier" } if (location == egypt190) { <>; ! "descendre par l'escalier", "prendre l'escalier" } ], found_in piece190 egypt190, has scenery; Object cles190 "trousseau de clés" gard190 with name 'cle' 'clef' 'cles' 'clefs' 'trousseau', adjective 'gardien' 'conservateur' 'musee', initial "Sur un panneau était accroché le trousseau de clés du gardien du musée.", description [; Affichette(34); if (self in gard190) { "Je remarquai un trousseau de clés sur le panneau : il s'agissait du trousseau de clés du gardien, qui permettait sans doute l'accès à toutes les pièces du musée..."; } else { "Il s'agissait du trousseau de clés du gardien, qui permettait sans doute l'accès à toutes les pièces du musée..."; } ], has ; Object cafe190 "tasse à café" gard190 with name 'tasse' 'cafe', description "La tasse à café du gardien.", adjective 'gardien' 'conservateur' 'musee', before [; Take, Drink, Eat, Taste: "Je n'aimais pas le café, je n'allais donc pas prendre cette tasse."; Touch : "Tout juste tiède."; Smell : "Odeur de café."; ], react_before [; Drink : if(~~noun) "Je n'aimais pas le café, je n'allais donc pas prendre cette tasse."; ], has female concealed; Object bureau190 "bureau" gard190 with description "Un meuble fonctionnel, sans fioritures.", name 'bureau', adjective 'gardien' 'conservateur' 'musee', before [; Search, Open : "Des papiers, et encore des papiers..."; Close : "Voilà qui fut fait."; Exit : <>; ! petite triche pour permettre "sortir du bureau" ], has scenery male; ! 2007-04-30 Samuel : proposition de remplacement de la description, ne dépendant plus de ! la possession du livre, mais en faisant une distinction entre "Examiner" et "Lire". Object livre190 "livre d'incantations" reser190 class Livre with ! print " original = N'gha'ghaa Ia Ghphit. Ia, Ia, Cthulhu Fhtagn. N'yagh Phgit" ; name 'livre' 'fragments' 'Celaeno' 'magique', adjective 'incantation' 'incantations' 'incantation' 'incantations', description [; Affiche(35); "C'était un vieux livre, à la couverture en cuir ; sur la couverture était simplement écrit ~Fragments de Celaeno~.^J'en avais déjà entendu parler... Selon la légende, ce livre traitait d'incantations qui invoquent les ~Grands Anciens~ et des divinités malfaisantes comme Cthulhu... Le livre avait selon la légende un réel pouvoir, et pouvait être fatal à l'humanité s'il tombait en de mauvaises mains capables de déchiffrer ses incantations magiques... On comprend dans ces conditions que le musée ait refusé de l'exposer."; ], before [; Search, Lire : Affiche(35); "Je remarquai qu'il y avait une feuille qui dépassait du livre. Je la pris : il s'agissait de notes, prises par un lecteur des Fragments de Celaeno. Elles disaient ceci :^^~Voilà ce que disent en substance les Fragments de Celaeno à propos des morts-vivants : pour faire revivre une créature, la formule à invoquer est : ~Ngha ghaa Ia Ghphit Ia Ia Cthulhu Fhtagn~, le tout prononcé d'une voix forte et dirigée vers la créature à faire renaître. Cette formule convoque le pouvoir du grand Cthulhu et ranime les morts. Mais les morts sont alors sous le pouvoir de Cthulhu ; de ce fait, la formule n'a pas d'intérêt si l'on n'est pas dans le camp de Cthulhu, car la créature se retourne contre vous... Chose curieuse, les Fragments de Celaeno mentionnent que ~Ngha ghaa Ia Ghphit Ia Ia Cthulhu Fhtagn Nyagh Phgit~ permet en quelque sorte (si j'ai bien compris) d'annuler les effets du sort : ainsi quiconque connaîtrait les deux formules peut faire revivre les morts et se protéger d'eux...~^^Intéressant... Ainsi le sarcophage et la momie qu'il contenait étaient sous le pouvoir de Cthulhu, qui voulait les utiliser depuis sa ville de R'lyeh contre les visiteurs ?! C'était probable, étant donné que des manifestations de Cthulhu avaient déjà été observées dans la région... Je notai mentalement tant bien que mal les formules : il fallait que je m'en souvienne pour nous débarrasser de la momie, cette nouvelle manifestation de Cthulhu."; ], has ; Object sarcophage190 "sarcophage" with name 'sarcophage' 'pierrerie' 'pierreries' 'relief' 'cercueil', adjective 'incruste' 'massif' 'rutilant' 'peint' 'imposant', initial "Un sarcophage imposant trônait dans un coin de la pièce.", vu_azt 0, vu_egypt 0, vu_nord 0, vu_grece 0, nb_vu [; return self.vu_azt + self.vu_egypt + self.vu_nord + self.vu_grece;], description [ deja_vu nbvu; Affichette(36); deja_vu = 0; if (location == egypt190 && self.vu_egypt == 1) deja_vu=1; if (location == azt190 && self.vu_azt == 1) deja_vu=1; if (location == nord190 && self.vu_nord == 1) deja_vu=1; if (location == grece190 && self.vu_grece == 1) deja_vu=1; nbvu = self.nb_vu(); ! calculé avant que les variables ne soient modifiées if (location == egypt190 && self.vu_egypt == 0) self.vu_egypt=1; if (location == azt190 && self.vu_azt == 0) self.vu_azt=1; if (location == nord190 && self.vu_nord == 0) self.vu_nord=1; if (location == grece190 && self.vu_grece == 0) self.vu_grece=1; if (deja_vu) { if (nbvu < 3) { "Le sarcophage était massif et rutilant, incrusté de pierreries. Comme tous les sarcophages de cette époque, il avait forme et figure humaine : son couvercle était peint à l'effigie d'un homme."; } else { "Je frémis en repensant à la lueur irréelle qui avait fait briller les yeux du sarcophage. Il fallait que je me dépêche pour trouver un moyen de lutter contre cette force maléfique !"; } } else { if (nbvu==0) { "Je m'approchai du sarcophage. Il était massif et rutilant, incrusté de pierreries. Comme tous les sarcophages de cette époque, il avait forme et figure humaine : son couvercle était peint à l'effigie d'un homme. J'admirai ce bel ouvrage, qui témoignait d'une grande maîtrise technique de cette civilisation ; à côté d'un tel sarcophage, force est de constater que nos cercueils font pâle figure !"; } if (nbvu==1) { "Je regardai le sarcophage de plus près. Je n'en croyais pas mes yeux : il ressemblait tellement à l'autre, celui que je venais de voir, c'était... C'était le même ! Incrédule, je me demandai comment cela était possible : je venais de le voir ailleurs quelques instants auparavant ! Tout était exactement comme si le sarcophage m'avait suivi... Je frémis à cette idée. C'était ridicule, et pourtant mon coeur se mit à battre plus vite. Quelque chose n'allait pas..."; } if (nbvu==2) { "Mon Dieu, encore le même sarcophage. C'était impossible, il ne pouvait pas avoir encore une fois changé de place en si peu de temps !^^Tout à coup, quelque chose d'irréel se produisit : je vis les yeux du sarcophage changer de couleur et briller d'un halo rouge ! J'étais paniqué ; je détournai mon regard du sarcophage. On ne pouvait pas croire à une farce : il y avait certainement une force maléfique à l'oeuvre dans tout ça !^^Quelque chose, quelqu'un, une force maléfique était derrière tout ça, j'en étais intimement convaincu. Ce halo... Il m'avait comme transpercé du regard, il m'avait ébloui, et je sentais dans ce signe un présage funeste... J'avais peur. Il fallait que je trouve un moyen de me débarrasser de cette force maléfique, car sinon je n'osais imaginer les conséquences..."; } if (nbvu>=3) { "Je frémis en repensant à la lueur irréelle qui avait fait briller les yeux du sarcophage. Il fallait que je me dépêche pour trouver un moyen de lutter contre cette force maléfique !"; } } ], before [; Search : if (self has open && player notin self) "Le sarcophage était totalement vide."; if (self has open && player in self) "Je n'y trouvai rien d'autre que moi-même."; if (self hasnt open) "Le sarcophage était fermé."; Open : if (momie190 notin real_location) "Le sarcophage était solidement fermé, impossible pour moi de l'ouvrir."; if (player in self) StartTimer(momie190,4); ! 2 tours avant la mort Close : if (player in self) StopTimer(momie190); Turn, Pull, Push, Take : "Le sarcophage était bien trop lourd et imposant."; Touch : "Je sentais le relief des dessins sous mes doigts."; Taste : "Mmm, le bon goût des sarcophages..."; ], inside_description "Je me trouvais à l'intérieur du sarcophage.", add_to_scope couvercle190, found_in egypt190 grece190 azt190 nord190, has static male openable ~open enterable container; Object couvercle190 "couvercle du sarcophage" with name 'couvercle' 'effigie' 'relief', adjective 'sarcophage' 'peint' 'homme' 'incruste', description [; if (player notin sarcophage190 || sarcophage190 has open) "Incrusté de pierreries, le couvercle du sarcophage était peint à l'effigie d'un homme."; else "Dans l'obscurité de l'intérieur, je ne pouvais distinguer aucun détail."; ], before [; Search : "Je ne trouvai rien d'intéressant"; Open : <>; Close : <>; Turn, Pull, Push : "Voulais-je ouvrir ou bien fermer le couvercle ?"; Take : "Le couvercle était solidement fixé au sarcophage."; Taste : "Mmm, le bon goût des sarcophages..."; ], found_in sarcophage190, ! meme pieces que le sarcophage has static concealed male; Object momie190 "momie" with name 'momie' 'chose' 'creature' 'oeil' 'yeux', adjective 'malfaisante' 'horrible' 'rouge' 'rouges', initial "La momie semblait n'avoir d'yeux que pour moi, se rapprochant inexorablement. Que faire ? QUE FAIRE ?", description [; "Plus vraiment morte, mais pas tout à fait vivante, la momie avait un aspect que le temps avait rendu horrible, et ses yeux brillaient d'une lumière rouge malfaisante. La chose avançait vers moi en titubant."; ], before [; Attack: print "Il fallait que j'arrive à détruire cette créature...^"; self.massacrer_le_joueur(); rtrue; Take: "Elle n'y semblait pas disposée."; ], life [; Tell,Parler,Answer: "Je ne pouvais pas parler normalement à cette créature, mais je pouvais peut-être invoquer une formule adéquate ?"; default : "Ce n'était certainement pas le moment !"; ], apparition [; give self ~absent; give sarcophage190 open; move self to location; StopTimer(self); StartTimer(self, 5); ! 5 tours avant une mort horrible gnek gnek gnek ! ], disparition [; give self absent; remove self; ], time_left 999, time_out [; if (self notin real_location) { if (real_location == egypt190 or grece190 or azt190 or nord190) { Attend(); self.apparition(); print "^Tout à coup, j'entendis un grincement. Quelque chose derrière moi bougeait, alors que je n'avais entendu personne venir. Intrigué, je me retournai doucement... et criai : le sarcophage bougeait ! Que se passait-il ? Comment cette chose pouvait-elle être possible ?^^Les yeux exorbités, reculant de quelques pas, je vis, incrédule, le couvercle du sarcophage s'ouvrir largement, et une momie millénaire s'en extirper en titubant. Ses yeux brillaient d'une lumière rouge malfaisante : cette vision d'horreur était là dans un but maléfique. Je me mis à craindre pour ma vie...^"; } else { Attend(); PlayerTo(egypt190, true); self.apparition(); print "^Tout à coup, alors que rien ne laissait présager de cela, un grand cri retentit. Je sursautai, puis me figeai. Cela venait de la salle de l'Égypte ancienne. Que se passait-il ? Je m'y précipitai afin de voir la cause de ce cri, et d'aider la personne qui avait crié.^^J'arrivai finalement à la salle d'Égypte ancienne, et faillis pousser à mon tour un grand cri. Je ne pus en croire mes yeux : le sarcophage s'était ouvert, et une momie titubante s'en extirpait ! C'était impossible !^^J'étais comme cloué au sol par la panique, je ne pouvais bouger, et ne pouvais détacher mon regard de cette vision d'horreur. Les yeux de cette créature brillaient d'une aura rouge malfaisante : j'eus peur pour ma vie...^"; } } else { ! La momie est sur nous ! self.massacrer_le_joueur(); } ], massacrer_le_joueur[; Attend(); print "^Que faire ? Que faire face à cette créature maléfique qui s'approchait de moi ? Je n'étais pas armé et je ne savais pas comment la repousser. Tétanisé par la peur, je hurlai d'effroi. Je regardai à gauche, à droite, essayant de trouver quelque chose qui m'aurait permis de détruire la créature maléfique, mais c'était peine perdue. En conséquence, je m'enfuis en courant vers la sortie. Mais je trébuchai contre quelque chose et tombai par terre. Groggy, je n'eus pas le temps de reprendre mes esprits : la momie était déjà sur moi !^"; Perdu190(); rtrue; ], found_in [;return true;], has static female absent animate; Object porte190 "porte de la réserve" with name 'porte', adjective 'reserve' 'musee', article 'la', when_closed [; if (location == azt190) "Au nord, une porte donnait sur la réserve. Je me rappelai que j'avais entendu dire que les réserves des musées contiennent en général des objets qui n'appartiennent pas à la collection exposée, ou des objets jugés trop fragiles ou trop dangereux pour être montrés au public... Quoi qu'il en soit, un écriteau indiquait ~INTERDIT AU PUBLIC~."; else "La porte de la réserve était fermée."; ], when_open "La porte de la réserve était ouverte.", description [; print "La porte de la réserve était "; if (self has open) {print "grande ouverte.^";} else {print "fermée.^";}; ], door_to [; if (location == azt190) return reser190; else return azt190; ], door_dir [; if (location == azt190) return in_to; else return out_to; ], with_key cles190, before [; Push, Pull, Turn : "Souhaitais-je ouvrir ou bien fermer la porte, cela n'était plus très clair dans mon esprit."; Take : "Impossible."; Attack : "À cette époque, les portes s'ouvraient plutôt avec délicatesse."; Open, Unlock: if (location == azt190 && self hasnt open) { if (sarcophage190.nb_vu() >= 3 || momie190 in location) { if (cles190 in player) { if (momie190 in location) { print "J'ouvris la porte de la réserve, pensant qu'il y aurait peut-être quelque chose d'intéressant qui aurait pu me permettre de me débarrasser de la momie - n'importe quoi, à vrai dire : hallebarde, bouclier, sortilège... De toute façon la réserve était à peu près ma seule chance de trouver un objet utile - je n'avais en tout cas rien trouvé dans les autres pièces...^"; } else { print "J'ouvris la porte de la réserve, pensant qu'il y aurait peut-être quelque chose d'intéressant qui aurait pu me permettre de me débarrasser de la créature malfaisante qui semblait prête à se réveiller dans le sarcophage - n'importe quoi, à vrai dire : hallebarde, bouclier, sortilège... De toute façon la réserve était à peu près ma seule chance de trouver un objet utile - je n'avais en tout cas rien trouvé dans les autres pièces...^"; } give self open; give self ~locked; rtrue ; } else { if (momie190 in location) { print_ret "J'essayai de l'ouvrir, dans l'espoir d'y trouver quelque chose qui aurait pu me permettre de me débarrasser de la momie, mais elle était fermée à clé."; } else { print_ret "J'essayai de l'ouvrir, dans l'espoir d'y trouver quelque chose qui aurait pu me permettre de me débarrasser de la créature malfaisante qui semblait prête à se réveiller dans le sarcophage, mais elle était fermée à clé."; } } } else { if (cles190 in player) { print_ret "Il n'y avait aucun intérêt à essayer de pénétrer dans la réserve : cela ne pouvait m'attirer que des ennuis, et il n'y avait rien dans la réserve, me semblait-il, qui eût pu justifier une incursion à l'intérieur."; } else { print_ret "Il n'y avait aucun intérêt à essayer de pénétrer dans la réserve ; et de toute façon, elle était fermée à clé."; } } } Lock : if (self has open){ print "(Je fermai d'abord la porte)^"; give self ~open; } if (cles190 in player) second = cles190; ], found_in azt190 reser190, has static female door openable lockable locked; Object reserve_factice190 "réserve" azt190 with name 'reserve', adjective 'musee', before [; Examine : <>; Open : print "(ouvrir la porte)^"; <>; Close : print "(fermer la porte)^"; <>; Enter : <>; Search : if (porte190 hasnt open) ; if (porte190 has open) <>; else rtrue; ], has concealed female scenery; Object Bandelette190 "bandelette de la momie" class ObjetAutel with name 'bandelette', description [; print "Une bandelette jaunie par les ans.^"; rtrue ; ], before [; ] has female ; !========================================================== ! Routines ! Réinitialisation des variables et des objets [ReInit190 init_tout; sarcophage190.vu_azt=0, sarcophage190.vu_egypt=0, sarcophage190.vu_nord=0, sarcophage190.vu_grece=0, fleur190.nb_casses=0; momie190.disparition(); move cles190 to gard190; move gardien190 to gard190; move livre190 to reser190; give porte190 ~open locked; give porte_gard190 ~open locked; if (init_tout) { ! reprendre même les objets que le joueur pourrait emporter ! avec lui dans la roulotte s'il avait gagné remove Bandelette190; } ]; ! Démarrer la scène : initialisation, compte à rebours et position du joueur. [Demarrer190; scene_en_cours = '190'; scene_190_visitee = true; ReInit190(false); StartTimer(momie190, 29); ! 29 tours avant le retour de la momie :) PlayerTo(piece190); ]; ! Stopper la scène : réinitialisation, arrêt des timers [Stopper190 init_tout; ReInit190(init_tout); StopTimer(momie190); ! Stopper le timer s'il est actif DeplacerObjetsPortails(); ! si le joueur a perdu des objets "portail" dans la scène, ! les renvoyer dans la roulotte ]; ! Perdu [Perdu190; Perdu(); ! stoppe scène en cours et affichage message perdu ou retour roulotte ]; ! Gagne [Gagne190; Achieved(2); Gagne(); ! stoppe scène en cours et affichage message gagné ou retour roulotte ]; !========================================================== ! Nouveaux verbes [InvoquerNghaSub mot i effet; for (wn = consult_from: wn < consult_from+consult_words: ) { mot = NextWord(); i++; if (mot == 'ghaa') { continue; } if ( (i==1 && mot=='ghaa') || (i==2 && mot=='ia') || (i==3 && mot=='ghphit') || (i==4 && mot=='ia') || (i==5 && mot=='ia') || (i==6 && mot=='cthulhu')) { !rien à faire, on continue continue; } if (i==7 && mot=='fhtagn') { effet = 1; ! invocation de la momie, sauf si la séquence continue continue; } if (i==8 && mot=='nyagh') { !rien à faire, on continue continue; } if (i==9 && mot=='phgit') { effet = 2; ! révocation de la momie, sauf si la séquence continue continue; } ! Mot non reconnu, échec de l'invocation effet = 0; break; } ! Application de l'action reconnue if (effet==1) { if (sarcophage190 in location && momie190 notin location) { momie190.apparition(); "Je prononçai la formule d'invocation en direction du sarcophage, lequel se mit soudain à bouger !^^Qu'avais-je donc fait ? Les yeux exorbités, reculant de quelques pas, je vis, incrédule, le couvercle du sarcophage s'ouvrir largement, et une momie millénaire s'en extirper en titubant. Ses yeux brillaient d'une lumière rouge malfaisante : cette vision d'horreur était là dans un but maléfique. Je me mis à craindre pour ma vie..."; } "L'invocation n'eut aucun effet. Il n'y avait aucun mort à invoquer dans cette pièce."; } else if (effet==2) { if (momie190 in location) { momie190.disparition(); print "Je prononçai tant bien que mal la formule que j'avais lue dans les Fragments de Celaeno, d'une voix forte et dirigée vers la momie, mais quelque peu mal assurée.^"; Attend(); print "^La formule fonctionna. Je vis la momie s'arrêter tout à coup ; la sinistre lueur rouge dans ses yeux disparut. L'instant suivant, elle tomba au sol en petits morceaux dans un craquement sinistre. J'avais réussi.^Je contemplai alors les débris de la momie. Mû par une intuition, je décidai de prendre avec moi un bout de bandelette.^"; move Bandelette190 to player ; Bandelette190.obtenu = 1 ; Gagne190(); } else "L'incantation n'eut aucun effet. Il n'y avait aucun mort à révoquer dans cette pièce."; } else { if (momie190 in location) { print "Je prononçai l'incantation, mais la momie continuait de se rapprocher de moi. Elle ne semblait pas en être affectée le moins du monde ! Paniqué, je répétai la formule en détachant les syllabes, mais la momie continuait à avancer !^"; momie190.massacrer_le_joueur(); } else "Mon invocation n'eut aucun effet."; } ]; [InvoquerSub; "Mon invocation n'eut aucun effet."; ]; Verb "ngha" ! a implementer plus tard pour invoquer direct la momie * 'Ngha' 'ghaa' 'Ia' 'Ghphit' 'Ia' 'Ia' 'Cthulhu' 'fhtagn' -> Invoquer ! a implementer plus tard pour invoquer direct la momie * 'ghaa' 'Ia' 'Ghphit' 'Ia' 'Ia' 'Cthulhu' 'fhtagn' -> Invoquer ! * 'ghaa' 'test' -> Invoquer ! * 'ngha' 'ghaa' 'Ia' 'Ghphit' 'Ia' 'Ia' 'Cthulhu' 'Fhtagn' 'Nyagh' 'Phgit' -> Invoquer ! * 'ghaa' 'Ia' 'Ghphit' 'Ia' 'Ia' 'Cthulhu' 'Fhtagn' 'Nyagh' 'Phgit' -> Invoquer; * -> Invoquer * topic -> InvoquerNgha; Verb "invoquer" * -> Invoquer * 'ngha' topic -> InvoquerNgha * topic -> Invoquer; !Extend "dire" first ! * 'ngha' topic -> InvoquerNgha; !=========================================================== ! Faire que le joueur récupère un objet, comme par exemple la bandelette de momie ! ! On pourrait inclure aussi des descriptions supplémentaires d'objets (ceux évoqués dans les descriptions de salle, par exemple), étoffer les descriptions existantes - mais l'on peut très bien garder ce qui existe pour l'instant, même si ça n'est pas très interactif...