// ------------------------------------------------------------
// Explosion spawner
// ------------------------------------------------------------
ACTOR ExplosionSpawner : LSSpawnerBase
{
	// Flags
	+NOGRAVITY

	// States
	States
	{
	Spawn:
		TNT1 A 0 nodelay A_PlaySound("Explosion/Close", CHAN_6)
		TNT1 A 0 A_PlaySound("Explosion/Far", CHAN_7)
		TNT1 AAAAAAAAAAAA 0 A_SpawnItemEx("ExplosionSmokeSpawner", 0, 0, 0, frandom(-4.0, 4.0), frandom(-4.0, 4.0), frandom(-4.0, 4.0))
		TNT1 A 70
		stop
	}
}

// ------------------------------------------------------------
// Explosion smoke spawner
// ------------------------------------------------------------
ACTOR ExplosionSmokeSpawner : LSSpawnerBase
{
	// States
	States
	{
	Spawn:
		TNT1 A 0
		TNT1 AAAAAAAAAAAA random(2, 4) A_CustomMissile("ExplosionSmoke", 0, 0, random(0, 360), 2, random(0, 360))
		stop
	}
}

// ------------------------------------------------------------
// Explosion smoke particle
// ------------------------------------------------------------
ACTOR ExplosionSmoke : LSParticleBase
{
	// Properties
	Alpha 0.0
	Scale 0.2
	Speed 2
	VSpeed 7

	// Flags
	+NOGRAVITY
	+FORCEXYBILLBOARD

	// States
	States
	{
	Spawn:
		TNT1 A 0 nodelay A_FadeIn(0.2)
		SMOK A 1 A_SetScale(scalex + 0.025, scaley + 0.025)
		TNT1 A 0 A_JumpIf(alpha >= 0.8, "Death")
		loop
	Death:
		TNT1 A 0 A_SetScale(scalex + 0.025, scaley + 0.025)
		SMOK A 1 A_FadeOut(0.05)
		loop
	}
}
