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

ACTOR Sovereign : GuncasterWeapon replaces PhoenixRod
{
   Game Doom
   Game Heretic
   Inventory.PickupSound "misc/w_pkup"
   Inventory.PickupMessage "$GOTSOVEREIGN"
   Obituary "$KILLSOVEREIGN"
   Weapon.UpSound "Sovereign/Up" 
   Weapon.SelectionOrder 7
   Weapon.AmmoGive 6
   Weapon.AmmoType "SovereignAmmo"
   Weapon.AmmoUse 1
   Weapon.SlotNumber 5
   Weapon.BobStyle InverseSmooth
   Weapon.BobSpeed 1.5
   Weapon.BobRangeY 0.8
   Weapon.BobRangeX 1.3
   Weapon.Kickback 60
   +NOAUTOAIM
   +NOAUTOFIRE
   +NOALERT
   Scale 0.9
   States
   {
   Spawn:
      SOVG X -1
      Stop
   Ready:
	  TNT1 A 0 A_JumpIf(CallACS("GunslingerMode"),"ZweiReady")
      SOVG A 0 A_JumpIfInventory("PowerGunzerking",1,"ZweiReady")
      SOVG 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")
      SOVG A 1 A_Lower
      SOVG A 0 A_Lower
      Loop
   Select:
      TNT1 A 0 A_JumpIf(CallACS("CrosshairMode"), 2)
      TNT1 A 0 A_SetCrosshair(52)
	  TNT1 A 0 A_JumpIf(CallACS("GunslingerMode"),"ZweiSelect")
      TNT1 A 0 A_JumpIfInventory("PowerGunzerking",1,"ZweiSelect")
      SOVG A 1 A_Raise
      Loop  
   Fire:
      SOVF A 0 A_PlaySound("Sovereign/Fire",1,0.8)
      SOVF A 0 A_PlaySound("Sovereign/Add",5,0.5)
      SOVF A 0 A_SetBlend("Yellow",0.15,12)
      SOVF A 0 A_Recoil(9)
      SOVF A 0 A_AlertMonsters
      SOVF A 0 A_Quake (7, 7, 0, 3, none)
      SOVF A 0 A_FireCustomMissile("SovereignSlug",0,1,11,0)
      SOVF A 0 A_SetPitch(pitch-0.5)
      SOVF A 0 A_SetAngle(angle-0.5)
	  SOVF A 0 A_FireCustomMissile("GunsmokeSpawner_Large",0,0,2,2)
      SOVF A 1 Bright A_ZoomFactor(0.99)
      SOVF A 0 A_SetPitch(pitch-2)
      SOVF A 0 A_SetAngle(angle-2)
	  SOVF A 0 A_FireCustomMissile("GunsmokeSpawner_Large",0,0,4,4)
      SOVF B 1 Bright A_ZoomFactor(0.97)
      SOVF A 0 A_SetPitch(pitch-3)
      SOVF A 0 A_SetAngle(angle-3)
	  SOVF A 0 A_FireCustomMissile("GunsmokeSpawner_Large",0,0,5,5)
      SOVR A 1 A_ZoomFactor(0.94) //Sheesh.
	  SOVR A 0 A_PlaySound("Sovereign/Reload",6,0.3)
      SOVR A 0 A_SetPitch(pitch-1.5)
      SOVR A 0 A_SetAngle(angle-1.5)
	  SOVR A 0 A_FireCustomMissile("GunsmokeSpawner_Large",0,0,6,6)
	  SOVR B 1 A_ZoomFactor(0.93)
      SOVR A 0 A_SetPitch(pitch-0.5)
      SOVR A 0 A_SetAngle(angle-0.5)
	  SOVR A 0 A_FireCustomMissile("GunsmokeSpawner_Large",0,0,7,7)
	  SOVR D 1 A_ZoomFactor(0.92)
      SOVR A 0 A_SetPitch(pitch+0.5)
      SOVR A 0 A_SetAngle(angle+1)
	  /*SOVR E 1 A_ZoomFactor(0.915)
      SOVR A 0 A_SetPitch(pitch+0.5)
      SOVR A 0 A_SetAngle(angle+0.5)*/
	  SOVR F 1 A_ZoomFactor(0.92)
      SOVR A 0 A_SetPitch(pitch+1)
      SOVR A 0 A_SetAngle(angle+1)
	  SOVR G 1 A_ZoomFactor(0.93)
      SOVR A 0 A_SetPitch(pitch+0.5)
      SOVR A 0 A_SetAngle(angle+0.5)
	  SOVR A 0 A_FireCustomMissile("TankShellCasingSpawner",0,0,4,-10)
	  /*SOVR H 1 A_ZoomFactor(0.95)
      SOVR A 0 A_SetPitch(pitch+0.5)
      SOVR A 0 A_SetAngle(angle+0.5)*/
	  SOVR I 1 A_ZoomFactor(0.97)
      SOVR A 0 A_SetPitch(pitch+0.5)
      SOVR A 0 A_SetAngle(angle+0.5)
	  SOVR J 1 A_ZoomFactor(0.98)
      SOVR A 0 A_SetPitch(pitch+0.25)
      SOVR A 0 A_SetAngle(angle+0.25)
	  SOVR K 1 A_ZoomFactor(0.99)
      SOVR A 0 A_SetPitch(pitch+0.25)
      SOVR A 0 A_SetAngle(angle+0.25)
	  SOVR L 1 A_ZoomFactor(1)
	  SOVR MOPRS 1 //NQ
	  SOVG A 0 A_ReFire
      Goto Ready
	AltFire:
	  SOVM A 0
	  Goto Super::CheckForMagic
	Zoom:
	  TNT1 A 0 A_JumpIf(CallACS("GunslingerMode"),2)
	  SOVK A 0 A_JumpIfInventory("PowerGunzerking",1,1)
	  Goto Super::Zoom
	  1OVK A 0
	  Goto Super::Zoom
	//Zweihander

   ZweiSelect:
      SO3G 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:
	  SO3G A 0 A_Lower
	  SO3G A 1 A_Lower
	  Loop
   ZweiReady:
	  SO3G A 0 A_GiveInventory("SynthFireActive",1)
	  SO3G A 0 ACS_NamedExecuteAlways("SynthLeft")
	  SO3G A 0 ACS_NamedExecuteAlways("SynthRight")
	  SO3G A 0 A_Gunflash("Flash",GFF_NOEXTCHANGE)
	  Goto RIdle
	  
   //Right
   
   RIdle:
	  SO1G A 0 A_JumpIfInventory("SynthFireRight",1,"RFire")
	  SO1G A 1 A_WeaponReady(WRF_NOFIRE|WRF_ALLOWRELOAD|WRF_ALLOWZOOM)
	  TNT1 A 0 A_JumpIf(CallACS("GunslingerMode"),"RIdle")
	  SO1G A 0 A_JumpIfInventory("PowerGunzerking",1,"RIdle") 
	  Goto BackToReady
   BackToReady:
	  SO1G A 0 A_GunFlash("Nullify",GFF_NOEXTCHANGE)
	  Goto Ready
   Nullify:
	  TNT1 A 0
	  Stop
   RFire:
	  TNT1 A 0 A_JumpIf(CallACS("GunslingerMode"),2)
	  SO1G A 0 A_JumpIfInventory("PowerGunzerking",1,1)
	  Goto BackToReady
	  SO1G A 1 A_JumpIfInventory("SovereignAmmo",1,1)
	  Goto RIdle
      SO1F A 0 A_PlaySound("Sovereign/Fire",1,0.8)
      SO1F A 0 A_PlaySound("Sovereign/Add",5,0.5)
      SO1F A 0 A_SetBlend("Yellow",0.15,12)
      SO1F A 0 A_Recoil(4.5)
      SO1F A 0 A_AlertMonsters
      SO1F A 0 A_Quake (7, 7, 0, 3, none)
      SO1F A 0 A_FireCustomMissile("SovereignSlug",0,0,16,0)
      SO1F A 0 A_TakeInventory("SovereignAmmo",1,TIF_NOTAKEINFINITE)
      SO1F A 0 A_SetPitch(pitch-0.5)
      SO1F A 0 A_SetAngle(angle-0.5)
	  SOVR A 0 A_FireCustomMissile("GunsmokeSpawner_Large",0,0,14,0)
      SO1F A 1 Bright A_ZoomFactor(0.99)
      SO1F A 0 A_SetPitch(pitch-2)
      SO1F A 0 A_SetAngle(angle-2)
	  SOVR A 0 A_FireCustomMissile("GunsmokeSpawner_Large",0,0,16,2)
      SO1F B 1 Bright A_ZoomFactor(0.97)
      SO1F A 0 A_SetPitch(pitch-3)
      SO1F A 0 A_SetAngle(angle-3)
	  SOVR A 0 A_FireCustomMissile("GunsmokeSpawner_Large",0,0,17,3)
      SO1R A 1 A_ZoomFactor(0.94) //Sheesh.
	  SO1R A 0 A_PlaySound("Sovereign/Reload",6,0.3)
      SO1F A 0 A_SetPitch(pitch-1.5)
      SO1F A 0 A_SetAngle(angle-1.5)
	  SOVR A 0 A_FireCustomMissile("GunsmokeSpawner_Large",0,0,18,4)
	  SO1R B 1 A_ZoomFactor(0.93)
      SO1F A 0 A_SetPitch(pitch-0.5)
      SO1F A 0 A_SetAngle(angle-0.5)
	  SOVR A 0 A_FireCustomMissile("GunsmokeSpawner_Large",0,0,19,5)
	  SO1R C 1 A_ZoomFactor(0.92)
      SO1F A 0 A_SetPitch(pitch+0.5)
      SO1F A 0 A_SetAngle(angle+1)
	  SO1R D 1 A_ZoomFactor(0.915)
      SO1F A 0 A_SetPitch(pitch+0.5)
      SO1F A 0 A_SetAngle(angle+0.5)
	  /*SO1R E 1 A_ZoomFactor(0.92)
      SO1F A 0 A_SetPitch(pitch+1)
      SO1F A 0 A_SetAngle(angle+1)*/
	  SO1R F 1 A_ZoomFactor(0.93)
      SO1F A 0 A_SetPitch(pitch+0.5)
      SO1F A 0 A_SetAngle(angle+0.5)
	  SO1R G 1 A_ZoomFactor(0.95)
      SO1F A 0 A_SetPitch(pitch+0.5)
      SO1F A 0 A_SetAngle(angle+0.5)
	  SO1F A 0 A_FireCustomMissile("TankShellCasingSpawner",0,0,4,-10)
	  /*SO1R H 1 A_ZoomFactor(0.97)
      SO1F A 0 A_SetPitch(pitch+0.5)
      SO1F A 0 A_SetAngle(angle+0.5)*/
	  SO1R I 1 A_ZoomFactor(0.98)
      SO1F A 0 A_SetPitch(pitch+0.25)
      SO1F A 0 A_SetAngle(angle+0.25)
	  SO1R J 1 A_ZoomFactor(0.99)
      SO1F A 0 A_SetPitch(pitch+0.25)
      SO1F A 0 A_SetAngle(angle+0.25)
	  SO1R K 1 A_ZoomFactor(1)
	  SO1R LMOPRS 1 //NQ
	  SO1G A 0 A_JumpIfInventory("SynthFireRight",1,"RFire")
	  Goto RIdle
	  
   //Left
	  
   Flash:
	  TNT1 A 0 A_Light0
   LIdle:
	  SO2G A 1 A_JumpIfInventory("SynthFireLeft",1,"LFire")
	  Loop
   LFire:
   	  TNT1 A 0 A_JumpIf(CallACS("GunslingerMode"),2)
	  SO2G A 0 A_JumpIfInventory("PowerGunzerking",1,1) 
	  Goto Nullify
	  SO2G A 1 A_JumpIfInventory("SovereignAmmo",1,1)
	  Goto LIdle
      SO2F A 0 A_PlaySound("Sovereign/Fire",1,0.8)
      SO2F A 0 A_PlaySound("Sovereign/Add",5,0.5)
      SO2F A 0 A_SetBlend("Yellow",0.15,12)
      SO2F A 0 A_Recoil(4.5)
      SO2F A 0 A_AlertMonsters
      SO2F A 0 A_Quake (7, 7, 0, 3, none)
      SO2F A 0 A_FireCustomMissile("SovereignSlug",0,0,-16,0)
      SO2F A 0 A_TakeInventory("SovereignAmmo",1,TIF_NOTAKEINFINITE)
      SO2F A 0 A_SetPitch(pitch-0.5)
      SO2F A 0 A_SetAngle(angle+0.5)
	  SOVR A 0 A_FireCustomMissile("GunsmokeSpawner_Large",0,0,-14,0)
      SO2F A 1 Bright A_ZoomFactor(0.99)
      SO2F A 0 A_SetPitch(pitch-2)
      SO2F A 0 A_SetAngle(angle+2)
	  SOVR A 0 A_FireCustomMissile("GunsmokeSpawner_Large",0,0,-16,2)
      SO2F B 1 Bright A_ZoomFactor(0.97)
      SO2F A 0 A_SetPitch(pitch-3)
      SO2F A 0 A_SetAngle(angle+3)
	  SOVR A 0 A_FireCustomMissile("GunsmokeSpawner_Large",0,0,-17,3)
      SO2R A 1 A_ZoomFactor(0.94) //Sheesh.
	  SO2R A 0 A_PlaySound("Sovereign/Reload",6,0.3)
      SO2F A 0 A_SetPitch(pitch-1.5)
      SO2F A 0 A_SetAngle(angle+1.5)
	  SOVR A 0 A_FireCustomMissile("GunsmokeSpawner_Large",0,0,-18,4)
	  SO2R B 1 A_ZoomFactor(0.93)
      SO2F A 0 A_SetPitch(pitch-0.5)
      SO2F A 0 A_SetAngle(angle+0.5)
	  SOVR A 0 A_FireCustomMissile("GunsmokeSpawner_Large",0,0,-19,5)
	  SO2R C 1 A_ZoomFactor(0.92)
      SO2F A 0 A_SetPitch(pitch+0.5)
      SO2F A 0 A_SetAngle(angle-1)
	  SO2R D 1 A_ZoomFactor(0.915)
      SO2F A 0 A_SetPitch(pitch+0.5)
      SO2F A 0 A_SetAngle(angle-0.5)
	  /*SO2R E 1 A_ZoomFactor(0.92)
      SO2F A 0 A_SetPitch(pitch+1)
      SO2F A 0 A_SetAngle(angle-1)*/
	  SO2R F 1 A_ZoomFactor(0.93)
      SO2F A 0 A_SetPitch(pitch+0.5)
      SO2F A 0 A_SetAngle(angle-0.5)
	  SO2R G 1 A_ZoomFactor(0.95)
      SO2F A 0 A_SetPitch(pitch+0.5)
      SO2F A 0 A_SetAngle(angle-0.5)
	  SO2F A 0 A_FireCustomMissile("TankShellCasingSpawnerLeft",0,0,-4,-10)
	  /*SO2R H 1 A_ZoomFactor(0.97)
      SO2F A 0 A_SetPitch(pitch+0.5)
      SO2F A 0 A_SetAngle(angle-0.5)*/
	  SO2R I 1 A_ZoomFactor(0.98)
      SO2F A 0 A_SetPitch(pitch+0.25)
      SO2F A 0 A_SetAngle(angle-0.25)
	  SO2R J 1 A_ZoomFactor(0.99)
      SO2F A 0 A_SetPitch(pitch+0.25)
      SO2F A 0 A_SetAngle(angle-0.25)
	  SO2R K 1 A_ZoomFactor(1)
	  SO2R LMOPRS 1 //NQ
	  SO2G A 0 A_JumpIfInventory("SynthFireLeft",1,"LFire")
	  Goto LIdle
	}
}