ACTOR SSC : Weapon 25016
{
	Game Doom
	DamageType "rocket"
	Weapon.UpSound "Weapons/OGCUP"
	Tag "G&P-198 ECS Firestorm Mk.3"
	Weapon.PreferredSkin "Minigun-DoomMarine"
	Weapon.AmmoType "OrganClip" 
	Weapon.AmmoType2 "OrganClip"
	Decal "BlazeChip"
	Weapon.AmmoGive 250
	Weapon.AmmoUse 1
	Weapon.Selectionorder 700
	Weapon.Kickback 50
	Weapon.SlotNumber 4
	Weapon.SlotPriority 0
	inventory.pickupmessage "You got the Grimm & Payne FSAC Mk.2 'Firestorm' Autocannon!"
	Obituary "%o didn't quite make it through %k's Firestorm."
	SpawnID 214
	Radius 20
	Height 16
	Scale 0.75
	weapon.bobstyle inversesmooth
   weapon.bobrangeX 0.4
   weapon.bobrangeY 0.6
   weapon.bobspeed 2.5
	+WEAPON.AMMO_OPTIONAL
   +WEAPON.ALT_AMMO_OPTIONAL
	+NOEXTREMEDEATH
	States
	{
	Spawn:
		CHNG X -1
		Loop
	Ready:
		TNT1 A 0 A_TakeInventory("HitTheGas",1)
		CHNG A 1 A_WeaponReady
		Loop
	Deselect:
      TNT1 A 0 SetPlayerProperty(0,1,2)
	  TNT1 A 0 A_SetCrosshair(1)
	  TNT1 A 0 A_JumpIfInventory("HitTheGas",1,"Deselect2")
	  TNT1 A 0 A_PlayWeaponSound("weapons/holster")
	  CHNX FGHIJ 1
	  Goto DeselectLoop
	Deselect2:
      TNT1 A 0 SetPlayerProperty(0,1,2)
	  ZGGG A 0 A_TakeInventory("HitTheGas",1)
	  TNT1 A 0 A_StopSound(6)
	  TNT1 A 0 A_StopSound(7)
	  TNT1 A 0 A_PlaySound("DA250/Spindown",5,0.75)
	  CHNG ABCDABCDABCD 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
	  CHND ABCDEFGABCDE 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
      CHND FFGGAABBCCCDDDEEEEFFFFGGGGAAAABBBBCCCCCDDDDDEEEEEFFFFFFGGGGGGGG 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
	  TNT1 A 0 A_PlayWeaponSound("weapons/holster")
	  TNT1 A 0 A_SetCrosshair(1)
	  CHNX FGHIJ 1
	  Goto DeselectLoop
   DeselectLoop:
      TNT1 A 1 A_Lower
      Loop
   Select:
      TNT1 A 0 SetPlayerProperty(0,0,2)
	  TNT1 A 0 A_SetCrosshair(6)
      CHNX ABCDE 1
      Goto SelectLoop
   SelectLoop:
      CHNG A 1 A_Raise
	  loop
   SpinEmBro:
	  TNT1 A 0 A_StopSound(5)
	  ZGGG A 0 A_PlaySound("DA250/Spinloop",6,0.9,1)
	  ZGGG A 0 A_AlertMonsters
	  CHNG ABCDABCDABCD 1 A_WeaponReady
	  ZGGG A 0 A_TakeInventory("HitTheBrakes",1)
	  ZGGG A 0 A_JumpIfInventory("HitTheGas",1,"SpinEmBro")
	  ZGGG A 0 A_PlaySound("DA250/Spindown",5,0.9,0)
	  CHNG ABCDABCDABCD 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
	  CHND ABCDEFGABCDE 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
      CHND FFGGAABBCCCDDDEEEEFFFFGGGGAAAABBBBCCCCCDDDDDEEEEEFFFFFFGGGGGGGG 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
	  Goto Ready
   Fire:
	  TNT1 A 0 A_JumpIfInventory("HitTheGas",1,"Hold")
	  TNT1 A 0 A_PlaySound("DA250/Spinup",5,0.9,0)
	  TNT1 A 0 A_GiveInventory("HitTheGas",1)
	  CHND ABCDEFG 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
	  CHNG ABCD 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
	  CHNG ABCD 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
	  CHNG ABCD 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
	  CHNG ABCDABCD 1 A_WeaponReady
	  Goto SpinEmBro
   DryFire:
	  TNT1 A 0 A_PlaySound("DA250/Empty",5,0.9,1)
	  TNT1 A 0 A_StopSound(6)
	  TNT1 A 0 A_StopSound(7)
	  CHNG A 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
	  CHNG B 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
	  CHNG C 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
	  CHNG D 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
	  TNT1 A 0 A_PlaySound("DA250/Empty",5,0.9,1)
	  TNT1 A 0 A_StopSound(6)
	  TNT1 A 0 A_StopSound(7)
	  CHNG A 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
	  CHNG B 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
	  CHNG C 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
	  CHNG D 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
	  TNT1 A 0 A_PlaySound("DA250/Empty",5,0.9,1)
	  TNT1 A 0 A_StopSound(6)
	  TNT1 A 0 A_StopSound(7)
	  CHNG A 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
	  CHNG B 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
	  CHNG C 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
	  CHNG D 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
	  TNT1 A 0 A_Refire
	  Goto AltFire
   Hold:
	  TNT1 A 0 A_JumpIfInventory("OrganClip",1,1)
	  goto DryFire
	  goto TrueHold
   TrueHold:
   Fire1:
	  TNT1 A 0 A_JumpIfInventory("OrganClip",1,1)
	  goto DryFire
	  TNT1 A 0 A_SpawnItemEx("Lightprojectile",0,0,0,0)
	  TNT1 A 0 A_PlaySound("DA250/FireLoop",5,1.5,1)
	  TNT1 A 0 A_PlaySound("DA250/FireAdd",6,1.0,1)
	  TNT1 A 0 Radius_Quake(1, 8, 0, 4, 0)
	  TNT1 A 0 A_FireCustomMissile("P_AShot_Tracer", random(-2, 2), 1, 3.5, 5, 0,random(-2, 2))
	  TNT1 A 0 A_Firecustommissile("OGrinder_CasingSpawner",0,0,4,-18)
	  CHNF A 1 Bright A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
	  TNT1 A 0 A_FireCustomMissile("P_AShot_Tracer", random(-4, 4), 1, 3.5, 5, 0,random(-4, 4))
	  TNT1 A 0 A_Firecustommissile("OGrinder_CasingSpawner",0,0,5,-19)
	  TNT1 A 0 A_JumpIfInventory("OrganClip",1,1)
	  goto DryFire
	  TNT1 A 0 A_SpawnItemEx("Lightprojectile",0,0,0,0)
	  TNT1 A 0 A_PlaySound("DA250/FireLoop",5,1.5,1)
	  TNT1 A 0 A_PlaySound("DA250/FireAdd",6,1.0,1)
	  TNT1 A 0 Radius_Quake(1, 8, 0, 4, 0)
	  TNT1 A 0 A_FireCustomMissile("P_AShot_Tracer", random(-2, 2), 1, 3.5, 5, 0,random(-2, 2))
	  TNT1 A 0 A_Firecustommissile("OGrinder_CasingSpawner",0,0,4,-18)
	  CHNF B 1 Bright A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
	  TNT1 A 0 A_FireCustomMissile("P_AShot_Tracer", random(-4, 4), 1, 3.5, 5, 0,random(-4, 4))
	  TNT1 A 0 A_Firecustommissile("OGrinder_CasingSpawner",0,0,5,-19)
	  TNT1 A 0 A_JumpIfInventory("OrganClip",1,1)
	  goto DryFire
	  TNT1 A 0 A_SpawnItemEx("Lightprojectile",0,0,0,0)
	  TNT1 A 0 A_PlaySound("DA250/FireLoop",5,1.5,1)
	  TNT1 A 0 A_PlaySound("DA250/FireAdd",6,1.0,1)
	  TNT1 A 0 Radius_Quake(1, 8, 0, 4, 0)
	  TNT1 A 0 A_FireCustomMissile("P_AShot_Tracer", random(-2, 2), 1, 3.5, 5, 0,random(-2, 2))
	  TNT1 A 0 A_Firecustommissile("OGrinder_CasingSpawner",0,0,4,-18)
	  CHNF C 1 Bright A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
	  TNT1 A 0 A_FireCustomMissile("P_AShot_Tracer", random(-4, 4), 1, 3.5, 5, 0,random(-4, 4))
	  TNT1 A 0 A_Firecustommissile("OGrinder_CasingSpawner",0,0,5,-19)
	  TNT1 A 0 A_JumpIfInventory("OrganClip",1,1)
	  goto DryFire
	  TNT1 A 0 A_SpawnItemEx("Lightprojectile",0,0,0,0)
	  TNT1 A 0 A_PlaySound("DA250/FireLoop",5,1.5,1)
	  TNT1 A 0 A_PlaySound("DA250/FireAdd",6,1.0,1)
	  TNT1 A 0 Radius_Quake(1, 8, 0, 4, 0)
	  TNT1 A 0 A_FireCustomMissile("P_AShot_Tracer", random(-2, 2), 1, 3.5, 5, 0,random(-2, 2))
	  TNT1 A 0 A_Firecustommissile("OGrinder_CasingSpawner",0,0,4,-18)
	  CHNF D 1 Bright A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
	  TNT1 A 0 A_FireCustomMissile("P_AShot_Tracer", random(-4, 4), 1, 3.5, 5, 0,random(-4, 4))
	  TNT1 A 0 A_Firecustommissile("OGrinder_CasingSpawner",0,0,5,-19)
	  TNT1 A 0 A_JumpIfInventory("OrganClip",1,1)
	  goto DryFire
	  TNT1 A 0 A_Refire
	  Goto Endler
   Endler:
	  TNT1 A 0 A_PlaySoundEX("DA250/FireStop","Weapon", 0)
	  TNT1 A 0 A_StopSound(5)
	  TNT1 A 0 A_StopSound(6)
	  TNT1 A 0 A_StopSound(7)
	  Goto SpinEmBro
   AltFire:
	  ZGGG A 0 A_JumpIfInventory("HitTheGas",1,1)
	  Goto Ready
	  ZGGG A 0 A_TakeInventory("HitTheGas",1)
	  TNT1 A 0 A_StopSound(5)
	  TNT1 A 0 A_StopSound(6)
	  TNT1 A 0 A_StopSound(7)
	  TNT1 A 0 A_PlaySound("DA250/Spindown",5,0.9)
	  CHNG ABCDABCDABCD 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
	  CHND ABCDEFGABCDE 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
      CHND FFGGAABBCCCDDDEEEEFFFFGGGGAAAABBBBCCCCCDDDDDEEEEEFFFFFFGGGGGGGG 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
	  Goto Ready
   }
}

ACTOR HitTheGas : Inventory
{
     Inventory.MaxAmount 1
}

ACTOR HitTheBrakes : Inventory
{
     Inventory.MaxAmount 1
}

ACTOR OrganClip : Ammo
{
Inventory.PickupSound "DA250/Ammo"
Inventory.Pickupmessage "You picked up a supply case for the Stahll & Sons OGC-157E3."
Inventory.Amount 100
Inventory.MaxAmount 600
Ammo.BackpackAmount 200
Ammo.BackpackMaxAmount 1200
Scale 0.093
+IGNORESKILL
States
    {
    Spawn:
        OGCB A -1
        Stop
    }
}

ACTOR OGrinder_CasingSpawner
{
    Radius 1
    Height 1
    Speed 15
    PROJECTILE
    States
    {
    Spawn:
        TNT1 A 1
        TNT1 A 0 A_Die
        Goto Death
    Death:
		TNT1 A 1 A_SpawnItemEx("OGrinder_BeltLink", 0, 15, 0, random(0,2), random(5,6), random(0,2), 0, SXF_TRANSFERPOINTERS)
        TNT1 A 0 A_SpawnItemEx("OGrinder_Casing", 0, 10, 0, random(0,1), random(4,5), random(0,1), 0, SXF_TRANSFERPOINTERS)
        Stop
    }
}

actor OGrinder_Casing {
	scale 0.18
	radius 2
	height 2
	speed 6
	mass 4
	bouncefactor 0.5
	bouncecount 5
	PROJECTILE
	+DOOMBOUNCE
	+NODROPOFF
	+FORCEXYBILLBOARD
	+NOTELEPORT
	+FLOORCLIP
	-NOGRAVITY
	-NOBLOCKMAP
	+ClientSideOnly
	+NOTIMEFREEZE
	seesound "Weapons/HeavyCasing"
	states{
		spawn:
		    TNT1 A 0 ThrustThingZ(0, Random(6, 16), 0, 1)
			ARBC ABCDEF 2
			loop
		death:
			TNT1 A 0 A_Jump(255, "pos1", "pos2", "pos3")
			TNT1 A 0
		pos1:
			ARBC A 10
			ARBC AAAAAAAAAA 1 A_FadeOut(0.1)
			stop
		pos2:
			ARBC D 10
			ARBC DDDDDDDDDD 1 A_FadeOut(0.1)
			stop
		pos3:
			ARBC C 10
			ARBC CCCCCCCCCC 1 A_FadeOut(0.1)
			stop
			
	}
}

actor OGrinder_BeltLink {
	scale 0.12
	radius 2
	height 2
	speed 6
	mass 4
	bouncefactor 0.5
	bouncecount 5
	PROJECTILE
	+DOOMBOUNCE
	+NODROPOFF
	+FORCEXYBILLBOARD
	+NOTELEPORT
	+FLOORCLIP
	-NOGRAVITY
	-NOBLOCKMAP
	+ClientSideOnly
	+NOTIMEFREEZE
	seesound "Weapons/BeltLink"
	states{
		spawn:
		    TNT1 A 0 ThrustThingZ(0, Random(6, 16), 0, 1)
			LINK ABCDEFGH 2
			loop
		death:
			TNT1 A 0 A_Jump(255, "pos1", "pos2", "pos3")
			TNT1 A 0
		pos1:
			LINK C 10
			LINK CCCCCCCCCC 1 A_FadeOut(0.1)
			stop
		pos2:
			LINK E 10
			LINK EEEEEEEEEE 1 A_FadeOut(0.1)
			stop
		pos3:
			LINK H 10
			LINK HHHHHHHHHH 1 A_FadeOut(0.1)
			stop
			
	}
}