/*
CREDITS:
Revolvers, Pump-action, Cannon - Croteam (Serious Sam SE)
Lever-action - Ubisoft (Will Rock)
Machinegun - ID (Quake 3 Team Arena)

CRT Throw - Dasboschitt
Rocket propelled chainsaw sprite rotations by UBXMaster, methinks
Rocket Armchair - Captain Toenail
Concret Donkey - Team17

Sounds:
CRT Impact, HAAAAAAX - Valve (Half-Life 2)
CRT Fling - ID (Wolf:ET, Mortar round oncoming)
Chainsaw - ID (Doom 3)
Miztaegg\Generic Sounds from the 70s - Magnum
*/

ACTOR Shooter : Weapon
{
   Tag "Melee"
   Inventory.PickupSound "misc/w_pkup"
   Inventory.PickupMessage "You are the Shooter, and you are shooting!... with fists?! (1)"
   Obituary "%o was humiliated by %k's handshot."
   Weapon.UpSound "weapons/fistup2"
   Weapon.SelectionOrder 8
   Weapon.SlotNumber 1
   Weapon.Kickback 150
   AttackSound ""
   Weapon.BobStyle InverseSmooth
   Weapon.BobSpeed 1.8
   Weapon.BobRangeY 0.6
   Weapon.BobRangeX 1.2
   +NOALERT
   +WEAPON.CHEATNOTWEAPON
   States
   {
   Spawn:
      TNT1 A -1
      Loop
   Ready:
      FISR ABCDEF 1 A_WeaponReady
      FISR F 1 A_WeaponReady
      FISR FEDCBA 1 A_WeaponReady

      FISR GHIJK 1 A_WeaponReady
      FISR K 1 A_WeaponReady
      FISR KJIHG 1 A_WeaponReady
      Loop
   Deselect:
      //TNT1 A 0 ACS_NamedTerminate("ComboControl")
	  FISR A 0 A_TakeInventory("RevolverCounter",6)
   Madre:
      FISR A 0 A_ZoomFactor(1)
      FISR A 1 A_Lower
      FISR A 0 A_Lower
      FISR A 0 A_Lower
      Loop
   Select:
      TNT1 A 0 ACS_NamedExecuteAlways("ComboControl",0,1)
	  TNT1 A 0 ACS_NamedExecuteAlways("RO Combo Display",0,1)
   Puta:
      TNT1 AAAAAAAAAAAAAA 0 A_Raise
      FISU EDCBA 1
      FISR A 1 A_Raise
      Loop
   Fire:
      FISU ABCDE 1
      TNT1 A 6
      TNT1 A 0 A_ReFire
      Goto PunchShotgun
   Retirement:
      TNT1 A 3
      FISU EDCBA 1
      Goto Ready
   Hold:
      TNT1 A 0 A_JumpIfInventory("RevolverTrigger",1,"Revolver") //Made specifically to unrustle Zhs2's jimmies!
      TNT1 A 0 A_JumpIfInventory("MGTrigger",1,"Machinegun")
      TNT1 A 0 A_JumpIfInventory("CannonTrigger",1,"Cannon")
      TNT1 A 0 A_JumpIfInventory("ComboMode",1,"Randomness1")
      TNT1 A 0 A_ReFire("Pistols")
      TNT1 A 3
      FISU EDCBA 1
      Goto Ready
   Pistols:
      TNT1 A 0 A_Jump(256,"Punch9","Punch0")
	  Goto Hold
   Revolver:
	  FISR A 0 A_TakeInventory("RevolverTrigger",1)
      PISH ABCDEFGHIJKLM 1
   RevolverLoop:
      PISV A 1
      TNT1 A 0 A_GunFlash
      TNT1 A 0 A_AlertMonsters
      TNT1 A 0 A_GiveInventory("RevolverCounter",1)
      TNT1 A 0 A_GiveInventory("BooletCasing")

      TNT1 A 0 A_Recoil(3)
      TNT1 A 0 A_PlaySound("Weapons/FistMagnum",1,0.6)
      TNT1 A 0 A_JumpIfInventory("CaliberUpgrade",1,2)
      TNT1 A 0 A_Jump(256,"RegularFire")
      TNT1 A 0 A_PlaySound("Weapons/WolgirHEndFire",6)
      TNT1 AAAA 0 A_FireBullets(0,0,1,40,"InvisPuff",0)
      TNT1 A 0 A_FireBullets(0,0,1,40,"CaliberPuff",0)
      Goto RevolverMain
   RegularFire:
      TNT1 AAAA 0 A_FireBullets(0,0,1,20,"InvisPuff",0)
      TNT1 A 0 A_FireBullets(0,0,1,20,"BulletPuff",0)
   RevolverMain:
      TNT1 A 0 A_SetAngle(Angle-1)
      TNT1 A 0 A_SetPitch(Pitch-3)
      PISV A 1 Bright A_ZoomFactor(0.97)
      PISV B 1 Bright A_ZoomFactor(0.985)
      PISV C 1 A_ZoomFactor(0.99)
      PISV D 1 A_ZoomFactor(0.9925)
      PISV E 1 A_ZoomFactor(0.995)
	  PISV F 1 A_ZoomFactor(0.9975)
	  PISV G 1 A_ZoomFactor(1)
	  PISV G 0 A_JumpIfInventory("RevolverCounter",6,2) 
	  PISV G 0 A_ReFire("RevolverLoopContinue")
	  PISV G 0 A_TakeInventory("RevolverCounter",6)
	  PISV MN 1
	  TNT1 A 2
      Goto Retirement
   RevolverLoopContinue:
	  PISV HIJKL 1
	  Goto RevolverLoop

	  
   Randomness1:
      TNT1 A 0 A_Jump(16,"Machinegun","Cannon","Revolver")
	  Goto Pistols
   Punch9:
      FIS9 ABCDD 1

      TNT1 A 0 A_GunFlash
      TNT1 A 0 A_AlertMonsters
      TNT1 A 0 A_GiveInventory("BooletCasing")
      TNT1 A 0 A_JumpIfInventory("CaliberUpgrade",1,"CPunch9")
      TNT1 A 0 A_Recoil(0.75)
      TNT1 A 0 A_PlaySoundEx("Weapons/FistPistol","SoundSlot5")
      TNT1 A 0 A_FireBullets(0,0,1,25,"BulletPuff",0,1536)
      TNT1 A 0 ACS_Execute(851,0,10+random(2,-2),5+random(2,-2),0)

      FIS9 E 1 Bright A_ZoomFactor(0.99)
      FIS9 F 1 Bright A_ZoomFactor(0.995)
      FIS9 G 1 A_ZoomFactor(0.9975)
      FIS9 H 1 A_ZoomFactor(1)
      TNT1 A 0 A_ReFire("Pistols")
      Goto Retirement

      FIS9 ABCDD 1
   CPunch9:
      TNT1 A 0 A_Recoil(0.9)
      TNT1 A 0 A_PlaySoundEx("Weapons/FistPistol","SoundSlot5")
      TNT1 A 0 A_PlaySoundEx("weapons/wolgirHendfire","SoundSlot6")
      TNT1 A 0 A_FireBullets(0,0,1,50,"CaliberPuff",0,1536)
      TNT1 A 0 ACS_Execute(851,0,10+random(2,-2),5+random(2,-2),0)

      FIS9 E 1 Bright A_ZoomFactor(0.99)
      FIS9 F 1 Bright A_ZoomFactor(0.995)
      FIS9 G 1 A_ZoomFactor(0.9975)
      FIS9 H 1 A_ZoomFactor(1)
      TNT1 A 0 A_ReFire("Pistols")
      Goto Retirement
   Punch0:
      FIS0 ABCDD 1

      TNT1 A 0 A_GunFlash
      TNT1 A 0 A_AlertMonsters
      TNT1 A 0 A_GiveInventory("BooletCasing")
      TNT1 A 0 A_JumpIfInventory("CaliberUpgrade",1,"CPunch0")
      TNT1 A 0 A_Recoil(0.75)
      TNT1 A 0 A_PlaySoundEx("Weapons/FistPistol","SoundSlot5")
      TNT1 A 0 A_FireBullets(0,0,1,25,"BulletPuff",0,1536)
      TNT1 A 0 ACS_Execute(851,0,10+random(2,-2),-5+random(2,-2),0)

      FIS0 E 1 Bright A_ZoomFactor(0.99)
      FIS0 F 1 Bright A_ZoomFactor(0.995)
      FIS0 G 1 A_ZoomFactor(0.9975)
      FIS0 H 1 A_ZoomFactor(1)
      TNT1 A 0 A_ReFire("Pistols")
      Goto Retirement
   CPunch0:
      TNT1 A 0 A_Recoil(0.9)
      TNT1 A 0 A_PlaySoundEx("Weapons/FistPistol","SoundSlot5")
      TNT1 A 0 A_PlaySoundEx("weapons/wolgirHendfire","SoundSlot6")
      TNT1 A 0 A_FireBullets(0,0,1,50,"CaliberPuff",0,1536)
      TNT1 A 0 ACS_Execute(851,0,10+random(2,-2),-5+random(2,-2),0)

      FIS0 E 1 Bright A_ZoomFactor(0.99)
      FIS0 F 1 Bright A_ZoomFactor(0.995)
      FIS0 G 1 A_ZoomFactor(0.9975)
      FIS0 H 1 A_ZoomFactor(1)
      TNT1 A 0 A_ReFire("Pistols")
      Goto Retirement
   Machinegun:
      TNT1 A 0 A_TakeInventory("MGTrigger",1)
      MGFS ABCDEF 1

      TNT1 A 0 A_JumpIfInventory("CaliberUpgrade",1,"CMachinegun")
      TNT1 A 0 A_Recoil(0.5)
      TNT1 A 0 A_GiveInventory("BooletCasing")
      TNT1 A 0 A_PlaySound("Weapons/Fistmachinegun",5)
      TNT1 A 0 A_FireBullets(8+random(1,-1),random(1,-1),1,25,"BulletPuff",FBF_EXPLICITANGLE,1536)
      TNT1 A 0 ACS_Execute(851,0,10+random(2,-2),-5+random(2,-2),0)
      MGFS G 1 Bright A_ZoomFactor(0.97)
      MGFS H 1 Bright A_ZoomFactor(0.98)
      MGFS I 1 A_ZoomFactor(0.99)


      TNT1 A 0 A_Recoil(0.5)
      TNT1 A 0 A_GiveInventory("BooletCasing")
      TNT1 A 0 A_PlaySound("Weapons/FistMachinegun",5)
      TNT1 A 0 A_FireBullets(6+random(1,-1),random(1,-1),1,25,"BulletPuff",FBF_EXPLICITANGLE,1536)
      TNT1 A 0 ACS_Execute(851,0,10+random(2,-2),-5+random(2,-2),0)
      MGFS J 1 A_ZoomFactor(0.97)
      MGFS K 1 Bright A_ZoomFactor(0.98)
      MGFS L 1 Bright A_ZoomFactor(0.99)

      TNT1 A 0 A_Recoil(0.5)
      TNT1 A 0 A_GiveInventory("BooletCasing")
      TNT1 A 0 A_PlaySound("Weapons/FistMachinegun",5)
      TNT1 A 0 A_FireBullets(4+random(1,-1),random(1,-1),1,25,"BulletPuff",FBF_EXPLICITANGLE,1536)
      TNT1 A 0 ACS_Execute(851,0,10+random(2,-2),-5+random(2,-2),0)
      MGFS M 1 A_ZoomFactor(0.97)
      MGFS N 1 Bright A_ZoomFactor(0.98)
      MGFS O 1 Bright A_ZoomFactor(0.99)

      TNT1 A 0 A_Recoil(0.5)
	  TNT1 A 0 A_GiveInventory("BooletCasing")
      TNT1 A 0 A_PlaySound("Weapons/FistMachinegun",5)
      TNT1 A 0 A_FireBullets(2+random(1,-1),random(1,-1),1,25,"BulletPuff",FBF_EXPLICITANGLE,1536)
      TNT1 A 0 ACS_Execute(851,0,10+random(2,-2),-5+random(2,-2),0)
      MGFS P 1 A_ZoomFactor(0.97)
      MGFS Q 1 Bright A_ZoomFactor(0.98)
      MGFS R 1 Bright A_ZoomFactor(0.99)

      TNT1 A 0 A_Recoil(0.5)
	  TNT1 A 0 A_GiveInventory("BooletCasing")
      TNT1 A 0 A_PlaySound("Weapons/FistMachinegun",5)
      TNT1 A 0 A_FireBullets(random(1,-1),random(1,-1),1,25,"BulletPuff",FBF_EXPLICITANGLE,1536)
      TNT1 A 0 ACS_Execute(851,0,10+random(2,-2),-5+random(2,-2),0)
      MGFS S 1 A_ZoomFactor(0.97)
      MGFS T 1 Bright A_ZoomFactor(0.98)
      MGFS U 1 Bright A_ZoomFactor(0.99)

      TNT1 A 0 A_Recoil(0.5)
	  TNT1 A 0 A_GiveInventory("BooletCasing")
      TNT1 A 0 A_PlaySound("Weapons/FistMachinegun",5)
      TNT1 A 0 A_FireBullets(-2+random(1,-1),random(1,-1),1,25,"BulletPuff",FBF_EXPLICITANGLE,1536)
      TNT1 A 0 ACS_Execute(851,0,10+random(2,-2),-5+random(2,-2),0)
      MGFS V 1 A_ZoomFactor(0.97)
      MGFS W 1 Bright A_ZoomFactor(0.98)
      MGFS X 1 Bright A_ZoomFactor(0.99)

      TNT1 A 0 A_Recoil(0.5)
	  TNT1 A 0 A_GiveInventory("BooletCasing")
      TNT1 A 0 A_PlaySound("Weapons/FistMachinegun",5)
      TNT1 A 0 A_FireBullets(-4+random(1,-1),random(1,-1),1,25,"BulletPuff",FBF_EXPLICITANGLE,1536)
      TNT1 A 0 ACS_Execute(851,0,10+random(2,-2),-5+random(2,-2),0)
      MGFS Y 1 A_ZoomFactor(0.97)
      MGFS Z 1 Bright A_ZoomFactor(0.98)
      MGF2 A 1 Bright A_ZoomFactor(0.99)

      TNT1 A 0 A_Recoil(0.5)
	  TNT1 A 0 A_GiveInventory("BooletCasing")
      TNT1 A 0 A_PlaySound("Weapons/FistMachinegun",5)
      TNT1 A 0 A_FireBullets(-6+random(1,-1),random(1,-1),1,25,"BulletPuff",FBF_EXPLICITANGLE,1536)
      TNT1 A 0 ACS_Execute(851,0,10+random(2,-2),-5+random(2,-2),0)
      MGF2 B 1 A_ZoomFactor(0.97)
      MGF2 C 1 Bright A_ZoomFactor(0.98)
      MGF2 D 1 Bright A_ZoomFactor(0.99)

      TNT1 A 0 A_Recoil(0.5)
	  TNT1 A 0 A_GiveInventory("BooletCasing")
      TNT1 A 0 A_PlaySound("Weapons/FistMachinegun",6)
      TNT1 A 0 A_FireBullets(-8+random(1,-1),random(1,-1),1,25,"BulletPuff",FBF_EXPLICITANGLE,1536)
      TNT1 A 0 ACS_Execute(851,0,10+random(2,-2),-5+random(2,-2),0)
      MGF2 E 1 A_ZoomFactor(0.97)
      MGF2 F 1 Bright A_ZoomFactor(0.98)
      MGF2 G 1 Bright A_ZoomFactor(0.99)

      TNT1 A 1 A_ZoomFactor(1)
      TNT1 A 0 A_ReFire
      Goto Retirement
   CMachinegun:
      TNT1 A 0 A_Recoil(0.5)
      TNT1 A 0 A_PlaySound("Weapons/FistMachinegun",5)
      TNT1 A 0 A_PlaySound("weapons/wolgirHendfire",6)
      TNT1 A 0 A_FireBullets(8+random(1,-1),random(1,-1),1,50,"CaliberPuff",FBF_EXPLICITANGLE,1536)
      TNT1 A 0 ACS_Execute(851,0,10+random(2,-2),-5+random(2,-2),0)
      MGFS G 1 Bright A_ZoomFactor(0.97)
      MGFS H 1 Bright A_ZoomFactor(0.98)
      MGFS I 1 A_ZoomFactor(0.99)


      TNT1 A 0 A_Recoil(0.5)
	  TNT1 A 0 A_GiveInventory("BooletCasing")
      TNT1 A 0 A_PlaySound("Weapons/FistMachinegun",5)
      TNT1 A 0 A_PlaySound("weapons/wolgirHendfire",6)
      TNT1 A 0 A_FireBullets(6+random(1,-1),random(1,-1),1,50,"CaliberPuff",FBF_EXPLICITANGLE,1536)
      TNT1 A 0 ACS_Execute(851,0,10+random(2,-2),-5+random(2,-2),0)
      MGFS J 1 A_ZoomFactor(0.97)
      MGFS K 1 Bright A_ZoomFactor(0.98)
      MGFS L 1 Bright A_ZoomFactor(0.99)

      TNT1 A 0 A_Recoil(0.5)
	  TNT1 A 0 A_GiveInventory("BooletCasing")
      TNT1 A 0 A_PlaySound("Weapons/FistMachinegun",5)
      TNT1 A 0 A_PlaySound("weapons/wolgirHendfire",6)
      TNT1 A 0 A_FireBullets(4+random(1,-1),random(1,-1),1,50,"CaliberPuff",FBF_EXPLICITANGLE,1536)
      TNT1 A 0 ACS_Execute(851,0,10+random(2,-2),-5+random(2,-2),0)
      MGFS M 1 A_ZoomFactor(0.97)
      MGFS N 1 Bright A_ZoomFactor(0.98)
      MGFS O 1 Bright A_ZoomFactor(0.99)

      TNT1 A 0 A_Recoil(0.5)
	  TNT1 A 0 A_GiveInventory("BooletCasing")
      TNT1 A 0 A_PlaySound("Weapons/FistMachinegun",5)
      TNT1 A 0 A_PlaySound("weapons/wolgirHendfire",6)
      TNT1 A 0 A_FireBullets(2+random(1,-1),random(1,-1),1,50,"CaliberPuff",FBF_EXPLICITANGLE,1536)
      TNT1 A 0 ACS_Execute(851,0,10+random(2,-2),-5+random(2,-2),0)
      MGFS P 1 A_ZoomFactor(0.97)
      MGFS Q 1 Bright A_ZoomFactor(0.98)
      MGFS R 1 Bright A_ZoomFactor(0.99)

      TNT1 A 0 A_Recoil(0.5)
	  TNT1 A 0 A_GiveInventory("BooletCasing")
      TNT1 A 0 A_PlaySound("Weapons/FistMachinegun",5)
      TNT1 A 0 A_PlaySound("weapons/wolgirHendfire",6)
      TNT1 A 0 A_FireBullets(random(1,-1),random(1,-1),1,50,"CaliberPuff",FBF_EXPLICITANGLE,1536)
      TNT1 A 0 ACS_Execute(851,0,10+random(2,-2),-5+random(2,-2),0)
      MGFS S 1 A_ZoomFactor(0.97)
      MGFS T 1 Bright A_ZoomFactor(0.98)
      MGFS U 1 Bright A_ZoomFactor(0.99)

      TNT1 A 0 A_Recoil(0.5)
	  TNT1 A 0 A_GiveInventory("BooletCasing")
      TNT1 A 0 A_PlaySound("Weapons/FistMachinegun",5)
      TNT1 A 0 A_PlaySound("weapons/wolgirHendfire",6)
      TNT1 A 0 A_FireBullets(-2+random(1,-1),random(1,-1),1,50,"CaliberPuff",FBF_EXPLICITANGLE,1536)
      TNT1 A 0 ACS_Execute(851,0,10+random(2,-2),-5+random(2,-2),0)
      MGFS V 1 A_ZoomFactor(0.97)
      MGFS W 1 Bright A_ZoomFactor(0.98)
      MGFS X 1 Bright A_ZoomFactor(0.99)

      TNT1 A 0 A_Recoil(0.5)
	  TNT1 A 0 A_GiveInventory("BooletCasing")
      TNT1 A 0 A_PlaySound("Weapons/FistMachinegun",5)
      TNT1 A 0 A_PlaySound("weapons/wolgirHendfire",6)
      TNT1 A 0 A_FireBullets(-4+random(1,-1),random(1,-1),1,50,"CaliberPuff",FBF_EXPLICITANGLE,1536)
      TNT1 A 0 ACS_Execute(851,0,10+random(2,-2),-5+random(2,-2),0)
      MGFS Y 1 A_ZoomFactor(0.97)
      MGFS Z 1 Bright A_ZoomFactor(0.98)
      MGF2 A 1 Bright A_ZoomFactor(0.99)

      TNT1 A 0 A_Recoil(0.5)
	  TNT1 A 0 A_GiveInventory("BooletCasing")
      TNT1 A 0 A_PlaySound("Weapons/FistMachinegun",5)
      TNT1 A 0 A_PlaySound("weapons/wolgirHendfire",6)
      TNT1 A 0 A_FireBullets(-6+random(1,-1),random(1,-1),1,50,"CaliberPuff",FBF_EXPLICITANGLE,1536)
      TNT1 A 0 ACS_Execute(851,0,10+random(2,-2),-5+random(2,-2),0)
      MGF2 B 1 A_ZoomFactor(0.97)
      MGF2 C 1 Bright A_ZoomFactor(0.98)
      MGF2 D 1 Bright A_ZoomFactor(0.99)

      TNT1 A 0 A_Recoil(0.5)
	  TNT1 A 0 A_GiveInventory("BooletCasing")
      TNT1 A 0 A_PlaySound("Weapons/FistMachinegun",5)
      TNT1 A 0 A_PlaySound("weapons/wolgirHendfire",6)
      TNT1 A 0 A_FireBullets(-8+random(1,-1),random(1,-1),1,50,"CaliberPuff",FBF_EXPLICITANGLE,1536)
      TNT1 A 0 ACS_Execute(851,0,10+random(2,-2),-5+random(2,-2),0)
      MGF2 E 1 Bright A_ZoomFactor(0.97)
      MGF2 F 1 Bright A_ZoomFactor(0.98)
      TNT1 A 1 A_ZoomFactor(0.99)

      TNT1 A 1 A_ZoomFactor(1)
      TNT1 A 0 A_ReFire
      Goto Retirement
   PunchShotgun:
      FISS QRSTUVW 1
      FISS A 2
   Shotguning:
      FISF A 0 A_Jump(128,"Winchester")
      FISF A 1 Bright A_ZoomFactor(0.97)
      FISF B 1 Bright A_ZoomFactor(0.98)
      TNT1 A 0 A_GunFlash
      TNT1 A 0 A_AlertMonsters
      TNT1 A 0 A_Recoil(8)
	  TNT1 A 0 A_GiveInventory("ErasusCasing")
      TNT1 A 0 ACS_Execute(851,0,30+random(5,-5),0,0)
      TNT1 A 0 A_PlayWeaponSound("Weapons/fistshotgun")
      ERAF A 0 A_JumpIfInventory("QuadUpgrade",1,"ShotgunQuadFire")
      TNT1 A 0 A_FireBullets(14.5, 2.75, 30, 12, "BulletPuff",0,768)
      Goto Refraction
   ShotgunQuadFire:
      ERAF A 0 A_SetBlend("Blue",0.05,12)
      ERAF A 0 A_PlaySoundEx("Weapons/QuadShot","SoundSlot5")
      ERAF A 0 A_FireBullets(14.5, 2.75, 30, 24, "BulletPuff",0,768)
   Refraction:
      FISS C 1 A_ZoomFactor(0.985)
      FISS D 1 A_ZoomFactor(0.99)
      FISS E 1 A_ZoomFactor(0.995)
      FISS D 1 A_ZoomFactor(1)
      FISS C 1

      FISS A 1
      FISS FGHIJK 1

      //Pump
      FISS LMNOPPONML 1
      FISS KJIHGF 1

      FISS A 2
      TNT1 A 1 A_ReFire("Shotguning")
      FISS WVUTSRQ 1
      Goto Retirement
   Winchester:
      FISF A 1 Bright A_ZoomFactor(0.97)
      FISF B 1 Bright A_ZoomFactor(0.98)
      TNT1 A 0 A_GunFlash
      TNT1 A 0 A_AlertMonsters
      TNT1 A 0 A_Recoil(8)
	  TNT1 A 0 A_GiveInventory("ErasusCasing")
      TNT1 A 0 ACS_Execute(851,0,30+random(5,-5),0,0)
      TNT1 A 0 A_PlayWeaponSound("Weapons/FistWinchester")
      ERAF A 0 A_JumpIfInventory("QuadUpgrade",1,"WinchesterQuadFire")
      TNT1 A 0 A_FireBullets(4.5, 1.75, 20, 12, "BulletPuff",0,768)
      Goto Retaliation
   WinchesterQuadFire:
      ERAF A 0 A_SetBlend("Blue",0.05,12)
      ERAF A 0 A_PlaySoundEx("Weapons/QuadShot","SoundSlot5")
      ERAF A 0 A_FireBullets(4.5, 1.75, 20, 24, "BulletPuff",0,768)
   Retaliation:
      FISS C 1 A_ZoomFactor(0.985)
      FISS D 1 A_ZoomFactor(0.99)
      FISS E 1 A_ZoomFactor(0.995)
      FISS D 1 A_ZoomFactor(1)
      FISS C 1

      FISS A 1
      FISS FGHIJK 1

      //Pump
      FISS LM 1
      FISP ACEFGGFECA 1
      FISS MLKJIHF 1
      FISS A 2
      TNT1 A 1 A_ReFire("Shotguning")
      FISS WVUTSRQ 1
      Goto Retirement
   Cannon:
      TNT1 A 0 A_TakeInventory("CannonTrigger",1)
      TNT1 A 0 A_PlaySound("Weapons/FistcannonCharge",5)
      TNT1 A 0 A_Quake(2,28,0,2,0)
      HANC ABCDEFGH 1
      HANC I 20
      TNT1 A 0 A_StopSound(5)
      TNT1 A 0 A_PlayWeaponSound("Weapons/FistcannonFire")
      TNT1 A 0 ACS_Execute(851,0,115+random(15,-15),95+random(15,-15),0)
	  TNT1 A 0 A_GunFlash
      TNT1 A 0 A_AlertMonsters
      TNT1 A 0 A_Recoil(12)
	  TNT1 A 0 A_FireCustomMissile("Canonball",0,0,8,0)
	  TNT1 A 0 A_FireCustomMissile("CannonMuzzle",0,0,10,11)
	  HANF A 1 A_ZoomFactor(0.95)
	  HANF B 1 A_ZoomFactor(0.97)
	  HANF C 1 A_ZoomFactor(0.99)
	  HANF D 1 A_ZoomFactor(0.99)
	  HANF E 1 A_ZoomFactor(1)
	  HANC IHGFEDCBA 1
	  TNT1 A 0 A_ReFire
	  Goto Retirement

   AltFire:
      FISU ABCDE 1
      TNT1 A 15
      FISH ABCDEFG 1
      TNT1 A 0 A_JumpIfInventory("CRTTrigger",1,"Hax")
      TNT1 A 0 A_JumpIfInventory("RPCTrigger",1,"RocketSaw")
      TNT1 A 0 A_JumpIfInventory("DonkeyTrigger",1,"ConcreteDrop")
      TNT1 A 0 A_JumpIfInventory("ComboMode",1,"Randomness2")
	  Goto RocketChair
   Randomness2:
	  TNT1 A 0 A_Jump(128,"Hax","RocketSaw") //I think it's safer if donkey is still triggered manually, eh?
	  Goto RocketChair
   Hax:
      TNT1 A 0 A_TakeInventory("CRTTrigger",1)
      TNT1 A 0 A_PlaySoundEx("Weapons/FistHAAAX","SoundSlot5")
	  TNT1 A 0 A_Quake(3,30,0,2,"none")
      FISH G 30
      FISH G 10
      TNT1 A 0 A_PlayWeaponSound("weapons/FistHaxFly")
      TNT1 A 0 A_FireCustomMissile("CRT",0,0,-35,15,0)
      FISH G 10
      FISH FEDCBA 1 Bright
      Goto Retirement
   RocketSaw:
      TNT1 A 0 A_TakeInventory("RPCTrigger",1)
      TNT1 A 0 A_PlaySoundEx("weapons/sawrevup","SoundSlot5")
	  TNT1 A 0 A_Quake(3,14,0,2,"none")
      FISH GGGGGGGGGGGGGG 1 ACS_Execute(851,0,random(70,-70),random(120,-120),0)
      TNT1 A 0 A_PlayWeaponSound("weapons/FistHaxFly")
      TNT1 A 0 A_FireCustomMissile("RPC",0,0,-35,15,0)
      FISH G 10
      FISH FEDCBA 1 Bright
      Goto Retirement
   RocketChair:
      TNT1 A 0 A_PlaySoundEx("Weapons/ChairLaunch","SoundSlot5")
	  TNT1 A 0 A_Quake(2,25,0,2,"none")
      FISH G 25
      TNT1 A 0 A_PlayWeaponSound("weapons/FistHaxFly")
      TNT1 A 0 A_FireCustomMissile("TRPC",0,0,-35,15,0)
      FISH G 10
      FISH FEDCBA 1 Bright
      Goto Retirement
   ConcreteDrop:
      TNT1 A 0 A_TakeInventory("DonkeyTrigger",1)
      TNT1 A 0 A_PlaySound("Weapons/FistPrayer",5)
      TNT1 A 0 A_FireCustomMissile("DonkeySpawner",0,0,0,0,0)
      FISH G 30
      //TNT1 A 0 A_PlaySound("Weapons/FistDonkey",1) //DONKEY PUNCH!.. gosh, that sounds so wrong.
      FISH G 10
      FISH FEDCBA 1 Bright
      Goto Retirement
   Flash:
      TNT1 A 4 Bright A_Light2
      TNT1 A 2 Bright A_Light1
      TNT1 A 0 Bright A_Light0
      Stop
   }
}

ACTOR CannonTrigger : DatTrigger {}
ACTOR RevolverTrigger : DatTrigger { }
ACTOR RevolverCounter : DatTrigger { Inventory.MaxAmount 6 }
ACTOR MGTrigger : DatTrigger {}
ACTOR CRTTrigger : DatTrigger {}
ACTOR RPCTrigger : DatTrigger {}
ACTOR DonkeyTrigger : DatTrigger {}

//Fire

ACTOR InvisPuff : BulletPuff
{
  States
  {
  Spawn:
    TNT1 A 1
	Stop
  }
}

Actor Canonball //Without one N, in case if you load up with map which has cannons or something, and it's projectiles are named Cannonball, to prevent replacing them with that one... Unless you like your face to be greatest in Koridai!
{
  radius 16
  height 9
  obituary "%o was run over by %k's cannonball."
  BounceSound "Weapons/FistcannonBounce"
  BounceType Hexen
  speed 60
  damage 1
  PROJECTILE
  bouncefactor 0.6
  bouncecount 6
  Gravity 1.35
  -NOGRAVITY
  -EXPLODEONWATER
  +RIPPER
  +FORCERADIUSDMG
  +BLOODLESSIMPACT
  +THRUGHOST
  scale 1.3
  states
  {
  Spawn:
    CANB A 0
    CANB A 0 ThrustThingZ(0, 20, 0, 1)
  Looplet:
    CANB A 0 A_Explode(250,32,0,0)
    CANB A 1 A_SpawnItemEx("CanonballTrail",0,0,0,0,0,0,0,128)
    Loop
  Death:
    TNT1 A 0 A_SpawnItemEx("CanonballEndo",0,0,0,velx,vely,velz,0,SXF_ABSOLUTEMOMENTUM|SXF_TRANSFERPITCH,0)
    Stop
    TNT1 A 0 A_JumpIfInTargetInventory("NukerUpgrade",1,"NukerDeath")
    TNT1 A 0 A_SpawnItemEx("DeathheadExplode",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS,0)
    TNT1 A 0 A_Explode(100,384,0,1)
    TNT1 A 0 A_Explode(100,192,1,1)
    TNT1 BCD 6
    Stop
  NukerDeath:
    TNT1 A 0 A_SpawnItemEx("NukerDeathheadExplode",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS,0)
    TNT1 A 0 A_Explode(200,576,0,1)
    TNT1 A 0 A_Explode(400,288,1,1)
    TNT1 BCD 6
    Stop
  }
}

ACTOR CanonballTrail
{
  +NOINTERACTION
  +NOGRAVITY
  +CLIENTSIDEONLY
  Scale 1.3
  Renderstyle Normal
  States
  {
  Spawn:
  TNT1 A 0
  TNT1 A 0 A_SetScale(ScaleX-0.05,ScaleY-0.05)
  CANB A 1 A_FadeOut(0.1)
  Loop
  }
}

ACTOR CanonballEndo
{
  radius 16
  height 9
  PROJECTILE
  -NOGRAVITY
  Scale 1.3
  Renderstyle Normal
  States
  {
  Spawn:
    CANB A 0
	CANB A 150
	CANB A 1 A_FadeOut(0.1)
	Wait
  }
}

ACTOR CannonMuzzle
{
  +NOINTERACTION
  +NOGRAVITY
  +CLIENTSIDEONLY
  States
  {
  Spawn:
  TNT1 A 0
  TNT1 A 0 A_SpawnItemEx("ErasusSmokeSpawner",0.2*random(6,-6),0.3*random(14,-14),0.3*random(14,-14),0,0,0,0,128,0)
  TNT1 A 0 A_SpawnItemEx("ErasusExp",0.2*random(6,-6),0.3*random(14,-14),0.3*random(14,-14),0,0,0,0,128,0)
  Stop
  }
}

//Alt-Fire

actor CRT
{
  Radius 11
  Height 7
  Speed 35
  Damage 500
  +THRUGHOST
  +EXPLODEONWATER
  +SEEKERMISSILE
  +FORCERADIUSDMG
  +FOILINVUL
  Projectile
  Scale	0.5
  var int User_Cycle;
  States
  {
  Spawn:
	MCRT A 0 NoDelay A_SetUserVar("User_Cycle",3)
  Looplet:
    MCRT A 1 A_SpawnItemEx("CRTTrail1", -30+frandom(3.0,-3.0), frandom(3.0,-3.0), frandom(3.0,-3.0), 0 , 0, 0, 0, SXF_CLIENTSIDE, 0)
    MCRT A 1 A_SpawnItemEx("CRTTrail2", -30+frandom(3.0,-3.0), frandom(3.0,-3.0), frandom(3.0,-3.0), 0 , 0, 0, 0, SXF_CLIENTSIDE, 0)
	MCRT A 0 A_SetUserVar("User_Cycle", User_Cycle - 1)
	MCRT A 0 A_JumpIf(User_Cycle <= 0,1)
	Loop
    MCRT A 0 A_SeekerMissile(90,90,SMF_LOOK|SMF_PRECISE,50,10)
    Goto Spawn
  Death:
    TNT1 A 0 A_PlaySound("Weapons/FistHaxHit")
    TNT1 A 0 A_PlaySound("Weapons/PushkaExp",5)
    TNT1 A 0 A_StopSoundEx("SoundSlot5")
    TNT1 A 0 A_JumpIfInTargetInventory("NukerUpgrade",1,"NukerDeath")
    TNT1 A 0 A_SpawnItemEx("DeathheadExplode",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS,0)
    TNT1 A 0 A_Explode(100,384,0,1)
    TNT1 A 0 A_Explode(100,192,0,1)
    TNT1 BCD 6
    Stop
  NukerDeath:
    TNT1 A 0 A_SpawnItemEx("NukerDeathheadExplode",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS,0)
    TNT1 A 0 A_Explode(200,576,0,1)
    TNT1 A 0 A_Explode(400,288,0,1)
    TNT1 BCD 6
    Stop
	}
}

actor CRTTrail1
{
	Renderstyle Translucent
	+NOINTERACTION
	+CLIENTSIDEONLY
	Scale 0.5
	States
	{
	Spawn:
	LOLO L 5
	Looplet:
	LOLO L 1 A_FadeOut(0.1)
	Loop
	}
}

actor CRTTrail2 : CRTTrail1
{
	States
	{
	Spawn:
	OLOL O 5
	Looplet:
	OLOL O 1 A_FadeOut(0.1)
	Loop
	}
}

//Rocket Propelled Chainsaw

actor RPC
{
  Radius 11
  Height 7
  Speed 30
  Damage 17
  +THRUGHOST
  +EXPLODEONWATER
  +SKYEXPLODE
  +SEEKERMISSILE
  +RIPPER
  Obituary "%o was minced by %k's rocket propelled chainsaw."
  reactiontime 350
  BounceType Hexen
  BounceFactor 1
  BounceSound "Weapons/SawBounce"
  Projectile
  States
  {
  Spawn:
    RPCP A 0
    RPCP A 0 A_PlaySoundEx("Weapons/KatyushaLoop","SoundSlot6",1)
    RPCP A 0 A_PlaySoundEx("Weapons/SawFull","SoundSlot5",1)
  Looplet:
    RPCP A 0 A_Countdown
    RPCP A 0 A_AlertMonsters
    RPCP A 0 A_ChangeVelocity (frandom(-4, 4), frandom(-4, 4), frandom(-2, 2), 0)
    RPCP A 0 A_SpawnItemEx("DeathHeadSmokeTrail", -20+random(1,-1), random(3,-3), random(3,-3), 0 ,0, 0, 0, 128, 0)
    RPCP A 1 A_SeekerMissile(50,50,SMF_LOOK|SMF_PRECISE,256,10)
    loop
  Death:
    TNT1 A 0 A_StopSoundEx("SoundSlot5")
    TNT1 A 0 A_StopSoundEx("SoundSlot6")
    TNT1 A 0 A_PlaySound("Weapons/SawRevDown")
    TNT1 A 1 A_SpawnItemEx("RPCDrop",0,0,0,15)
    Stop
    }
}

actor RPCDrop
{
  Radius 11
  Height 7
  Projectile
  SeeSound "Weapons/SawDown"
  +EXPLODEONWATER
  +THRUGHOST
  -NOGRAVITY
  Gravity 0.8
  States
  {
  Spawn:
    RPCP B 0
    RPCP B 3 A_SpawnItemEx("CasingSmoke", -19+random(1,-1), random(3,-3), random(3,-3), 0 ,0, 0, 0, 128, 0)
    Loop
  Death:
    TNT1 A 1 A_SpawnItemEx("RPCDropped")
    Stop
  }
}

actor RPCDropped
{
  Radius 11
  Height 7
  ReactionTime 35
  +NOBLOCKMAP
  States
  {
  Spawn:
    RPCP B 0
    RPCP B 0 A_Countdown
    RPCP B 3 A_SpawnItemEx("CasingSmoke", -19+random(3,-3), random(3,-3), 2+random(3,-3), 0, 0, frandom(0.25,0.75), 0, 128, 0)
    Loop
  Death:
    RPCP B 315
    RPCP B 1 A_FadeOut(0.05)
    Wait
  }
}

//Twin Rocket Propelled Chair!

ACTOR TRPC //It was working different earlier, but since it was exactly what I wanted to do from beginning - I sto... ahem, borrowed the code from ROTT TC. Derp.
{
	Radius 11
	Height 7
	+MISSILE
	+DROPOFF
	+THRUGHOST
	+EXPLODEONWATER
	+NOEXPLODEFLOOR
	+STEPMISSILE
	MaxStepHeight 16
	Damage 17
	speed 30
	States
	{
	Spawn:
	RCHR A 0
	RCHR A 0 A_PlaySoundEx("Weapons/KatyushaLoop","SoundSlot5",1)
	Looplet:
	TNT1 A 0 A_SpawnItemEx("DeathHeadSmokeTrail", -20+random(1,-1), 12+random(3,-3), 20+random(3,-3), 0 ,0, 0, 0, 128, 0)
	RCHR A 1 A_SpawnItemEx("DeathHeadSmokeTrail", -20+random(1,-1), -12+random(3,-3), 20+random(3,-3), 0 ,0, 0, 0, 128, 0)
	Loop
	Crash:
	Death:
	TNT1 A 0 A_StopSoundEx("SoundSlot5")
	TNT1 A 0 A_PlaySound("Weapons/PushkaExp",5)
	TNT1 A 0 A_JumpIfInTargetInventory("NukerUpgrade",1,"NukerDeath")
	TNT1 A 0 A_SpawnItemEx("DeathheadExplode",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS,0)
	TNT1 A 0 A_Explode(100,384,0,1)
	TNT1 A 0 A_Explode(100,192,0,1)
	TNT1 BCD 6
	Stop
	NukerDeath:
	TNT1 A 0 A_SpawnItemEx("NukerDeathheadExplode",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS,0)
	TNT1 A 0 A_Explode(200,576,0,1)
	TNT1 A 0 A_Explode(400,288,0,1)
	TNT1 BCD 6
	Stop
     }
}

//Drop da Bass!... I mean, the fish!.. NO! I MEAN, THE DONKEY! goddamnit...

ACTOR DonkeySpawner : FastProjectile
{
  Radius 32
  Height 24
  Speed 400
  Damage 0
  Projectile
  States
  {
  Spawn:
    TNT1 A 1
    Loop
  Death:
    TNT1 A 1 A_SpawnItemEx("DonkeyDrop",0,0,0,1.0,0,0,0,SXF_TRANSFERPOINTERS,0)
    Stop
  }
}

ACTOR DonkeyDrop
{
   +NOINTERACTION
   +CLIENTSIDEONLY
   +NOGRAVITY
   +SPAWNCEILING
   +CEILINGHUGGER
   +DONTBLAST
   States
   {
   Spawn:
   TNT1 A 1
   TNT1 A 0 A_Stop
   TNT1 A 0 A_SpawnItemEx("ConcreteDonkey",0,0,-24,0,0,-20,0,SXF_TRANSFERPOINTERS,0)
   Stop
   }
}

ACTOR ConcreteDonkey
{
  Radius 32
  Height 24
  Speed 0
  Damage 10000
  DamageType "Nope"
  Projectile
  -NOGRAVITY
  +DONTSPLASH
  +BOUNCEONCEILINGS
  Gravity 1.5
  Obituary "o% was unlucky enough to receive a direct hit of %k's concrete donkey."
  Scale 0.6
  States
  {
  Spawn:
  DONK E 1 A_SpawnItemEx("DonkeyTrail")
  Loop
  Death:
  TNT1 A 0 A_PlaySound("Weapons/FistDonkey",6)
  TNT1 A 0 A_SpawnItemEx("Nuke", 0, 0, 0, 0, 0, 0, 0,SXF_TRANSFERPOINTERS|SXF_NOCHECKPOSITION)
  TNT1 A 0 A_SpawnItemEx("ConcreteDonkeyJump1", 0, 0, 5, 0, 0, 50, 0,SXF_TRANSFERPOINTERS)
  Stop
  }
}

ACTOR DonkeyTrail
{
  Radius 32
  Height 24
  +NOINTERACTION
  +NOGRAVITY
  +CLIENTSIDEONLY
  Alpha 0.5
  Scale 0.6
  States
  {
  Spawn:
  TNT1 A 0
  DONK E 1 A_FadeOut(0.1)
  Loop
  }
}

ACTOR ConcreteDonkeyJump1 : ConcreteDonkey
{
  Gravity 1.0
  Obituary "o% was unlucky enough stand to receive %k's concrete donkey jumping of doom."
  States
  {
  Spawn:
  DONK E 1
  Loop
  Death:
  TNT1 A 0 A_PlaySound("Weapons/FistDonkey",6)
  TNT1 A 0 A_SpawnItemEx("Nuke", 0, 0, 5, 0, 0, 0, 0,SXF_TRANSFERPOINTERS|SXF_NOCHECKPOSITION)
  TNT1 A 0 A_SpawnItemEx("ConcreteDonkeyJump2", 0, 0, 5, 0, 0, 45, 0,SXF_TRANSFERPOINTERS)
  Stop
  }
}


ACTOR ConcreteDonkeyJump2 : ConcreteDonkeyJump1
{
  States
  {
  Spawn:
  DONK E 1
  Loop
  Death:
  TNT1 A 0 A_PlaySound("Weapons/FistDonkey",6)
  TNT1 A 0 A_SpawnItemEx("Nuke", 0, 0, 5, 0, 0, 0, 0,SXF_TRANSFERPOINTERS|SXF_NOCHECKPOSITION)
  TNT1 A 0 A_SpawnItemEx("ConcreteDonkeyJump3", 0, 0, 5, 0, 0, 40, 0,SXF_TRANSFERPOINTERS)
  Stop
  }
}


ACTOR ConcreteDonkeyJump3 : ConcreteDonkeyJump1
{
  States
  {
  Spawn:
  DONK E 1
  Loop
  Death:
  TNT1 A 0 A_PlaySound("Weapons/FistDonkey",6)
  TNT1 A 0 A_SpawnItemEx("Nuke", 0, 0, 5, 0, 0, 0, 0,SXF_TRANSFERPOINTERS|SXF_NOCHECKPOSITION)
  Stop
  }
}