--UNIT_AURA
--Event that fires off whenever an aura is applied or removed -- probably overkill for this application but it should work relatively fine
--Can also use combatlog event for cast success of hydra shot but am unsure if that would work
--The basic idea of this setup is to minimize the time it's calculating stuff to make it as efficient, to do that we only enable the aura while hydra shot is active; To find when it is active we get the time when it was cast and add 8 seconds to that (Don't know why 8, previous aura said so)
--We find what auras are applied after the cast has begun and see for each if it's the one we're looking for (hydra shot)
--Theoretically SHOULD PROBABLY *LIKELY* work but practically probably isn't going to
function()
	if (aura_env.startCast + 12) < GetTime() then
		local spell = GetSpellInfo(230139) --hydra shot 230139
		local spell2 = GetSpellInfo(239375) --fish 239375
		local spell3 = GetSpellInfo(230214) -- tank debuff
		local j = 0
		for i = 1, GetNumGroupMembers() do
			local name = GetRaidRosterInfo(i)
			if not UnitDebuff(name, spell) and not UnitDebuff(name, spell2) and not UnitDebuff(name, spell3) then
				if name == UnitName("player") and j < 2 then
					aura_env.output = "|cffffd00cStar|r"
					return 0
				end
				if name == UnitName("player") and j >= 2 and j < 5 then
					aura_env.output = "cff4baf1cTriangle|r"
					return 0
				end
				if name == UnitName("player") and j >= 5 and j < 8 then
					aura_env.output = "cfff6802cCircle|r"
					return 0
				end
				if name == UnitName("player") and j >= 8 and j < 11 then
					aura_env.output = "cfff0098cDiamond|r"
					return 0
				end
				j = j + 1 
			end 
		end 
		aura_env.output = "Whatever"
		return 0
	end
end

--DISPLAY
function()	--It's more efficient to only return a value every frame instead of calculating for it as well as returning it
	return aura_env.output
end

--EVERY FRAME TRIGGER
--The trigger that will be actually showing the aura
function() 	--Enables the weakaura for 8 seconds after the cast
	if (aura_env.startCast + 12) < GetTime() then  --If the time of cast + 8 seconds is < current time the aura will be shown (aka for the next 8 seconds after the cast)
		return true
	else
		return false
	end 
end

--COMBAT_LOG_EVENT_UNFILTERED
function(...)	--Enables the weakaura for 8 seconds after the cast
	local subevent = select(3, ...)
	if subevent == "SPELL_CAST_START" then  --If there was a spell cast (in the combat log)
		local caster = select(6, ...)	--Found who cast it
		local spell = select(14, ...)	--And what was cast
		if caster:match("Mistress") and spell == "Hydra Shot" then  --If the spell is Hydra Shot and Mistress cast it then
			aura_env.startCast = GetTime()	--Get the time when it was cast
		end
	end
end

--INIT
--Defines protected variables which are the output and the cast time for the timer
aura_env.startCast = 0
aura_env.output = ""