ACTOR Strucker : GuncasterWeapon replaces Crossbow
{
   Game Doom
   Game Heretic
   Inventory.PickupSound "misc/w_pkup"
   Inventory.PickupMessage "$GOTSTRUCKER"
   Obituary "$KILLSTRUCKER"
   Weapon.UpSound "Strucker/Up" 
   Weapon.SelectionOrder 2
   Weapon.AmmoGive 8
   Weapon.AmmoType "ShotgunAmmo"
   Weapon.AmmoUse 2
   Weapon.Kickback 100
   Weapon.SlotNumber 3
   Weapon.BobStyle InverseSmooth
   Weapon.BobSpeed 1.8
   Weapon.BobRangeY 0.4
   Weapon.BobRangeX 0.9
   Scale 1.1
   +NOAUTOFIRE
   +NOALERT
   +ALT_AMMO_OPTIONAL
   States
   {
   Spawn:
      STRG X -1
      Stop
   Ready:
   	  TNT1 A 0 A_JumpIf(CallACS("GunslingerMode"),"ZweiReady")
      TNT1 A 0 A_JumpIfInventory("PowerGunzerking",1,"ZweiReady")
      STRG 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")
      STRG A 1 A_Lower
      STRG A 0 A_Lower
      Loop
   Select:
      TNT1 A 0 A_JumpIf(CallACS("CrosshairMode"), 2)
      TNT1 A 0 A_SetCrosshair(54)
	  TNT1 A 0 A_JumpIf(CallACS("GunslingerMode"),"ZweiSelect")
      TNT1 A 0 A_JumpIfInventory("PowerGunzerking",1,"ZweiSelect")
      STRG A 1 A_Raise
      STRG A 0 A_Raise
      Loop  
   Fire:
      STRF A 0 A_PlaySound("Strucker/Fire",1,0.6)
      STRF A 0 A_PlaySound("Strucker/Add",5,0.4)
      STRF A 0 A_SetBlend("Yellow",0.1,7)
      STRF A 0 A_Recoil(6)
      STRF A 0 A_AlertMonsters
      STRF A 0 A_Quake (4, 8, 0, 3, none)
      STRF A 0 A_FireBullets(7,3,12,4*random(1.0,3.0),"HBulletPuff",FBF_USEAMMO|FBF_NORANDOM)
      STRF A 0 A_SetPitch(pitch-0.75)
      STRF A 0 A_SetAngle(angle-0.75)
	  STRF A 0 A_FireCustomMissile("GunsmokeSpawner_Small",0,0,3,0)
	  STRF A 0 A_FireCustomMissile("GunsmokeSpawner_Small",0,0,10,0)
      STRF A 1 Bright A_ZoomFactor(0.995)
      STRF A 0 A_SetPitch(pitch-1.5)
      STRF A 0 A_SetAngle(angle-1.5)
	  STRF A 0 A_FireCustomMissile("GunsmokeSpawner_Small",0,0,3,0)
	  STRF A 0 A_FireCustomMissile("GunsmokeSpawner_Small",0,0,10,0)
      STRF A 1 Bright A_ZoomFactor(0.99) //Sheesh.
      STRT A 1 A_ZoomFactor(0.98)
      STRF A 0 A_SetPitch(pitch-1)
      STRF A 0 A_SetAngle(angle-1)
      STRT B 1 A_ZoomFactor(0.97)
      STRF A 0 A_SetPitch(pitch-0.5)
      STRF A 0 A_SetAngle(angle-0.5)
      STRT C 1 A_ZoomFactor(0.96)
      STRF A 0 A_SetPitch(pitch-0.25)
      STRF A 0 A_SetAngle(angle-0.25)
      STRT D 1 A_ZoomFactor(0.955)
      STRT A 0 A_PlaySound("Strucker/Load",6,0.5)
	  STRT A 0 A_FireCustomMissile("ShottyCasingSpawner",0,0,20,-12)
      STRF A 0 A_SetPitch(pitch+0.25)
      STRF A 0 A_SetAngle(angle+0.25)
      STRT E 1 A_ZoomFactor(0.95)
      STRF A 0 A_SetPitch(pitch+0.5)
      STRF A 0 A_SetAngle(angle+0.5)
      STRT F 1 A_ZoomFactor(0.96)
	  STRT A 0 A_FireCustomMissile("ShottyCasingSpawner",0,0,20,-12)
      STRF A 0 A_SetPitch(pitch+0.5)
      STRF A 0 A_SetAngle(angle+0.5)
      STRT G 1 A_ZoomFactor(0.97)
      STRF A 0 A_SetPitch(pitch+0.5)
      STRF A 0 A_SetAngle(angle+0.5)
      STRT H 1 A_ZoomFactor(0.98)
      STRF A 0 A_SetPitch(pitch+0.5)
      STRF A 0 A_SetAngle(angle+0.5)
      STRT I 1 A_ZoomFactor(0.99)
      STRF A 0 A_SetPitch(pitch+0.5)
      STRF A 0 A_SetAngle(angle+0.5)
      STRT J 1 A_ZoomFactor(1)
      STRF A 0 A_SetPitch(pitch+0.25)
      STRF A 0 A_SetAngle(angle+0.25)
	  STRT KLMNO 1
      STRG A 0 A_ReFire
      Goto Ready
	AltFire:
	  STRM A 0
	  Goto Super::CheckForMagic
	Zoom:
	  TNT1 A 0 A_JumpIf(CallACS("GunslingerMode"),2)
	  STRK A 0 A_JumpIfInventory("PowerGunzerking",1,1)
	  Goto Super::Zoom
	  1TRK A 0
	  Goto Super::Zoom
	  
	//Zweihander

   ZweiSelect:
      3TRG A 0 A_Raise
      3TRG A 1 A_Raise
      Loop
   ZweiDeselect:
	  TNT1 A 0 A_TakeInventory("SynthFireActive",1)
	  TNT1 A 0 A_TakeInventory("SynthFireLeft",1)
	  TNT1 A 0 A_TakeInventory("SynthFireRight",1)
	  TNT1 A 0 A_GunFlash("Nullify",GFF_NOEXTCHANGE)
   Zweihander:
	  3TRG A 0 A_Lower
	  3TRG A 1 A_Lower
	  Loop
   ZweiReady:
	  3TRG A 0 A_GiveInventory("SynthFireActive",1)
	  3TRG A 0 ACS_NamedExecuteAlways("SynthLeft")
	  3TRG A 0 ACS_NamedExecuteAlways("SynthRight")
	  3TRG A 0 A_GunFlash("Flash",GFF_NOEXTCHANGE)
	  Goto RIdle
	
   //Right
   
   RIdle:
	  1TRG A 0 A_JumpIfInventory("SynthFireRight",1,"RFire")
	  1TRG A 1 A_WeaponReady(WRF_NOFIRE|WRF_ALLOWRELOAD|WRF_ALLOWZOOM)
	  TNT1 A 0 A_JumpIf(CallACS("GunslingerMode"),"RIdle")
	  1TRG A 0 A_JumpIfInventory("PowerGunzerking",1,"RIdle") 
	  Goto BackToReady
   BackToReady:
	  TNT1 A 0 A_GunFlash("Nullify",GFF_NOEXTCHANGE)
	  Goto Ready
   RFire:
   	  TNT1 A 0 A_JumpIf(CallACS("GunslingerMode"),2)
	  1TRG A 0 A_JumpIfInventory("PowerGunzerking",1,1) 
	  Goto BackToReady
	  1TRG A 1 A_JumpIfInventory("ShotgunAmmo",2,1)
	  Goto RIdle
	  //TNT1 A 0 A_TakeInventory("ShotgunAmmo",2)
      1TRF A 0 A_PlaySound("Strucker/Fire",1,0.6)
      1TRF A 0 A_PlaySound("Strucker/Add",5,0.4)
      1TRF A 0 A_SetBlend("Yellow",0.1,7)
      1TRF A 0 A_Recoil(3)
      1TRF A 0 A_AlertMonsters
      1TRF A 0 A_Quake (4, 8, 0, 3, none)
	  1TRF A 0 A_TakeInventory("ShotgunAmmo",2,TIF_NOTAKEINFINITE)
      1TRF A 0 A_FireBullets(7,3,12,4*random(1.0,3.0),"HBulletPuff",FBF_NORANDOM) //FBF_USEAMMO|
      1TRF A 0 A_SetPitch(pitch-0.75)
      1TRF A 0 A_SetAngle(angle-0.75)
	  STRF A 0 A_FireCustomMissile("GunsmokeSpawner_Small",0,0,11,-2)
	  STRF A 0 A_FireCustomMissile("GunsmokeSpawner_Small",0,0,18,-2)
      1TRF A 1 Bright A_ZoomFactor(0.995)
      1TRF A 0 A_SetPitch(pitch-1.5)
      1TRF A 0 A_SetAngle(angle-1.5)
	  STRF A 0 A_FireCustomMissile("GunsmokeSpawner_Small",0,0,11,-2)
	  STRF A 0 A_FireCustomMissile("GunsmokeSpawner_Small",0,0,18,-2)
      1TRF A 1 Bright A_ZoomFactor(0.99)
      1TRT A 1 A_ZoomFactor(0.98)
      1TRF A 0 A_SetPitch(pitch-1)
      1TRF A 0 A_SetAngle(angle-1)
      1TRT B 1 A_ZoomFactor(0.97)
      1TRF A 0 A_SetPitch(pitch-0.5)
      1TRF A 0 A_SetAngle(angle-0.5)
      1TRT C 1 A_ZoomFactor(0.96)
      1TRF A 0 A_SetPitch(pitch-0.25)
      1TRF A 0 A_SetAngle(angle-0.25)
      1TRT D 1 A_ZoomFactor(0.955)
      1TRF A 0 A_PlaySound("Strucker/Load",6,0.5)
	  STRT A 0 A_FireCustomMissile("ShottyCasingSpawner",0,0,30,-12)
      1TRF A 0 A_SetPitch(pitch+0.25)
      1TRF A 0 A_SetAngle(angle+0.25)
      1TRT E 1 A_ZoomFactor(0.95)
      1TRF A 0 A_SetPitch(pitch+0.5)
      1TRF A 0 A_SetAngle(angle+0.5)
      1TRT F 1 A_ZoomFactor(0.96)
	  STRT A 0 A_FireCustomMissile("ShottyCasingSpawner",0,0,30,-12)
      1TRF A 0 A_SetPitch(pitch+0.5)
      1TRF A 0 A_SetAngle(angle+0.5)
      1TRT G 1 A_ZoomFactor(0.97)
      1TRF A 0 A_SetPitch(pitch+0.5)
      STRF A 0 A_SetAngle(angle+0.5)
      1TRT H 1 A_ZoomFactor(0.98)
      1TRF A 0 A_SetPitch(pitch+0.5)
      1TRF A 0 A_SetAngle(angle+0.5)
      1TRT I 1 A_ZoomFactor(0.99)
      1TRF A 0 A_SetPitch(pitch+0.5)
      1TRF A 0 A_SetAngle(angle+0.5)
      1TRT J 1 A_ZoomFactor(1)
      1TRF A 0 A_SetPitch(pitch+0.25)
      1TRF A 0 A_SetAngle(angle+0.25)
	  1TRT KLMNO 1
	  1TRG A 0 A_JumpIfInventory("SynthFireRight",1,"RFire")
	  Goto RIdle
	
   //Left
	 
   Nullify:
	  TNT1 A 0
	  Stop
   Flash:
	  TNT1 A 0 A_Light0
   LIdle:
	  2TRG A 1 A_JumpIfInventory("SynthFireLeft",1,"LFire")
	  Loop
   LFire:
   	  TNT1 A 0 A_JumpIf(CallACS("GunslingerMode"),2)
	  2TRG A 0 A_JumpIfInventory("PowerGunzerking",1,1) 
	  Goto Nullify
	  2TRG A 1 A_JumpIfInventory("ShotgunAmmo",2,1)
	  Goto LIdle
	  //TNT1 A 0 A_TakeInventory("ShotgunAmmo",2)
      2TRF A 0 A_PlaySound("Strucker/Fire",1,0.6)
      2TRF A 0 A_PlaySound("Strucker/Add",5,0.4)
      2TRF A 0 A_SetBlend("Yellow",0.1,7)
      2TRF A 0 A_Recoil(3)
      2TRF A 0 A_AlertMonsters
      2TRF A 0 A_Quake (4, 8, 0, 3, none)
	  2TRF A 0 A_TakeInventory("ShotgunAmmo",2,TIF_NOTAKEINFINITE)
      2TRF A 0 A_FireBullets(7,3,12,4*random(1.0,3.0),"HBulletPuff",FBF_NORANDOM) //FBF_USEAMMO|
      2TRF A 0 A_SetPitch(pitch-0.75)
      2TRF A 0 A_SetAngle(angle+0.75)
	  STRF A 0 A_FireCustomMissile("GunsmokeSpawner_Small",0,0,-11,-2)
	  STRF A 0 A_FireCustomMissile("GunsmokeSpawner_Small",0,0,-18,-2)
      2TRF A 1 Bright A_ZoomFactor(0.995)
      2TRF A 0 A_SetPitch(pitch-1.5)
      2TRF A 0 A_SetAngle(angle+1.5)
	  STRF A 0 A_FireCustomMissile("GunsmokeSpawner_Small",0,0,-11,-2)
	  STRF A 0 A_FireCustomMissile("GunsmokeSpawner_Small",0,0,-18,-2)
      2TRF A 1 Bright A_ZoomFactor(0.99)
      2TRT A 1 A_ZoomFactor(0.98)
      2TRF A 0 A_SetPitch(pitch-1)
      2TRF A 0 A_SetAngle(angle+1)
      2TRT B 1 A_ZoomFactor(0.97)
      2TRF A 0 A_SetPitch(pitch-0.5)
      2TRF A 0 A_SetAngle(angle+0.5)
      2TRT C 1 A_ZoomFactor(0.96)
      2TRF A 0 A_SetPitch(pitch-0.25)
      2TRF A 0 A_SetAngle(angle+0.25)
      2TRT D 1 A_ZoomFactor(0.955)
      2TRF A 0 A_PlaySound("Strucker/Load",6,0.5)
	  STRT A 0 A_FireCustomMissile("ShottyCasingSpawnerLeft",0,0,-30,-12)
      2TRF A 0 A_SetPitch(pitch+0.25)
      2TRF A 0 A_SetAngle(angle-0.25)
      2TRT E 1 A_ZoomFactor(0.95)
      2TRF A 0 A_SetPitch(pitch+0.5)
      2TRF A 0 A_SetAngle(angle-0.5)
      2TRT F 1 A_ZoomFactor(0.96)
	  STRT A 0 A_FireCustomMissile("ShottyCasingSpawnerLeft",0,0,-30,-12)
      2TRF A 0 A_SetPitch(pitch+0.5)
      2TRF A 0 A_SetAngle(angle-0.5)
      2TRT G 1 A_ZoomFactor(0.97)
      2TRF A 0 A_SetPitch(pitch+0.5)
      STRF A 0 A_SetAngle(angle-0.5)
      2TRT H 1 A_ZoomFactor(0.98)
      2TRF A 0 A_SetPitch(pitch+0.5)
      2TRF A 0 A_SetAngle(angle-0.5)
      2TRT I 1 A_ZoomFactor(0.99)
      2TRF A 0 A_SetPitch(pitch+0.5)
      2TRF A 0 A_SetAngle(angle-0.5)
      2TRT J 1 A_ZoomFactor(1)
      2TRF A 0 A_SetPitch(pitch+0.25)
      2TRF A 0 A_SetAngle(angle-0.25)
	  2TRT KLMNO 1
	  2TRG A 0 A_JumpIfInventory("SynthFireLeft",1,"LFire")
	  Goto LIdle
	}
}
