Neville

[WIP]Recruit Sarna

Recommended Posts

The torture script temporarily adds Bastila back into the party while she's on screen. If you've got Sarna in Bastila's slot then it can't add her, and the cutscene can't start without her so you get a black screen.

 

Share this post


Link to post
Share on other sites
20 hours ago, LoneWanderer said:

In the 'Bastila's torture' script? Probably, tag that refers to Bastila. I don't have access to KOTOR 1 scripts, therefore I'm not sure.

 

But now, I think, it is possible that something is messed up in Sarna UTC. You don't have any Bastila mods in your Override, right?

Try removing Sarna UTC before the scene.

Removing the .utc file did not work. The only Bastila mods I have are to correct the romance script, restore dialogue, and make robes appear as variants of her base clothing. I was thinking there might be a way to temporarily remove Sarna, like Zalbaar on Kashyyyk or Bastila during the Jedi trial on Dantooine, and bring her back later. It may be possible, further, to avoid adding Bastila again. Reviewing script, some characters (Kel Algwynn, Sharina Fizark, Yuthura Ban, Belaya) can go to other planets and continue dialogue, but I do not know how this is done. With these issues, I still must ask if someone could help with the helmet. I cannot seem to add a new visor.

20210624195706_1.jpg

Share this post


Link to post
Share on other sites
10 hours ago, Neville said:

I was thinking there might be a way to temporarily remove Sarna, like Zalbaar on Kashyyyk or Bastila during the Jedi trial on Dantooine, and bring her back later. It may be possible, further, to avoid adding Bastila again.

It should be possible. You will need to remove Sarna from party members and add Bastila in the k_scene_start script and then attach new script (removing Bastila, adding Sarna back) to the end of the m44aa_c02.dlg dialog.

But I think it is easier (and I would even say, correct way) to spawn Bastila as npc for the scene. Try this code for k_scene_start script (may require some adjusting)

void main() {
	if ((GetIsPC(GetEnteringObject()) == 1)) {
		CreateObject(1, "Bastila", GetLocation(GetObjectByTag("WP01", 0))); // or p_bastilla001 instead of Bastila ? 
		SetPartyLeader(0xFFFFFFFF);
		AssignCommand(GetObjectByTag("Bastila", 0), ClearAllEffects());
		AssignCommand(GetObjectByTag("CutStart", 0), ActionStartConversation(GetFirstPC(), "m44aa_c02", 0, 0, 1, "", "", "", "", "", ""));
		DelayCommand(0.3, PlayRoomAnimation("StuntRoom44aa", 2));
		DelayCommand(2.6, PlayRoomAnimation("StuntRoom44aa", 1));
	}
}

I wonder why Bioware decided to add Bastila back to party members for the scene?

Share this post


Link to post
Share on other sites
9 hours ago, LoneWanderer said:


		CreateObject(1, "Bastila", GetLocation(GetObjectByTag("WP01", 0))); // or p_bastilla001 instead of Bastila ? 
		SetPartyLeader(0xFFFFFFFF);

 

CreateObject uses the resref, not the tag, so it would be "p_bastilla". p_bastilla001 from STUNT_18 is presumably unused, so I wouldn't trust it myself. Side note, I never noticed Bastila was misspelt in the resrefs.

SetPartyLeader can presumably be skipped as well, since you're not messing with the party members anymore. 

Share this post


Link to post
Share on other sites
21 hours ago, TamerBill said:

CreateObject uses the resref, not the tag, so it would be "p_bastilla". p_bastilla001 from STUNT_18 is presumably unused, so I wouldn't trust it myself. Side note, I never noticed Bastila was misspelt in the resrefs.

SetPartyLeader can presumably be skipped as well, since you're not messing with the party members anymore. 

 

On 6/25/2021 at 4:53 AM, LoneWanderer said:

It should be possible. You will need to remove Sarna from party members and add Bastila in the k_scene_start script and then attach new script (removing Bastila, adding Sarna back) to the end of the m44aa_c02.dlg dialog.

But I think it is easier (and I would even say, correct way) to spawn Bastila as npc for the scene. Try this code for k_scene_start script (may require some adjusting)

The only script I can find for cutscenes is in compiled format. There is compiled script, "k_scene_start.ncs", string ref 479, but would the script provided override the compiled script? If not, how do I alter source script for this scene?

Share this post


Link to post
Share on other sites
1 hour ago, Neville said:

would the script provided override the compiled script? If not, how do I alter source script for this scene?

Yes, but you have to compile it, because the engine can't read .nss scripts. When you place your compiled script in Override folder, the game will load it instead of original script.

But here is VERY IMPORTANT thing: various modules can have DIFFERENT versions of the script with the same name. So, if you place such script with common name in the Override folder, it will overwrite all scripts with that name and will break many scenes (for example, this happened to EEP mod).

I checked the name "k_scene_start" with FindRefs program, and, unfortunately, it is very common name used for scripts in many modules. This means that in the release version you can't simply put "k_scene_start" script in Override folder, you must use module injection (replacing the original script directly inside STUNT_18 module). Use TSLPatcher for module injection (check changes.ini of EEP or other smaller mods if you want to see, how to set up it).

While you work on the mod, you can, of course, put "k_scene_start" script in Override, just don't forget to use module injection in the release version!

Share this post


Link to post
Share on other sites

The script works to get past the cutscene, but it leads to the player being stuck in the cockpit/bridge portion of the Ebon Hawk with Bastila as the only other character. The rest of the Ebon Hawk disappears. There is an object that is identified as "cutscene start", but this cannot be accessed. I would guess this is due to the next cutscene being Carth and the player on the Ebon Hawk. I am attempting to configure TSLPatcher. This will be the first time I have had to use it for a mod of my own, and it will take time to learn. Looking at compiled script, I noticed original script has the line "JMP off_000001DD". New script has "JMP off_00000189" and is shorter. I should ask, I have noticed most module information is kept in ".rim" files, and "STUNT_18_s.rim" appears to be triggered by entry into "m44aa". This entry seems to trigger "stunt_unkhall.are", which is part of "STUNT_18.rim". How do I set TSLPatcher to replace script dependent upon and responsible for triggering so much other script? Also, what happened to the reference number for the script (479)? I will keep trying, but everything seems to be getting more confusing. TSLPatcher instructions appear focused upon ".GFF", ".2DA", and ".tlk" reference.

20210628183018_1.jpg.67c7ffd2005619b9314bd24ac034c180.jpg20210628180945_1.jpg.7c790b602f0d1e4173b593429f2cb0e7.jpg20210628180847_1.jpg.11763621ea3d2b9e4a276d1d082f7cf1.jpg

Share this post


Link to post
Share on other sites
20 hours ago, Neville said:

The script works to get past the cutscene, but it leads to the player being stuck in the cockpit/bridge portion of the Ebon Hawk with Bastila as the only other character. The rest of the Ebon Hawk disappears. There is an object that is identified as "cutscene start", but this cannot be accessed. I would guess this is due to the next cutscene being Carth and the player on the Ebon Hawk.

Your "k_scene_start" script in Override folder loaded instead of "k_scene_start" from STUNT_34 module (cutscene with Carth and the player on the Ebon Hawk). This is why you have to use module injection. Did the game autosaved before this cutscene? If so, then you can exit the game and remove "k_scene_start" script from Override folder. If the scene will work after that, then the problem is simply in "k_scene_start" script overwriting scripts in other modules.

In addition, we previously overlooked the fact that, if the torture script temporarily adds Bastila back into the party, then there is another script that removes Bastila from the party again. This script is "k_scene_start" from STUNT_34 module. Remove the line "RemoveAvailableNPC(0);" from the script, you should get this code:

void main() {
	if ((GetIsPC(GetEnteringObject()) == 1)) {
		if ((IsAvailableCreature(2) == 0)) {
			AddAvailableNPCByTemplate(2, "p_carth");
		}
		if ((IsNPCPartyMember(2) == 0)) {
			SpawnAvailableNPC(2, GetLocation(GetObjectByTag("WP01", 0)));
		}
		SetPartyLeader(0xFFFFFFFF);
		AssignCommand(GetObjectByTag("CutStart", 0), ActionStartConversation(GetFirstPC(), "m12aa_c03_carth", 0, 0, 1, "", "", "", "", "", ""));
		AssignCommand(GetFirstPC(), ClearAllEffects());
		AssignCommand(GetObjectByTag("Carth", 0), ClearAllEffects());
	}
}

You won't be able to put 2 "k_scene_start" scripts in the Override at the same time, but you can insert them directly into their .MOD via module injection.

 

20 hours ago, Neville said:

I should ask, I have noticed most module information is kept in ".rim" files, and "STUNT_18_s.rim" appears to be triggered by entry into "m44aa". This entry seems to trigger "stunt_unkhall.are", which is part of "STUNT_18.rim".

I didn't research .rim files enough to answer about loading process.

 

20 hours ago, Neville said:

Also, what happened to the reference number for the script (479)?

What is this reference number for the script (479)? Where did you find it?

Share this post


Link to post
Share on other sites

 

2 hours ago, LoneWanderer said:

Your "k_scene_start" script in Override folder loaded instead of "k_scene_start" from STUNT_34 module (cutscene with Carth and the player on the Ebon Hawk). This is why you have to use module injection. Did the game autosaved before this cutscene? If so, then you can exit the game and remove "k_scene_start" script from Override folder. If the scene will work after that, then the problem is simply in "k_scene_start" script overwriting scripts in other modules.

In addition, we previously overlooked the fact that, if the torture script temporarily adds Bastila back into the party, then there is another script that removes Bastila from the party again. This script is "k_scene_start" from STUNT_34 module. Remove the line "RemoveAvailableNPC(0);" from the script, you should get this code:


void main() {
	if ((GetIsPC(GetEnteringObject()) == 1)) {
		if ((IsAvailableCreature(2) == 0)) {
			AddAvailableNPCByTemplate(2, "p_carth");
		}
		if ((IsNPCPartyMember(2) == 0)) {
			SpawnAvailableNPC(2, GetLocation(GetObjectByTag("WP01", 0)));
		}
		SetPartyLeader(0xFFFFFFFF);
		AssignCommand(GetObjectByTag("CutStart", 0), ActionStartConversation(GetFirstPC(), "m12aa_c03_carth", 0, 0, 1, "", "", "", "", "", ""));
		AssignCommand(GetFirstPC(), ClearAllEffects());
		AssignCommand(GetObjectByTag("Carth", 0), ClearAllEffects());
	}
}

You won't be able to put 2 "k_scene_start" scripts in the Override at the same time, but you can insert them directly into their .MOD via module injection.

I didn't research .rim files enough to answer about loading process.

 

What is this reference number for the script (479)? Where did you find it?

KotOR Tool shows a compiled script, "k_scene_start.ncs", the full identification being "k_scene_start.ncs (479)" in data for "STUNT_18.rim",  mentioned under "STUNT_18_s.rim". I have been attempting to configure TSLPatcher to replace this with the modified ".nss"  file (TSLPatcher only accepts new ".ncs" files if they are to be moved into the "Override" folder) by using the "Replace existing" option with the ".mod" files, which, for some reason, are in the "lips" folder. I have not yet completed configuring TSLPatcher, but I will test the new script as soon as I can. I do appreciate all the assistance I have been receiving.

Share this post


Link to post
Share on other sites
On 6/28/2021 at 11:36 PM, Neville said:

Also, what happened to the reference number for the script (479)?

...that's the file size, dude. 479 bytes.

Share this post


Link to post
Share on other sites

I hope I used the correct configuration. When I looked at recruit script tutorials, I never expected something this complex.

Share this post


Link to post
Share on other sites
12 minutes ago, Neville said:

I hope I used the correct configuration. When I looked at recruit script tutorials, I never expected something this complex.

I mean, there’s a reason recruitment mods generally replace HK or dead Juhani, not the most plot-critical party member in the game.

A new party member mod’s not the best choice for a beginner anyway, but you could have made it easier on yourself.

  • Like 1

Share this post


Link to post
Share on other sites

I followed instructions for use of "deNCS", even finding the Java version specified, but it does not seem to work. Even the command prompt gives the message "Access is denied."

STUNT_18 plays without the .ncs file in my "Override" folder, but I found another problem. STUNT_18 shows Sarna instead of Bastila, odd because the Template ResRef I used for Sarna is "p_sarna", and her .utc file is p_sarna.utc, but STUNT_34 plays. Sarna disappears (she is not available as a party member) after Carth lands the Ebon Hawk. It looks like TSLPatcher may have sent files to the wrong destinations when I tried to configure it for STUNT_34. Otherwise, could this have resulted from use of the command GetObjectbyTag("Bastila", 0)? If another NPC is recruited, the tag must be the same as the one replaced, so the template is different, but the tag is the same. If a new tag is used, even her original tag, "sarna021", you can get duplicates of the character. I have seen this happen.

20210629231038_1.jpg.4b223e7f8bf3eabd7e767cf07bff3d02.jpg20210630003055_1.jpg.a8b433c42898763fe9979d52694f2d8b.jpg

While I try to find cause, I was able to improve the GMax/NWMax helmet model, though, given its size and clipping issues, as previously mentioned, I will have to attach it directly to a modified head model. For some reason, though I now have KotORMax, I still find something seems to interfere with textures when I try to attach the helmet model pulled from the Sith Commando model (n_sithcommando) to the head model (comm_w_f). Can anyone tell me why this might be happening?

SarnaHelm.thumb.jpg.845d31a2cb4d1cc830d78c6fa73cf040.jpg

Share this post


Link to post
Share on other sites

I like the fact your developing this character into a recruitable mod yes it would be good to find out what happened to her following Taris's destruction plus I like your development for the character itself. 

Keep up the best of work your doing well. :)

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.