actor BulletHeat
{
  Radius 1
  Height 1
  Speed 0
  Scale 0.025
  RenderStyle Translucent
  Alpha 0.9
  -SOLID
  +NOBLOCKMAP
  +NOCLIP
  +NOGRAVITY
  States
  {
  Spawn:
   TNT1 A 4
   FIR2 ABCDEFGHIJKLMN 2 BRIGHT
   TNT1 AAA 1 A_SpawnItemEx("BulletSmoke2", Random(-1,1), Random(-1,1), 0, 0, 0, 0, 0, 128, 64)
   stop
  }
}

actor BulletSpark Replaces BulletPuff
{
	Radius 4
	Height 2
	spawnid 131
	renderstyle Add
	alpha 0.9
	+FIXMAPTHINGPOS
	+FORCEXYBILLBOARD
	+PUFFGETSOWNER
	+NOINTERACTION
	+NOBLOCKMAP
	+NOGRAVITY
	+ISMONSTER
	+PUFFONACTORS
	-ALLOWPARTICLES
	Scale 0.17
	states
	{
  Spawn:
	TNT1 A 0
	TNT1 A 0 A_SetScale(0.10)
	TNT1 A 0 A_SpawnItemEx("BulletTracerSpawner", 0, 0, 0, 0, 0, 0, 0,  SXF_SETMASTER | SXF_TRANSFERPOINTERS, 0)
	goto BodySpark
  BodySpark:
	SPRK A 0 A_Jump(127, "Spark2", "Spark3", "Spark4")
	SPRK ABCDE 1 bright
	stop
  Crash:
	SPRK A 0
	SPRK A 0 A_SpawnItemEx("BulletTracerSpawner", 0, 0, 0, 0, 0, 0, 0,  SXF_SETMASTER | SXF_TRANSFERPOINTERS, 0)
	SPRK A 0 A_SpawnItemEx("BulletSmoke", 0, 0, 0, 0, 0, 0, 0, 128, 0)
	SPRK A 0 A_SpawnItemEx("BulletHeat", 0, 0, 0, 0, 0, 0, 0, 128, 64)
	SPRK A 0 A_SpawnItemEx("Ricochet", 0, 0, 0, 0, 0, 0, 0, 128, 168)
	SPRK AAA 0 A_SpawnItemEx("Debris1", 0, 0, 0, Random(-1, 1), Random(-1, 1), Random(0, 2), Random(-360, 360), 128, 164)
	SPRK AAA 0 A_SpawnItemEx("Debris2", 0, 0, 0, Random(-1, 1), Random(-1, 1), Random(0, 2), Random(-360, 360), 128, 164)
	SPRK AAA 0 A_SpawnItemEx("Debris3", 0, 0, 0, Random(-1, 1), Random(-1, 1), Random(0, 2), Random(-360, 360), 128, 164)
	SPRK AAA 0 A_SpawnItemEx("Debris4", 0, 0, 0, Random(-1, 1), Random(-1, 1), Random(0, 2), Random(-360, 360), 128, 164)
	SPRK A 0 A_SpawnItemEx("Debris5", 0, 0, 0, Random(-1, 1), Random(-1, 1), Random(0, 2), Random(-360, 360), 128, 164)
	SPRK A 0 A_Jump(127, "Spark2", "Spark3", "Spark4")
	SPRK ABCDE 1 bright
	stop
  Spark2:
  	SPR2 ABCDE 1 bright
	stop
  Spark3:
  	SPR3 ABCDE 1 bright
	stop
  Spark4:
  	SPR4 ABCDE 1 bright
	stop
  Melee:
	PUFF CD 4
	stop
  }
}

actor Ricochet
{
 radius 1
 height 1
 +noclip
 +DONTSPLASH
 -ACTIVATEMCROSS
 -ACTIVATEPCROSS
 -ACTIVATEIMPACT
 States
 {
 Spawn:
  TNT1 A 0
  TNT1 A 1 A_PlaySound("Ricochet")
  stop
 }
}

actor Debris1
{
  Projectile
  Speed 3
  Height 1
  Radius 1
  Gravity 0.2
  RenderStyle Translucent
  Alpha 1.0
  -NOGRAVITY
  +DONTSPLASH
  -ACTIVATEMCROSS
  -ACTIVATEPCROSS
  -ACTIVATEIMPACT
  +FORCEXYBILLBOARD
  States
  {
  Spawn:
   DEB1 ABCDEFGH 4
   DEB1 A 0 A_CheckFloor("Death")
   loop
  Death:
   TNT1 A 1
   stop
  }
}

actor Debris2
{
  Projectile
  Speed 3
  Height 1
  Radius 1
  Gravity 0.12
  RenderStyle Translucent
  Alpha 1.0
  -NOGRAVITY
  +DONTSPLASH
  -ACTIVATEMCROSS
  -ACTIVATEPCROSS
  -ACTIVATEIMPACT
  +FORCEXYBILLBOARD
  States
  {
  Spawn:
   DEB2 ABCDEFGH 4
   DEB2 A 0 A_CheckFloor("Death")
   loop
  Death:
   TNT1 A 1
   stop
  }
}

actor Debris3
{
  Projectile
  Speed 3
  Height 1
  Radius 1
  Gravity 0.3
  RenderStyle Translucent
  Alpha 1.0
  -NOGRAVITY
  +DONTSPLASH
  -ACTIVATEMCROSS
  -ACTIVATEPCROSS
  -ACTIVATEIMPACT
  +FORCEXYBILLBOARD
  States
  {
  Spawn:
   DEB3 ABCDEFGH 4
   DEB3 A 0 A_CheckFloor("Death")
   loop
  Death:
   TNT1 A 1
   stop
  }
}

actor Debris4
{
  Projectile
  Speed 3
  Height 1
  Radius 1
  Gravity 0.1
  RenderStyle Translucent
  Alpha 1.0
  -NOGRAVITY
  +DONTSPLASH
  -ACTIVATEMCROSS
  -ACTIVATEPCROSS
  -ACTIVATEIMPACT
  +FORCEXYBILLBOARD
  States
  {
  Spawn:
   DEB4 ABCDEFGH 4
   DEB4 A 0 A_CheckFloor("Death")
   loop
  Death:
   TNT1 A 1
   stop
  }
}

actor Debris5
{
  Projectile
  Speed 3
  Height 1
  Radius 1
  Gravity 0.5
  RenderStyle Translucent
  Alpha 1.0
  -NOGRAVITY
  +DONTSPLASH
  -ACTIVATEMCROSS
  -ACTIVATEPCROSS
  -ACTIVATEIMPACT
  +FORCEXYBILLBOARD
  States
  {
  Spawn:
   DEB5 ABCDEFGH 3
   DEB5 A 0 A_CheckFloor("Death")
   loop
  Death:
   TNT1 A 1
   stop
  }
}