Page 1 sur 1

[DLG] Ajout d'interjection à un dialogue sans tenir compte de ses actions

Posté : mar. 11 nov. 2014, 16:46
par Pélagie
Bonjour à tous !

J'ai un souci avec une interjection de Kupgup, le familier kobold sur lequel je suis en train de bosser. Peut-être quelqu'un pourra m'aider.

En entrant dans les mines de Bois-Manteau, un garde (IRON8.cre; IRON8.DLG) nous accoste en disant un truc du genre "c'est vous les vauriens bla bla..." (ligne #0) puis vire hostile (dans le jeu de base). Je fais intervenir Kupgup à la fin de la phrase du garde, or lorsque le dialogue prend fin, le garde reste neutre et c'est Kupgup qui vire hostile.
Je pense comprendre ce qui se passe (la commande Enemy() allouée au garde dans le dialogue de base est appliquée à Kupgup) mais je ne vois pas comment régler le truc.

Voilà ce que je tape dans le fichier .d de Kupgup pour lancer l'interjection:

Code : Tout sélectionner

INTERJECT_COPY_TRANS IRON8 0 kobvicieux
== FAMKOB IF ~InActiveArea("FAMKOB")~ THEN @29
END
où FAMKOB est la death variable du familier.

Quelqu'un a une idée ?

Note : j'utilise InActiveArea car le perso étant un familier et non un PNJ recrutable, je ne peux pas utiliser InParty.

Posté : mar. 11 nov. 2014, 19:35
par Pélagie
C'est bon, j'ai trouvé la solution à mon problème (après moults tests et une grosse prise de tête).
Oghma soit loué!

Posté : mar. 11 nov. 2014, 22:09
par mirandir
N'hésite pas à expliquer comment tu as résolu ton problème, ça pourra sans doute servir à d'autres !

Posté : mar. 11 nov. 2014, 23:31
par Pélagie
Oui en effet! J'ai hésité à le faire puis ai finalement abandonné en me disant que mon erreur était tellement débile qu'une explication n'était peut-être pas nécessaire :$

En fait voilà :

La commande INTERJECT_COPY_TRANS permet de faire appel à une ligne de dialogue extérieur déjà existant (Celui d'un NPC créé par le jeu donc) et de faire intervenir votre propre NPC à la ligne choisie en "liant" ce dialogue au sien. Pour une simple interjection donc. Le problème est que les actions "DO" de la ligne de dialogue en question seront également liées à votre NPC pendant son intervention.
Je donne un exemple un peu plus concret :

Un PNJ du jeu original se dirige vers Charname et lui sort une réplique "bla bla" puis se barre (via le script EscapeArea() par exemple) ; et bien si vous voulez faire réagir votre propre NPC à sa réplique, la commande INTERJECT_COPY_TRANS va vous permettre de le faire. Seulement, l'action EscapeArea() s'appliquera également à sa ligne de dialogue et il quittera la zone (tandis que le NPC du jeu original ne bougera pas).

Donc... Lorsque que vous désirez que seule la ligne de dialogue soit liée à votre perso et non l'action résultante, il faut plutôt utiliser INTERJECT_COPY_TRANS2
Cette commande fait la même chose que la première mais ne prend pas en compte les actions générées par le "DO".

Voilou ;)