KOTORCommunityPatches / K1_Community_Patch

K1 Community Patch
63 stars 8 forks source link

Juhani's and Jolee's dialogue - One line is never spoken due to wrong code in script #355

Closed Salk73 closed 2 years ago

Salk73 commented 4 years ago

The original conditional script k_hjuh_p28.nss never returns true because sArea in the function

string sArea = GetName(GetArea(OBJECT_SELF));

seems to be returning a null string, despite the following remark I found on NWN Lexicon:

"Remarks:

GetName() returns the name of modules and areas (pre-1.25 it returned a null string)."

It is easy to replace it with something appropriate thus restoring one of Juhani's lost lines.

int StartingConditional()
{
    string sArea = GetModuleFileName();
    if ((sArea == "unk_m44aa") || (sArea == "unk_m44ab"))
    {
      if ((GetGlobalNumber("G_JUHANIP_STATE") != 10) || (GetGlobalNumber("G_FinalChoice") != 2))
      {
        return TRUE;
      }
    }
    return FALSE;
}
Salk73 commented 4 years ago

I've added an extra check to make sure this won't interfere with the "This may be the last time I will have a chance to talk to you..." dialogue (E489).

EDIT: And it seems Jolee has the same kind of problem (k_swg_jolee20).

That also needs replacing with:

int StartingConditional()
{
    string sArea = GetModuleFileName();
    if ((sArea == "unk_m44aa") || (sArea == "unk_m44ab"))
    {
        return TRUE;
    }
    return FALSE;
}
Salk73 commented 4 years ago

One more bug in Juhani's dialogue. The script at E82 needs to be removed.

DarthParametric commented 4 years ago

Is that secondary check for the globals intended to be an OR, or was it meant to be an AND?

Salk73 commented 4 years ago

An OR check.

DarthParametric commented 2 years ago

One more bug in Juhani's dialogue. The script at E82 needs to be removed.

Weird. The config block from the DLG in 1.8 is:

[k_hjuh_dialog.dlg]
ReplyList\233\EntriesList\0\Index=177
ReplyList\233\EntriesList\0\Active=k_hjuh_h07
ReplyList\233\EntriesList\1\Index=227
ReplyList\233\EntriesList\1\Active=k_hjuh_h02
ReplyList\233\EntriesList\2\Index=200
ReplyList\233\EntriesList\2\Active=k_hjuh_h05
ReplyList\243\EntriesList\0\Index=185
ReplyList\243\EntriesList\0\Active=k_con_ismale
ReplyList\243\EntriesList\1\Index=184
ReplyList\243\EntriesList\2\Index=186

but in my working folder it's:

[k_hjuh_dialog.dlg]
ReplyList\97\EntriesList\0\Active=
ReplyList\107\EntriesList\0\Active=
ReplyList\110\EntriesList\0\Active=

One of those removes the E82 starting conditional. Not sure what the other ones are about. Or what issue the existing changes are for. Doesn't seem like I did those.