--]] local checkForTargetDeath = 0; local checkForTarget = nil; local checkForSpell = 0; local targetDebuffs = {}; local checkForSpellFail = nil; local checkForSpellName = nil; local trapTimer = nil; local sht_init = false; local dimin = {}; function SHunterTimers_OnLoad() this:RegisterEvent("VARIABLES_LOADED"); this:RegisterEvent("UNIT_AURA"); this:RegisterEvent("SPELLCAST_STOP"); this:RegisterEvent("CHAT_MSG_SPELL_PERIODIC_CREATURE_DAMAGE"); this:RegisterEvent("CHAT_MSG_SPELL_PERIODIC_HOSTILEPLAYER_DAMAGE"); this:RegisterEvent("CHAT_MSG_SPELL_AURA_GONE_OTHER"); this:RegisterEvent("CHAT_MSG_SPELL_SELF_DAMAGE"); this:RegisterEvent("CHAT_MSG_COMBAT_HOSTILE_DEATH"); this:RegisterEvent("CHAT_MSG_SPELL_PERIODIC_SELF_BUFFS"); this:RegisterEvent("CHAT_MSG_SPELL_PET_DAMAGE"); this:RegisterEvent("SPELLCAST_START"); --this:RegisterEvent("PLAYER_ENTERING_WORLD"); this:RegisterEvent("PLAYER_TARGET_CHANGED"); this:RegisterEvent("CHAT_MSG_MONSTER_EMOTE"); this:RegisterEvent("SPELLCAST_FAILED"); this:RegisterEvent("SPELLS_CHANGED"); if(DEFAULT_CHAT_FRAME) then DEFAULT_CHAT_FRAME:AddMessage("Sorren's Hunter Timers Loaded", 1, 0, 0 ); end SlashCmdList["SHUNTERTIMERS"] = function (msg) SHunterTimers_SlashCmd(msg); end SLASH_SHUNTERTIMERS1 = "/shuntertimers"; SLASH_SHUNTERTIMERS2 = "/sht"; targetDebuffs["numDebuffs"] = 0; end function SHunterTimers_SlashCmd(msg) if( msg == "showvars" ) then DEFAULT_CHAT_FRAME:AddMessage(numBars, 1, 0, 0 ); return; end if( msg == "menu" ) then SHunterTimers_ShowOptions(); return; end if( msg == "reset" ) then SHTvars["numBars"] = 0; for num = 1, 11, 1 do frame = getglobal("SHunterTimersStatus"..num); --frame:SetAlpha( 0 ); frame.endTime = 0; end return; end if( msg == "on" ) then if( SHTvars["on"] ) then DEFAULT_CHAT_FRAME:AddMessage("SHT already on", 1, 0, 0); return; else UseAction = SHunterTimers_OnUseAction; CastSpellByName = SHunterTimers_OnCastSpellByName; CastSpell = SHunterTimers_OnCastSpell; SHTvars["on"] = true; DEFAULT_CHAT_FRAME:AddMessage("SHT on", 1, 0, 0); return; end elseif( msg == "off" ) then if( SHTvars["on"] ) then UseAction = SHunterTimers_Real_UseAction; CastSpellByName = SHunterTimers_Real_CastSpellByName; CastSpell = SHunterTimers_Real_CastSpell; SHTvars["on"] = false; DEFAULT_CHAT_FRAME:AddMessage("SHT off", 1, 0, 0); return; else DEFAULT_CHAT_FRAME:AddMessage("SHT not on", 1, 0, 0); return; end elseif( string.find( msg, "setbgcolor" ) ) then for r, g, b, a in string.gfind( msg, "setcolor (%d+) (%d+) (%d+) (%d+)" ) do SHTvars["bg"].r = r/10; SHTvars["bg"].g = g/10; SHTvars["bg"].b = b/10; SHTvars["bg"].a = a/10; SHunterTimersFrame:SetBackdropColor( r/10, g/10, b/10, a/10 ); end return; elseif( string.find( msg, "aimed" ) )then if( string.find(msg, "on" ) )then SHTvars["Aimed Shot"] = true; DEFAULT_CHAT_FRAME:AddMessage("SHT: Aimed Shot Casting Bar on"); elseif( string.find( msg, "off" ) ) then SHTvars["Aimed Shot"] = false; DEFAULT_CHAT_FRAME:AddMessage("SHT: Aimed Shot Casting Bar off"); else if( SHTvars["Aimed Shot"] ) then SHTvars["Aimed Shot"] = false; DEFAULT_CHAT_FRAME:AddMessage("SHT: Aimed Shot Casting Bar off"); else SHTvars["Aimed Shot"] = true; DEFAULT_CHAT_FRAME:AddMessage("SHT: Aimed Shot Casting Bar on"); end end elseif( string.find(msg, "delay" ) ) then for ms in string.gfind(msg, "delay (%d+)") do SHTvars["aimeddelay"] = ms; DEFAULT_CHAT_FRAME:AddMessage("Delay set to "..ms.."ms"); end elseif( string.find(msg, "scale" ) ) then for scale in string.gfind( msg, "scale (%d+)" ) do if( (scale/100) < 0.1 ) then scale = 10; end scale = scale * UIParent:GetScale(); SHTvars["scale"] = scale/100; end SHunterTimersFrame:SetScale( SHTvars["scale"] ); for i=1, 11 do getglobal("SHunterTimersStatus"..i):SetScale( SHTvars["scale"] ); end elseif( string.find(msg, "down") ) then SHTvars["down"] = true; SHunterTimersFrame:ClearAllPoints(); SHunterTimersFrame:SetPoint( "TOPLEFT", "SHunterTimersAnchor", "BOTTOMRIGHT" ); DEFAULT_CHAT_FRAME:AddMessage("SHT: Growing down"); elseif( string.find(msg, "up" ) ) then SHTvars["down"] = false; SHunterTimersFrame:ClearAllPoints(); SHunterTimersFrame:SetPoint( "BOTTOMLEFT", "SHunterTimersAnchor", "TOPRIGHT" ); DEFAULT_CHAT_FRAME:AddMessage("SHT: Growing up"); elseif( msg == "unlock" ) then SHTvars["locked"] = false; SHunterTimersAnchor:Show(); elseif( msg == "lock" ) then SHTvars["locked"] = true; SHunterTimersAnchor:Hide(); elseif( string.find(msg, "colorchange" ) ) then for on in string.gfind(msg, "colorchange (%a+)") do if( on == "on" ) then SHTvars["colorchange"] = true; elseif( on == "off" ) then SHTvars["colorchange"] = false; end if( on == "on") or ( on == "off" ) then DEFAULT_CHAT_FRAME:AddMessage( "SHT: Colorchange is: "..on); end end elseif( string.find( msg, "barcolor" ) ) then for r, g, b in string.gfind(msg, "barcolor ([%d.]+) ([%d.]+) ([%d.]+)") do local red, green, blue = unpack( SHTvars["barstartcolor"] ); SHTvars["barstartcolor"][1] = r; SHTvars["barstartcolor"][2] = g; SHTvars["barstartcolor"][3] = b; local rd, gd, bd = unpack( SHTvars["bardelta"] ); red = rd + red; blue = bd + blue; green = gd + green; red = red - r; green = green - g; blue = blue - b; SHTvars["bardelta"][1] = red; SHTvars["bardelta"][2] = green; SHTvars["bardelta"][3] = blue; DEFAULT_CHAT_FRAME:AddMessage( "SHT: Barcolor set to: "..SHTColor(r, g, b)..r..", "..g..", "..b.."|r"); end elseif( string.find( msg, "barendcolor" ) ) then for red, green, blue in string.gfind(msg, "barendcolor ([%d.]+) ([%d.]+) ([%d.]+)") do local r, g, b = unpack( SHTvars["barstartcolor"] ); r = red - r; g = green - g; b = blue - b; SHTvars["bardelta"][1] = r; SHTvars["bardelta"][2] = g; SHTvars["bardelta"][3] = b; DEFAULT_CHAT_FRAME:AddMessage( "SHT: Barendcolor set to: "..SHTColor(red, green, blue)..red..", "..green..", "..blue.."|r"); end elseif( string.find( msg, "flash" ) ) then for flash in string.gfind( msg, "flash (%d+)" ) do flash = flash * 1; SHTvars["flash"] = flash; if( flash == 0 ) then DEFAULT_CHAT_FRAME:AddMessage("SHT: Bar flash off"); else DEFAULT_CHAT_FRAME:AddMessage("SHT: Bar flash set to: "..flash.." seconds"); end end elseif( string.find( msg, "step" ) ) then for step in string.gfind( msg, "step ([%d.]+)" ) do SHTvars["step"] = step DEFAULT_CHAT_FRAME:AddMessage("SHT: Step set to: "..step); end elseif( msg == "resetpos" ) then SHunterTimersAnchor:ClearAllPoints(); SHunterTimersAnchor:SetPoint("CENTER", "UIParent", "CENTER", 0, 0 ); elseif( string.find( msg, "(%a+) (%d+)" ) ) then for cmd1, cmd2 in string.gfind( msg, "(%a+) (%d+)" ) do --DEFAULT_CHAT_FRAME:AddMessage(cmd1.."-"..cmd2, 1, 0, 0); SHunterTimersFrame_add( cmd2, cmd1 ); end else --[[ DEFAULT_CHAT_FRAME:AddMessage("Sorren's Hunter Timers v0.1"); DEFAULT_CHAT_FRAME:AddMessage("Commands: /sht"); DEFAULT_CHAT_FRAME:AddMessage("/sht on/off"); DEFAULT_CHAT_FRAME:AddMessage("/sht aimed on/off"); DEFAULT_CHAT_FRAME:AddMessage("/sht setbgcolor r g b a (where r, g, b, a are between 0 and 10)"); DEFAULT_CHAT_FRAME:AddMessage("/sht delay