ACTOR "Explosive Minigun" : Weapon
{
   Weapon.Selectionorder 690
   Weapon.KickBack 50
   Weapon.PreferredSkin "ExplosiveMinigun-Marine"
   Weapon.AmmoType "BulletMag"
   Weapon.AmmoGive 20
   Weapon.AmmoUse 1
   Weapon.UpSound "weapons/explosiveminigunpickup"
   Inventory.PickupSound "weapons/explosiveminigunpickup"
   Inventory.PickupMessage "Explosive Minigun"
   Obituary "%o was ripped to bloody chunks by %k's Explosive Minigun."
   AttackSound "sentient/fire"
   +INVENTORY.UNDROPPABLE
   +WEAPON.NOAUTOAIM
   States 
   {
   Spawn:
      CHNG X -1
      Stop
   Ready:
      TNT1 A 0 A_PlayWeaponSound("weapons/explosiveminigunpickup")
      CHNU ABCD 1
      CHNG A 1 A_WeaponReady
      Goto Ready+5
   ReadySpin:
      TNT1 A 0 A_PlaySound("weapons/expmgunspin", 5)
      CHNG ADGADGADGADGADG 1 A_WeaponReady
      Loop
   Deselect:
      TNT1 A 0 A_TakeInventory("ExpMinigunActive2",1)
      TNT1 A 0 A_TakeInventory("ExpMinigunActive",1)
      TNT1 A 0 A_PlaySound("weapons/weapondown", 5)
   Deselecting:
      CHNG A 1 A_Lower
      Goto Deselect+2
   Select:
      TNT1 A 0 A_TakeInventory("ExpMinigunActive2",1)
      TNT1 A 0 A_TakeInventory("ExpMinigunActive",1)
   Selecting:
      TNT1 A 0 A_Raise
      Loop
   Fire:
      TNT1 A 0 A_JumpIfNoAmmo("EmptySpinDown")   
      TNT1 A 0 A_JumpIfInventory("ExpMinigunActive2",1,23)
      TNT1 A 0 A_JumpIfInventory("ExpMinigunActive",1,22)
      TNT1 A 0 A_PlaySound("weapons/expmgunspinstart", 5)
      CHNG ABC 2
      CHNG EFGABCEG 1
      CHNG ACEGADGADG 1
      Goto Hold
   Hold:
      TNT1 A 0 A_GiveInventory("ExpMinigunActive",1)
      TNT1 A 0 A_PlaySound("weapons/expmgunspin", 5)
      TNT1 A 0 A_GunFlash
      TNT1 A 0 A_Light1
      TNT1 A 0 Radius_Quake(2,2,0,1,0)
      TNT1 A 0 A_SpawnItemEx("OrangeShellCasing",25,-8,25,Random(2,4),Random(-3,-6),Random(3,6),0)
      TNT1 A 0 A_PlaySound("weapons/minigunfire", CHAN_WEAPON)
      TNT1 A 0 A_FireCustomMissile("PlayerExplosiveTracer",Random(4,-4),0,0,Random(4,-4))
      CHNF A 1 Bright A_FireBullets(4.8,2.4,-1,Random(6,10),"ModdedBulletPuff")
      TNT1 A 0 A_JumpIfNoAmmo("EmptySpinDown")
      CHNF A 1 Bright
      CHNF BC 1 A_Light0
      TNT1 A 0 A_GunFlash
      TNT1 A 0 A_Light2
      TNT1 A 0 Radius_Quake(2,2,0,1,0)
      TNT1 A 0 A_SpawnItemEx("OrangeShellCasing",25,-8,25,Random(2,4),Random(-3,-6),Random(3,6),0)
      TNT1 A 0 A_PlaySound("weapons/minigunfire", CHAN_WEAPON)   
      TNT1 A 0 A_FireCustomMissile("PlayerExplosiveTracer",Random(4,-4),0,0,Random(4,-4))
      CHNF D 1 Bright A_FireBullets(4.8,2.4,-1,Random(6,10),"ModdedBulletPuff")
      TNT1 A 0 A_JumpIfNoAmmo("EmptySpinDown")   
      CHNF EF 1 A_Light0
      TNT1 A 0 A_GunFlash
      TNT1 A 0 A_Light1
      TNT1 A 0 Radius_Quake(2,2,0,1,0)
      TNT1 A 0 A_SpawnItemEx("OrangeShellCasing",25,-8,25,Random(2,3),Random(-3,-5),Random(3,5),0)
      TNT1 A 0 A_PlaySound("sentient/fire", CHAN_WEAPON)   
      TNT1 A 0 A_FireCustomMissile("PlayerExplosiveTracer",Random(4,-4),0,0,Random(4,-4))
      CHNF G 1 Bright A_FireBullets(4.8,2.4,-1,Random(6,10),"ModdedBulletPuff")
      CHNF H 1 A_Light0
      TNT1 A 0 A_JumpIfNoAmmo("EmptySpinDown")   
      TNT1 A 0 A_ReFire
      TNT1 A 0 A_JumpIfInventory("ExpMinigunActive2",1,"ReadySpin")
      TNT1 A 0 A_PlaySound("weapons/expmgunspinstop", 5)
      TNT1 A 0 A_TakeInventory("ExpMinigunActive",1)
      CHNG ABCDEFGABC 1
      CHNG DEFG 2
      Goto Ready+5
   AltFire:
      TNT1 A 0
      TNT1 A 0 A_JumpIfInventory("ExpMinigunActive2",1,"EmptySpinDown")
      TNT1 A 0 A_PlaySound("weapons/expmgunspinstart", 5)
      CHNG ABC 2
      CHNG EFGABCEG 1
      CHNG ACEGADGADG 1
      TNT1 A 0 A_GiveInventory("ExpMinigunActive2",1)
      Goto ReadySpin
   EmptySpinDown:
      TNT1 A 0 A_TakeInventory("ExpMinigunActive",1)
      TNT1 A 0 A_TakeInventory("ExpMinigunActive2",1)
      TNT1 A 0 A_PlaySound("weapons/expmgunspinstop", 5)
      CHNG ADGADG 1
      CHNG ABCDEFGABC 1
      CHNG DEFG 2
      Goto Ready+5
   }
}

ACTOR ExpMinigunActive : Ammo
{
   Inventory.MaxAmount 1
}
ACTOR ExpMinigunActive2 : Ammo
{
   Inventory.MaxAmount 1
}

ACTOR PlayerExplosiveTracer : SentientExplosiveTracer
{
   Species "Player"
   DamageType "Player"
   +THRUSPECIES
   Scale 0.7
   States
   {
   Spawn:
      TRAC A 1 Bright
      Loop
   }
}