--COMBAT_LOG_EVENT_UNFILTERED REMOVE_GUID NAME_PLATE_UNIT_ADDED NAME_PLATE_UNIT_REMOVED
function(allstates, e, ...)
	if e == "COMBAT_LOG_EVENT_UNFILTERED" then
		local se = select(2, CombatLogGetCurrentEventInfo())
		if se == "SPELL_CAST_START" or se == "SPELL_CAST_SUCCESS" then
			local spell = select(13, CombatLogGetCurrentEventInfo())
			if aura_env.spells[spell] then
				local ID = select(7, GetSpellInfo(aura_env.spells[spell].ID))
				if ID == aura_env.spells[spell].ID then
					local castTime = select(4, GetSpellInfo(aura_env.spells[spell].ID))
					local GUID = select(4, CombatLogGetCurrentEventInfo())
					if GUID then allstates[GUID] = {} end
					if allstates[GUID].timer then allstates[GUID].timer:Cancel() end
					local unit = ""
					local target = select(9, CombatLogGetCurrentEventInfo())
					if target and UnitIsPlayer(target) == true then
						local targetClass = UnitClass(target) or ""
						target = aura_env.classColor(targetClass) .. target
						allstates[GUID].target = target
					end
					for i = 1, 30 do
						if UnitExists("nameplate" .. i) then
							if UnitGUID("nameplate" .. i) == GUID then
								unit = "nameplate" .. i
								break
							end
						end
                    end
                    -- unit = "player"
					local LCG = LibStub("LibCustomGlow-1.0")
					if castTime > 1000 and se == "SPELL_CAST_START" then
						if unit == "player" or unit == "" then unit = "nameplate1" end
						if allstates[GUID].timer then allstates[GUID].timer:Cancel() end
						allstates[GUID].changed = true
						allstates[GUID].show = true
						allstates[GUID].showTime = GetTime()
						allstates[GUID].ID = aura_env.spells[spell].ID
						allstates[GUID].ins = aura_env.spells[spell].ins
						allstates[GUID].unit = unit
						allstates[GUID].GUID = GUID
						allstates[GUID].progressType = "timed"
						allstates[GUID].expirationTime  = GetTime() + castTime / 1000
						allstates[GUID].duration  = castTime / 1000
						allstates[GUID].timer = C_Timer.NewTimer(castTime / 1000, function() WeakAuras.ScanEvents("REMOVE_GUID", GUID); LCG.PixelGlow_Stop(nameplate); end)
						return true
					elseif castTime == 0 and se == "SPELL_CAST_SUCCESS" then
						if unit == "player" or unit == "" then unit = "nameplate1" end
						if allstates[GUID].timer then allstates[GUID].timer:Cancel() end
						allstates[GUID].changed = true
						allstates[GUID].show = true
						allstates[GUID].showTime = GetTime()
						allstates[GUID].ID = aura_env.spells[spell].ID
						allstates[GUID].ins = aura_env.spells[spell].ins
						allstates[GUID].unit = unit
						allstates[GUID].GUID = GUID
						allstates[GUID].expirationTime  = GetTime() + 2
						allstates[GUID].timer = C_Timer.NewTimer(2, function() WeakAuras.ScanEvents("REMOVE_GUID", GUID); LCG.PixelGlow_Stop(nameplate); end)
						return true
					end
				end
			end
		elseif se == "SPELL_CAST_FAILED" then
			local spell = select(13, CombatLogGetCurrentEventInfo())
			if aura_env.spells[spell] then
				local ID = select(7, GetSpellInfo(aura_env.spells[spell].ID))
				if ID == aura_env.spells[spell].ID then
					local LCG = LibStub("LibCustomGlow-1.0")
					local GUID = select(4, CombatLogGetCurrentEventInfo())
					if allstates[GUID].timer then allstates[GUID].timer:Cancel() end
					local unit = ""
					for i = 1, 30 do
						if UnitExists("nameplate" .. i) then
							if UnitGUID("nameplate" .. i) == GUID then
								unit = "nameplate" .. i
								break
							end
						end
					end
					--WeakAuras.ScanEvents("REMOVE_GUID", GUID)
					local rem = allstates[GUID].expirationTime - GetTime()
					local maxrem = allstates[GUID].expirationTime - allstates[GUID].showTime
					allstates[GUID].changed = true
					allstates[GUID].show = true
					allstates[GUID].progressType = "static"
					allstates[GUID].value = string.format("%.1f", rem)
					allstates[GUID].total = maxrem
					allstates[GUID].interrupted = true
					allstates[GUID].timer = C_Timer.NewTimer(1, function() WeakAuras.ScanEvents("REMOVE_GUID", GUID) end)
					if unit ~= "" then
						local nameplate = C_NamePlate.GetNamePlateForUnit(unit)
						LCG.PixelGlow_Stop(nameplate)
					end
					return true
				end
			end
		elseif se == "UNIT_DIED" then
			local GUID = select(8, CombatLogGetCurrentEventInfo())
			if allstates[GUID] and allstates[GUID].expirationTime and not allstates[GUID].interrupted then
				local rem = allstates[GUID].expirationTime - GetTime()
				local maxrem = allstates[GUID].expirationTime - allstates[GUID].showTime
				allstates[GUID].changed = true
				allstates[GUID].show = true
				allstates[GUID].progressType = "static"
				allstates[GUID].value = rem
				allstates[GUID].total = maxrem
				allstates[GUID].interrupted = true
				allstates[GUID].timer = C_Timer.NewTimer(1, function() WeakAuras.ScanEvents("REMOVE_GUID", GUID) end)
				return true
			end
		end
	elseif e == "REMOVE_GUID" then
		local GUID = select(1, ...)
		if allstates[GUID] then
			allstates[GUID].show = false
			allstates[GUID].changed = true
			return true
		end
	elseif e == "NAME_PLATE_UNIT_ADDED" then
		local u = select(1, ...)
		if u then
			local GUID = UnitGUID(u)
			if allstates[GUID] then
				local LCG = LibStub("LibCustomGlow-1.0")
				local nameplate = C_NamePlate.GetNamePlateForUnit(u)
				LCG.PixelGlow_Start(nameplate, {1, 1, 0, 1}, 100, 0, 200, 4, 0, -4)
			end
		end
	elseif e == "NAME_PLATE_UNIT_REMOVED" then
		local u = select(1, ...)
		if u then
			local GUID = UnitGUID(u)
			local LCG = LibStub("LibCustomGlow-1.0")
			local nameplate = C_NamePlate.GetNamePlateForUnit(u)
			LCG.PixelGlow_Stop(nameplate)
		end
	end
end

--ON SHOW
local LCG = LibStub("LibCustomGlow-1.0")
local font, size, flags = aura_env.region.text:GetFont()
PlaySoundFile("Interface\\AddOns\\WeakAuras\\Media\\Sounds\\RobotBlip.ogg", "Master")
if not aura_env.region.text then
    local text = aura_env.region:CreateFontString(nil, "OVERLAY")
    aura_env.region.text = text
end
aura_env.region.text:SetFont(font, size, flags)
aura_env.region.text:SetTextColor(1,1,1,1)
aura_env.region.text:ClearAllPoints()
aura_env.region.text:SetPoint("CENTER", aura_env.region, "CENTER")
aura_env.region.text:SetJustifyH("CENTER")
aura_env.region.text:SetJustifyV("CENTER")
local output = aura_env.statee.ins
if aura_env.statee.target then output = output .. " > " .. aura_env.statee.target end
aura_env.region.text:SetText(output)
aura_env.region.text:Show()
local aura_env = aura_env
local nameplate = C_NamePlate.GetNamePlateForUnit(aura_env.statee.unit, true)
LCG.PixelGlow_Start(nameplate, {1, 1, 0, 1}, 100, 0, 200, 4, 0, -4)
local GUID = aura_env.statee.GUID

--ON HIDE
local LCG = LibStub("LibCustomGlow-1.0")
local nameplate = C_NamePlate.GetNamePlateForUnit(aura_env.statee.unit, true)
if nameplate then
	LCG.PixelGlow_Stop(nameplate)
end

--ANIMATION
function()
	if aura_env.statee and aura_env.statee.interrupted then return 0, 1, 0, 1 end
end

--INIT
aura_env.spells = {
	-- ["Vivify"] = 
	-- {
	-- 	["ID"] = 116670,
	-- 	["ins"] = "Test",
	-- },
	["Brutal Backhand"] = 
	{
		["ID"] = 257426,
		["ins"] = "Brutal Backhand - Sidestep",
	},
	["Shattering Toss"] =
	{
		["ID"] = 274860,
		["ins"] = "Shattering Toss - Brace"
	},
	["Suppression Slam"] =
	{
		["ID"] = 270003,
		["ins"] = "Suppression Slam - Sidestep"
	},
	["Axe Barrage"] =
	{
		["ID"] = 270084,
		["ins"] = "Axe Barrage - Stun"
	},
	["Poison Barrage"] =
	{
		["ID"] = 270507,
		["ins"] = "Poison Barrage - Move with"
	},
	["Slobber Knocker"] =
	{
		["ID"] = 256627,
		["ins"] = "Slobber Knocker - Sidestep"
	},
	["Heavy Slash"] =
	{
		["ID"] = 257292,
		["ins"] = "Heavy Slash - Sidestep"
	},
	["Singing Steel"] =
	{
		["ID"] = 256709,
		["ins"] = "Singing Steel - Sidestep"
	},
	["Crimson Swipe"] =
	{
		["ID"] = 268230,
		["ins"] = "Crimson Swipe - Sidestep"
	},
	["Tail Thrash"] =
	{
		["ID"] = 265910,
		["ins"] = "Tail Thrash - Mitigation"
	},
	["Debilitating Backhand"] =
	{
		["ID"] = 266237,
		["ins"] = "Debilitating Backhand - Sidestep"
	},
	["Poison Nova"] =
	{
		["ID"] = 267273,
		["ins"] = "Poison Nova - Interrupt"
	},
	["Blade Combo"] =
	{
		["ID"] = 268586,
		["ins"] = "Blade Combo - Mitigation"
	},
	["Clear the Deck"] =
	{
		["ID"] = 269029,
		["ins"] = "Clear the Deck - Sidestep"
	},
	["Viscous Slobber"] =
	{
		["ID"] = 272827,
		["ins"] = "Viscous Slobber - Place out of group"
	},
	["Crashing Tide"] =
	{
		["ID"] = 261563,
		["ins"] = "Crashing Tide - Face to wall"
	},
	["Noxious Breath"] =
	{
		["ID"] = 272657,
		["ins"] = "Noxious Breath - Sidestep"
	},
	["Dust Cloud"] =
	{
		["ID"] = 268705,
		["ins"] = "Dust Cloud - Move enemies"
	},
	["Shocking Claw"] =
	{
		["ID"] = 257337,
		["ins"] = "Shocking Claw - Sidestep"
	},
	["Power Through"] =
	{
		["ID"] = 268415,
		["ins"] = "Power Through - Face away"
	},
	["Cover"] =
	{
		["ID"] = 263275,
		["ins"] = "Cover - Move enemies"
	},
	["Desperate Measures"] =
	{
		["ID"] = 263601,
		["ins"] = "Desperate Measures - Mitigation"
	},
	["Blowtorch"] =
	{
		["ID"] = 263103,
		["ins"] = "Blowtorch - Face away"
	},
	["Echo Blade"] =
	{
		["ID"] = 268846,
		["ins"] = "Echo Blade - Face away"
	},
	["Charged Shot"] =
	{
		["ID"] = 269429,
		["ins"] = "Charged Shot - Mitigation"
	},
	["Shockwave"] =
	{
		["ID"] = 272457,
		["ins"] = "Shockwave - Mitigation"
	},
	["Maddening Gaze"] =
	{
		["ID"] = 272609,
		["ins"] = "Maddening Gaze - Sidestep"
	},
	["Suppression Fire"] =
	{
		["ID"] = 258864,
		["ins"] = "Suppression Fire - Face away"
	},
	["Shadow Cleave"] =
	{
		["ID"] = 265372,
		["ins"] = "Shadow Cleave - Face away"
	},
	["Thorned Barrage"] =
	{
		["ID"] = 265760,
		["ins"] = "Thorned Barrage - Mitigation"
	},
	["Crush"] =
	{
		["ID"] = 260508,
		["ins"] = "Crush - Mitigation"
	},
	["Marking Cleave"] =
	{
		["ID"] = 263905,
		["ins"] = "Marking Cleave - Sidestep"
	},
	["Warding Candles"] =
	{
		["ID"] = 263961,
		["ins"] = "Warding Candles - Move enemies"
	},
	["Tectonic Smash"] =
	{
		["ID"] = 275907,
		["ins"] = "Tectonic Smash - Sidestep"
	},
	["Heaving Blow"] =
	{
		["ID"] = 276268,
		["ins"] = "Heaving Blow - Sidestep"
	},
	["Hindering Cleave"] =
	{
		["ID"] = 267899,
		["ins"] = "Hindering Cleave - Sidestep"
	},
	["Mental Assault"] =
	{
		["ID"] = 268391,
		["ins"] = "Mental Assault - Sidestep"
	},
	["Rotten Bile"] =
	{
		["ID"] = 265540,
		["ins"] = "Rotten Bile - MOVE CUNT"
	},
	["Blade Barrage"] =
	{
		["ID"] = 257870,
		["ins"] = "Blade Barrage - Mitigation"
	},
	["Skewer"] =
	{
		["ID"] = 249919,
		["ins"] = "Skewer - Mitigation"
	},
	["Heavy Slash"] =
	{
		["ID"] = 257292,
		["ins"] = "Heavy Slash - Sidestep"
	},
	["Broadside"] =
	{
		["ID"] = 268260,
		["ins"] = "Broadside - Sidestep"
	},
	["Crushing Slam"] =
	{
		["ID"] = 272711,
		["ins"] = "Crushing Slam - Sidestep"
	},
	["Slam"] =
	{
		["ID"] = 269266,
		["ins"] = "Slam - Sidestep"
	},
	["Energy Lash"] =
	{
		["ID"] = 262794,
		["ins"] = "Energy Lash - Reflect"
	},
	["Grasping Hex"] =
	{
		["ID"] = 300436,
		["ins"] = "Grasping Hex - Interrupt",
	},
	["Stoneskin"] =
	{
		["ID"] = 300514,
		["ins"] = "Stoneskin - Interrupt",
	},
	["Shockwave"] =
	{
		["ID"] = 300424,
		["ins"] = "Shockwave - Sidestep",
	},
	["Charged Smash"] =
	{
		["ID"] = 297254,
		["ins"] = "Charged Smash - Stack on tank",
	},
	["Rapid Fire"] =
	{
		["ID"] = 301667,
		["ins"] = "Rapid Fire - Sidestep",
	},
	["Enlarge"] =
	{
		["ID"] = 301629,
		["ins"] = "Enlarge - Interrupt",
	},
	["Shrink"] =
	{
		["ID"] = 284219,
		["ins"] = "Shrink - Interrupt",
	},
	["Wreck"] =
	{
		["ID"] = 302279,
		["ins"] = "Wreck - Mitigation",
	},
	["Pedal to the Metal"] =
	{
		["ID"] = 299164,
		["ins"] = "Pedal to the Metal - Sidestep",
	},
	["Burnout"] =
	{
		["ID"] = 298571,
		["ins"] = "Burnout - move from smoke",
	},
	["Bolt Buster"] =
	{
		["ID"] = 298940,
		["ins"] = "Bolt Buster - Sidestep",
	},
	["Mega Taze"] =
	{
		["ID"] = 298718,
		["ins"] = "Mega Taze - Run into smoke",
	},
	["Slimewave"] =
	{
		["ID"] = 300777,
		["ins"] = "Slimewave - Sidestep",
	},
	["Toxic Wave"] =
	{
		["ID"] = 297834,
		["ins"] = "Toxic Wave - Run to robot",
	},
	["Disassembling Protocol"] =
	{
		["ID"] = 301990,
		["ins"] = "Disassembling Protocol - Mitigation",
	},
	["Gyro-Scrap"] =
	{
		["ID"] = 300159,
		["ins"] = "Gyro-Scrap - Run away",
	},
	["Exhaust"] =
	{
		["ID"] = 300177,
		["ins"] = "Exhaust - Move from smoke",
	},
	["Repair Protocol"] =
	{
		["ID"] = 300171,
		["ins"] = "Repair Protocol - Interrupt",
	},
	["Shield Bash"] =
	{
		["ID"] = 273185,
		["ins"] = "Shield Bash - Mitigation",
	},
	["Overclock"] =
	{
		["ID"] = 299588,
		["ins"] = "Overclock - Interrupt",
	},
	["Repair"] =
	{
		["ID"] = 300087,
		["ins"] = "Repair - Interrupt",
	},
	["Scrap Cannon"] =
	{
		["ID"] = 300188,
		["ins"] = "Scrap Cannon - Sidestep",
	},
	["Detonate"] =
	{
		["ID"] = 301088,
		["ins"] = "Detonate - Interrupt",
	},
	["Whirling Edge"] =
	{
		["ID"] = 285020,
		["ins"] = "Whirling Edge - Run away",
	},
	["Maximum Thrust"] =
	{
		["ID"] = 283421,
		["ins"] = "Maximum Thrust - Sidestep",
	},
	["Process Waste"] =
	{
		["ID"] = 294290,
		["ins"] = "Process Waste - Sidestep",
	},
	["Venting Flames"] =
	{
		["ID"] = 291946,
		["ins"] = "Venting Flames - Go behind cool cube",
	},
	["Capacitor Discharge"] =
	{
		["ID"] = 295169,
		["ins"] = "Capacitor Discharge - Run to free floor",
	},
	["Tune-Up"] =
	{
		["ID"] = 293729,
		["ins"] = "Tune-Up - Interrupt",
	},
	["Sonic Pulse"] =
	{
		["ID"] = 293986,
		["ins"] = "Sonic Pulse - Sidestep",
	},
	["Skullcracker"] =
	{
		["ID"] = 300296,
		["ins"] = "Skullcracker - Mitigation",
	},
	["Coalesce"] =
	{
		["ID"] = 297835,
		["ins"] = "Coalesce - Run to robot",
	},
	["Maximum Thrust"] =
	{
		["ID"] = 283421,
		["ins"] = "Maximum Thrust - Sidestep",
	},
	["Vent Jets"] =
	{
		["ID"] = 285388,
		["ins"] = "Vent Jets - Run Away",
	},
	["Giga-Zap"] =
	{
		["ID"] = 291939,
		["ins"] = "Giga-Zap - Face Away",
	},
	["Rock Lance"] =
	{
		["ID"] = 263202,
		["ins"] = "Rock Lance - Send Help",
	},
	["Azerite Heartseeker"] =
	{
		["ID"] = 262513,
		["ins"] = "Azerite Heartseeker - Help",
	},
	["Savage Cleave"] =
	{
		["ID"] = 265019,
		["ins"] = "Savage Cleave - Sidestep",
	},
	["Decaying Mind"] =
	{
		["ID"] = 278961,
		["ins"] = "Decaying Mind - Interrupt",
	},
	["Short Out"] =
	{
		["ID"] = 297128,
		["ins"] = "Short Out - Run to bubble",
	},
	["Cyclone Strike"] =
	{
		["ID"] = 263573,
		["ins"] = "Cyclone Strike - Sidestep",
	},
	["Power Shot"] =
	{
		["ID"] = 264574,
		["ins"] = "Power Shot - Sidestep",
	},
	["Overflow"] =
	{
		["ID"] = 295346,
		["ins"] = "Overflow - Run cunt",
	},
	["Crushing Reverberation"] =
	{
		["ID"] = 295332,
		["ins"] = "Crushing Reverberation - Stack on tank cunt",
	},
	["Overwhelming Barrage"] =
	{
		["ID"] = 295138,
		["ins"] = "Overwhelming Barrage - Dodge cunt",
	},
	["Frostshock Bolts"] =
	{
		["ID"] = 295601,
		["ins"] = "Frostshock Bolts - Dodge cunt",
	},
	["Inversion"] =
	{
		["ID"] = 295791,
		["ins"] = "Inversion - Spread cunt",
	},
	["Bioluminescent Cloud"] =
	{
		["ID"] = 292205,
		["ins"] = "Bioluminescent Cloud - Get glowing cunt",
	},
	["Shock Pulse"] =
	{
		["ID"] = 292279,
		["ins"] = "Shock Pulse - Run cunt",
	},
	["Arcane Bomb"] =
	{
		["ID"] = 296746,
		["ins"] = "Arcane Bomb - Run cunt",
	},
	["Gale Buffet"] =
	{
		["ID"] = 296701,
		["ins"] = "Gale Buffet - Run to stormy cunt",
	},
	["Arcanado Burst"] =
	{
		["ID"] = 296701,
		["ins"] = "Arcanado Burst - Tornados cunt",
	},
	["Coral Growth"] =
	{
		["ID"] = 296555,
		["ins"] = "Coral Growth - Run cunt",
	},
	["Briny Bubble"] =
	{
		["ID"] = 297333,
		["ins"] = "Briny Bubble - Help cunt-s",
	},
	["Rippling Wave"] =
	{
		["ID"] = 296688,
		["ins"] = "Rippling Wave - Soak - s l o w l y - cunt",
	},
	["Arcing Azerite"] =
	{
		["ID"] = 296944,
		["ins"] = "Arcing Azerite - Destroy Corals cunt",
	},
	["Conductive Pulse"] =
	{
		["ID"] = 295822,
		["ins"] = "Conductive Pulse - Interrupt cunt",
	},
	["Frenetic Charge"] =
	{
		["ID"] = 299914,
		["ins"] = "Frenetic Charge - Soak cunt",
	},
	["Zealous Eruption"] =
	{
		["ID"] = 301807,
		["ins"] = "Zealous Eruption - Run to safe boss cunt",
	},
	["Fanatical Verdict"] =
	{
		["ID"] = 296850,
		["ins"] = "Fanatical Verdict - Spread cunt",
	},
	["Potent Spark"] =
	{
		["ID"] = 301947,
		["ins"] = "Potent Spark - Botanist orbs cunt",
	},
	["Violent Outburst"] =
	{
		["ID"] = 297325,
		["ins"] = "Violent Outburst - Run cunt",
	},
}
aura_env.classColor = function(class)
      if class == "Death Knight" then return "|cFFC41F3B" elseif
      class == "Demon Hunter" then return "|cFFA330C9" elseif
      class == "Druid" then return "|cFFFF7D0A" elseif
      class == "Hunter" then return "|cFFABD473" elseif
      class == "Mage" then return "|cFF40C7EB" elseif
      class == "Monk" then return "|cFF00FF96" elseif
      class == "Paladin" then return "|cFFF58CBA" elseif
      class == "Priest" then return "|cFFFFFFFF"  elseif
      class == "Rogue" then return "|cFFFFF569"  elseif
      class == "Shaman" then return "|cFF0070DE" elseif
      class == "Warlock" then return "|cFF8787ED" elseif
      class == "Warrior" then return "|cFFC79C6E" else
      return "|cFFFFFFFF" end
end