actor PumpActionShotgun : Weapon
{
  Game Doom
  Weapon.SelectionOrder 1800
  weapon.ammotype "PumpClip"
  weapon.ammouse 1
  weapon.ammogive2 999
  weapon.ammogive1 999
  weapon.ammotype2 "PumpAmmo"
  Inventory.PickupMessage "You got The Pump Action Shotgun!!"
  Obituary "$OB_MPSHOTGUN" // "%o chewed on %k's boomstick."
  States
  {
  Ready:
	XSTG A 0 A_JumpIfInventory("thrownade",1,"ThrowGrenade")
    XSTG A 0 A_JumpIfInventory("IsReloading",1,"Reload")  
	XSTG A 0 A_JumpIfInventory("Kinfeammo",1,"UseKnife") 	
    XSTG A 1 A_WeaponReady
    Loop
  Deselect: 
    XSTG A 0 A_Lower
    XSTG A 0 A_Lower
    XSTG A 1 A_Lower
    loop
  Select:
    XSTG A 0 A_Raise
    XSTG A 0 A_Raise
    XSTG A 1 A_Raise
    loop
  Fire:
    XSTG A 0 A_JumpIfInventory("IsReloading",1,"Reload") 
    XSTG A 0 A_jumpifinventory("deadshot",1,"Fire_deadshot")
    XSTG A 0 A_jumpifinventory("doubletap",1,"Fire_doubletap") 
    XSTG A 0 A_JumpIfNoAmmo("Reload")
    XSTG A 3
    XSTG A 0 A_FireBullets (5.6, 5.6, 8, random(450,450), "BulletPuff")
    XSTG A 0 A_PlaySound("Pump/fire")
    XSTG A 7 A_GunFlash
    XSTG B 4
    XSTG C 3 A_PlaySound("Pump/cock")
	TNTT A 0 A_FireCustomMissile("ShellCasingSpawner",0,0,10,2)
    XSTG DE 4
    XSTG F 2
    XSTG A 0 A_JumpIfNoAmmo("Reload")
    XSTG A 6 A_ReFire
    XSTG A 0 A_JumpIfNoAmmo("Reload")
    Goto Ready  
  Fire_deadshot:
    XSTG A 0 A_JumpIfInventory("IsReloading",1,"Reload") 
    XSTG A 0 A_jumpifinventory("doubletap",1,"Fire_doubletapdeadshot") 
    XSTG A 0 A_JumpIfNoAmmo("Reload")
    XSTG A 3
    XSTG A 0 A_FireBullets (3, 2.3, 8, random(450,450), "BulletPuff")
    XSTG A 0 A_PlaySound("Pump/fire")
    XSTG A 7 A_GunFlash
    XSTG B 4
    XSTG C 3 A_PlaySound("Pump/cock")
	TNTT A 0 A_FireCustomMissile("ShellCasingSpawner",0,0,10,2)
    XSTG DE 4
    XSTG F 2
    XSTG A 0 A_JumpIfNoAmmo("Reload")
    XSTG A 6 A_ReFire
    XSTG A 0 A_JumpIfNoAmmo("Reload")
    Goto Ready  
  Fire_doubletapdeadshot:
    XSTG A 0 A_JumpIfInventory("IsReloading",1,"Reload")  
    XSTG A 0 A_JumpIfNoAmmo("Reload")
    XSTG A 1
    XSTG A 0 A_FireBullets (3, 2.3, 8, random(450,450), "BulletPuff")
    XSTG A 0 A_PlaySound("Pump/fire")
    XSTG A 4 A_GunFlash
    XSTG B 2
    XSTG C 1 A_PlaySound("Pump/cock")
	TNTT A 0 A_FireCustomMissile("ShellCasingSpawner",0,0,10,2)
    XSTG DE 2
    XSTG F 1
    XSTG A 0 A_JumpIfNoAmmo("Reload")
    XSTG A 6 A_ReFire
    XSTG A 0 A_JumpIfNoAmmo("Reload")
    Goto Ready 
  Fire_doubletap:
    XSTG A 0 A_JumpIfInventory("IsReloading",1,"Reload")  
    XSTG A 0 A_JumpIfNoAmmo("Reload")
    XSTG A 1
    XSTG A 0 A_FireBullets (5.6, 5.6, 8, random(450,450), "BulletPuff")
    XSTG A 0 A_PlaySound("Pump/fire")
    XSTG A 4 A_GunFlash
    XSTG B 2
    XSTG C 1 A_PlaySound("Pump/cock")
	TNTT A 0 A_FireCustomMissile("ShellCasingSpawner",0,0,10,2)
    XSTG DE 2
    XSTG F 1
    XSTG A 0 A_JumpIfNoAmmo("Reload")
    XSTG A 6 A_ReFire
    XSTG A 0 A_JumpIfNoAmmo("Reload")
    Goto Ready 
  Reload:
	XSTG A 0 A_TakeInventory("IsReloading",1)
    XSTG A 0 A_jumpifinventory("SpeedCola",1,"Reload_speed")
	XSTG A 0 A_jumpifInventory("PumpClip",4,"Reloaddone")
    XSTG A 0 A_JumpIfInventory("Pumpammo", 1, 1)
	goto Ready+1
    XSTG F 2
    XSTR ABCD 2
	goto reloadworking
  Reloadworking:
    XSTR EFGHIJ 2
	XSTR K 0 A_playsound("Pump/LOAD")
	XSTR K 0 A_GiveInventory("PumpClip",1)
	XSTR K 0 A_TakeInventory("Pumpammo",1)
	XSTR KLM 2 A_weaponready(WRF_NOBOB)
	XSTR M 0 A_jumpifInventory("PumpClip",4,"ReloadDone")
	XSTR M 0 A_JumpIfInventory("Pumpammo", 1, "Reloadworking")
	Goto Reloaddone
  Reloaddone:
    XSTR EDCBA 2
	XSTG C 0 A_PlaySound("Pump/cock")
	XSTG CDEF 2
	goto ready
  Reload_speed:
	XSTG A 0 A_TakeInventory("IsReloading",1)
	XSTG A 0 A_jumpifInventory("PumpClip",4,"Reloaddone")
    XSTG A 0 A_JumpIfInventory("Pumpammo", 1, 1)
	goto Ready+1
    XSTG F 1
    XSTR ABCD 1
	goto reloadworking_speed
  Reloadworking_speed:
    XSTR EFGHIJ 1
	XSTR K 0 A_playsound("Pump/LOAD")
	XSTR K 0 A_GiveInventory("PumpClip",1)
	XSTR K 0 A_TakeInventory("Pumpammo",1)
	XSTR KLM 1  A_weaponready(WRF_NOBOB)
	XSTR M 0 A_jumpifInventory("PumpClip",4,"ReloadDone_speed")
	XSTR M 0 A_JumpIfInventory("Pumpammo", 1, "Reloadworking_speed")
	Goto Reloaddone_speed
  Reloaddone_speed:
    XSTR EDCBA 1
	XSTG C 0 A_PlaySound("Pump/cock")
	XSTG CDEF 1
	goto ready
  Flash:
    XSTG A 0 A_jumpifinventory("doubletap",1,"Flash_doubletap")
    XSTF A 4 bright A_Light1
    XSTF B 3 bright A_Light2
    XSTF B 0 bright A_Light0
    stop  
  Flash_doubletap:
    XSTF A 2 bright A_Light1
    XSTF B 2 bright A_Light2
    XSTF B 0 bright A_Light0
    stop
  ThrowGrenade:
     HNDG BCD 1
     HNDG E 1 A_PlaySound("weapons/grenadepin")
     HNDG FGHH 1
     HNDG I 1 A_PlaySound("weapons/grenadethr") 
     HNDG J 0 A_FireCustomMissile("ThrownGrenade",0,0,0,0)
     HNDG J 0 A_PlaySound("weapons/grenadethr")
     HNDG JKLMNOPQ 1
     HNDG Q 0 A_TakeInventory("thrownade")
     Goto Ready
  Useknife:
     KNFG A 0 A_jumpifinventory("Machete",1,"UseMachete")
     KNFG ABC 2
	 KNFG C 0 A_CustomPunch (110,1,0,"KnifePuff")
	 KNFG DEF 2
	 KNFG F 0 A_TakeInventory("Kinfeammo")
	 goto ready
  UseMachete:
     MHT4 ABC 2
	 MHT4 C 0 A_CustomPunch (450,1,0,"Machetepuff")
	 MHT4 DEFG 2
	 MHT4 G 0 A_TakeInventory("Kinfeammo")
	 goto ready
  Spawn:
    XSOT A -1
    stop
  Spawn:
    SADA A -1
    Stop
  }
}

actor PumpClip : Ammo
{
    inventory.icon "CLIPA0"
    inventory.amount 0
    inventory.maxamount 4
    ammo.backpackamount 0
    ammo.backpackmaxamount 4
    +IGNORESKILL
}


actor PumpAmmo : Ammo
{
    inventory.icon "CLIPA0"
    inventory.amount 4
    inventory.maxamount 68
    ammo.backpackamount 4
    ammo.backpackmaxamount 68
    +IGNORESKILL
    inventory.pickupmessage "Got Shotgun Shells!!"  
    States
    {
    Spawn:
      CLIP A -1
      Stop
    }
}

actor PAPPumpActionShotgun : Weapon
{
  Game Doom
  Weapon.SelectionOrder 1800
  weapon.ammotype "PAPPumpClip"
  weapon.ammouse 1
  weapon.ammogive2 999
  weapon.ammogive1 999
  weapon.ammotype2 "PAPPumpAmmo"
  Inventory.PickupMessage "You got The Pump Action Shotgun!!"
  Obituary "$OB_MPSHOTGUN" // "%o chewed on %k's boomstick."
  States
  {
  Ready:
	XSTG A 0 A_JumpIfInventory("thrownade",1,"ThrowGrenade")
    XSTG A 0 A_JumpIfInventory("IsReloading",1,"Reload")  
	XSTG A 0 A_JumpIfInventory("Kinfeammo",1,"UseKnife") 	
    XSTG A 1 A_WeaponReady
    Loop
  Deselect: 
    XSTG A 0 A_Lower
    XSTG A 0 A_Lower
    XSTG A 1 A_Lower
    loop
  Select:
    XSTG A 0 A_Raise
    XSTG A 0 A_Raise
    XSTG A 1 A_Raise
    loop
  Fire:
    XSTG A 0 A_JumpIfInventory("IsReloading",1,"Reload") 
    XSTG A 0 A_jumpifinventory("deadshot",1,"Fire_deadshot") 
    XSTG A 0 A_jumpifinventory("doubletap",1,"Fire_doubletap") 
    XSTG A 0 A_JumpIfNoAmmo("Reload")
    XSTG A 3
    XSTG A 0 A_FireBullets (3, 3, 12, random(450,450), "BulletPuff")
    XSTG A 0 A_PlaySound("Pump/fire")
    XSTG A 7 A_GunFlash
    XSTG B 4
    XSTG C 3 A_PlaySound("Pump/cock")
	TNTT A 0 A_FireCustomMissile("ShellCasingSpawner",0,0,10,2)
    XSTG DE 4
    XSTG F 2
    XSTG A 0 A_JumpIfNoAmmo("Reload")
    XSTG A 6 A_ReFire
    XSTG A 0 A_JumpIfNoAmmo("Reload")
    Goto Ready  
  Fire_deadshot:
    XSTG A 0 A_JumpIfInventory("IsReloading",1,"Reload") 
    XSTG A 0 A_jumpifinventory("doubletap",1,"Fire_doubletapdeadshot") 
    XSTG A 0 A_JumpIfNoAmmo("Reload")
    XSTG A 3
    XSTG A 0 A_FireBullets (1.2, 2.3, 12, random(450,450), "BulletPuff")
    XSTG A 0 A_PlaySound("Pump/fire")
    XSTG A 7 A_GunFlash
    XSTG B 4
    XSTG C 3 A_PlaySound("Pump/cock")
	TNTT A 0 A_FireCustomMissile("ShellCasingSpawner",0,0,10,2)
    XSTG DE 4
    XSTG F 2
    XSTG A 0 A_JumpIfNoAmmo("Reload")
    XSTG A 6 A_ReFire
    XSTG A 0 A_JumpIfNoAmmo("Reload")
    Goto Ready   
  Fire_doubletapdeadshot:
    XSTG A 0 A_JumpIfInventory("IsReloading",1,"Reload")  
    XSTG A 0 A_JumpIfNoAmmo("Reload")
    XSTG A 1
    XSTG A 0 A_FireBullets (1.2, 2.3, 12, random(450,450), "BulletPuff")
    XSTG A 0 A_PlaySound("Pump/fire")
    XSTG A 4 A_GunFlash
    XSTG B 2
    XSTG C 1 A_PlaySound("Pump/cock")
	TNTT A 0 A_FireCustomMissile("ShellCasingSpawner",0,0,10,2)
    XSTG DE 2
    XSTG F 1
    XSTG A 0 A_JumpIfNoAmmo("Reload")
    XSTG A 6 A_ReFire
    XSTG A 0 A_JumpIfNoAmmo("Reload")
    Goto Ready 
  Fire_doubletap:
    XSTG A 0 A_JumpIfInventory("IsReloading",1,"Reload")  
    XSTG A 0 A_JumpIfNoAmmo("Reload")
    XSTG A 1
    XSTG A 0 A_FireBullets (3, 3, 12, random(450,450), "BulletPuff")
    XSTG A 0 A_PlaySound("Pump/fire")
    XSTG A 4 A_GunFlash
    XSTG B 2
    XSTG C 1 A_PlaySound("Pump/cock")
	TNTT A 0 A_FireCustomMissile("ShellCasingSpawner",0,0,10,2)
    XSTG DE 2
    XSTG F 1
    XSTG A 0 A_JumpIfNoAmmo("Reload")
    XSTG A 6 A_ReFire
    XSTG A 0 A_JumpIfNoAmmo("Reload")
    Goto Ready 
  Reload:
	XSTG A 0 A_TakeInventory("IsReloading",1)
    XSTG A 0 A_jumpifinventory("SpeedCola",1,"Reload_speed")
	XSTG A 0 A_jumpifInventory("PAPPumpClip",4,"Reloaddone")
    XSTG A 0 A_JumpIfInventory("PAPPumpammo", 1, 1)
	goto Ready+1
    XSTG F 2
    XSTR ABCD 2
	goto reloadworking
  Reloadworking:
    XSTR EFGHIJ 2
	XSTR K 0 A_playsound("Pump/LOAD")
	XSTR K 0 A_GiveInventory("PAPPumpClip",1)
	XSTR K 0 A_TakeInventory("PAPPumpammo",1)
	XSTR KLM 2 A_weaponready(WRF_NOBOB)
	XSTR M 0 A_jumpifInventory("PAPPumpClip",4,"ReloadDone")
	XSTR M 0 A_JumpIfInventory("PAPPumpammo", 1, "Reloadworking")
	Goto Reloaddone
  Reloaddone:
    XSTR EDCBA 2
	XSTG C 0 A_PlaySound("Pump/cock")
	XSTG CDEF 2
	goto ready
  Reload_speed:
	XSTG A 0 A_TakeInventory("IsReloading",1)
	XSTG A 0 A_jumpifInventory("PAPPumpClip",4,"Reloaddone")
    XSTG A 0 A_JumpIfInventory("PAPPumpammo", 1, 1)
	goto Ready+1
    XSTG F 1
    XSTR ABCD 1
	goto reloadworking_speed
  Reloadworking_speed:
    XSTR EFGHIJ 1
	XSTR K 0 A_playsound("Pump/LOAD")
	XSTR K 0 A_GiveInventory("PAPPumpClip",1)
	XSTR K 0 A_TakeInventory("PAPPumpammo",1)
	XSTR KLM 1 A_weaponready(WRF_NOBOB)
	XSTR M 0 A_jumpifInventory("PAPPumpClip",4,"ReloadDone_speed")
	XSTR M 0 A_JumpIfInventory("PAPPumpammo", 1, "Reloadworking_speed")
	Goto Reloaddone_speed
  Reloaddone_speed:
    XSTR EDCBA 1
	XSTG C 0 A_PlaySound("Pump/cock")
	XSTG CDEF 1
	goto ready
  Flash:
    XSTG A 0 A_jumpifinventory("doubletap",1,"Flash_doubletap")
    XSTF A 4 bright A_Light1
    XSTF B 3 bright A_Light2
    XSTF B 0 bright A_Light0
    stop  
  Flash_doubletap:
    XSTF A 2 bright A_Light1
    XSTF B 2 bright A_Light2
    XSTF B 0 bright A_Light0
    stop
  ThrowGrenade:
     HNDG BCD 1
     HNDG E 1 A_PlaySound("weapons/grenadepin")
     HNDG FGHH 1
     HNDG I 1 A_PlaySound("weapons/grenadethr") 
     HNDG J 0 A_FireCustomMissile("ThrownGrenade",0,0,0,0)
     HNDG J 0 A_PlaySound("weapons/grenadethr")
     HNDG JKLMNOPQ 1
     HNDG Q 0 A_TakeInventory("thrownade")
     Goto Ready
  Useknife:
     KNFG A 0 A_jumpifinventory("Machete",1,"UseMachete")
     KNFG ABC 2
	 KNFG C 0 A_CustomPunch (110,1,0,"KnifePuff")
	 KNFG DEF 2
	 KNFG F 0 A_TakeInventory("Kinfeammo")
	 goto ready
  UseMachete:
     MHT4 ABC 2
	 MHT4 C 0 A_CustomPunch (450,1,0,"Machetepuff")
	 MHT4 DEFG 2
	 MHT4 G 0 A_TakeInventory("Kinfeammo")
	 goto ready
  Spawn:
    XSOT A -1
    stop
  Spawn:
    SADA A -1
    Stop
  }
}

actor PAPPumpClip : Ammo
{
    inventory.icon "CLIPA0"
    inventory.amount 0
    inventory.maxamount 4
    ammo.backpackamount 0
    ammo.backpackmaxamount 4
    +IGNORESKILL
}


actor PAPPumpAmmo : Ammo
{
    inventory.icon "CLIPA0"
    inventory.amount 4
    inventory.maxamount 136
    ammo.backpackamount 4
    ammo.backpackmaxamount 136
    +IGNORESKILL
    inventory.pickupmessage "Got Shotgun Shells!!"  
    States
    {
    Spawn:
      CLIP A -1
      Stop
    }
}