jacksuspenders

Troubleshooting Juhani / UNK temple bug

Recommended Posts

Hello there.

I'm trying to make a mod that allows Juhani to side with a dark-side PC and Bastila in the big finale at the Rakatan Temple (under certain conditions). To start, I wrote a little script that makes Juhani an available NPC and adds her back into the party. I plugged it into the dlg file unk44_evilbast and set it to run right after k_punk_bastjoin (which is the script that removes Juhani from the party and makes her unavailable).

The script did successfully add Juhani back into the party and she helped DS Bastila and the PC sacrifice Jolee. But after Jolee was dead, this conversation with Bastila about disabling the disruptor field, unk44_exittrig, never triggers. And I couldn't interact with the Rakatan computer.

My best guess is that the game doesn't trigger the conversation or allow you to interact with the computer until Jolee and Juhani are dead, but Juhani lives, so no can do.

(Also, I think this is an unrelated issue, but Juhani's lightsaber won't turn off after the fight, in the LS ending or DS ending.)

I'm grasping for some ideas or insight here as I'm not sure how to work around this.

I can't imagine my script is the (direct) cause of this, since it's literally just: get Juhani, make Juhani available, add Juhani to party.

I suspect that k_punk_comptalk is the source of the issue with the conversation not triggering, but I could be wrong. (The other two scripts I'll attach to this seem like they might be responsible for Juhani's lightsaber not turning off. Might be an if statement missing somewhere?}

Thank you for your consideration,

Jack's Suspenders.

k_punk_bastatt06.ncs k_punk_bastwalk.ncs k_punk_comptalk.ncs

Share this post


Link to post
Share on other sites
2 hours ago, jacksuspenders said:

My best guess is that the game doesn't trigger the conversation or allow you to interact with the computer until Jolee and Juhani are dead

Yes, the script exitheart:

#include "k_inc_debug"

void main() {
	
	if (GetIsObjectValid(GetObjectByTag("jolee", 0)) == FALSE && GetIsObjectValid(GetObjectByTag("juhani", 0)) == FALSE && GetGlobalNumber("G_FinalChoice") == 1)
		{
			Db_PostString("start conv", 5, 5, 1.0);
			
			if (GetIsObjectValid(GetObjectByTag("bastila", 0)) == TRUE)
				{
					Db_PostString("bast valid", 5, 6, 1.0);
				}
				else
					{
						Db_PostString("bast not valid", 5, 6, 1.0);
					}
			
			AssignCommand(GetObjectByTag("bastila", 0), ClearAllActions());
			DelayCommand(0.5, AssignCommand(GetObjectByTag("bastila", 0), ActionStartConversation(GetFirstPC(), "unk44_exittrig", FALSE, 0, TRUE)));
			DelayCommand(1.0, DestroyObject(OBJECT_SELF));
		}
}

I just modified this script last week for the next version of K1CP, which you may wish to use as a basis - https://github.com/KOTORCommunityPatches/K1_Community_Patch/blob/master/Source/exitheart.nss  All you'd need to do is remove the check for Juhani.

3 hours ago, jacksuspenders said:

Juhani's lightsaber not turning off

This was a failure on Bioware's part to toggle SetLightsaberPowered back off. I also dealt with this in the K1CP versions of the scene's scripts. Look at the "see also" list in the above link.

3 hours ago, jacksuspenders said:

And I couldn't interact with the Rakatan computer.

The computer's OnUsed script (k_punk_comptalk) gates the DLG to prevent its conversation firing before the showdown with Bastila is resolved. The DS route is another simple GetIsObjectValid check. The version you attached won't decompile, so I can't tell what's wrong with it. You need to provide the source (NSS).

Share this post


Link to post
Share on other sites
23 hours ago, DarthParametric said:

Yes, the script exitheart:


#include "k_inc_debug"

void main() {
	
	if (GetIsObjectValid(GetObjectByTag("jolee", 0)) == FALSE && GetIsObjectValid(GetObjectByTag("juhani", 0)) == FALSE && GetGlobalNumber("G_FinalChoice") == 1)
		{
			Db_PostString("start conv", 5, 5, 1.0);
			
			if (GetIsObjectValid(GetObjectByTag("bastila", 0)) == TRUE)
				{
					Db_PostString("bast valid", 5, 6, 1.0);
				}
				else
					{
						Db_PostString("bast not valid", 5, 6, 1.0);
					}
			
			AssignCommand(GetObjectByTag("bastila", 0), ClearAllActions());
			DelayCommand(0.5, AssignCommand(GetObjectByTag("bastila", 0), ActionStartConversation(GetFirstPC(), "unk44_exittrig", FALSE, 0, TRUE)));
			DelayCommand(1.0, DestroyObject(OBJECT_SELF));
		}
}

I just modified this script last week for the next version of K1CP, which you may wish to use as a basis - https://github.com/KOTORCommunityPatches/K1_Community_Patch/blob/master/Source/exitheart.nss  All you'd need to do is remove the check for Juhani.

This was a failure on Bioware's part to toggle SetLightsaberPowered back off. I also dealt with this in the K1CP versions of the scene's scripts. Look at the "see also" list in the above link.

The computer's OnUsed script (k_punk_comptalk) gates the DLG to prevent its conversation firing before the showdown with Bastila is resolved. The DS route is another simple GetIsObjectValid check. The version you attached won't decompile, so I can't tell what's wrong with it. You need to provide the source (NSS).

Thank you for your input. You were very helpful.

I was able to edit your exitheart script so that the conversation would trigger normally.

Where would you find the source script for k_punk_comptalk? I couldn't find one in KotOR Tool. I was under the impression that only a select number of source scripts are available, not including that one.

Assuming it is unavailable, I imagine I'll have to make a replacement for the Rakatan computer's.

Share this post


Link to post
Share on other sites

Module scripts only exist as binaries. They need to be decompiled. Currently the only option is DeNCS - https://web.archive.org/web/20160405105949/http://starwarsknights.com/mtools/DeNCS.zip

Attached are the vanilla module scripts that I have already previously decompiled and cleaned up while working on K1CP.

unk_m44ac_Lehon_Temple_Summit_Selected_Source.zip

Share this post


Link to post
Share on other sites
On 11/14/2021 at 1:57 AM, DarthParametric said:

Module scripts only exist as binaries. They need to be decompiled. Currently the only option is DeNCS - https://web.archive.org/web/20160405105949/http://starwarsknights.com/mtools/DeNCS.zip

Attached are the vanilla module scripts that I have already previously decompiled and cleaned up while working on K1CP.

unk_m44ac_Lehon_Temple_Summit_Selected_Source.zip 16.87 kB · 1 download

Hey.

Not sure if I'll end up uploading this. But if I do, would you be alright with me including scripts that were based on the ones you provided? And if so, how would you like me to credit you?

Also, I've discovered that DeNCS will throw some "access denied" error if I don't run the command prompt as an administrator.

Share this post


Link to post
Share on other sites
9 minutes ago, jacksuspenders said:

how would you like me to credit you?

The ones in the archive are just the vanilla scripts so you don't need any special permission. You can credit me for supplying them if you want, but all I did was decompile them and tidy them up a bit so it's really Bioware's work not mine.

For compatibility purposes we encourage people to look at K1CP's source, available here, which people are free to use as a basis for their own mods as long as credit is provided.

9 minutes ago, jacksuspenders said:

I've discovered that DeNCS will throw some "access denied" error if I don't run the command prompt as an administrator

You are likely running it from inside Program Files. Don't put/install anything there and your life will be much easier. Windows is particularly bitchy about permissions there.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.