Actor ExplosiveRifle2 : Weapon replaces ExplosiveRifle
{
  Scale 0.9
  +WEAPON.AMMO_OPTIONAL
  Weapon.PreferredSkin "AssaultRifle-Marine"
  Weapon.SelectionOrder 7988
  Weapon.KickBack 50
  Weapon.AmmoType "BulletMag"
  Weapon.AmmoGive 50
  Weapon.AmmoUse 3
  Inventory.PickupSound "items/assaultrifle"
  Inventory.PickupMessage "Explosive Rifle"
  Obituary "%o was terminated by %k's Executor."
  Tag "Explosive Rifle"
  States
  {
  Spawn:
	PGND A -1
	Loop
  Select:
	TNT1 A 0
	TNT1 A 0 A_Raise
	TNT1 A 0 A_Raise
	Wait
  Deselect:
	TNT1 A 0 A_ZoomFactor(1.0)
	TNT1 A 0 A_TakeInventory("ExplosiveRifleZoomed",1)
	TNT1 A 0 A_TakeInventory("HandGrenadeAction",1)
	TNT1 A 0 A_TakeInventory("MineAction",1)
	TNT1 A 0 A_TakeInventory("RailgunAction",1)
  DeselectLoop:
	TNT1 A 0 A_Lower
	EBGN A 1 A_Lower
	Loop
  UnZoom:
	EBGN Z 3
	TNT1 A 0 A_SetBlend("Black",1.0,43,"Black")
	EBGN A 8 A_ZoomFactor(1.0)
	GoTo DeSelect
  UnZoom2:
	EBGN Z 3
	TNT1 A 0 A_SetBlend("Black",1.0,43,"Black")
	EBGN A 8 A_ZoomFactor(1.0)
	TNT1 A 0 A_TakeInventory("ExplosiveRifleZoomed",1)
	GoTo MineCheck
  UnZoom3:
	EBGN Z 3
	TNT1 A 0 A_SetBlend("Black",1.0,43,"Black")
	EBGN A 8 A_ZoomFactor(1.0)
	TNT1 A 0 A_TakeInventory("ExplosiveRifleZoomed",1)
	GoTo GrenadeCheck
  UnZoom4:
	EBGN Z 3
	TNT1 A 0 A_SetBlend("Black",1.0,43,"Black")
	EBGN A 8 A_ZoomFactor(1.0)
	TNT1 A 0 A_TakeInventory("RailgunAction",1)
	TNT1 A 0 A_TakeInventory("ExplosiveRifleZoomed",1)
	GoTo ReadyLoop
    
  Ready:
	TNT1 A 0 A_PlayWeaponSound("items/assaultrifle")
	EBGD 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")
	EBGN A 1 A_WeaponReady
	Loop
  Empty:
	EBGN A 10 A_PlayWeaponSound("weapons/click")
	Goto ReadyLoop
  Fire:
	TNT1 A 0 A_JumpIfInventory("ExplosiveRifleZoomed",1,"FireSnipe")
	TNT1 A 0 A_JumpIfNoAmmo("Empty")
	EBGN A 2
  Hold:
	EBGN B 2 Bright A_Light1
	TNT1 A 0 Radius_Quake(4,2,0,1,0)
	TNT1 A 0 A_PlaySound("PulseNail/fire",0,1.0,0)
	TNT1 A 0 A_FireCustomMissile("PlayerExplosiveTracer2",0,0,0,6)
	TNT1 A 0 A_FireCustomMissile("ExplosiveBullet",random(-1,1),1,0,6,0,random(-2,2))
	TNT1 A 0 A_Recoil(1)
	EBGN C 2 Bright A_Light2
	EBGN DEEE 2 A_Light0
	EBGN FFGGH 1
	TNT1 A 0 A_Refire
	Goto ReadyLoop
  Zoom:
	TNT1 A 0 A_TakeInventory("RailgunAction",1)
	TNT1 A 0 A_GiveInventory("ExplosiveRifleZoomed",1)
	EBGN A 2
	TNT1 A 0 A_SetBlend("Black",1.0,43,"Black")
	EBGN A 3
	EBGN Z 8 A_ZoomFactor(3.0)
  ZoomLoop:
	TNT1 A 0 A_JumpIfInventory("HandGrenadeAction",1,"UnZoom3")
	TNT1 A 0 A_JumpIfInventory("MineAction",1,"UnZoom2")
	TNT1 A 0 A_JumpIfInventory("RailgunAction",1,"UnZoom4")
	EBGN Z 1 A_WeaponReady(WRF_NOSECONDARY)
	Loop
  FireSnipe:
    TNT1 A 0 A_JumpIfInventory("BulletMag",3,1)
	Goto UnZoom4
	EBGN Z 2
	TNT1 A 0 Radius_Quake(4,2,0,1,0)
	TNT1 A 0 A_PlaySound("PulseNail/fire",0,1.0,0)
	TNT1 A 0 A_FireCustomMissile("PlayerExplosiveTracer2",0,0,0,6)
	TNT1 A 0 A_FireCustomMissile("ExplosiveBullet",0,1,0,6,0,0)
	TNT1 A 0 A_Recoil(1)
	EBGN Z 3 Bright A_Light2
	TNT1 A 0 A_Light0
    EBGN ZZZ 1 A_SetPitch(pitch-1,SPF_INTERPOLATE)
	EBGN Z 12
	GoTo ZoomLoop
  AltFire:
	EBGN A 2
  AltHold:
    TNT1 A 0 A_JumpIfInventory("BulletMag",12,1)
	GoTo ReadyLoop
	EBGN B 1 Bright A_Light1
	TNT1 A 0 Radius_Quake(4,2,0,1,0)
	TNT1 A 0 A_PlaySound("PulseNail/fire",0,1.0,0)
	TNT1 A 0 A_FireCustomMissile("PlayerExplosiveTracer2",Random(-5,5),0,0,6,0,Random(-5,5))
	TNT1 A 0 A_TakeInventory("BulletMag",3)
	TNT1 A 0 A_FireCustomMissile("ExplosiveBullet",random(-5,5),0,0,6,0,random(-5,5))
	TNT1 A 0 A_Recoil(1)
	EBGN C 1 Bright A_Light2
	EBGN DED 1 A_Light0
	EBGN B 1 Bright A_Light1
	TNT1 A 0 Radius_Quake(4,2,0,1,0)
	TNT1 A 0 A_PlaySound("PulseNail/fire",0,1.0,0)
	TNT1 A 0 A_FireCustomMissile("PlayerExplosiveTracer2",Random(-5,5),0,0,6,0,Random(-5,5))
	TNT1 A 0 A_TakeInventory("BulletMag",3)
	TNT1 A 0 A_FireCustomMissile("ExplosiveBullet",random(-5,5),0,0,6,0,random(-5,5))
	TNT1 A 0 A_Recoil(1)
	EBGN C 1 Bright A_Light2
	EBGN DED 1 A_Light0
	EBGN B 1 Bright A_Light1
	TNT1 A 0 Radius_Quake(4,2,0,1,0)
	TNT1 A 0 A_PlaySound("PulseNail/fire",0,1.0,0)
	TNT1 A 0 A_FireCustomMissile("PlayerExplosiveTracer2",Random(-5,5),0,0,6,0,Random(-5,5))
	TNT1 A 0 A_TakeInventory("BulletMag",3)
	TNT1 A 0 A_FireCustomMissile("ExplosiveBullet",random(-5,5),0,0,6,0,random(-5,5))
	TNT1 A 0 A_Recoil(1)
	EBGN C 1 Bright A_Light2
	EBGN DED 1 A_Light0
	EBGN B 1 Bright A_Light1
	TNT1 A 0 Radius_Quake(4,2,0,1,0)
	TNT1 A 0 A_PlaySound("PulseNail/fire",0,1.0,0)
	TNT1 A 0 A_FireCustomMissile("PlayerExplosiveTracer2",Random(-5,5),0,0,6,0,Random(-5,5))
	TNT1 A 0 A_TakeInventory("BulletMag",3)
	TNT1 A 0 A_FireCustomMissile("ExplosiveBullet",random(-5,5),0,0,6,0,random(-5,5))
	TNT1 A 0 A_Recoil(1)
	EBGN C 1 Bright A_Light2
	EBGN DED 1 A_Light0
	TNT1 A 0 A_Refire
  AFNext:
	EBGN E 7
	EBGN FGH 3
	GoTo ReadyLoop
  GrenadeCheck:
	TNT1 A 0 A_JumpIfInventory("HandGrenadeAmmo",1,"GrenadeToss")
	TNT1 A 0 A_TakeInventory("HandGrenadeAction",1)
	Goto Ready+7
  GrenadeToss:
	TNT1 A 0 A_JumpIfInventory("ExplosiveRifleZoomed",1,"UnZoom3")
  	TNT1 A 0 A_PlayWeaponSound("weapons/weapondown") 
	EBGD FEDCBA 1
	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+1
  MineCheck:
	TNT1 A 0 A_JumpIfInventory("MineAmmo",1,"MineToss")
	TNT1 A 0 A_TakeInventory("MineAction",1)
	Goto Ready+7
  MineToss:
	TNT1 A 0 A_JumpIfInventory("ExplosiveRifleZoomed",1,"UnZoom2")
  	TNT1 A 0 A_PlayWeaponSound("weapons/weapondown") 
	EBGD FEDCBA 1
	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+1
	}
}

Actor ExplosiveRifleZoomed : Inventory { Inventory.MaxAmount 1 }