okay i tried this on live servers and i noticed something weird... RUNE_POWER_UPDATE always passes false for the 2nd arguement (which you store into isEnergized
I spammed only frost rune so I could look at it better, but when I cast Icy touch it would call the event, and when I cast it again it would call it once to try the first frost rune, and again for the 2nd one.
/run test = CreateFrame("Frame") test:RegisterEvent("RUNE_POWER_UPDATE") test:SetScript("OnEvent", function(self,event,arg1,arg2) print(event,arg1,arg2 or "false") for i=5, 6 do print(GetTime(),GetRuneCooldown(i)) end end)
this would output
Code:
--first Icy Touch
RUNE_POWER_UPDATE 5 false
93345.183 93345.183 10 false --time called, 10 sec CD, false (false being ready)
93345.183 0 10 true -- 0 because this rune wasnt called, 10 sec CD, true (rune is ready)
--second Icy Touch
RUNE_POWER_UPDATE 5 false
93347.799 93345.172 10 false
93347.799 0 10 true
RUNE_POWER_UPDATE 5 false
93347.8 93345.173 10 false
93347.8 0 10 true
RUNE_POWER_UPDATE 6 false
93347.801 93345.173 10 false
93347.801 93355.172 10 false --these 2 numbers are 10 apart...
timestamps are in yellow, that is when i pushed the 2nd icy touch, so the last 3 numbers are within 0.003 seconds of each other.
hopefully that call order will help debug on whats actually happening