/*
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)
*/

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 ""
   +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")
   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_ExecuteAlways(718,0,1)
	  TNT1 A 0 ACS_ExecuteAlways(719,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("MGTrigger",1,"Machinegun")
      TNT1 A 0 A_JumpIfInventory("CannonTrigger",1,"Cannon")
      TNT1 A 0 A_JumpIfInventory("ComboMode",1,"Randomness1")
      TNT1 A 0 A_Jump(255,"Punch9","Punch0")
	  TNT1 A 1
      TNT1 A 0 A_ReFire
      TNT1 A 3
      FISU EDCBA 1
      Goto Ready
   Randomness1:
      TNT1 A 0 A_Jump(16,"Machinegun","Cannon")
	  Goto Hold+3
   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/fistmagnum","SoundSlot5")
      TNT1 A 0 A_FireBullets(0,0,1,18,"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
      Goto Retirement

      FIS9 ABCDD 1
   CPunch9:
      TNT1 A 0 A_Recoil(0.9)
      TNT1 A 0 A_PlaySoundEx("weapons/fistmagnum","SoundSlot5")
      TNT1 A 0 A_PlaySoundEx("weapons/wolgirHendfire","SoundSlot6")
      TNT1 A 0 A_FireBullets(0,0,1,36,"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
      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/fistmagnum","SoundSlot5")
      TNT1 A 0 A_FireBullets(0,0,1,18,"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
      Goto Retirement
   CPunch0:
      TNT1 A 0 A_Recoil(0.9)
      TNT1 A 0 A_PlaySoundEx("weapons/fistmagnum","SoundSlot5")
      TNT1 A 0 A_PlaySoundEx("weapons/wolgirHendfire","SoundSlot6")
      TNT1 A 0 A_FireBullets(0,0,1,36,"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
      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,18,"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,18,"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,18,"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,18,"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,18,"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,18,"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,18,"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,18,"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,18,"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,36,"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,36,"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,36,"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,36,"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,36,"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,36,"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,36,"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,36,"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,36,"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, 10, "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, 20, "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, 10, "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, 20, "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 MGTrigger : DatTrigger {}
ACTOR CRTTrigger : DatTrigger {}
ACTOR RPCTrigger : DatTrigger {}
ACTOR DonkeyTrigger : DatTrigger {}

//Fire

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 make 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(200,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
  +CLIENTSIDEONLY
  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
  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 400
  +THRUGHOST
  +EXPLODEONWATER
  +SEEKERMISSILE
  +FORCERADIUSDMG
  +FOILINVUL
  Projectile
  Scale	0.5
  States
  {
  Spawn:
    MCRT AAAAA 1 A_SpawnItemEx("DeathHeadSmokeTrail", -30, random(3,-3), random(3,-3), 0 ,0, 0, 0, 128, 0)
    MCRT A 0 A_SeekerMissile(90,90,SMF_LOOK|SMF_PRECISE,50,10)
    loop
  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
	}
}

//Rocket Propelled Chainsaw

actor RPC
{
  Radius 11
  Height 7
  Speed 30
  Damage 15
  +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
  +CLIENTSIDEONLY
  +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
  +CLIENTSIDEONLY
  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 15
	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
{
  Radius 33
  Height 25
  Speed 400
  Damage 0
  Projectile
  States
  {
  Spawn:
    TNT1 A 1
    Loop
  Death:
    TNT1 A 1 A_SpawnItemEx("DonkeyDropSpawner",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS,0)
    Stop
  }
}

ACTOR DonkeyDropSpawner
{
   +NOINTERACTION
   +NOGRAVITY
   +DONTBLAST
   States
   {
   Spawn:
   TNT1 A 0
   TNT1 A 1 A_CustomMissile("DonkeyDrop",0,0,0,CMF_TRACKOWNER)
   Stop
   }
}

ACTOR DonkeyDrop
{
   +NOINTERACTION
   +NOGRAVITY
   +SPAWNCEILING
   +CEILINGHUGGER
   +DONTBLAST
   States
   {
   Spawn:
   TNT1 A 0
   TNT1 A 1 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
  }
}