ACTOR "ExplosiveQBSG" : Weapon
{
  Scale 0.9
  Weapon.PreferredSkin "QuadBarrelSG-Marine"
  Weapon.SelectionOrder 4450
  Weapon.KickBack 100
  Weapon.AmmoUse 0
  Weapon.AmmoGive 0
  Weapon.AmmoGive2 8
  Weapon.AmmoType "QuadShell"
  Weapon.AmmoType2 "NewShell"
  Inventory.PickupMessage "Explosive Quad Barrel Shotgun"
  Inventory.PickupSound "weapons/pickupqsg"
  Obituary "%o was destroyed by %k's Quad Shotgun."
  Tag "Explosive Quad Barrel Shotgun"
  +WEAPON.AMMO_OPTIONAL
  //+WEAPON.NOALERT
  +INVENTORY.UNDROPPABLE
  States
  {
  Ready:
    TNT1 A 0 A_PlayWeaponSound("weapons/pickupqsg")
	QSRS ABCDEF 1
	QSRS GH 2
	TNT1 A 0 A_JumpIfInventory("HandGrenadeAction",1,"GrenadeCheck")
	TNT1 A 0 A_JumpIfInventory("MineAction",1,"MineCheck")
    QSGN A 1 A_WeaponReady
    Goto Ready+9
  Deselect: 
    TNT1 A 0 A_PlayWeaponSound("weapons/weapondown")
    QSGN A 1 A_Lower
    Goto Deselect+1
  Select:
	TNT1 A 0 A_Raise
    Wait
  Fire:
	TNT1 A 0 A_JumpIfInventory("QuadShell",4,"QuadFire")
	TNT1 A 0 A_JumpIfInventory("NewShell",2,"Reload")
	Goto Empty
  QuadFire:
	TNT1 A 0 A_PlaySound("weapons/qsgfire")
	TNT1 A 0 A_AlertMonsters
	TNT1 A 0 A_Recoil(2)
    TNT1 A 0 A_GunFlash
	TNT1 A 0 A_Light1
    TNT1 A 0 Radius_Quake(10,5,0,1,0)
	TNT1 A 0 A_TakeInventory("QuadShell",4)	
	TNT1 AAAAAAAAAAAAAAAAAAAAA 0 A_FireCustomMissile("PlayerExplosiveTracer",Random(-8,8),0,0,0,0,frandom(-10,10))
	TNT1 AAAAAAAAAAAAAAAAAAAAA 0 A_FireCustomMissile("PlayerExplosiveTracer",Random(-8,8),0,0,0,0,frandom(-10,10))
    QS4F A 2 Bright A_FireBullets(16,12,40,Random(5,7),"ModdedBulletPuff")
    QS4F B 2 Bright A_Light2
	TNT1 A 0 A_Light0
	QSGN CFG 1
	QSGN H 2
	QSER A 3
	QSER B 6
	QSGN GFEDC 2
  QuadReloadCheck:
  	TNT1 A 0 A_JumpIfInventory("NewShell",4,2)
	QSGN S 2
	Goto Ready+9
	TNT1 A 0
	Goto ReloadFourShells+3
  AltFire:
    TNT1 A 0 A_JumpIfInventory("QuadShell",4,"FireUpper")
	TNT1 A 0 A_JumpIfInventory("QuadShell",2,1)
	Goto Reload
    TNT1 A 0 A_PlaySound("weapons/qsgdoublefire")	
    TNT1 A 0 A_AlertMonsters
    TNT1 A 0 A_GunFlash
	TNT1 A 0 A_Light1
    TNT1 A 0 Radius_Quake(3,3,0,1,0)
	TNT1 A 0 A_TakeInventory("QuadShell",2)
	TNT1 AAAAAAAAAAAAAAAAAAAAA 0 A_FireCustomMissile("PlayerExplosiveTracer",Random(-4,4),0,0,0,0,frandom(-6,6))
    QSGF C 2 Bright A_FireBullets(8,6,20,Random(5,7),"ModdedBulletPuff")
	QSGF D 2 Bright A_Light2
	TNT1 A 0 A_Light0
	QREC ABCDE 1
	QSGN A 1
    Goto Ready+9
  FireUpper:
    TNT1 A 0 A_PlaySound("weapons/qsgdoublefire")	
    TNT1 A 0 A_AlertMonsters
    TNT1 A 0 A_GunFlash
	TNT1 A 0 A_Light1
    TNT1 A 0 Radius_Quake(3,3,0,1,0)
	TNT1 A 0 A_TakeInventory("QuadShell",2)
	TNT1 AAAAAAAAAAAAAAAAAAAAA 0 A_FireCustomMissile("PlayerExplosiveTracer",Random(-4,4),0,0,0,0,frandom(-6,6))
    QSGF A 2 Bright A_FireBullets(8,6,20,Random(5,7),"ModdedBulletPuff")
	QSGF B 2 Bright A_Light2
	TNT1 A 0 A_Light0
	QREC ABCDE 1
	QSGN A 1
    Goto Ready+9	
  Empty:
    QSGN A 10 A_PlayWeaponSound("weapons/click")
	TNT1 A 0 A_JumpIfInventory("NewShell",4,"ReloadFourShells")
	Goto Ready+9
  Reload:
	TNT1 A 0 A_JumpIfInventory("QuadShell",2,"ReloadTwoShells")
	TNT1 A 0 A_JumpIfInventory("NewShell",4,"ReloadFourShells")
	Goto Empty	
  ReloadFourShells:
	QSGN SRQ 2
	QSGN PJ 1
	QSGN K 1
	TNT1 AAAA 0 A_SpawnItemEx("OrangeShellCasing",25,-2,25,Random(2,4),Random(-3,-6),Random(3,6),0)
	QSGN L 1
	QSGR A 12 A_PlayWeaponSound("weapons/qsgopen")
	QSGR B 1
	QSGR CD 2
	TNT1 A 0 A_TakeInventory("NewShell",2)
	TNT1 A 0 A_GiveInventory("QuadShell",2)
	QSGR E 3 A_PlayWeaponSound("weapons/qsgshellslide")
	QSGR F 3
	QSGR G 2
	QSGR H 1
	QSGR I 8
	QSGR JK 1
	QSGR LM 2
	TNT1 A 0 A_TakeInventory("NewShell",2)
	TNT1 A 0 A_GiveInventory("QuadShell",2)
	QSGR N 3 A_PlayWeaponSound("weapons/qsgshellslide")	
	QSGR O 3
	QSGR P 2
	QSGR Q 1
	QSGN MNO 1
	QSGN P 1 A_PlayWeaponSound("weapons/qsgclose")
	QSGN QRS 2
	QSGN A 2
    Goto Ready+9
  ReloadTwoShells:
    TNT1 A 0 A_JumpIfInventory("NewShell",2,1)
	Goto Ready+9
	QSGN SRQ 2
	QSGN P 1
	QSEX A 1
	QSEX B 1
	TNT1 AA 0 A_SpawnItemEx("OrangeShellCasing",25,-2,25,Random(2,4),Random(-3,-6),Random(3,6),0)
	QSEX C 1
	QSGR I 12 A_PlayWeaponSound("weapons/qsgopen")
	QSGR JK 1
	QSGR LM 2
	TNT1 A 0 A_TakeInventory("NewShell",2)
	TNT1 A 0 A_GiveInventory("QuadShell",2)
	QSGR N 3 A_PlayWeaponSound("weapons/qsgshellslide")	
	QSGR O 3
	QSGR P 2
	QSGR Q 1
	QSGN MNO 1
	QSGN P 1 A_PlayWeaponSound("weapons/qsgclose")
	QSGN QRS 2
	QSGN A 2
	Goto Ready+9
  GrenadeCheck:
	TNT1 A 0 A_JumpIfInventory("HandGrenadeAmmo",1,"GrenadeToss")
	TNT1 A 0 A_TakeInventory("HandGrenadeAction",1)
	Goto Ready+9
  GrenadeToss:
  	TNT1 A 0 A_PlayWeaponSound("weapons/weapondown") 
	QSHT EDCBA 1
	TNT1 A 4
	HGRN ABCDEFGHI 1
	TNT1 A 0 A_PlayWeaponSound("weapons/hgrenadepin")
	HGRN JKLM 2
	TNT1 A 11
	TNT1 A 0 A_PlayWeaponSound("weapons/hgrenadethrow")
	TNT1 A 0 A_TakeInventory("HandGrenadeAmmo",1,TIF_NOTAKEINFINITE)
	HGRN N 1 A_FireCustomMissile("ThrownGrenade",0,0,0,0)
	HGRN OPQRS 1
	HGRN TU 2
	TNT1 A 6 A_TakeInventory("HandGrenadeAction",1)
	QSHT ABCDE 1
	Goto Ready+9
  MineCheck:
	TNT1 A 0 A_JumpIfInventory("MineAmmo",1,"MineToss")
	TNT1 A 0 A_TakeInventory("MineAction",1)
	Goto Ready+9
  MineToss:
  	TNT1 A 0 A_PlayWeaponSound("weapons/weapondown") 
	QSHT EDCBA 1
	TNT1 A 8
	TNT1 A 0 A_PlayWeaponSound("weapons/hgrenadethrow")
	MINE ABCDEF 1
	TNT1 A 0 A_TakeInventory("MineAmmo",1,TIF_NOTAKEINFINITE)
	MINE G 1 A_FireCustomMissile("ThrownMine",0,0,0,0,false)
	MINE HI 1
	MINE JKLM 1
	TNT1 A 5 A_TakeInventory("MineAction",1)
	QSHT ABCDE 1
	Goto Ready+9
  Spawn:
    QSGP A -1
    Stop
    }
}