ACTOR ChainGunGuyClass : PlayerPawn
{
  Health 200
  gibhealth 99999 //added - actor can not be gibbed
  Radius 20
  Height 56
  Mass 100
  Speed 0.5 //0.35
  PainChance 170
  Player.MorphWeapon "ChainGuyGun"
  Player.WeaponSlot 1, ChainGuyGun
  Player.DisplayName "Chaingunner"
  Player.MaxHealth 160   
  Player.ViewHeight 41
  Player.SoundClass Brainless
  Player.JumpZ 10
 
  DamageFactor "Suicide", 0 // puppetmaster can not suicide a monster
  DamageFactor "MarineDamage", 0.5
  DamageFactor "MarineRLDamage", 0.5
  DamageFactor "BFGSplash", 0.5
  DamageFactor "MarineRail", 0.35
  
  DamageFactor "CybRLDamage", 0.25
  DamageFactor "ImpBallDamage", 0
  DamageFactor "CacoDamage", 0
  DamageFactor "SkelDamage", 0
  DamageFactor "FatsoDamage", 0
  DamageFactor "KnightDamage", 0
  DamageFactor "ArachDamage", 0
  DamageFactor "viledamage", 0
  DamageFactor "Control", 0
  DamageFactor "ZombiesDamage", 0
  DamageFactor "Slime", 0
  +NOPAIN
  -PICKUP
  +NOSKIN
  -FRIENDLY
  +NOTARGET
  +NOTRIGGER //added - avoid issues in level design
  
  states
  {
  Spawn:
    CPOS AB 10
    loop
  See:
    CPOS A 0 
	CPOS A 1 A_Jump (240,2) //0
	CPOS A 0 A_PlaySoundEx ("chainguy/active","body")	
    CPOS ABCD 4 
    Loop
  Missile:
    CPOS A 0 A_JumpIfInventory ("FHeat",90,"CantShot")
    CPOS E 2
    CPOS F 3 bright
    CPOS E 2
    CPOS F 3 bright
    CPOS E 7
	Goto See
  CantShot:
    CPOS E 30
    Goto See
  Death:
    //CPOS H 0 ACS_ExecuteAlways(426,0,6)
    CPOS H 0 A_GiveToTarget ("MarineExp",3)
    CPOS I 5 A_PlaySoundEx ("chainguy/death","body")
    CPOS J 5 A_NoBlocking
    CPOS K 5 Thing_changeTid(144,0)
    CPOS LM 5
	CPOS M 1 A_SpawnItemEx ("MDeathGhost",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0) //0
	CPOS M 1 A_SpawnItemEx ("MChainGun",0,0,random(29,38),0,0,0,0,32,0)
	CPOS M -1
	stop
  XDeath:
    //CPOS O 0 ACS_ExecuteAlways(426,0,6)

    CPOS O 5 A_GiveToTarget ("MarineExp",3)
    CPOS P 5 A_XScream
    CPOS Q 5 A_NoBlocking
	CPOS Q 1 A_SpawnItemEx ("MDeathGhost",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0) //0
    CPOS R 5 Thing_changeTid(144,0)
	CPOS R 5
	CPOS S 1 A_SpawnItemEx ("MChainGun",0,0,random(29,38),0,0,0,0,32,0)
    CPOS S -1  
	stop	
  }
}

ACTOR ChainGuyGun : Weapon
{
  OBITUARY "%o was perforated by %k."
  ATTACKSOUND "weapons/shotgf"
  weapon.kickback 100
  Weapon.AmmoUse 0
  +WEAPON.NOALERT
  +WEAPON.AMMO_OPTIONAL
  +WEAPON.CHEATNOTWEAPON
  //+INVENTORY.UNDROPPABLE //added
  
  states
  {
  Spawn:
    TNT1 A 0 Thing_Remove (0)
    Stop
  Ready:
    CHGG A 5 A_WeaponReady	
    CHGG A 0 A_TakeInventory ("FHeat",2)
    TNT1 A 0 A_JumpIfInventory ("Mskull",0,4)
    CHGG A 5 A_WeaponReady	
    CHGG A 0 A_TakeInventory ("FHeat",2)
    TNT1 A 0 A_JumpIfInventory ("Mskull",3,1)
	TNT1 A 0 HealThing(5)
    Loop
  DeSelect: 
    CHGG A 1 A_Lower
    Loop
  Select:
    CHGG A 1 A_Raise
	goto ready
  Fire:
	CHGG A 0 A_JumpIfInventory ("PM_AltFireX",1,"AltFireX")
	CHGG A 0 A_JumpIfInventory ("PM_AltFireY",1,"AltFireY")
	CHGG A 0 A_JumpIfInventory ("PM_AltFireZ",1,"AltFireZ")
    CHGG A 0 A_JumpIfInventory ("FHeat",90,"Overheat")
    CHGG A 0 A_GiveInventory ("FHeat",2)
    CHGG A 0 A_GunFlash
    //CHGG A 2 ACS_ExecuteAlways(426,0,5)
    CHGG B 3 A_FireBullets (3.2, 1.8, -1, 9, "FBulletPuff")
    CHGG C 2
    CHGG D 3 A_FireBullets (3.2, 1.8, -1, 9, "FBulletPuff")
    CHGG A 0 A_Refire
    //CHGG A 0 ACS_ExecuteAlways(426,0,6)
    goto Ready
  AltFireX:
    CHGG A 0 A_GunFlash
    CHGG B 1 A_FireBullets (9, 5, -1, 7, "PuppetBulletRico")
	CHGG B 0 A_FireCustomMissile("PuppetBulletTracer", random(-5,5),0,12,-6,0,random(-1,1))
    CHGG C 2
    CHGG D 1 A_FireBullets (9, 5, -1, 7, "PuppetBulletRico")
	CHGG D 0 A_FireCustomMissile("PuppetBulletTracer", random(-5,5),0,12,-6,0,random(-1,1))
    goto Ready
  AltFireY:
    CHGG BD 3
	CHGG BD 2
	CHGG BD 1
	CHGG A 0 A_Gunflash
    CHGG A 1 A_FireBullets (9,9,-1,7, "PuppetBulletRico") 
	CHGG A 0 A_FireCustomMissile("PuppetBulletTracer", random(-5,5),0,12,-6,0,random(-1,1))
    CHGG B 1
    CHGG C 1 A_FireBullets (9,9,-1,7, "PuppetBulletRico") 
	CHGG C 0 A_FireCustomMissile("PuppetBulletTracer", random(-5,5),0,12,-6,0,random(-1,1))
    CHGG D 1
	CHGG A 0 A_Gunflash
    CHGG A 1 A_FireBullets (9,9,-1,7, "PuppetBulletRico") 
	CHGG A 0 A_FireCustomMissile("PuppetBulletTracer", random(-5,5),0,12,-6,0,random(-1,1))
    CHGG B 1
    CHGG C 1 A_FireBullets (9,9,-1,7, "PuppetBulletRico") 
	CHGG C 0 A_FireCustomMissile("PuppetBulletTracer", random(-5,5),0,12,-6,0,random(-1,1))
    CHGG D 1
	CHGG A 0 A_Gunflash
    CHGG A 1 A_FireBullets (9,9,-1,7, "PuppetBulletRico") 
	CHGG A 0 A_FireCustomMissile("PuppetBulletTracer", random(-5,5),0,12,-6,0,random(-1,1))
    CHGG B 1
    CHGG C 1 A_FireBullets (9,9,-1,7, "PuppetBulletRico") 
	CHGG C 0 A_FireCustomMissile("PuppetBulletTracer", random(-5,5),0,12,-6,0,random(-1,1))
    CHGG D 1
	CHGG A 0 A_Gunflash
    CHGG A 1 A_FireBullets (9,9,-1,7, "PuppetBulletRico") 
	CHGG A 0 A_FireCustomMissile("PuppetBulletTracer", random(-5,5),0,12,-6,0,random(-1,1))
    CHGG B 1
    CHGG C 1 A_FireBullets (9,9,-1,7, "PuppetBulletRico") 
	CHGG C 0 A_FireCustomMissile("PuppetBulletTracer", random(-5,5),0,12,-6,0,random(-1,1))
    CHGG D 1
	CHGG A 0 A_Gunflash
    CHGG A 1 A_FireBullets (9,9,-1,7, "PuppetBulletRico") 
	CHGG A 0 A_FireCustomMissile("PuppetBulletTracer", random(-5,5),0,12,-6,0,random(-1,1))
    CHGG B 1
    CHGG C 1 A_FireBullets (9,9,-1,7, "PuppetBulletRico") 
	CHGG C 0 A_FireCustomMissile("PuppetBulletTracer", random(-5,5),0,12,-6,0,random(-1,1))
    CHGG D 1
		CHGG A 16
	goto Ready
  AltFireZ:
	CHGG A 0 A_PlaySoundEx ("weapon/VulcanCannonUp","weapon",0)
	CHGG BDBDBDBD 3
	CHGG BDBDBDBD 2
	CHGG BDBDBDBD 1
  	CHGG A 0 A_Gunflash
    CHGG A 1 A_FireBullets (15,15,-1,12, "PuppetBulletRico") 
	CHGG A 0 A_FireCustomMissile("PuppetBulletTracer", random(-10,10),0,12,-6,0,random(-1,1))
    CHGG B 1
    CHGG C 1 A_FireBullets (15,15,-1,12, "PuppetBulletRico") 
	CHGG C 0 A_FireCustomMissile("PuppetBulletTracer", random(-10,10),0,12,-6,0,random(-1,1))
    CHGG D 1
  	CHGG A 0 A_Gunflash
    CHGG A 1 A_FireBullets (15,15,-1,12, "PuppetBulletRico") 
	CHGG A 0 A_FireCustomMissile("PuppetBulletTracer", random(-10,10),0,12,-6,0,random(-1,1))
    CHGG B 1
    CHGG C 1 A_FireBullets (15,15,-1,12, "PuppetBulletRico") 
	CHGG C 0 A_FireCustomMissile("PuppetBulletTracer", random(-10,10),0,12,-6,0,random(-1,1))
    CHGG D 1
  	CHGG A 0 A_Gunflash
    CHGG A 1 A_FireBullets (15,15,-1,12, "PuppetBulletRico") 
	CHGG A 0 A_FireCustomMissile("PuppetBulletTracer", random(-10,10),0,12,-6,0,random(-1,1))
    CHGG B 1
    CHGG C 1 A_FireBullets (15,15,-1,12, "PuppetBulletRico") 
	CHGG C 0 A_FireCustomMissile("PuppetBulletTracer", random(-10,10),0,12,-6,0,random(-1,1))
    CHGG D 1
  	CHGG A 0 A_Gunflash
    CHGG A 1 A_FireBullets (15,15,-1,12, "PuppetBulletRico") 
	CHGG A 0 A_FireCustomMissile("PuppetBulletTracer", random(-10,10),0,12,-6,0,random(-1,1))
    CHGG B 1
    CHGG C 1 A_FireBullets (15,15,-1,12, "PuppetBulletRico") 
	CHGG C 0 A_FireCustomMissile("PuppetBulletTracer", random(-10,10),0,12,-6,0,random(-1,1))
    CHGG D 1
  	CHGG A 0 A_Gunflash
    CHGG A 0 A_FireBullets (15,15,-1,12, "PuppetBulletRico") 
	CHGG A 0 A_FireCustomMissile("PuppetBulletTracer", random(-10,10),0,12,-6,0,random(-1,1))
    CHGG B 1
    CHGG C 1 A_FireBullets (15,15,-1,12, "PuppetBulletRico") 
	CHGG C 0 A_FireCustomMissile("PuppetBulletTracer", random(-10,10),0,12,-6,0,random(-1,1))
    CHGG D 1
  	CHGG A 0 A_Gunflash
    CHGG A 1 A_FireBullets (15,15,-1,12, "PuppetBulletRico") 
	CHGG A 0 A_FireCustomMissile("PuppetBulletTracer", random(-10,10),0,12,-6,0,random(-1,1))
    CHGG B 1
    CHGG C 1 A_FireBullets (15,15,-1,12, "PuppetBulletRico") 
	CHGG C 0 A_FireCustomMissile("PuppetBulletTracer", random(-10,10),0,12,-6,0,random(-1,1))
    CHGG D 1
	CHGG A 0 A_Gunflash
    CHGG A 1 A_FireBullets (15,15,-1,12, "PuppetBulletRico") 
	CHGG A 0 A_FireCustomMissile("PuppetBulletTracer", random(-10,10),0,12,-6,0,random(-1,1))
    CHGG B 1
    CHGG C 1 A_FireBullets (15,15,-1,12, "PuppetBulletRico") 
	CHGG C 0 A_FireCustomMissile("PuppetBulletTracer", random(-10,10),0,12,-6,0,random(-1,1))
    CHGG D 1
  	CHGG A 0 A_Gunflash
    CHGG A 1 A_FireBullets (15,15,-1,12, "PuppetBulletRico") 
	CHGG A 0 A_FireCustomMissile("PuppetBulletTracer", random(-10,10),0,12,-6,0,random(-1,1))
    CHGG B 1
    CHGG C 1 A_FireBullets (15,15,-1,12, "PuppetBulletRico") 
	CHGG C 0 A_FireCustomMissile("PuppetBulletTracer", random(-10,10),0,12,-6,0,random(-1,1))
    CHGG D 1
	CHGG D 0 A_PlaySoundEx ("weapon/VulcanCannonDown","weapon",0)
	CHGG BD 1
	CHGG BD 2	
	CHGG BD 3
	CHGG A 1
	goto Ready
	
  AltFire:
    CHGG A 5 ACS_ExecuteAlways (419,0,4)
	goto ready
  Overheat:
    //CHGG A 0 ACS_ExecuteAlways(426,0,5)
    CHGG A 0 A_PlaySoundEx ("cybie/overheat","body")
    CHGG A 30 ACS_ExecuteAlways (408)
    CHGG A 0 A_TakeInventory ("FHeat",3)
    //CHGG A 0 ACS_ExecuteAlways(426,0,6)
    goto ready
  Flash:
	CHGF A 2 bright A_Light1
	TNT1 A 3 A_Light2
	CHGF B 2 bright A_Light1
	TNT1 A 3 A_Light2
	CHGF A 0 A_Light0
    Stop
  }
}

ACTOR ChainGunGuy2Class : PlayerPawn
{
  Health 300
  gibhealth 99999 //added - actor can not be gibbed
  Radius 20
  Height 56
  Mass 100
  Speed 0.50 //0.3
  PainChance 170
  Player.MorphWeapon "DoubleChainGun"
  Player.WeaponSlot 1, DoubleChainGun
  Player.DisplayName "DoubleChaingunner"
  Player.MaxHealth 350  
  Player.ViewHeight 41
  Player.SoundClass Brainless
  Player.JumpZ 10
 
  DamageFactor "Suicide", 0 // puppetmaster can not suicide a monster
  DamageFactor "MarineDamage", 0.6
  DamageFactor "MarineRLDamage", 0.6
  DamageFactor "BFGSplash", 0.6
  DamageFactor "MarineRail", 0.6
  
  DamageFactor "CybRLDamage", 0.25
  DamageFactor "ImpBallDamage", 0
  DamageFactor "CacoDamage", 0
  DamageFactor "SkelDamage", 0
  DamageFactor "FatsoDamage", 0
  DamageFactor "KnightDamage", 0
  DamageFactor "ArachDamage", 0
  DamageFactor "viledamage", 0
  DamageFactor "Control", 0
  DamageFactor "ZombiesDamage", 0
  DamageFactor "Slime", 0
  +NOPAIN
  -PICKUP
  +NOSKIN
  -FRIENDLY
  +NOTARGET
  +NOTRIGGER //added - avoid issues in level design
  
  states
  {
  Spawn:
    DPOS AB 10
    loop
  See:
    DPOS A 0 
	DPOS A 1 A_Jump (240,2) //0
	DPOS A 0 A_PlaySoundEx ("chainguy/active","body")	
    DPOS ABCD 4 
    Loop
  Missile:
    DPOS A 0 A_JumpIfInventory ("FHeat",60,"CantShot")
    DPOS F 3 bright
    DPOS E 2
    DPOS F 3 bright
    DPOS E 2
    DPOS F 3 bright
    DPOS E 7
	Goto See
  CantShot:
    DPOS E 30
    Goto See
  Death:
    TNT1 A 0 A_GiveToTarget ("MarineExp",5)
    //DPOS H 0 ACS_ExecuteAlways(426,0,4)
    DPOS I 5 A_PlaySoundEx ("chainguy/death","body")
    DPOS J 5 A_NoBlocking
    DPOS K 5 Thing_changeTid(144,0)
    DPOS LM 5
	DPOS M 1 A_SpawnItemEx ("MDeathGhost",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0) //0
	DPOS H 1 A_SpawnItemEx ("MChainGun",0,0,random(29,38),0,0,0,0,32,0)
	DPOS M -1
	stop
  XDeath:
    //DPOS O 0 ACS_ExecuteAlways(426,0,4)
    DPOS O 5 A_GiveToTarget ("MarineExp",5)
    DPOS P 5 A_XScream
    DPOS Q 5 A_NoBlocking
	DPOS Q 1 A_SpawnItemEx ("MDeathGhost",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0) //0
    DPOS R 5 Thing_changeTid(144,0)
	DPOS R 5
	DPOS S 1 A_SpawnItemEx ("MChainGun",0,0,random(29,38),0,0,0,0,32,0)
    DPOS S -1  
	stop	
  }
}

ACTOR DoubleChainGun : Weapon
{
  OBITUARY "%o was perforated by %k."
  ATTACKSOUND "weapons/shotgf"
  weapon.kickback 100
  Weapon.AmmoUse 0
  +WEAPON.NOALERT
  +WEAPON.AMMO_OPTIONAL
  +WEAPON.CHEATNOTWEAPON
  //+INVENTORY.UNDROPPABLE //added
  
  states
  {
  Spawn:
    TNT1 A 0 Thing_Remove (0)
    Stop
  Ready:
    DCGN A 5 A_WeaponReady	
    //DCGN A 0 A_TakeInventory ("FHeat",2)
    //TNT1 A 0 A_JumpIfInventory ("Mskull",0,4)
    //DCGN A 5 A_WeaponReady	
    //DCGN A 0 A_TakeInventory ("FHeat",2)
    //TNT1 A 0 A_JumpIfInventory ("Mskull",3,1)
	DCGN A 0 HealThing(5)
    Loop
  DeSelect: 
    DCGN A 1 A_Lower
    Loop
  Select:
    DCGN A 1 A_Raise
    goto ready
  Fire:
	DCGN A 0 A_JumpIfInventory ("PM_AltFireX",1,"AltFireX")
	DCGN A 0 A_JumpIfInventory ("PM_AltFireY",1,"AltFireY")
	DCGN A 0 A_JumpIfInventory ("PM_AltFireZ",1,"AltFireZ")
    DCGN A 0 A_JumpIfInventory ("FHeat",75,"Overheat")
    //DCGN A 0 ACS_ExecuteAlways(426,0,2)
    DCGN A 0 A_GiveInventory ("FHeat",2)
    DCGN A 0 A_GunFlash
    DCGN B 0 A_FireBullets (5.2, 1.8, -1, 4, "FBulletPuff")
    DCGN B 3 bright A_FireBullets (3.2, 1.8, -1, 4, "FBulletPuff")
    DCGN D 2
    DCGN C 0 A_FireBullets (5.2, 1.8, -1, 4, "FBulletPuff")
    DCGN C 3 bright A_FireBullets (3.2, 1.8, -1, 4, "FBulletPuff")
    DCGN A 2
    DCGN A 0 A_ReFire
    //DCGN A 0 ACS_ExecuteAlways(426,0,4)
    goto Ready
  AltFireX:
    DCGN A 0 A_GunFlash
    DCGN B 0 A_FireBullets (10, 3, -1, 4, "PuppetBulletRico")
	DCGN B 0 A_FireCustomMissile("PuppetBulletTracer", random(-4,4),0,12,-6,0,random(-1,1))
    DCGN B 2 bright A_FireBullets (8, 3, -1, 4, "PuppetBulletRico")
	DCGN B 0 A_FireCustomMissile("PuppetBulletTracer", random(-4,4),0,12,-6,0,random(-1,1))
    DCGN D 2
    DCGN C 0 A_FireBullets (10, 3, -1, 4, "PuppetBulletRico")
	DCGN C 0 A_FireCustomMissile("PuppetBulletTracer", random(-4,4),0,12,-6,0,random(-1,1))
    DCGN C 2 bright A_FireBullets (8, 3, -1, 4, "PuppetBulletRico")
	DCGN C 0 A_FireCustomMissile("PuppetBulletTracer", random(-4,4),0,12,-6,0,random(-1,1))
    DCGN A 2
    goto Ready
  AltFireY:
    DCGN A 0 A_GunFlash
    DCGN B 0 A_FireBullets (14, 4, -1, 4, "PuppetBulletRico")
	DCGN B 0 A_FireCustomMissile("PuppetBulletTracer", random(-5,5),0,12,-6,0,random(-1,1))
    DCGN B 1 bright A_FireBullets (12, 4, -1, 4, "PuppetBulletRico")
	DCGN B 0 A_FireCustomMissile("PuppetBulletTracer", random(-5,5),0,12,-6,0,random(-1,1))
    DCGN D 1
    DCGN C 0 A_FireBullets (14, 4, -1, 4, "PuppetBulletRico")
	DCGN C 0 A_FireCustomMissile("PuppetBulletTracer", random(-5,5),0,12,-6,0,random(-1,1))
    DCGN C 1 bright A_FireBullets (12, 4, -1, 4, "PuppetBulletRico")
	DCGN C 0 A_FireCustomMissile("PuppetBulletTracer", random(-5,5),0,12,-6,0,random(-1,1))
    DCGN A 2
    goto Ready
  AltFireZ:
		DCGN A 0 A_GunFlash
    DCGN B 0 A_FireBullets (20, 5, -1, 5, "PuppetBulletRico")
	DCGN B 0 A_FireCustomMissile("PuppetBulletTracer", random(-10,10),0,12,-6,0,random(-1,1))
	DCGN B 0 A_FireBullets (20, 5, -1, 5, "PuppetBulletRico")
	DCGN B 0 A_FireCustomMissile("PuppetBulletTracer", random(-10,10),0,12,-6,0,random(-1,1))
    DCGN B 1 bright A_FireBullets (20, 5, -1, 5, "PuppetBulletRico")
    DCGN D 1
    DCGN C 0 A_FireBullets (20, 5, -1, 5, "PuppetBulletRico")
	DCGN B 0 A_FireBullets (20, 5, -1, 5, "PuppetBulletRico")
	DCGN B 0 A_FireCustomMissile("PuppetBulletTracer", random(-10,10),0,12,-6,0,random(-1,1))
	DCGN B 0 A_FireCustomMissile("PuppetBulletTracer", random(-10,10),0,12,-6,0,random(-1,1))
    DCGN C 1 bright A_FireBullets (20, 5, -1, 5, "PuppetBulletRico")
		DCGN A 0 A_GunFlash
    DCGN B 0 A_FireBullets (20, 5, -1, 5, "PuppetBulletRico")
	DCGN B 0 A_FireBullets (20, 5, -1, 5, "PuppetBulletRico")
	DCGN B 0 A_FireCustomMissile("PuppetBulletTracer", random(-10,10),0,12,-6,0,random(-1,1))
	DCGN B 0 A_FireCustomMissile("PuppetBulletTracer", random(-10,10),0,12,-6,0,random(-1,1))
    DCGN B 1 bright A_FireBullets (20, 5, -1, 5, "PuppetBulletRico")
    DCGN D 1
    DCGN C 0 A_FireBullets (20, 5, -1, 5, "PuppetBulletRico")
	DCGN B 0 A_FireBullets (20, 5, -1, 5, "PuppetBulletRico")
	DCGN B 0 A_FireCustomMissile("PuppetBulletTracer", random(-10,10),0,12,-6,0,random(-1,1))
	DCGN B 0 A_FireCustomMissile("PuppetBulletTracer", random(-10,10),0,12,-6,0,random(-1,1))
    DCGN C 1 bright A_FireBullets (20, 5, -1, 5, "PuppetBulletRico")
			DCGN A 0 A_GunFlash
    DCGN B 0 A_FireBullets (20, 5, -1, 5, "PuppetBulletRico")
	DCGN B 0 A_FireBullets (20, 5, -1, 5, "PuppetBulletRico")
	DCGN B 0 A_FireCustomMissile("PuppetBulletTracer", random(-10,10),0,12,-6,0,random(-1,1))
	DCGN B 0 A_FireCustomMissile("PuppetBulletTracer", random(-10,10),0,12,-6,0,random(-1,1))
    DCGN B 1 bright A_FireBullets (20, 5, -1, 5, "PuppetBulletRico")
    DCGN D 1
    DCGN C 0 A_FireBullets (20, 5, -1, 5, "PuppetBulletRico")
	DCGN B 0 A_FireBullets (20, 5, -1, 5, "PuppetBulletRico")
	DCGN B 0 A_FireCustomMissile("PuppetBulletTracer", random(-10,10),0,12,-6,0,random(-1,1))
	DCGN B 0 A_FireCustomMissile("PuppetBulletTracer", random(-10,10),0,12,-6,0,random(-1,1))
    DCGN C 1 bright A_FireBullets (20, 5, -1, 5, "PuppetBulletRico")
		DCGN A 0 A_GunFlash
    DCGN B 0 A_FireBullets (20, 5, -1, 5, "PuppetBulletRico")
	DCGN B 0 A_FireBullets (20, 5, -1, 5, "PuppetBulletRico")
	DCGN B 0 A_FireCustomMissile("PuppetBulletTracer", random(-10,10),0,12,-6,0,random(-1,1))
	DCGN B 0 A_FireCustomMissile("PuppetBulletTracer", random(-10,10),0,12,-6,0,random(-1,1))
    DCGN B 1 bright A_FireBullets (20, 5, -1, 5, "PuppetBulletRico")
    DCGN D 1
    DCGN C 0 A_FireBullets (20, 5, -1, 5, "PuppetBulletRico")
	DCGN B 0 A_FireBullets (20, 5, -1, 5, "PuppetBulletRico")
	DCGN B 0 A_FireCustomMissile("PuppetBulletTracer", random(-10,10),0,12,-6,0,random(-1,1))
	DCGN B 0 A_FireCustomMissile("PuppetBulletTracer", random(-10,10),0,12,-6,0,random(-1,1))
    DCGN C 1 bright A_FireBullets (20, 5, -1, 5, "PuppetBulletRico")
		DCGN A 16
    goto Ready
	
  AltFire:
    DCGN A 5 ACS_ExecuteAlways (419,0,22)
	goto ready
  Overheat:
    //DCGN A 0 ACS_ExecuteAlways(426,0,2)
    DCGN A 0 A_PlaySoundEx ("cybie/overheat","body")
    DCGN A 30 ACS_ExecuteAlways (408)
    DCGN A 0 A_TakeInventory ("FHeat",3)
    //DCGN A 0 ACS_ExecuteAlways(426,0,4)
    goto ready
  Flash:
    TNT1 A 3 bright A_Light1
    TNT1 A 2 A_Light2
    TNT1 A 3 bright A_Light1
    TNT1 A 2 A_Light2
    TNT1 A 0 A_Light0
    Stop
  }
}





//Vulcan bullet tracer with ricochet sound and visuals
Actor PuppetBulletTracer: FastProjectile
{
	-DONTSPLASH
	//seesound "weapon/VulcanFire"
	damagetype Cutless
	Projectile
	+RANDOMIZE
	+FORCEXYBILLBOARD
	+DONTSPLASH 
    +NOEXTREMEDEATH
	+CLIENTSIDEONLY //no network traffic spam
	damage 0
	radius 2
	height 2
	speed 140
	renderstyle ADD
	alpha 0.9
	scale .15
states
{
Spawn:
	TRAC A 1 BRIGHT
	Loop
Death:
	TNT1 A 0 A_PlaySound("ricochet/hit")
    Stop
XDeath:
	TNT1 A 0 A_PlaySound("ricochet/hit")
	Stop
} }

//Ricochet round splash on wall
ACTOR PuppetBulletRico
{
  DamageType "ZombiesDamage"
  +NOEXTREMEDEATH
  +NOBLOCKMAP
  +NOGRAVITY
  +ALLOWPARTICLES
  +RANDOMIZE
  RenderStyle ADD //Translucent
  Alpha 1.5
  VSpeed 1
  Mass 5
  States
  {
  Spawn:
    FX58 ABCDEFGHJ 1
    Stop
  }
}