Créer un Mercenaire (Henchman)
Conversation et scripts de base
Vous devez être quelque peu familier avec l'Editeur de Dialogue du Toolset Aurora
avant de suivre ce tutorial. Si vous ne l'êtes pas encore, je suggère fortement
Iskander's HowTo Article qui présente les concepts qui vous aideront dans
ce tutorial - particulièrement le tutorial appelé "Starting The Conversation".
Au minimum vous voulez qu'un PJ parle avec votre mercenaire PNJ et que le PNJ rejoigne
le joueur, ou le quitte si le PJ le licencie. Le paiement pour ces services est aussi une
bonne idée. Vous voulez aussi (en général) que le mercenaire reste loyal en l'empêchant
d'être loué par un PJ différent avant la fin!*
Cela signifie que votre mercenaire doit avoir une structure de dialogue qui ressemble à
quelque chose de ce genre dans l'éditeur de Conversation :
Racine
'- • [OWNER] - Oui, <master/mistress> ?
'- • [OWNER] - Désolé, j'ai déjà un employeur.
'- • [OWNER] - Bonjour. Vous pouvez me recruter pour
100po.
'- • Je n'ai pas les moyens de vous
engager.
'- • Je vous embauche.
'- • [OWNER] -
Heureux de l'entendre.
La première ligne du mercenaire apparaît seulement si le PJ l'a embauché et donnera une
branche de conversation qui permet au PJ d'avoir quelques options avec le mercenaire
(comme le virer). Pour ce faire, choisissez l'onglet [Text Appears When] et choisissez
'nw_ch_tactics2' comme script pour cette ligne.
La deuxième ligne de du mercenaire apparaît seulement si le mercenaire est embauché, mais
non nécessairement par le PJ. Cela permet au joueur de savoir que e le mercenaire est
embauché par quelqu'un d'autre et doit l'empêcher d'embaucher le mercenaire loin du premier
maître. Pour le faire, choisissez l'onglet [Text Appears When] et choisissez le script
'nw_ch_tactics' pour cette ligne.
Si la première et deuxième ligne n'apparaissent pas, cela signifie que le mercenaire est
libre, donc la troisième ligne apparaît, permettant au PJ de l'embaucher. Les options du
PJ doivent inclure le choix de l'embaucher (s'il a assez d'argent) ou non. Si nous voulons
que l'acolyte coûte 100po, nous pouvons créer ce script dans l'onglet [Text Appears When]
de "je vous embauche" la ligne pour vérifier si le PC a assez d'or :
#include "NW_I0_PLOT"
int StartingConditional()
{
return (HasGold(
100,GetPCSpeaker()));
}
Maintenant, pour réellement payer le mercenaire, il faut mettre ce script dans l'onglet
[Actions Taken] de la même ligne de dialogue :
void main()
{
TakeGoldFromCreature(100,
GetPCSpeaker(), TRUE);
}
Maintenant, pour que le mercenaire rejoigne le PJ, ajoutez ce script à l'onglet
[Actions Taken] de la ligne où le henchman accepte :
#include "nw_i0_henchman"
void main()
{
if (GetIsObjectValid(
GetHenchman(GetPCSpeaker())) ==
TRUE)
{ SetFormerMaster(GetPCSpeaker(),
GetHenchman(GetPCSpeaker()));
object oHench =
GetHenchman(GetPCSpeaker());
RemoveHenchman(GetPCSpeaker(),
GetHenchman(GetPCSpeaker()));
AssignCommand(oHench,
ClearAllActions());
}
SetWorkingForPlayer(
GetPCSpeaker());
SetBeenHired();
ExecuteScript("NW_CH_JOIN",
OBJECT_SELF);
}
Finalement, pour permettre au joueur de virer le mercenaire, nous allons ajouter l'option
dans la branche de dialogue où le mercenaire est déjà employé.
Racine
'- • [OWNER] - Oui, <master/mistress> ?
'- • Bon travail. [End Dialog]
'- • Vous êtes renvoyé.
'- • [OWNER] - Je serai
ici si vous avez encore besoin de mes services.
Ajoutons ce script sous [Actions Taken] à la ligne où le mercenaire s'en va :
#include "nw_i0_henchman"
void main()
{
SetFormerMaster(GetPCSpeaker(),
OBJECT_SELF);
RemoveHenchman(GetPCSpeaker());
ClearAllActions();
}
Nous avons maintenant tout ce don nous avons besoin pour la conversation du mercenaire. Pour
le créer, tout que nous avons à faire est d'utiliser l'assistant créatures (ou copier une
autre créature existante) et rajouter quelques détails.
Onglet de Base - Dialogue : Utiliser le dialogue que l'on viens de créer, et ajouter
peut être quelques caractéristiques supplémentaires.
Onglet Avancé - Série de sons : assurez-vous d'en mettre un qui corresponde à vos lignes
de dialogue. Que ce soit une série tirée des mercenaires officiels de la campagne ou autre.
Inventaire - Quelques bonnes vieilles potions de vie sont essentielles. Si vous voulez
que votre mercenaire ait une arme qui ne soit pas limitée par son niveau (telle qu'une arme de
jet avec des munitions non limitées), créez cette arme en tant qu'arme de créature (arme de mêlée),
mais équipez-la dans la case d'arme normale. Dans la campagne, il y a aussi des objets invisibles
"propriétés de mercenaire". Ils leur donnent l'immunité au charme personne, à domination, et
aux charmes de masse. Personnellement je préfère que mes mercenaire ne soient pas des superman,
donc je n'ai pas ajouté ces objets spéciaux.
Onglet script - attribuez-les comme ceci :
OnBlocked: nw_ch_ace
OnCombatRoundEnd: nw_ch_ac3
OnConversation: nw_ch_ac4
OnDamaged: nw_ch_ac6
OnDeath: nw_ch_ac7
OnDisturbed: nw_ch_ac8
OnHeartbeat: nw_ch_ac1
OnPerception: nw_ch_ac2
OnPhysicalAttacked: nw_ch_ac5
OnRested: nw_ch_aca *
OnSpawn: nw_ch_ac9
OnSpellCastAt: nw_ch_acb
OnUserDefined: nw_ch_acd
* Note : le script OnRested (nw_ch_aca) ne devrait pas exister, c'est donc une bonne idée de le
laisser vide, particulièrement si vous prévoyez d'exporter vos mercenaires.
Il y a une astuce qui permet de remplacer facilement les scripts par defaut - surlignez le texte
'nw_c2_default' de chaque champ (en laissant la dernière lettre ou nombre) et remplacer par 'nw_ch_ac'.
Maintenant nous avons un mercenaire de base. Il rejoint votre cause, avec ses compétences, écoute des
commandes, prend congé quand on lui dit et il peut être réembauché. Il n'augmente pas de niveau et
ne respawn pas quand il meurt, il reste mort (mais peut être ressuscité). Je préfère en réalité que
des mercenaires suivent cette voie, mais si vous êtes un bon scripteur, vous pourriez examiner le
script nw_i0_henchman et le script du OnDeath. Voici le code des scripts spécifiques à la campagne
officielle qui pourrait être adapté pour vos propres modules. Notez aussi que pour obtenir un mercenaire
qui augmente de niveau, vous devez faire une copie de lui pour chaque niveau.
Voici une version de Dialogue
de mercenaire à télécharger que vous pouvez utiliser pour les votres (non traduit, donc en
anlais). C'est un fichier .erf que vous pouvez importer pour votre module, qui contient le dialogue et
les scripts vu dans ce tutorial, ainsi que des options pour des tactiques, non abordées ici.