ACTOR BlockPuff
{
  +NOBLOCKMAP
  +NOGRAVITY
  -ALLOWPARTICLES
  +PUFFONACTORS
  +RANDOMIZE
  RenderStyle Translucent
  SeeSound "fist/smack"
  Damagetype "QuickMelee"
  Alpha 0.2
  VSpeed 1
  Mass 5
  States
  {
  Melee:
  Spawn:
	PUFF AAA 0
	Stop
  Crash:
    PUFF AAAABBBBCCCCDDDD 1 A_FadeOut(0.1)
    Stop
  }
}

Actor BulletPuff2
{
	renderstyle Add
	alpha 0.4
	Scale 0.7
	Damagetype "Firearm"
	+NOBLOCKMAP
	+NOGRAVITY
	+FLOAT
	+NOCLIP
	states
	{
	Spawn:
		TNT1 A 0 BRIGHT A_Stop
		TNT1 A 0 BRIGHT A_SpawnItemEx("PuffSpark",1,1,1,0,0,0,0,SXF_CLIENTSIDE | SXF_NOCHECKPOSITION,0)
		TNT1 A 0 BRIGHT A_Jump(128,"Spawn2","Spawn3","Spawn4")
		TNT1 A 0 A_Jump(128,2)
		TNT1 A 0 A_PlaySoundEx("bullet/ricochet",CHAN_WEAPON)
		SMK1 BCDEFGHIJKLMNO 1 BRIGHT
		stop
	Spawn2:
		TNT1 A 0 A_Jump(128,2)
		TNT1 A 0 A_PlaySoundEx("bullet/ricochet",CHAN_WEAPON)
		TNT1 A 0 BRIGHT A_Stop
		TNT1 A 0 BRIGHT A_Stop
		SMK2 BCDEFGHIJKLMNOP 1 BRIGHT
		stop
	Spawn3:
		TNT1 A 0 A_Jump(128,2)
		TNT1 A 0 A_PlaySoundEx("bullet/ricochet",CHAN_WEAPON)
		TNT1 A 0 BRIGHT A_Stop
		TNT1 A 0 BRIGHT A_Stop
		SMK3 BCDEFGHIJKLMNOP 1 BRIGHT
		stop
	Spawn4:
		TNT1 A 0 A_Jump(128,2)
		TNT1 A 0 A_PlaySoundEx("bullet/ricochet",CHAN_WEAPON)
		TNT1 A 0 BRIGHT A_Stop
		TNT1 A 0 BRIGHT A_Stop
		SMK4 BCDEFGHIJKLMNOP 1 BRIGHT
		stop
  }
}

ACTOR BP_Shotgun : BulletPuff2
{
	Damagetype "Shotgun"
}

ACTOR BP_TorsoGib : BulletPuff2
{
	Damagetype "PointBlank"
	States
	{
		Spawn:
		TNT1 A 0
		Stop
	}
}

Actor PuffSpark
{
 Scale 0.02
 +FORCEXYBILLBOARD
 +NoInteraction
 RenderStyle Add
 States
 {
  Spawn:
   TNT1 A 0 A_Stop
   TNT1 A 0 A_Jump(128,"Spawn2","Spawn3","Spawn4","Spawn5","Spawn6")
   MUZZ A 1 Bright A_FadeOut(0.04)
   Wait
  Spawn2:
   TNT1 A 0 A_Stop
   MUZZ B 1 Bright A_FadeOut(0.04)
   Wait
  Spawn3:
   TNT1 A 0 A_Stop
   MUZZ C 1 Bright A_FadeOut(0.04)
   Wait
  Spawn4:
   TNT1 A 0 A_Stop
   MUZZ D 1 Bright A_FadeOut(0.04)
   Wait
  Spawn5:
   TNT1 A 0 A_Stop
   MUZZ E 1 Bright A_FadeOut(0.04)
   Wait
  Spawn6:
   TNT1 A 0 A_Stop
   MUZZ F 1 Bright A_FadeOut(0.04)
   Wait
 }
}

actor FlightSmokePuff
{
  RenderStyle Add
  alpha 0.95
  -RANDOMIZE
  +NOCLIP
  PROJECTILE
  Speed 0
  Damage 0
  Scale 0.5
  +CLIENTSIDEONLY
  +NOINTERACTION
  +FORCEXYBILLBOARD
  states
  {
  Spawn:
    TNT1 A 0
    TNT1 A 0 A_Jump(256,"Spawn1","Spawn2","Spawn3","Spawn4","Spawn5","Spawn6")
  Spawn1:
    SMK1 ABCDEFGHIJKLMNOP 2 bright A_FadeOut(0.05)
    stop
  Spawn2:
    SMK2 ABCDEFGHIJKLMNOP 2 bright A_FadeOut(0.05)
    stop
  Spawn3:
    SMK3 ABCDEFGHIJKLMNOP 2 bright A_FadeOut(0.05)
    stop
  Spawn4:
    SMK4 ABCDEFGHIJKLMNOP 2 bright A_FadeOut(0.05)
    stop
  Spawn5:
    SMK5 ABCDEFGHIJKLMNOP 2 bright A_FadeOut(0.05)
    stop
  Spawn6:
    SMK6 ABCDEFGHIJKLMNOP 2 bright A_FadeOut(0.05)
    stop
  }
}

Actor ZTMeleePuff
{
	renderstyle Add
	alpha 0.4
	Scale 0.7
	Damagetype "MeleeDecap"
	+NOBLOCKMAP
	+NOEXTREMEDEATH
	+NOGRAVITY
	+PUFFONACTORS
	+FLOAT
	+PUFFGETSOWNER
	+NOCLIP
	states
	{
	Spawn:
		TNT1 A 0 BRIGHT A_Stop
		TNT1 A 0 A_PlaySoundEx("katana/flesh",CHAN_WEAPON)
		TNT1 A 0 A_GiveToTarget("HitSomething",1)
		stop
	Crash:
		TNT1 A 0 BRIGHT A_Stop
		TNT1 A 0 BRIGHT A_Jump(128,"Spawn2","Spawn3","Spawn4")
		TNT1 A 0 A_PlaySoundEx("katana/concrete",CHAN_WEAPON)
		TNT1 A 0 A_Jump(128,2)
		SMK1 BCDEFGHIJKLMNO 1 BRIGHT
		stop
	Spawn2:
		TNT1 A 0 A_PlaySoundEx("katana/concrete",CHAN_WEAPON)
		TNT1 A 0 A_Jump(128,2)
		TNT1 A 0 BRIGHT A_Stop
		TNT1 A 0 BRIGHT A_Stop
		SMK2 BCDEFGHIJKLMNOP 1 BRIGHT
		stop
	Spawn3:
		TNT1 A 0 A_PlaySoundEx("katana/concrete",CHAN_WEAPON)
		TNT1 A 0 A_Jump(128,2)
		TNT1 A 0 BRIGHT A_Stop
		TNT1 A 0 BRIGHT A_Stop
		SMK3 BCDEFGHIJKLMNOP 1 BRIGHT
		stop
	Spawn4:
		TNT1 A 0 A_PlaySoundEx("katana/concrete",CHAN_WEAPON)
		TNT1 A 0 A_Jump(128,2)
		TNT1 A 0 BRIGHT A_Stop
		TNT1 A 0 BRIGHT A_Stop
		SMK4 BCDEFGHIJKLMNOP 1 BRIGHT
		stop
  }
}

ACTOR ZTRightPuff : ZTMeleePuff
{
	Damagetype "MeleeRight"
}

ACTOR ZTLeftPuff : ZTMeleePuff
{
	Damagetype "MeleeLeft"
}

ACTOR ZTVertPuff : ZTMeleePuff
{
	Damagetype "MeleeVert"
}

ACTOR LargeSmokePuff : FlightSmokePuff
{
Scale 2.0
}

actor ImpactSpark
{
  RenderStyle Add
  alpha 0.95
  -RANDOMIZE
  +NOCLIP
  PROJECTILE
  Speed 2
  Damage 0
  Scale 0.05
  +FORCEXYBILLBOARD
  +CLIENTSIDEONLY
  +NOINTERACTION
  -NOGRAVITY
  Gravity 1.2
  states
  {
  Spawn:
    SPRK A 0
    SPRK A 1 bright A_FadeOut(0.075)
    loop
  }
}

actor ImpactSpark2
{
  RenderStyle Add
  alpha 0.95
  -RANDOMIZE
  +NOCLIP
  PROJECTILE
  Speed 2
  Damage 0
  Scale 0.08
  +FORCEXYBILLBOARD
  +CLIENTSIDEONLY
  +NOINTERACTION
  -NOGRAVITY
  Gravity 1.2
  states
  {
  Spawn:
    SPRK A 0
    SPRK A 1 bright A_FadeOut(0.05)
    loop
  }
}