Jump to content

NO VALID LINK OR REPLY in daslave1.dlg


jastey

Recommended Posts

I didn't find this in the fixed bug list so I assume it is not covered yet:

 

The drow slave dialogue file "daslave1.dlg" has a wrong answer trigger, it should be "!IsValidForPartyDialog("Nalia")" for the first answer option.

The way it is now, this leads to an "NO VALID LINK OR REPLY" if neither Nalia nor Jaheira are able to talk:

 

 

IF ~~ THEN BEGIN 10 // from: 5.3 3.2 2.3
 SAY #56875 /* ~Ihr würdet... uns in dieser Stadt freisetzen, unbewaffnet, ohne irgendetwas? Wir werden bald tot sein. Aber... aber vielleicht besser, als die Alternative. So soll es sein.~ */
 IF ~!IsValidForPartyDialog("Jaheira")
IsValidForPartyDialog("Nalia")~ THEN DO ~SetGlobal("SlaveResult","GLOBAL",4)~ EXIT
 IF ~IsValidForPartyDialog("Jaheira")~ THEN DO ~SetGlobal("SlaveResult","GLOBAL",4)~ EXTERN ~JAHEIRAJ~ 510
 IF ~!IsValidForPartyDialog("Jaheira")
IsValidForPartyDialog("Nalia")~ THEN DO ~SetGlobal("SlaveResult","GLOBAL",4)~ EXTERN ~NALIAJ~ 303
END

Link to comment

Nice catch. :) Transition 0 can never fire, as transition 2 has the same conditions and is evaluated first. We can take advantage of that and use EXTEND_TOP instead of trying to replace the entire state. .d code:

 

// fixes 'no valid' error for slave leader in ust natha
EXTEND_TOP DASLAVE1 10
 IF ~~ THEN DO ~SetGlobal("SlaveResult","GLOBAL",4)~ EXIT
END

 

A trigger here would actually be redundant, as we'll only evaluate this transition if Jaheira and Nalia are not valid for dialogue.

Link to comment

I'd feel honored if you find anything of my work worth stealing. :)

 

Which interjection at Windspear do you mean exactly? (Some could be seen as UB stuff)

 

If you mean what I listed here , feel free to use whatever you think fits. I edited the post (found a bug in the originally posted code :)) and added more comments about whether I see the changes as a tweak or a fix, so you should be able to see easily what I was trying to do.

 

If you have any more questions (concerning my code) let me know.

Link to comment

So, if I read that correctly, most of those are extra safeguards to ensure original dialogues don't fire if prompted by a mod? It looks like these are fixes and need to go in:

 

// This is a fix so that Anomen's second "dead sister" complaint can be triggered at all
ADD_TRANS_ACTION ANOMENJ BEGIN 28 END BEGIN END ~SetGlobal("AnomenComplain","LOCALS",1)~

 

//Puts the variable setting in front of the dialogue triggering so that Anomen's complaint about delaying Garren kid's quest gets triggered
COPY_EXISTING ~anomen.bcs~ ~override~
 DECOMPILE_BCS_TO_BAF
REPLACE_TEXTUALLY ~\(StartDialogu?e?NoSet(Player1)[%tab% %lnl%%mnl%%wnl%]+\)\(SetGlobal("ddAnomenWhine","LOCALS",1)\)~
~\2 \1~ 
 COMPILE_BAF_TO_BCS
 BUT_ONLY_IF_IT_CHANGES

 

This, I disagree--I think it's a fix:

 

// add slight delay so Anomen can comment on dead Windspear knights before Garren
COPY_EXISTING ~garren.bcs~ ~override~
 DECOMPILE_BCS_TO_BAF
REPLACE_TEXTUALLY ~\(GlobalLT("DomainPaladinBattle","GLOBAL",4)[%tab% %lnl%%mnl%%wnl%]+THEN[%tab% %lnl%%mnl%%wnl%]+RESPONSE #100\)[%tab% %lnl%%mnl%%wnl%]+\(StartDialogu?e?NoSet(Player1)\)~
~\1 Wait(1) \2~
 COMPILE_BAF_TO_BCS
 BUT_ONLY_IF_IT_CHANGES

 

As for the following, I just want to ask one question: do the dialogues trigger correctly in an unmodded game? If so, then these won't be included:

 

/* add state trigger for Anomen's after knight test talk(s): */
/*CN Anomen*/
ADD_STATE_TRIGGER AnomenJ 101 ~Global("AnomenSpeaksAfterTrial","LOCALS",1)~

/*LG Anomen*/
ADD_STATE_TRIGGER AnomenJ 110 ~Global("AnomenSpeaksAfterTrial","LOCALS",1)~

/*Anomen's warning dialogue in the tanner's house*/
ADD_STATE_TRIGGER AnomenJ 205 ~Global("TannerWarning","AR0502",1)~

/*Anomen's comment on the dead watchman's body (tanner house)*/
ADD_STATE_TRIGGER AnomenJ 207 ~Global("FoundAegis2","LOCALS",1)~

/*Anomen's comment on dead Saerk, after he killed him and his daughter*/
ADD_STATE_TRIGGER AnomenJ 282 ~Global("TheBadManIsDead","LOCALS",1)~

 

You can see how much I play with Anomen. ;)

Link to comment
So, if I read that correctly, most of those are extra safeguards to ensure original dialogues don't fire if prompted by a mod?
Yes, exactly.

 

It looks like these are fixes and need to go in: (...)
That are the real fixes, yes.

 

This, I disagree--I think it's a fix:
I would be happy if it would be included, as it seems the only way for Anomen to get enough time for his monster talk. You might want to make it "Wait(2)", though, as I combined the 1 s wait with a deletion of the 1 s wait in Anomen's trigger script.

 

As for the following, I just want to ask one question: do the dialogues trigger correctly in an unmodded game? If so, then these won't be included: (...)
Umm... I ever played LG Anomen, and the only talk I can confirm is the "LG Anomen after knight test talk". I never saw the tanner warning when entering the house, or at least I don't recall it...

The other ones I can't say, as I played the game differently.

Link to comment

Thanks, berelinde. Yes, the tanner warning does fire in an unmodded game, I just played it while being offline. The other ones I can't confirm, (but if the tanner one works the other ones should fire correctly, too.) [EDIT: Maybe I can play dead Aegisfeld, just give me a moment.]

EDIT 2: Yes, Anomen's dead Leutnant Aegisfeld dialogue triggers correctly, too.

Link to comment

Lessee... you confront Reijek in his shop, but don't pursue him down the stairs. You report this to Aegisfield. Later, when you return to Reijek's shop you'll find the body of Aegisfield in a container on the second floor (obviously he didn't fare so well in his visit). You can return Aegisfield's body to the inspector in the council building (Brega?) for a reward.

Link to comment
Lessee... you confront Reijek in his shop, but don't pursue him down the stairs. You report this to Aegisfield. Later, when you return to Reijek's shop you'll find the body of Aegisfield in a container on the second floor (obviously he didn't fare so well in his visit). You can return Aegisfield's body to the inspector in the council building (Brega?) for a reward.

IIRC it's possible to collect all evidence and report to Aegisfield w/o even entering tanner's house.

Link to comment
IIRC it's possible to collect all evidence and report to Aegisfield w/o even entering tanner's house.
That's what I did. I have a save game from right before entering the tanner's house (with all the evidence), so that was easy. (I am glad this didn't occurr to me when playing the game. Poor Aegisfeld. Jaheira made a spoilerish "letting him go to the tanner on his own was probably not a good idea", but no possibility to accompany him there. Sounds like a neat quest extention to me.)
Link to comment
Nice catch. :) Transition 0 can never fire, as transition 2 has the same conditions and is evaluated first. We can take advantage of that and use EXTEND_TOP instead of trying to replace the entire state. .d code:

 

// fixes 'no valid' error for slave leader in ust natha
EXTEND_TOP DASLAVE1 10
 IF ~~ THEN DO ~SetGlobal("SlaveResult","GLOBAL",4)~ EXIT
END

 

A trigger here would actually be redundant, as we'll only evaluate this transition if Jaheira and Nalia are not valid for dialogue.

 

I was thinking about this...

 

Wouldn't it be much mod-friendlier to EXTEND_BOTTOM in this case? I just thought of all the possible A_T_A and A_T_T that would get messed up:

 

EXTEND_BOTTOM DASLAVE1 10

IF ~!IsValidForPartyDialog("Jaheira")

!IsValidForPartyDialog("Nalia")~ THEN DO ~SetGlobal("SlaveResult","GLOBAL",4)~ EXIT

Link to comment
I was thinking about this...

 

Wouldn't it be much mod-friendlier to EXTEND_BOTTOM in this case? I just thought of all the possible A_T_A and A_T_T that would get messed up:

 

EXTEND_BOTTOM DASLAVE1 10

IF ~!IsValidForPartyDialog("Jaheira")

!IsValidForPartyDialog("Nalia")~ THEN DO ~SetGlobal("SlaveResult","GLOBAL",4)~ EXIT

Actually, now ALTER_TRANS can do this even better:

 

// fixes 'no valid' error for slave leader in ust natha
ALTER_TRANS DASLAVE1 // file name
BEGIN 10 END // state number (can be more than one)
BEGIN 0 END // transition number (can be more than one)
BEGIN // list of changes, see below for flags
 TRIGGER ~~
END

 

This will also preserve the transition order.

Link to comment

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...