6 Screenshots

About This File

This modding toolset is a work in progress and I carry no responsibility to any damage done to your game files or lost work that may occur. Some antiviruses will flag a false positive and prevent you from opening the application. If this happens you will need to configure your antivirus to allow the program to run.

Holocron Toolset is a collection of modding tools packaged in a single application aimed at streamlining modding development for KotOR/TSL, drawing inspiration from Kotor Tool and the NWN Aurora Toolset. There are editors available for nearly every file type used by the game. Also included with it is a 3D module editor and a "Map Builder" which the user can use to create new maps by rearranging existing models already used in the game.

Discord for suggestions + bug reports: https://discord.com/invite/3ME278a9tQ

If you are running Windows 7 or 8 and get a missing DLL error when opening the program you will need to download the Visual C++ Redist from Microsoft.

Toolset source
File parsing source

 


What's New in Version 2.1.2   See changelog

Released

General Changes

  • Fixed major bug that was causing most editors to load data incorrectly.
  • Like 10
  • Thanks 2
  • Light Side Points 3



User Feedback

Recommended Comments

Looking good here. I liked how it reads users'-end Override, and able to detect images format [I did put a JPG to there as part of a conditional for a mod I'm working on] among any other stuffs as well.

Think I'm going to familiarize myself with navigating through this tool for awhile, and looking forwards to see it in action.

Neat work so far! 👍

  • Like 1

Share this comment


Link to comment
Share on other sites

hey im having a great time using this tool kit. One thing i cant figure out is Whether there is a way to modify an existing NPC who are stationary by default (UTC) but make them walk randomly in a given map. Thank you

Share this comment


Link to comment
Share on other sites
On 3/19/2022 at 1:09 PM, Sith Holocron said:

Can't even open it.

Do you get any error messages or does nothing happen? What OS are you running? If you are on Windows, have you checked if your antivirus is preventing you from opening the application? Would have replied sooner, but comments aren't making it to my notifications.

 

Share this comment


Link to comment
Share on other sites

Organization of the ingame files is generally pretty dang good and better than anything that came before it.

But the navigation around the UI and how it handles windows is pretty dang annoying (on windows). I wanted to edit some 2da files and it turned out very hard to work with more than 1 file.

1. You only ever get one window on the taskbar. You can't tab through sub windows.

2. You can maximize a window, but minimizing and restoring will not give you back your maximized window.

3. Because you can't tab through windows you have no idea what's open. I literally lost a window once.

4. Selecting a row header will not select the entire row.

5. Opening multiple versions of the same file (e.g. to copy paste things from one to the other) is confusing. I have no idea which window is which file. Maybe display the full path to the file in the title. Tabs might also be a good idea(filename on tab, full path on hover?).

6. The row of the currently selected cell is not highlighted and always visible (like the column is).

7. There is no indication whether the file is changed or saved or not. Nor does it prompt for a save when closing the window or opening another file.

8. Having to go to the menu to add a new row is kind of annoying. Context menu plz?

9. Opening a .uti - I couldn't edit the description - pressing the button next to it did nothing. Plus, the text box is pitifully small.

10. No error on opening if the baseitem doesn't exist.

11. Doesn't read base items from the override (even if it does exist).

12. Having a console log where debug messages can be displayed (like an error for the above) would be a good idea.

13. Double clicking on various things doesn't do the thing you expect it to do - like opening the edit dialog for the thing, or adding the thing (more specifically in the properties tab of the item editor, but I'm sure other places too).

14. Trying to open certain items from the list silently fails. Plz error messages?

  • Like 1

Share this comment


Link to comment
Share on other sites
9 hours ago, martixy said:

Organization of the ingame files is generally pretty dang good and better than anything that came before it.

But the navigation around the UI and how it handles windows is pretty dang annoying (on windows). I wanted to edit some 2da files and it turned out very hard to work with more than 1 file.

1. You only ever get one window on the taskbar. You can't tab through sub windows.

2. You can maximize a window, but minimizing and restoring will not give you back your maximized window.

3. Because you can't tab through windows you have no idea what's open. I literally lost a window once.

4. Selecting a row header will not select the entire row.

5. Opening multiple versions of the same file (e.g. to copy paste things from one to the other) is confusing. I have no idea which window is which file. Maybe display the full path to the file in the title. Tabs might also be a good idea(filename on tab, full path on hover?).

6. The row of the currently selected cell is not highlighted and always visible (like the column is).

7. There is no indication whether the file is changed or saved or not. Nor does it prompt for a save when closing the window or opening another file.

8. Having to go to the menu to add a new row is kind of annoying. Context menu plz?

9. Opening a .uti - I couldn't edit the description - pressing the button next to it did nothing. Plus, the text box is pitifully small.

10. No error on opening if the baseitem doesn't exist.

11. Doesn't read base items from the override (even if it does exist).

12. Having a console log where debug messages can be displayed (like an error for the above) would be a good idea.

13. Double clicking on various things doesn't do the thing you expect it to do - like opening the edit dialog for the thing, or adding the thing (more specifically in the properties tab of the item editor, but I'm sure other places too).

14. Trying to open certain items from the list silently fails. Plz error messages?

Thanks for the feedback. Note that a lot of the things you have addressed have already been fixed and will be in the next update.

1. This will be fixed in the next update.

2. Not sure too sure what you mean by this but I'm assuming fixing the issue in mentioned in (1) will fix this problem.

3. See (1).

4. You can select an entire row by clicking to the left of the row label. The row label itself doesn't do this because they can be edited are are actually a seperate value to the row number/index (see visualeffects.2da). I'll admit this is not super obvious though and probably could use a bit of tweaking.

5. I agree that the full path needs to be shown somewhere. It is not shown in the title since most windows are too small to fit the full path which is why I opted to show just the filename. Perhaps it could be shown at the bottom in the status bar? Tabs could be a good idea but I'm not too sure how I would integrate it into the toolset, if it does come, it will be somewhere later down in the future.

6. I will look into changing this for the next update.

7. This is something I've been looking to implement for a while now, but is a bit more tricky to implement so I've been holding it off. It will come sometime in a future update.

8. You can add a new row with the hotkey CTRL+I. I'll make it so it actually shows this shortcut in the menus in the next update.

9. This will be fixed in the next update.

10. This will be fixed in the next update. I've already changed it so all editors will be able to handle 2DA rows that do not exist.

11. This will be fixed in the next update.

12. Errors are already dumped into a file called errorlog.txt that should be in the same directory as your exe.

13. Yes some buttons are bugged such as the one that is meant to edit the existing conversation (if that is what you are reffering to?). Its been a low priority fix. I will hide it in the next update until I fix the issue. I'll look into making double clicking an available property inserting it into the assigned properties list.

14. I'll look into adding some better error handling.

 

  • Like 1

Share this comment


Link to comment
Share on other sites
6 hours ago, Cortisol said:

~~

2. I meant - maximize the window. Then minimize - going back you expect to find the window in the last state you left it - maximized. It doesn't get restored maximized.

5. Windows are resizable. Maybe you have different habits, but I rarely use windows small enough not to be able to hold a filepath.

 

From the dozen processes it spawned I figured the program might be electron-based and I could help, but sadly I have little experience with python and 0 with PyQt. Doesn't mean I won't try, just means nothing is likely to come out of it. :)

  • Like 1

Share this comment


Link to comment
Share on other sites
7 minutes ago, martixy said:

5. Windows are resizable. Maybe you have different habits, but I rarely use windows small enough not to be able to hold a filepath.

Depends on the window you are working with. If its the 2DA Editor, sure. If its something like the UTC Editor, then its not really meant to be resized. Regardless, I'll add an option for the user to choose between filenames and filepaths in the window title.

4 minutes ago, martixy said:

From the dozen processes it spawned I figured the program might be electron-based and I could help, but sadly I have little experience with python and 0 with PyQt. Doesn't mean I won't try, just means nothing is likely to come out of it. :)

The toolset opens up a bunch of processes for loading images into the Textures tab.

 

  • Light Side Points 1

Share this comment


Link to comment
Share on other sites

Sweetness.

More feedback:

1. Was editing item. Delete key doesn't delete item properties. Right click does nothing (could be assigned to delete - maybe double right click?)

2. Every property is automatically set to "Rubat crystal" upgrade, instead of None.

3. Error when saving item:

TypeError: <lambda>() takes 0 positional arguments but 1 was given

----------------------
Traceback (most recent call last):
  File "editors\editor.py", line 140, in save
  File "editors\uti\uti_editor.py", line 141, in build
  File "pykotor\resource\formats\gff\gff_auto.py", line 104, in write_gff
  File "pykotor\resource\type.py", line 316, in _autoclose
  File "pykotor\resource\formats\gff\io_gff.py", line 187, in write
  File "pykotor\resource\formats\gff\io_gff.py", line 256, in _build_struct
  File "pykotor\resource\formats\gff\io_gff.py", line 313, in _build_field
  File "pykotor\resource\formats\gff\io_gff.py", line 270, in _build_list
  File "pykotor\resource\formats\gff\io_gff.py", line 256, in _build_struct
  File "pykotor\resource\formats\gff\io_gff.py", line 320, in _build_field
  File "pykotor\common\stream.py", line 1600, in write_uint32
struct.error: required argument is not an integer

----------------------

4. In the assigned property list, can we have indication which upgrade is required for this property?

5. The dialog for editing a property - when changing it, you have to explicitly press "Select". Just selecting it and pressing OK is not enough. Which is rather unintuitive.

6. Would love a recent opened files list. Shortcuts for open file too. Doesn't remember last directory between program launches, that'd be neat.

7. Item description text box still too small.

8. On open, the description is displayed, but if you edit it, it vanishes from the text box (possibly because descr is female, and it tries to display male descr as default).

9. When searching for strings in dialog.tlk (probably other places too) - Find is strictly case-sensitive. Can we have a toggle for case sensitivity?

Edited by martixy

Share this comment


Link to comment
Share on other sites

It seems that the executable is not working on the 2.0.4, I get this error on the Ubuntu version:

Traceback (most recent call last):
  File "__main__.py", line 15, in <module>
  File "PyInstaller/loader/pyimod03_importers.py", line 495, in exec_module
  File "mainwindow.py", line 68, in <module>
  File "PyInstaller/loader/pyimod03_importers.py", line 495, in exec_module
  File "tools/module/me_window.py", line 36, in <module>
  File "PyInstaller/loader/pyimod03_importers.py", line 495, in exec_module
  File "tools/module/me_controls.py", line 8, in <module>
ModuleNotFoundError: No module named 'jsmin'
[3994] Failed to execute script '__main__' due to unhandled exception!

 

Share this comment


Link to comment
Share on other sites

@DarthDrija Apologies! Seems I forgot to update some dependencies when building the executable. I updated the ubuntu file and it should work as expected now.

 

 

  • Thanks 1

Share this comment


Link to comment
Share on other sites

This is a really great tool!  Absolutely brilliant for finding things in specific modules.  I was wondering if you had any documentation for the tools in your 'ext' folder?  One looks like a de-ncs tool and the other a compiler, both which would be amazing if I could get them to work!  But the de-ncs throws a bunch of errors saying there are missing dlls (possibly connected with the C++ Framework?).  I'm a little uncertain whether I should download them manually and put them in the ext folder?  And the Help doesn't have any entries for those tools. ^-^

Share this comment


Link to comment
Share on other sites

Unless something has changed, that would be NCSDecomp which is from Xoreos Tools. It's not something you should be using since it is only partially functional. Use DeNCS instead, which requires Java. Although for most people that shouldn't be required too much longer, as the Community Patch team is working on decompiling all of the vanilla scripts from both games (well all the ones that can be decompiled anyway). HT should automatically load these for you in a future version.

NWNNSSComp is the KOTOR-specific port of the community Neverwinter Nights script compiler that has been in use since KOTOR modding began. You can run it via a commandline (or batch scripts), but HT is set up to use it silently to compile scripts created in its script editor, so there should be no need to run it manually.

Share this comment


Link to comment
Share on other sites

Unfortunately DeNCS is only partially decompiling the ncs code so I can't recompile it without errors.  KotorTool at least has the nss files as well, but my installation is only picking up the files I already have in my directory which isn't helpful.

I've since realized that if I try to 'open' a ncs from inside HolocronToolset that it triggers NCSDecomp (it would be good to document this somewhere), but it fails with an unspecified error (literally a blank popup) and al I get is the void main().

So I'm a bit at a loss at what to do.

It would be amazing if we could get the decompiled scripts!  Any idea on a timeline for that?

Share this comment


Link to comment
Share on other sites
20 minutes ago, LadyTevish said:

KotorTool at least has the nss files as well

KTool isn't doing anything special. All you are seeing is the included source for the global scripts that are part of the game files. HT can show you that as well if you open scripts.bif with it (i.e. under "Scripts" in the main window once you choose the game version). None of the module scripts include source. They are only available as binary NCS.

25 minutes ago, LadyTevish said:

It would be amazing if we could get the decompiled scripts!  Any idea on a timeline for that?

You can check the Community Patch repo here - https://github.com/KOTORCommunityPatches/Vanilla_KOTOR_Script_Source - although note that it is still a work in progress.

@JCarter426 managed to automate the conversion process and process all the scripts for both games (TSLRCM scripts are still to-do). For K1, the results were (ignoring global scripts) 98 failed to decompile, 686 reported a bytecode mismatch on recompile, 48 reported could not recompile, and 577 required a hotfix to bypass the GetStringByStrRef issue. For vanilla TSL (again only looking at module scripts), 53 failed to decompile, 251 reported a bytecode mismatch on recompile, and 11 reported could not recompile.

At the time of writing there are still 71 non-decompilable K1 scripts that are awaiting manual reconstruction. I haven't looked at the could not recompile ones yet, but off the top of my head I recall a number of scripts where DeNCS mangled switch statements, so I suspect the majority will be instances of that. I haven't examined bytecode mismatches either, so I don't have any ideas as yet to potential causes there.

As to when pulling in the NSS will be integrated into HT, I'd suggest you keep an eye on its Discord channel - https://discord.com/invite/3ME278a9tQ

  • Like 1

Share this comment


Link to comment
Share on other sites

Hmm, okay.  Unfortunately it looks like most of the scripts I need are the module scripts.  I can partially decompile them with DeNCS but not fully.  And I'm not quite brave enough to try a command line Python decompiler.  I suppose if I'm going to attempt to learn how the application code works, I can start with the Core scripts.  I've been able to do some coding using nss scripts included in various mods but that's not always possible either.

I'll check out the Discord though, it would be really great if we could get them. :)

Share this comment


Link to comment
Share on other sites

You can get almost all the module scripts from the Github link I posted above, unless you are looking for TSLRCM-specific scripts. For K1, ~99.4% of module scripts are available (just shy of 10,800 scripts currently).

Share this comment


Link to comment
Share on other sites