actor "FN FAL" : RGUWeapon
{
  obituary "%k knocked %o down with the FAL."
  inventory.pickupmessage "You got the FN FAL battle rifle. Line'em up, Knock'em down!"
  //attacksound "fal/fire"
  weapon.selectionorder 6
  weapon.ammotype "FalClip"
  weapon.ammouse 1
  weapon.ammogive 0
  weapon.ammotype2 "FALAmmo"
  weapon.ammouse2 0
  weapon.ammogive2 0
  states
  {
  Ready:
    M4CA C 0 A_JumpIfInventory("AltFireHeld",1,"PostReloadAlt")
    GRNA L 0 A_TakeInventory("weapondropper",2)
    TNT1 A 0 A_PlaySoundEx("weapon/draw","SoundSlot5")
    FALA ABCDE 2 A_WeaponReady(WRF_NOPRIMARY|WRF_ALLOWZOOM)
	FALA FGHIJK 2 A_WeaponReady(WRF_ALLOWZOOM)
	M4CD A 0 A_JumpIfInventory("FALToken",1,"Reload")
    FALA L 0 A_JumpIfNoAmmo("Reload")
	M4CC F 0 A_JumpIfInventory("weapondropper",1,"DropWeapon")
    FALA L 0 A_JumpIfInventory("Aiming",1,5)
    FALA L 0 A_JumpIfInventory("Reloading",1,"Reload")
    FALA L 0 A_JumpIfInventory("ThrowingGrenade",1,"FragGrenade")
    FALA L 0 A_JumpIfInventory("KnifeAttack",1,"KnifeAttack")
    FALA L 1 A_WeaponReady(WRF_ALLOWRELOAD|WRF_ALLOWZOOM)
    Goto Ready+16
    FALC F 0 A_JumpIfInventory("Reloading",1,"Reload")
  ReadyAim:
    FALC F 0 A_JumpIfInventory("ThrowingGrenade",1,"FragGrenade")
    FALC F 0 A_JumpIfInventory("KnifeAttack",1,"KnifeAttack")
	G18A I 0 A_JumpIfInventory("weapondropper",1,"AltFire3")
    FALC F 1 A_WeaponReady(WRF_NOBOB|WRF_ALLOWRELOAD|WRF_ALLOWZOOM)
    Goto Ready+22
  Deselect:
    FALA L 0 A_PlaySoundEx("weapon/down","SoundSlot5")
    FALA L 0 A_TakeInventory("Firing",1)
    FALA L 0 A_TakeInventory("Aiming",1)
    FALA L 0 A_TakeInventory("Reloading",1)
    FALA L 0 ACS_NamedExecuteAlways("RefSpeed",0,0,0,0)
    FALA L 0 A_ZoomFactor(1.0)
    FALA L 0 A_Lower
    FALA L 1 A_Lower
    Goto Deselect+6
  Select:
    FALA A 0 A_Raise
    Loop
  Fire:
    FALA L 0 A_JumpIfInventory("Aiming",1,"FireAim")
    FALA L 0 A_JumpIfNoAmmo("ReloadStart")
    FALB A 0 A_JumpIfInventory("Perk3_SteadyAim",1,"Fire_SteadyAim")
    FALB A 0 A_JumpIfInventory("Firing",1,"FireHold")
    FALB A 0 A_PlayWeaponSound("fal/fire")
    FALB A 0 A_GiveInventory("Firing",1)
    FALB A 0 A_FireCustomMissile("WeaponSmokePuff_BigMuzzle",0,0,5,6)
    FALB A 1 BRIGHT A_FireCustomMissile("HHCBFAL", frandom(-5.00,5.00), 1, 0, 4, 0, frandom(-5.00,5.00))
	FALB A 0 A_SpawnItemEx("RifleCasingSCAR",Cos(Pitch)*30,8,34-(Sin(Pitch)*25),Cos(Pitch)*FRandom(2,4),FRandom(3,6),-Sin(Pitch)*FRandom(3,6),0,SXF_NOCHECKPOSITION|SXF_TRANSFERPITCH)
    FALB A 0 BRIGHT ACS_NamedExecuteAlways("RefKick",0,0,0,0)
    TNT1 A 0 A_JumpIfInventory("FalClip",3,2)
    TNT1 A 0 A_PlaySound("m9/lock")
    FALB A 0 A_JumpIfNoAmmo("FireEmpty")
    FALB A 1 BRIGHT A_GunFlash
    FALB B 2 BRIGHT
    FALB CDE 1 A_WeaponReady(WRF_NOBOB|WRF_ALLOWZOOM)
    FALB E 0 A_TakeInventory("Firing",1)
    FALB E 0 A_JumpIfInventory("FALAmmo",1,1)
    Goto Ready+16
    FALB E 0 A_JumpIfNoAmmo("ReloadStart")
    Goto Ready+16
  FireEmpty:
    FALB A 1 BRIGHT A_GunFlash
    FALB B 2 BRIGHT
    FALB B 0 A_GiveInventory("FALBolt",1)
    FALB CDE 1
    FALB E 0 A_TakeInventory("Firing",1)
    FALB E 0 A_JumpIfInventory("FALAmmo",1,1)
    Goto Ready+16
    FALB E 0 A_JumpIfNoAmmo("ReloadStart")
    Goto Ready+16
  FireHold:
    FALB A 0 A_PlayWeaponSound("fal/fire")
    FALB A 0 A_GiveInventory("Firing",1)
    FALB A 0 A_FireCustomMissile("WeaponSmokePuff_BigMuzzle",0,0,5,6)
    FALB A 1 BRIGHT A_FireCustomMissile("HHCBFAL", frandom(-10.00,10.00), 1, 0, 4, 0, frandom(-10.00,10.00))
	FALB A 0 A_SpawnItemEx("RifleCasingSCAR",Cos(Pitch)*30,8,34-(Sin(Pitch)*25),Cos(Pitch)*FRandom(2,4),FRandom(3,6),-Sin(Pitch)*FRandom(3,6),0,SXF_NOCHECKPOSITION|SXF_TRANSFERPITCH)
    FALB A 0 BRIGHT ACS_NamedExecuteAlways("RefKick",0,0,0,0)
    TNT1 A 0 A_JumpIfInventory("FalClip",3,2)
    TNT1 A 0 A_PlaySound("m9/lock")
    FALB A 0 A_JumpIfNoAmmo("FireEmpty")
    FALB A 1 BRIGHT A_GunFlash
    FALB B 2 BRIGHT
    FALB CDE 1 A_WeaponReady(WRF_NOBOB|WRF_ALLOWZOOM)
    FALB E 0 A_TakeInventory("Firing",1)
    FALB E 0 A_JumpIfInventory("FALAmmo",1,1)
    Goto Ready+16
    FALB E 0 A_JumpIfNoAmmo("ReloadStart")
    Goto Ready+16
  FireAim:
    FALC F 0 A_JumpIfNoAmmo("ReloadStart")
    FALC F 0 A_JumpIfInventory("Firing",1,"FireAimHold")
    FALC G 0 A_PlayWeaponSound("fal/fire")
    FALC G 0 A_GiveInventory("Firing",1)
    FALC G 0 A_FireCustomMissile("WeaponSmokePuff_BigMuzzle",0,0,0,3)
    FALC G 1 BRIGHT A_FireCustomMissile("HHCBFAL", frandom(-0.90,0.90), 1, 0, 4, 0, frandom(-0.90,0.90))
	FALC G 0 A_SpawnItemEx("RifleCasingSCAR",Cos(Pitch)*30,-4,34-(Sin(Pitch)*43),Cos(Pitch)*FRandom(2,4),FRandom(3,6),-Sin(Pitch)*FRandom(3,6),0,SXF_NOCHECKPOSITION|SXF_TRANSFERPITCH)
    FALC G 0 BRIGHT ACS_NamedExecuteAlways("RefKick",0,0,0,0)
    TNT1 A 0 A_JumpIfInventory("FalClip",3,2)
    TNT1 A 0 A_PlaySound("m9/lock")
    FALC G 0 A_JumpIfNoAmmo("FireAimEmpty")
    FALC G 1 BRIGHT A_GunFlash
    FALC H 2 BRIGHT
    FALC IJF 1 A_WeaponReady(WRF_NOBOB|WRF_ALLOWZOOM)
    FALC F 0 A_TakeInventory("Firing",1)
    FALC F 0 A_JumpIfInventory("FALAmmo",1,1)
    Goto Ready+22
    FALC F 0 A_JumpIfNoAmmo("ReloadStart")
    Goto Ready+22
  FireAimHold:
    FALC F 0 A_JumpIfNoAmmo("ReloadStart")
    FALC G 0 A_PlayWeaponSound("fal/fire")
    FALC G 0 A_GiveInventory("Firing",1)
    FALC G 0 A_FireCustomMissile("WeaponSmokePuff_BigMuzzle",0,0,0,3)
    FALC G 1 BRIGHT A_FireCustomMissile("HHCBFAL", frandom(-2.00,2.00), 1, 0, 4, 0, frandom(-2.00,2.00))
	FALC G 0 A_SpawnItemEx("RifleCasingSCAR",Cos(Pitch)*30,-4,34-(Sin(Pitch)*43),Cos(Pitch)*FRandom(2,4),FRandom(3,6),-Sin(Pitch)*FRandom(3,6),0,SXF_NOCHECKPOSITION|SXF_TRANSFERPITCH)
    FALC G 0 BRIGHT ACS_NamedExecuteAlways("RefKick",0,0,0,0)
    TNT1 A 0 A_JumpIfInventory("FalClip",3,2)
    TNT1 A 0 A_PlaySound("m9/lock")
    FALC G 0 A_JumpIfNoAmmo("FireAimEmpty")
    FALC G 1 BRIGHT A_GunFlash
    FALC H 2 BRIGHT
    FALC IJF 1 A_WeaponReady(WRF_NOBOB|WRF_ALLOWZOOM)
    FALC F 0 A_TakeInventory("Firing",1)
    FALC F 0 A_JumpIfInventory("FALAmmo",1,1)
    Goto Ready+22
    FALC F 0 A_JumpIfNoAmmo("ReloadStart")
    Goto Ready+22
  FireAimEmpty:
    FALC G 1 BRIGHT A_GunFlash
    FALC H 2 BRIGHT
    FALC IJF 1 A_GiveInventory("FALBolt",1)
    FALC F 0 A_TakeInventory("Firing",1)
    FALC F 0 A_JumpIfInventory("FALAmmo",1,1)
    Goto Ready+22
    FALB A 0 A_JumpIfNoAmmo("ReloadStart")
    Goto Ready+22
  Reload: //AltFire:
    FALD A 0 A_JumpIfInventory("FALClip",20,2)
    FALD A 0 A_JumpIfInventory("FALAmmo",1,"ReloadStart")
    FALD A 0 A_TakeInventory("Reloading",1)
    FALD A 0 A_JumpIfInventory("Aiming",1,"ReadyAim")
    Goto Ready+19
  ReloadStart:
    FALD A 0 ACS_NamedExecuteAlways("RefSpeak",0,0,0,0)
    FALD A 0 A_JumpIfInventory("Aiming",1,"ReloadStartAim")
    FALD A 3 A_JumpIfInventory("Perk1_SOH",1,"ReloadStart_SOH")
	FALD A 0 A_JumpIfInventory("FALToken",1,"Reload2")
    FALD BC 3 A_JumpIfInventory("KnifeAttack",1,"KnifeAttack")
    FALD DEF 3 A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
    FALD GIJK 3 A_JumpIfInventory("KnifeAttack",1,"KnifeAttack")
    FALD L 3 A_PlaySoundEx("fal/clipout","SoundSlot5")
	FALD L 0 A_FireCustomMissile("FALEmptyMagSpawner",0,0,0,-4)
	FALD L 0 A_GiveInventory("FALToken",1)
	FALD MNOP 3 A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
	goto Reload2
  Reload2:
    FALD QR 3 A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
    FALD S 3 A_PlaySoundEx("fal/clipin","SoundSlot5")
    FALD T 3 A_TakeInventory("Reloading",1)
    Goto ReloadAmmo
  ReloadAmmo:
    FALD U 0 A_JumpIfInventory("FALClip",20,"ReloadEnd")
	FALD U 0 A_TakeInventory("FALToken",1)
    FALD U 0 A_JumpIfInventory("FALAmmo",1,1)
    Goto ReloadEnd
    FALD U 0 A_GiveInventory("FALClip",1)
    FALD U 0 A_TakeInventory("FALAmmo",1)
    Goto ReloadAmmo
  ReloadEnd:
    FALD UV 3
    FALD W 3 A_JumpIfInventory("FALBolt",1,"ReloadEndBolt")
    FALD XYZ 3 A_JumpIfInventory("KnifeAttack",1,"KnifeAttack")
    FALE ABCDE 3 A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
	M4CA C 0 A_JumpIfInventory("AltFireHeld",1,"PostReloadAlt")
    Goto Ready+16
  ReloadEndBolt:
    FALD W 3 A_TakeInventory("FALBolt",1)
    FALE FGH 3 A_JumpIfInventory("KnifeAttack",1,"KnifeAttack")
    FALE I 3 A_PlaySoundEx("fal/bolt","SountSlot5")
    FALE JKLMNO 3 A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
    FALE PQRST 3 A_JumpIfInventory("KnifeAttack",1,"KnifeAttack")
    Goto Ready+16
  Zoom:
  PostReloadAlt:
    FALD A 0 A_JumpIfInventory("FALToken",1,"Reload")
    FALC F 0 A_ZoomFactor(1.3)
    FALC E 0 A_GiveInventory("Aiming",1)
	FALC A 0 ACS_NamedExecuteAlways("RefSpeed",0,0,0,0)
    FALC ABCDEF 1
    Goto AltHold
  ReloadBreak:
    FALC F 0 A_ZoomFactor(1.0)
    FALC FE 1
    FALC E 0 A_TakeInventory("Aiming",1)
    FALC DCBA 1
    FALC A 0 ACS_NamedExecuteAlways("RefSpeed",0,0,0,0)
	TNT1 A 0 A_ClearReFire
    Goto Reload
  ClearRefire:
    FALC F 1 A_ClearReFire
	Goto AltHold
  FireAimAltHold:
    "####" "#" 0 A_JumpIfInventory("FALClip",1,2)
	TNT1 A 0 A_GiveInventory("FALBolt",1)
	Goto ReloadBreak
    FALC G 0 A_PlayWeaponSound("fal/fire")
	GRNA L 0 A_TakeInventory("FALClip",1)
    FALC G 0 A_FireCustomMissile("WeaponSmokePuff_BigMuzzle",0,0,0,3)
    FALC G 1 BRIGHT A_FireCustomMissile("HHCBFAL", frandom(-1.30,1.30), 1, 0, 4, 0, frandom(-1.30,1.30))
	FALC G 0 A_SpawnItemEx("RifleCasingSCAR",Cos(Pitch)*30,-4,34-(Sin(Pitch)*43),Cos(Pitch)*FRandom(2,4),FRandom(3,6),-Sin(Pitch)*FRandom(3,6),0,SXF_NOCHECKPOSITION|SXF_TRANSFERPITCH)
    FALC G 0 BRIGHT ACS_NamedExecuteAlways("RefKick",0,0,0,0)
    TNT1 A 0 A_JumpIfInventory("FalClip",3,2)
    TNT1 A 0 A_PlaySound("m9/lock")
    FALC G 1 BRIGHT A_GunFlash
    FALC H 2 BRIGHT
    "####" "#" 0 A_JumpIfInventory("FALClip",1,2)
	TNT1 A 0 A_GiveInventory("FALBolt",1)
	Goto ReloadBreak
	TNT1 A 0
    Goto AltHold
  AltHold:
    A12C C 0 A_JumpIfInventory("FireHeld",1,"ClearRefire")
    FALC F 1 A_WeaponReady(WRF_NOBOB|WRF_ALLOWRELOAD|WRF_ALLOWZOOM)
	A12C C 0 A_JumpIfInventory("FireHeld",1,"FireAimAltHold")
	A12C C 0 A_JumpIfInventory("Reloading",1,"ReloadBreak")
	U45A L 0 A_JumpIfInventory("ThrowingGrenade",1,"FragGrenade")
    U45A L 0 A_JumpIfInventory("KnifeAttack",1,"KnifeAttack")
	G18A I 0 A_JumpIfInventory("weapondropper",1,"AltFire3")
	A12C F 0 A_Refire("AltHold")
	A12C C 0 A_JumpIfInventory("Aiming",1,"AltFire2")
	Goto Ready+22
  AltFire:
    GRNA L 0 A_TakeInventory("weapondropper",2)
    M4CD A 0 A_JumpIfInventory("FALToken",1,"Reload")
	M4CA C 0 A_JumpIfInventory("AltFireHeld",1,"AltHold")
    FALC A 0 A_JumpIfInventory("Aiming",1,"AltFire2")
    FALC A 0 A_ZoomFactor(1.3)
    FALC AB 1
    FALC B 0 A_GiveInventory("Aiming",1)
    FALC CDEF 1
    FALC F 0 ACS_NamedExecuteAlways("RefSpeed",0,0,0,0)
	A12C F 0 A_Refire("AltHold")
    Goto Ready+22
  AltFire2:
    FALC F 0 A_ZoomFactor(1.0)
    FALC FE 1
    FALC E 0 A_TakeInventory("Aiming",1)
    FALC DCBA 1
    FALC A 0 ACS_NamedExecuteAlways("RefSpeed",0,0,0,0)
    Goto Ready+16
  AltFire3:
    FALC F 0 A_ZoomFactor(1.0)
    FALC FE 1
    FALC E 0 A_TakeInventory("Aiming",1)
    FALC DCBA 1
    FALC A 0 ACS_NamedExecuteAlways("RefSpeed",0,0,0,0)
	goto DropWeapon
  ReloadStartAim:
    FALC F 0 A_ZoomFactor(1.0)
    FALC FE 1
    FALC E 0 A_TakeInventory("Aiming",1)
    FALC DCBA 1
    FALC A 0 ACS_NamedExecuteAlways("RefSpeed",0,0,0,0)
    Goto ReloadStart+2
  Flash:
    TNT1 A 2 bright A_Light1
    TNT1 A 0 bright A_Light0
    stop
  Spawn:
    WEAP F 0
    WEAP F 0 A_SpawnItem("FALDrop")
    stop
  Fire_SteadyAim:
    FALB A 0 A_JumpIfInventory("Firing",1,"FireHold_SteadyAim")
    FALB A 0 A_PlayWeaponSound("fal/fire")
    FALB A 0 A_GiveInventory("Firing",1)
    FALB A 0 A_FireCustomMissile("WeaponSmokePuff_BigMuzzle",0,0,5,6)
    FALB A 1 BRIGHT A_FireCustomMissile("HHCBFAL", frandom(-3.50,3.50), 1, 0, 4, 0, frandom(-3.50,3.50))
	FALB A 0 A_SpawnItemEx("RifleCasingSCAR",Cos(Pitch)*30,8,34-(Sin(Pitch)*25),Cos(Pitch)*FRandom(2,4),FRandom(3,6),-Sin(Pitch)*FRandom(3,6),0,SXF_NOCHECKPOSITION|SXF_TRANSFERPITCH)
    FALB A 0 BRIGHT ACS_NamedExecuteAlways("RefKick",0,0,0,0)
    TNT1 A 0 A_JumpIfInventory("FalClip",3,2)
    TNT1 A 0 A_PlaySound("m9/lock")
    FALB A 0 A_JumpIfNoAmmo("FireEmpty")
    FALB A 1 BRIGHT A_GunFlash
    FALB B 2 BRIGHT
    FALB CDE 1 A_WeaponReady(WRF_NOBOB|WRF_ALLOWZOOM)
    FALB E 0 A_TakeInventory("Firing",1)
    FALB E 0 A_JumpIfInventory("FALAmmo",1,1)
    Goto Ready+16
    FALB E 0 A_JumpIfNoAmmo("ReloadStart")
    Goto Ready+16
  FireHold_SteadyAim:
    FALB A 0 A_PlayWeaponSound("fal/fire")
    FALB A 0 A_GiveInventory("Firing",1)
    FALB A 0 A_FireCustomMissile("WeaponSmokePuff_BigMuzzle",0,0,5,6)
    FALB A 1 BRIGHT A_FireCustomMissile("HHCBFAL", frandom(-8.00,8.00), 1, 0, 4, 0, frandom(-8.00,8.00))
	FALB A 0 A_SpawnItemEx("RifleCasingSCAR",Cos(Pitch)*30,8,34-(Sin(Pitch)*25),Cos(Pitch)*FRandom(2,4),FRandom(3,6),-Sin(Pitch)*FRandom(3,6),0,SXF_NOCHECKPOSITION|SXF_TRANSFERPITCH)
    FALB A 0 BRIGHT ACS_NamedExecuteAlways("RefKick",0,0,0,0)
    TNT1 A 0 A_JumpIfInventory("FalClip",3,2)
    TNT1 A 0 A_PlaySound("m9/lock")
    FALB A 0 A_JumpIfNoAmmo("FireEmpty")
    FALB A 1 BRIGHT A_GunFlash
    FALB B 2 BRIGHT
    FALB CDE 1 A_WeaponReady(WRF_NOBOB|WRF_ALLOWZOOM)
    FALB E 0 A_TakeInventory("Firing",1)
    FALB E 0 A_JumpIfInventory("FALAmmo",1,1)
    Goto Ready+16
    FALB E 0 A_JumpIfNoAmmo("ReloadStart")
    Goto Ready+16
  ReloadStart_SOH:
    FALD A 0 A_JumpIfInventory("FALToken",1,"Reload3")
    FALD ABC 2 A_JumpIfInventory("KnifeAttack",1,"KnifeAttack")
    FALD DEF 2 A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
    FALD GIJK 2 A_JumpIfInventory("KnifeAttack",1,"KnifeAttack")
    FALD L 2 A_PlaySoundEx("fal/clipout","SoundSlot5")
	FALD L 0 A_FireCustomMissile("FALEmptyMagSpawnerSOH",0,0,0,-4)
    FALD L 0 A_GiveInventory("FALToken",1)
	FALD MNOP 2 A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
	goto Reload3
  Reload3:
    FALD QR 2 A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
    FALD S 2 A_PlaySoundEx("fal/clipin","SoundSlot5")
    FALD T 2 A_TakeInventory("Reloading",1)
    Goto ReloadAmmo_SOH
  ReloadAmmo_SOH:
    FALD U 0 A_JumpIfInventory("FALClip",20,"ReloadEnd_SOH")
	FALD U 0 A_TakeInventory("FALToken",1)
    FALD U 0 A_JumpIfInventory("FALAmmo",1,1)
    Goto ReloadEnd_SOH
    FALD U 0 A_GiveInventory("FALClip",1)
    FALD U 0 A_TakeInventory("FALAmmo",1)
    Goto ReloadAmmo_SOH
  ReloadEnd_SOH:
    FALD UV 2
    FALD W 2 A_JumpIfInventory("FALBolt",1,"ReloadEndBolt_SOH")
    FALD XYZ 2 A_JumpIfInventory("KnifeAttack",1,"KnifeAttack")
    FALE ABCDE 2 A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
	M4CA C 0 A_JumpIfInventory("AltFireHeld",1,"PostReloadAlt")
    Goto Ready+16
  ReloadEndBolt_SOH:
    FALD W 2 A_TakeInventory("FALBolt",1)
    FALE FG 2 A_JumpIfInventory("KnifeAttack",1,"KnifeAttack")
    FALE H 2 A_PlaySoundEx("fal/bolt","SountSlot5")
    FALE IJKLMNO 2 A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
    FALE PQRST 2 A_JumpIfInventory("KnifeAttack",1,"KnifeAttack")
    Goto Ready+16
  FragGrenade:
    U45F A 0 ACS_NamedExecuteAlways("RefSpeak",0,1,0,0)
    U45F A 0 A_ZoomFactor(1.0)
    U45A L 0 A_TakeInventory("Aiming",1)
    U45A L 0 A_TakeInventory("Reloading",1)
    U45F A 0 ACS_NamedExecuteAlways("RefSpeed",0,0,0,0)
	M4CA J 0 A_JumpIfInventory("ThrowingStun",1,"StunGrenade")
	M4CA J 0 A_JumpIfInventory("ThrowingIncd",1,"IncGrenade")
    U45A L 0 A_JumpIfInventory("Perk1_SOH_Pro",1,"FragGrenade_SOH")
    GRNA ABC 2
    GRNA D 2 A_PlaySound("grenade/pinpull")
    GRNA EFGH 2
    TNT1 A 15
    TNT1 A 0 A_PlaySound("grenade/throw")
    GRNA A 0 A_PlaySoundEx("us/grenades","Voice")
    GRNA IJK 2
    GRNA L 0 A_TakeInventory("GrenadeAmmo",1)
    GRNA L 0 A_TakeInventory("ThrowingGrenade",1)
    U45A L 0 A_TakeInventory("Aiming",1)
    GRNA L 0 A_TakeInventory("KnifeAttack",1)
    GRNA L 2 A_FireCustomMissile("FragGrenade",frandom(-2.00,2.00),0,0,16,0,frandom(-1.50,1.50))
    GRNA MN 2
	M4CA C 0 A_JumpIfInventory("AltFireHeld",1,"PostReloadAlt")
    Goto Ready+3
  FragGrenade_SOH:
    GRNA ABC 1
    GRNA D 1 A_PlaySound("grenade/pinpull")
    GRNA EFGH 1
    TNT1 A 10
    TNT1 A 0 A_PlaySound("grenade/throw")
    GRNA A 0 A_PlaySoundEx("us/grenades","Voice")
    GRNA IJK 1
    GRNA L 0 A_TakeInventory("GrenadeAmmo",1)
    GRNA L 0 A_TakeInventory("ThrowingGrenade",1)
    U45A L 0 A_TakeInventory("Aiming",1)
    GRNA L 0 A_TakeInventory("KnifeAttack",1)
    GRNA L 1 A_FireCustomMissile("FragGrenade",frandom(-2.00,2.00),0,0,16,0,frandom(-1.50,1.50))
    GRNA MN 1
	M4CA C 0 A_JumpIfInventory("AltFireHeld",1,"PostReloadAlt")
    Goto Ready+3
  KnifeAttack:
    GRNA L 0 A_TakeInventory("weapondropper",2)
    U45F A 0 A_ZoomFactor(1.0)
    U45A L 0 A_JumpIfInventory("ThrowingGrenade",1,"FragGrenade")
    U45A L 0 A_TakeInventory("Aiming",1)
    U45A L 0 A_TakeInventory("Reloading",1)
    U45F A 0 ACS_NamedExecuteAlways("RefSpeed",0,0,0,0)
    U45A L 0 A_JumpIfInventory("Perk1_SOH_Pro",1,"KnifeAttack_SOH")
    U45C A 0 A_JumpIfInventory("Perk3_Commando",1,"KnifeAttack_Commando")
    KNFA A 0 ACS_NamedExecuteAlways("RefSlash",0,0,0,0)
    KNFA AB 1
    KNFA B 0 A_PlaySound("knife/swing")
    KNFA C 1 A_CustomPunch(102,1,0,"KnifePuff",104)
    KNFA DEFGHIJKL 1
    TNT1 A 20
    GRNA L 0 A_TakeInventory("KnifeAttack",1)
    GRNA L 0 A_TakeInventory("ThrowingGrenade",1)
	M4CA C 0 A_JumpIfInventory("AltFireHeld",1,"PostReloadAlt")
    Goto Ready+3
  KnifeAttack_Commando:
    KNFA A 0 ACS_NamedExecuteAlways("RefSlash",0,0,0,0)
    KNFA AB 1
    KNFA B 0 A_PlaySound("knife/swing")
    KNFA C 1 A_CustomPunch(102,1,0,"KnifePuff",160)
    KNFA DEFGHIJKL 1
    TNT1 A 20
    GRNA L 0 A_TakeInventory("KnifeAttack",1)
    GRNA L 0 A_TakeInventory("ThrowingGrenade",1)
	M4CA C 0 A_JumpIfInventory("AltFireHeld",1,"PostReloadAlt")
    Goto Ready+3
  KnifeAttack_SOH:
    U45C A 0 A_JumpIfInventory("Perk3_Commando",1,"KnifeAttack_SOH_Commando")
    KNFA A 0 ACS_NamedExecuteAlways("RefSlash",0,0,0,0)
    KNFA AB 1
    KNFA B 0 A_PlaySound("knife/swing")
    KNFA C 1 A_CustomPunch(102,1,0,"KnifePuff",104)
    KNFA DEFGHIJKL 1
    TNT1 A 10
    GRNA L 0 A_TakeInventory("KnifeAttack",1)
    GRNA L 0 A_TakeInventory("ThrowingGrenade",1)
	M4CA C 0 A_JumpIfInventory("AltFireHeld",1,"PostReloadAlt")
    Goto Ready+3
  KnifeAttack_SOH_Commando:
    KNFA A 0 ACS_NamedExecuteAlways("RefSlash",0,0,0,0)
    KNFA AB 1
    KNFA B 0 A_PlaySound("knife/swing")
    KNFA C 1 A_CustomPunch(102,1,0,"KnifePuff",160)
    KNFA DEFGHIJKL 1
    TNT1 A 10
    GRNA L 0 A_TakeInventory("KnifeAttack",1)
    GRNA L 0 A_TakeInventory("ThrowingGrenade",1)
	M4CA C 0 A_JumpIfInventory("AltFireHeld",1,"PostReloadAlt")
    Goto Ready+3
  StunGrenade:
    U45A L 0 A_JumpIfInventory("Perk1_SOH_Pro",1,"StunGrenade_SOH")
    GRNA ABC 2
    GRNA D 2 A_PlaySound("grenade/pinpull")
    GRNA EFGH 2
    TNT1 A 15
    TNT1 A 0 A_PlaySound("grenade/throw")
    GRNA A 0 A_PlaySoundEx("us/grenades","Voice")
    GRNA IJK 2
    GRNA L 0 A_TakeInventory("StunAmmo",1)
    GRNA L 0 A_TakeInventory("ThrowingGrenade",1)
	GRNA L 0 A_TakeInventory("ThrowingStun",1)
	GRNA L 0 A_TakeInventory("ThrowingIncd",1)
    U45A L 0 A_TakeInventory("Aiming",1)
    GRNA L 0 A_TakeInventory("KnifeAttack",1)
    GRNA L 2 A_FireCustomMissile("StunGrenade",frandom(-2.00,2.00),0,0,16,0,frandom(-1.50,1.50))
    GRNA MN 2
	M4CA C 0 A_JumpIfInventory("AltFireHeld",1,"PostReloadAlt")
    Goto Ready+3
  IncGrenade:
    U45A L 0 A_JumpIfInventory("Perk1_SOH_Pro",1,"IncGrenade_SOH")
    GRNA ABC 2
    GRNA D 2 A_PlaySound("grenade/pinpull")
    GRNA EFGH 2
    TNT1 A 15
    TNT1 A 0 A_PlaySound("grenade/throw")
    GRNA A 0 A_PlaySoundEx("us/grenades","Voice")
    GRNA IJK 2
    GRNA L 0 A_TakeInventory("IncdAmmo",1)
    GRNA L 0 A_TakeInventory("ThrowingGrenade",1)
	GRNA L 0 A_TakeInventory("ThrowingStun",1)
	GRNA L 0 A_TakeInventory("ThrowingIncd",1)
    U45A L 0 A_TakeInventory("Aiming",1)
    GRNA L 0 A_TakeInventory("KnifeAttack",1)
    GRNA L 2 A_FireCustomMissile("IncGrenade",frandom(-2.00,2.00),0,0,16,0,frandom(-1.50,1.50))
    GRNA MN 2
	M4CA C 0 A_JumpIfInventory("AltFireHeld",1,"PostReloadAlt")
    Goto Ready+3
  StunGrenade_SOH:
    GRNA ABC 1
    GRNA D 1 A_PlaySound("grenade/pinpull")
    GRNA EFGH 1
    TNT1 A 10
    TNT1 A 0 A_PlaySound("grenade/throw")
    GRNA A 0 A_PlaySoundEx("us/grenades","Voice")
    GRNA IJK 1
    GRNA L 0 A_TakeInventory("StunAmmo",1)
    GRNA L 0 A_TakeInventory("ThrowingGrenade",1)
	GRNA L 0 A_TakeInventory("ThrowingStun",1)
	GRNA L 0 A_TakeInventory("ThrowingIncd",1)
    U45A L 0 A_TakeInventory("Aiming",1)
    GRNA L 0 A_TakeInventory("KnifeAttack",1)
    GRNA L 1 A_FireCustomMissile("StunGrenade",frandom(-2.00,2.00),0,0,16,0,frandom(-1.50,1.50))
    GRNA MN 1
	M4CA C 0 A_JumpIfInventory("AltFireHeld",1,"PostReloadAlt")
    Goto Ready+3
  IncGrenade_SOH:
    GRNA ABC 1
    GRNA D 1 A_PlaySound("grenade/pinpull")
    GRNA EFGH 1
    TNT1 A 10
    TNT1 A 0 A_PlaySound("grenade/throw")
    GRNA A 0 A_PlaySoundEx("us/grenades","Voice")
    GRNA IJK 1
    GRNA L 0 A_TakeInventory("IncdAmmo",1)
    GRNA L 0 A_TakeInventory("ThrowingGrenade",1)
	GRNA L 0 A_TakeInventory("ThrowingStun",1)
	GRNA L 0 A_TakeInventory("ThrowingIncd",1)
    U45A L 0 A_TakeInventory("Aiming",1)
    GRNA L 0 A_TakeInventory("KnifeAttack",1)
    GRNA L 1 A_FireCustomMissile("IncGrenade",frandom(-2.00,2.00),0,0,16,0,frandom(-1.50,1.50))
    GRNA MN 1
	M4CA C 0 A_JumpIfInventory("AltFireHeld",1,"PostReloadAlt")
    Goto Ready+3
  DropWeapon:
    FALA KJIHGFEDCB 2 A_WeaponReady(WRF_NOPRIMARY)
	FALA A 2 A_JumpIfInventory("KnifeAttack",1,"KnifeAttack")
	M4CC F 0 A_JumpIfInventory("weapondropper",2,"ThrowWeapon")
    KNFA A 0 ACS_NamedExecuteAlways("RefDropW",0,0,0,0)
	GRNA L 0 A_TakeInventory("weapondropper",1)
	M4CB A 0 A_FireCustomMissile("FALDropped",0,0,7,2)
	stop
  ThrowWeapon:
    GRNA IKMN 1
	KNFA B 0 A_PlaySound("knife/swing")
    KNFA A 0 ACS_NamedExecuteAlways("RefDropW",0,0,0,0)
	GRNA L 0 A_TakeInventory("weapondropper",2)
	M4CB A 0 A_FireCustomMissile("FALThrown",0,0,7,2)
	stop
  }
}

actor FALClip : Ammo
{
    inventory.icon "CLIPA0"
    inventory.amount 0
    inventory.maxamount 20
    ammo.backpackamount 0
    ammo.backpackmaxamount 20
    +IGNORESKILL
}

actor FALBolt : Inventory
{
    inventory.amount 0
    inventory.maxamount 1
}

actor "FN FAL Ex Mags" : "FN FAL"
{
  obituary "%k knocked %o down with the FAL."
  inventory.pickupmessage "You got the FN FAL battle rifle. Line'em up, Knock'em down!"
  //attacksound "fal/fire"
  weapon.selectionorder 6
  weapon.ammotype "FalClip2"
  weapon.ammouse 1
  weapon.ammogive 0
  weapon.ammotype2 "FALAmmo"
  weapon.ammouse2 0
  weapon.ammogive2 0
  states
  {
  Ready:
    M4CA C 0 A_JumpIfInventory("AltFireHeld",1,"PostReloadAlt")
    GRNA L 0 A_TakeInventory("weapondropper",2)
    TNT1 A 0 A_PlaySoundEx("weapon/draw","SoundSlot5")
    FALA ABCDE 2 A_WeaponReady(WRF_NOPRIMARY|WRF_ALLOWZOOM)
	FALA FGHIJK 2 A_WeaponReady(WRF_ALLOWZOOM)
	M4CD A 0 A_JumpIfInventory("FALToken",1,"Reload")
    FALA L 0 A_JumpIfNoAmmo("Reload")
	M4CC F 0 A_JumpIfInventory("weapondropper",1,"DropWeapon")
    FALA L 0 A_JumpIfInventory("Aiming",1,5)
    FALA L 0 A_JumpIfInventory("Reloading",1,"Reload")
    FALA L 0 A_JumpIfInventory("ThrowingGrenade",1,"FragGrenade")
    FALA L 0 A_JumpIfInventory("KnifeAttack",1,"KnifeAttack")
    FALA L 1 A_WeaponReady(WRF_ALLOWRELOAD|WRF_ALLOWZOOM)
    Goto Ready+16
    FALC F 0 A_JumpIfInventory("Reloading",1,"Reload")
  ReadyAim:
    FALC F 0 A_JumpIfInventory("ThrowingGrenade",1,"FragGrenade")
    FALC F 0 A_JumpIfInventory("KnifeAttack",1,"KnifeAttack")
	G18A I 0 A_JumpIfInventory("weapondropper",1,"AltFire3")
    FALC F 1 A_WeaponReady(WRF_NOBOB|WRF_ALLOWRELOAD|WRF_ALLOWZOOM)
    Goto Ready+22
  Fire:
    FALA L 0 A_JumpIfInventory("Aiming",1,"FireAim")
    FALA L 0 A_JumpIfNoAmmo("ReloadStart")
    FALB A 0 A_JumpIfInventory("Perk3_SteadyAim",1,"Fire_SteadyAim")
    FALB A 0 A_JumpIfInventory("Firing",1,"FireHold")
    FALB A 0 A_PlayWeaponSound("fal/fire")
    FALB A 0 A_GiveInventory("Firing",1)
    FALB A 0 A_FireCustomMissile("WeaponSmokePuff_BigMuzzle",0,0,5,6)
    FALB A 1 BRIGHT A_FireCustomMissile("HHCBFAL", frandom(-5.00,5.00), 1, 0, 4, 0, frandom(-5.00,5.00))
	FALB A 0 A_SpawnItemEx("RifleCasingSCAR",Cos(Pitch)*30,8,34-(Sin(Pitch)*25),Cos(Pitch)*FRandom(2,4),FRandom(3,6),-Sin(Pitch)*FRandom(3,6),0,SXF_NOCHECKPOSITION|SXF_TRANSFERPITCH)
    FALB A 0 BRIGHT ACS_NamedExecuteAlways("RefKick",0,0,0,0)
    TNT1 A 0 A_JumpIfInventory("FalClip2",3,2)
    TNT1 A 0 A_PlaySound("m9/lock")
    FALB A 0 A_JumpIfNoAmmo("FireEmpty")
    FALB A 1 BRIGHT A_GunFlash
    FALB B 2 BRIGHT
    FALB CDE 1 A_WeaponReady(WRF_NOBOB|WRF_ALLOWZOOM)
    FALB E 0 A_TakeInventory("Firing",1)
    FALB E 0 A_JumpIfInventory("FALAmmo",1,1)
    Goto Ready+16
    FALB E 0 A_JumpIfNoAmmo("ReloadStart")
    Goto Ready+16
  FireHold:
    FALB A 0 A_PlayWeaponSound("fal/fire")
    FALB A 0 A_GiveInventory("Firing",1)
    FALB A 0 A_FireCustomMissile("WeaponSmokePuff_BigMuzzle",0,0,5,6)
    FALB A 1 BRIGHT A_FireCustomMissile("HHCBFAL", frandom(-10.00,10.00), 1, 0, 4, 0, frandom(-10.00,10.00))
	FALB A 0 A_SpawnItemEx("RifleCasingSCAR",Cos(Pitch)*30,8,34-(Sin(Pitch)*25),Cos(Pitch)*FRandom(2,4),FRandom(3,6),-Sin(Pitch)*FRandom(3,6),0,SXF_NOCHECKPOSITION|SXF_TRANSFERPITCH)
    FALB A 0 BRIGHT ACS_NamedExecuteAlways("RefKick",0,0,0,0)
    TNT1 A 0 A_JumpIfInventory("FalClip2",3,2)
    TNT1 A 0 A_PlaySound("m9/lock")
    FALB A 0 A_JumpIfNoAmmo("FireEmpty")
    FALB A 1 BRIGHT A_GunFlash
    FALB B 2 BRIGHT
    FALB CDE 1 A_WeaponReady(WRF_NOBOB|WRF_ALLOWZOOM)
    FALB E 0 A_TakeInventory("Firing",1)
    FALB E 0 A_JumpIfInventory("FALAmmo",1,1)
    Goto Ready+16
    FALB E 0 A_JumpIfNoAmmo("ReloadStart")
    Goto Ready+16
  FireAim:
    FALC F 0 A_JumpIfNoAmmo("ReloadStart")
    FALC F 0 A_JumpIfInventory("Firing",1,"FireAimHold")
    FALC G 0 A_PlayWeaponSound("fal/fire")
    FALC G 0 A_GiveInventory("Firing",1)
    FALC G 0 A_FireCustomMissile("WeaponSmokePuff_BigMuzzle",0,0,0,3)
    FALC G 1 BRIGHT A_FireCustomMissile("HHCBFAL", frandom(-0.90,0.90), 1, 0, 4, 0, frandom(-0.90,0.90))
	FALC G 0 A_SpawnItemEx("RifleCasingSCAR",Cos(Pitch)*30,-4,34-(Sin(Pitch)*43),Cos(Pitch)*FRandom(2,4),FRandom(3,6),-Sin(Pitch)*FRandom(3,6),0,SXF_NOCHECKPOSITION|SXF_TRANSFERPITCH)
    FALC G 0 BRIGHT ACS_NamedExecuteAlways("RefKick",0,0,0,0)
    TNT1 A 0 A_JumpIfInventory("FalClip2",3,2)
    TNT1 A 0 A_PlaySound("m9/lock")
    FALC G 0 A_JumpIfNoAmmo("FireAimEmpty")
    FALC G 1 BRIGHT A_GunFlash
    FALC H 2 BRIGHT
    FALC IJF 1 A_WeaponReady(WRF_NOBOB|WRF_ALLOWZOOM)
    FALC F 0 A_TakeInventory("Firing",1)
    FALC F 0 A_JumpIfInventory("FALAmmo",1,1)
    Goto Ready+22
    FALC F 0 A_JumpIfNoAmmo("ReloadStart")
    Goto Ready+22
  FireAimHold:
    FALC F 0 A_JumpIfNoAmmo("ReloadStart")
    FALC G 0 A_PlayWeaponSound("fal/fire")
    FALC G 0 A_GiveInventory("Firing",1)
    FALC G 0 A_FireCustomMissile("WeaponSmokePuff_BigMuzzle",0,0,0,3)
    FALC G 1 BRIGHT A_FireCustomMissile("HHCBFAL", frandom(-2.00,2.00), 1, 0, 4, 0, frandom(-2.00,2.00))
	FALC G 0 A_SpawnItemEx("RifleCasingSCAR",Cos(Pitch)*30,-4,34-(Sin(Pitch)*43),Cos(Pitch)*FRandom(2,4),FRandom(3,6),-Sin(Pitch)*FRandom(3,6),0,SXF_NOCHECKPOSITION|SXF_TRANSFERPITCH)
    FALC G 0 BRIGHT ACS_NamedExecuteAlways("RefKick",0,0,0,0)
    TNT1 A 0 A_JumpIfInventory("FalClip2",3,2)
    TNT1 A 0 A_PlaySound("m9/lock")
    FALC G 0 A_JumpIfNoAmmo("FireAimEmpty")
    FALC G 1 BRIGHT A_GunFlash
    FALC H 2 BRIGHT
    FALC IJF 1 A_WeaponReady(WRF_NOBOB|WRF_ALLOWZOOM)
    FALC F 0 A_TakeInventory("Firing",1)
    FALC F 0 A_JumpIfInventory("FALAmmo",1,1)
    Goto Ready+22
    FALC F 0 A_JumpIfNoAmmo("ReloadStart")
    Goto Ready+22
  Fire_SteadyAim:
    FALB A 0 A_JumpIfInventory("Firing",1,"FireHold_SteadyAim")
    FALB A 0 A_PlayWeaponSound("fal/fire")
    FALB A 0 A_GiveInventory("Firing",1)
    FALB A 0 A_FireCustomMissile("WeaponSmokePuff_BigMuzzle",0,0,5,6)
    FALB A 1 BRIGHT A_FireCustomMissile("HHCBFAL", frandom(-3.50,3.50), 1, 0, 4, 0, frandom(-3.50,3.50))
	FALB A 0 A_SpawnItemEx("RifleCasingSCAR",Cos(Pitch)*30,8,34-(Sin(Pitch)*25),Cos(Pitch)*FRandom(2,4),FRandom(3,6),-Sin(Pitch)*FRandom(3,6),0,SXF_NOCHECKPOSITION|SXF_TRANSFERPITCH)
    FALB A 0 BRIGHT ACS_NamedExecuteAlways("RefKick",0,0,0,0)
    TNT1 A 0 A_JumpIfInventory("FalClip2",3,2)
    TNT1 A 0 A_PlaySound("m9/lock")
    FALB A 0 A_JumpIfNoAmmo("FireEmpty")
    FALB A 1 BRIGHT A_GunFlash
    FALB B 2 BRIGHT
    FALB CDE 1 A_WeaponReady(WRF_NOBOB|WRF_ALLOWZOOM)
    FALB E 0 A_TakeInventory("Firing",1)
    FALB E 0 A_JumpIfInventory("FALAmmo",1,1)
    Goto Ready+16
    FALB E 0 A_JumpIfNoAmmo("ReloadStart")
    Goto Ready+16
  FireHold_SteadyAim:
    FALB A 0 A_PlayWeaponSound("fal/fire")
    FALB A 0 A_GiveInventory("Firing",1)
    FALB A 0 A_FireCustomMissile("WeaponSmokePuff_BigMuzzle",0,0,5,6)
    FALB A 1 BRIGHT A_FireCustomMissile("HHCBFAL", frandom(-8.00,8.00), 1, 0, 4, 0, frandom(-8.00,8.00))
	FALB A 0 A_SpawnItemEx("RifleCasingSCAR",Cos(Pitch)*30,8,34-(Sin(Pitch)*25),Cos(Pitch)*FRandom(2,4),FRandom(3,6),-Sin(Pitch)*FRandom(3,6),0,SXF_NOCHECKPOSITION|SXF_TRANSFERPITCH)
    FALB A 0 BRIGHT ACS_NamedExecuteAlways("RefKick",0,0,0,0)
    TNT1 A 0 A_JumpIfInventory("FalClip2",3,2)
    TNT1 A 0 A_PlaySound("m9/lock")
    FALB A 0 A_JumpIfNoAmmo("FireEmpty")
    FALB A 1 BRIGHT A_GunFlash
    FALB B 2 BRIGHT
    FALB CDE 1 A_WeaponReady(WRF_NOBOB|WRF_ALLOWZOOM)
    FALB E 0 A_TakeInventory("Firing",1)
    FALB E 0 A_JumpIfInventory("FALAmmo",1,1)
    Goto Ready+16
    FALB E 0 A_JumpIfNoAmmo("ReloadStart")
    Goto Ready+16
  Reload: //AltFire:
    VECC A 0 A_JumpIfInventory("FALClip2",30,2)
    VECC A 0 A_JumpIfInventory("FALAmmo",1,"ReloadStart")
    VECC A 0 A_TakeInventory("Reloading",1)
    VECC A 0 A_JumpIfInventory("Aiming",1,"ReadyAim")
    Goto Ready+19
  ReloadStart:
    FALD A 0 ACS_NamedExecuteAlways("RefSpeak",0,0,0,0)
    FALD A 0 A_JumpIfInventory("Aiming",1,"ReloadStartAim")
    FALD A 3 A_JumpIfInventory("Perk1_SOH",1,"ReloadStart_SOH")
	FALD A 0 A_JumpIfInventory("FALToken",1,"Reload2")
    FALD BC 3 A_JumpIfInventory("KnifeAttack",1,"KnifeAttack")
    FALD DEF 3 A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
    FALD GIJK 3 A_JumpIfInventory("KnifeAttack",1,"KnifeAttack")
    FALD L 3 A_PlaySoundEx("fal/clipout","SoundSlot5")
	FALD L 0 A_FireCustomMissile("FALEmptyMagSpawner",0,0,0,-4)
    FALD L 0 A_GiveInventory("FALToken",1)
	FALD MNOP 3 A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
	goto Reload2
  Reload2:
    FALD QR 3 A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
    FALD S 3 A_PlaySoundEx("fal/clipin","SoundSlot5")
    FALD T 3 A_TakeInventory("Reloading",1)
    Goto ReloadAmmo
  ReloadAmmo:
    FALD U 0 A_JumpIfInventory("FALClip2",30,"ReloadEnd")
	FALD U 0 A_TakeInventory("FALToken",1)
    FALD U 0 A_JumpIfInventory("FALAmmo",1,1)
    Goto ReloadEnd
    FALD U 0 A_GiveInventory("FALClip2",1)
    FALD U 0 A_TakeInventory("FALAmmo",1)
    Goto ReloadAmmo
  ReloadEnd:
    FALD UV 3
    FALD W 3 A_JumpIfInventory("FALBolt",1,"ReloadEndBolt")
    FALD XYZ 3 A_JumpIfInventory("KnifeAttack",1,"KnifeAttack")
    FALE ABCDE 3 A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
	M4CA C 0 A_JumpIfInventory("AltFireHeld",1,"PostReloadAlt")
    FALE E 0 A_ReFire
    Goto Ready+16
  ReloadEndBolt:
    FALD W 3 A_TakeInventory("FALBolt",1)
    FALE FGH 3 A_JumpIfInventory("KnifeAttack",1,"KnifeAttack")
    FALE I 3 A_PlaySoundEx("fal/bolt","SountSlot5")
    FALE JKLMNO 3 A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
    FALE PQRST 3 A_JumpIfInventory("KnifeAttack",1,"KnifeAttack")
    FALE E 0 A_ReFire
    Goto Ready+16
  ReloadStartAim:
    FALC F 0 A_ZoomFactor(1.0)
    FALC FE 1
    FALC E 0 A_TakeInventory("Aiming",1)
    FALC DCBA 1
    FALC A 0 ACS_NamedExecuteAlways("RefSpeed",0,0,0,0)
    Goto ReloadStart+2
  ReloadStart_SOH:
    FALD A 0 A_JumpIfInventory("FALToken",1,"Reload3")
    FALD ABC 2 A_JumpIfInventory("KnifeAttack",1,"KnifeAttack")
    FALD DEF 2 A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
    FALD GIJK 2 A_JumpIfInventory("KnifeAttack",1,"KnifeAttack")
    FALD L 2 A_PlaySoundEx("fal/clipout","SoundSlot5")
	FALD L 0 A_FireCustomMissile("FALEmptyMagSpawnerSOH",0,0,0,-4)
    FALD L 0 A_GiveInventory("FALToken",1)
	FALD MNOP 2 A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
	goto Reload3
  Reload3:
    FALD QR 2 A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
    FALD S 2 A_PlaySoundEx("fal/clipin","SoundSlot5")
    FALD T 2 A_TakeInventory("Reloading",1)
    Goto ReloadAmmo_SOH
  ReloadAmmo_SOH:
    FALD U 0 A_JumpIfInventory("FALClip2",30,"ReloadEnd_SOH")
	FALD U 0 A_TakeInventory("FALToken",1)
    FALD U 0 A_JumpIfInventory("FALAmmo",1,1)
    Goto ReloadEnd_SOH
    FALD U 0 A_GiveInventory("FALClip2",1)
    FALD U 0 A_TakeInventory("FALAmmo",1)
    Goto ReloadAmmo_SOH
  ReloadEnd_SOH:
    FALD UV 2
    FALD W 2 A_JumpIfInventory("FALBolt",1,"ReloadEndBolt_SOH")
    FALD XYZ 2 A_JumpIfInventory("KnifeAttack",1,"KnifeAttack")
    FALE ABCDE 2 A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
	M4CA C 0 A_JumpIfInventory("AltFireHeld",1,"PostReloadAlt")
    FALE E 0 A_ReFire
    Goto Ready+16
  ReloadEndBolt_SOH:
    FALD W 2 A_TakeInventory("FALBolt",1)
    FALE FG 2 A_JumpIfInventory("KnifeAttack",1,"KnifeAttack")
    FALE H 2 A_PlaySoundEx("fal/bolt","SountSlot5")
    FALE IJKLMNO 2 A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
    FALE PQRST 2 A_JumpIfInventory("KnifeAttack",1,"KnifeAttack")
    FALE E 0 A_ReFire
    Goto Ready+16
  PostReloadAlt:
    FALD A 0 A_JumpIfInventory("FALToken",1,"Reload")
    FALC F 0 A_ZoomFactor(1.3)
    FALC E 0 A_GiveInventory("Aiming",1)
	FALC A 0 ACS_NamedExecuteAlways("RefSpeed",0,0,0,0)
    FALC ABCDEF 1
    Goto AltHold
  ReloadBreak:
    FALC F 0 A_ZoomFactor(1.0)
    FALC FE 1
    FALC E 0 A_TakeInventory("Aiming",1)
    FALC DCBA 1
    FALC A 0 ACS_NamedExecuteAlways("RefSpeed",0,0,0,0)
	TNT1 A 0 A_ClearReFire
    Goto Reload
  ClearRefire:
    FALC F 1 A_ClearReFire
	Goto AltHold
  FireAimAltHold:
    "####" "#" 0 A_JumpIfInventory("FALClip2",1,2)
	TNT1 A 0 A_GiveInventory("FALBolt",1)
	Goto ReloadBreak
    FALC G 0 A_PlayWeaponSound("fal/fire")
	GRNA L 0 A_TakeInventory("FALClip2",1)
    FALC G 0 A_FireCustomMissile("WeaponSmokePuff_BigMuzzle",0,0,0,3)
    FALC G 1 BRIGHT A_FireCustomMissile("HHCBFAL", frandom(-1.30,1.30), 1, 0, 4, 0, frandom(-1.30,1.30))
	FALC G 0 A_SpawnItemEx("RifleCasingSCAR",Cos(Pitch)*30,-4,34-(Sin(Pitch)*43),Cos(Pitch)*FRandom(2,4),FRandom(3,6),-Sin(Pitch)*FRandom(3,6),0,SXF_NOCHECKPOSITION|SXF_TRANSFERPITCH)
    FALC G 0 BRIGHT ACS_NamedExecuteAlways("RefKick",0,0,0,0)
    TNT1 A 0 A_JumpIfInventory("FalClip2",3,2)
    TNT1 A 0 A_PlaySound("m9/lock")
    FALC G 1 BRIGHT A_GunFlash
    FALC H 2 BRIGHT
    "####" "#" 0 A_JumpIfInventory("FALClip2",1,2)
	TNT1 A 0 A_GiveInventory("FALBolt",1)
	Goto ReloadBreak
	TNT1 A 0
    Goto AltHold
  }
}

actor FALClip2 : Ammo
{
    inventory.icon "CLIPA0"
    inventory.amount 0
    inventory.maxamount 30
    ammo.backpackamount 0
    ammo.backpackmaxamount 30
    +IGNORESKILL
}

actor FALExMags : Inventory
{
    inventory.amount 0
    inventory.maxamount 1
}

actor "FN FAL Auto" : "FN FAL"
{
  obituary "%k hastily gunned %o down with the FAL Auto."
  inventory.pickupmessage "You got the FN FAL battle rifle. Line'em up, Knock'em down!"
  //attacksound "fal/fire"
  weapon.selectionorder 6
  weapon.ammotype "FalClip"
  weapon.ammouse 1
  weapon.ammogive 0
  weapon.ammotype2 "FALAmmo"
  weapon.ammouse2 0
  weapon.ammogive2 0
  -NOAUTOFIRE
  states
  {
  Fire:
    FALA L 0 A_JumpIfInventory("Aiming",1,"FireAim")
    FALA L 0 A_JumpIfNoAmmo("ReloadStart")
    FALB A 0 A_JumpIfInventory("Perk3_SteadyAim",1,"Fire_SteadyAim")
    FALB A 0 A_PlayWeaponSound("fal/fire")
    FALB A 0 A_FireCustomMissile("WeaponSmokePuff_BigMuzzle",0,0,5,6)
    FALB A 1 BRIGHT A_FireCustomMissile("HHCBFAL", frandom(-5.00,5.00), 1, 0, 4, 0, frandom(-5.00,5.00))
	FALB A 0 A_SpawnItemEx("RifleCasingSCAR",Cos(Pitch)*30,8,34-(Sin(Pitch)*25),Cos(Pitch)*FRandom(2,4),FRandom(3,6),-Sin(Pitch)*FRandom(3,6),0,SXF_NOCHECKPOSITION|SXF_TRANSFERPITCH)
    FALB A 0 BRIGHT ACS_NamedExecuteAlways("RefKick",0,0,0,0)
    TNT1 A 0 A_JumpIfInventory("FalClip",3,2)
    TNT1 A 0 A_PlaySound("m9/lock")
    FALB A 0 A_JumpIfNoAmmo("FireEmpty")
    FALB A 1 BRIGHT A_GunFlash
    FALB B 2 BRIGHT
    FALB C 1
	M4CA C 0 A_JumpIfInventory("AltFireHeld",1,"PostReloadAlt")
    FALB D 0 A_JumpIfInventory("FALAmmo",1,3)
    FALB DE 1 A_ReFire
    Goto Ready+16
    FALB D 0 A_JumpIfNoAmmo("ReloadStart")
    FALB DE 1 A_ReFire
    Goto Ready+16
  Hold:
    FALA L 0 A_JumpIfInventory("Aiming",1,"HoldAim")
    FALA L 0 A_JumpIfNoAmmo("ReloadStart")
    FALB A 0 A_JumpIfInventory("Perk3_SteadyAim",1,"Hold_SteadyAim")
    FALB A 0 A_PlayWeaponSound("fal/fire")
    FALB A 0 A_FireCustomMissile("WeaponSmokePuff_BigMuzzle",0,0,5,6)
    FALB A 1 BRIGHT A_FireCustomMissile("HHCBFAL", frandom(-10.00,10.00), 1, 0, 4, 0, frandom(-10.00,10.00))
	FALB A 0 A_SpawnItemEx("RifleCasingSCAR",Cos(Pitch)*30,8,34-(Sin(Pitch)*25),Cos(Pitch)*FRandom(2,4),FRandom(3,6),-Sin(Pitch)*FRandom(3,6),0,SXF_NOCHECKPOSITION|SXF_TRANSFERPITCH)
    FALB A 0 BRIGHT ACS_NamedExecuteAlways("RefKick",0,0,0,0)
    TNT1 A 0 A_JumpIfInventory("FalClip",3,2)
    TNT1 A 0 A_PlaySound("m9/lock")
    FALB A 0 A_JumpIfNoAmmo("FireEmpty")
    FALB A 1 BRIGHT A_GunFlash
    FALB B 2 BRIGHT
    FALB C 1
	M4CA C 0 A_JumpIfInventory("AltFireHeld",1,"PostReloadAlt")
    FALB D 0 A_JumpIfInventory("FALAmmo",1,3)
    FALB DE 1 A_ReFire
    Goto Ready+16
    FALB D 0 A_JumpIfNoAmmo("ReloadStart")
    FALB DE 1 A_ReFire
    Goto Ready+16
  FireEmpty:
    FALB A 1 BRIGHT A_GunFlash
    FALB B 2 BRIGHT
    FALB C 1 A_GiveInventory("FALBolt",1)
    FALB D 0 A_JumpIfInventory("FALAmmo",1,3)
    FALB DE 1 A_ReFire
    Goto Ready+16
    FALB D 0 A_JumpIfNoAmmo("ReloadStart")
    FALB DE 1 A_ReFire
    Goto Ready+16
  FireAim:
    FALC F 0 A_JumpIfNoAmmo("ReloadStart")
    FALC G 0 A_PlayWeaponSound("fal/fire")
    FALC G 0 A_FireCustomMissile("WeaponSmokePuff_BigMuzzle",0,0,0,3)
    FALC G 1 BRIGHT A_FireCustomMissile("HHCBFAL", frandom(-0.90,0.90), 1, 0, 4, 0, frandom(-0.90,0.90))
	FALC G 0 A_SpawnItemEx("RifleCasingSCAR",Cos(Pitch)*30,-4,34-(Sin(Pitch)*43),Cos(Pitch)*FRandom(2,4),FRandom(3,6),-Sin(Pitch)*FRandom(3,6),0,SXF_NOCHECKPOSITION|SXF_TRANSFERPITCH)
    FALC G 0 BRIGHT ACS_NamedExecuteAlways("RefKick",0,0,0,0)
    TNT1 A 0 A_JumpIfInventory("FalClip",3,2)
    TNT1 A 0 A_PlaySound("m9/lock")
    FALC G 0 A_JumpIfNoAmmo("FireAimEmpty")
    FALC G 1 BRIGHT A_GunFlash
    FALC H 2 BRIGHT
    FALC I 1
    FALC J 0 A_JumpIfInventory("FALAmmo",1,3)
    FALC JF 1 A_ReFire
    Goto Ready+22
    FALC J 0 A_JumpIfNoAmmo("ReloadStart")
    FALC JF 1 A_ReFire
    Goto Ready+22
  HoldAim:
    FALC F 0 A_JumpIfNoAmmo("ReloadStart")
    FALC G 0 A_PlayWeaponSound("fal/fire")
    FALC G 0 A_FireCustomMissile("WeaponSmokePuff_BigMuzzle",0,0,0,3)
    FALC G 1 BRIGHT A_FireCustomMissile("HHCBFAL", frandom(-2.00,2.00), 1, 0, 4, 0, frandom(-2.00,2.00))
	FALC G 0 A_SpawnItemEx("RifleCasingSCAR",Cos(Pitch)*30,-4,34-(Sin(Pitch)*43),Cos(Pitch)*FRandom(2,4),FRandom(3,6),-Sin(Pitch)*FRandom(3,6),0,SXF_NOCHECKPOSITION|SXF_TRANSFERPITCH)
    FALC G 0 BRIGHT ACS_NamedExecuteAlways("RefKick",0,0,0,0)
    TNT1 A 0 A_JumpIfInventory("FalClip",3,2)
    TNT1 A 0 A_PlaySound("m9/lock")
    FALC G 0 A_JumpIfNoAmmo("FireAimEmpty")
    FALC G 1 BRIGHT A_GunFlash
    FALC H 2 BRIGHT
    FALC I 1
    FALC J 0 A_JumpIfInventory("FALAmmo",1,3)
    FALC JF 1 A_ReFire
    Goto Ready+22
    FALC J 0 A_JumpIfNoAmmo("ReloadStart")
    FALC JF 1 A_ReFire
    Goto Ready+22
  FireAimEmpty:
    FALC G 1 BRIGHT A_GunFlash
    FALC H 2 BRIGHT
    FALC I 1 A_GiveInventory("FALBolt",1)
    FALC J 0 A_JumpIfInventory("FALAmmo",1,3)
    FALC JF 1 A_ReFire
    Goto Ready+22
    FALC J 0 A_JumpIfNoAmmo("ReloadStart")
    FALC JF 1 A_ReFire
    Goto Ready+22
  Zoom:
  PostReloadAlt:
    FALD A 0 A_JumpIfInventory("FALToken",1,"Reload")
    FALC F 0 A_ZoomFactor(1.3)
    FALC E 0 A_GiveInventory("Aiming",1)
	FALC A 0 ACS_NamedExecuteAlways("RefSpeed",0,0,0,0)
    FALC ABCDEF 1
    Goto AltHold
  AltFireHoldAim:
    "####" "#" 0 A_JumpIfInventory("FalClip",1,1)
	Goto Reload
    FALC G 0 A_PlayWeaponSound("fal/fire")
	GRNA L 0 A_TakeInventory("FalClip",1)
    FALC G 0 A_FireCustomMissile("WeaponSmokePuff_BigMuzzle",0,0,0,3)
    FALC G 1 BRIGHT A_FireCustomMissile("HHCBFAL", frandom(-1.50,1.50), 1, 0, 4, 0, frandom(-1.50,1.50))
	FALC G 0 A_SpawnItemEx("RifleCasingSCAR",Cos(Pitch)*30,-4,34-(Sin(Pitch)*43),Cos(Pitch)*FRandom(2,4),FRandom(3,6),-Sin(Pitch)*FRandom(3,6),0,SXF_NOCHECKPOSITION|SXF_TRANSFERPITCH)
    FALC G 0 BRIGHT ACS_NamedExecuteAlways("RefKick",0,0,0,0)
    TNT1 A 0 A_JumpIfInventory("FalClip",3,2)
    TNT1 A 0 A_PlaySound("m9/lock")
    FALC G 1 BRIGHT A_GunFlash
    FALC H 2 BRIGHT
    FALC I 1
    "####" "#" 0 A_JumpIfInventory("FalClip",1,1)
	Goto Reload
    FALC JF 1 A_ReFire
    Goto Ready+22
  AltHold:
    FALC F 1 A_WeaponReady(WRF_NOBOB|WRF_ALLOWRELOAD|WRF_ALLOWZOOM)
	M4CA C 0 A_JumpIfInventory("FireHeld",1,"AltFireHoldAim")
	M4CA C 0 A_JumpIfInventory("Reloading",1,"Reload")
	U45A L 0 A_JumpIfInventory("ThrowingGrenade",1,"FragGrenade")
    U45A L 0 A_JumpIfInventory("KnifeAttack",1,"KnifeAttack")
	G18A I 0 A_JumpIfInventory("weapondropper",1,"AltFire3")
	M4CA F 0 A_Refire("AltHold")
	M4CA C 0 A_JumpIfInventory("Aiming",1,"AltFire2")
	Goto Ready+22
  AltFire:
    GRNA L 0 A_TakeInventory("weapondropper",2)
    M4CD A 0 A_JumpIfInventory("FALToken",1,"Reload")
	M4CA C 0 A_JumpIfInventory("AltFireHeld",1,"AltHold")
    FALC A 0 A_JumpIfInventory("Aiming",1,"AltFire2")
    FALC A 0 A_ZoomFactor(1.3)
    FALC AB 1
    FALC B 0 A_GiveInventory("Aiming",1)
    FALC CDEF 1
    FALC F 0 ACS_NamedExecuteAlways("RefSpeed",0,0,0,0)
    FALC F 0 A_ReFire
    Goto Ready+22
  AltFire2:
    FALC F 0 A_ZoomFactor(1.0)
    FALC FE 1
    FALC E 0 A_TakeInventory("Aiming",1)
    FALC DCBA 1
    FALC A 0 ACS_NamedExecuteAlways("RefSpeed",0,0,0,0)
    M4CA C 0 A_JumpIfInventory("AltFireHeld",1,"PostReloadAlt")
    Goto Ready+16
  AltFire3:
    FALC F 0 A_ZoomFactor(1.0)
    FALC FE 1
    FALC E 0 A_TakeInventory("Aiming",1)
    FALC DCBA 1
    FALC A 0 ACS_NamedExecuteAlways("RefSpeed",0,0,0,0)
    FALC A 0 A_ReFire
	goto DropWeapon
  ReloadStartAim:
    FALC F 0 A_ZoomFactor(1.0)
    FALC FE 1
    FALC E 0 A_TakeInventory("Aiming",1)
    FALC DCBA 1
    FALC A 0 ACS_NamedExecuteAlways("RefSpeed",0,0,0,0)
    Goto ReloadStart+2
  Fire_SteadyAim:
    FALB A 0 A_PlayWeaponSound("fal/fire")
    FALB A 0 A_FireCustomMissile("WeaponSmokePuff_BigMuzzle",0,0,5,6)
    FALB A 1 BRIGHT A_FireCustomMissile("HHCBFAL", frandom(-3.50,3.50), 1, 0, 4, 0, frandom(-3.50,3.50))
	FALB A 0 A_SpawnItemEx("RifleCasingSCAR",Cos(Pitch)*30,8,34-(Sin(Pitch)*25),Cos(Pitch)*FRandom(2,4),FRandom(3,6),-Sin(Pitch)*FRandom(3,6),0,SXF_NOCHECKPOSITION|SXF_TRANSFERPITCH)
    FALB A 0 BRIGHT ACS_NamedExecuteAlways("RefKick",0,0,0,0)
    TNT1 A 0 A_JumpIfInventory("FalClip",3,2)
    TNT1 A 0 A_PlaySound("m9/lock")
    FALB A 0 A_JumpIfNoAmmo("FireEmpty")
    FALB A 1 BRIGHT A_GunFlash
    FALB B 2 BRIGHT
    FALB C 1
	M4CA C 0 A_JumpIfInventory("AltFireHeld",1,"PostReloadAlt")
    FALB D 0 A_JumpIfInventory("FALAmmo",1,3)
    FALB DE 1 A_ReFire
    Goto Ready+16
    FALB D 0 A_JumpIfNoAmmo("ReloadStart")
    FALB DE 1 A_ReFire
    Goto Ready+16
  Hold_SteadyAim:
    FALB A 0 A_PlayWeaponSound("fal/fire")
    FALB A 0 A_FireCustomMissile("WeaponSmokePuff_BigMuzzle",0,0,5,6)
    FALB A 1 BRIGHT A_FireCustomMissile("HHCBFAL", frandom(-8.00,8.00), 1, 0, 4, 0, frandom(-8.00,8.00))
	FALB A 0 A_SpawnItemEx("RifleCasingSCAR",Cos(Pitch)*30,8,34-(Sin(Pitch)*25),Cos(Pitch)*FRandom(2,4),FRandom(3,6),-Sin(Pitch)*FRandom(3,6),0,SXF_NOCHECKPOSITION|SXF_TRANSFERPITCH)
    FALB A 0 BRIGHT ACS_NamedExecuteAlways("RefKick",0,0,0,0)
    TNT1 A 0 A_JumpIfInventory("FalClip",3,2)
    TNT1 A 0 A_PlaySound("m9/lock")
    FALB A 0 A_JumpIfNoAmmo("FireEmpty")
    FALB A 1 BRIGHT A_GunFlash
    FALB B 2 BRIGHT
    FALB C 1
	M4CA C 0 A_JumpIfInventory("AltFireHeld",1,"PostReloadAlt")
    FALB D 0 A_JumpIfInventory("FALAmmo",1,3)
    FALB DE 1 A_ReFire
    Goto Ready+16
    FALB D 0 A_JumpIfNoAmmo("ReloadStart")
    FALB DE 1 A_ReFire
    Goto Ready+16
  Reload: //AltFire:
    FALD A 0 A_JumpIfInventory("FALClip",20,2)
    FALD A 0 A_JumpIfInventory("FALAmmo",1,"ReloadStart")
    FALD A 0 A_TakeInventory("Reloading",1)
    FALD A 0 A_JumpIfInventory("Aiming",1,"ReadyAim")
    Goto Ready+19
  ReloadStart:
    FALD A 0 ACS_NamedExecuteAlways("RefSpeak",0,0,0,0)
    FALD A 0 A_JumpIfInventory("Aiming",1,"ReloadStartAim")
    FALD A 3 A_JumpIfInventory("Perk1_SOH",1,"ReloadStart_SOH")
	FALD A 0 A_JumpIfInventory("FALToken",1,"Reload2")
    FALD BC 3 A_JumpIfInventory("KnifeAttack",1,"KnifeAttack")
    FALD DEF 3 A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
    FALD GIJK 3 A_JumpIfInventory("KnifeAttack",1,"KnifeAttack")
    FALD L 3 A_PlaySoundEx("fal/clipout","SoundSlot5")
	FALD L 0 A_FireCustomMissile("FALEmptyMagSpawner",0,0,0,-4)
    FALD L 0 A_GiveInventory("FALToken",1)
	FALD MNOP 3 A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
	goto Reload2
  Reload2:
    FALD QR 3 A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
    FALD S 3 A_PlaySoundEx("fal/clipin","SoundSlot5")
    FALD T 3 A_TakeInventory("Reloading",1)
    Goto ReloadAmmo
  ReloadAmmo:
    FALD U 0 A_JumpIfInventory("FALClip",20,"ReloadEnd")
	FALD U 0 A_TakeInventory("FALToken",1)
    FALD U 0 A_JumpIfInventory("FALAmmo",1,1)
    Goto ReloadEnd
    FALD U 0 A_GiveInventory("FALClip",1)
    FALD U 0 A_TakeInventory("FALAmmo",1)
    Goto ReloadAmmo
  ReloadEnd:
    FALD UV 3
    FALD W 3 A_JumpIfInventory("FALBolt",1,"ReloadEndBolt")
    FALD XYZ 3 A_JumpIfInventory("KnifeAttack",1,"KnifeAttack")
    FALE ABCDE 3 A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
	M4CA C 0 A_JumpIfInventory("AltFireHeld",1,"PostReloadAlt")
    FALE E 0 A_ReFire
    Goto Ready+16
  ReloadEndBolt:
    FALD W 3 A_TakeInventory("FALBolt",1)
    FALE FGH 3 A_JumpIfInventory("KnifeAttack",1,"KnifeAttack")
    FALE I 3 A_PlaySoundEx("fal/bolt","SountSlot5")
    FALE JKLMNO 3 A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
    FALE PQRST 3 A_JumpIfInventory("KnifeAttack",1,"KnifeAttack")
	M4CA C 0 A_JumpIfInventory("AltFireHeld",1,"PostReloadAlt")
    FALE E 0 A_ReFire
    Goto Ready+16
  ReloadStart_SOH:
    FALD A 0 A_JumpIfInventory("FALToken",1,"Reload3")
    FALD ABC 2 A_JumpIfInventory("KnifeAttack",1,"KnifeAttack")
    FALD DEF 2 A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
    FALD GIJK 2 A_JumpIfInventory("KnifeAttack",1,"KnifeAttack")
    FALD L 2 A_PlaySoundEx("fal/clipout","SoundSlot5")
	FALD L 0 A_FireCustomMissile("FALEmptyMagSpawnerSOH",0,0,0,-4)
    FALD L 0 A_GiveInventory("FALToken",1)
	FALD MNOP 2 A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
	goto Reload3
  Reload3:
    FALD QR 2 A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
    FALD S 2 A_PlaySoundEx("fal/clipin","SoundSlot5")
    FALD T 2 A_TakeInventory("Reloading",1)
    Goto ReloadAmmo_SOH
  ReloadAmmo_SOH:
    FALD U 0 A_JumpIfInventory("FALClip",20,"ReloadEnd_SOH")
	FALD U 0 A_TakeInventory("FALToken",1)
    FALD U 0 A_JumpIfInventory("FALAmmo",1,1)
    Goto ReloadEnd_SOH
    FALD U 0 A_GiveInventory("FALClip",1)
    FALD U 0 A_TakeInventory("FALAmmo",1)
    Goto ReloadAmmo_SOH
  ReloadEnd_SOH:
    FALD UV 2
    FALD W 2 A_JumpIfInventory("FALBolt",1,"ReloadEndBolt_SOH")
    FALD XYZ 2 A_JumpIfInventory("KnifeAttack",1,"KnifeAttack")
    FALE ABCDE 2 A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
	M4CA C 0 A_JumpIfInventory("AltFireHeld",1,"PostReloadAlt")
    FALE E 0 A_ReFire
    Goto Ready+16
  ReloadEndBolt_SOH:
    FALD W 2 A_TakeInventory("FALBolt",1)
    FALE FG 2 A_JumpIfInventory("KnifeAttack",1,"KnifeAttack")
    FALE H 2 A_PlaySoundEx("fal/bolt","SountSlot5")
    FALE IJKLMNO 2 A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
    FALE PQRST 2 A_JumpIfInventory("KnifeAttack",1,"KnifeAttack")
	M4CA C 0 A_JumpIfInventory("AltFireHeld",1,"PostReloadAlt")
    FALE E 0 A_ReFire
    Goto Ready+16
  }
}

actor FALRapidFire : Inventory
{
    inventory.amount 0
    inventory.maxamount 1
}

actor FALPickup : CustomInventory
{
  inventory.pickupmessage "You got the FN FAL battle rifle. Line'em up, Knock'em down!"
  inventory.pickupsound "akm/bolt"
  +INVENTORY.AUTOACTIVATE
  //inventory.respawntics 70
  scale 0.15
  States
  {
  Spawn:
    WEAP F -1
    stop
  Pickup:
    WEAP F 0
    WEAP F 0 A_JumpIf((ACS_NamedExecuteWithResult("RefCheckVar",0,0,0)) == 1, "PickupStay")
    WEAP F 0 A_JumpIfInventory("FN FAL",1,"AmmoPickup") // If the player already has this weapon, they get more ammo for it
    WEAP F 0 A_JumpIfInventory("FN FAL Ex Mags",1,"AmmoPickup")
    WEAP F 0 A_JumpIfInventory("FN FAL Auto",1,"AmmoPickup")
	WEAP F 0 A_JumpIfInventory("Perk1_OneManArmy",1,"OneManArmy")
    WEAP F 0 A_JumpIfInventory("MaxWeaponsFilled",69,"FailPickup2")
	WEAP F 0 A_GiveInventory("MaxWeaponsFilled",32)
    WEAP F 0 ACS_NamedExecuteWithResult("RefPickU",6,0,0)
    stop
  PickupStay:
    WEAP F 0
    WEAP F 0 A_JumpIfInventory("FN FAL",1,"FailPickup") // If the player already has this weapon, they get more ammo for it
    WEAP F 0 A_JumpIfInventory("FN FAL Ex Mags",1,"FailPickup")
    WEAP F 0 A_JumpIfInventory("FN FAL Auto",1,"FailPickup")
	WEAP F 0 A_JumpIfInventory("Perk1_OneManArmy",1,"OneManArmy")
    WEAP F 0 A_JumpIfInventory("MaxWeaponsFilled",69,"FailPickup2")
	WEAP F 0 A_GiveInventory("MaxWeaponsFilled",32)
    WEAP F 0 ACS_NamedExecuteWithResult("RefPickU",6,0,0)
    WEAP F 0 ACS_NamedExecuteWithResult("RefPickC",6,0,0)
    WEAP F 0 A_PlaySound("akm/bolt")
    fail
  AmmoPickup:
    WEAP F 0
    WEAP F 0 A_JumpIfInventory("FALAmmo",0,"FailPickup")
    WEAP F 0 A_GiveInventory("FALAmmo",20)
    stop
  OneManArmy:
    WEAP F 0
	WEAP F 0 A_JumpIfInventory("MaxWeaponsFilled",106,"FailPickup2")
	WEAP F 0 A_GiveInventory("MaxWeaponsFilled",32)
	WEAP F 0 ACS_NamedExecuteWithResult("RefPickU",6,0,0)
	stop
  FailPickup:
    WEAP F 1
    fail
  FailPickup2:
    WEAP F 1
    WEAP F 0 ACS_NamedExecuteAlways("RefSlots",0,24,0,0)
    fail
  }
}

actor FALDrop : FALPickup
{
  States
  {
  Spawn:
    WEAP F -1
    stop
  Pickup:
    WEAP F 0
    WEAP F 0 A_JumpIfInventory("FN FAL",1,"AmmoPickup") // If the player already has this weapon, they get more ammo for it
    WEAP F 0 A_JumpIfInventory("FN FAL Ex Mags",1,"AmmoPickup")
    WEAP F 0 A_JumpIfInventory("FN FAL Auto",1,"AmmoPickup")
	WEAP F 0 A_JumpIfInventory("Perk1_OneManArmy",1,"OneManArmy")
    WEAP F 0 A_JumpIfInventory("MaxWeaponsFilled",69,"FailPickup2")
	WEAP F 0 A_GiveInventory("MaxWeaponsFilled",32)
    WEAP F 0 ACS_NamedExecuteWithResult("RefPickU",6,0,0)
    stop
  }
}

actor FALDrop2 : FALDrop
{
  States
  {
  Spawn:
    WEAP F -1
    stop
  Pickup:
    WEAP F 0
    WEAP F 0 A_JumpIfInventory("FN FAL",1,"AmmoPickup") // If the player already has this weapon, they get more ammo for it
    WEAP F 0 A_JumpIfInventory("FN FAL Ex Mags",1,"AmmoPickup")
    WEAP F 0 A_JumpIfInventory("FN FAL Auto",1,"AmmoPickup")
	WEAP F 0 A_JumpIfInventory("Perk1_OneManArmy",1,"OneManArmy")
    WEAP F 0 A_JumpIfInventory("MaxWeaponsFilled",69,"FailPickup2")
	WEAP F 0 A_GiveInventory("MaxWeaponsFilled",32)
    WEAP F 0 ACS_NamedExecuteWithResult("RefPickU",6,0,0)
    stop
  AmmoPickup:
    WEAP F 0
    stop
  }
}

actor HHCBFAL : HHBullet
{
  damage (random(35,42))
  Speed 500
  damagetype "LMG"
  States
  {
  Spawn:
    TNT1 A 16
    stop
  Death:
    TNT1 A 0 A_SpawnItemEx("ImpactSmokePuff", 0, 0, 0, 0, 0, 0, 0, 128, 0)
    TNT1 A 5 A_PlaySound("generic/ricochet")
    stop
  XDeath:
    TNT1 A 0 A_GiveToTarget("HitIndicator",1)
    TNT1 A 5 A_PlaySound("generic/ricochets")
    stop
  Crash:
    TNT1 A 0 A_GiveToTarget("HitIndicator",1)
    TNT1 A 0 A_SpawnItemEx("ImpactSmokePuff_2", 0, 0, 0, 0, 0, 0, 0, 128, 0)
    TNT1 A 5 A_PlaySound("generic/ricochet")
    stop
  }
}