It seems that you're using an outdated browser. Some things may not work as they should (or don't work at all).
We suggest you upgrade newer and better browser like: Chrome, Firefox, Internet Explorer or Opera

×
First of all, two points: 1) I read the forum "Code of Conduct" and other posts here, and my impression is that this is OK to post. If I'm mistaken, please let me know. Code of conduct FAQ says "We don't tolerate... Posting cheats, hacks, game exploits, and game spoilers - unless you clearly note that this is what your post is about at the top of it." (emphasis mine. Consider this a clear note :-) Remember this clarity later when I start to ramble.

2) Dex keeps her save data in standard formats: compared to the thread about soundtrack audio extraction to recover missing content in this same forum, you don't need any exotic libraries or knowledge of 3rd party or proprietary formats. Simply, you only need to know what 1) base64, 2) zlib / deflate compression, 3) and json are, as well as how to edit text files (such as using vi, nano, or emacs). Utilities to work with them are available standard on many Linux systems: if you have Linux you probably have everything you need to cheese the game royally. The knowledge here should not disturb the game developer, Unity, or any other entity, for it to be known.

If you don't want to cheese the game royally, you could also use this knowledge to view your stats from outside of the game: the save format is ultimately javascript styled text, not unlabeled bytes the meaning of which is esoteric without knowing how the program was coded. On with it!

The first step is loading Dex and creating a save file, if you don't already have a save. I bought this game yesterday (happy birthday GOG! Still looking forward to Cyberpunk!!) I tested this process after playing the first scene, jumping rooftops, and taking the elevator down to the sewer. Your mileage may vary trying to make a save at an earlier point: later shouldn't be an issue.

Once you have the save, quit the game and go to the location of your save data. There are other threads here of how to find that, but for me it's "~/.config/unity3d/Dreadlocks Ltd/Dex/" and the data is in the "prefs" file (I am using Linux). Make a backup of "prefs" in case you create corruption, then open prefs with your text editor.

Search for the text "save_slot_0" with or without quotes. If you saved to a different slot, go to that number of slot, starting the count from 0. Select and copy only the inner content of that pref element to a separate file to make the next steps easier. That pref element holds the actual save data, in base64'd, base64'd, zlib compressed form.

That's not a typo: if you base64 decode the content of your "save_slot_0" pref element, you get second level of base64 encoded data. base64 decoding that, then doing a zlib decompress, you finally get the JSON text of the save.

Once you have that, search the JSON for "dex_inventory_money". Your attributes and other fun things to try to modify are around the same location of the data: in my first attempt, I also increased my charisma, lockpick, barter (and hacking :-) skills to 10. Maybe it was too early in the game to add hacking skill, since it's still greyed out in my stats page in the game, but everything else was applied. I tested picking the lock of the first locked door you can find in the sewers, then hacking into the computer in that room, and it worked (I think that door requires a lockpick level of 2, from my earlier attempt). It was fun to go into the computer before the game explained how any of it worked.

I haven't picked up any items I want to clone yet, such as two rolls of toilet paper xD. But this is a digression.

After you edit the JSON to become outrageously overpowered (or utterly mundane: go back to level 1 if you want a challenge I guess. Become "1 stat man", The Underdog!), you have to zlib compress the JSON, then base64 encode it, then base64 encode again. Matryoshka doll and double bass music intensifies. Put that encoded data back into your save_slot_0 pref in the "prefs" file and launch the game. Load the save and look in your inventory to see the improved (or nerf'd) stats.

Here's the commands, keeping in mind "save_slot_0" is the file I copied the contents of that perf element into:

Dex$ base64 -d - < save_slot_0 |base64 -d - |pigz -zd - > save_slot_0.json;

Then edit the json file to your liking and re-encode:

Dex$ pigz -mnz7 < save_slot_0.json.mod |base64 -w0 - |base64 -w0 - > save_slot_0_mod;

Then copy the contents of "save_slot_0_mod" back into your "save_slot_0" perf in the "perfs" file. I found that the default level of zlib compression ("-6") was slightly worse than the original compression ratio. The "-7" flag to pigz is slightly better. The game must do something in between, compared to this utility. Shrug.

Oddly the hardest part of the whole process for me was figuring out a command to do the zlib compression: I ended up using a utility created by the author of zlib called "pigz", which Fedora has as a normal package, but you could also use "openssl zlib", or perl's Compress::Zlib module, or do it in Rust or Go or something trendy if you want.

There's also a save_slot_0_info pref which is only one base64 encoding level deep: if you decode the "_info" for the corresponding slot, you can view or edit the name, a timestamp, and a few other fields.

Let me know if you have ideas or want me to clarify any of the steps. I hope that helps someone. Happy hacking.