GECK : 10 - Dialogues et quêtes
Dès leur création, les personnages non joueurs ont des dialogues génériques (avec le joueur : bienvenue -greting- et au revoir -goodbye), ainsi que des dialogues de détection du joueur, de combat, de conversations entre NPC.
Pour rajouter des dialogues à ces personnages, nous partons du principe que 99% des moddeurs n'ont pas une équipe de doubleurs : les dialogues seront donc écrits, sans son. Heureusement, contrairement à Oblivion, un dialogue sans son s'affiche suffisamment longtemps pour qu'on puisse le lire. Sous Oblivion, il fallait associer un son "blanc" de quelques secondes à chaque phrase de dialogue, pour laisser le temps au joueur de lire !
Nous avons déjà abordé les dialogues et les quêtes pour permettre à notre vendeur Chi Woo de vendre les objets de son magasin. Nous avions créé une quête de dialogues pour PalePass que nous allons réutiliser pour de nouveaux dialogues.
Ce sera le dialogue de "bienvenue" du Chef Stark, qui n'est pas très amical.
Faire un dialogue de bienvenue : Greeting
La phrase de bienvenue est celle qu'un NPC dit dès l'ouverture du dialogue, avant la liste de ses topics. Tous ces dialogues sont regroupés dans le topic GREETING, qu'il faudra ajouter à la liste des topics de votre quête.
Dans la fenêtre Object, allez dans Actor Data/Quest et retrouvez la quête MONDialoguePalePass qui a été créée avec les dialogues du marchand, dans le chapitre "Creatures et Personnages". Cliquez sur l'onglet Topics. Cliquez-droit dans la liste des topics à gauche, et cherchez GREETING dans la liste qui vient d'apparaître. Une fois le topic greeting selectionné, faites un clic droit dans la liste d'infos à droite de la fenêtre.
Une fenêtre New response s'est ouverte : tapez le texte "Je ne sais pas ce que vous faites ici mais vous êtes à Pale Pass et c'est pas un village qui respire la joie. Faites pas de vagues et tout ira bien." dans le champ Response Text, et appuyez sur la touche entrée. Dans le menu Emotion Type, selectionnez Disgust. Fermez la fenêtre de correction qui apparait avec Cancel. Cliquez à nouveau sur votre nouvelle info dans la liste des infos pour l'activer, puis Cochez Say Once.
Il nous reste à ajouter comme condition que le NPC qui dise l'info soit Don Stark. Faites un clic-droit dans la liste vide de conditions, et selectionnez new. Comme fonction, selectionnez GetIsID, puis cliquez sur INVALID pour choisir MONPalePassChefDonStark, puis vérifiez que le signe Comparison soit ==, et que Value soit à 1. Ce qui nous donne comme condition : GetIsID MONPalePassCgefDonStark == 1. Validez avec OK.
Faire un dialogue Question/Réponse simple
Créer un topic
Nous allons donner au joueur la possibilité de poser la question "Qui êtes vous ?" au Chef Don Stark. En réponse, celui-ci dira au joueur comment il s'appelle : "Je suis Don Stark. Comme qui dirait, le chef ici."
Ouvrons la quête des dialogues de Pale Pass : MONDialogPalePass. Elle se trouve dans la fenêtre Object, dans Actor Data/Quest. Double-cliquez dessus pour l'ouvrir.Si vous ne l'avez pas encore créée, faites un clic droit dans la liste des quêtes et selectionnez New. Rentrez l'ID de la quête "MONDialogPalePass", le nom de la quête "Pale Pass", cochez Start game Enabled, et Allow repeated topics. Validez avec OK. Rouvrez la quête en double cliquant dessus.
- Cliquez sur l'onglet Topics. Il doit déjà contenir le topic MONTopicPalePassMagasin si vous avez fait le dialogue du vendeur. Cliquez droit dans la liste "Editor ID" des topics à gauche de la fenêtre et selectionnez New. Dans la liste de tous les topics du jeu qui s'ouvre, faites à nouveau un clic droit, selectionnez New, et rentrez l'ID de votre nouveau topic : MONTopicStarkPresent. Validez.
- Cliquez sur votre topic MONTopicStarkPresentation dans la liste EditorID des topics de la quête, cela l'active. Dans topic Text, entrez le texte par défaut du topic que le joueur dira ingame : "Qui êtes-vous ?". Lorsque vous validez, une fenêtre Check spelling s'ouvre pour vérifier l'orthographe. Cliquez sur Cancel pour la fermer.
Activer le nouveau topic dans liste des topics
Maintenant que le topic est dans la liste des topics de la quête, il faut l'ajouter à la liste des topics de Don Stark. Pour ce faire, toujours dans la quête MONDialoguePalePass01, cliquez sur le topic GREETING. Ensuite selectionnez la première ligne "Je ne sais ce que vous..." dite par Don Stark, et faites un clic droit dans le cadre AddTopic à droite de la fenêtre et selectionnez New. Dans la fenêtre qui ouvre, selectionnez le topic "MONTopicStarkPresentation" (vous pouvez cocher Current quest Only pour le restrouver plus vite).
Créer une info
Une info est un enchaînement Question du joueur/Réponse du NPC. La question du joueur est celle par défaut du topic, ou la question spécifique dans le champ "Prompt".
- Cliquez dans la liste des topics sur le topic dans lequel vous voulez ajouter une info pour l'activer. Ensuite faites un clic-droit dans la liste des infos à droite, et selectionnez New. Une fenêtre de réponse "New Response" apparait. Mettez le texte que répondra Don Stark à la question du joueur (Qui êtes vous ?) : "Je suis Don Stark. Comme qui dirait, le chef, ici.". Appuyez sur la touche Entrée pour valider la phrase, et fermez la fenêtre pop up "Check Spelling" grâce au buton Cancel. Mettez Emotion Type à Neutral. Validez l'info avec OK.
- Maintenant que votre info est créée, il faut déterminer à quelles conditions. La condition pour qu'un NPC dise cette info est que ce NPC soit Don Stark. Cliquez sur l'info dans la liste pour l'activer, puis cliquez-droit dans la liste Conditions : Selectionnez New. Dans la fenêtre Condition Item qui vient d'apparaître, cliquez sur le menu contextuel Condition Function (la fonction qui s'applique à la condition) et selectionnez GetIsID. Cliquez ensuite sur INVALID en dessous de Function Parameters, et cherchez MONPalePassChefStark dans la liste. Donc la condition pour que l'info soit dite est en code : GetIsID MONPalePassChefDonStark == 1
Allez tester Ingame : Allez à l'entrée de Pale Pass parler au Chef Don Stark. Vérifiez que la question Qui êtes-vous apparait bien dans les topics, et que la réponse marche bien.
Créer une autre info de ce topic pour le reste des gardes"
Seul le chef Stark aura cette question dans ses topics. Si nous voulons aussi pouvoir interroger les gardes, qui sont deux, nous pouvons soit faire deux autres infos destinées à chacun des deux gardes ( GetIsID MONPalePassGarde01 == 1 pour la première info, et GetIsID MONPalePassGarde02 == 1 pour la deuxième info, avec les textes adpatés). Mais puisque les gardes font partie d'une faction, celle des gardes de Pale Pass, nous pouvons faire une seule info avec pour condition GetIsFaction MONFactionPalePassGardes == 1.
- Ouvrez la fenêtre de quête MONDialogPalePass, cliquez sur l'onglet Topics, puis cliquez sur le topic MONTopicStarkPresentation pour l'activer. Ensuite, faites un clic-droit dans la liste des infos, sous celle de stark, et selectionnez new. La fenêtre de Réponse apparait : mettez-y une phrase du style "Je suis garde de Pale Pass.". Validez avec OK, fermez la fenêtre de correction avec Cancel, puis selectionnez Anger pour Emotion Type, et mettez l'emotion Value à 50. Validez vos changements avec OK.
- Cliquez sur votre info "Je suis garde de Pale Pass.", et dans le cadre "info details" cliquez dans le champ "Prompt" : mettez une variation de la question par défaut du topic : "Que faites-vous ici ?".
- Cliquez sur le bouton New juste en dessous du cadre Conditions, et remplissez la fenêtre Condition Item : "GetInFaction" comme fonction, "MONFactionPalePassGardes" à la place d'INVALID, puis == 1.
- Allez vérifier Ingame que Stark et les gardes se présentent avec la bonne phrase.
ATTENTION : si un même topic comporte plusieurs infos, le jeu dira la première, en partant du haut, dont les conditions sont valables. Dans notre exemple, si vous parlez à Stark, l'info dite sera celle de stark, et si vous interrogez un autre garde, ce ne sera pas la première qui doit être le NPC stark, mais la faction des Gardes.
Inversement, si vous mettez l'info avec condition d'être Garde de Pale Pass en premier, et celle de stark en second, Stark ne dira pas son info, car faisant partie de la faction des gardes, il dira la première info valable pour lui.
Prétez bien attention à l'ordre des infos, en fonction des conditions. En règle générale, les infos aux conditions les plus restrictives sont en premier, et les plus générales en dernier.
Créer un dialogue avec choix
Dans tout RPG, les dialogues donnent la possibilité de choisir entre plusieurs solutions. Une phrase du NPC peut donner deux réponses du joueur. Dans le GECK, chaque choix donné doit être enregistré dans un nouveau topic dédié (par exmple MONChoix01 et MONChoix02, et ces deux topics ajoutés dans le cadre Choice situé à droite de l'onglet topic. Chaque phrase de choix dite par le joueur donnera une réponse du NPC différente.
- Créons un nouveau topic ou le joueur demande "Qu'est ce qu'il y a savoir sur cet endroit ?" : cliquez-droit dans la liste des topics à gauche et créez un Topic "MONTopicPalePass01". Ajoutez-lui une info "Il n'y a pas grand chose à voir ici. Nous nous méfions des étrangers. Vous pouvez même faire demi-tour...", avec Disgust comme Emotion Type, et 100 comme Emotion Value. Comme question du joueur, au lieu du Topic Text par défaut, mettez dans le champ "Prompt" la phrase "Qu'estce qu'il y a à savoir sur cet endroit ?". Rajoutez-lui comme condition GetIsID MONPalePassChefDonStark == 1.
- Créons un nouveau topic, correspondant au premier choix : MONTopicPalePass02Choix. Comme info, rentrez la réponse aggressive de Stark "Ecoutez bien ce que j'ai à vous dire : traînez pas dans le coin. Si vous faites la moindre connerie, vous finirez farci de plomb. Capice ?", avec une Emotion Type "Anger" et une valeur de 100. Comme question du joueur, dans le champ "Prompt", mettez "Mais c'est la zone dans votre patelin ! Il y a pas un endroit où se payer du bon temps ?". Cochez la case Goodbye (le NPC mettra fin au dialogue), et mettez comme condition GetIsID MONPalePassChefDonStark == 1.
- Créons le topic du deuxième choix dans la liste de gauche : MONTopicPalePass03Choix. Comme info, mettez la réponse de stark "Ca vaudrait mieux pour vous." avec une emotion Happy à 50, comme Prompt "Pas de panique ! Je ne fais que passer.", et avec toujours comme condition GetIsID MONPalePassChefDonStark == 1 (vous pouvez copier une condition avec un clic droit et Copy Condition, pour la coller avec Paste Condition dans un autre topic, si les conditions sont les mêmes, ça accelére les choses !).
- Maintenant, ajoutons les deux topics de choix au premier : cliquez dans la liste des topics sur MONTopicPalePass01, et faites un clic droit dans le cadre Choice à droite, et selectionnez New. Dans la fenêtre qui s'ouvre, selectionnez MONTopicPalePass02Choix. Recommencer l'opération pou ajouter MONTopicPalePass02Choix dans le cadre Choice du topic MONTopicPalePass01.
- Pour finir, comme beaucoup de choix, il ne sera donné qu'une fois. Cliquez sur le topic MONTopicPalePass01, et sur la première info, et cochez la case Say Once. Rajoutez en dessous de cette info, une info avec pour réponse "Rien qui puisse vous interesser." et comme Prompt "Du nouveau à Pale Pass ?", avec toujours la condition GetIsID MONPalePassChefDonStark == 1. Une fois que le choix aura été fait, c'est cette info qui sera donnée au topic.