// MACHINE GUN
actor MachineGun : AOWWeapon replaces Chaingun 21044 {
    Weapon.BobSpeed 1.75
    Weapon.BobRangeX 0.2
    Weapon.BobRangeY 0.4
    Weapon.BobStyle Alpha
	+NOEXTREMEDEATH
	Obituary "$OB_MACHINEGUN"
	Weapon.selectionorder 14
	Weapon.AmmoType "MachinegunMag"
	Weapon.AmmoUse 1
	Weapon.AmmoGive2 45
	Weapon.AmmoType2 "MachineGunAmmo"
	Inventory.PickupMessage "You got the machine gun!"
	Weapon.PreferredSkin "MarineMachineGun"
	Weapon.UpSound "weapons/up/machinegun"
	Tag "Machinegun"
	decal "BulletChip"
	+WEAPON.AMMO_OPTIONAL
	states {
    Select:
		AK47 A 1 offset (-90,100)
		AK47 A 1 offset (-80,89)
		AK47 A 1 offset (-70,79)
		AK47 A 1 offset (-60,70)
		AK47 A 1 offset (-50,62)
		AK47 A 1 offset (-40,55)
		AK47 A 1 offset (-30,49)
		AK47 A 1 offset (-20,44)
		AK47 A 1 offset (-15,40)
		AK47 A 1 offset (-10,37)
		AK47 A 1 offset (-5,34)
		AK47 A 1 offset (0,0)
		TNT1 A 0 A_TakeInventory("SelectAnimation",1)
		goto ready
	Deselect:
		TNT1 A 0 A_TakeInventory("ActionFragGrenade",1)	
        TNT1 A 0 A_TakeInventory("ActionFlashbang",1)
        TNT1 A 0 A_TakeInventory("ActionRemoteC4",1)	
        TNT1 A 0 A_TakeInventory("ActionMeleeAttack",1)
		TNT1 A 0 A_TakeInventory("ActionReload",1)	
		AK47 A 1 offset (-4,34)
		AK47 A 1 offset (-8,40)
		AK47 A 1 offset (-16,49)
		AK47 A 1 offset (-24,62)
		AK47 A 1 offset (-32,79)
		AK47 A 1 offset (-40,100)
		TNT1 A 0 offset (-1, 33)
		TNT1 A 0 A_Lower
		wait
	Ready:
	    TNT1 A 0 A_JumpIfInventory("SelectAnimation",1,"Select")
		TNT1 A 0 A_JumpIfInventory("ActionFragGrenade",1,"UseFragGrenade")
		TNT1 A 0 A_JumpIfInventory("ActionFlashbang",1,"UseFlashbang")
		TNT1 A 0 A_JumpIfInventory("ActionRemoteC4",1,"UseRemoteC4")
		TNT1 A 0 A_JumpIfInventory("ActionMeleeAttack",1,"UseMeleeAttack")
		TNT1 A 0 A_JumpIfInventory("ActionReload",1,"Reload")
		AK47 A 1 A_WeaponReady
		loop
	Fire:
		TNT1 A 0 A_JumpIfInventory ("IsInSpawnRoom", 1, "Ready")
		TNT1 A 0 A_JumpIfInventory ("InMenu", 1, "Ready")
		TNT1 A 0 A_JumpIfNoAmmo("Empty")
		TNT1 A 0 A_JumpIfInventory ("IsMachinegunner", 1, "FireClass")
		TNT1 A 0 A_Light2
		TNT1 A 0 A_PlaySound ("weapons/m16fire", CHAN_WEAPON)
		TNT1 A 0 bright A_SpawnItemEx("RifleShellCasing",4,13,34,random(-2,-4),random(2,3),random(0,1),random(45,60),128)
		TNT1 A 0 BRIGHT A_FireBullets (1.2, 1.2, -1, 12, "RiflePuff", FBF_NORANDOM|FBF_USEAMMO, 3072)
		TNT1 A 0 BRIGHT A_GunFlash
		AK47 B 1 bright A_SetPitch(pitch-0.25)	
		TNT1 A 0 A_SetPitch(pitch+0.25)	
		AK47 C 1 BRIGHT A_Light1
		AK47 DE 1 A_Light0
		AK47 A 0 A_Light2
		TNT1 A 0 A_PlaySound ("weapons/m16fire", CHAN_WEAPON)
		TNT1 A 0 bright A_SpawnItemEx("RifleShellCasing",4,13,34,random(-2,-4),random(2,3),random(0,1),random(45,60),128)
		TNT1 A 0 BRIGHT A_FireBullets (1.2, 1.2, -1, 12, "RiflePuff", FBF_NORANDOM|FBF_USEAMMO, 3072)
		TNT1 A 0 BRIGHT A_GunFlash ("Flash2")
		AK47 F 1 bright A_SetPitch(pitch-0.25)	
		TNT1 A 0 A_SetPitch(pitch+0.25)	
		AK47 G 1 BRIGHT A_Light1
		AK47 HI 1 A_Light0
		AK47 A 0 A_Light2
		TNT1 A 0 A_PlaySound ("weapons/m16fire", CHAN_WEAPON)
		TNT1 A 0 bright A_SpawnItemEx("RifleShellCasing",4,13,34,random(-2,-4),random(2,3),random(0,1),random(45,60),128)
		TNT1 A 0 BRIGHT A_FireBullets (1.2, 1.2, -1, 12, "RiflePuff", FBF_NORANDOM|FBF_USEAMMO, 3072)
		TNT1 A 0 BRIGHT A_GunFlash
		AK47 B 1 bright A_SetPitch(pitch-0.25)	
		TNT1 A 0 A_SetPitch(pitch+0.25)	
		AK47 C 1 BRIGHT A_Light1
		AK47 DE 1 A_Light0
		AK47 J 4 A_ReFire
		AK47 A 2
		goto Ready
	FireClass:
		TNT1 A 0 A_Light2
		TNT1 A 0 A_PlaySound ("weapons/m16fire", CHAN_WEAPON)
		TNT1 A 0 bright A_SpawnItemEx("RifleShellCasing",4,13,34,random(-2,-4),random(2,3),random(0,1),random(45,60),128)
		TNT1 A 0 BRIGHT A_FireBullets (1.2, 1.2, -1, 14, "RiflePuff", FBF_NORANDOM|FBF_USEAMMO, 3072)
		TNT1 A 0 BRIGHT A_GunFlash
		AK47 B 1 bright A_SetPitch(pitch-0.25)	
		TNT1 A 0 A_SetPitch(pitch+0.25)	
		AK47 C 1 BRIGHT A_Light1
		AK47 DE 1 A_Light0
		AK47 A 0 A_Light2
		TNT1 A 0 A_PlaySound ("weapons/m16fire", CHAN_WEAPON)
		TNT1 A 0 bright A_SpawnItemEx("RifleShellCasing",4,13,34,random(-2,-4),random(2,3),random(0,1),random(45,60),128)
		TNT1 A 0 BRIGHT A_FireBullets (1.2, 1.2, -1, 14, "RiflePuff", FBF_NORANDOM|FBF_USEAMMO, 3072)
		TNT1 A 0 BRIGHT A_GunFlash ("Flash2")
		AK47 F 1 bright A_SetPitch(pitch-0.25)	
		TNT1 A 0 A_SetPitch(pitch+0.25)	
		AK47 G 1 BRIGHT A_Light1
		AK47 HI 1 A_Light0
		AK47 A 0 A_Light2
		TNT1 A 0 A_PlaySound ("weapons/m16fire", CHAN_WEAPON)
		TNT1 A 0 bright A_SpawnItemEx("RifleShellCasing",4,13,34,random(-2,-4),random(2,3),random(0,1),random(45,60),128)
		TNT1 A 0 BRIGHT A_FireBullets (1.2, 1.2, -1, 14, "RiflePuff", FBF_NORANDOM|FBF_USEAMMO, 3072)
		TNT1 A 0 BRIGHT A_GunFlash
		AK47 B 1 bright A_SetPitch(pitch-0.25)	
		TNT1 A 0 A_SetPitch(pitch+0.25)	
		AK47 C 1 BRIGHT A_Light1
		AK47 DE 1 A_Light0
		AK47 J 4 A_ReFire
		AK47 A 2
		goto Ready
	Hold:
		TNT1 A 0 A_JumpIfInventory ("IsInSpawnRoom", 1, "Ready")
		TNT1 A 0 A_JumpIfInventory ("InMenu", 1, "Ready")
		TNT1 A 0 A_JumpIfNoAmmo("Empty")
		TNT1 A 0 A_JumpIfInventory ("MachineGunSwitch", 1, "Hold2")
		TNT1 A 0 A_Light2
		TNT1 A 0 A_PlaySound ("weapons/m16fire", CHAN_WEAPON)
		TNT1 A 0 bright A_SpawnItemEx("RifleShellCasing",4,13,34,random(-2,-4),random(2,3),random(0,1),random(45,60),128)
		TNT1 A 0 BRIGHT A_FireBullets (4.5, 4.5, -1, 14, "RiflePuff", FBF_NORANDOM|FBF_USEAMMO, 3072)
		TNT1 A 0 BRIGHT A_GunFlash ("Flash2")
		AK47 F 1 bright A_SetPitch(pitch-0.5)	
		TNT1 A 0 A_SetPitch(pitch+0.5)	
		AK47 G 1 BRIGHT A_Light1
		AK47 HI 1 A_Light0
		TNT1 A 0 A_Light2
		TNT1 A 0 A_PlaySound ("weapons/m16fire", CHAN_WEAPON)
		TNT1 A 0 bright A_SpawnItemEx("RifleShellCasing",4,13,34,random(-2,-4),random(2,3),random(0,1),random(45,60),128)
		TNT1 A 0 BRIGHT A_FireBullets (4.5, 4.5, -1, 14, "RiflePuff", FBF_NORANDOM|FBF_USEAMMO, 3072)
		TNT1 A 0 BRIGHT A_GunFlash
		AK47 B 1 bright A_SetPitch(pitch-0.5)	
		TNT1 A 0 A_SetPitch(pitch+0.5)	
		AK47 C 1 BRIGHT A_Light1
		AK47 DE 1 A_Light0
		TNT1 A 0 A_Light2
		TNT1 A 0 A_PlaySound ("weapons/m16fire", CHAN_WEAPON)
		TNT1 A 0 bright A_SpawnItemEx("RifleShellCasing",4,13,34,random(-2,-4),random(2,3),random(0,1),random(45,60),128)
		TNT1 A 0 BRIGHT A_FireBullets (4.5, 4.5, -1, 14, "RiflePuff", FBF_NORANDOM|FBF_USEAMMO, 3072)
		TNT1 A 0 BRIGHT A_GunFlash ("Flash2")
		AK47 F 1 bright A_SetPitch(pitch-0.5)	
		TNT1 A 0 A_SetPitch(pitch+0.5)	
		AK47 G 1 BRIGHT A_Light1
		AK47 HI 1 A_Light0
		TNT1 A 0 A_GiveInventory ("MachineGunSwitch", 1)
		AK47 J 6 A_ReFire
		goto Ready
	Hold2:
		TNT1 A 0 A_Light2
		TNT1 A 0 A_PlaySound ("weapons/m16fire", CHAN_WEAPON)
		TNT1 A 0 bright A_SpawnItemEx("RifleShellCasing",4,13,34,random(-2,-4),random(2,3),random(0,1),random(45,60),128)
		TNT1 A 0 BRIGHT A_FireBullets (4.5, 4.5, -1, 14, "RiflePuff", FBF_NORANDOM|FBF_USEAMMO, 3072)
		TNT1 A 0 BRIGHT A_GunFlash
		AK47 B 1 bright A_SetPitch(pitch-0.5)	
		TNT1 A 0 A_SetPitch(pitch+0.5)	
		AK47 C 1 BRIGHT A_Light1
		AK47 DE 1 A_Light0
		TNT1 A 0 A_Light2
		TNT1 A 0 A_PlaySound ("weapons/m16fire", CHAN_WEAPON)
		TNT1 A 0 bright A_SpawnItemEx("RifleShellCasing",4,13,34,random(-2,-4),random(2,3),random(0,1),random(45,60),128)
		TNT1 A 0 BRIGHT A_FireBullets (4.5, 4.5, -1, 14, "RiflePuff", FBF_NORANDOM|FBF_USEAMMO, 3072)
		TNT1 A 0 BRIGHT A_GunFlash ("Flash2")
		AK47 F 1 bright A_SetPitch(pitch-0.5)	
		TNT1 A 0 A_SetPitch(pitch+0.5)	
		AK47 G 1 BRIGHT A_Light1
		AK47 HI 1 A_Light0
		TNT1 A 0 A_Light2
		TNT1 A 0 A_PlaySound ("weapons/m16fire", CHAN_WEAPON)
		TNT1 A 0 bright A_SpawnItemEx("RifleShellCasing",4,13,34,random(-2,-4),random(2,3),random(0,1),random(45,60),128)
		TNT1 A 0 BRIGHT A_FireBullets (4.5, 4.5, -1, 14, "RiflePuff", FBF_NORANDOM|FBF_USEAMMO, 3072)
		TNT1 A 0 BRIGHT A_GunFlash
		AK47 B 1 bright A_SetPitch(pitch-0.5)	
		TNT1 A 0 A_SetPitch(pitch+0.5)	
		AK47 C 1 BRIGHT A_Light1
		AK47 DE 1 A_Light0
		TNT1 A 0 A_TakeInventory ("MachineGunSwitch", 1)
		AK47 J 6 A_ReFire
		goto Ready
	AltFire:
		TNT1 A 0 A_JumpIfInventory ("IsInSpawnRoom", 1, "Ready")
		TNT1 A 0 A_JumpIfInventory ("InMenu", 1, "Ready")
	    LSRF A 0 A_JumpIfInventory ("IsMachinegunner", 1, "AltFireClass")
		goto Ready
    AltFireClass:
	    TNT1 A 0 A_JumpIfInventory("MachinegunMag",1,1)
	    Goto Empty
	    TNT1 A 0 A_GunFlash
		TNT1 A 0 A_PlaySound ("weapons/m16fire", CHAN_WEAPON)
	    TNT1 A 0 A_SpawnItemEx("RifleShellCasing",4,13,34,random(-2,-4),random(2,3),random(0,1),random(45,60),128)
	    AK47 B 1 Bright A_FireBullets (3, 3, -1, 14, "RiflePuff", FBF_NORANDOM|FBF_USEAMMO, 3072)
		TNT1 A 0 A_TakeInventory("MachinegunMag",1)
		AK47 C 1 A_SetPitch(pitch-0.25)
	    AK47 D 1 A_SetPitch(pitch+0.25)
		TNT1 A 0 A_JumpifInventory("MachinegunMag",1,1)
		Goto Empty
	
	    TNT1 A 0 A_GunFlash ("Flash2")
		TNT1 A 0 A_PlaySound ("weapons/m16fire", CHAN_WEAPON)
	    TNT1 A 0 A_SpawnItemEx("RifleShellCasing",4,13,34,random(-2,-4),random(2,3),random(0,1),random(45,60),128)
	    AK47 F 1 Bright A_FireBullets (3, 3, -1, 14, "RiflePuff", FBF_NORANDOM|FBF_USEAMMO, 3072)
		TNT1 A 0 A_TakeInventory("MachinegunMag",1)
		AK47 G 1 A_SetPitch(pitch-0.25)
	    AK47 H 1 A_SetPitch(pitch+0.25)
		TNT1 A 0 A_JumpifInventory("MachinegunMag",1,1)
		Goto Empty
	
	    TNT1 A 0 A_GunFlash
		TNT1 A 0 A_PlaySound ("weapons/m16fire", CHAN_WEAPON)
	    TNT1 A 0 A_SpawnItemEx("RifleShellCasing",4,13,34,random(-2,-4),random(2,3),random(0,1),random(45,60),128)
	    AK47 B 1 Bright A_FireBullets (3, 3, -1, 14, "RiflePuff", FBF_NORANDOM|FBF_USEAMMO, 3072)
		TNT1 A 0 A_TakeInventory("MachinegunMag",1)
		AK47 C 1 A_SetPitch(pitch-0.25)
	    AK47 D 1 A_SetPitch(pitch+0.25)
		TNT1 A 0 A_JumpifInventory("MachinegunMag",1,1)
		Goto Empty
	
	    TNT1 A 0 A_GunFlash ("Flash2")
		TNT1 A 0 A_PlaySound ("weapons/m16fire", CHAN_WEAPON)
	    TNT1 A 0 A_SpawnItemEx("RifleShellCasing",4,13,34,random(-2,-4),random(2,3),random(0,1),random(45,60),128)
	    AK47 F 1 Bright A_FireBullets (3, 3, -1, 14, "RiflePuff", FBF_NORANDOM|FBF_USEAMMO, 3072)
		TNT1 A 0 A_TakeInventory("MachinegunMag",1)
		AK47 G 1 A_SetPitch(pitch-0.25)
	    AK47 H 1 A_SetPitch(pitch+0.25)
		TNT1 A 0 A_JumpifInventory("MachinegunMag",1,1)
		Goto Empty

	    TNT1 A 0 A_GunFlash
		TNT1 A 0 A_PlaySound ("weapons/m16fire", CHAN_WEAPON)
	    TNT1 A 0 A_SpawnItemEx("RifleShellCasing",4,13,34,random(-2,-4),random(2,3),random(0,1),random(45,60),128)
	    AK47 B 1 Bright A_FireBullets (3, 3, -1, 14, "RiflePuff", FBF_NORANDOM|FBF_USEAMMO, 3072)
		TNT1 A 0 A_TakeInventory("MachinegunMag",1)
		AK47 C 1 A_SetPitch(pitch-0.25)
	    AK47 D 1 A_SetPitch(pitch+0.25)
		
	    AK47 E 1
		TNT1 A 0 A_WeaponReady(WRF_NOBOB | WRF_NOFIRE)
        AK47 AAAA 3 A_JumpIfInventory("ActionMeleeAttack",1,"UseMeleeAttack")
		AK47 A 2 A_ReFire
	    Goto Ready
    Empty:
		AK47 A 10 A_PlayWeaponSound("weapons/empty1")
    Reload:
	    TNT1 A 0 A_TakeInventory("ActionReload",1)
  	    TNT1 A 0 A_JumpIfInventory("MachinegunMag",30,2)
        TNT1 A 0 A_JumpIfInventory("MachineGunAmmo",1,2)
		TNT1 A 0
		Goto Ready
	    AK4R A 3 A_PlayWeaponSound("weapons/m16clipou")
 	    AK4R BCDE 3 A_JumpIfInventory("ActionMeleeAttack",1,"UseMeleeAttack")
		TNT1 A 0 A_WeaponReady(WRF_NOBOB | WRF_NOFIRE)
	    TNT1 A 0 A_FireCustomMissile("SMGEmptyMagSpawner",0,0,0,1)
		AK4R F 12 A_JumpIfInventory("IsMachinegunner",1,1)
		TNT1 A 0 A_WeaponReady(WRF_NOBOB | WRF_NOFIRE)
		AK4R FFFFFF 2 A_JumpIfInventory("ActionMeleeAttack",1,"UseMeleeAttack")
		TNT1 A 0 A_WeaponReady(WRF_NOBOB | WRF_NOFIRE)
		AK4R G 2 A_PlayWeaponSound("weapons/m16clipin")
		AK4R HIBAJKK 2
		AK4R L 3
		TNT1 A 0 A_PlayWeaponSound("weapons/m16draw")
	    AK4R MNOP 3
		AK4R P 2
		AK4R QRS 1
		AK4R TUV 2
		TNT1 A 0 A_JumpIfInventory("MachineGunAmmo",1,"Reload2")
		Goto Ready
    Reload2:
	    TNT1 A 0 A_TakeInventory("MachineGunAmmo",1)
	    TNT1 A 0 A_GiveInventory("MachinegunMag",1)
	    TNT1 A 0 A_JumpIfInventory("MachinegunMag",30,2)
	    TNT1 A 0 A_JumpIfInventory("MachineGunAmmo",1,"Reload2")
		TNT1 A 0
		Goto Ready
	Flash:
		AK47 K 1 Bright A_Light2
		AK47 L 1 Bright A_Light1
		Goto LightDone
	Flash2:
		AK47 M 1 Bright A_Light2
		AK47 N 1 Bright A_Light1
		Goto LightDone
	Spawn:
		AK47 X -1
		stop
	}
}

ACTOR MachinegunMag : Ammo
{
Inventory.Amount 0
Inventory.MaxAmount 30
Ammo.BackpackAmount 0
Ammo.BackpackMaxAmount 30
+IGNORESKILL
}

actor MachineGunSwitch : Inventory {}