[Tool] GD save file editor

I’ll try looking into this today. =)

Hi all!

Somehow, I introduced something that causes the editor to take up to a minute to start up. That’s uh… been fixed. :o

Please grab the latest as usual.

Thank You, console works, but after loading character:

Please choose a character to load:
1) _T0 (local save)
2) _T1 (local save)

> 2

Loading from:
    C:\Users\Admin\Documents\My Games\Grim Dawn\save\main\_T1\player.gdc
Caught exception: nil
java.lang.NegativeArraySizeException: null
 at clojure.lang.Numbers.byte_array (Numbers.java:1319)
    gd_edit.structure$fn__116.invokeStatic (structure.clj:326)
    gd_edit.structure/fn (structure.clj:306)
    clojure.lang.MultiFn.invoke (MultiFn.java:243)
    gd_edit.structure$fn__96.invokeStatic (structure.clj:173)
    gd_edit.structure/fn (structure.clj:144)
    clojure.lang.MultiFn.invoke (MultiFn.java:243)
    gd_edit.structure$read_struct.invokeStatic (structure.clj:125)
    gd_edit.structure$read_struct.doInvoke (structure.clj:103)
    clojure.lang.RestFn.invoke (RestFn.java:442)
    gd_edit.gdc_reader$read_block3$fn__13559.invoke (gdc_reader.clj:175)
    clojure.lang.LongRange.reduce (LongRange.java:233)
    clojure.core$reduce.invokeStatic (core.clj:6703)
    clojure.core$reduce.invoke (core.clj:6686)
    gd_edit.gdc_reader$read_block3.invokeStatic (gdc_reader.clj:174)
    gd_edit.gdc_reader$read_block3.invoke (gdc_reader.clj:158)
    gd_edit.structure$read_struct.invokeStatic (structure.clj:124)
    gd_edit.structure$read_struct.doInvoke (structure.clj:103)
    clojure.lang.RestFn.invoke (RestFn.java:442)
    gd_edit.gdc_reader$read_block.invokeStatic (gdc_reader.clj:1039)
    gd_edit.gdc_reader$read_block.invoke (gdc_reader.clj:1008)
    gd_edit.gdc_reader$load_character_file$fn__13719.invoke (gdc_reader.clj:1144)
    gd_edit.gdc_reader$load_character_file.invokeStatic (gdc_reader.clj:1140)
    gd_edit.gdc_reader$load_character_file.invoke (gdc_reader.clj:1101)
    gd_edit.command_handlers$load_character_file.invokeStatic (command_handlers.clj:769)
    gd_edit.command_handlers$load_character_file.invoke (command_handlers.clj:765)
    gd_edit.command_handlers$character_selection_screen$fn__16362$fn__16366.invoke (command_handlers.clj:321)
    gd_edit.core$repl_eval.invokeStatic (core.clj:182)
    gd_edit.core$repl_eval.invoke (core.clj:152)
    gd_edit.core$repl_iter.invokeStatic (core.clj:214)
    gd_edit.core$repl_iter.invoke (core.clj:208)
    gd_edit.core$repl$fn__17245.invoke (core.clj:222)
    gd_edit.core$repl.invokeStatic (core.clj:221)
    gd_edit.core$repl.invoke (core.clj:217)
    gd_edit.core$start_editor.invokeStatic (core.clj:519)
    gd_edit.core$start_editor.invoke (core.clj:511)
    gd_edit.core$_main.invokeStatic (core.clj:546)
    gd_edit.core$_main.doInvoke (core.clj:528)
    clojure.lang.RestFn.invoke (RestFn.java:397)
    clojure.lang.AFn.applyToHelper (AFn.java:152)
    clojure.lang.RestFn.applyTo (RestFn.java:132)
    gd_edit.core.main (:-1)

Newly created character :rolleyes:

I seem to remember you need to drop the character into the game at least once. There are some pieces of data for the character file that does not get filled in unless it’s been in the game.

But, yeah, it’s pretty clumsy for the editor to crash this way. I’ll look into getting this fixed.

Alrighty. The editor can now load fresh characters that haven’t been in the game without throwing up.

Yay!

I just started playing again after almost 7 months, and had to reinstall the game, and gd-edit. I get this error message. Any help would be appreciated.

Character: Fibonacci
r) reload
w) write

> set inv/0/items “gollus ring”

Caught exception: Map failed
java.io.IOException: Map failed
at sun.nio.ch.FileChannelImpl.map (:-1)
gd_edit.utils$mmap.invokeStatic (utils.clj:34)
gd_edit.utils$mmap.invoke (utils.clj:27)
gd_edit.arc_reader$make_load_tex_fn.invokeStatic (arc_reader.clj:291)
gd_edit.arc_reader$make_load_tex_fn.invoke (arc_reader.clj:288)
gd_edit.inventory$make_dims_lookup_fn.invokeStatic (inventory.clj:55)
gd_edit.inventory$make_dims_lookup_fn.invoke (inventory.clj:48)
clojure.core$map$fn__6881.invoke (core.clj:2726)
clojure.lang.LazySeq.sval (LazySeq.java:40)
clojure.lang.LazySeq.seq (LazySeq.java:49)
clojure.lang.RT.seq (RT.java:525)
clojure.core$seq__6422.invokeStatic (core.clj:137)
clojure.core$some.invokeStatic (core.clj:2673)
clojure.core$some.invoke (core.clj:2665)
gd_edit.inventory$texture_slot_dims.invokeStatic (inventory.clj:90)
gd_edit.inventory$texture_slot_dims.invoke (inventory.clj:87)
gd_edit.inventory$item__GT_dims.invokeStatic (inventory.clj:158)
gd_edit.inventory$item__GT_dims.invoke (inventory.clj:148)
gd_edit.inventory$fit_new_item.invokeStatic (inventory.clj:202)
gd_edit.inventory$fit_new_item.invoke (inventory.clj:197)
gd_edit.commands.item$place_item_in_inventory_BANG_.invokeStatic (item.clj:481)
gd_edit.commands.item$place_item_in_inventory_BANG_.invoke (item.clj:467)
gd_edit.commands.item$set_item_handler.invokeStatic (item.clj:539)
gd_edit.commands.item$set_item_handler.invoke (item.clj:515)
gd_edit.command_handlers$set_handler.invokeStatic (command_handlers.clj:679)
gd_edit.command_handlers$set_handler.invoke (command_handlers.clj:633)
gd_edit.core$fn__17159.invokeStatic (core.clj:65)
gd_edit.core/fn (core.clj:65)
gd_edit.core$repl_eval.invokeStatic (core.clj:194)
gd_edit.core$repl_eval.invoke (core.clj:152)
gd_edit.core$repl_iter.invokeStatic (core.clj:214)
gd_edit.core$repl_iter.invoke (core.clj:208)
gd_edit.core$repl$fn__17245.invoke (core.clj:222)
gd_edit.core$repl.invokeStatic (core.clj:221)
gd_edit.core$repl.invoke (core.clj:217)
gd_edit.core$start_editor.invokeStatic (core.clj:519)
gd_edit.core$start_editor.invoke (core.clj:511)
gd_edit.core$_main.invokeStatic (core.clj:546)
gd_edit.core$_main.doInvoke (core.clj:528)
clojure.lang.RestFn.invoke (RestFn.java:397)
clojure.lang.AFn.applyToHelper (AFn.java:152)
clojure.lang.RestFn.applyTo (RestFn.java:132)
gd_edit.core.main (:-1)

Howdy!

Yeah, I’ll look into this later today. Do you mind sending me a copy of your character? This looks like it’s trying to figure out the size of various items in your inventory when it failed. But without your save file, it’s difficult to figure out which item caused this failure. :frowning:

Hi there…

After taking a closer look at this. This appears to be caused by the editor not being able lookup the dimensions of Gollus’ Ring that you were trying to create.

The most direct reason is that the editor isn’t able to locate the texture file from your game installation for some reason. You might want to run the “diag” command to make sure the editor can locate some of the files it needs to function correctly.

> diag
:heavy_check_mark: JVM version: 1.8.0_202-b08
:heavy_check_mark: Game directory exists
:heavy_check_mark: File exists: <path>/steamapps/common/Grim Dawn/database/database.arz
:heavy_check_mark: File exists: <path>/steamapps/common/Grim Dawn/resources/Text_EN.arc
:heavy_check_mark: File exists: <path>/steamapps/common/Grim Dawn/resources/Items.arc

Hi all!

The editor now check to see if it has been fully configured before item creation.

Item creation requires a few different pieces of data from the game installation. The editor used to just throw out a cryptic looking exception when the required files could not be found. This version now provides more useful information when this happens.

Hi, does the GDedit tool dedect any of the new weapons and equipment that Forgotten Gods adds to the game? I am trying to add a weapon to my character through the tool and its saying that the item can’t be created. When I go to edit the weapon-sets/0 and type in: set weapon-sets/0/items/0 Mythicalnadaan’sreach 94 it says that the item could not be created. I have even tried to add it to my inventory via set inventory/0/items/0 Mythicalnadaan’sreach 94 and it says the same thing.

Gimme a day or so to look into this.

The editor reads the game’s db files directly, so it should always have up-to-date item definitions from the game. What might be happening is that FG adds additional db files that the editor isn’t yet reading from.

Though I haven’t had the chance to try generating the item yet, you might also want to try:


set inv/0/items “mythical nadaan’s reach”

The name of the item needs to be in quotes. It also needs some kind of spacing between words so the editor can figure out what you’re looking for. If that still doesn’t work, then it’s clear that the editor needs to be updated.

Hi all,

The editor now loads database entries from the FG DLC if found. This means you should now be able to construct items from the expansion.

=)

Hello there !

Thanks for the editor ! I just want to use it to change my character names, but for some reason it doesn’t really work the way I want it to.

GD accepts spaces in character names, the utility doesn’t (it truncates the string at the first space). Is it intended behavior ?

Also, for some reason, the only name I want to switch to causes the character not to show up in game. I’m quoting the above post because I got the character to show up that way, albeit with a name that wasn’t the one I wanted. I’d like to rename a character “Ethyls”, but it won’t show up. However, if I put a random name that’s not “Ethyls”, it does. Any idea ?

Generally, ifyiure trying to tell the editor about a string that contains a space, youll have to put the string in quotes. In your specific case, the rename would have to look something like:

set character-name “Captain Amazing”

Great, thanks !

I’ll try to solve the other issue.

Tried searching through the thread and could not find an answer (or I missed it). Is there a way to max out a characters devotion points?

I want to test a few chars but making them level 100 but I don’t want to run around to 55 shrines. Is there a command to add all 55 devotion points?

Howdy!

I’m not by my computer at the moment so I can’t the check the exact name of the field. I’d gather it’s something like:

“set devotion-points 55”

Or something similar. To have the editor search through the fields that it knows about with the word devotion in there, you can try:

“show devotion”

Also, the editor usually isn’t too picky about the spelling. You can usually get away with entering just part of the name of the field you’re asking to have changed. As long as the editor thinks it can uniquely identify a single field, it’ll change it for you.

Hi Odie!

Is there a way to add specific itemes with suffixes and prefixes we want. For example i tried adding a decaying two hand axe pf alacrity but din’t work.

Howdy!

Yes, it’s possible, but I’m afraid you’ll have to get a bit more specific about which two handed axe you’d like.

For example, this worked for me:


> set inv/2/items "decaying steel war axe of alacrity"

Item placed in inventory-sacks/2/inventory-items/11

Decaying Steel War Axe of Alacrity
...<omitted>...