/* Smokin', Smokin'
We're cookin' tonight, just keep on tokin'
Smokin', Smokin'
I feel alright, mamma I'm not jokin', yeah! */

//Spawners

Actor GunsmokeSpawner_Shared
{
	+NOINTERACTION
	+NOGRAVITY
	+NOTONAUTOMAP
	Speed 20
}

Actor GunsmokeSpawner_Small : GunsmokeSpawner_Shared
{
	States
	{
	Spawn:
	TNT1 A 0
	TNT1 AAAAA 0 A_SpawnItemEx("Gunsmoke_Small",frandom(1.0,-1.0),frandom(1.0,-1.0),frandom(1.0,-1.0),frandom(0.25,-0.25),frandom(0.25,-0.25),frandom(0.25,-0.25),frandom(0.0,360.0),SXF_CLIENTSIDE)
	Stop
	}
}

Actor GunsmokeSpawner_Medium : GunsmokeSpawner_Shared
{
	States
	{
	Spawn:
	TNT1 A 0
	TNT1 A 0 A_SpawnItemEx("Gunsmoke_Medium",frandom(1.5,-1.5),frandom(1.5,-1.5),frandom(1.5,-1.5),frandom(0.25,-0.25),frandom(0.25,-0.25),frandom(0.25,-0.25),frandom(0.0,360.0),SXF_CLIENTSIDE)
	Stop
	}
}

Actor GunsmokeSpawner_Large : GunsmokeSpawner_Shared
{
	States
	{
	Spawn:
	TNT1 A 0
	TNT1 AA 0 A_SpawnItemEx("Gunsmoke_Large",frandom(2.5,-2.5),frandom(2.5,-2.5),frandom(2.5,-2.5),frandom(0.25,-0.25),frandom(0.25,-0.25),frandom(0.25,-0.25),frandom(0.0,360.0),SXF_CLIENTSIDE)
	Stop
	}
}

//Smokes
	
Actor Gunsmoke_Basis : GunsmokeSpawner_Shared
{
	Speed 0
	Alpha 0.0
	RenderStyle Translucent
	+FORCEXYBILLBOARD
	States
	{
		Spawn:
		    TNT1 A 0
			TNT1 AA 0 A_Jump(255, "SpriteE", "SpriteF", "SpriteG", "SpriteH",
			"SpriteI", "SpriteJ", "SpriteK", "SpriteL", "SpriteM", "SpriteN",
			"SpriteO", "SpriteP")
		SpriteE:
			DYMI E 0 A_Jump(255, "FadeIn")
			Goto SpriteE
		SpriteF:
			DYMI F 0 A_Jump(255, "FadeIn")
			Goto SpriteF
		SpriteG:
			DYMI G 0 A_Jump(255, "FadeIn")
			Goto SpriteG
		SpriteH:
			DYMI H 0 A_Jump(255, "FadeIn")
			Goto SpriteH
		SpriteI:
			DYMI I 0 A_Jump(255, "FadeIn")
			Goto SpriteI
		SpriteJ:
			DYMI J 0 A_Jump(255, "FadeIn")
			Goto SpriteJ
		SpriteK:
			DYMI K 0 A_Jump(255, "FadeIn")
			Goto SpriteK
		SpriteL:
			DYMI L 0 A_Jump(255, "FadeIn")
			Goto SpriteL
		SpriteM:
			DYMI A 0 A_Jump(255, "FadeIn")
			Goto SpriteM
		SpriteN:
			DYMI B 0 A_Jump(255, "FadeIn")
			Goto SpriteN
		SpriteO:
			DYMI C 0 A_Jump(255, "FadeIn")
			Goto SpriteO
		SpriteP:
			DYMI D 0 A_Jump(255, "FadeIn")
			Goto SpriteP
		FadeIn:
			"####" "#" 0 A_SetScale(FRandom(0.01, 0.015))
			Goto RealFadeIn
		RealFadeIn:
			"####" "#" 1 A_FadeIn(FRandom(0.1, 0.06))
			"####" "#" 0 A_JumpIf(Alpha >= 0.4, "FadeOut")
			Loop
		FadeOut:
			"####" "#" 1 A_FadeOut(FRandom(0.015,0.02))
			"####" "#" 0 A_SetScale(ScaleX + FRandom(0.005, 0.0025))
			Loop
	}
}

Actor Gunsmoke_Small : Gunsmoke_Basis
{
	States
	{
		FadeIn:
			"####" "#" 0 A_SetScale(FRandom(0.03, 0.045))
			Goto RealFadeIn
		RealFadeIn:
			"####" "#" 1 A_FadeIn(FRandom(0.1, 0.06))
			"####" "#" 0 A_JumpIf(Alpha >= 0.25, "FadeOut")
			Loop
		FadeOut:
			"####" "#" 1 A_FadeOut(FRandom(0.015,0.01))
			"####" "#" 0 A_SetScale(ScaleX + FRandom(0.0025, 0.0035))
			Loop
	}
}

Actor Gunsmoke_Medium : Gunsmoke_Basis
{
	States
	{
		FadeIn:
			"####" "#" 0 A_SetScale(FRandom(0.07, 0.09))
			Goto RealFadeIn
		RealFadeIn:
			"####" "#" 1 A_FadeIn(FRandom(0.1, 0.06))
			"####" "#" 0 A_JumpIf(Alpha >= 0.2, "FadeOut")
			Loop
		FadeOut:
			"####" "#" 1 A_FadeOut(FRandom(0.01,0.008))
			"####" "#" 0 A_SetScale(ScaleX + FRandom(0.0025, 0.0035))
			Loop
	}
}

Actor Gunsmoke_Large : Gunsmoke_Basis
{
	States
	{
		FadeIn:
			"####" "#" 0 A_SetScale(FRandom(0.1, 0.12))
			Goto RealFadeIn
		RealFadeIn:
			"####" "#" 1 A_FadeIn(FRandom(0.1, 0.06))
			"####" "#" 0 A_JumpIf(Alpha >= 0.25, "FadeOut")
			Loop
		FadeOut:
			"####" "#" 1 A_FadeOut(FRandom(0.01,0.008))
			"####" "#" 0 A_SetScale(ScaleX + FRandom(0.003, 0.004))
			Loop
	}
}