ACTOR HellStormBFG : DoomWeapon
{
  Scale 1.2
  Height 20
  Weapon.PreferredSkin "BFG10K-Marine"
  Weapon.SelectionOrder 2880
  Weapon.AmmoType "NewCell"
  Weapon.AmmoUse 10
  Weapon.AmmoGive 40
  Inventory.PickupMessage "You got the Hellstorm BFG!!"
  Inventory.PickupSound "weapons/pickup15k"
  Obituary "%o was trashed and scattered in a Hellstorm."
  +WEAPON.NOAUTOFIRE
  +INVENTORY.UNDROPPABLE
  States
  {
  Spawn:
    HFG2 A -1
    Stop
  Ready:
    TNT1 A 0 A_JumpIfNoAmmo("Ready2")
    TNT1 A 0 A_PlayWeaponSound("weapons/Hbfg10kidle")
    HG2G AAA 1 A_WeaponReady
    HG2G BBB 1 A_WeaponReady
    HG2G CCC 1 A_WeaponReady
    HG2G DDD 1 A_WeaponReady
    Loop
  Ready2:
    TNT1 A 0 A_JumpIfInventory("NewCell",5,"Ready")
    HGE2 A 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_JumpIfNoAmmo("Deselect2")
	TNT1 A 0 A_PlayWeaponSound("weapons/weapondown")
	HG2G A 1 A_Lower
    Goto Deselect+5	
  Deselect2:
	TNT1 A 0 A_PlayWeaponSound("weapons/weapondown")
	HGE2 A 1 A_Lower
    Goto Deselect2+1		
  Select:
    TNT1 A 0 A_JumpIfNoAmmo("Select2")
    TNT1 A 0 A_Playsound("weapons/pickup15k")
    HG2G A 1 A_Raise
    Goto Select+2
  Select2:
    TNT1 A 0 A_PlayWeaponSound("weapons/pickup15k")
    HGE2 A 1 A_Raise
    Goto Select2+1	
  Fire:
    HG2G E 25 A_PlayWeaponSound("weapons/Hcharge10k")
    HG2G F 4
    HG2G GHIJ 1
    Goto Hold
  Hold:
    HG2G J 1 A_GunFlash
    HG2G K 1 
	TNT1 A 0 A_PlaySound("weapons/Hbfg10kfire")
	TNT1 A 0 Radius_Quake(12,3,0,1,0)
	HG2G K 1 A_FireCustomMissile ("HSBFG10kShot",Random(-9,9),1,0,0,0,Random(-7,7))
    TNT1 A 0 A_FireCustomMissile ("HSBFG10kShot",Random(-19,19),0,0,0,0,Random(-5,5))
    TNT1 A 0 A_FireCustomMissile ("HSBFG10kShot",Random(-11,11),0,0,0,0,Random(-2,2))
    HG2G LMNO 1
	TNT1 A 0 A_Refire
    HG2G O 35 A_PlaySound("weapons/Hbfg10kcooldown") 
    Goto Ready
//  AltFire:
    HG2G E 25 A_PlayWeaponSound("weapons/Hcharge10k")
    HG2G F 4
    HG2G GHIJ 1
    HG2G J 4 A_GunFlash
    HG2G K 4 
	TNT1 A 0 A_PlaySound("weapons/Hbfg10kfire")
	TNT1 A 0 Radius_Quake(48,3,0,1,0)
	HG2G K 4 A_FireCustomMissile ("HSBFG10kShot",Random(-9,9),1,0,0,0,Random(-9,9))
    TNT1 A 0 A_FireCustomMissile ("HSBFG10kShot",Random(-11,11),0,0,0,0,Random(-4,4))
    TNT1 A 0 A_FireCustomMissile ("HSBFG10kShot",Random(-7,7),0,0,0,0,Random(-1,1))
    TNT1 A 0 A_FireCustomMissile ("HSBFG10kShot",Random(-5,5),0,0,0,0,Random(-7,7))
	TNT1 A 0 A_FireCustomMissile ("HSBFG10kShot",Random(-3,3),0,0,0,0,Random(-5,5))
	TNT1 A 0 A_FireCustomMissile ("HSBFG10kShot",Random(-11,11),0,0,0,0,Random(-9,9))
    TNT1 A 0 A_FireCustomMissile ("HSBFG10kShot2",Random(-11,11),0,0,0,0,Random(-4,4))
    TNT1 A 0 A_FireCustomMissile ("HSBFG10kShot2",Random(-7,7),0,0,0,0,Random(-1,1))
    TNT1 A 0 A_FireCustomMissile ("HSBFG10kShot2",Random(-5,5),0,0,0,0,Random(-7,7))
	TNT1 A 0 A_FireCustomMissile ("HSBFG10kShot2",Random(-3,3),0,0,0,0,Random(-5,5))
	TNT1 A 0 A_FireCustomMissile ("HSBFG10kShot2",Random(-11,11),0,0,0,0,Random(-9,9))
    HG2G L 4
    HG2G M 4
    HG2G N 4
    HG2G O 4
    HG2G O 35 A_PlaySound("weapons/Hbfg10kcooldown") 
    Goto Hold
  Flash:
    TNT1 A 2 Bright A_Light1
    TNT1 A 2 Bright A_Light2
	TNT1 A 2 Bright A_Light1
    Goto LightDone
  }
}

Actor HSBFG10kShot
{
	Radius 16
	Height 16
	Damage 30
	Speed 35
	Scale 0.5
	RENDERSTYLE Translucent
	Alpha 0.95
	PROJECTILE
	+FORCERADIUSDMG
	+FORCEXYBILLBOARD
	+EXTREMEDEATH
	+SKYEXPLODE
	+SEEKERMISSILE
  Renderstyle Add
  Alpha 0.75
  SeeSound "Weapons/HS10KFIRE"
  AttackSound "Weapons/HS10KFIRE"
  DeathSound "Weapons/HS10kHIT"
  Obituary "$OB_BFG10K"
  States
  {
  Spawn:
	HFP3 A 2 A_SpawnItem("HSBFG10KGhostA")
	TNT1 A 0 A_SpawnItemEx("ProjectileTrailParticleRed",Random(-12,12),Random(-12,12),Random(-12,12),Random(-2,2),Random(-2,2),Random(-2,2),Random(-20,20),128)
	TNT1 A 0 A_CustomMissile("PlayerDevastatorBolt",6,0,random(0,359),CMF_AIMDIRECTION|CMF_TRACKOWNER,random(-40,40))	
	TNT1 A 0 A_SpawnItemEx("ProjectileTrailParticleRed",Random(-12,12),Random(-12,12),Random(-12,12),Random(-2,2),Random(-2,2),Random(-2,2),Random(-20,20),128)
	TNT1 A 0 A_CustomMissile("PlayerDevastatorBolt",6,0,random(0,359),CMF_AIMDIRECTION|CMF_TRACKOWNER,random(-40,40))	
	TNT1 A 0 A_SpawnItemEx("ProjectileTrailParticleRed",Random(-12,12),Random(-12,12),Random(-12,12),Random(-2,2),Random(-2,2),Random(-2,2),Random(-20,20),128)
	TNT1 A 0 A_CustomMissile("PlayerDevastatorBolt",6,0,random(0,359),CMF_AIMDIRECTION|CMF_TRACKOWNER,random(-40,40))	
	HFP3 B 2
  loop
  Death:
    HPE3 A 0
	HPE3 A 3 A_Explode(30, 42, 1)
	TNT1 A 0 A_Playsound("Weapons/HS10kHIT")
	TNT1 AA 0 A_SpawnItem("HS10KEx")
	TNT1 AAA 0 A_Playsound("Weapons/HS10kHIT")
    HPE3 BCDEF 3
    Stop
  }
}

ACTOR HS10KEx
{
  Radius 11
  Height 8
  Damage 80
  +NOBLOCKMAP
  +NOGRAVITY
  +NOTELEPORT 
  +FORCERADIUSDMG
  Renderstyle Add
  Alpha 0.75
  Scale 0.65
  States
  {
  Spawn:
    TNT1 A 0
	TNT1 AA 0 A_SpawnItemEx("RedParticleSpawner", 0, 0, 0, 0, 0, 0, 0, 128)
    TNT1 AAAA 0 A_CustomMissile("Kaboom13", 0, 0, random(0,360), 2, random(0,360))
    HPE3 A 4 A_Detonate
    HPE3 BCDEF 4
    Stop
  }
}

Actor HSBFG10KShot2 : HSBFG10KShot
{
	Damage 80
	Speed 25
	Scale 1
}

Actor HSBFG10KGhostA : HSBFG10KShot
{
	Damage 0
	Speed 30
	Alpha 0.75
	Scale 0.3
  States
  {
  Spawn:
	HFP3 A 4    
	TNT1 A 0 A_SpawnItem("HSBFG10KGhostB")
	HFP3 B 4 A_Fadeout(0.1)
    Stop
  }
}

Actor HSBFG10KGhostB : HSBFG10KGhostA
{
	Damage 0
	Speed 27
	Alpha 0.75
	Scale 0.2
  States
  {
  Spawn:
	HFP3 A 4    
	TNT1 A 0 A_SpawnItem("HSBFG10KGhostC")
	HFP3 B 4 A_Fadeout(0.1)
    Stop
  }
}

Actor HSBFG10KGhostC : HSBFG10KGhostB
{
	Damage 0
	Speed 23
	Alpha 0.75
	Scale 0.175
  States
  {
  Spawn:
	HFP3 A 4    
	TNT1 A 0 A_SpawnItem("HSBFG10KGhostD")
	HFP3 B 4 A_Fadeout(0.1)
    Stop
  }
}

Actor HSBFG10KGhostD : HSBFG10KGhostC
{
	Damage 0
	Speed 20
	Alpha 0.75
	Scale 0.125
  States
  {
  Spawn:
	HFP3 A 4    
	HFP3 B 4 A_Fadeout(0.1)
    Stop
  }
}