Nox is one of my favorite video games of all time. It's a lovingly handcrafted ARPG from the early 2000s made by Westwood Studios at the peak of their golden era. I play through it at least once a year for nostalgia's sake.
Back in its heyday, clever folk wrote trainers for Nox that could change your character's stats, inventory, spells, etc. while you were playing the game. I always wondered if it could be possible to edit the player save files to achieve similar results.
Thanks to the groundbreaking work of several Nox community members, the encryption scheme for Nox player save files was discovered and some folk wrote a few utilities to decrypt the files. Nox community forum user panic/happysoft went a step further and created a tool they called PlrFileEditor (originally announced on the Nox Community Forum) that allowed for editing of the simple multiplayer Arena version of the player save files via decoding basic character data into a human-readable and editable format.
I decided to try my hand at picking up where they left off and seeing if I could figure out enough about the Solo story and Quest (single player and multiplayer) player save data file formats to be able to edit the contents of them as well. Thankfully I also discovered the OpenNox project, an amazing effort to decompile and extend the capabilities of the base Nox game engine. That let me reverse engineer the whole save file format, byte by byte, until after an entire summer buried in code and hex editors I had figured out how all of the key data in the player save files was stored.
Armed with that knowledge, I expanded upon the PlrFileEditor tool to create NoxPlrExporter, a tool that allows for decryption and decoding of a full Nox player save file into human-readable and editable text. Like PlrFileEditor, NoxPlrExporter can also re-encode and re-encrypt the save data into the original PLR format so that the edited save data can be used in Nox. Among other things, the tool allows for editing of:
More data is decoded and shown (hotbar configuration, active player enchantments, story quest status, etc.), but much of it is either not worth changing or isn't safe to edit.
The tool works well enough to reliably decode and re-encode player data for all game types. I've used it to have all kinds of fun in both the story mode and in solo Quest games. It is written in C++ (PlrFileEditor was written in C++ and it was easier to use that as a foundation) and uses CMake with the Ninja build system to compile.
NoxPlrExporter is still in a beta state, as right now it dumps the decoded PLR files into INI-like text files that are left as an exercise for the user to edit. At some point I would love to tweak the decoded output format a bit and implement a simple GUI to help smooth over the editing process, but for now the tool comes with enough documentation that hand editing of the save data is possible with only a mild sense of adventure required.
If you are interested in trying it out for yourself, here are the source files and necessary data files to compile and run the program: Download NoxPlrExporter Source
Check out the README.md file in the extracted archive for more details on how to build and run the program.