ACTOR MuzzleFlashSpawner
{
    Radius 1
    Height 1
    Speed 25
	+NOINTERACTION
	+CLIENTSIDEONLY
    PROJECTILE
    States
    {
    Spawn:
        TNT1 A 1
        TNT1 A 0 A_Die
        Goto Death
    Death:
        TNT1 A 0 A_SpawnItemEx("MuzzleFlash",0,0,0,momx*1.14,momy*1.14,momz,0,SXF_CLIENTSIDE|SXF_ABSOLUTEMOMENTUM)
        TNT1 A 0 A_SpawnItemEx("MuzzleSmoke",0,0,0,momx*0.707,momy*0.707,momz,0,SXF_CLIENTSIDE|SXF_ABSOLUTEMOMENTUM)
        Stop
    }
}

ACTOR MuzzleSmokeSpawner : MuzzleFlashSpawner
{
    States
    {
    Spawn:
        TNT1 A 1
        TNT1 A 0 A_Die
        Goto Death
    Death:
        TNT1 A 0 A_SpawnItemEx("MuzzleSmoke",0,0,0,0,0,0,0,SXF_CLIENTSIDE)
        Stop
    }
}

ACTOR MuzzleFlash
{
	RenderStyle ADD
	Alpha 0.75
	Scale 0.25
	+NOINTERACTION
	+CLIENTSIDEONLY
	+FORCEXYBILLBOARD
	+CLIENTSIDEONLY
	States
	{
  Spawn:
		TNT1 A 0
		TNT1 A 0 A_JumpIf(waterlevel > 1, "Water")
		TNT1 A 0 A_Jump(255,"Spawn1","Spawn2","Spawn3","Spawn4","Spawn5")
  Spawn1:
		E1_A ABCDEFGH 1 bright
		stop
  Spawn2:
		E2_A ABCDEFGH 1 bright
		stop
  Spawn3:
		E3_A ABCDEFGH 1 bright
		stop
  Spawn4:
		E4_A ABCDEFGH 1 bright
		stop
  Spawn5:
		E5_A ABCDEFGH 1 bright
		stop
  Water:
		TNT1 A 0
		TNT1 A 0 A_Jump(255,"Water1","Water2","Water3","Water4","Water5")
		Goto Water1
  Water1:
		E1_A ABCDEFGH 1 bright A_Fadeout(0.1)
		stop
  Water2:
		E2_A ABCDEFGH 1 bright A_Fadeout(0.1)
		stop
  Water3:
		E3_A ABCDEFGH 1 bright A_Fadeout(0.1)
		stop
  Water4:
		E4_A ABCDEFGH 1 bright A_Fadeout(0.1)
		stop
  Water5:
		E5_A ABCDEFGH 1 bright A_Fadeout(0.1)
		stop
	}
}


ACTOR MuzzleSmoke
{
	RenderStyle ADD
	Alpha 0.5
	Scale 0.5
	+NOINTERACTION
	+FORCEXYBILLBOARD
	+CLIENTSIDEONLY
	States
	{
  Spawn:
    TNT1 A 1
    TNT1 A 0 A_Jump(128,"Spawn2","Spawn3","Spawn4")
    SMK1 ABCDEFGHIJKLMNOP 2 bright A_FadeOut(0.025)
    stop
  Spawn2:
    SMK2 ABCDEFGHIJKLMNOP 2 bright A_FadeOut(0.025)
    stop
  Spawn3:
    SMK3 ABCDEFGHIJKLMNOP 2 bright A_FadeOut(0.025)
    stop
  Spawn4:
    SMK4 ABCDEFGHIJKLMNOP 2 bright A_FadeOut(0.025)
    stop
	}
}

ACTOR MuzzleFlashSpawnerSmall : MuzzleFlashSpawner
{
    States
    {
    Spawn:
        TNT1 A 1
        TNT1 A 0 A_Die
        Goto Death
    Death:
        TNT1 A 0 A_SpawnItemEx("MuzzleFlashSmall",0,0,0,0,0,0,0,SXF_CLIENTSIDE)
        TNT1 A 0 A_SpawnItemEx("MuzzleSmokeSmall",0,0,0,0,0,0,0,SXF_CLIENTSIDE)
        Stop
    }
}

ACTOR MuzzleFlashSmall : MuzzleFlash {Scale 0.125}
ACTOR MuzzleSmokeSmall : MuzzleSmoke {Scale 0.25}
