[Tool] GDAutocaster - play 🎹 builds with ease, autocasting of skills, combos, faster / automatic camera, autohiding of items, centered Inquisitor Seal and more for all games!

@CaiusMartius @GaeanC @Dlightfull @Tennaen @Ed-Zero @TheBigHam @RoninwarAC @Kanjineo @vael @RedPriest

@Caspiaan @mrchops @Vaexar @FangedBeauty @El_Principe @Ungoliath @iWonder @Socrhate @Hagritty @Snozzleberry

OLD DOCUMENTATION (BEFORE CHANGING NAMING CONVENTION).

Documentation - excessive config explained

The program reads command line / shortcut arguments
GDAutocaster.exe config.ini     (reads config.ini and skips file selection dialog)
GDAutocaster.exe config.ini whatever     (reads config.ini, skips file selection dialog, starts autocasting on toggle automatically)

All sections and individual settings in this extensive config are optional.

[general]
game_window_id=ahk_exe Grim Dawn.exe
suspend_key=Tab

[autocasting]
master_toggle=`
pressed_buttons=0,1,2,3,4,5,6,7,8,9

[combo presses]
delay=300

combo1=j:7,3,6

combo2=h:t,1,2,t
delay2=2000
initial_delay2=true

combo3=Space:1,1,1,1,1
delay3=2000
stop_on_release3=true

combo4=RButton:1,2
delay4=200
double_press4=true
double_press4_time_gap=300

combo5=CapsLock:m
key_native_function5=false

[periodic casts]
delay=100

cast1=RButton:0,9
delay1=200

cast2=Space:2
initial_delay2=500

cast3=LButton:1
delay3=500
double_press3=true
double_press3_time_gap=300

cast4=Shift,A:1

[combo holds]
combo1=LButton:7
delay1=150
double_press1=true
double_press1_time_gap=300

combo2=RButton:6
delay2=0

[center casts]
cast1=RButton:7,6
initial_delay=0
delay=200
delay_after_cursor=40
closer_not_center=false

[clicker]
button=Alt
X=1270
Y=230

[hide items]
hiding_buttons=RButton
ingame_hide_button=Space
hide_duration=3000

[camera]
angle=60
counter_clockwise=a
clockwise=d
rotation_key=k
delay=40

[2]
toggle_key=2
delay=1000

[6]
toggle_key=6
not_hold_keys=LButton,RButton
delay=500

.
[general] - settings of the program

[general]
game_window_id=ahk_exe Grim Dawn.exe
suspend_key=Tab
  • game_window_id [optional] {ahk_exe Grim Dawn.exe by default}

    • the default value is ahk_exe Grim Dawn.exe
    • you need to change it if you’d like to use the program in other games
    • can also identify by just window’s name: game_window_id=Grim Dawn
  • suspend_key [optional]

    • turns off/on all the hotkeys except itself
    • doesn’t turn off/on autocasting feature below (master_toggle hotkey is for it [is turned off/on by suspend_key)
     [9]
     toggle_key=y
     delay=1000
    

.
[autocasting] - these settings only affect Autocasting on toggle

[autocasting]
master_toggle=`
pressed_buttons=0,1,2,3,4,5,6,7,8,9

This is only affects these types of autocasts:

[9]
 toggle_key=9
 delay=1000
  • master_toggle [optional]

    • when you click this, all your current [X] toggle autocasts are stopped and saved

    • when you click it again, saved toggle autocasts are resumed

    • at first all autocasts saved but if you click it while fewer skills are being autocasted at the moment, those fewer skills will be saved

    • turned on/off by suspend_key

  • pressed_buttons [optional] {0,1,2,3,4,5,6,7,8,9 by default}

    • which [X] sections will be read for autocasting (X in [X] is not only section’s name but also the button pressed)

    • you can change to i.e. pressed_buttons=Alt,LButton,4,5,3

.
[combo presses] - sequences of button presses / clicks, rebinding the key
                                       combine it with [periodic casts], [combo holds] and [center casts] in the same button using initial_delay

[combo presses]
delay=300

combo1=j:7,3,6

combo2=h:t,1,2,t
delay2=2000
initial_delay2=true

combo3=Space:1,1,1,1,1
delay3=2000
stop_on_release3=true

combo4=RButton:1,2
delay4=200
double_press4=true
double_press4_time_gap=300

combo5=CapsLock:m
key_native_function5=false
  • string of buttons presses activated by a button pressed

  • sample usages

    • casting all your permabuffs & pets with 1 button press, even if some of them are on the 2nd hotbar

    • casting multiple debuffs with i.e RMB before your other RMB (possibly) delayed spamming starts

    • actively casting a skill from the second hotbar (by swap, button, swap combo)

    • making a drop item button that doesn’t require you to pick an item before hands

  • delay [optional]

    • global delay in-between button presses for all the comboX unless overridden by delayX for a specific combo
  • combo1=j:7,3,6

    • after pressing J, buttons 7, 3, 6 are pressed

      • 7 intstantly
      • 3 after 300 ms
      • 7 after another 300 ms (600ms in total from the start)
  • initial_delay2=true [optional]

    • makes the 2nd combo start after delay2 ms (so the in-between delay proceeds the whole combo)
  • stop_on_release3=true [optional]

    • makes the 3rd combo stop if you release the button
    • you just make a short press, probably only the 1st press from the combo will be made
  • double_press4=true [optional]

    • activates the combo on a double press, useful for i.e. Pet Attack, Movement skills
  • double_press4_time_gap=300 [optional]

    • the time window you give yourself for the 2nd click/press after the 1st one to activate the combo
  • key_native_function5=false [optional]

    • blocks the key native function

    • I advise not to use it in general because you won’t block skills from Hotbars / in-game mouse action anyway I think

    • I used it here for Capslock to not light up when I use it for showing/hiding the map

.
[periodic casts] - your default spamming / autocasting while holding some button(s)
                                   combine it with [combo presses], [combo holds] and [center casts] in the same button using initial_delay

[periodic casts]
delay=100

cast1=RButton:0,9
delay1=200

cast2=Space:2
initial_delay2=500

cast3=LButton:1
delay3=500
double_press3=true
double_press3_time_gap=300

cast4=Shift,A:1
  • your default autocasting while holding some buttons

  • first press is instant which might not be the case for [X] autocasting holding version

  • here the delay is not in between separate buttons but in-between full spams of multiple butons (will be explained below)

  • delay=100 [optional

    • the default delay 100 for spamming ASAP if I remember correctly
    • is overridden by delayK for specific castK
  • cast1=RButton:0,9

    • when you press RMB, the buttons 0, 9 are instantly pressed

      • but in that order, so if for example they are movement skills, 0 will have higher priority
    • if you continue to hold RMB

  • initial_delay2=500

    • spamming starts with 500 ms delay with a default frequency of 100 ms
  • double_press3=true [optional]

    • activates the spam cast after a double press + holds
  • double_press3_time_gap=300 [optional]

    • the time window you give yourself for the 2nd click/press after the 1st one to activate the cast
  • cast4=Shift,A:1

    • you can also demand holding multiple buttons but I personally never use it

 

Autocasting on toggle - only option for autocasting without touching the keyboard/mouse

  • [autocasting] section contains settings for these sections

  • perfect for autocasting skills like Blood of Dreeg

[2]

[2]
toggle_key=2
delay=1000
  • a skill bound to 2 in-game (i.e. Wind Devil on 2 on hotbar) cast every 1000 ms by itself
    • turned on/off by 2 (toggle_key) or master_toggle

      • master_toggle saves/resumes all current autocasts on toggle

      • these hotkeys can be turned off/on by suspend_key

    • 100 ms is the default if you don’t specify it IIRC

[6]

[6]
toggle_key=6
not_hold_keys=LButton,RButton
delay=500
  • skill bound to 6 in-game i.e. Ring of Steel cast automatically by itself every 0.5s if you clicked 6 or master_toggle

  • click again (or master_toggle if you have it) to stop autocasting

  • not_hold_keys - casting of skill bound to 6 is disabled if you’re holding LButton or RButton

.
[combo holds] - holds down a button to have another button(s) held
                                 combine it with [combo presses], [periodic casts] and [center casts] in the same button using initial_delay

[combo holds]
combo1=LButton:7
delay1=150
double_press1=true
double_press1_time_gap=300

combo2=4:w
delay2=0
  • literally holds the button down

  • in the first combo

    • 7 is held if you hold LMB

    • some delay for pressing and holding 7 down is sometimes needed for it to work

      • for example for Aether Ray on LMB
  • but sometimes not, especially if you want non-skills to be held, i.e. Force Move, Stationary Attack

  • also the 1st combo was made to start working on the 2nd click + hold which has to be no more than 300 ms after the 1 click

  • hold after single button press is the default option

  • multiple buttons can be held IIRC

.
[center casts] - like Combo Press but also moves your cursor under your character’s feet for i.e. Inquisitor Seal
                                combine it with [combo presses], [periodic casts] and [combo holds] in the same button using initial_delay

[center casts]
cast1=RButton:7,6
initial_delay=0
delay=200
delay_after_cursor=40
closer_not_center=false
  • cast1=RButton:7,6

    • user’s mouse movement is blocked

    • cursor moves to the center of the screen

    • 7 and 6 are pressed with 200 ms delay in-between them

    • cursor goes back after that

    • user’s mouse movement is unlocked

  • delay_after_cursor=40

    • should be as low as possible
  • closer_not_center=false

    • I normally use it with true

      • which makes cursor not go to the center but slightly further from it so that the character’s rotation is not changing randomly which can sometimes happen with false

.
[camera]

[camera]
angle=60
counter_clockwise=a
clockwise=d
rotation_key=k
delay=40

.
[Clicker]

[clicker]
button=Alt
X=1270
Y=230

.
[hide items]

[hide items]
hiding_buttons=RButton
ingame_hide_button=Space
hide_duration=3000
  • hides items on the ground after you press one of the hiding_buttons for hide_duration ms

  • hiding is maintained if you continue to press one of the hiding buttons or hold them

  • ingame_hide_button is the key from GD Keybinding called Toggle Hide All Items

.
Write if you

  • need help with specific config (or just describe how you play and I’ll propose a config)
  • would like some additional features
  • something doesn’t work as expected
    .
4 Likes

Very clear. Thanks for letting this up to date and supported!

1 Like

Thanks for the updates and comprehensive documentation ! This is IMHO an essential QoL tool in the same tier with GrimInternals. It can also be adopted for other games too !

1 Like

Update https://github.com/kowariantny/GDAutocaster/raw/master/GDAutocaster.exe

1. Important bugfixes

  • pressing Space via Periodic Casts would probably not work before
  • protections against 2nd activation of the same combo while the 1st one still last in some way

I’ve written here about some of the technical details: [Tool] AutoHotkey scripts

2. Temporary blocking autocasting feature removed

  • this was a hack
  • such effects can be achieved directly with appropriate config

3. Hide Items rewritten

as it was a mess before. Here’s a video demonstration for the following config

[hide items]
hiding_buttons=RButton
ingame_hide_button=Space
hide_duration=3000

hi Secret Santa !

I failed in the beginning to get anything to work, but I needed to give admin rights to the program and after some tinkering; it worked !!! :smiley:

Your idea of splitting all 15 pets into 2 groups worked flawlessly. I have the hardcore big boyz on skillbar 1 (they usually never die/much hp). The weaker pets on bar 2, which I occasionally have to resummon due to being gored by baddies.

With 1 combo/button press I recast them all quickly…no need to look wich ones are down.
Takes only about 1.5 seconds. Super awesome deluxe <3

Unfortunately, I have absolutely no idea how to combine my 2 ranged attacks to the LMB, so that I can spam-fire both alternatively (ice/poison/ice/poison/ice/poison/ice/poison/etc)

Could you please give me some advice on how that would look in code?

Loving this program! Thnx and have a great day.

1 Like

Hmmm… never needed admin rights for GD but needed them for Diablo 2. Glad you’ve figured it out.

You can try to push delay down to make it even quicker.

[EDIT] oh w8, I didn’t notice you want them on LMB instead of RMB. Do you move with LMB as well? Then we probably need to to it in a different way than in examples below. I will write an untested example in the next post how to do that

It depends a little bit

  • on whether they have cooldowns
  • you want want of them to be always cast first
  • you’d like to cast some debuffs before hands

Nevertheless for spamming like that [periodic casts] would be best. Some examples

  1. Skills on cooldowns, we want them ASAP, as offten as possible, 1 higher priority than 2
  • skills activated by buttons 1 and 2
  • they are on cooldowns that’s why we spammed the buttons every 100 ms to have them asap
    (to turn off ‘skills not available’ message and voice - check 2 options in settings)
[periodic casts]
cast1=RButton:1,2
delay1=100
  1. One of the skills is on RMB cast natively, another is on 1 cast by GDAutocaster
  • in this example skill 1 doesn’t have cooldown and we don’t want
    to spam it too often, we increase the delay from 100 ms to 2 seconds
[periodic casts]
cast1=RButton:1
delay1=2000
  1. In this example we want a skill on RMB and skill on 1 incorrectly
    fires before our skill on RMB, so we introduce initial_delay of 200 ms for skill 1
[periodic casts]
cast1=RButton:1
delay1=100
initial_delay1=200
  1. In this example both skills are on the hotbar 0 - 9 but we want the 2nd skill
    only be cast and spammed when we press RMB twice and hold (1st skill is cast always)
    (defualt delay is 100 ms so we skip it no need to overwride it by delay1 or delay2)
[periodic casts]
cast1=RButton:1

cast2=RButton:2
double_press2=true
double_press2_time_gap=300
  1. In this example we have Curse of Frailty on RMB that is cast once when we press and hold it not spammed.
    The skills we spammed are on 1 and 2 and need to be start cast with delay to not interrupt Curse of Frailty
[periodic casts]
cast1=RButton:1,2
initial_delay1=200
  1. In this example we have 2 debuffs on 3 and 4 that we’d like to spam before 1 and 2 and have RMB empty
[combo presses]
combo1=RButton:3,4
delay1=200

[periodic casts]
cast1=RButton:1,2
initial_delay1=400
  1. In this example 2nd skill is cast once on the double click and hold not spammed
    1 skill is spammed with delay
[combo presses]
combo1=RButton:2
double_press1=true
double_press1_time_gap=300

[periodic casts]
cast1=RButton:1
initial_delay1=200

Remember to only have one continuous section i.e. [combo presses] or [periodic casts] in your config

How to to have movement and skills spam all on just LMB
(untested - some corrections like (initial_)delay might be needed)

  1. We need to inform the game that we would like to
  • stand still
  • spam our two attacks (1, 2)

The only way to do it with just LMB is double press. We need to do 2 things:

  • hold down Stationary Attack after clicking LMB twice and then holding it down
[combo holds]
combo1=LButton:STATIONARY_BTN
double_press1=true
double_press1_time_gap=300
  • spam our 2 attacks
[periodic casts]
cast1=LButton:1,2
double_press1=true
double_press1_time_gap=300

(initial_delay might be needed if fires before Stationary Attack for some reason and moves the character unnecessarily)

Got the spam-fire working <3

Because 4 important devotion pet buffs are linked to these 2 ranged attacks to proc on hit, I can already see almost double the damage !!!

Only thing is that I had to move the 2 ranged skills/hotkeys on the right of the actionbar into the actionbar. Effectively losing 2 more slots there. Which is a bummer, but a sacrifice I am happy to make.
In the end it only means that I have to juggle my 5 aura/buff skills toggles on start up of the game, swapping them in and out of the second bar to activate them once.
Which only takes about 10 seconds…no biggy.

I R very happy !!! thank you <3

1 Like

Couldn’t you left one of the attacks on the RMB?

Could you explain more precisely why do you have that problem? Maybe I can figure something out.
Why cannot they be on the 2nd bar permanently? Because you have more than 20 skills?
I think 20+ skills is the only problem that cannot be solved somehow but maybe I just cannot imagine it at the moment.

I have 20 slots total (2 bars);
~ 15 of them are occupied by my pets.
~ 1 for Call of the Grave (temporary pet buff-skill on cooldown).
~ 5 aura/buff skills to toggle (once at start of game)

This way I am already 1 slot short.
But to get the spam-fire working, I had to place them in slot 1 and 2 of the first action bar (don’t know how to do it another way).
Which means I lost 2 more slots on the action bars.

My ini file now looks like this:

Pet Cabalist

[general]
suspend_key=Tab

[combo presses]
combo1=BS:3,4,5,6,7,8,9
delay1=300

combo2=NumpadAdd:t,1,2,3,4,5,6,7,t
delay2=300

[periodic casts]
cast1=RButton:1,2,0
delay1=100

Combo 1 & 2 are the group pet summons (works great!)

The periodic cast is the spam fire (skill 1 & 2), with 0 being Call of the Grave buff thrown in, to activate as soon as cooldown allows. I often forgot to use it, which was a total waste of skill points.
I deactivated error/cooldown messages in-game so I don’t get txt on screen or annoying voice.

1 Like

Thanks for explaining everything in detail I’ll think about it but… 15 pets?
15 different pet species? :wink: You’re not repeating any of them, do you?

(sorry for stupid questions, please not be offended by them
but you need to check everything while writing with someone like that
sometimes people don’t see some silly mistakes / typos)

Btw If you have RMB free you can put one of the 3 skills that is spammed when you hold RMB I guess.
Do you have something on RMB? Then it would look like this (one skill less)

[periodic casts]
cast1=RButton:1,2
delay1=100

Unless none of the skills 0,1, 2 is spammed natively (just cast once) when on RMB slot in-game
then maybe we would have to do it in a different way.

But yeah I don’t think I can work around 20+ skills.
Although I could implement clicking cursor combos I guess…

hahaha yes 15 (permanent pets) now and hopefully 16 soon when I finally get Heart of the Mountain to drop for my Yeti-pet :rofl:

It’s my own fault. I wanted as big as an army of pets I could get. That’s one of the reasons I installed the Reborn 3.0 mod. The ranged attacks I spam also trigger the spawning of temporary chtonian and ghost pets. Filling my screen with loads of extra minions. I even have pets spawning when I get hit.
Not only that, but to top it all off, I deliberately picked devotions for my pets with glorious visual bombardments of Meteors, Blizzards and thunderstorms. Which all proc nonstop.

In combat I seriously have a hard time to see my own character sometimes in all the visual carnage, but it’s G L O R I O U S :smiling_face_with_three_hearts:

You probably already guessed I am a bit of a summoner-lover. It’s my favorite class in all rpg games.

I want to thank you. These tweaks made my enjoyment of the game much bigger.
I would much rather spend 10 seconds at the start of the game switching out a few buttons to activate my aura’s/buffs, than the hassle of checking which pets to respawn with wich button-press.
Gameplay is much faster and fluent now and the double ranged attack-spam is the icing on the cake <3

Super happy with this. I am glad I found you on YouTube and followed your advice.
Thanks dude !

1 Like

No problem. Just a quick tip

You can use YOLO mouse (big colorful cursor) if you don’t see your cursor. I do that even not having pets.

So, I need help.

I used a (very) old version of GDAutocaster a while back just for casting stuff like Blood of Dreeg on cooldown and it worked fine. Recently I downloaded the newest version to do the same. My config file looks like this:

[general]
game_window_id=ahk_exe Grim Dawn.exe
suspend_key=0

[autocasting]
master_toggle=9
pressed_buttons=0,1,2,3,4,5,6,7,8

[7]
skill=Word of Renewal
toggle_key=7
delay=1000

[6]
skill=Blood of Dreeg
toggle_key=6
delay=1000

Now, the issue I have is that sometimes when I stop playing there are like 6-10 instances of GDAutocaster open on my PC. Usually it’s just kinda weird, but doesn’t really affect gameplay.
Today, however, the tool started sending me error messages saying something about being unable to close the previous instance of GDAutocaster and if I wanted to keep waiting or not. I should’ve written down the exact message, can’t remember it now. But I just panicked cause it opened like a hundred of those messages and just wouldn’t stop - had to just shut my PC down on the power button.

Also, not sure if related, but when I switch from the game window into my web browser and then go back sometimes the autocaster just keeps going. But more often than not it just stops and I have to press the toggle button (9) for it to start again. Which is not a huge deal, just kinda odd that it sometimes keeps going and sometimes just stops. The big issue is the one above though.

1 Like

Could you see how many instances of GDAutocaster do you have when you

  • go to the game
  • then alt tab
  • go to the game again
  • alt tab

Then look in the task manager how many instances of GDAutocaster. I looks like GDAutocaster is not closing for some reason.

Also things I’d like you to try

  1. Try running the program as administrator (it only presses buttons / closes, restarts itself so won’t do any damage)

  2. Always give GDAutocaster a few seconds after to go to the game’s window before next Alt Tab
    What I mean is don’t Alt + Tab and go back to the game in like 1s. Or reverse don’t go the the game’s windows and alt Tab 1 s later. Not change these states more often than once every 5 seconds (I’ll improve it but it’s just how it is now)

What do you mean by keep going? Is it when you’re browsin some Grim Dawn site maybe? Having to press toggle button again is a consequence of me restarting the program after the game’s windows become’s active. I’m doing it to have hotkeys worked 100% of the time after starting the program which I couldn’t do without this hack. But I think I can implement remembering “being toggled” again in a different way.

Please try using GDAutocaster now the way I described / maybe make the test I mentioned (not alt Tabbing / activating game’s window more than once every 5s <- maybe you won’t have any issues then).

After that and hearing if it changed anything I’ll make some changes to the program to improve some of the things you talked about.

Update https://github.com/kowariantny/GDAutocaster/raw/master/GDAutocaster.exe

1. Autocasting on toggle state remembered between Alt + Tabs again
2. Small technical improvement

@Danut

  1. You shouldn’t now need to retoggle autocasting_on_toggle again after game’s window active again

  2. Now the program restarts immediately after the game’s active not 3 seconds after [technical]
    It may influence quick subsequent Alt Tabs + coming back to game + Alt tabs

So the tip I gave you to Alt+Tab / game’s active with 5s frequency at least should not be needed

Now just try what I already written which is

  • maybe running the program as administrator

  • checking whether there’s only once instance of GdAutocaster after you

    • run the program
    • go to the game
    • alt_tab / make window not active
    • go to game again
    • alt / tab / make window not active

Now you shouldn’t need a few seconds between those but maybe just a second or two
(this probably only applies in practice if you have a game windows and you would rapidly click on the window and on the desktop quicker than once per second?)

1 Like

The program reads command line / shortcut arguments
GDAutocaster.exe config.ini     (reads config.ini and skips file selection dialog)
GDAutocaster.exe config.ini whatever     (reads config.ini, skips file selection dialog, starts autocasting on toggle automatically)

Ok, so I do alt + tab away from the game and back into it quite fast sometimes - the other day I was just checking a farming route for example, so I was probably going back and forth in a few seconds. I guess that might have been the issue.

In any case, I’ll test the new update later today when I get time to play and say how it goes. Thanks :slight_smile: