About this mod
Tired of switching spell sets and having to change which set you're using on the fly during combat? Look no further! This mod (AHK script) allows you to use a two-key sequence or key combinations to cast or simply switch between different spell sets with ease! This mod is actively being developed, and is the first to feature controller support!
- Requirements
- Permissions and credits
- Changelogs
The aim of this mod is to be a more refined version of other similar mods (see this mod and this mod), offering a sequential key combination version (1 then 3 for 3rd spell in 1st set, 4 then 1 for 1st spell in 4th set, etc.), a modifier key version (1-4, `+1-4, SHIFT+1-4, and SHIFT+TAB+1-4), and also an alternative version that allows the player to hold ` and tap 1-4 to quick change spell sets without having to use F keys, 5-8 keys, or the (inaccurate and frustrating) scroll wheel method. It is also the first mod of it's kind for Hogwarts Legacy to feature full controller support!
To install and use the scripts, first you must install AutoHotKey by downloading the linked file (or under the "Required Mods" tab of this mod's page), and following the on-screen installation dialogue prompts. From there, you'll notice the .ahk files for this mod now have an icon other than the default white unknown filetype icon - you can simply double-click them to launch them and they should work.
To get the scripts working with a controller, follow these steps:
- Right-click Hogwarts Legacy in Steam, go to Properties, click on Controller, and in the Override dropdown, select "Enable Steam Input"
- Import the custom Steam Controller Configuration
- Apply the Configuration
- Launch the Base Version of this Mod
- Launch the Game
- Enjoy :)
Update: A to-do list has been posted and stickied in the comments for this mod. Thanks for your patience! :)
Update: Removed any .exe files / .zip files containing .exes for safety purposes in alignment with Nexus' guidelines. To run the scripts, you will need to install AutoHotKey v2.0. In the future, I may post external links to the pre-compiled binaries via GitHub (if it's allowed by the Nexus Team). Happy modding!
Update: Controller Support has arrived!
Universal Keybinds (both Versions)
- SHIFT+F12 | Closes the Script
- SHIFT+F11 | Suspend All Hotkeys
- 0 Key | Instant Ground Mount
- - Key | Instant Flying Mount
- = Key | Instant Broom
Base Version
- Allows User to Define their own Key Combination Delay (how long the script listens after an initial 1-4 keypress for the second key in the combination)
- First Keypress identifies the Spell Set
- Second Keypress identifies the Spell in the specified Spell Set
- Full Controller Support
#Requires AutoHotkey v2.0
Suspend 1
ihDelay := InputBox("Please enter the desired Combo Delay.", "Combo Delay Configuration", "W240 H90 T10.0", "0.5")
If ihDelay.Result = "Cancel"
{
MsgBox "Program closed!"
ExitApp
}
MsgBox "Your Combo Delay has been set to " ihDelay.Value "!"
Suspend 0
; Exit Application
+F12::
{
MsgBox "Program closed!"
ExitApp
}
; Suspend Hotkeys Toggle
#SuspendExempt
+F11::
{
if A_IsSuspended
{
Suspend 0
MsgBox "Hotkeys have been unsuspended!"
}
else
{
Suspend 1
MsgBox "Hotkeys have been suspended!"
}
}
#SuspendExempt False
#HotIf WinActive("ahk_exe HogwartsLegacy.exe")
; Quick Ground Mount
*0::
{
Send "{TAB down}"
Sleep 275
Send "1"
Sleep 10
Send "{TAB up}"
}
; Quick Flying Mount
*-::
{
Send "{TAB down}"
Sleep 275
Send "2"
Sleep 10
Send "{TAB up}"
}
; Quick Broom
*=::
{
Send "{TAB down}"
Sleep 275
Send "3"
Sleep 10
Send "{TAB up}"
}
; Set to Spell Set 1 and Wait for Secondary Input
*1::
{
Suspend 1
Send "{F1}"
SpecificSpell := InputHook("L1 T" . ihDelay.value)
SpecificSpell.Start()
SpecificSpell.Wait()
Sleep 10
if SpecificSpell.Input = "1"
Send "1"
else if SpecificSpell.Input = "2"
Send "2"
else if SpecificSpell.Input = "3"
Send "3"
else if SpecificSpell.Input = "4"
Send "4"
Suspend 0
}
; Set to Spell Set 2 and Wait for Secondary Input
*2::
{
Suspend 1
Send "{F2}"
SpecificSpell := InputHook("L1 T" . ihDelay.value)
SpecificSpell.Start()
SpecificSpell.Wait()
Sleep 10
if SpecificSpell.Input = "1"
Send "1"
else if SpecificSpell.Input = "2"
Send "2"
else if SpecificSpell.Input = "3"
Send "3"
else if SpecificSpell.Input = "4"
Send "4"
Suspend 0
}
; Set to Spell Set 3 and Wait for Secondary Input
*3::
{
Suspend 1
Send "{F3}"
SpecificSpell := InputHook("L1 T" . ihDelay.value)
SpecificSpell.Start()
SpecificSpell.Wait()
Sleep 10
if SpecificSpell.Input = "1"
Send "1"
else if SpecificSpell.Input = "2"
Send "2"
else if SpecificSpell.Input = "3"
Send "3"
else if SpecificSpell.Input = "4"
Send "4"
Suspend 0
}
; Set to Spell Set 4 and Wait for Secondary Input
*4::
{
Suspend 1
Send "{F4}"
SpecificSpell := InputHook("L1 T" . ihDelay.value)
SpecificSpell.Start()
SpecificSpell.Wait()
Sleep 10
if SpecificSpell.Input = "1"
Send "1"
else if SpecificSpell.Input = "2"
Send "2"
else if SpecificSpell.Input = "3"
Send "3"
else if SpecificSpell.Input = "4"
Send "4"
Suspend 0
}
Modifier Version
- 1-4 is Spell Set #1's casts
- ` + 1-4 is Spell Set #2's casts
- SHIFT + 1-4 is Spell Set #3's casts
- SHIFT + TAB + 1-4 is Spell Set #4's casts
#Requires AutoHotkey v2.0
; Exit Application
+F12::
{
MsgBox "Program closed!"
ExitApp
}
; Suspend Hotkeys Toggle
#SuspendExempt
+F11::
{
if A_IsSuspended
{
Suspend 0
MsgBox "Hotkeys have been unsuspended!"
}
else
{
Suspend 1
MsgBox "Hotkeys have been suspended!"
}
}
#SuspendExempt False
#HotIf WinActive("ahk_exe HogwartsLegacy.exe")
; Quick Ground Mount
*0::
{
Send "{TAB down}"
Sleep 275
Send "1"
Sleep 10
Send "{TAB up}"
}
; Quick Flying Mount
*-::
{
Send "{TAB down}"
Sleep 275
Send "2"
Sleep 10
Send "{TAB up}"
}
; Quick Broom
*=::
{
Send "{TAB down}"
Sleep 275
Send "3"
Sleep 10
Send "{TAB up}"
}
1::
{
Send "{F1}"
Sleep 10
Send "1"
}
2::
{
Send "{F1}"
Sleep 10
Send "2"
}
3::
{
Send "{F1}"
Sleep 10
Send "3"
}
4::
{
Send "{F1}"
Sleep 10
Send "4"
}
` & 1::
{
Send "{F2}"
Sleep 10
Send "1"
}
` & 2::
{
Send "{F2}"
Sleep 10
Send "2"
}
` & 3::
{
Send "{F2}"
Sleep 10
Send "3"
}
` & 4::
{
Send "{F2}"
Sleep 10
Send "4"
}
+1::
{
Send "{F3}"
Sleep 10
Send "1"
}
+2::
{
Send "{F3}"
Sleep 10
Send "2"
}
+3::
{
Send "{F3}"
Sleep 10
Send "3"
}
+4::
{
Send "{F3}"
Sleep 10
Send "4"
}
#HotIf GetKeyState("Shift", "P")
Tab & 1::
{
Send "{F4}"
Sleep 10
Send "1"
}
Tab & 2::
{
Send "{F4}"
Sleep 10
Send "2"
}
Tab & 3::
{
Send "{F4}"
Sleep 10
Send "3"
}
Tab & 4::
{
Send "{F4}"
Sleep 10
Send "4"
}
Alternative Version
- `+1 changes to First Spell Set
- `+2 changes to Second Spell Set
- `+3 changes to Third Spell Set
- `+4 changes to Fourth Spell Set
#Requires AutoHotkey v2.0
; Exit Application
+F12::
{
MsgBox "Program closed!"
ExitApp
}
; Suspend Hotkeys Toggle
#SuspendExempt
+F11::
{
if A_IsSuspended
{
Suspend 0
MsgBox "Hotkeys have been unsuspended!"
}
else
{
Suspend 1
MsgBox "Hotkeys have been suspended!"
}
}
#SuspendExempt False
#HotIf WinActive("ahk_exe HogwartsLegacy.exe")
; Quick Ground Mount
*0::
{
Send "{TAB down}"
Sleep 275
Send "1"
Sleep 10
Send "{TAB up}"
}
; Quick Flying Mount
*-::
{
Send "{TAB down}"
Sleep 275
Send "2"
Sleep 10
Send "{TAB up}"
}
; Quick Broom
*=::
{
Send "{TAB down}"
Sleep 275
Send "3"
Sleep 10
Send "{TAB up}"
}
; Set to Spell Set 1 and Wait for Secondary Input
` & 1::
{
Send "{F1}"
}
; Set to Spell Set 1 and Wait for Secondary Input
` & 2::
{
Send "{F2}"
}
; Set to Spell Set 1 and Wait for Secondary Input
` & 3::
{
Send "{F3}"
}
; Set to Spell Set 1 and Wait for Secondary Input
` & 4::
{
Send "{F4}"
}