ACTOR ExplosiveRailgun : Weapon
{
  Scale 0.8
  Weapon.PreferredSkin "Railgun-Marine"
  Weapon.Selectionorder 4001
  Weapon.KickBack 200
  Weapon.AmmoUse 15
  Weapon.AmmoGive 0
  Weapon.AmmoGive2 45
  Weapon.AmmoType "EXPCellCharge"
  Weapon.AmmoType2 "NewCell"
  Inventory.PickupSound "weapons/pickuprg"
  Inventory.Pickupmessage "Explosive Railgun"
  Weapon.UpSound "weapons/railselect"
  Obituary "%o sucked on %k's Railgun slug."
  Tag "Explosive Railgun"
  Decal Scorch
  +WEAPON.AMMO_OPTIONAL
  +WEAPON.NOALERT  
  +WEAPON.NOAUTOAIM
  +INVENTORY.UNDROPPABLE
  States
  {
  Ready:
	ERGD ABCDEF 1
  ReadyLoop:
	TNT1 A 0 A_JumpIfInventory("HandGrenadeAction",1,"GrenadeCheck")
	TNT1 A 0 A_JumpIfInventory("MineAction",1,"MineCheck")
	TNT1 A 0 A_JumpIfInventory("RailgunAction",1,"Zoom")
	TNT1 A 0 A_ZoomFactor(1)
	EXRG A 1 A_WeaponReady
    Loop
  ReadyZoomed:
	TNT1 A 0 A_JumpIfInventory("HandGrenadeAction",1,"GrenadeCheck")
	TNT1 A 0 A_JumpIfInventory("MineAction",1,"MineCheck")
	TNT1 A 0 A_JumpIfInventory("RailgunAction",1,"Zoom")
    XRGS A 1 Bright A_WeaponReady(WRF_NOBOB)
    Loop
  Deselect:
	TNT1 A 0 A_PlayWeaponSound("weapons/weapondown")
	TNT1 A 0 A_TakeInventory("RailgunZoomed",1)
	TNT1 A 0 A_ZoomFactor(1)
	EXRG A 1 A_Lower
    Goto Deselect+1
  Select:
	TNT1 A 0 A_Raise
    Wait
  Fire:
    TNT1 A 0 A_JumpIfInventory("RailgunZoomed",1,"FireZoomed")
    TNT1 A 0 A_JumpIfNoAmmo("Empty")
    TNT1 A 0 A_AlertMonsters  
	TNT1 A 0 Radius_Quake(12,4,0,1,0)
    TNT1 A 0 A_GunFlash
	TNT1 A 0 A_Light1
	TNT1 A 0 A_FireCustomMissile("ExplosiveRailgunImpact",0,0)
	TNT1 A 0 A_PlaySound("ExplosiveRailgun/Fire",7)
    EXRG B 3 Bright A_RailAttack(200,0,1,None,None,RGF_SILENT,0,"PlayerRailPuff",0,0,0,0,40,0,"ExplosiveRailgunTrail")
	EXRG C 3 Bright A_Light2
	TNT1 A 0 A_Light0
	EXRG DEFGHIJK 3
	EXRG A 30
    Goto Ready+7
  FireZoomed:
    TNT1 A 0 A_AlertMonsters  
	TNT1 A 0 Radius_Quake(12,4,0,1,0)
    TNT1 A 0 A_GunFlash
	TNT1 A 0 A_Light2
	TNT1 A 0 A_FireCustomMissile("ExplosiveRailgunImpact",0,0)
	TNT1 A 0 A_PlaySound("ExplosiveRailgun/Fire",7)
	XRGS A 4 Bright A_RailAttack(200,0,1,None,None,RGF_SILENT,0,"PlayerRailPuff",0,0,0,0,40,0,"ExplosiveRailgunTrail")
	TNT1 A 0 A_JumpIfInventory("EXPCellCharge",15,4)
	TNT1 A 0 A_TakeInventory("RailgunZoomed",1)
	TNT1 A 0 A_ZoomFactor(1)	
	XRGS A 50 A_Light0
	Goto Ready+7
	TNT1 A 0 A_Light0
	XRGS A 10 Bright A_JumpIfInventory("RailgunAction",1,"FiredUnZoom")
	XRGS A 10 Bright A_JumpIfInventory("RailgunAction",1,"FiredUnZoom2")
	XRGS A 10 Bright A_JumpIfInventory("RailgunAction",1,"FiredUnZoom3")
	XRGS A 10 Bright A_JumpIfInventory("RailgunAction",1,"FiredUnZoom4")
	XRGS A 10 Bright A_JumpIfInventory("RailgunAction",1,"FiredUnZoom5")
	XRGS A 10 Bright A_JumpIfInventory("RailgunAction",1,"FiredUnZoom6")
	Goto ReadyZoomed
  Empty:
    EXRG A 15 A_PlaySound("weapons/click2")
  AltFire:
  	TNT1 A 0 A_TakeInventory("RailgunZoomed",1)
	TNT1 A 0 A_ZoomFactor(1)
    TNT1 A 0 A_JumpIfInventory("EXPCellCharge",60,2)
    TNT1 A 0 A_JumpIfInventory("NewCell",15,2)
	TNT1 A 0
	Goto ReadyLoop
	TNT1 A 0 A_TakeInventory("RailgunZoomed",1)
	TNT1 A 0 A_ZoomFactor(1)	
	ERGR AAABCDE 1
	ERGR F 4 A_PlayWeaponSound("weapons/cellreload")
	ERGR GHI 2
	ERGR JJKK 1
	ERGR L 1 A_FireCustomMissile("CellCasingSpawner", random(-13,-15), 0, 2, 1)
	ERGR MNOP 1
	ERGR Q 30
	ERGR RSTU 1
	ERGR VW 2
	TNT1 A 0 A_JumpIfInventory("NewCell",15,"Reload")	
	ERGR X 4 A_PlayWeaponSound("weapons/plasmacellin")
	EXRG A 10
	Goto ReadyLoop
  Reload:
    TNT1 A 0 A_TakeInventory("NewCell",15)
	TNT1 A 0 A_GiveInventory("EXPCellCharge",15)
	TNT1 A 0 A_JumpIfInventory("EXPCellCharge",60,"Full")
	TNT1 A 0 A_JumpIfInventory("NewCell",1,"Reload")
	Goto AltFire+35
  Full:
    TNT1 A 0
	Goto AltFire+35
  Zoom:
	TNT1 A 0 A_JumpIfInventory("RailgunZoomed",1,"UnZoom")
    TNT1 A 0 A_GiveInventory("RailgunZoomed",1)
	TNT1 A 0 A_TakeInventory("RailgunAction",1)
	EXRG A 9 A_ZoomFactor(5)
	Goto ReadyZoomed
  FiredUnZoom:
	TNT1 A 0 A_TakeInventory("RailgunZoomed",1)
	TNT1 A 0 A_TakeInventory("RailgunAction",1)
	EXRG K 60 A_ZoomFactor(1)
	Goto ReadyLoop
  FiredUnZoom2:
	TNT1 A 0 A_TakeInventory("RailgunZoomed",1)
	TNT1 A 0 A_TakeInventory("RailgunAction",1)
	EXRG K 50 A_ZoomFactor(1)
	Goto ReadyLoop
  FiredUnZoom3:
	TNT1 A 0 A_TakeInventory("RailgunZoomed",1)
	TNT1 A 0 A_TakeInventory("RailgunAction",1)
	EXRG K 40 A_ZoomFactor(1)
	Goto ReadyLoop
  FiredUnZoom4:
	TNT1 A 0 A_TakeInventory("RailgunZoomed",1)
	TNT1 A 0 A_TakeInventory("RailgunAction",1)
	EXRG K 30 A_ZoomFactor(1)
	Goto ReadyLoop
  FiredUnZoom5:
	TNT1 A 0 A_TakeInventory("RailgunZoomed",1)
	TNT1 A 0 A_TakeInventory("RailgunAction",1)
	EXRG K 20 A_ZoomFactor(1)
	Goto ReadyLoop	
  FiredUnZoom6:
	TNT1 A 0 A_TakeInventory("RailgunZoomed",1)
	TNT1 A 0 A_TakeInventory("RailgunAction",1)
	EXRG K 10 A_ZoomFactor(1)
	Goto ReadyLoop	
  UnZoom:
	TNT1 A 0 A_TakeInventory("RailgunZoomed",1)
	TNT1 A 0 A_TakeInventory("RailgunAction",1)
	EXRG A 9 A_ZoomFactor(1)
	Goto ReadyLoop	
  GrenadeCheck:
	TNT1 A 0 A_JumpIfInventory("HandGrenadeAmmo",1,"GrenadeToss")
	TNT1 A 0 A_TakeInventory("HandGrenadeAction",1)
	TNT1 A 0 A_JumpIfInventory("RailgunZoomed",1,2)
	TNT1 A 0 A_ZoomFactor(1)
	Goto ReadyLoop
    TNT1 A 0
	Goto ReadyZoomed
  GrenadeToss:
  	TNT1 A 0 A_TakeInventory("RailgunZoomed",1)
	TNT1 A 0 A_ZoomFactor(1)
  	TNT1 A 0 A_PlayWeaponSound("weapons/weapondown")
	ERGD CBA 2
	TNT1 A 4
	HGRN ABC 1
	HGRN D 2
	HGRN EFG 1
	HGRN HI 2
	TNT1 A 15 A_PlayWeaponSound("weapons/hgrenadepin")
	TNT1 A 0 A_PlayWeaponSound("weapons/hgrenadethrow")
	TNT1 A 0 A_TakeInventory("HandGrenadeAmmo",1)
	HGNE A 1 A_FireCustomMissile("ThrownGrenade",0,0,0,0)
	HGRN J 1
	HGRN KLM 2
	HGRN NO 1
	TNT1 A 6
	TNT1 A 0 A_JumpIfInventory("HandGrenadeAmmo",1,2)
    TNT1 A 0 A_TakeInventory("Hand Grenade",1)
	TNT1 A 0 A_TakeInventory("HandGrenadeAction",1)
	TNT1 A 0
	Goto Ready
  MineCheck:
	TNT1 A 0 A_JumpIfInventory("MineAmmo",1,"MineToss")
	TNT1 A 0 A_TakeInventory("MineAction",1)
	TNT1 A 0 A_JumpIfInventory("RailgunZoomed",1,2)
	TNT1 A 0 A_ZoomFactor(1)
	Goto ReadyLoop
    TNT1 A 0
	Goto ReadyZoomed
  MineToss:
  	TNT1 A 0 A_TakeInventory("RailgunZoomed",1)
	TNT1 A 0 A_ZoomFactor(1)
  	TNT1 A 0 A_PlayWeaponSound("weapons/weapondown")
	ERGD CBA 2
	TNT1 A 8
	TNT1 A 0 A_PlayWeaponSound("weapons/hgrenadethrow")
	MINE ABCDEF 1		
	TNT1 A 0 A_TakeInventory("MineAmmo",1)	  
	MINE G 1 A_FireCustomMissile("ThrownMine",0,0,0,0)
	MINE HI 1
	MINE JK 2
	TNT1 A 0 A_JumpIfInventory("MineAmmo",1,2)
    TNT1 A 0 A_TakeInventory("Land Mine",1)
	TNT1 A 0 A_TakeInventory("MineAction",1)
	TNT1 A 0
	TNT1 A 5
	Goto Ready
  Spawn:
    ERGP A -1
    Stop
    }
}

ACTOR ExplosiveRailgunImpact : FastProjectile
{
Speed 300
Radius 2
Height 2
RenderStyle Add
Alpha 0.85
+THRUACTORS
MissileType "ExplosiveRailgunTrailExplodeSpawner"
MissileHeight 8
States
{
Spawn:
	TNT1 A 1
	Loop
Death:
	TNT1 A 0
	TNT1 A 0 A_PlaySound("cyberrail/impact")
	//TNT1 AAAAA 0 A_SpawnItemEx("ExplosiveRailgunTrailExplode",random(0,4),0,0,random(0,8),0,random(-8,8),random(0,360),SXF_NOCHECKPOSITION)
	TNT1 A 0 A_SpawnItemEx("BFGShockwaveRed", 0, 0, 0, 0, 0, 0, 0, 128)
	TNT1 AAA 0 A_CustomMissile("Kaboom14", 0, 0, random(0,360), 2, random(0,360))
	TNT1 A 1 A_SpawnItem("RailgunImpactEffectRed")
	Stop
	}
}

ACTOR ExplosiveRailgunTrailExplodeSpawner
{
  States
  {
  Spawn:
	TNT1 A 1 Nodelay A_SpawnItemEx("ExplosiveRailgunTrailExplode",random(0,4),0,0,random(0,4),0,random(-4,4),random(0,360))
	Stop
  }
}

ACTOR ExplosiveRailgunTrail : CardinalRailTrail
{
  -CLIENTSIDEONLY
  Scale 0.8
  States
  {
  Spawn:
	TNT1 A 0
	TNT1 A 0 //A_SpawnItemEx("ExplosiveRailgunTrailExplode",random(0,4),0,0,random(0,4),0,random(-4,4),random(0,360))
	RGPR ABCDEFGHIJKLMNOP 2 A_FadeOut(0.04)
	Stop
  }
}

ACTOR ExplosiveRailgunTrailExplode
{
  Renderstyle Add
  Alpha 0.75
  Projectile
  +FORCERADIUSDMG
  +DONTSPLASH
  +FORCEXYBILLBOARD
  +NOCLIP
  +NODAMAGETHRUST
  Scale 0.65
  Damagetype "PlayerDTRG"
  Species "Player"
  States
  {
  Spawn:
	TNT1 A 0
	FXPO AB 2 Bright A_FadeOut(0.05)
	TNT1 A 0 A_Explode(40,128,0,0,40)
	FXPO CD 1 Bright A_FadeOut(0.05)
	TNT1 A 0 A_Explode(40,128,0,0,40)
	FXPO EF 1 Bright A_FadeOut(0.05)
	TNT1 A 0 A_Explode(40,128,0,0,40)
	FXPO GHIJKLM 1 Bright A_FadeOut(0.05)
	Stop
  }
}

ACTOR EXPCellCharge : Ammo
{
Inventory.Amount 0
Inventory.MaxAmount 60
Ammo.BackpackAmount 0
Ammo.BackpackMaxAmount 60
Inventory.Icon "ERGPA0"
+IGNORESKILL
}