vanilla-wow-addons – Rev 1

Subversion Repositories:
Rev:
--<< ====================================================================== >>--
-- Setup Module                                                               --
--<< ====================================================================== >>--
AceTimerWarlock = AceTimer:AddModule()

function AceTimerWarlock:Initialize()
        local _, eclass = UnitClass("player")
        if eclass ~= "WARLOCK" then 
                self:DelModule(self)
                AceTimerWarlock = nil
                ACETIMER.WARLOCK = nil
        end
end

function AceTimerWarlock:Enable()
        self:Setup()
        self:RegisterEvent("CHAT_MSG_SPELL_PET_DAMAGE", "SPELL_PET_DAMAGE");
end

function AceTimerWarlock:Disable()
        self:UnregisterAllEvents(self)
end

--<< ====================================================================== >>--
-- Setup Timers                                                               --
--<< ====================================================================== >>--
function AceTimerWarlock:Setup()
        local A = ACETIMER
        local C = A.WARLOCK
        self:AddGroup(1, TRUE,  "FUCHSIA")
        self:AddGroup(2, FALSE, "MAROON")
        self:AddGroup(3, TRUE,  "RED")
        
        self:AddTimer(A.SPELL, C.AMPLIFY_CURSE,          30, 0,1,1)
        self:AddTimer(A.SPELL, C.BANISH,                 20, 1,0,0, { gr=1, rc=TRUE, d={rs=10} })
        self:AddTimer(A.SPELL, C.CORRUPTION,             18, 1,0,0, { rc=TRUE, d={rt={12,15}} })
        self:AddTimer(A.SPELL, C.CURSE_OF_AGONY,         24, 1,0,0, { gr=2, rc=TRUE })
        self:AddTimer(A.SPELL, C.CURSE_OF_DOOM,          60, 1,0,0, { gr=2, rc=TRUE })
        self:AddTimer(A.SPELL, C.CURSE_OF_EXHAUSTION,    12, 1,0,0, { gr=2, rc=TRUE })
        self:AddTimer(A.SPELL, C.CURSE_OF_RECKLESSNESS, 120, 1,0,0, { gr=2, rc=TRUE })
        self:AddTimer(A.SPELL, C.CURSE_OF_SHADOW,       300, 1,0,0, { gr=2, rc=TRUE })
        self:AddTimer(A.SPELL, C.CURSE_OF_TONGUES,       30, 1,0,0, { gr=2, rc=TRUE })
        self:AddTimer(A.SPELL, C.CURSE_OF_WEAKNESS,     120, 1,0,0, { gr=2, rc=TRUE })
        self:AddTimer(A.SPELL, C.CURSE_OF_THE_ELEMENTS, 300, 1,0,0, { gr=2, rc=TRUE })
        self:AddTimer(A.SPELL, C.DEATH_COIL,              3, 1,0,0)
        self:AddTimer(A.SPELL, C.FEAR,                   10, 1,0,0, { gr=3, rc=TRUE, d={rs=5} })
        self:AddTimer(A.SPELL, C.FEL_DOMINATION,         15, 0,1,1)
        self:AddTimer(A.SPELL, C.HOWL_OF_TERROR,         10, 0,0,0, { d={rs=5} })
        self:AddTimer(A.SPELL, C.IMMOLATE,               15, 1,0,0, { rc=TRUE })
        self:AddTimer(A.SPELL, C.SHADOW_BOLT,             0, 1,0,0, { ea={[C.SHADOW_VULNERABILITY]=2} })
        self:AddTimer(A.SPELL, C.SHADOW_WARD,            30, 0,1,1)
        self:AddTimer(A.SPELL, C.SHADOWBURN,              5, 1,0,0)
        self:AddTimer(A.SPELL, C.SIPHON_LIFE,            30, 1,0,0, { rc=TRUE })
        
        self:AddTimer(A.EVENT, C.AFTERMATH,               5, 0,1,1, { cr="LIME", a=1 })
        self:AddTimer(A.EVENT, C.ENSLAVE_DEMON,         300, 1,0,0, { cr="BLUE", a=1 })
        self:AddTimer(A.EVENT, C.PYROCLASM,               3, 0,1,1, { cr="LIME", a=1 })
        self:AddTimer(A.EVENT, C.SACRIFICE,              30, 0,1,1, { cr="LIME", a=1 })
        self:AddTimer(A.EVENT, C.SEDUCTION,              15, 1,0,1, { cr="RED" })
        self:AddTimer(A.EVENT, C.SHADOW_VULNERABILITY,   12, 1,0,0, { cr="LIME", xn=C.SHADOW_BOLT })
        self:AddTimer(A.EVENT, C.SHADOW_TRANCE,          10, 0,1,1, { cr="LIME", a=1, xn=C.NIGHTFALL })
        self:AddTimer(A.EVENT, C.SOUL_SIPHON,            10, 0,1,1, { cr="LIME", a=1, xn=C.DRAIN_SOUL })
end

--<< ====================================================================== >>--
-- Pet Spell Spicific                                                         --
--<< ====================================================================== >>--
function AceTimerWarlock:SPELL_PET_DAMAGE()
        if self:FindGlobal(arg1, SPELLCASTGOOTHERTARGETTED) -- "%s casts %s on %s.";
        or self:FindGlobal(arg1, SPELLCASTGOOTHER)          -- "%s casts %s.";
        then
                local timer = self.timers[ACETIMER.EVENT][self.gs_captured[2]]  
                if timer then 
                        timer.t = self.gs_captured[3] or UnitName("pettarget")
                        timer.v = GetTime() + 3
                end
        end
end