// emitters
ACTOR streakemitter_red 23001
{
	renderstyle none
	
	+NOCLIP
	+NOGRAVITY
	+ClientSideOnly
	
	States
	{
		Spawn:
			TNT1 A 0 
			STRK A 1
			STRK A 1 A_SpawnItemEx("streak_red", random(-32, 32), random(-32, 32), 0, 0, 0, 3, 0, SXF_CLIENTSIDE, 0)
			goto Spawn
	}
}

ACTOR streakemitter_green 23002
{
	renderstyle none
	
	+NOCLIP
	+NOGRAVITY
	+ClientSideOnly
	
	States
	{
		Spawn:
			TNT1 A 0 
			STRK B 1 
			STRK B 1 A_SpawnItemEx("streak_green", random(-32, 32), random(-32, 32), 0, 0, 0, 3, 0, SXF_CLIENTSIDE, 0)
			goto Spawn
	}
}

ACTOR streakemitter_blue 23003
{
	renderstyle none
	
	+NOCLIP
	+NOGRAVITY
	+ClientSideOnly
	
	States
	{
		Spawn:
			TNT1 A 0 
			STRK C 1
			STRK C 1 A_SpawnItemEx("streak_blue", random(-32, 32), random(-32, 32), 0, 0, 0, 3, 0, SXF_CLIENTSIDE, 0)
			goto Spawn
	}
}

ACTOR streakemitter_soul 23004
{
	renderstyle none
	
	+NOCLIP
	+NOGRAVITY
	
	States
	{
		Spawn:
			STRK C 1
			STRK C 1 A_SpawnItemEx("streak_soul1", random(-32, 32), random(-32, 32), 0, 0, 0, 3, 0, SXF_CLIENTSIDE, 0)
			STRK C 1 A_SpawnItemEx("streak_soul2", random(-32, 32), random(-32, 32), 0, 0, 0, 3, 0, SXF_CLIENTSIDE, 0)
			STRK C 1 A_SpawnItemEx("streak_soul3", random(-32, 32), random(-32, 32), 0, 0, 0, 3, 0, SXF_CLIENTSIDE, 0)
			goto Spawn
	}
}

// particle actors
actor streak_red
{
	renderstyle add
	
	+FORCEYBILLBOARD
	+CLIENTSIDEONLY
	+NOINTERACTION
	
	States
	{
		Spawn:
			TNT1 A 1 NoDelay ACS_NamedExecuteAlways("ParticleCheck", 0, 2)
			TNT1 A 1
			TNT1 A 50 A_Jump(256, "Loopme")
		Loopme:
			STRK A 1 bright A_FadeOut(0.02)
			loop
		NoSpawn:
			TNT1 A 1
			Stop
	}
}

actor streak_green : streak_red
{
	States
	{
		Loopme:
			STRK B 1 bright A_FadeOut(0.02)
			loop
	}
}

actor streak_blue : streak_red
{
	States
	{
		Loopme:
			STRK C 1 bright A_FadeOut(0.02) 
			loop
	}
}

actor streak_yellow : streak_red
{
	States
	{
		Loopme:
			STRK D 1 bright A_FadeOut(0.02) 
			loop
	}
}

actor streak_violet : streak_red
{
	States
	{
		Loopme:
			STRK E 1 bright A_FadeOut(0.02) 
			loop
	}
}


ACTOR streakQuickEmitter_Yellow 
{
	renderstyle none
	
	+NOCLIP
	+NOGRAVITY
	alpha 0.5
	
	States
	{
		Spawn:
			TNT1 A 1
			TNT1 A 0 A_SpawnItemEx("streak_yellow", random(-32, 32), random(-32, 32), 0, 0, 0, 3, 0, SXF_CLIENTSIDE, 0)
			TNT1 A 0 A_Warp(AAPTR_Target, 0,0,0,0,WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
			TNT1 A 2 A_Fadeout(0.1)
			loop
	}
}

ACTOR streakQuickEmitter_Purple
{
	renderstyle none
	
	+NOCLIP
	+NoGravity
	alpha 0.5
	States
	{
		Spawn:
			TNT1 A 1
			TNT1 A 0 A_SpawnItemEx("streak_violet", random(-32, 32), random(-32, 32), 0, 0, 0, 3, 0, SXF_CLIENTSIDE, 0)
			TNT1 A 0 A_Warp(AAPTR_Target, 0,0,0,0,WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
			TNT1 A 2 A_Fadeout(0.1)
			Loop
	}
}

actor streakb_cfx
{
	renderstyle add
	scale 0.5
	
	+NOCLIP
	+NOGRAVITY
	+FORCEYBILLBOARD
	+CLIENTSIDEONLY
	
	States
	{
		Spawn:
			PLSS AB 3 bright A_FadeOut(0.03) //shortened because it was hitting ceiling and doing odd effect
			goto Spawn
	}
}

actor streak_cfx
{
	renderstyle add
	scale 0.5
	
	+NOCLIP
	+NOGRAVITY
	+FORCEYBILLBOARD
	+CLIENTSIDEONLY
	
	States
	{
		Spawn:
			BLUP AB 3 bright A_FadeOut(0.03) //shortened because it was hitting ceiling and doing odd effect
			goto Spawn
	}
}

actor streak_soul1
{
	renderstyle add
	
	+FORCEYBILLBOARD
	+CLIENTSIDEONLY
	+NOINTERACTION
	
	States
	{
		Spawn:
			SOUL A 1 bright A_FadeOut(0.02) //shortened because it was hitting ceiling and doing odd effect
			loop
	}
}

actor streak_soul2
{
	renderstyle add
	
	+FORCEYBILLBOARD
	+CLIENTSIDEONLY
	+NOINTERACTION
	
	States
	{
		Spawn:
			SOUL B 1 bright A_FadeOut(0.02) //shortened because it was hitting ceiling and doing odd effect
			loop
	}
}

actor streak_soul3
{
	renderstyle add
	
	+FORCEYBILLBOARD
	+CLIENTSIDEONLY
	+NOINTERACTION
	
	States
	{
		Spawn:
			SOUL C 1 bright A_FadeOut(0.02) //shortened because it was hitting ceiling and doing odd effect
			loop
	}
}