vanilla-wow-addons – Rev 1

Subversion Repositories:
Rev:

local mod = klhtm
local me = {}
mod.alert = me

----------------------
-- Aggro loss / gain notification

-- This stuff is just debug material, to print out your threat when you gain or lose aggro.
----------------------

me.notifyaggro = false
me.targetname = "nil"
me.targettargetname = "nil"

function klhtest()

        me.notifyaggro = not me.notifyaggro
        
        if me.notifyaggro == true then
                mod.out.print("Now notifying you of aggro changes.")
        else
                mod.out.print("No longer notifying you of aggro changes.")
        end
        
end

me.onupdate = function()
        
        if me.notifyaggro == false then
                return
        end
        
        -- get current ID's. If you are targetting friend, then use HIS targets
        local targetid = "target"
        local doubletargetid = "targettarget"
        
        if UnitIsFriend("player", "target") then
                targetid = targetid .. "target"
                doubletargetid = doubletargetid .. "target"
        end
        
        -- check for valid targets
        if UnitIsFriend("player", targetid) then
                -- there are no enemies around. don't do anything
                me.targetname = "nil"
                return
        end
        
        -- now see if the target has changed
        local targetnow = UnitName(targetid)
        
        if targetnow == nil or targetnow == "Unknown Entity" then
                -- no mob targetted. ignore
                targetnow = "nil"
                return
        end
        
        -- get target target name
        local doubletargetnow = UnitName(doubletargetid)
        if doubletargetnow == nil then
                doubletargetnow = "nil"
        end
        
        -- check for target change
        if targetnow ~= me.targetname then
                
                -- target change. ignore targettarget therefore
                me.targetname = targetnow
                me.targettargetname = doubletargetnow
                return
        end
        
        -- to get here, target is valid and is the same. we want to see if targettarget is changed
        
        -- is change?
        if doubletargetnow ~= me.targettargetname then
        
                -- changed to nil
                if doubletargetnow == "nil" then
                        if UnitIsDead(targetid) then
                                -- target lost its target, because it died.
                                me.targetname = "nil"
                
                        else
                                -- target temporarily lost its target. probably it is stunned
                                -- so just don't update targettarget to nil
                        end
        
                        return
                end
                
                if me.targettargetname == "nil" then
                        -- picked it up from noone. no announce.
                        
                elseif me.targettargetname == UnitName("Player") then
                        -- we lost aggro
                        -- mod.out.announce("I lost aggro to " .. doubletargetnow .. ". His threat should be at least " ..      math.ceil(KLHTM_MyData["Total"].threat * 1.1) .. ". " .. me.enumeratethreat())
                
                elseif doubletargetnow == UnitName("Player") then
                        -- we gained aggro
                        mod.out.announce("I gained aggro from " .. me.targettargetname .. ". My threat is " .. math.ceil(mod.table.mydata["Total"].threat) .. ". " .. me.enumeratethreat(true))
                end
                
                me.targettargetname = doubletargetnow
        end
        
end

me.enumeratethreat = function(lastmessage)

        local message = "Damage = " .. mod.table.mydata["Total"].damage
        
        local key;      local value
        
        for key, value in mod.table.mydata do
                if key == "Healing" then
                        message = message .. ", Healing = " .. value.damage
                
                elseif key ~= "Total" and key ~= "White Damage" then
                        if value.hits > 0 then
                                message = message .. ", " .. key .. " " .. value.hits .. " hits"
                        end
                end
        end
                
        if lastmessage then
        
                local threat = mod.table.mydata["Total"].threat
                message = message .. ". Threat = " .. threat
        
                if mod.combat.lastattack then
                        threat = threat - mod.combat.lastattack.threat
                        message = message .. ", then " .. threat
                end
                
                if mod.combat.lastattack then
                        threat = threat - mod.combat.lastattack.threat
                        message = message .. ", then " .. threat
                end
        end
        
        message = message .. "."
        
        return message
        
end