Thread: Addon like Hero

  1. #1
    Deleted

    Addon like Hero

    Hey.

    In case someone recalls this addon, Hero, would anyone happen to know something similar?

    Addon used to pop out nice RW-like message on top of the screen whenever someone used cooldowns, from Bloodlust to Shield wall to Pain suppression to Barrier and so on. And when they faded, providing very easy way of chaining cooldowns. However the addon has been left for dead and nowadays only works on Tranquility and Hymns, which obviously isn't enough.

    PowerAuras is supposedly good for some cooldowns, mainly when you have to chain stuff on target, but I'd presume it doesen't recognize all cooldowns (Tranquility or Hymns coming to mind..?), nor does it work if someone outside your focus or target frame pops defensive cooldown.

    Anyone, anything?

  2. #2
    Deleted
    Phoenix Style

  3. #3
    Deleted
    I'm not seeing how Phoenix Style would print stuff out on my window. I don't mean that it would have to be /rw itself or anything, it's enough that it shows up as a "warning" to myself.

    Though I don't see how PS would do it either way. Maybe I'm just blind and can't find that option, even after searching through them ingame.

  4. #4
    Deleted
    Personally I use ORA3

  5. #5
    Deleted
    Everyone in our raid has RSA - Raeli's Spell Announcer, lets everyone know when cds are used and when it ends, you can fix it up pretty nice. Only problem is dont work so well with lazy people.

  6. #6


    Quote Originally Posted by Lich King
    "You speak of justice? Of cowardice? I will show you the justice of the grave... and the true meaning of fear."

  7. #7
    Deleted
    Using Hermes for tracking cd's on stuff. ^^ However, pushing stuff to cooldown doesen't really notify me by warning or anything, nor can I really recall duration of each cd. Helps me to coordinate stuff though.

    RSA is decent, I like tanks having it heroics (..well, I did, when heroics were something that required at least some attention. ^^) - but problem arise when people are away from the chat bubble range. In a hectic battle I'm just not noticing chat log from the corner of the screen. Raid warning is an option I will have to pursue in case I can't find anything else though. But people dislike addons spamming stuff (you know those "I ress you now %name", or "GET OVER HERE!!11" death grips), and that info would mostly be useful just for healers, thus extra spammage isn't that nice.

    I will check out oRA3. I actually recall some very old version of it from TBC which didn't have that functionality. But then again, it's been years since that and new functions come and go. ^^

  8. #8
    Deleted
    As an Additional thought,

    Ora provides a cool down timer so you know when they are available again, I use this to track rebirth, Bloodlust and the like but can also be used for smaller duration cool downs.

    However, I also Use Grid and have it configured to show things like pain suppression when its active and on who, this helps with chaining cool downs as well

  9. #9
    Deleted
    Made something up for you real quick:

    Code:
    local cooldownNames = {
        -- add cooldowns here, format is ["name"] = {r=r, g=g, b=b},
        ["Bloodlust"] = {r=0.2,g=0.2,b=1}, -- this would be blue
        ["Pain Suppression"] = {r=1,g=0.2,b=0.2}, -- this would be red, for example
        ["Power Word: Barrier"] = {r=1,g=0.2,b=0.2},
        ["Power Infusion"] = {r=0.2,g=1,b=0.2},
    }
    local function Add(spellID, player, target, colTab)
        local name, _, icon = GetSpellInfo(spellID)
        RaidNotice_AddMessage(RaidWarningFrame, "|T"..icon..":20|t "..player..": "..name..(target and (" -> "..target) or ""), colTab)
    end
    
    local a = CreateFrame("Frame")
    a:SetScript("OnEvent",function(self,event,...)
        local eType = select(2,...)
        if (eType == "SPELL_CAST_SUCCESS") or (eType == "SPELL_CAST_START") then
            local sID, sName = select(12,...)
            if cooldownNames[sName] then
                Add(sID, (select(5,...)), (select(9,...)), cooldownNames[sName])
            end
        end
    end)
    a:RegisterEvent("COMBAT_LOG_EVENT_UNFILTERED")
    How to use. Un Tested and seems to work. Report back with issues.
    Last edited by mmocba105e19de; 2011-09-30 at 03:56 PM.

  10. #10
    Deleted
    Woah. Treeston, seems to work perfectly. Just threw random Barrier and PS onto myself, it worked at least. ^^

    I presume I can add all kinds of cooldowns from others as well into it rather easily as well. Is there any way to adjust it so that, for example in Hero there was +++ Cooldown on +++, then after it ends, there was another message saying --- Cooldown ends ---? I can figure out how to adjust the text, but I don't have enough knowledge to add them into timers for another message at the end of their duration. Or would that require lots of extra work to add them in?



    And people suggesting oRA3, I'd say it's actually slightly better than Hermes (smaller size), however all suggested ones have been tracking cooldowns when they are OFF, Treeston's clip is only one tracking when cooldowns are ON.


    Edit. After adding lots of cooldowns into the clip, I noticed that at least Innervate and Barkskin pops out twice. All DK cooldowns as well as pally tank cooldowns pop in just once. As well as my own.
    Last edited by mmoc3034e172e6; 2011-09-30 at 04:31 PM.

  11. #11
    Deleted
    Code:
    local cooldownNames = {
        -- add cooldowns here, format is ["name"] = {r=r, g=g, b=b,duration},
        ["Bloodlust"] = {r=0.2,g=0.2,b=1,40}, -- this would be blue
        ["Pain Suppression"] = {r=1,g=0.2,b=0.2,8}, -- this would be red, for example
        ["Power Word: Barrier"] = {r=1,g=0.2,b=0.2,10},
        ["Power Infusion"] = {r=0.2,g=1,b=0.2,15},
    }
    local fadedBuffs = {
        
    }
    local a = CreateFrame("Frame")
    a.scheduled = {}
    local function Add(spellID, player, target, colTab, isFade)
        local name, _, icon = GetSpellInfo(spellID)
        RaidNotice_AddMessage(RaidWarningFrame, (isFade and "---" or "+++").." |T"..icon..":20|t "..player..": "..name..(target and (" -> "..target) or "")..(isFade and " ---" or " +++"), colTab)
        if not isFade then
            tinsert(a.scheduled,{timer=colTab[1],player=player,target=target,id=spellID,color=colTab})
            a:Show()
        end
    end
    a:Hide()
    a:SetScript("OnUpdate",function(s,e)
        local i=1
        local d=s.scheduled[i]
        while d do
            d.timer = d.timer-e
            if d.timer <= 0 then
                Add(d.id, d.player, d.target, d.color, true)
                tremove(s.scheduled,i)
            else
                i=i+1
            end
            d = s.scheduled[i]
        end
        if i == 1 then
            s:Hide()
        end
    end)
    a:SetScript("OnEvent",function(self,event,...)
        local eType = select(2,...)
        if (eType == "SPELL_CAST_SUCCESS") or (eType == "SPELL_CAST_START") then
            local sID, sName = select(12,...)
            if cooldownNames[sName] then
                Add(sID, (select(5,...)), (select(9,...)), cooldownNames[sName])
            end
        end
    end)
    a:RegisterEvent("COMBAT_LOG_EVENT_UNFILTERED")
    That's heavily untested though.
    Last edited by mmocba105e19de; 2011-09-30 at 04:44 PM.

  12. #12
    Deleted
    Message: Interface\AddOns\Hero\Hero.lua:26: attempt to perform arithmetic on global 'elapsed' (a nil value)
    Time: 09/30/11 19:39:42
    Count: 2049
    Stack: [C]: ?
    Interface\AddOns\Hero\Hero.lua:26: in function <Interface\AddOns\Hero\Hero.lua:22>


    Still properly informs on spellcast, however nothing happens after the buff has ended. Throws an error the moment spell is cast, indicating an error somewhere in the timer starting[?].


    Also from last post's edit; After adding lots of cooldowns into the original clip, I noticed that at least Innervate and Barkskin pops out twice. All DK cooldowns as well as pally tank cooldowns pop in just once. As well as my own. Duration is easily addable once bug is fixed, so that's not a big deal. Nor is really the Innervate and Barkskin's doublepop, though it's kinda weird.

  13. #13
    Deleted
    Innervate glyph? If both spells are called "Innervate", that would explain it. Anyway, fixed the error above.

  14. #14
    Deleted
    I figured that it might be the cause, but I did not notice Innervate being glyphed, and Barkskin glyph is Amberskin Protection something. Rather oddly, updated version does not throw it up twice. Lagged on something? I don't know.. either way, wasn't big deal then and somehow it was fixed with the timer add.


    Thanks a LOT for quickly making that out, I'll add lots of spells into it and I suppose I might as well edit my post and add it for rest of the guys for later use, if someone needs.


    Code:
        -- add cooldowns here, format is ["name"] = {r=r, g=g, b=b},
        -- Priest
        ["Pain Suppression"] = {r=1,g=0.2,b=0.2,8}, -- this would be red, for example
        ["Power Word: Barrier"] = {r=1,g=0.2,b=0.2,10},
        ["Power Infusion"] = {r=0.2,g=1,b=0.2,15},
        ["Guardian Spirit"] = {r=1,g=0.2,b=0.2,10},
        ["Divine Hymn"] = {r=0.2,g=1,b=0.2,9},
        ["Hymn of Hope"] = {r=0.2,g=1,b=0.2,9},
        ["Dispersion"] = {r=1,g=0.2,b=0.2,6},
        -- Paladin
        ["Hand of Sacrifice"] = {r=1,g=0.2,b=0.2,12},
        ["Divine Guardian"] = {r=1,g=0.2,b=0.2,6},
        ["Aura Mastery"]  = {r=1,g=0.2,b=0.2,6},
        ["Guardian of Ancient Kings"] = {r=1,g=0.2,b=0.2,12},
        ["Divine Protection"] = {r=1,g=0.2,b=0.2,10},
        ["Ardent Defender"] = {r=1,g=0.2,b=0.2,10},
        ["Hand of Protection"] = {r=1,g=0.2,b=0.2,10},
        ["Lay on Hands"]  = {r=0.2,g=1,b=0.2,0},
        -- Druid
        ["Tree of Life"] = {r=0.2,g=1,b=0.2,25},
        ["Barkskin"] = {r=1,g=0.2,b=0.2,12},
        ["Survival Instincts"] = {r=1,g=0.2,b=0.2,12},
        ["Innervate"] = {r=0.2,g=1,b=0.2,10},
        ["Tranquility"] = {r=0.2,g=1,b=0.2,10},
        ["Frenzied Regeneration"] = {r=0.2,g=1,b=0.2,20},
        -- Shaman
        ["Bloodlust"] = {r=0.2,g=0.2,b=1,40}, -- this would be blue
        ["Mana Tide Totem"]  = {r=0.2,g=0.2,b=1,12},
        ["Tremor Totem"]  = {r=0.2,g=0.2,b=1,6},
       -- Warrior
        ["Shield Wall"] = {r=1,g=0.2,b=0.2,12},
        ["Shield Block"] = {r=1,g=0.2,b=0.2,10},
        ["Last Stand"]  = {r=1,g=0.2,b=0.2,20},
        ["Rallying Cry"] = {r=0.2,g=0.2,b=1,10},
       -- Mage
        ["Time Warp"] = {r=0.2,g=0.2,b=1,40},
        ["Ice Block"]  = {r=1,g=0.2,b=0.2,10},
       -- DK
        ["Anti-Magic Shell"]  = {r=1,g=0.2,b=0.2,5},
        ["Bone Shield"]  = {r=1,g=0.2,b=0.2,0},
        ["Icebound Fortitude"]  = {r=1,g=0.2,b=0.2,12},
        ["Vampiric Blood"]  = {r=1,g=0.2,b=0.2,10},
        -- Rogue
        ["Evasion"]  = {r=1,g=0.2,b=0.2,6},
        ["Cloak of Shadows"]  = {r=1,g=0.2,b=0.2,5},
    Timer is 0 for Bone Shield, Lay on Hands and stuff, so they obviously pop out twice. But.. there's not much to be done for them. They don't have set duration. This should include everything that healer needs, though I made the list during a break in raid.. Guardian of Ancient Kings probably includes ret and holy ones as well, duration is set for prot one though.

    Some stuff still pops out twice, Anti-Magic Shell at the moment. Seems to be quite random what it is, but.. still, kinda strange.
    Last edited by mmoc3034e172e6; 2011-09-30 at 06:13 PM.

  15. #15
    Deleted
    Nice addon treeston.
    Got one question tho, how would it also announce it in party chat? for both cooldowns and faded.
    Thanks in advance

  16. #16
    Deleted
    Code:
    local announceParty=true
    local cooldownNames = {
        -- add cooldowns here, format is ["name"] = {r=r, g=g, b=b},
        -- Priest
        ["Pain Suppression"] = {r=1,g=0.2,b=0.2,8}, -- this would be red, for example
        ["Power Word: Barrier"] = {r=1,g=0.2,b=0.2,10},
        ["Power Infusion"] = {r=0.2,g=1,b=0.2,15},
        ["Guardian Spirit"] = {r=1,g=0.2,b=0.2,10},
        ["Divine Hymn"] = {r=0.2,g=1,b=0.2,9},
        ["Hymn of Hope"] = {r=0.2,g=1,b=0.2,9},
        ["Dispersion"] = {r=1,g=0.2,b=0.2,6},
        -- Paladin
        ["Hand of Sacrifice"] = {r=1,g=0.2,b=0.2,12},
        ["Divine Guardian"] = {r=1,g=0.2,b=0.2,6},
        ["Aura Mastery"]  = {r=1,g=0.2,b=0.2,6},
        ["Guardian of Ancient Kings"] = {r=1,g=0.2,b=0.2,12},
        ["Divine Protection"] = {r=1,g=0.2,b=0.2,10},
        ["Ardent Defender"] = {r=1,g=0.2,b=0.2,10},
        ["Hand of Protection"] = {r=1,g=0.2,b=0.2,10},
        ["Lay on Hands"]  = {r=0.2,g=1,b=0.2,0},
        -- Druid
        ["Tree of Life"] = {r=0.2,g=1,b=0.2,25},
        ["Barkskin"] = {r=1,g=0.2,b=0.2,12},
        ["Survival Instincts"] = {r=1,g=0.2,b=0.2,12},
        ["Innervate"] = {r=0.2,g=1,b=0.2,10},
        ["Tranquility"] = {r=0.2,g=1,b=0.2,10},
        ["Frenzied Regeneration"] = {r=0.2,g=1,b=0.2,20},
        -- Shaman
        ["Bloodlust"] = {r=0.2,g=0.2,b=1,40}, -- this would be blue
        ["Mana Tide Totem"]  = {r=0.2,g=0.2,b=1,12},
        ["Tremor Totem"]  = {r=0.2,g=0.2,b=1,6},
       -- Warrior
        ["Shield Wall"] = {r=1,g=0.2,b=0.2,12},
        ["Shield Block"] = {r=1,g=0.2,b=0.2,10},
        ["Last Stand"]  = {r=1,g=0.2,b=0.2,20},
        ["Rallying Cry"] = {r=0.2,g=0.2,b=1,10},
       -- Mage
        ["Time Warp"] = {r=0.2,g=0.2,b=1,40},
        ["Ice Block"]  = {r=1,g=0.2,b=0.2,10},
       -- DK
        ["Anti-Magic Shell"]  = {r=1,g=0.2,b=0.2,5},
        ["Bone Shield"]  = {r=1,g=0.2,b=0.2,0},
        ["Icebound Fortitude"]  = {r=1,g=0.2,b=0.2,12},
        ["Vampiric Blood"]  = {r=1,g=0.2,b=0.2,10},
        -- Rogue
        ["Evasion"]  = {r=1,g=0.2,b=0.2,6},
        ["Cloak of Shadows"]  = {r=1,g=0.2,b=0.2,5},
    }
    local a = CreateFrame("Frame")
    a.scheduled = {}
    local function Add(spellID, player, target, colTab, isFade)
        local name, _, icon = GetSpellInfo(spellID)
        RaidNotice_AddMessage(RaidWarningFrame, (isFade and "---" or "+++").." |T"..icon..":20|t "..player..": "..name..(target and (" -> "..target) or "")..(isFade and " ---" or " +++"), colTab)
        if announceParty then
            SendChatMessage((isFade and "---" or "+++").." "..player..": "..name..(target and (" -> "..target) or "")..(isFade and " ---" or " +++"), "PARTY")
        end
        if (not isFade) and (colTab[1] > 0) then
            tinsert(a.scheduled,{timer=colTab[1],player=player,target=target,id=spellID,color=colTab})
            a:Show()
        end
    end
    a:Hide()
    a:SetScript("OnUpdate",function(s,e)
        local i=1
        local d=s.scheduled[i]
        while d do
            d.timer = d.timer-e
            if d.timer <= 0 then
                Add(d.id, d.player, d.target, d.color, true)
                tremove(s.scheduled,i)
            else
                i=i+1
            end
            d = s.scheduled[i]
        end
        if i == 1 then
            s:Hide()
        end
    end)
    a:SetScript("OnEvent",function(self,event,...)
        local eType = select(2,...)
        if (eType == "SPELL_CAST_SUCCESS") or (eType == "SPELL_CAST_START") then
            local sID, sName = select(12,...)
            if cooldownNames[sName] then
                Add(sID, (select(5,...)), (select(9,...)), cooldownNames[sName])
            end
        end
    end)
    a:RegisterEvent("COMBAT_LOG_EVENT_UNFILTERED")
    There you go. Also made it not announce timers that are zero twice.

    PS: Oh, and you see that boolean toggle at the top? Yeah, you can turn that off if you just want local announcing. Just in case you didn't figure.
    Last edited by mmocba105e19de; 2011-10-02 at 01:52 PM.

  17. #17
    Deleted
    Getting this error now:
    Message: Interface\AddOns\Arena\Arena.lua:64: ')' expected (to close '(' at line 63) near 'if'
    Time: 10/02/11 14:41:54
    Count: 1
    Stack:
    Locals:

  18. #18
    Deleted
    I blame randomly deleted brackets while typing. Fixed it.

  19. #19
    Firstly, sorry for ripping an old post, but i found this usefull, and I can confirm that this is working.

    I got one question though, hope its possible, to make the announce into its own bit thats moveable within the UI, and not use the RW, turned the boolean at the start to false.

    Also, Divine Hymn keep popping up because of the buff that it leaves afterwards with the same name. Tried changing it in the lua to use the spellID, didnt work.
    Last edited by Soiprax; 2015-07-30 at 07:43 AM.

Posting Permissions

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