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

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:

Ok, tested it for about 40-ish minutes, with window swapping every now and then, and it worked seamlessly. Only one instance active, and it also resumed casting every time I got back to GD :smiley: (which is great cause Iā€™ve lost count how many times I almost died on my HC char by running around Ugdenbog with 40% poison resist until I noticed Blood of Dreeg was off).

Havenā€™t tried using it as admin as I decided to check it without selecting that first. Since it worked I guess thereā€™s no need for that.

Also, just added the shortcut thing to skip the config file selection dialog and it worked as well.

Thanks a lot for your work and help.

1 Like

Thanks for not going back to the previous version and testing the new one.

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

  1. Autocasting on toggle is prevented while you hold any of not_hold_keys, not all of them at once as it was before.
[1]
toggle_key=1
delay=2000
not_hold_keys=LButton,RButton

  1. Deleted autocasting while holding button from the feature below because its better version is Periodic casts. The following is not possible now

Warning! Periodic Casts is being renamed to Autocast by hold.

[1]
hold_keys=Space
delay=2000


3.- Basic autocasting on toggle renamed to [u]Autocast by toggle[/u]
  • Itā€™s now configured in a consistent way with other features of the program

  • toggle_key is now optional

  • pressed_buttons was deleted because it was redundant

  • Read more in the new documentations in OP

  • old version of the program and documentation are still there if you donā€™t feel like changing your configs but will not be further developed

    • Iā€™m planning to add a new option to reset/refresh Autocast by toggle timer while pressing itā€™s button for optimal usage of skills like Blood of Dreeg

      • When you press the button, you activate BoD and get healed and next time the skill is activated is delay from the moment you activated it manually

New configuration

[autocast by toggle]
master_toggle=q

key1=0
delay1=100
not_hold_keys1=RButton

key2=1
delay2=1000

key3=7
delay3=100
not_hold_keys3=RButton

Old configuration

[autocasting]
master_toggle=q

[0]
toggle_key=0
delay=100
not_hold_keys=RButton

[1]
toggle_key=1
delay=1000

[7]
toggle_key=7
delay=100
not_hold_keys=RButton

4.- Periodic casts renamed to Autocast by hold

  • Just change the name of the section in your config from [periodic casts] to [autocast by hold]


Hereā€™s how my config to the following build


looks now

Vitality Storm Totem

[general]
suspend_key=Tab

[autocast by toggle]
master_toggle=q

key1=0
delay1=100
not_hold_keys1=RButton

key2=1
delay2=1000

key3=7
delay3=100
not_hold_keys3=RButton

[autocast by hold]
delay=100
cast1=s:s
cast2=Space:6
cast3=RButton:0,7
initial_delay3=400

cast4=RButton:8
initial_delay4=200
delay4=2850

[combo holds]
combo1=RButton:9
delay1=400

[combo presses]
combo1=r:t,1,2,3,4,5,t
delay1=600
combo2=g:LButton,j
delay2=0
combo3=CapsLock:m
key_native_function3=false
3 Likes

Thank you so much for this wonderful tool tqFan!

Do we have a command or option to assign on mouse scroll? Like WheelUp/WheelDown commands? :thinking:

1 Like

Yes, these are the names of these keys in AutoHotkey. I remember testing in once in some other script and it worked. I bound camera rotation to WheelUp/Down.

Btw half an hour ago I pushed bugfix (Autocasting on Toggle delay wasnā€™t changing and it was always the default 100ms, never 10s for example) so you may want to redownload if you downloaded the program before that.

Wheel

WheelDown Turn the wheel downward (toward you).
WheelUp Turn the wheel upward (away from you).
WheelLeft
WheelRight [v1.0.48+]: Scroll to the left or right.

https://www.autohotkey.com/docs/KeyList.htm

1 Like

Yes, you should make a combo such as

[combo presses]
combo1=WheelUp:1,2
delay1=200

where 1 is Curse of Frailty,
2 is Bloody Pox

(200 ms delay between buttons presses for such combos is the usual I use)

The drawback of scroll however is that you cannot hold it because I play even most complicated builds by just holding RMB (sometimes also MButton so that it occasionally behaves differently)
[also a button for movement skill, or skills that need to be used occasionally like Mirror / MoT]

so I couldnā€™t use Scroll because I would always want to bind some Autocast on Hold to it at the same time and itā€™s impossible. Because the coolest things of the program is combining multiple its feature into one button which may look like this

  • you press and hold RMB
    • first 2 debuffs are cast

    • then delayed centered Inquisitor Seal

    • than after a further delay your channeling attacks or spammable cooldown attacks

You cannot achieve it with Scroll Wheel I think.

Btw write if youā€™d like some config to a build to get to know the program better.

1 Like

Thank you so much tqFan! Iā€™ll try this right away!
Well Iā€™m totally new to the program so thereā€™s a lot of backspacing going on.
So far I was able to setup perma buffs & periodic buffs.

1 Like

When you make a change in the config, you donā€™t even have to restart the program:

  • alt tab
  • make a change in text editor
  • back to the game

new, changed config is loaded again automatically after 3 seconds


Permabuffs usually look like this at my end (T is for swapping hotbar in-game)

[combo presses]
combo1=r:t,1,2,3,4,5,t
delay1=300



Autocasting by hold can be written like this

0, 7 are attacks on cooldown you spam

[autocasting by hold]
cast1=RButton:0,7



This is how I combine it with 2 debuffs (4 i 5) <- actually one can be just on RMB in-game not or 4/5 usually unless itā€™s spammed while you hold RMB
(some skills on RMB in-game are spammed while you hold it, others are not)

[autocasting by hold]
cast1=RButton:0,7
initial_delay1=400
^ 200 ms for each of the 2 debuffs from Combo Presses

[combo presses]
combo1=RButton:4,5
delay1=200



If you have channeling skill (or a skill youā€™d like to have a button pressed down and held) and you want it to cast it with the program with a delay, you can do something like this

7 is your channeling skills

[combo holds]
combo1=RButton:7
initial_delay1=400

initial delay is sometimes needed just to work
or needed when you want to cast some debuffs before channeling




Also remember you can activate these features / combos / casts on double press (and holds optionally)

double_press3=true
double_press3_time_gap=300



If you copy the code, watch out for some typos I may have made.

1 Like

Thanks a bunch again for the effort & documentation of this tool tqFan!

I hate to ask, but how do I make something like ā€œWord of Painā€ & ā€œPrimal Strike/Savageryā€ to work with 1 button?

I mean it works, but you stop & look like youā€™re lagging for it cast and have to release it or press ā€œmove toā€ to get close to your opponent.

Thanks again in advance! :wink:

Definitely ask such questions because it takes experience, ideas and trying dozens of options to find optimal configs.

I assume youā€™re asking for virtually one button for moving and everything (I usually use Left for Moving and Right for (almost) everything) which makes things easier. The other thing is Melee Savagery in is one of the hardest skills to work with. Melee is harder to autocast in general than ranged or caster. Maybe I also propose you some option for 2 buttons after you respond.

The way Savagery and other Melee skills that are not bound to LMB behave when there are not monsters (targets) around is unfortunately an engine thing and I cannot do anything about it. It definitely makes scripting them harder.

One could mod Savagery I guess.




1 Button Config

  • Savagery cannot be on LMB but on the 0-9 hotbar

    • because it would be than spammed all the time
  • we cannot detect whether weā€™re near the monster or not

    • so have to switch to Also using Savagery mode manually with just LMB

The only option is the Doube Press I guess

  • after weā€™ve appproached the enemy we need to click LMB 2x and hold it

We have 2 options now


Option 1

  • clicking LMB 2x and holding it
    • makes you attack with Savagery periodically here and there, in-between your Primal Strike attacks

Option 2

  • clicking LMB 2x and holding it
    • makes you attack with Savagery instead of Primal Strike so that you stack 6 charges that will last you 12 seconds (this is how non-AHK people play)

Option 3 (doable but Iā€™m not including the config since itā€™s probably too much)

  • clicking LMB 2x and holding it
    • makes you attack with Savagery only for a defined period of time
    • and after that the character goes back to Primal Strike

Config for option 1

  • LMB - Primal Strike

  • 0 - Savagery

  • delay1 - less than 2 seconds

    • depends on variety of things like
      • attack speed
      • gameplay style
      • expectations
      • Crucible vs SR
  • double_press1_time_gap

    • depends on personal speed of clicks
    • high enough so you always manage to 2nd-click in the given time windows
    • low enough so that you not activate while walking / doing other stuff
    • for inventory management and stuff disable it with suspend_key
[autocast by hold]
cast1=LButton:0
delay1=1500
double_press1=true
double_press1_time_gap=300

Config for option 2
(this is not obvious that it works because it makes 0 be pressed while LMB is also pressed and multiple buttons pressed down at the same time often donā€™t work well in Grim Dawn. Inform me if there are some problems but it works for me.)

  • LMB - Primal Strike
  • 0 - Savagery
[combo holds]
combo1=LButton:0
delay1=0
double_press1=true
double_press1_time_gap=300



How to include Word of Pain into this

Maybe cast it once everytime you press LMB or double press LMB? It would need some initial_delays, good config and testing.




How I would cast Wind Devils (example without Savagery but with Word of Pain)

I like them cast all the time which may be not would some players like because they deal a lot of damage. This is an example of how I usually do it. I would maybe cast Savagery with MButton but I donā€™t know since I havenā€™t played such builds for a long time (only Ranged Physical Primal Strike which is a completely different story). But I remember also having Savagery button pressed once every 1XXX ms. Maybe it will give you some ideas.

Our goals

  • Primal Strike (RMB) on RMB in-game

  • Word of Pain (0) cast once after RMB by the script

  • Wind Devils (9) cast all the time

    • but we also making sure they never interrupt our Word of Pain (0)
      • which is not a big deal because you could just press RMB one more time
      • but very occasional interrupting is something we can avoid
[general]
suspend_key=Tab

Word of Pain
[combo presses]
combo1=RButton:0

Wind Devils
[autocast by toggle]
master_toggle=q

key1=9
delay1=200
not_hold_keys19=RButton
^
^we prevent it to be Autocast by Toggle
 when we hold RMB (Primal Strike)

[autocast by hold]
cast1=RButton:9
initial_delay1=200
delay1=200
^
^but we autocast if with initial delay1
 with Autocast by Hold to crate the gap
 where Word of Pain can be cast without
 a low probability of being interrupted
 by Wind Devil



Another option is to switch from Melee to Ranged Lightning PS Vindicator as itā€™s great too and is better for scripting (because we donā€™t move when we shot + first Savagery strike is ensured and you can be more precise with everything). But not necessary and maybe youā€™ll like some of the 1-button configs above or some 2-button configs. I think shooting PS feel better in general, not only for AHK. You can cast Inquisitor Seal where you stand and shoot from there

  • by the way I always have Inquisitor Seal autocast under my characterā€™s feet after starting shooting with my ranged characters

My chilling rounds character: https://www.youtube.com/watch?v=iy7Qkf9Pcn4
or Fire Strike one: Flame Keeper of the Blaze - my results | 7-8s MQ | Crucible ready
are fully automated despite having tons of skills

1 Like

Btw why do you need Word of Pain on Melee Primal Strike?
Itā€™s not some weird Aether one? Cannot it be avoided?
Do you proc some devos with it? Maybe movement skill would longer cooldown (for 100% chance) would be better if you try to proc Skellies for example

1 Like

@tippytam The Autocast on toggle fragment in the last config from my post is not correct now.

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

Autocast by Toggle rewritten and now configurerd as the rest of the features.

  • master_toggle removed!

    • you now specify the toggling button for all the autocasts
      as itā€™s the case in the rest of the features
  • Watch out for possible bugs!

[autocast by toggle]
cast1=q:0
delay1=100
not_hold_keys1=RButton

cast2=q:1
delay2=1000

cast3=q:7
delay3=100
not_hold_keys3=RButton

All in the documention in the OP

1 Like
  • Takes down notes *

Canā€™t thank you more as I am forever grateful. :beers:

Let me just take a moment for me to decipher your lesson.

Btw why do you need Word of Pain on Melee Primal Strike?

I just made those examples as I am familiar with those said skills.

Word of Pain is a good skill to be put for RMB (at least if you move with LMB and attack with RMB like me) for many builds because itā€™s not spammed when you hold RMB IIRC and itā€™s good to have it cast instantly as an important debuff.

You then proceed to cast i.e. 2nd debuff after 200ms, this time with GDAutocaster
and then maybe 200ms later Inquisitor Seal
and then your channeling skill / spam attacks

That how I play most builds

1 Like

What I did for now is 2 debuffs & 1 item heal on RMB (an experimentation, not perfect, but works) then a default weapon attack replacer on LMB (no links).

1 Like

Iā€™m trying to make certain skills for my reaper autocast while I hold the LMB. Hereā€™s what I have in the ini file right now.

[general]
game_window_id=Grim Dawn
suspend_key=Tab

[autocast by hold]
cast1=LButton: 5,t,RButton,LButton
delay1=100

5 is decapitate, t is bloodbath, Rbutton is Reap Spirit, and LButton is Amarastaā€™s blade burst

However, none of the skills are activating. Itā€™s like I donā€™t have the program on

1 Like

It works for me. Sorry for potential stupid questions

  1. Have you used suspend_key to turned it on/off?

  2. Do you see the program working in the taskbar?

  3. When have you downloaded the program? I change the name to
    [autocast by hold] yesterday. Maybe you downloaded the program before that?
    Are you sure youā€™re running the correct .exe not some earlier version?

  4. Do you see that the correct config has been loaded?
    The config name is displayed when you right click the programā€™s icon in the task bar.

  5. game_window_id=Grim Dawn

    is not necessary as it is by default

  6. I can see whitespace ā€™ ā€™ after the first LButton
    although itā€™s working for me and probably works
    I havenā€™t tested it honestsly so maybe better remove it

  7. When You have ABB on LButton in-game you donā€™t have to autocast it by script
    What I mean is that the second LButton is not necessary and even not recommened
    but will probably work anyway. I donā€™t particularly like RButton there either but it can
    stay I guess

So Iā€™d use this config

  • deleted 2nd Lbutton as itā€™s not necessary and may even make it worse
  • deleted space (although it did work for me)
[general]
game_window_id=Grim Dawn
suspend_key=Tab

[autocast by hold]
cast1=LButton:5,t,RButton
delay1=100
1 Like