[Tool] GD save file editor

Success! That clarification was exactly what I needed. Thanks for your patience in dealing with my questions, and with all the other one’s in this thread :slight_smile:

No worries, man!

I’m actually surprised so many people are willing to stick with a commandline tool. It’s not the easiest thing to use, honestly.

x)

A new build is available.

This build slightly enhances item generation. It is now able to straight up create a new item instead of having to replace an item. The feature is invoked like so:

set <path to inventory items collection> <name of item> <optional level override>

For example:

set inv/1/items "legion warhammer of valor" 100

This will generate the named item and place it into the first sack of the loaded character. The editor will figure out a proper location to place the item. If there is no room in the inventory/sack, it will report that there isn’t enough room and abort the operation.

Hopefully, this will make item generation slightly less annoying to use!

Thanks for your efforts on this tool, very helpful.

I’m continually getting a problem when I try & generate a new item. It resets the character back to the beginning, such that loading the char runs the opening cut scene and I have to restore back to a previous save backup. Any thoughts? Cheers.

Howdy!

Please make sure you quit out of the game before editing your character with gd-edit. I’ve seen this happen when I alt-tabbed back to the editor without quitting the game.

If that isn’t the issue, I’ll need slightly more info to figure out what might have happened. Which version of gd-edit are you running? (The very first line gd-edit outputs on startup is the version info.) Which version of the game are you running? What are the command run against that character that causes this?

Lastly, you can always restore your character from the backup the editor makes whenever it writes out a save file. There should be .bakXXX files sitting next to your save file, “player.gdc”. Just rename the .bak file back to “player.gdc” and fire the game back up.

=)

Superb, thanks. I’ve been doing the edits whilst alt-tabbed away from the game in the main menu. Just tried it with the game shut down and it works a treat :slight_smile:

Oops, another issue…for some reason it’s now reset all the quests for this character as if I’d never done them. All rifts are still available, just the quests have reset. Restoring a known good backup does not fix this :rolleyes:.

Hmm… have you made a backup of the entire character directory, by any chance?

Quest progress is stored in the “levels_world001.map” directory next to a character’s “player.gdc” file. The “quests.gdd” files in those directories stores the quest progress. Are those files still there?

By the way, the editor doesn’t perform any operations on those files (read, write, delete). So, if those files became broken or corrupted, something else must have happened.

[cut & pasted]
Which version of gd-edit are you running? (The very first line gd-edit outputs on startup is the version info.) Which version of the game are you running? What are the command run against that character before this happened?

So where can I find the latest version? Can you give me a link, thank you.

Hi azaflip!

The link in the original post is always the up-to-date, latest version.

You can also run the “update” command from the editor for it to update itself.

Okay, so the editor is up to date and everything. Started to do some commands - commonly ones - and I reached the point why I wanted this editor to work - to remove my 2nd class arcanist, but all it says when I type the command is:
caught exception: java.utfl.concurrent.ExecutionException; java.io.FileNotFoundException; resources\Text_EN.arc (The system cannot find the path specified)

java.utfl.concurrent.ExecutionException; java.utfl.concurrent.ExecutionException; java.io.FileNotFoundException; resources\Txt_EN.arc (The system cannot find the path specified)
at java.utfl.concurrent.FutureTask.report (:-1)
java.utfl.concurrent.FutureTask.get (:-1)

And it goes on. (I don’t know how to copy it and it’s too long to rewrite it here).
What should I do?

Howdy!

The editor is trying to pull data from the game’s db file so it knows
What the names of the valid masteries are. You need to set your grim dawn installation directory via the “gamedir” command.

gamedir "<path to your game install here>"

Hi odie, thx for the program!!

I’m having a problem to change my leg equipment

For example:
i hit = ‘show equipment’. Then i see the leg armor position = 3.
Then i type = ‘set equipment/3 “stonehide ‘leg armor name’ of the boar” 75’

then when i hit ‘show equipment/3’ it shows the new leg armor, but when i hit ‘w’ and enter (to write), some error happens and the window closes itself. Am i doing something wrong?

my installation game dir is D:\gog games\Grim Dawn
but when I set game dir :

gamedir "D:\gog games\Grim Dawn"

error show n

D:\gog games\Grim Dawn" does not look like a game directory
Ok!

The command window will open for a couple seconds and then just close so quickly as words begin to show up that I cannot read anything it is even saying. I tried updating java but nothing has changed.

Hi there!

If the program is quitting too quickly for you to see what’s happening, you might want to start cmd.exe first, then run gd-edit manually to see what it’s saying.

On win 10, hit the windows key -> type in “cmd” -> enter. This should start a window named “Command Prompt”. Assuming you’ve downloaded the program to your downloads directory, you’ll want to first issue the following commands:

cd Downloads
gd-edit.exe

Also, please make sure you’re running JRE 1.8. You can find out which version you’re running by running

java -version

at the command prompt.

Hi silumansupra!

That’s kind of odd.
This error message comes up when it is given a directory, but it can’t find <dir>\database\database.arz and <dir>\resources\Text_En.arc. In your case, do the files

“D:\gog games\Grim Dawn\database\database.arz” and
“D:\gog games\Grim Dawn\resources\Text_En.arc”

exist?

Howdy!

It looks like I broke something. =(
Will fix soon. In the meantime, this still works:

set inv/2/items "stonehide dreeg-sect legguards of the boar" 75

Howdy!

This build fixes a bug introduced by the last build. x_x
Specifically, any time an item is “replaced”, some required data on the items go would missing. That’s uh… bad…

All fixed now! Really! x_x

Please run the “update” command to get the new build!

Ok so there are some exceptions and errors and I have updated to the most recent version of Java

Exception in thread "main" java.lang.ExceptionInInitializerError
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:270)
        at clojure.lang.RT.classForName(RT.java:2183)
        at clojure.lang.RT.classForName(RT.java:2192)
        at clojure.lang.RT.loadClassForName(RT.java:2211)
        at clojure.lang.RT.load(RT.java:445)
        at clojure.lang.RT.load(RT.java:421)
        at clojure.core$load$fn__7846.invoke(core.clj:6008)
        at clojure.core$load.invokeStatic(core.clj:6007)
        at clojure.core$load.doInvoke(core.clj:5991)
        at clojure.lang.RestFn.invoke(RestFn.java:408)
        at clojure.lang.Var.invoke(Var.java:379)
        at clojure.lang.Util.loadWithClass(Util.java:250)
        at gd_edit.core.<clinit>(Unknown Source)
Caused by: java.lang.ClassNotFoundException: java.time.Instant
        at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:270)
        at clojure.lang.RT.classForName(RT.java:2183)
        at clojure.lang.RT.classForNameNonLoading(RT.java:2196)
        at gd_edit.core$loading__7732__auto____47.invoke(core.clj:1)
        at gd_edit.core__init.load(Unknown Source)
        at gd_edit.core__init.<clinit>(Unknown Source)
        ... 14 more