! Définitions de verbes Verb "load" "restaurer" * -> Restore; [MusicOffSub; #ifdef TARGET_ZCODE; #ifnot; ! TARGET_GLULX; if (musicon == 1) musicon = 0; gg_musicchan2 = glk_schannel_destroy(gg_musicchan2); print "[la musique est désactivée]^"; rtrue ; !else musicon = 1; #endif; ! TARGET_ ]; [MusicOnSub; #ifdef TARGET_ZCODE; #ifnot; ! TARGET_GLULX; if (musicon == 0) musicon = 1; print "[la musique est activée]^"; rtrue ; #endif; ! TARGET_ ]; [MusicStopSub; #ifdef TARGET_ZCODE; #ifnot; ! TARGET_GLULX; gg_musicchan2 = glk_schannel_destroy(gg_musicchan2); #endif; ! TARGET_ ]; [MusicPlaySub musique; musique = NULL; #ifdef TARGET_ZCODE; print "Pas de musique dans cette version."; #ifnot; ! TARGET_GLULX; wn = consult_from; musique = NextWord(); ! gg_musicchan = glk_schannel_destroy(gg_musicchan2); switch (musique) { 'special' : !musique(83) ; gg_musicchan = glk_schannel_destroy(gg_musicchan2); gg_musicchan2 = glk_schannel_create(0); glk_schannel_play_ext(gg_musicchan2, 83, 2, 0); 'roulotte' : !musique(81) ; gg_musicchan = glk_schannel_destroy(gg_musicchan2); gg_musicchan2 = glk_schannel_create(0); glk_schannel_play_ext(gg_musicchan2, 81, 1, 0); 'neige' : !musique(3101); gg_musicchan = glk_schannel_destroy(gg_musicchan2); gg_musicchan2 = glk_schannel_create(0); glk_schannel_play_ext(gg_musicchan2, 3101, 1, 0); 'jardin' : ! musique(3790); gg_musicchan = glk_schannel_destroy(gg_musicchan2); gg_musicchan2 = glk_schannel_create(0); glk_schannel_play_ext(gg_musicchan2, 3790, 1, 0); 'fin' : gg_musicchan = glk_schannel_destroy(gg_musicchan2); gg_musicchan2 = glk_schannel_create(0); glk_schannel_play_ext(gg_musicchan2, 84, 1, 0); default : "Je ne connais pas cette musique. Les morceaux disponibles sont : ~musique~ + jardin, roulotte, neige, special ..."; } print_ret "morceaux disponibles : ~musique~ + jardin, roulotte, neige, special ..."; #endif; ! TARGET_ ]; [PiloterSub; "Je n'ai pas pu utiliser cela ainsi. Il me fallait peut-être être plus précis."; ]; Verb "piloter" "conduire" "naviguer" * -> Piloter * noun -> Piloter; [UtiliserSub; "Je n'ai pas pu utiliser cela ainsi. Il me fallait peut-être être plus précis."; ]; Verb "utiliser" * noun -> Utiliser * noun 'avec'/'et'/'sur' noun -> Utiliser; Verb "help" "aide" "manuel" * -> Help; [SceneDirecteSub scene ; if (location ~= debut) { gras() ; print "J'avais le pressentiment qu'il valait mieux redémarrer complètement le jeu et choisir une nouvelle scène plutôt que de le faire dans un jeu en cours de route...^^" ; normal(); < Restart > ; << Look >> ; } else { jeucomplet = 0 ; turns = 0; wn = consult_from; scene = NextWord(); switch (scene) { '31' : PlayerTo(Piece31); rtrue; '37' : PlayerTo(Piece37); rtrue; '39' : Demarrer39(); rtrue; '86' : Demarrer86(); rtrue; '125' : Demarrer125(); rtrue; '172' : PlayerTo(Piece172); rtrue; '190' : Demarrer190(); rtrue; default : "Scènes disponibles : 31 37 39 86 125 172 et 190"; } } ]; Verb "scene" "scenes" "lieu" "lieux" * -> Scene * topic -> SceneDirecte; Verb "option" "options" "menu" * -> Options; [LireSub; "Je n'y trouvai rien à lire."; ]; Extend "lire" replace * lisible -> Lire * lisible 'au sujet de'/'a propos de'/'sur' topic -> Consult reverse * 'sur' topic 'dans' lisible -> Consult * topic 'dans' lisible -> Consult * noun -> Lire; ! message d'erreur [FeuilleterSub; "Je ne voyais pas en quoi cela pouvait être feuilleté."; ]; Verb "feuilleter" "parcourir" * feuilletable -> Feuilleter * noun -> Feuilleter; !message d'erreur [CrierSub; "Je criai à pleins poumons, inutilement."; ]; Extend only "crier" first * -> Crier; Verb "rouvrir" * noun -> Open * noun 'avec' held -> Unlock; [RireSub; "J'aurais bien voulu, mais le coeur n'y était pas."; ]; Verb "rire" * -> Rire; [PleurerSub; "Je n'étais pas du genre à pleurer pour un rien, et pourtant je n'étais pas loin de laisser tomber quelques larmes de dépit."; ]; Verb "pleurer" * -> Pleurer; [DanserSub; "Je n'avais jamais su danser."; ]; Verb "danser" * -> Danser * 'avec' noun -> Danser; [DechirerSub; "Je n'avais nulle envie de tenter de déchirer cela."; ]; Verb "dechirer" * noun -> Dechirer * noun 'avec' held -> Dechirer; [EcrireSub; "La situation n'invitait pas à la prose."; ]; Verb "ecrire" * -> Ecrire * 'sur'/'dans' noun -> Ecrire * 'avec' held -> Ecrire * 'sur'/'dans' noun 'avec' held -> Ecrire * 'avec' held 'sur'/'dans' noun -> Ecrire * topic 'sur'/'dans' noun -> Ecrire * topic 'avec' held -> Ecrire * topic 'sur'/'dans' noun 'avec' held -> Ecrire * topic 'avec' held 'sur'/'dans' noun -> Ecrire * topic -> Ecrire; Extend 'frotter' * noun 'avec' held -> Rub; Extend 'nager' * -> Swim * 'a'/'à'/'au'/'en'/'vers'/'par' noun=ADirection -> Swim ! (Go déclenche des bugs sans noun=ADirection) * noun=ADirection -> Swim; Extend only 'bouger' first * -> VagueGo * 'a'/'à'/'au'/'vers' noun=ADirection -> Go; [JouerInstrumentSub; print "Je ne pouvais pas jouer de cela."; ]; Verb 'jouer' * held -> JouerInstrument; [ParlerSub; if (noun == player) print_ret "Cela ne m'étonnais pas d'apprendre cela."; if (RunLife(noun,##Parler) ~= false) return; ! consult life[; Parler: ] print_ret "Je ne savais pas quoi dire."; ]; Extend 'parler' replace * 'avec'/'a'/'à'/'au'/'aux' creature -> Tell * 'avec'/'a'/'à'/'au'/'aux' creature 'de'/'du'/'des' topic -> Tell * creature -> Tell ! "parle-lui" * creature 'de'/'du'/'des' topic -> Parler ! "parle-lui" * 'un' topic 'a'/'à'/'au'/'aux'/'avec' creature -> Parler * topic 'a'/'à'/'au'/'aux'/'avec' creature -> Parler; [ToctocSub; "Je frappai quelques coups à la porte, mais aucune réponse ne vint."; ]; Extend only 'frapper' first * door -> Toctoc * 'a'/'à' door -> Toctoc; Verb 'music' 'musique' * -> MusicStop * 'stop' -> MusicStop * 'off' -> MusicOff * 'on' -> MusicOn * topic -> MusicPlay; #ifdef TARGET_ZCODE; #ifnot; ! TARGET_GLULX; [SepiaOffSub; sepia = 0 ; Italique(); print "L'affichage des images sera à partir de maintenant en pleines couleurs.^" ; Normal(); ]; [SepiaOnSub; sepia = 1 ; Italique(); print "L'affichage des images sera à partir de maintenant en tonalités sépia.^" ; Normal(); ]; [Sepia2OnSub; sepia = 2 ; Italique(); print "L'affichage des images sera à partir de maintenant en tonalités sépia et avec un cadre mystérieux.^" ; Normal(); ]; Verb 'sepia' 'couleurs' * 'off' -> SepiaOff * 'on' -> SepiaOn; Verb 'sepia2' * 'off' -> SepiaOff * 'on' -> Sepia2On; #endif; #ifdef TARGET_ZCODE; #ifnot; ! TARGET_GLULX; [BannerOffSub; modeimages = 1 ; Italique(); print "L'affichage des images sera complète.^" ; Normal(); ]; [BannerOnSub k; k = random(2); switch(k) { 1: modeimages = 2 ; 2: modeimages = 3 ; default: modeimages = 2 ; } Italique(); print "L'affichage des images sera remplacé par une bannière.^" ; Normal(); if (modeimages == 2) glk_image_draw(gg_mapwin,110, 0, 0) ; ! banniere if (modeimages == 3) glk_image_draw(gg_mapwin,112, 0, 0) ; ! banniere poulpe glk_image_draw(gg_mapwin,120, 0, 0) ; ! separation ]; Verb 'banner' 'banniere' * -> BannerOn * 'off' -> BannerOff * 'on' -> BannerOn; #endif; [CreditsSub; #ifdef TARGET_ZCODE; #ifnot; ! TARGET_GLULX; glk_image_draw(gg_mainwin,116,imagealign_InlineCenter,0); ! titre glk_image_draw(gg_mainwin,115,imagealign_InlineCenter,0); ! image bannière CPB projet modeimages = 1 ; Italique(); print "^" ; Normal(); #endif; ]; Verb 'credits' 'credit' * -> Credits; [ RestartSub; L__M(##Restart,1); if (YesOrNo() ~= 0) { #ifdef TARGET_ZCODE; #ifnot; ! TARGET_GLULX; ; ! pour arrêter la musique if (modeimages ~= 0) { glk_window_close(gg_mapwin,0);} ! modeimages = 1 ; #endif; ! TARGET_ @restart; L__M(##Restart, 2); } ]; Extend 'recommencer' replace * -> Restart; [ReplaymodeSub; modereplay = 1 ; ]; [RejouerSub; ! modereplay = 1 ; < Replaymode >; << CommandsRead >>; ]; Verb meta 'replaymode' * -> replaymode; Verb meta 'rejouer' * -> Rejouer; [ UnlockSub; if (ObjectIsUntouchable(noun)) return; if (noun hasnt lockable) return L__M(##Unlock, 1, noun); if (noun hasnt locked) return L__M(##Unlock, 2, noun); if (~~second) { print "Précisez : ~Déverrouiller ", (the) noun, " avec ...~.^"; rtrue; } if (noun.with_key ~= second) return L__M(##Unlock, 3, second); give noun ~locked; if (AfterRoutines() == 1) rtrue; if (keep_silent == 1) rtrue; L__M(##Unlock, 4, noun); ]; Extend 'deverrouiller' first * noun -> Unlock; [ LockSub; if (ObjectIsUntouchable(noun)) return; if (noun hasnt lockable) return L__M(##Lock, 1, noun); if (noun has locked) return L__M(##Lock, 2 ,noun); if (noun has open) return L__M(##Lock, 3 ,noun); if (~~second) { print "Précisez : ~Verrouiller ", (the) noun, " avec ...~.^"; rtrue; } if (noun.with_key ~= second) return L__M(##Lock, 4, second); give noun locked; if (AfterRoutines() == 1) rtrue; if (keep_silent == 1) rtrue; L__M(##Lock, 5, noun); ]; Extend 'verrouiller' first * noun -> Lock; !-------------------------------------------- ! Directives de remplacement !-------------------------------------------- ! je dois mettre celle-ci ici et pas plus haut car sinon ! il manque des variables... [ AfterGameOver i; .RRQPL; L__M(##Miscellany,5); .RRQL; print "> "; #Ifdef TARGET_ZCODE; #IfV3; read buffer parse; #Endif; ! V3 temp_global=0; #IfV5; read buffer parse DrawStatusLine; #Endif; ! V5 #Ifnot; ! TARGET_GLULX KeyboardPrimitive(buffer, parse); #Endif; ! TARGET_ i = parse-->1; if (i == QUIT1__WD or QUIT2__WD) { #Ifdef TARGET_ZCODE; quit; #Ifnot; ! TARGET_GLULX quit; #Endif; ! TARGET_ } if (i == RESTART__WD) { #Ifdef TARGET_ZCODE; @restart; #Ifnot; ! TARGET_GLULX ; ! pour arrêter la musique if (modeimages ~= 0) ! pour reinitialiser les images { glk_window_close(gg_mapwin,0);} ! pour reinitialiser les images ! modeimages = 1 ; @restart; #Endif; ! TARGET_ } if (i == RESTORE__WD) { RestoreSub(); jump RRQPL; } if (i == FULLSCORE1__WD or FULLSCORE2__WD && TASKS_PROVIDED==0) { new_line; FullScoreSub(); jump RRQPL; } if (deadflag == 2 && i == AMUSING__WD && AMUSING_PROVIDED==0) { new_line; Amusing(); jump RRQPL; } #IfV5; if (i == UNDO1__WD or UNDO2__WD or UNDO3__WD) { if (undo_flag == 0) { L__M(##Miscellany, 6); jump RRQPL; } if (undo_flag == 1) jump UndoFailed2; #Ifdef TARGET_ZCODE; @restore_undo i; #Ifnot; ! TARGET_GLULX @restoreundo i; i = (~~i); #Endif; ! TARGET_ if (i == 0) { .UndoFailed2; L__M(##Miscellany, 7); } jump RRQPL; } #Endif; ! V5 L__M(##Miscellany, 8); jump RRQL; ];