Hmm. Did some more tests, on the same dialogue. The results are these. The script, the custom one which calls ActionStartConversation will fire the convo, and the scripts in the convo like gc_rollsave_kl. All good. Then the trigger gets destroyed, and with your correction on if (!GetIsPC(oEnter)) return; companions fire it as well all fine.
Because I don't like to leave things unfinished though, I was bumped as to why the DoSpeakTrigger behaves like that. I placed down a normal speak trigger, which had gtr_speak_node in it. Variables set, convo fired, fortitude succeeded, which means it bypassed the failure node. It shouldn't have done this. My testing character has +4 on fortitude and I have set this on the node 25DC for this reason. To fail.
I then tried my favorite method as well.
#include "ginc_trigger"
#include "ginc_ipspeaker"
void main()
{
object oPC = GetFirstPC();
object oEntering = GetEnteringObject();
location lLocation = GetLocation(oPC);
if (!GetIsPC(oEntering)) return;
{
CreateIPSpeaker("rw_enter_speaker","rw_enter", lLocation, 0.5);
DelayCommand(3.5,DestroyObject(OBJECT_SELF));
}
}
Guess what happened. Same as gtr_speak_node. Now... the CreateIPSpeaker has never failed me. Something's fishy here. I made a search on my NWN2 documents folder for the ginc_trigger with no results. I made one on the installation folder and it found a ginc_trigger in the SoZ campaign folder. Don't know if it was always there and why it should be there. Anyway, even if, there's no way it causes the problem. So that's that I guess. My DoSpeakTrigger doesn't recognise scripts. I could expect it from this function. But CreateIPSpeaker as well? Then I went waaaah?
Maybe a copy of your ginc_trigger would be helpful to check anything different. For the time being I will go with the custom script, and hope that it's an one time thing and I won't have to check all previous convos which use DoSpeakTrigger. Because then we are talking about a major undertaking...





Retour en haut






