Sign in to follow this  
Salk

[KotOR] Carth's romance bug?

Recommended Posts

Hello!

In my heavily modified game it seems my female protagonist's romance chances with Carth were killed after the first skirmish against Malak on the Leviathan (the global K_SWG_CARTH is set to 99 sometimes during the long cutscene).

I had started a long time before Carth's personal quest about his son Dustil and since then it seems like Carth's dialogue would not allow for advancing the romance because all the player can ask is "Do you need to talk?" and the reply is invariably "Talk about what? The only thing I want to do right now is find Dustil. If he's alive... Th-there's just nothing else I want to think about."  I never really completed his personal quest before the Leviathan and that seems like it's  spelled doom on the romance.

To me that doesn't make any sense. For starters, why would the game kill the romance after the Leviathan at all? What is the logical reason? Why punish the player that doesn't rush to complete Carth's personal quest because Korriban is perhaps the last planet they want to visit?

Assuming this is not a local issue (it shouldn't, really), I would like to know what can be done about it in order to make it work differently.

Cheers!

UPDATE: Apparently, the script responsible for updating the global to 99 is k_plev_throwdown.ncs (found in lev_m40ac). Unfortunately, it's one of those that DeNCS can't decompile. Perhaps @AmanoJyaku can check if his WIP decompiler might do the job instead?

Share this post


Link to post
Share on other sites

Yes, I am really curious about it.

It may be that the game is forced to kill the romance because after the Leviathan and the revelation some of the missing steps left in the romance would no longer make sense, dialogue-wise. If that is the case, then I guess there is nothing that can be done from that angle.

But I'm not so sure about blocking the romance while the Finding Dustil quest is on. k_swg_carth18.ncs  and k_swg_carth19.ncs are the conditional scripts in k_hcar_dialog.dlg responsible for it. They both check the KOR_DANEL global and if it's 2 or 3, Carth won't talk about anything but Dustil, the Gizka on the Ebon Hawk, the stowaway or the place you currently are at.

I do believe that all this is original intended behavior though and perhaps it'd be best left alone.

  • Like 1

Share this post


Link to post
Share on other sites

I haven't been on in weeks, and by coincidence I log on and my assistance is required. I must have felt a disturbance in the Force...

I ran into this issue with Carth, as well. I had always assumed it was deliberate or an oversight. I'll take a look at the scripts and see what I can find.

  • Like 1

Share this post


Link to post
Share on other sites

As far as I recall, no, that is not a local issue, but there's a reason for it. Most of Carth's dialogue has to be advanced before the Leviathan because he repeatedly broods about getting revenge on Saul. The Dustil quest is triggered when the global K_SWG_CARTH is set to 8, but the value must be at 14 after the Leviathan in order for the romance to continue along the romance branch "I think it's time we talked about me being Revan, don't you?" instead of the non-romance branch "We need to talk. About me being Darth Revan." And as you noticed, it is not possible to advance Carth's dialogue tree while the Dustil quest is active.

I don't believe that editing k_plev_throwdown alone would solve the problem, however. It looks like the reason they set the global to 99 there is to make it impossible to advance the Saul-centric dialogue after Saul is dead, as the conditional scripts don't check for that:

Spoiler

//:: k_swg_carth25
/*
    After the final Star Map has been found
*/
//:: Created By: David Gaider
//:: Copyright (c) 2002 Bioware Corp.

#include "k_inc_debug"

int StartingConditional()
{
    int nRomance = GetGlobalNumber("K_SWG_CARTH");
    int nPlot = GetGlobalNumber("K_STAR_MAP");
    if ((nRomance == 14) && (nPlot > 49))
    {
        return TRUE;
    }
    return FALSE;
}

 

They only seem to check if the value of K_STAR_MAP is greater than whatever is relevant, so this would still be true.

I'm also not sure whether it's feasible to allow you to continue advancing Carth's dialogue while the Dustil quest is active. It depends on the dialogue, I suppose.

If I recall correctly, there is another potential issue in that you can't trigger the Dustil if you have already visited and completed Korriban. I'm not sure how this affects the romance.

  • Like 2

Share this post


Link to post
Share on other sites

Yes, it is just like I suspected then.

The developers killed the romance because it contains references to Saul that would no longer make any sense. But wouldn't it be possible to simply set K_SWG_CARTH to 14 if it is at 8 changing the content of k_plev_throwdown?

In that way, the non compatible lines would be skipped and the romance could proceed from a valid point after the Leviathan is completed. Dustil's quest would still need to be completed first since the conditional scripts checking for KOR_DANEL comes first have priority.

Unlike what I thought earlier, it's this angle that seems the right one to pursue while it seems correct to block the advancement of the romance as long as Dustil's quest is not solved one way or another.

So yes, it seems that the ability of editing k_plev_throwdown may be very important here. But even if it is not possible, we can still use a secondary global to keep track of the K_SWG_CARTH state and roll back from 99 to 14.

EDIT: For the non-romantic path we have k_swg_carth25x that checks on three globals: numeric K_SWG_CARTH must be other than 14 (OK),  boolean Lev_MalDream to be true (OK) and another boolean G_Carth_RevTalk to be false (NOT OK). So even if the romance is killed the game doesn't allow for the non romantic path to be open either because the second boolean is set to TRUE somewhere during the revelation on the Leviathan. Do you know what script does that, @JCarter426? And even why we need that check?

Share this post


Link to post
Share on other sites

I don't know, no. But I think the solution you described could work. As long as the global is increased, I think that should prevent the pre-Leviathan dialogue from firing.

I would want to check if there's any dialogue that doesn't reference Saul and therefore could be salvaged, though. Branches that you could pursue freely after the Leviathan no matter what, if they weren't available before, if there's no reason preventing it. That would require fiddling with the scripts there too, though.

Share this post


Link to post
Share on other sites

Well, assuming that we won't be able to edit k_plev_throwdown, I have done the following:

- Added a new global (K_SWG_CARTH2) to globalcat.2da

- Created two new scripts

void main() {

  int nCarthSWG = GetGlobalNumber("K_SWG_CARTH");
  
  SetGlobalNumber("K_SWG_CARTH2", nCarthSWG);

}

and

void main() {

  if (GetGlobalBoolean("G_Carth_RevTalk") == TRUE) {
    SetGlobalBoolean("G_Carth_RevTalk", FALSE);
  }

  if (GetGlobalNumber("K_SWG_CARTH2") == 8) {
    SetGlobalNumber("K_SWG_CARTH", 14);
    SetGlobalNumber("K_SWG_CARTH2", 99);
  }

}

with the first firing at E46 in the lev40_darthmala2.dlg and the second at E3 in the lev40_carth.dlg files.

This won't solve everything because it reopens the romance and non romance talk only if the Player has started and not completed the Finding Dustil quest and, even in that case, it does skip a couple of interactions with Carth that might have been salvaged before reaching the "Let's talk about my being Revan" conclusive talk. This is thus the only real restoration, together with the possibility of advancing the romance at a later stage.

The reason why I think it's best not salvage those two interactions [R187 and R106] is that it doesn't feel very natural that the immediate subject of their talk isn't the revelation. Also, the effective time for developing the Carth/Player relationship is drastically reduced by the game having advanced a lot and nearing its end.

A preliminary test seems to confirm things work fine with this solution.

 

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.

Sign in to follow this