//Inheritance Stuff

Actor Matchstick_BaseParticle
{
	+NoInteraction
	+ForceXYBillboard
	+ClientSideOnly
	
	RenderStyle Normal
	Alpha 0.99
	States
	{
		Spawn:				// Initialization goes here.
			TNT1 A 0
			Goto FadeIn
		FadeIn:				// Optional fading in.
			TNT1 A 0
			Goto Idle
		Idle:				// Fly around.
			TNT1 A 0
			Goto FadeOut
		FadeOut:			// Dissipate.
			TNT1 A 0
			Stop
	}
}

Actor Matchstick_BaseParticleMultiple : Matchstick_BaseParticle
{
	States
	{
		Spawn:
			TNT1 AA 0 A_Jump(255, "SpriteA", "SpriteB", "SpriteC", "SpriteD")
			Goto Spawn
		SpriteA:
			TNT1 A 0 A_Jump(255, "FadeIn")
			Goto SpriteA
		SpriteB:
			TNT1 A 0 A_Jump(255, "FadeIn")
			Goto SpriteB
		SpriteC:
			TNT1 A 0 A_Jump(255, "FadeIn")
			Goto SpriteC
		SpriteD:
			TNT1 A 0 A_Jump(255, "FadeIn")
			Goto SpriteD
		FadeIn:				// Optional fading in.
			TNT1 A 0
			Goto Idle
		Idle:				// Fly around.
			TNT1 A 0
			Goto FadeOut
		FadeOut:			// Dissipate.
			TNT1 A 0
			Stop
	}
}

Actor Match_Glow : Matchstick_BaseParticleMultiple
{
	Alpha 0.6
	RenderStyle Add
	States
	{
		Spawn:
			TNT1 AA 0 A_Jump(255, "SpriteA", "SpriteB")
		SpriteA:
			FALC M 0 A_Jump(255, "FadeIn")
			Goto SpriteA
		SpriteB:
			FALC R 0 A_Jump(255, "FadeIn")
			Goto SpriteB
		FadeIn:
			"####" "#" 0 Bright A_SetScale(FRandom(0.1, 0.2))
			Goto Idle
		Idle:
			"####" "#" 2 Bright A_Jump(200, "FadeOut")
			Loop
		FadeOut:
			"####" "#" 1 Bright A_FadeOut(0.03)
			"####" "#" 0 A_ScaleVelocity(FRandom(0.97, 0.99))
			"####" "#" 0 A_SetScale(ScaleX + FRandom(0.002, 0.003))
			Loop
	}
}

Actor Match_Flame : Matchstick_BaseParticleMultiple
{
	Alpha 0.6
	RenderStyle Add
	States
	{
		Spawn:
			TNT1 AA 0 A_Jump(255, "SpriteA", "SpriteB", "SpriteC", "SpriteD",
								 "SpriteE", "SpriteF", "SpriteG", "SpriteH")
		SpriteA:
			FALC A 0 A_Jump(255, "FadeIn")
			Goto SpriteA
		SpriteB:
			FALC B 0 A_Jump(255, "FadeIn")
			Goto SpriteB
		SpriteC:
			FALC C 0 A_Jump(255, "FadeIn")
			Goto SpriteC
		SpriteD:
			FALC D 0 A_Jump(255, "FadeIn")
			Goto SpriteD
		SpriteE:
			FALC E 0 A_Jump(255, "FadeIn")
			Goto SpriteE
		SpriteF:
			FALC F 0 A_Jump(255, "FadeIn")
			Goto SpriteF
		SpriteG:
			FALC G 0 A_Jump(255, "FadeIn")
			Goto SpriteG
		SpriteH:
			FALC H 0 A_Jump(255, "FadeIn")
			Goto SpriteH
		FadeIn:
			"####" "#" 0 Bright A_SetScale(FRandom(0.1, 0.15))
			Goto Idle
		Idle:
			"####" "#" 2 Bright A_Jump(190, "FadeOut")
			Loop
		FadeOut:
			"####" "#" 1 Bright A_FadeOut(0.045)
			"####" "#" 0 A_ScaleVelocity(FRandom(1.01, 1.03))
			"####" "#" 0 A_SetScale(ScaleX - FRandom(0.002, 0.005))
			Loop
	}
}

Actor Match_Ember : Matchstick_BaseParticleMultiple
{
	Alpha 0.99
	RenderStyle Add
	States
	{
		Spawn:
			TNT1 AA 0 A_Jump(255, "SpriteA", "SpriteB", "SpriteC")
		SpriteA:
			FALC J 0 A_Jump(255, "FadeIn")
			Goto SpriteA
		SpriteB:
			FALC K 0 A_Jump(255, "FadeIn")
			Goto SpriteB
		SpriteC:
			FALC L 0 A_Jump(255, "FadeIn")
			Goto SpriteC
		FadeIn:
			"####" "#" 0 Bright A_SetScale(FRandom(0.02, 0.04))
			Goto Idle
		Idle:
			"####" "#" 2 Bright A_Jump(200, "FadeOut")
			Loop
		FadeOut:
			"####" "#" 1 Bright A_Weave(FRandom(0.9, 1.0), FRandom(0.9, 1.0),
										FRandom(70, 90), FRandom(70, 90))
			"####" "#" 0 A_JumpIf(ScaleX <= 0.0, "NULL")
			"####" "#" 0 A_ChangeVelocity(VelX * FRandom(0.93, 0.99),
										  VelY * FRandom(0.93, 0.99),
										  VelZ - FRandom(0.1, 0.2),
										  CVF_REPLACE)
			"####" "#" 0 A_SetScale(ScaleX - FRandom(0.001, 0.0005))
			Loop
	}
}

Actor Match_Smoke : Matchstick_BaseParticleMultiple
{
	Alpha 0.0
	RenderStyle Translucent
	States
	{
		Spawn:
			TNT1 AA 0 A_Jump(255, "SpriteA", "SpriteB", "SpriteC", "SpriteD")
		SpriteA:
			FALC N 0 A_Jump(255, "FadeIn")
			Goto SpriteA
		SpriteB:
			FALC O 0 A_Jump(255, "FadeIn")
			Goto SpriteB
		SpriteC:
			FALC P 0 A_Jump(255, "FadeIn")
			Goto SpriteC
		SpriteD:
			FALC Q 0 A_Jump(255, "FadeIn")
			Goto SpriteD
		FadeIn:
			"####" "#" 0 A_SetScale(FRandom(0.2, 0.25))
			Goto RealFadeIn
		RealFadeIn:
			"####" "#" 1 A_FadeIn(FRandom(0.02, 0.05))
			"####" "#" 0 A_JumpIf(Alpha >= 0.4, "Idle")
			Loop
		Idle:
			"####" "#" 4 A_Jump(35, "FadeOut")
			Loop
		FadeOut:
			"####" "#" 1 A_FadeOut(0.02)
			/* "####" "#" 0 A_ChangeVelocity(VelX * FRandom(0.97, 0.99),
										  VelY * FRandom(0.97, 0.99),
										  VelZ + FRandom(0.02, 0.06),
										  CVF_REPLACE) */
			"####" "#" 0 A_ScaleVelocity(0.96)
			"####" "#" 0 A_SetScale(ScaleX + FRandom(0.02, 0.015))
			Loop
	}
}

Actor Match_Flare : Matchstick_BaseParticle
{
	RenderStyle Add
	States
	{
		Spawn:
			FALC II 0 A_SetScale(Frandom(0.3,0.4))
		Looplet:
			FALC I 1 Bright A_FadeOut(0.19)
			Loop
	}
}