Get an Epic Experience with Premium

ButtonTimers

Buffs & Debuffs Login to Add Favorites
  • 9 Likes
  • World of Warcraft
  • 1,530 Monthly Downloads
  • Supports: 5.4.0
  • 427,878 Total Downloads
  • Updated 09/12/2013
  • Created 02/16/2009
  • 580 Favorites
  • Project Site
  • Comments
  • Release Type: Release
  • License: GNU General Public License version 3 (GPLv3)
  • Newest File: 2.5.12
or

About ButtonTimers

ButtonTimers is action buttons with timers attached. The timers can be configured to show a buff/debuff or the cooldown of a spell. The timers are highly configurable, with lots of options to play with.

Important note:

There are a limited number of action slots (1-120). These correspond to 10 bars of 12 buttons each. These are the same 120 slots that every action bar mod has to use (Bartender, PitBull, Blizzard's standard UI, etc.)

Chances are you aren't using all 12 slots on all 10 bars. You can configure ButtonTimers to use any of the 120 action slots you want. Do this with the "First button on bar is.." slider in the bar configuration.

If you don't change the "First button on bar is..", the bars will default to bars 10, 9, 8, 7. Note that bars 7-9 are by default the stance bars, so if your class uses stances you may wish to change it.

Getting Started:

When you first start the mod, you will see 4 bars of 12 buttons each. Open up the options (in the interface->addons panel), and disable the bars you won't be using. Next change the number of buttons from 12 to however many buttons you would like to see.

Now change the action slots the bar is showing you. Just take the action offset slider and slide it until you see some unused action buttons. Then drag the spells/abilities of your choice onto the bar.

The default is to track dots/debuffs/buffs. If that's what you want the timer to reflect, you are done. If you want to see a cooldown instead, select the configuration for the button and change the selector from "Aura" to "Cooldown".

There are lots of configuration options, go ahead and play with them. But that should be enough to get you started.

Bar configuration options are:

  • '''Bar Enabled:''' enable / disable the bar.
  • '''Hide out of combat:''' don't show the bar out of combat.
  • '''Bar Locked:''' lock the bar in position so that it cannot be dragged.
  • '''Orientation:''' horizontal or vertical layout for the buttons on the bar. You can also put the timers on the buttons themselves.
  • '''Timer Location:''' you can select whether you want the bar be on the left or right of the button (in vertical orientation) or above/below the button (in horizontal orientation)
  • '''Button Spacing:''' the space between the buttons on the bar.
  • '''Bar Scale:''' size the whole bar larger or smaller
  • '''Bar Length:''' length of the timer bar
  • '''Button Count:''' number of buttons on the bar (1-12)
  • '''First button on bar is..''' action slot number of the first button on the bar. Blizzard gives 120 action slots, which are traditionally allocated into 10 bars, but this mod gives a finer control over which slots you wish to use. Just slide this control until you find some unused slots.

Button options are:

  • '''Type:''' Set whether you wish to monitor a cooldown or an aura on the default bar target. You can also monitor both aura and cooldown. The cooldown will show up on the button and the aura timer on the bar if you select both.
  • '''Timer Type:''' The timer can either be shown as a percentage of the aura/cooldown duration or in fixed time. For example, if you choose a fixed time with a time of 10s, a full bar will always represent 10 or more seconds. This makes it easier to see which aura/cooldown will complete first, regardless of the spell's length.
    • '''Bar Time:''' This sets the max time displayed on a fixed time timer bar. Any timer durations longer than Bar Time will show as a full bar.
  • '''Show others' spells:''' By default, the timer will only monitor auras on the target if you were the caster of the spell. Click this button if you wish to see other's spells as well. The timer will always show your own spell if you have one on the target. Note: Pet spells do not count as being cast by you, so if you wish to monitor a pet spell then click this button.
  • '''Other Auras:''' By default, an aura timer will monitor the bar's default target for an aura matching the name of the spell on the action button. In this field you can enter additional auras (in a comma separated list) to look for.
    • "Show Aura Icon:" When checked, the icon on the button will update to match the aura we are showing the timer for.
    • "Ignore Button Aura:" When checked, timers will only be created for the auras specified in the Other Auras field. If Show Aura Icon is also checked, then the icon on the button when no timer is present will be the first aura listed in the Other Auras field.
  • '''Cooldown spell:''' By default, a cooldown timer will monitor the cooldown on the action on the bar. But you can also enter a spell name to monitor instead.
  • '''Bar Color:''' The color of the timer bar.
  • '''Target:''' This will select the default target (to target, focus target, self, party, pet) for all actions on the bar. It also controls what target to monitor for auras.
  • '''Use as spell target:''' If set, target will be the spell target as well as the target to monitor for the selected aura.
  • '''Warn less than cast time:''' Change the bar color when timer less than cast time. Also tints the action button.
  • '''Warning Bar Color:''' Bar color for timers when remaining time less than cast time.
  • '''Adjust Timer:''' Number of seconds to add to timer (can be negative).

Command line options:

'''/buttontimers reset''' - reset bar positions to default

'''/buttontimers config''' - open the configuration dialog (can also be accessed on Blizzards interface -> addons panel)

------------------------------------------------------------------------
r54 | stencil | 2013-09-12 12:15:41 +0000 (Thu, 12 Sep 2013) | 1 line
Changed paths:
   A /tags/2.5.12 (from /trunk:53)

Tagging as release 2.5.12
------------------------------------------------------------------------
r53 | stencil | 2013-09-10 09:31:39 +0000 (Tue, 10 Sep 2013) | 1 line
Changed paths:
   M /trunk/ButtonTimers.toc

toc bump
------------------------------------------------------------------------

Comments

First Previous Page 9 of 59 Next Last
  • #775

    Sorry if this has been brought up before, but I couldn't find a similar complaint in the comments.  First off, this is my favorite addon I use.  I couldn't do nearly as well on my destro lock without it.  I really hope you guys keep up the great work through mop.  But lately I've been getting a pretty decent input lag when I press my buttons, and the gcd seems to lag behind my key presses quite a bit.  This rarely happens during raids, but seems to be always present while in org beating on dummies.  I didn't know what to make of it till I recommended this addon to someone, and they started having the same problem with a key press input lag as well.  Thanks for any help and thanks again for a great addon.

    Last edited by jpgator96 on 4/4/2012 11:57:20 PM
  • #838

    Was the problem with input lag ever addressed?  Every time I soulburn on my lock, everything freezes for a second, really screwing with my multi-dotting.  I love this addon, and have been using it for all my toons for many years now, but the lag issue is forcing me to ditch it till it's fixed.

    I tried disabling all other addons and isolated it to buttontimers.  Clearing the savedvariables file to reset the configuration didn't help.  I can't for the life of me figure out why it's only this spell that causes the problem.

  • #773

    Hey,

    I'm using this addon long time now it helped me a lot, I couldn't play without it now on my lock.

    After last update i've noticed there is no tracking time on my dots when i set aura and timers location on buttons, it works fine for other option (right/top, left/bottom), cooldowns are ok with all three.

    Should i do clean install or try older version and wait until 4.2 relase is up ?

    thanks a lot for good work! keep it up :)

    EDIT:  I installed version 3.2.1 and it works fine again.

    Last edited by serczas on 3/28/2012 11:08:37 AM
  • #774

    Thank you for the bug report! I found the problem and subsequent beta or release builds should work correctly if you show timers on buttons.

  • #772

    i manage how to work with weapon enchants. here is a list of my changes to BETA-2.
    in Core.lua, replace line 27 by this:
    ABT_MAIN_HAND = 9
    ABT_OFF_HAND = 10
    ABT_RANGED = 11
    ABT_TEXTURE_MH = 16 -- index of Main Hand slot
    ABT_TEXTURE_OH = 17 -- index of Off-Hand slot
    ABT_TEXTURE_RANGED = 18 -- index of Ranged slot
    ABT_TARGET_NAMES = { [ABT_TARGET]="target", [ABT_FOCUS]="focus", [ABT_PLAYER]="player", [ABT_PARTY]="party", [ABT_PET]="pet", [ABT_VEHICLE]="vehicle", [ABT_TOTEM]="totem", [ABT_MAIN_HAND]="mainhand", [ABT_OFF_HAND]="offhand", [ABT_RANGED]="ranged" }

    after line 270, just before local buttonOptions definition add following:
    function ABT:isWeaponEnchant(info)
        local barIdx, buttonIdx = ABT:getIndex(info)
        local tgt = ABT:GetValue(barIdx, buttonIdx, "target")
        return tgt == ABT_MAIN_HAND or tgt == ABT_OFF_HAND or tgt == ABT_RANGED
    end

    then replace line 291 by this:
                values = { [ABT_TARGET]=L["Target"], [ABT_FOCUS]=L["Focus"], [ABT_PLAYER]=L["Player"], [ABT_PARTY]=L["Party/Raid Member"], [ABT_PET]=L["Pet"], [ABT_VEHICLE]=L["Vehicle"], [ABT_TOTEM]=L["Totem"], [ABT_MAIN_HAND]=L["Main Hand"], [ABT_OFF_HAND]=L["Off-Hand"], [ABT_RANGED]=L["Ranged"] },

    line 352 by this:
                hidden = function(info) return ABT:isNotAura(info) or ABT:isTotem(info) or ABT:isWeaponEnchant(info) end,

    line 361 by:
                hidden = function(info) return ABT:isNotAura(info) or ABT:isTotem(info) or ABT:isWeaponEnchant(info) end,

    after line 952 add this:
        self:RegisterEvent ("UNIT_INVENTORY_CHANGED", "MarkNeedDebuffs") -- to track item enchants

    after line 1055 add this:
        self:UnregisterEvent ("UNIT_INVENTORY_CHANGED")

    after line 1387 add this:
                    elseif (target == "mainhand") then
                      local hasEnchant, enchantExpiration, enchantCharges = GetWeaponEnchantInfo();
                      if (hasEnchant) then
                          local textureName = GetInventoryItemTexture("player", ABT_TEXTURE_MH);
                          auraFound = { name = "Main Hand", iconTexture = textureName, count = enchantCharges, caster = "player", duration = 1800, expirationTime = (currenttime + enchantExpiration/1000) }
                      end
                    elseif (target == "offhand") then
                      local _, _, _, hasEnchant, enchantExpiration, enchantCharges = GetWeaponEnchantInfo();
                      if (hasEnchant) then
                          local textureName = GetInventoryItemTexture("player", ABT_TEXTURE_OH);
                          auraFound = { name = "Off-Hand", iconTexture = textureName, count = enchantCharges, caster = "player", duration = 1800, expirationTime = (currenttime + enchantExpiration/1000) }
                      end
                    elseif (target == "ranged") then
                      local _, _, _, _, _, _, hasEnchant, enchantExpiration, enchantCharges = GetWeaponEnchantInfo();
                      if (hasEnchant) then
                          local textureName = GetInventoryItemTexture("player", ABT_TEXTURE_RANGED);
                          auraFound = { name = "Ranged", iconTexture = textureName, count = enchantCharges, caster = "player", duration = 1800, expirationTime = (currenttime + enchantExpiration/1000) }
                      end

    change line 1733 to
                if useAsSpellTarget and (targetIdx ~= ABT_TOTEM or targetIdx ~= ABT_MAIN_HAND or targetIdx ~= ABT_OFF_HAND or targetIdx ~= ABT_RANGED) then

    and of course, in your locale, add lines after 58:
    L["Main Hand"] = true
    L["Off-Hand"] = true
    L["Ranged"] = true

    there is only one thing left - i don't know to get Total duration of enchant. Shammys enchant stay for 30 mins, but what about rogues? or there is more specific function that can give precise answer?

  • #765

    TOTEMS TOTEMS TOTEMS!

    New BETA released for folks to test out.  Adds a new target type of Totem to finally allow Shamans to track the time remaining on a totem.  The other main change is that if you have an item or a macro on the button we should now be figuring out what aura slash spell effect is generated by it and be able to track it.

     I've almost completely rewritten the aura checking code; I think it should perform better now but I don't have any profiling numbers to know for sure.  The more auras you're tracking on a given target, the better the perf gain would be.

    If you try out the BETA build please reply to this comment with feedback. Even if you don't make use of the new features, knowing that it all still works and you're not broken lets me know when its safe to release it as the next version.

    Last edited by stencil on 3/24/2012 9:34:19 PM
  • #770

    Beta 2 build is up now to fix the bug Nameless76 identified and tracked down. Many thanks to them for their efforts.

    Last edited by stencil on 3/27/2012 1:48:49 PM
  • #771

    thanks man! now it's work like a charm!

    there is only (form point of shammy or rogue) thing missing - tracking our weapon enchant. i think we should add another target (probably all three - main hand, off hand, thrown) and check for it using GetWeaponEnchantInfo(). i think i will add this support today or tomorrow.

  • #766

    hi there!

    have to say, that new BETA doesn't work well for my shammy's Searing Totem. seems that it doesn't refresh Spell time, when i cast totem, only when i change "Type" in Addon menu. to be more clear: i put Searing Totem spell on button, in interface configure this button Target as totem, type as Aura. close interface dialog and summon totem. nothing happen. then, while totem is on, bring addon options again and toggle type parameter. now Timer above button appear. if i resummon new Totem, timer will not refresh it's duration. only when i again toggle Type parameter (or any other actually) in interface.

    very interesting. i found that the same is true also for version modified by me. when i out of combat and summon only Searing Totem, ButtonTimer doesn't update its timers. if i place all 4 totems, including Searing Totem, them Timers start updating properly, while others totems up. seems, that we miss some events, related to timer placement to monitor.

    Last edited by Nameless76 on 3/26/2012 6:39:50 AM
  • #769

    Ah, my shaman is Elemental so when I dropped Searing Totem I would gain the Totemic Wrath aura. I can repro the problem in resto spec and will investigate.

    Update - looks like we can just use the PLAYER_TOTEM_UPDATE event to trigger GetDebuffs.

    Last edited by stencil on 3/27/2012 1:32:49 PM
  • #768

    hei!

    you incorrectly reproduce the situation. make sure, you are not in combat, and don't have any buffs/auras. then bring ONLY Searing Totem. according to combat log, we got two events: 1st is SPELL_CAST_SUCCESS and 2nd is SPELL_SUMMON.
    currently, none of this events is processed by addon, so nothing happened. i add a call to ABT:MarkNeedDebuffs (); in function ABT:ProcessCombatLogEvent, when event == "SPELL_SUMMON".
    however, later in function ABT:GetDebuffs(), when we checking for totemName in totemSlot, for unknown for me reason we receive a "nil" value for Searing Totem Slot. perhaps, for the time we call GetDebuffs(), this slot is not yet initialized completely. if, when our Seraing Totem is up we re-cast it again, then we will receive proper information about this totem slot and finally will be able to draw a timer bar.
    another issue - if we are in above mentioned situation, with only Searing Totem and use "Totemic recall", then timer bar doesn't disappear and continue to tick. this happened by the same reason - according to combat log we got only one event - SPELL_CAST_SUCCESS.

    probably, all this problems is because Searing Totem doesn't apply any auras to anything.

    Last edited by Nameless76 on 3/27/2012 4:55:05 AM
  • #767

    I cannot reproduce your problem.  I log in, drop my totems, and the timer shows.  I drop searing totem again and the timer updates.  I even tried turning off all other addons (except ACP and a bug catcher) and replaced my dev working copy with the BETA build downloaded off the curse site; it appeared to be working just fine.

    A couple of things we can try from here.  The first is that you could open up wtf\...\savedvariables\buttontimers.lua and find the config info saved out for that button and post it here.  You should be able to find that button fast by searching for ["target"] = 8.  Otherwise (and if its not 8 its not set to totem) the data is now structured in the save file and so you should be able to find that toon's profile, then the bar and then the button.

    Otherwise, you've already shown that you know code so you may have to debug by print statement to try to see what the problem is.  The totem check isn't much different than what you had written.

  • #763

    first of all, i would like to say big thanks to the author of this great addon! it's help me a lot to do a nice dps on my main lock. but some time ago i start leveling my alt - shaman. and i was really disappointed that ButtonTimers can't track my Searing Totem. so i decide to make some changes to fix this. here is a list of my changes. you can apply them in any text editor to the appropriate files. of course, i didn't do a lot of testings with different configurations, but after all, addon still work fine for my lock and shaman.
    here is a list of my changes:
    in file locale\enUS.lua (and any other in this folder if you are using different languages), after line #41 add following:
    L["Totem"] = true

    now come a lot of changes in core.lua file:
    change lines 25-27 to look like this:
    ABT_VEHICLE = 7
    ABT_TOTEM = 8
    ABT_TARGET_NAMES = { [ABT_TARGET]="target", [ABT_FOCUS]="focus", [ABT_PLAYER]="player", [ABT_PARTY]="party", [ABT_PET]="pet", [ABT_VEHICLE]="vehicle", [ABT_TOTEM]=L["Totem"] }
    ABT_AURA = 1

    then, change the line 252 to look like this:
                values = { [ABT_TARGET]=L["Target"], [ABT_FOCUS]=L["Focus"], [ABT_PLAYER]=L["Player"], [ABT_PARTY]=L["Party/Raid Member"], [ABT_PET]=L["Pet"], [ABT_VEHICLE]=L["Vehicle"], [ABT_TOTEM]="Totem" },

    add this bunch of text after line 1251, right before function GetDebuffs definition:
    function ABT:ProcessDeBuff(button, barIdx, buttonIdx, useTimer, useStatusbar, tickPrediction, showAuraIcon, effect, actionslot, name, iconTexture, count, duration, expirationTime)
            local currenttime = GetTime()
               local timeLeft = expirationTime-currenttime
               local timeStart = expirationTime - duration
               local add = tonumber(ABT:GetValue (barIdx, buttonIdx, "timerAdjust"))

    --        if (effect == "Searing Totem" or effect == "Fire Elemental Totem") then
    --            DEFAULT_CHAT_FRAME:AddMessage("ProcessDeBuff for button="..buttonIdx..": actionslot="..ABT:NS(actionslot).. ", name="..ABT:NS(name)..", duration="..ABT:NS(duration)..", timeLeft="..timeLeft);
    --        end

               if useTimer then
                   button.timer.expirationTime = expirationTime + (add or 0)-- time left on this effect
                   if (button.timer.expirationTime <= 0) then
                       button.timer.expirationTime = nil
                   end
               elseif useStatusbar then
                   button.countdown.expirationTime = expirationTime + (add or 0)-- time left on this effect
                   if (button.countdown.expirationTime <= 0) then
                       button.countdown.expirationTime = nil
                       button.effect = nil
                   else
                       button.count = count
                       local barTime
                       if ABT:GetValue (barIdx, buttonIdx, "barType") == ABT_FIXED then
                           barTime = ABT:GetValue (barIdx, buttonIdx, "barTime")
                       else
                           barTime = duration
                       end
                       button.tex.max = barTime
                       if button.tex.timerColor then
                           button.tex:SetVertexColor (unpack(button.tex.timerColor))
                       end
                       if button.tex.warnColor then
                           button.castTime = ABT:GetCastTime (button)
                       end
                       button.status:Show()
                       if tickPrediction then
                           button.effect = effect
                       end
                       local spellText = nil
                       if ABT:GetValue (barIdx, nil, "orientation") == ABT_HORIZONTAL then
                           if count > 1 then
                               spellText = "x"..ABT:NS(count)
                           end
                       else -- orientation == ABT_VERTICAL
                           spellText = effect

                           if count > 1 then
                               spellText = spellText.." x"..ABT:NS(count)
                           end
                           if target ~= "target" then
                               spellText = spellText..": "..ABT:NS(UnitName(target))
                           end
                       end
                       button.spellName:SetText(spellText)

                       if button.tickLength then
                           if (timeLeft > (duration - button.tickLength)) then
                               ABT:SetTickTime (button, duration - button.tickLength)
                           elseif timeLeft < button.tickLength then
                               button.nextTick:Hide()
                           end
                       end
                   end
               end
               ABT:DebugPrint ("bar"..barIdx.."button"..buttonIdx.."showAuraIcon="..ABT:NS(showAuraIcon).." a="..ABT:NS(button.timer.expirationTime).." b="..ABT:NS(button.countdown.expirationTime))
               if ((button.timer.expirationTime or button.countdown.expirationTime) and showAuraIcon and actionslot) then
                   button.texture = iconTexture
                   button.defaultTexture = GetActionTexture(actionslot)
                   ABT:DebugPrint ("bar"..barIdx.."button"..buttonIdx.." setting icon to: "..ABT:NS(iconTexture))
               end
    end

    then replace the whole GetDebuffs function by this one:
    function ABT:GetDebuffs()
        ABT:DebugTrace ("GetDebuffs", true)
        local unit = nil
    --    ABT:DebugPrint ("GetDebuffs "..ABT:NS(event).." "..ABT:NS(arg1))
        -- loop over buttons looking for aura timer buttons matching the target
        local barIdx = 1
        local buttonIdx = 0
        repeat
            barIdx, buttonIdx = ABT:GetNextButton(barIdx, buttonIdx)
    --        ABT:DebugPrint ("bar="..ABT:NS(barIdx).." button="..ABT:NS(buttonIdx))
            if barIdx and buttonIdx then
                local button = ABT_Buttons[barIdx][buttonIdx]
                local key = "bar"..barIdx.."button"..buttonIdx
                local timerType = ABT:GetValue (barIdx, buttonIdx, "timerType")
                local location = ABT:GetValue(barIdx, nil, "location")
                local target = button.targetUnit
                if (target == nil) then target = "target" end
                local showOthers = ABT:GetValue (barIdx, buttonIdx, "showOthers")
                local buttonFound = false -- haven't yet found a match for this button
                local useTimer = (timerType == ABT_AURA and location == ABT_ONBUTTONS)
                local useStatusbar = (timerType == ABT_BOTH or (timerType == ABT_AURA and location ~= ABT_ONBUTTONS))
                local tickPrediction = ABT:GetValue(barIdx, buttonIdx, "showTickPrediction")
                local showAuraIcon = ABT:GetValue(barIdx, buttonIdx, "showAuraIcon")
                local actionslot = button.button:GetAttribute("action")
                if (timerType == ABT_AURA or timerType == ABT_BOTH) then -- aura timer
                    local effectList = ABT:parseList (ABT:GetValue (barIdx, buttonIdx, "auras"))
                    -- build effects list
                    if actionslot then
                        local actionType, actionId, actionSubType = GetActionInfo (actionslot)
    --                ABT:DebugPrint ("type="..ABT:NS(actionType).." id="..ABT:NS(actionId).." subtype="..ABT:NS(actionSubType).." slot="..actionslot)
                        if actionType == "spell" then
                            local spellName = nil
                            if actionSubType == "pet" and actionslot > 120 then
                                spellName = GetPetActionInfo (actionslot-120)
                            elseif actionId > 0 then
                                spellName = GetSpellInfo ( actionId )
                            end
                            effectList[100] = spellName
                        end
                    end

    --                DEFAULT_CHAT_FRAME:AddMessage("checking button "..buttonIdx..": timerType: "..ABT:NS(timerType).. ", location: "..ABT:NS(location)..", target: "..ABT:NS(target)..", actionslot: "..ABT:NS(actionslot)..", EffectList: "..ABT:NS(effectList)..", target: "..ABT:GetValue (barIdx, buttonIdx, "target"));

                    -- now look for the aura for this button
                       local effect
                       for _, effect in pairs(effectList) do
                        if (target == "Totem") then
                            for totemId=1, 4 do
                                local _, totemName, startTime, duration = GetTotemInfo (totemId);
        --                        DEFAULT_CHAT_FRAME:AddMessage("checking slot "..totemId.." with totem "..totemName.." for equality with " .. ABT:NS(spellName));
                                if (totemName == effect) then
                                    local expirationTime = startTime + duration
                                    local _, _, icon = GetSpellInfo (effect);
        --                            DEFAULT_CHAT_FRAME:AddMessage("Totem found! start time="..startTime..", duration="..duration..", expiration="..expirationTime..", icon="..ABT:NS(icon));
                                    ABT:ProcessDeBuff (button, barIdx, buttonIdx, useTimer, useStatusbar, tickPrediction, showAuraIcon, totemName, actionslot, totemName, icon, 1, duration, expirationTime)
                                    buttonFound = true
                                end
                            end
                        else
                            local effectId = tonumber(effect)
                            for debuff = 1, 2 do -- check debuffs, then buffs
                                for index = 1, 40 do
        --                            ABT:DebugPrint ("Looking for -"..effect.."- on button "..button:GetName().." target="..ABT:NS(target))
                                    local name, rank, iconTexture, count, debuffType, duration, timeLeft, expirationTime, isMine, caster, spellId
                                    timeLeft = nil
                                    isMine = nil
                                    expirationTime = nil
                                    if debuff == 1 then
                                        name, rank, iconTexture, count, debuffType, duration, expirationTime, caster, _, _, spellId = UnitDebuff (target, index); -- 3.0
                                        if (name == "Jinx: Curse of the Elements") then
        --                                    ABT:DebugPrint ("now I found effect "..ABT:NS(name).." id="..ABT:NS(spellId).." on target: "..target.." caster="..ABT:NS(caster))
        --                                    ABT:DebugPrint ("try to match against effect="..ABT:NS(effect).." id="..ABT:NS(effectId))
                                        end
                                    else
                                        name, rank, iconTexture, count, debuffType, duration, expirationTime, caster, _, _, spellId = UnitBuff (target, index); -- 3.0
                                    end

                                    if name == nil then break end -- no more buffs/debuffs

                                    -- the effect was found on the mob, now lets see if it's ours
                                    -- use the effect if it is ours, or if the anyCaster flag is set and the button
                                    -- was not previously found. This will prioritize our own spells for display if multiple
                                    -- matching effects are found
                                    isMine = (caster == "player" or caster == "pet" or caster == "vehicle")
                                    if ((name ~= nil and name == effect) or (effectId ~= nil and effectId == spellId)) and (isMine or (showOthers and not buttonFound)) then
                                        if (name == "Jinx: Curse of the Elements") then
                                            ABT:DebugPrint ("match! "..ABT:NS(name).." rank="..ABT:NS(rank).." count="..ABT:NS(count).." type="..ABT:NS(debuffType).." duration="..ABT:NS(duration).." timeLeft="..ABT:NS(timeLeft).." expirationTime="..ABT:NS(expirationTime).." id="..ABT:NS(spellId).." on target: "..target.." caster="..ABT:NS(caster))
                                        end
                                        ABT:ProcessDeBuff(button, barIdx, buttonIdx, useTimer, useStatusbar, tickPrediction, showAuraIcon, effect, actionslot, name, iconTexture, count, duration, expirationTime)
                                        buttonFound = true
                                    end
                                end
                            end
                        end
                    end

                    if not buttonFound then
                        if useTimer then
                            button.timer.expirationTime = nil
                        elseif useStatusbar then
                            button.countdown.expirationTime = nil
                        end
                    end
                end
            end
        until buttonIdx == nil
    --    ABT:DebugPrint ("Exiting GetDebufs buttonIdx="..ABT:NS(buttonIdx))
        ABT:DebugTrace ("GetDebuffs")
    end

    if all of above is too complicated, i can upload somewhere my modified version...

    this changes introduce new category for targets - totem. f.e. if you want to place Searing Totem on the right time, drop your Searing Totem spell to one of the ButtonTimer buttons and set a target as "Totem", Type as "Aura".

    Last edited by Nameless76 on 3/22/2012 3:00:08 AM
  • #764

    Cool!  Thanks for your contribution.  I'm in the process of adding this to my local dev copy.  I need to first review the original functions to make sure I understand what they were supposed to do and then exactly what your changes are.  I've already noted a perf issue carried over from the the original version that I'll want to recode.

  • #761

    i love this addon, only problem i have with it is it doesnt save my set up the way i want it, for example, i have 7 different spells being tracked, and it randomly chooses one or two of them to not track, or wont put bars up but tick off numbers instead...any suggestions?

  • To post a comment, please login or register a new account.
Login to Curse

Don't have an account? Create One.

Get an epic experience with Curse Premium
  • Faster addon downloads
  • Premium-Only Beta Giveaways
  • Ad-Free Curse experience
  • Premium Curse Client
  • and many More Features
  • Learn More »

Minecontest - Win a 2013 Minecon Cape!