ACTOR MightyBootPuff
{
     RenderStyle Add
     Alpha 0.5
     VSpeed 0.6
     Mass 5
	 +NOGRAVITY
	 +NOEXTREMEDEATH
	 +PUFFONACTORS
	 +BLOODLESSIMPACT
  +NODECAL
  +THRUGHOST
  +FORCEXYBILLBOARD
  DamageType MightyBoot
	 States
	 {
	 Spawn:
          PUFF A 0 NoDelay
          PUFF A 4 bright A_PlaySound("duke/kick")
	  TNT1 A 0 Radius_Quake (2, 6, 0, 5, 0)
          PUFF BCD 4
          stop
     Melee:
          PUFF A 0
          PUFF A 4 bright A_PlaySound("duke/kick")
	  TNT1 A 0 Radius_Quake (2, 6, 0, 5, 0)
          PUFF BCD 4
          stop
	      }
}

ACTOR DukeBulletPuff Replaces BulletPuff
{
  renderstyle Translucent
  alpha 0.4
  Scale 1.5
  radius 0
  height 0
  +ALLOWTHRUFLAGS
  +THRUSPECIES
  Species "Dukes"
  +NOBLOCKMAP
  +NOGRAVITY
  Gravity 0.01
  +NOEXTREMEDEATH
  +FORCEXYBILLBOARD
  +THRUGHOST
  DamageType Bullet
  Mass 500
  states
  {
  Spawn:
    TNT1 A 0 NoDelay
    TNT1 A 0 A_SpawnItemEx ("RicoChet",0,0,-5,0,0,0,0,SXF_NOCHECKPOSITION,0)
    TNT1 AAAA 0
  Melee:
    TNT1 A 1
    stop
  }
}

ACTOR RicoChet
{
  renderstyle Add
  alpha 1.0
  -COUNTKILL
  -SHOOTABLE
  +CLIENTSIDEONLY
  +BLOODLESSIMPACT 
  +FORCEXYBILLBOARD
  +THRUACTORS
  +THRUGHOST
  +NOGRAVITY
  Obituary "%o ate bullet shrapnel."
  Scale 0.09
  Speed 0
  Radius 1
  Height 1
  states
  {
  Spawn:
    TNT1 A 0 NoDelay
    TNT1 A 0 A_CheckFloor(2)
    TNT1 A 0 A_Jump(256,6)
    TNT1 A 0 A_JumpIf(ACS_ExecuteWithREsult(607) == 1, "Liquids")
    TNT1 A 0 A_JumpIf(ACS_ExecuteWithREsult(610) == 1, "Liquids")
    TNT1 A 0 A_JumpIf(ACS_ExecuteWithREsult(611) == 1, "Liquids")
    TNT1 A 0 A_JumpIf(ACS_ExecuteWithREsult(612) == 1, "Liquids")
    TNT1 A 0 A_JumpIf(ACS_ExecuteWithREsult(613) == 1, "Liquids")
    TNT1 A 0 A_SpawnItem ("YellowFlareSmall", 0)
    TNT1 AAAA 0 A_CustomMissile ("HitSpark", 2, 0, random[RIDFX](0, 360), 2, random[RIDFX](30, 360))
    TNT1 AA 0 A_CustomMissile ("HitSpark22", 2, 0, random[RIDFX](0, 360), 2, random[RIDFX](30, 360))
    TNT1 A 0 A_CustomMissile ("HitSpark23", 2, 0, random[RIDFX](0, 360), 2, random[RIDFX](30, 360))
    PUFF A 0 bright A_PlaySound("ricochet/hit")
    TNT1 AAA 0 A_CustomMissile ("OldschoolRocketSmokeTrail3", 2, 0, random[RIDFX](0, 360), 2, random[RIDFX](0, 360))

    TNT1 A 0 A_Jump(256, "Spawn1", "Spawn2", "Spawn3", "Spawn4")
    
	Spawn1:
	IPF2 AABB 1 bright A_SpawnItem ("YellowFlareSmall", 0)
    Stop
	
	Spawn2:
	IPF2 CCDD 1 bright A_SpawnItem ("YellowFlareSmall", 0)
    Stop
	
	Spawn3:
	IPF2 EEFF 1 bright A_SpawnItem ("YellowFlareSmall", 0)
    Stop
	
	Spawn4:
	IPF2 GGHH 1 bright A_SpawnItem ("YellowFlareSmall", 0)
    Stop

	Liquids:
	TNT1 A 1
    Stop
	
  }
}

actor ExpanderPuff
{
  +ALLOWTHRUFLAGS
  +THRUSPECIES
  Species "Dukes"
  +NOBLOCKMAP
  +NOGRAVITY
  +PUFFONACTORS
  +THRUGHOST
  +FORCEXYBILLBOARD
  Mass 5
  DamageType "Expander"
  RenderStyle Add
  States
  {
  Spawn:
    TNT1 AAAAA 0 NoDelay A_CustomMissile ("RedPlasmaParticle", 0, 0, random[RIDFX](0, 360), 2, random[RIDFX](0, 360))
    EXPX HGFE 1 bright A_SpawnItem("LensFlareTorchRed",0,0)
    TNT1 AAA 0 A_CustomMissile ("OldschoolRocketSmokeTrail3", 2, 0, random[RIDFX](0, 360), 2, random[RIDFX](0, 360))
    EXPX DCBABCDEFGH 1 bright
    stop
  }
}

actor Chaingunpuff : DukeBulletPuff
{
    DamageType Chaingun
}

actor Shotgunpuff : DukeBulletPuff
{
    decal bulletchip
    DamageType Shotgun
}

actor SSGpuff : DukeBulletPuff
{
    DamageType SSG
}

ACTOR ExplosiveShotgunpuff
{
  +FOILINVUL
  -DEHEXPLOSION
  -ROCKETTRAIL
  decal DukeSmallScorch
  +ALLOWTHRUFLAGS
  +THRUSPECIES
  Species "Dukes"
  VSpeed 0
  +PUFFGETSOWNER
  -SOLID
  +NOBLOCKMAP
  +NOGRAVITY
  +FORCEXYBILLBOARD
  +PUFFONACTORS
  +ALLOWTHRUBITS
  ThruBits 1
  Mass 5
  DamageType ExplosiveShotgun
  states
  {
  Spawn:
    TNT1 AAAAAAAA 0
    TNT1 A 0 A_PlaySound("ricochet/hit",random[RIDPLAYERAT](1,7))
  XDeath:
    TNT1 AA 0 A_CustomMissile ("ExplosionParticleHeavyTiny", 0, 0, random[RIDFX](0, 360), 2, random[RIDFX](0, 180))
    TNT1 AAA 0 A_CustomMissile ("ExplosionParticleHeavyTiny", 0, 0, random[RIDFX](0, 360), 2, random[RIDFX](0, 360))
    TNT1 A 0 A_CustomMissile ("ExplosionParticleVeryFastTiny", 0, 0, random[RIDFX](0, 360), 2, random[RIDFX](0, 360))
    TNT1 A 0 A_SPawnItem("ExplosionAirDisplacementEffectTiny")
//    TNT1 A 0 A_PlaySound("shotgun/explosion")
    TNT1 A 0 Radius_Quake(1, 8, 0, 12, 0)
    TNT1 A 0
    TNT1 A 0 A_Explode((33),128,XF_EXPLICITDAMAGETYPE,0,0,0,0,"none","ShellExplosion")
    TNT1 A 0 A_Explode((2),128,XF_EXPLICITDAMAGETYPE|XF_HURTSOURCE,0,0,0,0,"none","ShellExplosion")
    TNT1 A 0 A_CustomMissile ("ShotgunExplosion", 0, 0, random[RIDFX](0, 360), 2, random[RIDFX](0, 360))
    TNT1 A 10
    TNT1 A 0 A_CustomMissile ("Duke_Smoke", 0, 0, random[RIDFX](0, 360), 2, random[RIDFX](0, 360))
    stop
  }
}

ACTOR FireChaingunpuff
{
  +FOILINVUL
  +ALLOWTHRUFLAGS
  +THRUSPECIES
  Species "Dukes"
  VSpeed 0
  +PUFFGETSOWNER
  -SOLID
  +NOBLOCKMAP
  +NOGRAVITY
  +FORCEXYBILLBOARD
  +PUFFONACTORS
  +THRUGHOST
  Gravity 0.01
  +NOEXTREMEDEATH
  DamageType FireChaingun
  Mass 500
  states
  {
  Spawn:
    TNT1 AAAAAAAA 0
    TNT1 A 0 A_PlaySound("ricochet/hit")
  XDeath:
    TNT1 A 0 A_SpawnItem ("YellowFlareSmall", 0)
    TNT1 AAAA 0 A_CustomMissile ("HitSpark", 2, 0, random[RIDFX](0, 360), 2, random[RIDFX](30, 360))
    TNT1 AA 0 A_CustomMissile ("HitSpark22", 2, 0, random[RIDFX](0, 360), 2, random[RIDFX](30, 360))
    TNT1 A 0 A_CustomMissile ("HitSpark23", 2, 0, random[RIDFX](0, 360), 2, random[RIDFX](30, 360))
    TNT1 A 0
    TNT1 A 0 A_Explode(7*random[RIDPLAYERAT](1,3),20,XF_EXPLICITDAMAGETYPE,0,0,0,0,"none","BulletFlame")
    TNT1 A 0 A_CustomMissile ("ChaingunFlame", 0, 0, random[RIDFX](0, 360), 2, random[RIDFX](0, 360))
    TNT1 AAAA 1 bright A_SpawnItem ("YellowFlareSmall", 0)
    TNT1 A 6
    TNT1 A 0 A_CustomMissile ("Duke_Smoke", 0, 0, random[RIDFX](0, 360), 2, random[RIDFX](0, 360))
    stop
  }
}

actor ShotgunExplosion
{
  radius 1
  height 1
  speed 0
  +NOCLIP
  +FORCEXYBILLBOARD
  PROJECTILE
  Alpha 0.7
  Scale 0.3
  RenderStyle Add
  states
  {
  Spawn:
    TNT1 A 0
    DKSX ABCDEFGH 2 BRIGHT
    DKSX IJKLMNOPQ 1 BRIGHT
    stop
  }
}

ACTOR ChaingunFlame
{
  Radius 1
  Height 1
  Speed 0
  health 0
  mass 10000
  RenderStyle Add
  Scale 0.30
  Alpha 1
  +FORCEXYBILLBOARD
  -SOLID
  +NOGRAVITY
  +NOBLOCKMAP
  +CLIENTSIDEONLY
  +THRUACTORS
  +NOBLOOD
  +NOTELEPORT
  +DONTSPLASH
  +MOVEWITHSECTOR
  States
  {
  Spawn:
    TNT1 A 0
    FRB3 ABCDEFGHIJKLMN 1 BRIGHT
    TNT1 A 0 A_Gravity
    FRB3 ABCDEFGHIJKLMN 1 BRIGHT A_Setscale(scaleX-0.01,scaleY-0.01)
    FRB3 ABCDEFGHIJKLMN 1 BRIGHT A_FadeOut(0.2)
    Stop
  }
}

ACTOR BigRicoChet
{
  renderstyle Add
  alpha 1.0
  +CLIENTSIDEONLY
  +BLOODLESSIMPACT 
  +FORCEXYBILLBOARD
  +THRUACTORS
  +THRUGHOST
  +NOGRAVITY
  +MISSILE
  Scale 0.09
  Speed 0
  Radius 4
  Height 8
  states
  {
  Spawn:
    TNT1 A 0
    Goto Death
  Death:
    TNT1 A 2
    TNT1 A 1 A_Explode(4, 32)
    TNT1 A 0
    Stop
  }
}