#include "Decorate/Guns/Projectile/Cauterizer.txt"

ACTOR Cauterizer : GuncasterWeapon replaces Skullrod
{
   Game Doom
   Game Heretic
   Inventory.PickupSound "misc/w_pkup"
   Inventory.PickupMessage "$GOTCAUTERIZER"
   Obituary "$KILLCAUTERIZER"
   Weapon.UpSound "Cauterizer/Up" 
   Weapon.SelectionOrder 5
   Weapon.AmmoGive 4
   Weapon.AmmoType "CauterizerAmmo"
   Weapon.AmmoUse 1
   Weapon.Kickback 20
   Weapon.SlotNumber 6
   Weapon.BobStyle InverseSmooth
   Weapon.BobSpeed 1.8
   Weapon.BobRangeY 0.7
   Weapon.BobRangeX 0.9
   +NOAUTOFIRE
   +NOALERT
   States
   {
   Spawn:
      CAUG X -1
      Stop
   Ready:
      TNT1 A 0 A_JumpIf(CallACS("GunslingerMode"), "ZweiReady")
      TNT1 A 0 A_JumpIfInventory("PowerGunzerking",1,"ZweiReady")
      CAUG A 1 A_WeaponReady(WRF_ALLOWZOOM|WRF_ALLOWRELOAD)
      Loop
   DeselectMain:
      TNT1 A 0 A_JumpIf(CallACS("GunslingerMode"), "ZweiDeselect")
      TNT1 A 0 A_JumpIfInventory("PowerGunzerking",1,"ZweiDeselect")
      CAUG A 1 A_Lower
      CAUG A 0 A_Lower
      Loop
   Select:
      TNT1 A 0 A_JumpIf(CallACS("GunslingerMode"), "ZweiSelect")
      TNT1 A 0 A_JumpIfInventory("PowerGunzerking",1,"ZweiSelect")
      CAUG A 1 A_Raise
      Loop  
   Fire:
      CAUF A 0 A_PlaySound("Cauterizer/Fire",1,0.5)
      CAUF A 0 A_PlaySound("Cauterizer/Add",0,0.7)
      CAUF A 0 A_SetBlend("Cyan",0.1,8)
      CAUF A 0 A_Recoil(7)
      CAUF A 0 A_AlertMonsters
      CAUF A 0 A_Quake (4, 9, 0, 3, none)
      CAUF A 0 A_FireCustomMissile("Thunderball",0,1,12,0)
      CAUF A 0 A_SetPitch(pitch-0.5)
      CAUF A 0 A_SetAngle(angle-0.5)
      CAUF A 1 Bright A_ZoomFactor(0.99)
      CAUF A 0 A_SetPitch(pitch-1)
      CAUF A 0 A_SetAngle(angle-1)
      CAUF B 1 Bright A_ZoomFactor(0.97)
      CAUF A 0 A_SetPitch(pitch-1.5)
      CAUF A 0 A_SetAngle(angle-1.5)
      CAUT A 1 A_ZoomFactor(0.96)
      CAUF A 0 A_SetPitch(pitch-1.5)
      CAUF A 0 A_SetAngle(angle-1.5)
      CAUT B 1 A_ZoomFactor(0.94)
      CAUF A 0 A_SetPitch(pitch-0.5)
      CAUF A 0 A_SetAngle(angle-0.5)
      CAUT C 1 A_ZoomFactor(0.92)
      CAUF A 0 A_SetPitch(pitch+0.5)
      CAUF A 0 A_SetAngle(angle+0.5)
      CAUT D 1 A_ZoomFactor(0.91)
      CAUF A 0 A_SetPitch(pitch+0.5)
      CAUF A 0 A_SetAngle(angle+0.5)
      CAUT E 1 A_ZoomFactor(0.905)
      CAUF A 0 A_SetPitch(pitch+0.5)
      CAUF A 0 A_SetAngle(angle+0.5)
	  CAUT F 1 A_ZoomFactor(0.92)
      CAUF A 0 A_SetPitch(pitch+0.5)
      CAUF A 0 A_SetAngle(angle+0.5)
	  CAUT G 1 A_ZoomFactor(0.93)
      CAUF A 0 A_SetPitch(pitch+0.5)
      CAUF A 0 A_SetAngle(angle+0.5)
	  CAUT H 1 A_ZoomFactor(0.94)
      CAUF A 0 A_SetPitch(pitch+0.5)
      CAUF A 0 A_SetAngle(angle+0.5)
	  CAUT I 1 A_ZoomFactor(0.95)
      CAUF A 0 A_SetPitch(pitch+0.5)
      CAUF A 0 A_SetAngle(angle+0.5)
	  CAUT J 1 A_ZoomFactor(0.96)
      CAUF A 0 A_SetPitch(pitch+0.25)
      CAUF A 0 A_SetAngle(angle+0.25)
	  CAUT K 1 A_ZoomFactor(0.97)
      CAUF A 0 A_SetPitch(pitch+0.25)
      CAUF A 0 A_SetAngle(angle+0.25)
	  CAUT L 1 A_ZoomFactor(0.98)
      CAUF A 0 A_SetPitch(pitch+0.25)
      CAUF A 0 A_SetAngle(angle+0.25)
	  CAUT M 1 A_ZoomFactor(0.99)
      CAUF A 0 A_SetPitch(pitch+0.25)
      CAUF A 0 A_SetAngle(angle+0.25)
	  CAUG A 7 A_ZoomFactor(1)
	  CAUG A 0 A_ReFire
      Goto Ready
	AltFire:
	  CAUM A 0
	  Goto Super::CheckForMagic
	Zoom:
	  CAUK A 0 A_JumpIfInventory("PowerGunzerking",1,1)
	  Goto Super::Zoom
	  1AUK A 0
	  Goto Super::Zoom	  
	//Zweihander

   ZweiSelect:
      3AUG A 1 A_Raise
      Loop
   ZweiDeselect:
	  TNT1 A 0 A_GunFlash("Nullify",GFF_NOEXTCHANGE)
	  TNT1 A 0 A_TakeInventory("SynthFireActive",1)
	  TNT1 A 0 A_TakeInventory("SynthFireLeft",1)
	  TNT1 A 0 A_TakeInventory("SynthFireRight",1)
   Zweihander:
	  3AUG A 0 A_Lower
	  3AUG A 1 A_Lower
	  Loop
   ZweiReady:
	  3AUG A 0 A_GiveInventory("SynthFireActive",1)
	  3AUG A 0 ACS_NamedExecuteAlways("SynthLeft")
	  3AUG A 0 ACS_NamedExecuteAlways("SynthRight")
	  3AUG A 0 A_Gunflash("Flash",GFF_NOEXTCHANGE)
	  Goto RIdle

   //Right
   
   RIdle:
	  1AUG A 0 A_JumpIfInventory("SynthFireRight",1,"RFire")
	  1AUG A 1 A_WeaponReady(WRF_NOFIRE|WRF_ALLOWRELOAD|WRF_ALLOWZOOM)
      TNT1 A 0 A_JumpIf(CallACS("GunslingerMode"), "RIdle")
	  1AUG A 0 A_JumpIfInventory("PowerGunzerking",1,"RIdle") 
	  Goto BackToReady
   BackToReady:
	  1AUG A 0 A_GunFlash("Nullify",GFF_NOEXTCHANGE)
	  Goto Ready
   RFire:
      TNT1 A 0 A_JumpIf(CallACS("GunslingerMode"),2)
	  1AUG A 0 A_JumpIfInventory("PowerGunzerking",1,1) 
	  Goto BackToReady
	  1AUG A 1 A_JumpIfInventory("CauterizerAmmo",1,1)
	  Goto RIdle
      1AUF A 0 A_PlaySound("Cauterizer/Fire",1,0.5)
      1AUF A 0 A_PlaySound("Cauterizer/Add",0,0.7)
      1AUF A 0 A_SetBlend("Cyan",0.1,8)
      1AUF A 0 A_Recoil(3.5)
      1AUF A 0 A_AlertMonsters
      1AUF A 0 A_Quake (4, 9, 0, 3, none)
      1AUF A 0 A_FireCustomMissile("Thunderball",0,0,14,0)
      1AUF A 0 A_TakeInventory("CauterizerAmmo",1,TIF_NOTAKEINFINITE)
      1AUF A 0 A_SetPitch(pitch-0.5)
      1AUF A 0 A_SetAngle(angle-0.5)
      1AUF A 1 Bright A_ZoomFactor(0.99)
      1AUF A 0 A_SetPitch(pitch-1)
      1AUF A 0 A_SetAngle(angle-1)
      1AUF B 1 Bright A_ZoomFactor(0.97)
      1AUF A 0 A_SetPitch(pitch-1.5)
      1AUF A 0 A_SetAngle(angle-1.5)
      1AUT A 1 A_ZoomFactor(0.96)
      1AUF A 0 A_SetPitch(pitch-1.5)
      1AUF A 0 A_SetAngle(angle-1.5)
      1AUT B 1 A_ZoomFactor(0.94)
      1AUF A 0 A_SetPitch(pitch-0.5)
      1AUF A 0 A_SetAngle(angle-0.5)
      1AUT C 1 A_ZoomFactor(0.92)
      1AUF A 0 A_SetPitch(pitch+0.5)
      1AUF A 0 A_SetAngle(angle+0.5)
      1AUT D 1 A_ZoomFactor(0.91)
      1AUF A 0 A_SetPitch(pitch+0.5)
      1AUF A 0 A_SetAngle(angle+0.5)
      1AUT E 1 A_ZoomFactor(0.905)
      1AUF A 0 A_SetPitch(pitch+0.5)
      1AUF A 0 A_SetAngle(angle+0.5)
	  1AUT F 1 A_ZoomFactor(0.92)
      1AUF A 0 A_SetPitch(pitch+0.5)
      1AUF A 0 A_SetAngle(angle+0.5)
	  1AUT G 1 A_ZoomFactor(0.93)
      1AUF A 0 A_SetPitch(pitch+0.5)
      1AUF A 0 A_SetAngle(angle+0.5)
	  1AUT H 1 A_ZoomFactor(0.94)
      1AUF A 0 A_SetPitch(pitch+0.5)
      1AUF A 0 A_SetAngle(angle+0.5)
	  1AUT I 1 A_ZoomFactor(0.95)
      1AUF A 0 A_SetPitch(pitch+0.5)
      1AUF A 0 A_SetAngle(angle+0.5)
	  1AUT J 1 A_ZoomFactor(0.96)
      1AUF A 0 A_SetPitch(pitch+0.25)
      1AUF A 0 A_SetAngle(angle+0.25)
	  1AUT K 1 A_ZoomFactor(0.97)
      1AUF A 0 A_SetPitch(pitch+0.25)
      1AUF A 0 A_SetAngle(angle+0.25)
	  1AUT L 1 A_ZoomFactor(0.98)
      1AUF A 0 A_SetPitch(pitch+0.25)
      1AUF A 0 A_SetAngle(angle+0.25)
	  1AUT M 1 A_ZoomFactor(0.99)
      1AUF A 0 A_SetPitch(pitch+0.25)
      1AUF A 0 A_SetAngle(angle+0.25)
	  1AUG A 7 A_ZoomFactor(1)
	  1AUG A 0 A_JumpIfInventory("SynthFireRight",1,"RFire")
	  Goto RIdle
	  
   //Left
   
   Nullify:
	  TNT1 A 0
	  Stop
   Flash:
	  TNT1 A 0 A_Light0
   LIdle:
	  2AUG A 1 A_JumpIfInventory("SynthFireLeft",1,"LFire")
	  Loop
   LFire:
      TNT1 A 0 A_JumpIf(CallACS("GunslingerMode"),2)
	  2AUG A 0 A_JumpIfInventory("PowerGunzerking",1,1) 
	  Goto BackToReady
	  2AUG A 1 A_JumpIfInventory("CauterizerAmmo",1,1)
	  Goto LIdle
      2AUF A 0 A_PlaySound("Cauterizer/Fire",1,0.5)
      2AUF A 0 A_PlaySound("Cauterizer/Add",0,0.7)
      2AUF A 0 A_SetBlend("Cyan",0.1,8)
      2AUF A 0 A_Recoil(3.5)
      2AUF A 0 A_AlertMonsters
      2AUF A 0 A_Quake (4, 9, 0, 3, none)
      2AUF A 0 A_FireCustomMissile("Thunderball",0,0,-14,0)
      2AUF A 0 A_TakeInventory("CauterizerAmmo",1,TIF_NOTAKEINFINITE)
      2AUF A 0 A_SetPitch(pitch-0.5)
      2AUF A 0 A_SetAngle(angle-0.5)
      2AUF A 1 Bright A_ZoomFactor(0.99)
      2AUF A 0 A_SetPitch(pitch-1)
      2AUF A 0 A_SetAngle(angle-1)
      2AUF B 1 Bright A_ZoomFactor(0.97)
      2AUF A 0 A_SetPitch(pitch-1.5)
      2AUF A 0 A_SetAngle(angle-1.5)
      2AUT A 1 A_ZoomFactor(0.96)
      2AUF A 0 A_SetPitch(pitch-1.5)
      2AUF A 0 A_SetAngle(angle-1.5)
      2AUT B 1 A_ZoomFactor(0.94)
      2AUF A 0 A_SetPitch(pitch-0.5)
      2AUF A 0 A_SetAngle(angle-0.5)
      2AUT C 1 A_ZoomFactor(0.92)
      2AUF A 0 A_SetPitch(pitch+0.5)
      2AUF A 0 A_SetAngle(angle+0.5)
      2AUT D 1 A_ZoomFactor(0.91)
      2AUF A 0 A_SetPitch(pitch+0.5)
      2AUF A 0 A_SetAngle(angle+0.5)
      2AUT E 1 A_ZoomFactor(0.905)
      2AUF A 0 A_SetPitch(pitch+0.5)
      2AUF A 0 A_SetAngle(angle+0.5)
	  2AUT F 1 A_ZoomFactor(0.92)
      2AUF A 0 A_SetPitch(pitch+0.5)
      2AUF A 0 A_SetAngle(angle+0.5)
	  2AUT G 1 A_ZoomFactor(0.93)
      2AUF A 0 A_SetPitch(pitch+0.5)
      2AUF A 0 A_SetAngle(angle+0.5)
	  2AUT H 1 A_ZoomFactor(0.94)
      2AUF A 0 A_SetPitch(pitch+0.5)
      2AUF A 0 A_SetAngle(angle+0.5)
	  2AUT I 1 A_ZoomFactor(0.95)
      2AUF A 0 A_SetPitch(pitch+0.5)
      2AUF A 0 A_SetAngle(angle+0.5)
	  2AUT J 1 A_ZoomFactor(0.96)
      2AUF A 0 A_SetPitch(pitch+0.25)
      2AUF A 0 A_SetAngle(angle+0.25)
	  2AUT K 1 A_ZoomFactor(0.97)
      2AUF A 0 A_SetPitch(pitch+0.25)
      2AUF A 0 A_SetAngle(angle+0.25)
	  2AUT L 1 A_ZoomFactor(0.98)
      2AUF A 0 A_SetPitch(pitch+0.25)
      2AUF A 0 A_SetAngle(angle+0.25)
	  2AUT M 1 A_ZoomFactor(0.99)
      2AUF A 0 A_SetPitch(pitch+0.25)
      2AUF A 0 A_SetAngle(angle+0.25)
	  2AUG A 7 A_ZoomFactor(1)
	  2AUG A 0 A_JumpIfInventory("SynthFireLeft",1,"LFire")
	  Goto LIdle
	}
}