ACTOR "Explosive Minigun" : Weapon 16654
{
//$Category Weapons/LCA
//$Sprite CHNGX0
//$Title "Explosive Minigun"
   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:
      CHNG A 1 A_WeaponReady
      Loop
   ReadySpin:
      TNT1 A 0 A_PlaySound("weapons/expmgunspin", 5)
      CHNG ABCDABCDABCD 1 A_WeaponReady
      Loop
   Deselect:
      TNT1 A 0 A_TakeInventory("HandGrenadeAction",1)
	  TNT1 A 0 A_TakeInventory("MineAction",1)
	  TNT1 A 0 A_TakeInventory("RailgunAction",1)
	  TNT1 A 0 A_PlayWeaponSound("weapons/weapondown")
      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
      TNT1 A 0 A_Lower
      Loop
   Select:
      TNT1 A 0 A_TakeInventory("ExpMinigunActive2",1)
      TNT1 A 0 A_TakeInventory("ExpMinigunActive",1)
   Selecting:
      CHNG A 1 A_Raise
      TNT1 A 0 A_Raise
      Loop
   Fire:
      TNT1 A 0 A_JumpIfNoAmmo("EmptySpinDown")   
      TNT1 A 0 A_JumpIfInventory("ExpMinigunActive2",1,"Firing")
      TNT1 A 0 A_JumpIfInventory("ExpMinigunActive",1,"Firing")
      TNT1 A 0 A_PlaySound("weapons/expmgunspinstart", 5)
      CHNG ABC 2
      CHNG DABCDABC 1
   Firing:
      TNT1 A 0 A_GiveInventory("ExpMinigunActive",1)
      TNT1 A 0 A_PlaySound("weapons/expmgunspin", 5)
      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("sentient/fire", CHAN_WEAPON)
      CHNF A 1 Bright A_FireCustomMissile("PlayerExplosiveTracer",Random(4,-4),1,0,Random(4,-4))
      TNT1 A 0 A_JumpIfNoAmmo("EmptySpinDown")   
      CHNF BC 1 Bright
      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("sentient/fire", CHAN_WEAPON)   
      CHNF D 1 Bright A_FireCustomMissile("PlayerExplosiveTracer",Random(4,-4),1,0,Random(4,-4))
      CHNF E 1 Bright
   Hold:
      TNT1 A 0 A_GiveInventory("ExpMinigunActive",1)
      TNT1 A 0 A_PlaySound("weapons/expmgunspin", 5)
      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("sentient/fire", CHAN_WEAPON)
      CHNF F 1 Bright A_FireCustomMissile("PlayerExplosiveTracer",Random(4,-4),1,0,Random(4,-4))
      TNT1 A 0 A_JumpIfNoAmmo("EmptySpinDown")
      CHNF G 1 Bright
      CHNF HI 1 Bright
      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("sentient/fire", CHAN_WEAPON)   
      CHNF J 1 Bright A_FireCustomMissile("PlayerExplosiveTracer",Random(4,-4),1,0,Random(4,-4))
      TNT1 A 0 A_JumpIfNoAmmo("EmptySpinDown")   
      CHNF KL 1 Bright
      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)   
      CHNF M 1 Bright A_FireCustomMissile("PlayerExplosiveTracer",Random(4,-4),1,0,Random(4,-4))
      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 ABCDABCD 1
      CHNG ABCD 2
      CHNG ABCD 3
      Goto Ready
   AltFire:
      TNT1 A 0
      TNT1 A 0 A_JumpIfInventory("ExpMinigunActive2",1,"EmptySpinDown")
      TNT1 A 0 A_PlaySound("weapons/expmgunspinstart", 5)
      CHNG ABC 2
      CHNG DABCDABCD 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 ABCDABCD 1
      CHNG ABCD 2
      CHNG ABCD 3
      Goto Ready
   }
}

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

ACTOR PlayerExplosiveUseAmmo
{
Damage 0
Height 1
Radius 1
Speed 1
RenderStyle None
+MISSILE
+NOTIMEFREEZE
}

ACTOR PlayerExplosiveTracer : SentientExplosiveTracer
{
Species "Player"
DamageType "Player"
+THRUSPECIES
Scale 0.7
Damage (Random(1,3)*Random(6,10))
States
{
  Death:
	TNT1 A 0
	TNT1 A 0 A_SetTranslucent(0.75,1)
	TNT1 A 0 A_SpawnItem("SentientExplosiveEffect")
	TNT1 A 0 A_Explode(Random(3,6)*5,72)
    MISL B 4 Bright
    MISL CD 3 Bright
    Stop
}

}