ACTOR "DukeBulletPuff" Replaces "BulletPuff"  
{
    Radius 1
    Height 1
    Scale 0.75
	Speed 350
    Alpha 0.5
	DamageType "Bullet"
    Decal "DukeBullet"
	+THRUGHOST
    +NOBLOCKMAP
	+NOGRAVITY
	+ALLOWPARTICLES
	+CLIENTSIDEONLY
    States
    {
    Spawn:
	    TNT1 A 0
		TNT1 A 0 A_SpawnItemEx("PuffSmokeBullet",0,0,0,0,0,1,0,128,0)
		TNT1 A 0 A_Jump(32,"Spawn1","Spawn2")
	    TNT1 A 0 A_Jump(256,"Spawn3","Spawn4")
        Stop
    Spawn1:
	    TNT1 A 0 A_PlaySound("Sound/Puff")
	    TNT1 A 1 A_SpawnItemEx("RicochetSpark",0)
	    Stop
    Spawn2:
	    TNT1 A 0 A_PlaySound("Sound/Puff")
	    TNT1 A 1 A_SpawnItemEx("RicochetSpark2",0)
	    Stop
	Spawn3:
	    TNT1 A 1 A_SpawnItemEx("RicochetSpark",0)
	    Stop
    Spawn4:
	    TNT1 A 1 A_SpawnItemEx("RicochetSpark2",0)
	    Stop
        }
}

ACTOR RicochetSpark
{
    RenderStyle Add
    Alpha 0.8
    Scale 0.4
    +NOTELEPORT
    +NOGRAVITY
    +NOBLOCKMAP
    States
    {
    Spawn:
        FX57 ABCDEFGHIJ 1 Bright
        Stop
	    }
}

ACTOR RicochetSpark2 : RicochetSpark
{
    States
    {
    Spawn:
        FX58 ABCDEFGHIJ 1 Bright
        Stop
	    }
}

ACTOR PuffSmokeBullet 
{
	 Renderstyle Add
	 Alpha 0.5
	 Scale 0.7
	 +NOINTERACTION
	 +FORCEXYBILLBOARD
	 +CLIENTSIDEONLY
	 +WINDTHRUST
	 States
	 {
	 Spawn:
		  TNT1 A 1
		  TNT1 A 0 A_Jump(256,"Spawn2","Spawn3","Spawn4")
		  SMK1 ABCDEFGHIJKLMNOP 1 A_FadeOut(0.025)
		  Stop
	 Spawn2:
		  SMK2 ABCDEFGHIJKLMNOP 1 A_FadeOut(0.025)
		  Stop
	 Spawn3:
		  SMK3 ABCDEFGHIJKLMNOP 1 A_FadeOut(0.025)
		  Stop
	 Spawn4:
		  SMK4 ABCDEFGHIJKLMNOP 1 A_FadeOut(0.025)
		  Stop
	 LowFX:
		  TNT1 A 0 A_Jump(128,"Nope")
		  TNT1 A 0 A_SetTranslucent((Alpha*3)/2,1)
		  Goto Spawn+2
	 Nope:
		  TNT1 A 0
		  Stop
	      }
}

// Slot 2

ACTOR "BulletPistol" : DukeBulletPuff
{
    DamageType "Damage_Pistol"
}

ACTOR "BulletDualPistol" : DukeBulletPuff
{
    DamageType "Damage_DualPistol"
}

ACTOR "BulletBlackTail" : DukeBulletPuff
{
    DamageType "Damage_BlackTail"
}

ACTOR "BulletDualBlackTail" : DukeBulletPuff
{
    DamageType "Damage_DualBlackTail"
}

ACTOR "BulletDesertEagle" : DukeBulletPuff
{
    DamageType "Damage_DesertEagle"
}

// Slot 3

ACTOR "BulletShotgun" : DukeBulletPuff
{
    DamageType "Damage_Shotgun"
}

ACTOR "BulletSuperShotgun" : DukeBulletPuff
{
    DamageType "Damage_SuperShotgun"
}

// Slot 4

ACTOR "BulletChaingunCannon" : DukeBulletPuff
{
    DamageType "Damage_ChaingunCannon"
}

ACTOR "BulletMinigun" : DukeBulletPuff
{
    DamageType "Damage_Minigun"
}

// Slot 9

ACTOR RailgunThunderPuff : DukeBulletPuff
{	
	Scale 0.90
	Obituary "%o was burned by %k's railgun."
	DamageType "Damage_Railgun"
	Decal "RailgunDukeDecal"
	RenderStyle Add
	+PUFFONACTORS
	+ALWAYSPUFF
    +FORCEDECAL
	States 
	{
	Spawn:
	Melee:
	Crash:
	    TNT1 A 0 
  	    TNT1 AAAAAAAAAAAAAAAAAAAA 0 A_CustomMissile("RailgunDProjectileParticle",0,0,Random(0,360),2,Random(0,360))
		TNT1 A 0 A_SpawnItemEx("RailgunThunderImpact",0,0,0,0,0,0,0,0) 
		TNT1 A 2 Radius_Quake(6,9,0,5,0)
		TNT1 BCDEFGHIJ 2
	    Stop
    }
}

ACTOR RailgunAvengerThunderPuff : DukeBulletPuff
{	
	Scale 0.90
	DamageType "Damage_RailgunAvenger"
	Decal "RailgunDukeDecal"
	RenderStyle Add
	+PUFFONACTORS
	+ALWAYSPUFF
    +FORCEDECAL
	States 
	{
	Spawn:
	Melee:
	Crash:
	    TNT1 A 0 
  	    TNT1 AAAAAAAAAAAAAAAAAAAA 0 A_CustomMissile("RailgunDProjectileParticle",0,0,Random(0,360),2,Random(0,360))
		TNT1 A 0 A_SpawnItemEx("RailgunThunderImpact",0,0,0,0,0,0,0,0) 
		TNT1 A 2 Radius_Quake(6,9,0,5,0)
		TNT1 BCDEFGHIJ 2
	    Stop
    }
}

ACTOR RailgunThunder2Puff : DukeBulletPuff
{	
	Scale 0.90
	DamageType "Damage_Railgun"
	Decal "RailgunDukeDecal"
	RenderStyle Add
	-ALLOWPARTICLES 
	+PUFFONACTORS
	States 
	{
	Spawn:
	Melee:
	Crash:
	    TNT1 A 0 
  	    TNT1 AAAAAAAAAAAAAAAAAAAA 0 A_CustomMissile("RailgunDProjectileParticle",0,0,Random(0,360),2,Random(0,360))
		TNT1 A 2 Radius_Quake(6,9,0,5,0)
		TNT1 BCDEFGHIJ 2
	    Stop
    }
}

ACTOR RailgunThunderImpact
{
    Radius 0
	Height 0
	Scale 0.6
	Alpha 0.85
    RenderStyle Add
    Projectile
	+MISSILE
    +THRUACTORS
    -TELESTOMP
    +NOTELEPORT
	-SOLID
	+NOINTERACTION
    +NOBLOCKMAP
	+CLIENTSIDEONLY
	States
    {
    Spawn:
        TNT1 A 0
	    TNT1 A 1 A_Jump(128,"Spawn1","Spawn2","Spawn3","Spawn4","Spawn5","Spawn6")
	Spawn1:
	    RATH A 12 Bright A_PlaySound("Railgun/Impact")
	    RATH AAAAAAAAAAAAAAAAAAAA 1 Bright A_FadeOut
	    Stop
	Spawn2:
	    RATH B 12 Bright A_PlaySound("Railgun/Impact")
	    RATH BBBBBBBBBBBBBBBBBBBB 1 Bright A_FadeOut
	    Stop
	Spawn3:
	    RATH C 12 Bright A_PlaySound("Railgun/Impact")
	    RATH CCCCCCCCCCCCCCCCCCCC 1 Bright A_FadeOut
	    Stop
	Spawn4:
	    RATH D 12 Bright A_PlaySound("Railgun/Impact")
	    RATH DDDDDDDDDDDDDDDDDDDD 1 Bright A_FadeOut
	    Stop
	Spawn5:
	    RATH E 12 Bright A_PlaySound("Railgun/Impact")
	    RATH EEEEEEEEEEEEEEEEEEEE 1 Bright A_FadeOut
	    Stop
	Spawn6:
	    RATH F 12 Bright A_PlaySound("Railgun/Impact")
	    RATH FFFFFFFFFFFFFFFFFFFF 1 Bright A_FadeOut
	    Stop
        }
}

ACTOR RailgunDProjectileParticle
{
    Height 0
    Radius 0
    Mass 0
    +MISSILE
    +NOBLOCKMAP
    -NOGRAVITY
    +DOOMBOUNCE
	+MOVEWITHSECTOR
    +FORCEXYBILLBOARD
    BounceFactor 0.2
    Gravity 0.8
    RenderStyle Add
    Scale 0.030
    Speed 8.6
    States
    {
    Spawn:
    Death:
        LENR BBBBBBBBBBBBBBBBBBBBBBBBBBBBBB 2 Bright A_FadeOut(0.04)
        Stop
    }
}