1. Cooldown addons don't work when used with a DK (Power Auras/Weak Auras/TMW)

    About Me

    Hi, my in-game name is Draenuur and I'm a DK Tank in the Icecrown Realm. Since I enjoy having all my spells and cooldowns being tracked with a customizable addon, I use Power Auras a lot. I have it on every character I use, which happens to be every class in the game. However, unlike every other class, I noticed an issue with the DKs in general that prevents me from programming cooldowns properly.

    The problem

    The issue is quite simple in theory, but a bit hard to understand. Simply put, Tank DKs have lots of cooldowns that can be tracked by an addon just fine, like Icebound Fortitude, however, when a rune is needed to activate a cooldown, this completely messes up with any and all addons that track the cooldown itself. For example:
    You want to program Rune Tap to display an icon and a sound queue that says ("Rune Tap Ready") once the ability is off CD. Problem being that this ability requires 1 blood rune, and as such, if you use both runes WITHOUT using the ability, it'll be on cooldown nonetheless. Thus, it triggers the cooldown addon to display that the ability is off cooldown even though it was just the rune that was unavailable at that moment. Notice that in the next image, the ability is on cooldown because of the lack of runes, and because of that, the Rune Tap Aura will trigger.
    Spoiler: Show




    What I've tried

    - Checking "Cooldown Only" on Power Auras
    - Changed Activation trigger from "My Spell Cooldown" to "Action Usable"
    - Delayed the animation by 30 seconds so it triggers when it ends
    - Tried to program the same thing in Tell Me When
    - Tried to program the same thing in Weak Auras (even more buggy)

    Possible Solution(s)

    The issue with this problem is that the aura is constantly being tracked, thus whenever a rune is off-CD it triggers the activation requirement. If only there was a way to program it like this: If spell X is used, then, after Y time, trigger Z. Meaning, if Rune Tap is used, after 30 seconds, trigger a sound queue and an icon popup. If anyone knows an addon that can do such a thing, please do tell me. Any suggestions are well received. Thank you!

    EDIT 2: Solution didn't work
    Spoiler: Show
    EDIT: Solution!

    Not even 10 minutes after I posted this I managed to find something in Weak Auras that is built specifically for this case. In the Trigger section, if you choose "Status", there'll be a checkbox for "Ignore Rune CD". This completely solves the problem. I've been bashing my head into the wall for these last 3 hours and the answer was right infront of me.


    I tried using WeakAuras because it had a "Ignore Rune Cooldowns" option. But I was unable to get the cooldowns to work simply because this function isn't working. I went as far as visiting This bugpost from 5 years ago, where they tried to patch it. I tried to manually change the code myself, but since I'm starting C and Java now, I don't have enough experience to read 2.5k lines of code and understand what's going on. There were 3 patches that attempted to solve the issue, one of them that almost solved it. That being the 0003-Fix-ignore-rune-cd-interaction-with-inverse.patch. I created a backup for Prototypes.lua and Weakauras.lua and started to manually apply the patch because the lines on the .patch file itself were offset since this was in WoD era.
    One of the patches broke the addon, the other did nothing and this one kind of worked.
    The one that kind of worked did this: The cooldown icon was no longer dissapearing when the runes were on CD, that wasn't happenning before. But sometimes, the sound queue would trigger a milisecond before the ability went off CD.
    I'll attempt to link the .patch file notes that almost fixed the issue, if anybody can fully understand the code it'll be a lot easier to fix this.
    Spoiler: Show

    Code:
    From 17b7a3df03ca6433638de69a2619bb86c2859dd3 Mon Sep 17 00:00:00 2001
    From: Infus <[email protected]>
    Date: Sun, 7 Dec 2014 12:21:36 +0100
    Subject: [PATCH 3/3] Fix ignore rune cd interaction with inverse
    
    ---
     Prototypes.lua | 11 +++++++++--
     1 file changed, 9 insertions(+), 2 deletions(-)
    
    diff --git a/Prototypes.lua b/Prototypes.lua
    index 2f10336..0e87456 100644
    --- a/Prototypes.lua
    +++ b/Prototypes.lua
    @@ -1435,7 +1435,7 @@ WeakAuras.event_prototypes = {
             display = L["Ignore Rune CD"],
             type = "toggle",
             init = "arg",
    -        test = "(notestRune ~= matchedRune)"
    +        test = "true"
           },
           {
             name = "spellName",
    @@ -1464,7 +1464,14 @@ WeakAuras.event_prototypes = {
           },
           {
             hidden = true,
    -        test = "(inverse and startTime == 0) or (not inverse and startTime > 0)"
    +        -- The logic here is:
    +        -- If _inverse_ is checked, we want it to show if it's not on cooldown, which is either
    +        --   startTime == 0 (truely not on cooldown)
    +        --   or if we should ignore rune cds and it matches a runecd, so: notestRune and matchedRune
    +        -- If _inverse_ is not checked, we want to show if we are on cooldown, so
    +        --   startTime must be > 0, and that's enough if notest rune isn't checked
    +        --   if notest rune is checked, we want to only show if we didn't match a rune
    +        test = "(inverse and (startTime == 0 or (notestRune and matchedRune))) or (not inverse and startTime > 0 and (not notestRune or not matchedRune))"
           }
         },
         durationFunc = function(trigger)
    -- 
    1.9.4.msysgit.1


    Right now, this issue has escalated far beyond my capability to solve it. I reaaaally want this to work, but I'm just hitting rock-bottom time and time again.

    EDIT 3: Found a way around the issue

    So, after hours of research and failed attempts, I settled with this: A Macro that utilizes the /in command to time and /say anything that I want, which in this case will be "Rune Tap Ready!" and "Vampiric Blood Ready!. This is the macro I used:
    Spoiler: Show

    Code:
    #showtooltip
    /cast Rune Tap
    /in 30 /run if GetTime()>(cd1 or 0) then cd1=GetTime()+30 
    SendChatMessage("Rune Tap Ready!","say")end

    With this macro, I'm able to program WeakAuras trigger an event if a certain setence is said by me. So, whenever I say any of these 2 sentences, the activation event will trigger and I'll get the sound Q I wanted without relying on the buggy aspect of runes. This is how the event looks on WeakAuras:
    Spoiler: Show

    [url=https://imgur.com/a/i0m9OAN]


    This doesn't completely solve the issue, and I bet I'll get yelled at by using this at raids since every 30 seconds that message will be popping on /say. But it works, so I'm fine with this. I guess I solved this completely by myself but I'll leave this documented here for anyone who has the same issues as me in the future.
    Edited: June 17, 2019 Reason: Found a way around the issue

  2. About Me

    Hi, my in-game name is Draenuur and I'm a DK Tank in the Icecrown Realm. Since I enjoy having all my spells and cooldowns being tracked with a customizable addon, I use Power Auras a lot. I have it on every character I use, which happens to be every class in the game. However, unlike every other class, I noticed an issue with the DKs in general that prevents me from programming cooldowns properly.

    The problem

    The issue is quite simple in theory, but a bit hard to understand. Simply put, Tank DKs have lots of cooldowns that can be tracked by an addon just fine, like Icebound Fortitude, however, when a rune is needed to activate a cooldown, this completely messes up with any and all addons that track the cooldown itself. For example:
    You want to program Rune Tap to display an icon and a sound queue that says ("Rune Tap Ready") once the ability is off CD. Problem being that this ability requires 1 blood rune, and as such, if you use both runes WITHOUT using the ability, it'll be on cooldown nonetheless. Thus, it triggers the cooldown addon to display that the ability is off cooldown even though it was just the rune that was unavailable at that moment. Notice that in the next image, the ability is on cooldown because of the lack of runes, and because of that, the Rune Tap Aura will trigger.
    Spoiler: Show




    What I've tried

    - Checking "Cooldown Only" on Power Auras
    - Changed Activation trigger from "My Spell Cooldown" to "Action Usable"
    - Delayed the animation by 30 seconds so it triggers when it ends
    - Tried to program the same thing in Tell Me When
    - Tried to program the same thing in Weak Auras (even more buggy)

    Possible Solution(s)

    The issue with this problem is that the aura is constantly being tracked, thus whenever a rune is off-CD it triggers the activation requirement. If only there was a way to program it like this: If spell X is used, then, after Y time, trigger Z. Meaning, if Rune Tap is used, after 30 seconds, trigger a sound queue and an icon popup. If anyone knows an addon that can do such a thing, please do tell me. Any suggestions are well received. Thank you!

    EDIT 2: Solution didn't work
    Spoiler: Show
    EDIT: Solution!

    Not even 10 minutes after I posted this I managed to find something in Weak Auras that is built specifically for this case. In the Trigger section, if you choose "Status", there'll be a checkbox for "Ignore Rune CD". This completely solves the problem. I've been bashing my head into the wall for these last 3 hours and the answer was right infront of me.


    I tried using WeakAuras because it had a "Ignore Rune Cooldowns" option. But I was unable to get the cooldowns to work simply because this function isn't working. I went as far as visiting This bugpost from 5 years ago, where they tried to patch it. I tried to manually change the code myself, but since I'm starting C and Java now, I don't have enough experience to read 2.5k lines of code and understand what's going on. There were 3 patches that attempted to solve the issue, one of them that almost solved it. That being the 0003-Fix-ignore-rune-cd-interaction-with-inverse.patch. I created a backup for Prototypes.lua and Weakauras.lua and started to manually apply the patch because the lines on the .patch file itself were offset since this was in WoD era.
    One of the patches broke the addon, the other did nothing and this one kind of worked.
    The one that kind of worked did this: The cooldown icon was no longer dissapearing when the runes were on CD, that wasn't happenning before. But sometimes, the sound queue would trigger a milisecond before the ability went off CD.
    I'll attempt to link the .patch file notes that almost fixed the issue, if anybody can fully understand the code it'll be a lot easier to fix this.
    Spoiler: Show

    Code:
    From 17b7a3df03ca6433638de69a2619bb86c2859dd3 Mon Sep 17 00:00:00 2001
    From: Infus <[email protected]>
    Date: Sun, 7 Dec 2014 12:21:36 +0100
    Subject: [PATCH 3/3] Fix ignore rune cd interaction with inverse
    
    ---
     Prototypes.lua | 11 +++++++++--
     1 file changed, 9 insertions(+), 2 deletions(-)
    
    diff --git a/Prototypes.lua b/Prototypes.lua
    index 2f10336..0e87456 100644
    --- a/Prototypes.lua
    +++ b/Prototypes.lua
    @@ -1435,7 +1435,7 @@ WeakAuras.event_prototypes = {
             display = L["Ignore Rune CD"],
             type = "toggle",
             init = "arg",
    -        test = "(notestRune ~= matchedRune)"
    +        test = "true"
           },
           {
             name = "spellName",
    @@ -1464,7 +1464,14 @@ WeakAuras.event_prototypes = {
           },
           {
             hidden = true,
    -        test = "(inverse and startTime == 0) or (not inverse and startTime > 0)"
    +        -- The logic here is:
    +        -- If _inverse_ is checked, we want it to show if it's not on cooldown, which is either
    +        --   startTime == 0 (truely not on cooldown)
    +        --   or if we should ignore rune cds and it matches a runecd, so: notestRune and matchedRune
    +        -- If _inverse_ is not checked, we want to show if we are on cooldown, so
    +        --   startTime must be > 0, and that's enough if notest rune isn't checked
    +        --   if notest rune is checked, we want to only show if we didn't match a rune
    +        test = "(inverse and (startTime == 0 or (notestRune and matchedRune))) or (not inverse and startTime > 0 and (not notestRune or not matchedRune))"
           }
         },
         durationFunc = function(trigger)
    -- 
    1.9.4.msysgit.1


    Right now, this issue has escalated far beyond my capability to solve it. I reaaaally want this to work, but I'm just hitting rock-bottom time and time again.

    EDIT 3: Found a way around the issue

    So, after hours of research and failed attempts, I settled with this: A Macro that utilizes the /in command to time and /say anything that I want, which in this case will be "Rune Tap Ready!" and "Vampiric Blood Ready!. This is the macro I used:
    Spoiler: Show

    Code:
    #showtooltip
    /cast Rune Tap
    /in 30 /run if GetTime()>(cd1 or 0) then cd1=GetTime()+30 
    SendChatMessage("Rune Tap Ready!","say")end

    With this macro, I'm able to program WeakAuras trigger an event if a certain setence is said by me. So, whenever I say any of these 2 sentences, the activation event will trigger and I'll get the sound Q I wanted without relying on the buggy aspect of runes. This is how the event looks on WeakAuras:
    Spoiler: Show

    [url=https://imgur.com/a/i0m9OAN]


    This doesn't completely solve the issue, and I bet I'll get yelled at by using this at raids since every 30 seconds that message will be popping on /say. But it works, so I'm fine with this. I guess I solved this completely by myself but I'll leave this documented here for anyone who has the same issues as me in the future.

    I would chang say to whisper to yourself. That should calm down other raiders :-)

  3. Necro post activated

    A simplier way is to have the remaining CD on the ability when you cast it.
    You just create an aura that appears the moment you use it :


    In the "Trigger" tab

    Type : event
    Event : combat log
    Message prefix : spell
    Message suffix : Cast Sucess
    Source unit : Player
    Spell name : the CD you want to track, like howling blast, unbreakable armor, etc.
    Hide => Timed : put the CD of the ability (8 sec for howling blast, 1 min for unbreakable armor, etc.


    The hardest part is to find the icon of the ability.

    On "Display" tab :
    Check the "Cooldown" box
    Display icon => Choose, then try to find the icon, most of the time starting with the first letters of the ability works


    In the "Load" tab, I recommand to check "in combat", to only see them in combat.
    Edited: August 2, 2020

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •