Index: SpecialEvents-Aura-2.0.lua
===================================================================
--- SpecialEvents-Aura-2.0.lua (revision 10345)
+++ SpecialEvents-Aura-2.0.lua (working copy)
@@ -5,7 +5,7 @@
Website: http://wiki.wowace.com/index.php/SpecialEvents_Addon
Documentation: http://wiki.wowace.com/index.php/SpecialEvents-Aura-2.0
SVN: svn://svn.wowace.com/root/trunk/SpecialEventsEmbed/SpecialEvents-Aura-2.0
-Description: Special events for mail (received, auction notices, etc)
+Description: Special events for Aura's, (de)buffs gained, lost etc.
Dependencies: AceLibrary, AceEvent-2.0, Gratuity-2.0
]]
@@ -33,7 +33,7 @@
setmetatable(heap, {__mode = "kv"})
-local function acquire(a1,a2,a3,a4)
+local function acquire(a1,a2,a3,a4,a5)
local t = next(heap)
if t then
heap[t] = nil
@@ -45,6 +45,7 @@
if a2 ~= nil then table.insert(t, a2) end
if a3 ~= nil then table.insert(t, a3) end
if a4 ~= nil then table.insert(t, a4) end
+ if a5 ~= nil then table.insert(t, a5) end
return t
end
@@ -228,7 +229,11 @@
local texture = GetPlayerBuffTexture(didx)
local dbtype = GetPlayerBuffDispelType(didx)
- if txt then newd[txt] = acquire(i, apps or 1, dbtype, texture) end
+ if txt then
+ local txtindex = txt
+ if texture then txtindex = txtindex..texture end
+ newd[txtindex] = acquire(i, txt, apps, dbtype, texture)
+ end
end
end
else
@@ -259,8 +264,9 @@
txt = debuffTextureCache[texture]
end
if txt then
- reclaim(newd[txt]) -- Sometimes we get the same debuff twice, SEAura doesn't distinguish multiples of the same debuff unless it stacks
- newd[txt] = acquire(i, apps or 1, dbtype, texture)
+ local txtindex = txt .. texture
+ reclaim(newd[txtindex])
+ newd[txtindex] = acquire(i, txt, apps, dbtype, texture)
end
end
end
@@ -285,8 +291,8 @@
for d,i in pairs(oldd) do t = t.." "..d.."="..i end
error(string.format("Debuff error! Unit: %s, Table dump:%s", targ, t))
elseif not newd[d] then
- self:TriggerEvent("SpecialEvents_UnitDebuffLost", t, d, i[2], i[3], i[4])
- if t == "player" then self:TriggerEvent("SpecialEvents_PlayerDebuffLost", d, i[2], i[3], i[4]) end
+ self:TriggerEvent("SpecialEvents_UnitDebuffLost", t, i[2], i[3], i[4], i[5])
+ if t == "player" then self:TriggerEvent("SpecialEvents_PlayerDebuffLost", i[2], i[3], i[4], i[5]) end
end
end
end
@@ -303,8 +309,8 @@
local o2 = oldd and type(oldd[d]) == "table" and oldd[d][2]
if not o2 or o2 ~= i[2] then
- self:TriggerEvent("SpecialEvents_UnitDebuffGained", t, d, i[2], i[3], i[4])
- if t == "player" then self:TriggerEvent("SpecialEvents_PlayerDebuffGained", d, i[2], i[3], i[4]) end
+ self:TriggerEvent("SpecialEvents_UnitDebuffGained", t, i[2], i[3], i[4], i[5])
+ if t == "player" then self:TriggerEvent("SpecialEvents_PlayerDebuffGained", i[2], i[3], i[4], i[5]) end
end
end
@@ -323,16 +329,20 @@
function lib:UnitHasDebuff(targ, debuff)
- if self.vars.debuffs[targ] and self.vars.debuffs[targ][debuff] then
- return self.vars.debuffs[targ][debuff][1], self.vars.debuffs[targ][debuff][2]
+ if self.vars.debuffs[targ] then
+ for i, v in pairs(self.vars.debuffs[targ]) do
+ if v[2] == debuff then
+ return v[1], v[3]
+ end
+ end
end
end
function lib:UnitHasDebuffType(targ, debufftype)
if self.vars.debuffs[targ] then
- for i,v in (self.vars.debuffs[targ]) do
- if v[3] == debufftype then return v end
+ for i,v in pairs(self.vars.debuffs[targ]) do
+ if v[4] == debufftype then return v end
end
end
end
@@ -354,7 +364,7 @@
if not self.vars.debuffs[unitid] then return end
local idx = next(self.vars.debuffs[unitid], i)
local v = self.vars.debuffs[unitid][idx]
- if v then return idx, v[2], v[3], v[4] end
+ if v then return v[2], v[3], v[4], v[5] end
end
return f, unitid, nil
end