Update! Odie has now implemented directly loading GrimTools URLs into the latest version of his SaveFile editor! Huzzah! Thus, the “Download JSON” feature has been removed from GetGrimDawn. GetGrimDawn is now just a team buffs calculator, as it was originally intended to be, but y’all can get your speedy theorycrafts into the game as you desire.
Download the latest version of @Odie’s save file editor
Open it and type: make-char < your grimtools url >
Watch the magic happen
Open up the game and enjoy your new build~
High five Odie for being such a champion and for working hard!
Hmm what’s going wrong here. I was playing around with the make-char command on my Linux system using a public GrimTools link. It fails because it’s trying to create the character directory at my system root ‘/’ as just ’ /_Firefly’. If I run the program with sudo then it works fine. The program sees all my other characters in my save folder…so why isn’t it trying to save to the save folder location…
> make-char https://www.grimtools.com/calc/xZyr7wwN
Fetching character: xZyr7wwN
fetching took 0.31 seconds
Give the character a name: Firefly
Changing level to 100
Updating the following fields:
Nothing has been changed
Setting 'Shepherd's Call' to level 25
Setting 'Flame Torrent' to level 25
Setting 'Elemental Storm' to level 20
Setting 'Eldritch Fire' to level 20
Setting 'Healing Rain' to level 15
local save dir seems to be:
Saving character to
/_Firefly
Moving the directory didn't seem to work...
Copying and overwriting instead...
Caught exception: /_Firefly/player.gdc (No such file or directory)
java.io.FileNotFoundException: /_Firefly/player.gdc (No such file or directory)
at java.io.FileOutputStream.open0 (FileOutputStream.java:-2)
java.io.FileOutputStream.open (FileOutputStream.java:289)
java.io.FileOutputStream.<init> (FileOutputStream.java:230)
java.io.FileOutputStream.<init> (FileOutputStream.java:179)
clojure.java.io$fn__11546.invokeStatic (io.clj:355)
clojure.java.io/fn (io.clj:354)
clojure.lang.MultiFn.invoke (MultiFn.java:239)
clojure.java.io$copy.invokeStatic (io.clj:406)
clojure.java.io$copy.doInvoke (io.clj:391)
clojure.lang.RestFn.invoke (RestFn.java:425)
me.raynes.fs$copy.invokeStatic (fs.clj:293)
me.raynes.fs$copy.invoke (fs.clj:289)
me.raynes.fs$copy_PLUS_.invokeStatic (fs.clj:443)
me.raynes.fs$copy_PLUS_.invoke (fs.clj:439)
me.raynes.fs$copy_dir$fn__10446.invoke (fs.clj:465)
clojure.lang.AFn.applyToHelper (AFn.java:160)
clojure.lang.AFn.applyTo (AFn.java:144)
clojure.core$apply.invokeStatic (core.clj:665)
clojure.core$apply.invoke (core.clj:660)
me.raynes.fs$walk$fn__10429.invoke (fs.clj:406)
clojure.core$map$fn__5866.invoke (core.clj:2753)
clojure.lang.LazySeq.sval (LazySeq.java:42)
clojure.lang.LazySeq.seq (LazySeq.java:51)
clojure.lang.RT.seq (RT.java:535)
clojure.core$seq__5402.invokeStatic (core.clj:137)
clojure.core$dorun.invokeStatic (core.clj:3133)
clojure.core$dorun.invoke (core.clj:3133)
me.raynes.fs$copy_dir.invokeStatic (fs.clj:459)
me.raynes.fs$copy_dir.invoke (fs.clj:445)
me.raynes.fs$copy_dir_into.invokeStatic (fs.clj:473)
me.raynes.fs$copy_dir_into.invoke (fs.clj:469)
gd_edit.commands.create_character$create_character_.invokeStatic (create_character.clj:693)
gd_edit.commands.create_character$create_character_.invoke (create_character.clj:658)
gd_edit.commands.create_character$create_character.invokeStatic (create_character.clj:711)
gd_edit.commands.create_character$create_character.invoke (create_character.clj:702)
gd_edit.commands.create_character$create_character_handler.invokeStatic (create_character.clj:752)
gd_edit.commands.create_character$create_character_handler.invoke (create_character.clj:745)
gd_edit.core$fn__22420.invokeStatic (core.clj:128)
gd_edit.core/fn (core.clj:128)
gd_edit.core$repl_eval.invokeStatic (core.clj:236)
gd_edit.core$repl_eval.invoke (core.clj:194)
gd_edit.core$repl_iter.invokeStatic (core.clj:257)
gd_edit.core$repl_iter.invoke (core.clj:250)
gd_edit.core$repl$fn__22481.invoke (core.clj:292)
gd_edit.core$repl.invokeStatic (core.clj:289)
gd_edit.core$repl.invoke (core.clj:285)
gd_edit.core$start_editor.invokeStatic (core.clj:612)
gd_edit.core$start_editor.invoke (core.clj:602)
gd_edit.core$_main.invokeStatic (core.clj:660)
gd_edit.core$_main.doInvoke (core.clj:625)
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)
The GD-Edit tool is one that @Odie has made and maintains, so he would be able to give better insights into what’s going wrong with it. Odie, any ideas?
It looks like the editor wasn’t able to locate the directory where all the save files are located and is mistakenly trying to save to the linux root directory, which is obviously not the right thing to do. You’ll want to use the savedir command to set it to something reasonable.
On windows, when running steam, the editor should would point itself to: “Documents\My Games\Grim Dawn\save\main” in your user directory.