[Tool] Grim Dawn Devotion Picker

There isn’t an explicit language switcher (I could add that if there’s desire), it looks at the language preferences of the browser. If Russian is at the top, this is what I see:

wrong reply, must be for denis

Sorry, yes, that was meant for Denis. I’m looking into what you both posted and found that ~26 strings across the app fell through to visible replacements that were falling through to the English defaults, but I think I can get the correct i18n values for those.

EDIT: done - plus added a language selector in the upper right

1 Like

@tednaleid
I worked with planner and notice incorrect Chaos affinity counter.

This pevotion map says 8 chaos points, but actually it 9 (GT for compare)
https://tednaleid.github.io/grimdawn-devotions/#p=55&s=AAAAAAIHAAAAAAAAwAPAwwMAAHgAAAAAAAAAAAD8AAAAAAAAAPABAACAHwAAAAAAAAAA-AEAAAAAXwAAAAAA4Ac

If you take 1 point from Dying god and place in red crossroad, it still says 8, while it will be 10 in real. Other affinity counts correct in this place.

1 Like

Ah! Good catch, thanks for the example link and explanation. This is a bug that I’ll look at fixing.

Right now, it’s capping the display of the “have” counter to the maximum any constellation ever requires (i.e. no constellation needs more than 8 chaos). But that cap really doesn’t make any sense and is confusing.

Fixed! Your url now shows a “have” of 9 chaos. removing a point from Dying God and putting it into the red crossroads bumps it to 10.

It’s no longer capping the “have” at the maximum of any constellation’s “need”.

Thanks again for the report, let me know if you see any other issues.

1 Like

Hello, is there any hope that an offline version of this tool will be released?

I don’t have plans to release anything like a downloadable install version of it, but all of the source code is on github (GitHub - tednaleid/grimdawn-devotions · GitHub) and running it locally is pretty simple if you have a little experience on the command line (or have claude help with that). It doesn’t have any server-side components, it’s all html/css/javascript running in the browser, so when you’ve got it running, it should continue to run in your browser if you lose an internet connection.

2 Likes

Okay, thank you for your reply. I’ll ask a knowledgeable friend to help me with it. :blush:

2 Likes

Just published a version that updates it to the 1.3.0.0 (Fangs of Asterkarn release).

I found that there were a couple of missing changes to devotions from the patch notes that were released (nothing too huge). Here’s the full list that my script found during the update:

meta: v1.2.1.x (build 19149150) -> v1.3.0.0 (build 24346246)
  STRUCTURE: stable (109 constellations) OK
  TUNING CHANGES (40 across 24 constellations):
    Abomination:
      star7 [power]: offensiveSlowPoisonMin 312 -> 472
      star7 [power]: offensiveTotalDamageReductionPercentDurationMin none -> 5
      star7 [power]: offensiveTotalDamageReductionPercentMin none -> 16
    Affliction:
      star3: Acid/Poison Retaliation % none -> 40
      star5: Acid/Poison Retaliation % none -> 40
    Alladrah's Phoenix:
      star3: Crit Damage % 10 -> 8
    Autumn Boar:
      star4: Total Retaliation Damage % 60 -> 40
    Berserker:
      star2: Crit Damage % 5 -> 8
    Chariot of the Dead:
      star6 [power]: skillLifeBonus 1550 -> none
    Dryad:
      star4 [power]: Cooldown (s) 2.7 -> 2.2
    Dying God:
      star5 (pet): Crit Damage % 10 -> 6
    Harpy:
      star3: Crit Damage % 8 -> 5
    Hawk:
      star1: Crit Damage % 8 -> 5
      star1 (pet): Crit Damage % 8 -> 5
    Hyrian, Guardian of the Celestial Gates:
      star5: Total Retaliation Damage % 80 -> 50
    Korvaak, the Eldritch Sun:
      star5: Crit Damage % 8 -> 5
      star5 (pet): Crit Damage % 8 -> 5
    Kraken:
      star0: Total Retaliation Damage % 100 -> 80
      star3: Total Retaliation Damage % 140 -> 100
    Light of Empyrion:
      star6 [power]: offensiveTotalDamageReductionPercentMin 24 -> 26
    Oklaine's Lantern:
      star2: Defensive Ability none -> 20
      star2: Offensive Ability 15 -> 25
      star2: Crit Damage % 5 -> none
    Panther:
      star3: Crit Damage % 6 -> 5
      star3 (pet): Crit Damage % 8 -> 5
    Rattosh, the Veilwarden:
      star5 [power]: defensiveSlowLifeLeach -10 -> -8
    Rhowan's Scepter:
      star3: Total Retaliation Damage % 60 -> 50
      star5: Total Retaliation Damage % 60 -> 50
    Shieldmaiden:
      star1: Physical Retaliation % none -> 40
      star1: Total Retaliation Damage % 60 -> 40
    Spear of the Heavens:
      star5 [power]: offensiveSlowLightningMin 200 -> 355
    Targo the Builder:
      star4: Total Retaliation Damage % 90 -> 60
      star6 [power]: retaliationPhysicalMin 525 -> 730
    Typhos, the Jailor of Souls:
      star4: Crit Damage % 10 -> 6
      star4 (pet): Crit Damage % 15 -> 10
      star5: Total Speed % 4 -> 6
    Unknown Soldier:
      star5: Crit Damage % 12 -> 6
      star6 [power/pet]: attack_stats {'offensiveLifeLeechMin': 25, 'offensivePierceMax': 260, 'offensivePierceMin': 205, 'offensiveSlowBleedingDurationMin': 2, 'offensiveSlowBleedingMin': 200, 'offensiveTotalDamageReductionPercentDurationMin': 2, 'offensiveTotalDamageReductionPercentMin': 15} -> {'offensiveLifeLeechMin': 25, 'offensivePierceMax': 260, 'offensivePierceMin': 205, 'offensiveSlowBleedingDurationMin': 2, 'offensiveSlowBleedingMin': 200, 'offensiveTotalDamageReductionPercentDurationMin': 2, 'offensiveTotalDamageReductionPercentMin': 22}
    Vire, the Stone Matron:
      star5 [power]: offensiveSlowPhysicalMin 270 -> 320
      star5 [power]: retaliationDamagePct 24 -> 30
  NOTE: celestial-power stats are max-rank; a scali max is not shown.

I also added a new page that can calculate Resistance Reduction sources (abilities, devotions, and items). You can get to it from the devotion planner by clicking on the hamburger menu in the upper right and choosing “Resistance Reduction”. Here’s a a direct link: Grim Dawn Resistance Reduction

This is still very beta and I’m working on the presentation and ensuring it has correct data, but here’s a sample url where I’ve selected to filter on “Cold” abilities for the devotions and skills I’m currently using on my level 100 Infiltrator (nightblade + inquisitor). Just click on the rows and the display on the right will update with the current level of resistance reduction you’ve gotten. It defaults to an enemy with 100% resist.


Items are in it too, but I haven’t spent as much time on that part of it.

I’m interested to hear if I’ve got the math right in how it’s calculating (especially in the part where the multiplicative value, like Viper comes in).

3 Likes

Great work with this one, fantastic tool!

1 Like

Hi @tednaleid I love your devo picker, it’s so much easier to use than the GT one. Being able to work backwards from T3 devos and toggling the 55 points limit are awesome features. Appreciate it thanks!

Got a little bit of feedback: I noticed that your tool says % Total Damage when in it’s supposed to be % All Damage, for example on the Owl constellation. There is a big difference between the two, All Damage means every damage type including damage over time, Total Damage however is usually a skill modifier on an item that increases the total damage of that skill, this doesn’t exist on devotions. You might wanna change the wording here so it matches the wording in-game and on GT to avoid confusion.

Also got a feature request, it would be nice to have a search field like the game and GT has, so you can type in stuff to highlight nodes.

Keep up the great work!

2 Likes

Thanks! I’m glad you’re enjoying it, thanks for letting me know and for the suggestions.

I’ve fixed up the Total/All Damage wording and also implemented a search field. It looks across all rendered text and matches at the constellation level will highlight the constellation, stars will use the existing highlighting we had from clicking a tag.

Here’s an example search for the text “rumor” that highlights both the Murmur constellation (because it also has “rumor” in the name and description) as well as the Rumor celestial power on that constellation: Grim Dawn Devotion Planner

I’d thought about implementing this before, but making it work for other languages was something that I didn’t want to tackle yet. Your post prompted me to finally put the work in, so it should also work in other languages (but my testing there is not as strong, hopefully it’s what people expect).

4 Likes

Added the ability to import the devotion map from grimtools. Just paste in the grimtools character url (or just the “slug” at the end) and it imports automatically.

So this grimtools build for a Mystic: Mystic, Level 100 (GD 1.3.0.0) - Grim Dawn Build Calculator gets loaded into the devotion picker if you paste the url in the textbox on the right:

Here’s a direct link to that imported build (which links back to the original grimtools build).

4 Likes

I have a small question: I don’t understand why it shows 54 used but doesn’t “allow” to spend the last point e.g. on the crossroads?


https://tednaleid.github.io/grimdawn-devotions/#p=55&s=AAAAgAQAAMADwAMAwAMAAMADAAAAAAAAAIA_AAAAwA8A4AcAAAAAAPADAAA_AD4&b=EAAAAAAAAAAAABhGwOYBAAAAAAAAAAAAAAAY

Thanks again for this awesome planning tool!

1 Like

Thanks for the detailed bug report! That was an edge case in the solver that is now fixed. The same link should now allow you to pick any reachable single star (crossroads or the first star of a constellation that has the requirements satisfied)

3 Likes

Noticed another wording error that can cause confusion.

Some skills say “Chance on Hit” when it should be “Chance when Hit”, which is a huge difference.
image
image

This affects Light of Empyrion, Nature’s Guardian, Healing Rain, Fist of Vire, Spear of Heavens, Wayward Soul, Black Blood of Yugol, Hyrian’s Glare, Giant’s Blood, Fetid Pool, Arcane Barrier, and also Messenger of War which says “on Melee hit” instead of “when hit by Melee attacks”.

2 Likes

Updated! Thanks for the report. Let me know if you see anything else
CleanShot 2026-08-15 at 19.02.29

Full list of what was fixed:

  • When Hit (was “Chance on Hit”, now “Chance when Hit”): Light of Empyrion,
    Nature’s Guardians (Ishtak), Healing Rain (Tree of Life), Fist of Vire, Spear of the Heavens, Wayward Soul (Chariot of the Dead), Black Blood of Yugol, Hyrian’s Glare, Giant’s Blood (Behemoth), Fetid Pool (Affliction), Arcane Barrier (Crab), Inspiration (Bard’s Harp), Tip the Scales (Scales of Ulcama)
  • When Hit by Melee Attacks (was “on Melee Hit”): Messenger of War
  • On Critical Attack (was “on Critical Hit”; not in the report, same bug): Phoenix Fire (Alladrah’s Phoenix), Blizzard (Amatok), Blades of Wrath (Assassin), Assassin’s Mark (Assassin’s Blade), Eye of Korvaak, Blind Fury (Oleron), Reckless Tempest (Tempest), Hand of Ultos, Living Shadow (Unknown Soldier)
1 Like

[Resolved :white_check_mark: ]

Thanks for the quick resolution. I have another case I don’t understand:

The Affinity calculation shows that I have everything but 2 Order.
Why can I put points into Lion but not e.g. into Dryad?


https://tednaleid.github.io/grimdawn-devotions/#p=55&s=AAAAgAQAAMADwAMAAAAAAMADAAAAAAAAAIA_AAAAwA8A4AcAAAAAAPADAAA_AD4&b=EAAAAAAAAAAAABhGwOYBAAAAAAAAAAAAAAAY

EDIT: Could it be, because it’s not possible to build it with the Dryad because it has 5 points instead of 3 with the Lion? So it would work only theoretically but not when built incrementally.
→ I didn’t know that and your tool taught it very well :slight_smile: .

Thanks again for the great tool!