DarthParametric

Modders
  • Content Count

    4,659
  • Joined

  • Last visited

  • Days Won

    529

Posts posted by DarthParametric


  1. From Xoreos? All of the Xoreos Tools exes are commandline. They are intended to be used from a console with user-supplied arguments.

    I have a couple of batch files for converting TLKs back and forth:

    @echo off
    set /p gametype="Please enter either kotor or kotor2 to specify game version: "
    set /p tlkname="Please enter the filename of the TLK (without extension): "
    tlk2xml --%gametype% %tlkname%.tlk %tlkname%.xml
    pause
    @echo off
    set /p gametype="Please enter either kotor or kotor2 to specify game version: "
    set /p tlkname="Please enter the filename of the XML (without extension): "
    xml2tlk --%gametype% %tlkname%.xml %tlkname%.tlk
    pause

     

    TLK_to_XML.bat XML_to_TLK.bat

    • Thanks 1

  2. Most of the various head tex columns are for the DS transitions. They start at "headtexe" and work backwards (right to left) - Evil, Very Evil, Very Very Evil, Very Very Very Evil. These equate to D1, D2, D3, and D, respectively, for vanilla player head textures. Although as applied in heads.2da all the vanilla heads only make use of two DS textures, D1 and D2, with D1 covering the first three stages and D2 only applying at the VVVE stage.

    By default Kreia should never make use of DS transitions, since she is locked at neutral alignment in her party incarnation. However, per that screenshot you posted from Visas's viewpoint, they may script a change for that scene which would apply since that's a stunt NPC, not party Kreia. I haven't looked through the TSLRCM scripts for that module as yet though, so I'm unsure of the specifics of what goes on under the hood.

    What is it exactly you are wanting to do?


  3. Type %LOCALAPPDATA% into the start menu search box, click on "Local". That should open an Explorer window at C:\Users\<username>\AppData\Local\ . There should be a KSE folder, inside there should be a kse.ini file. Open it in a text editor (Notepad, etc.). You can edit the values under Paths. For example, mine looks like this:

    [Paths]
    K1_Path=G:\\Star Wars Knights of the Old Republic\\K1
    K1_SavePath=G:\\Star Wars Knights of the Old Republic\\K1\\saves
    K2_Path=G:\\Star Wars Knights of the Old Republic\\TSL
    K2_SavePath=G:\\Star Wars Knights of the Old Republic\\TSL\\saves
    K2_SavePathCloud=undef
    TJM_Path=undef
    Steam_Path=undef

     


  4. Your REG file is not formatted correctly. I created a batch file that can automate the process for you - https://github.com/DarthParametric/KOTOR_Registry_Install_Path_Editor/releases (download the CMD file, double click it, and follow the instructions).

    Alternatively, edit your REG file with a text editor and change it to the following:

    Windows Registry Editor Version 5.00
    
    [HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\LucasArts\KotOR2]
    "Path"="C:\\Program Files (x86)\\Steam\\steamapps\\common\\Knights of the Old Republic II"

     


  5. It's possible to swap the no hands and Peragus stunt versions as well, although I'll need to create a full body version for the latter since it gets used as a placeable, as described above. That will mean if you want a custom head texture it will need to be specified in the model itself. Same with the robe texture.


  6. It's an added TSL feature that pulls the string specified in the accompanying DLG node. For example:

    TSL_Script_Param.jpg.4b566d15d94a40c19cee2e616f5a1e8b.jpg

    //:: c_global_eq
    /*
        parameter 1 = string identifier for a global number
        parameter 2 = value to compare to GetGlobalNumber(param1)
        returns TRUE if values are EQUAL.
    */
    
    #include "k_inc_debug"
    int StartingConditional()
    {
        string tString = GetScriptStringParameter();
        int tInt = GetScriptParameter( 1 );
    
        if( GetGlobalNumber(tString) == tInt )
        {
            return TRUE;
        }
        return FALSE;
    }

    It's just a convenience feature that allows global utility scripts to be used across DLGs rather than creating lots of bespoke scripts for simple things like checks of global states.

    The above example pulls both an Int parameter and a String parameter from the DLG. The functions are poorly named. They should have been called something like GetDLGStringParameter / GetDLGIntParameter instead.

    • Thanks 1

  7. Yes, that scene swaps her model due to the use of stunt animations. The sitting scene uses the animation from P_Kreia1hStunt01, but that appears to be a pure stunt model - there's no appearance row for it. I would guess they probably use Party_NPC_Kreia_Seppuku for that whole scene, which uses P_KreiDanBB. That model only has a few anims, like taking the hood on and off. Interestingly the actual seppuku anim seems like it comes from Visas. I never had her sacrifice herself in the fight against Nihilus so I wasn't aware of that.

    Edit: Try this. Extract the attached into your Override. Edit appearance.2da and in row 671 (Party_NPC_Kreia_Seppuku), and make the following changes:

    race			->		DP_AtrisRbDan
    modeltype		->		B
    normalhead		->		<insert Kreia head ID here>
    modela			->		DP_AtrisRbDan
    texa			->		DP_AtrisBA
    texaevil		->		DP_AtrisBA
    modelb			->		DP_AtrisRbDan
    texb			->		DP_AtrisBA
    texbevil		->		DP_AtrisBA
    modelc			->		DP_AtrisRbDan
    texc			->		DP_AtrisBA
    
    [...]
    
    modeln			->		DP_AtrisRbDan
    texn			->		DP_AtrisBA

    Basically replace all the existing occurrences of that model for every body type with the new DP_AtrisRbDan model and add in the texture. You'll have to check what ID number the added Kreia head uses, since that would have been added to heads.2da dynamically. Just use whatever value the Party_NPC_Kreia_Gimped row uses.

    TSL_Kreia_Atris_Robes_Seppuku.7z


  8. It would be possible to create a new stunt model for the seppuku scene that just references the original model as the supermodel. That way it will pull the stunt anims from that without needing to have any anims itself. Ditto for the stunt model used in the morgue. You'd presumably want to do the same thing with the no hands model as well (and also lop off its other hand), if you are swapping out the evil Kreia model.

    Although in regards to the morgue scene, it's going to look weird when she's adjusting a now non-existent hood.


  9. 7 minutes ago, LadyTevish said:

    I played with the stunt row a bit but didn't notice a difference on Peragus. Just after she wakes up, Kreia's outfit switches to the Atris mod.

    They use a bit of hack there. The pre-cutscene Kreia is a placeable that points to the P_KreiaStunt model. When you loot the corpse they do a switch to the character Kreia. You can see some info related to the switch here. If you wanted to replace that you'd need a full body model (i.e. body and head), since placeables can't handle multi-part models in the same way as creatures.


  10. The "Party_NPC_Kreia_Evil" appearance row is what the post-betrayal/Malachor Kreia uses. P_KreiaEvilBB is the model, although I don't recall it actually being different from the regular Kreia body model aside from the different texture. You can edit that row the same way the regular party appearance rows are.

    Note that there are also the Party_NPC_Kreia_Stunt, Party_NPC_Kreia_Seppuku, and Party_NPC_Kreia_Evil_No_Hands rows. I think the stunt one is used when she wakes up on Peragus (and possibly in other cutscenes), the seppuku one is for the cutscene on Dantooine that was cut in vanilla but restored by TSLRCM where she stabs herself, and the no hands one is for the post-fight on Malachor.

    My body models mod doesn't edit any of those rows, as noted in the readme. Most/all of them have attached stunt animations, so replacing them with models that lack those anims could cause issues.

    That KSE list is its inventory editor.


  11. Texture variant is determined by the UTI. For clothing, from KSE:

    TSL_Clothing_Variants.png.35cb88d7e810584eb77f4c771deb20b3.png

    Some of those UTIs are broken, but for the ones that work, if you equip them in-game:

    TSL_Clothing_Variants_02.jpg.54f1ab09dbb75a954581c35f36ce5fe8.jpg

    As long as you have 01, 02, 03, etc. variants for your Atris textures in the Override then those will work the same way, pointing to whatever texture variant the UTI specifies. If the texture doesn't exist, it falls back to using texture variant 01.

    As far as head textures go, typically for the base texture a head will use the texture specified in the model. However, for TSL Obsidian added the "alttexture" column to heads.2da which allows you to specify an override texture. Then for player/party heads you obviously have the Dark Side transition textures, although for Kreia those shouldn't apply since she is forcibly set to neutral. So if you are using an added Kreia head, edit heads.2da in your Override and add P_KreiaEvilH to the alttexture cell for that added row. Appearance.2da will tell you what the row number is (the number in the "normalhead" column). But if it's added by a mod it will be towards the bottom.


  12. It should also be noted that K1CP doesn't make any material changes to the structure of that quest. We edit Handon's appearance, swap out the placeable corpse for a creature-based one, force Handon to play an injured animation, and change the exit scripts for both Handon and Rickard at the end of the quest, but don't touch any of the progression/states at all.


  13. That module has scripts with special characters (+, -, etc.) in the filenames. Those get broken when using the older version of TSLPatcher. K1CP's version does not cause this issue, so I would suggest the root cause is something you installed afterwards. I routinely test that quest when beta testing a new version and haven't encountered the problem you describe when only using K1CP.


  14. Obsidian added additional bones to the rigs for most of their new models, primarily the robes. Those obviously aren't going to work without TSL-specific supermodels and animations, which JC has ported to K1. The question is whether the internal supermodel node references remain consistent between the games in the binary model. Since KBlender compiles a binary blindly, any differences will cause that model to break in-game. Because MDLEdit and MDLOps work from ASCII models that don't contain any supermodel node references, they require the presence of the binary supermodel to compile against, determining the correct node values by reading that model during compile and matching by bone name. That allows the correct nodes to be used, as long as you compile against the correct supermodel. It's highly probable that JC's ported supermodels have differing node values from TSL for the added bones, thus causing KBlender-exported models to break.

    You should be able to manually edit this in KBlender by editing the node number value in the "KOTOR Model Node" properties panel per bone. You'd have to load up the supermodels first and note all their bone node numbers, then check that against your ported models and correct where appropriate. Note that every node number needs to be unique, so any non-bone objects/meshes may also need to be adjusted to avoid conflicts.

    • Thanks 1
    • Light Side Points 1

  15. GetPCSpeaker will just grab the player controlled character that is the DLG listener. I think it's probably a holdover from NWN that doesn't really work the same in Odyssey because there is only ever one player.

    To cover all companions you'd need a function to do a check of which one you are talking to and then apply the appropriate feat/s (or whatever it is you want to do). Possibly something like GetTag(OBJECT_SELF) - assuming the companion is the DLG owner - and then a series of if statements to run through each case.