Elfyau's Midnight v0.1 Havoc Demon Hunter **Updated 13-Feb-26**

NOTE I have created a plugin for all of my Demon Hunter sequences, they are available at both Curseforge and Wago. Just search for ‘Elfyau’ or ‘GSE’

13-Feb-26:- Updated talents - no other changes.

This is my first working pass, built to get you the correct talent strings and a clean, usable sequence so you can dive straight into the chaos without setup headaches. It’s all about making Havoc playable and smooth right out of the gate.

It’s an early build, but it should feel fast and reliable in combat. I hope it flows nicely for you — happy slashing! :grinning_face_with_smiling_eyes:

TALENTS:-

CEkAG5bbocFKcv+yIq8fPd6ORZmZmZmZ2MmZmxYmMmZAAAAAAAzixwwMzYMjtZzMDjBWmZbGzyMzYbbWm0MzMjZsBAAAMAAEAMzgBgAAAA

SEQUENCE:-

Elfyau’s Midnight v0.1 Havoc Demon Hunter

!GSE3!1ZbdTtswFMdXxm7QXoBpF7ncNKBNWkrLbhaapA00FNHyVVQhJzltU5w4OA6QXrGLac8BdNKkPcXeYa+wNxj3c5oCHYINCTFtiRTHJ8c+v/O3Hfus7KMIE2QP9E1EHWRiCE40A1mUBCdVFYMLHiuR0GMpvQ4HIXgWBKcrqrxXUSp7h5k5cTDyfn9eli3mEC/4+ElhkQ+qG9srihPEvdo/kvp2Pc0Q7QADD9xI2PVIF1G3tWsDsltTaQsFTNh1ib0YdJ02m3nnYxQBbQliUcxJC2/jBlYXeR5gx+twc2FelLJKg8fT1sEHxCq6x4AeIixLg0cJKWWlQjE7luLt0cXB2Pu4y1jLR5KkkCsWHyf3bC5XyEt/zF367QxoPhDJIq6J2MyNrIuFjJi9Q/LPqfNR7A8PjD2yzNzKIM0XilLmspu7MLlTwpYslzGlJv4Lyqd/hTK7kCnm5+9DeXMyJsCT/xjl7Vo++8cob9dytIomhzalSohfrTPwtdAbfq6twyHQANaoQ6jDosHVajPSYQDXcOMhR6QtQRCzU/dyy92h4TXViHPiF7rlZNtiDsJrumeGDmZXO92pVhp2f6FWkQm4rEAbhZjpW4D25ZCi4GSlyjXb8G3EwF6VMlI+I4lZkZdioWIAQwpi6EulAtjntPsbXcb8YDGdBtyO5lCYjo1BuYEwB+DRqtBBVnSmJ4Y6sO1eSd2Xy/OmSSxtxTp8E+kHhfaana+tN93hLRn8ebzj8kJOrr5zfHRk9HeMHmv2DaW3tOU2zXI/4ibT3HIzRt/oNYMl7mnIsiob/c5SJ263okBgUcePRdl+WaNOx/EQFi53dSGB4nWmySHrEqqpPAsULpfr6iYfX95s+vn3dQN5IcLJfzaWlXgXl7qllFiI7Xx8LBBmBQ3wbN1ClII9Va/oWmOR2wgVYt1cQv0uCZxAeDUa9tfKKnJh/GSh1X2wdGV6Qi41aqUXT1LfvjZUr02oBXzYfK686WA+3y6Gk2G5VKtW1VJDr63+BA==

This package consists of 1 elements.

Sequences

  • EA_HDH_v0.1

CHANGES:-
TALENTS: Changed hero set and other major talent changes.
SEQUENCE: Major changes to the sequence.
MACROS: None.

Your feedback is the secret ingredient that transforms great macros into legendary ones! Every click, comment, and suggestion is a building block for future awesomeness.
Let’s work together to create macros that elevate your gameplay to the next level. Help me make them smoother, stronger, and faster! Let’s unlock the full potential of your character together!

P.S. You can find me on Patreon and other social links at: Links - Elfyau

2 Likes

Thank you for making this! I love how you keep it 1 button, with just 1 mod key. Works amazing!

2 Likes

As Always Thank You as this helps this old player big time

1 Like

Elfy! You have done it again thanks for the amazing macro so good if I would say only one maybe not Blur as much but thats just being picky lol thanks again :slight_smile:

1 Like

I’m getting this error when running this after about 45 seconds.

Message: Interface/AddOns/GSE/API/Storage.lua:547: attempt to index field ‘?’ (a nil value)
Time: Mon Feb 9 12:45:24 2026
Count: 9
Stack:
[Interface/AddOns/Blizzard_RestrictedAddOnEnvironment/RestrictedExecution.lua]:485: in function <…d_RestrictedAddOnEnvironment/RestrictedExecution.lua:448>
[tail call]: ?
[Interface/AddOns/Blizzard_RestrictedAddOnEnvironment/SecureHandlers.lua]:285: in function <…izzard_RestrictedAddOnEnvironment/SecureHandlers.lua:279>
[tail call]: ?

Locals:
owningFrame = EA_HDH_v0.1 {
}
signature = “self,button,down”
body = " local mods = “RALT=” .. tostring(IsRightAltKeyDown()) .. “|” ..
“LALT=”.. tostring(IsLeftAltKeyDown()) .. “|” ..
“AALT=” .. tostring(IsAltKeyDown()) .. “|” ..
“RCTRL=” .. tostring(IsRightControlKeyDown()) .. “|” ..
“LCTRL=” .. tostring(IsLeftControlKeyDown()) .. “|” ..
“ACTRL=” .. tostring(IsControlKeyDown()) .. “|” ..
“RSHIFT=” .. tostring(IsRightShiftKeyDown()) .. “|” ..
“LSHIFT=” .. tostring(IsLeftShiftKeyDown()) .. “|” ..
“ASHIFT=” .. tostring(IsShiftKeyDown()) .. “|” ..
“AMOD=” .. tostring(IsModifierKeyDown()) .. “|” ..
“MOUSEBUTTON=” .. GetMouseButtonClicked()
self:SetAttribute(‘localmods’, mods)
local iteration = self:GetAttribute(‘iteration’) or 1
local step = self:GetAttribute(‘step’)
step = tonumber(step)
iteration = tonumber(iteration)
if self:GetAttribute(‘stepped’) then
self:SetAttribute(‘stepped’, false)
else
for k,v in pairs(spelllist[iteration][step]) do
if k == “macrotext” then
factory = {
}
LOCAL_Closure_Factories = {
self = {
}
self,button,down = {
}
}
LOCAL_execution_count = 1

I cannot reproduce this error. Try deleting and then reimporting the sequence.

I’ve done so several times. None of the other sequeneces I use for other classes do this.

I am also not getting this to happen. Are you running with no other addons on? When you import, are you deleting the old sequences first?

Well damn… I’ve deleted all my havoc sequences prior to importing this one. Is there another way to purge GSE of all the sequences besides right-click → delete?

Left-click the sequence and then look down the bottom of GSE, you will see a delete a button, try using that one.

dont right click delete, open the screen and hit the delete button at the bottom.

1 Like

Updated the talents, all updates in the original post.

1 Like

I am very new here and can’t figure out how to make this work. I have GSE and your macro files both installed but can’t get them to keybind and actually use them

If you mean the plugins then in GSE you have to go to the plugin section in GSE and then left click on the plugin to import the sequences - then you should be able to see them to bind them

I see all of the sequences that say default and configuration, I just don’t understand how to select binds for them. I apologize its my first time using all of this. I see all fo the block type repeats and loop but just cant figure out how to bind

I think I am an idiot and figured it out

1 Like

I get the same LUA error. I posted into AI and it returned these results.

This error in GSE (Gnome Sequencer: Enhanced), specifically at Storage.lua:547, is commonly caused by a corrupted custom sequence in your stored data.

The stack trace shows it’s happening during macro execution in a secure environment (Blizzard_RestrictedAddOnEnvironment), likely when GSE tries to access spelllist[iteration][step] (as seen in the locals: for k,v in pairs(spelllist[iteration][step]) do). The ‘?’ in the error indicates a nil table is being indexed, often due to malformed sequence data from a bad import, edit, or save (possibly in combat queue).

It suggested to run /gse forceclean and /gse cleanorphans which I did and the error still pops up.

Are you using the latest GSE? Did you delete the sequence before re-importing?

Getting this error aswell and i did delete and reimported

10596x GSE/API/Storage.lua:796: attempt to index field ‘?’ (a nil value)
[Blizzard_RestrictedAddOnEnvironment/RestrictedFrames.lua]:697: in function <…zard_RestrictedAddOnEnvironment/RestrictedFrames.lua:695>
C: ?
C: ?
[Blizzard_RestrictedAddOnEnvironment/RestrictedFrames.lua]:701: in function <…zard_RestrictedAddOnEnvironment/RestrictedFrames.lua:700>
[Blizzard_RestrictedAddOnEnvironment/RestrictedFrames.lua]:839: in function ‘CallMethod’
[ local mods = “RALT=” .. tostring(IsRightAltKeyDown()) .. “|” ..
“LALT=”.. tostring(IsLeftAltKeyDown()) .. “|” ..
“AALT=” .. tostring(IsAltKeyDown()) .. “|” ..
“RCTRL=” .. tostring(IsRightControlKeyDown()) .. “|” ..
“LCTRL=” .. tostring(IsLeftControlKeyDown()) .. “|” ..
“ACTRL=” .. tostring(IsControlKeyDown()) .. “|” ..
“RSHIFT=” .. tostring(IsRightShiftKeyDown()) .. “|” ..
“LSHIFT=” .. tostring(IsLeftShiftKeyDown()) .. “|” ..
“ASHIFT=” .. tostring(IsShiftKeyDown()) .. “|” ..
“AMOD=” .. tostring(IsModifierKeyDown()) .. “|” ..
“MOUSEBUTTON=” .. GetMouseButtonClicked()
self:SetAttribute(‘localmods’, mods)
local step = self:GetAttribute(‘step’)
local iteration = self:GetAttribute(‘iteration’) or 1
step = tonumber(step)
iteration = tonumber(iteration)
for k,v in pairs(spelllist[iteration][step]) do
if k == “macrotext” then
self:SetAttribute(“macro”, nil )
self:SetAttribute(“unit”, nil )
elseif k == “macro” then
self:SetAttribute(“macrotext”, nil )
self:SetAttribute(“unit”, nil )
elseif k == “Icon” then
– skip
end
self:SetAttribute(k, v )
end

if step < #spelllist[iteration] then
    step = step % #spelllist[iteration] + 1
else
    iteration = iteration % maxsequences + 1
    step = 1
end
self:SetAttribute('step', step)
self:SetAttribute('iteration', iteration)
self:CallMethod('UpdateIcon')
]:38: in function <[string "    local mods = "RALT=" .. tostring(IsRigh..."]:1>

[Blizzard_RestrictedAddOnEnvironment/RestrictedExecution.lua]:485: in function <…d_RestrictedAddOnEnvironment/RestrictedExecution.lua:448>
tail call: ?
[Blizzard_RestrictedAddOnEnvironment/SecureHandlers.lua]:285: in function <…izzard_RestrictedAddOnEnvironment/SecureHandlers.lua:279>
tail call: ?

Locals:
message = “GSE/API/Storage.lua:796: attempt to index field ‘?’ (a nil value)”

solution for me to fix this was to delete the 2 GSE files inhere /World of Warcraft_retail_\WTF\Account\—–YOUR AC NAME—-\SavedVariables
and reimport the GSE stings again

1 Like