ACTOR MP7Primary : Ammo
{
  Inventory.Amount 1
  Inventory.MaxAmount 40
  Ammo.BackpackAmount 0
  Ammo.BackpackMaxAmount 40
  Inventory.Icon "CLIPA0"
  +INVENTORY.IGNORESKILL
}

ACTOR MP7Secondary : Ammo
{
  Inventory.PickupMessage "You picked up a mag of MP7 ammunition." // "Picked up a clip."
  Inventory.PickupSound "bullpup/magin"
  Inventory.Amount 70
  Inventory.MaxAmount 300
  Ammo.BackpackAmount 40
  Ammo.BackpackMaxAmount 300
  Inventory.Icon "CLIPA0"
  +INVENTORY.IGNORESKILL
  States
  {
  Spawn:
    CLIP A -1
    Stop
  }
}

ACTOR MP7FireMode : FireMode {}

ACTOR "MP7" : ZTWeapon 11456
{
	Weapon.AmmoGive2 20
	Weapon.AmmoType "MP7Primary"
	Weapon.AmmoType2 "MP7Secondary"
	Obituary "%o was turned into a pincushion by %k's MP7."
	Inventory.Pickupmessage "You picked up the MP7."
	Inventory.PickupSound "ppsh/pickup"
	Tag "Heckler + Koch MP7"
	Scale 0.2
	States
	{
		// - - - - - - - - - - - - - - - -
		
		Hip:
			MP7I A 1 A_WeaponReady
			Goto Super::Main
			
		// This gun has no ADS
		ToggleADS:
			"####" "#" 0 A_TakeInventory("DoADS", 1)
			Goto Super::Main
		
		// - - - - - - - - - - - - - - - -
		
		DeselectAnim:
			M7PS DCBA 1 A_WeaponReady(WRF_NOSWITCH|WRF_NOFIRE)
			Goto Super::Deselecting
			
		SelectAnim:
			TNT1 A 0 A_PlaySoundEx("cloth/melee","SoundSlot6")
			M7PS ABCD 1 A_WeaponReady(WRF_NOFIRE | WRF_NOSWITCH)
			Goto Super::Main

		// - - - - - - - - - - - - - - - -

		ReloadAnim:
			TNT1 A 0 A_TakeInventory("PullBolt",1)
			TNT1 A 0 A_JumpIfInventory("MP7Primary",1,"ReloadAnimReal")
			TNT1 A 0 A_GiveInventory("PullBolt",1)
			Goto ReloadAnimReal

		ReloadAnimReal:
			M7RR ABCDEFGHI 1 A_WeaponReady(WRF_NOSWITCH | WRF_NOFIRE)
			M7RR J 2 A_WeaponReady(WRF_NOSWITCH | WRF_NOFIRE)
			M7RR K 3 A_WeaponReady(WRF_NOSWITCH | WRF_NOFIRE)
			M7RR L 2 A_WeaponReady(WRF_NOSWITCH | WRF_NOFIRE)
			M7RR M 0 A_PlaySoundEx("mp7/magout","SoundSlot6")
			BPSS A 0 A_FireCustomMissile("PistolMagShooter",5,0,16,-3)
			M7RR M 1 A_WeaponReady(WRF_NOSWITCH | WRF_NOFIRE)
			M7RR N 2 A_WeaponReady(WRF_NOSWITCH | WRF_NOFIRE)
			M7RR O 3 A_WeaponReady(WRF_NOSWITCH | WRF_NOFIRE)
			M7RR P 2 A_WeaponReady(WRF_NOSWITCH | WRF_NOFIRE)
			M7RR QR 1 A_WeaponReady(WRF_NOSWITCH | WRF_NOFIRE)
			M7RR M 0 A_PlaySoundEx("mp7/cloth","SoundSlot6")
			M7RR STUVWXY 1 A_WeaponReady(WRF_NOSWITCH | WRF_NOFIRE)
			M7RR Z 2 A_WeaponReady(WRF_NOSWITCH | WRF_NOFIRE)
			M7RS A 3 A_WeaponReady(WRF_NOSWITCH | WRF_NOFIRE)
			M7RR M 0 A_PlaySoundEx("mp7/magin","SoundSlot6")

			"####" A 0 ACS_NamedExecuteAlways("ReloadAmmo",0,0,0,0)

			M7RS B 3 A_WeaponReady(WRF_NOSWITCH | WRF_NOFIRE)
			M7RS CDEFGHIJKLMN 1 A_WeaponReady(WRF_NOSWITCH | WRF_NOFIRE)
			TNT1 A 0 A_JumpIfInventory("PullBolt",1,"BoltPull")
			M7RS OPQRS 1 A_WeaponReady(WRF_NOSWITCH | WRF_NOFIRE)
			Goto Super::ReloadComplete

		BoltPull:
			40RM A 0 A_TakeInventory("PullBolt",1)
			MPRP ABCDEFG 1 A_WeaponReady(WRF_NOSWITCH | WRF_NOFIRE)
			MPRP G 3 A_WeaponReady(WRF_NOSWITCH | WRF_NOFIRE)
			MPRP H 1 A_WeaponReady(WRF_NOSWITCH | WRF_NOFIRE)
			MPRP H 0 A_PlaySoundEx("mp7/boltback","SoundSlot6")
			MPRP H 1 A_WeaponReady(WRF_NOSWITCH | WRF_NOFIRE)
			MPRP IJKL 1 A_WeaponReady(WRF_NOSWITCH | WRF_NOFIRE)
			MPRP M 2 A_WeaponReady(WRF_NOSWITCH | WRF_NOFIRE)
			MPRP N 3 A_WeaponReady(WRF_NOSWITCH | WRF_NOFIRE)
			MPRP O 0 A_PlaySoundEx("mp7/boltfwd","SoundSlot6")
			MPRP N 1 A_WeaponReady(WRF_NOSWITCH | WRF_NOFIRE)
			MPRP O 3 A_WeaponReady(WRF_NOSWITCH | WRF_NOFIRE)
			MPRP P 2 A_WeaponReady(WRF_NOSWITCH | WRF_NOFIRE)
			MPRP QRST 1 A_WeaponReady(WRF_NOSWITCH | WRF_NOFIRE)
			Goto Super::ReloadComplete

		// - - - - - - - - - - - - - - - -
		
		Fire:
			PPFI A 0 A_JumpIfInventory("MP7Primary",1,1)
			Goto Super::Dryfire
			PPFI A 0 A_FireBullets (ACS_ExecuteWithResult(566,4,0,0), ACS_ExecuteWithResult(566,4,0,0), 1, 5, "BulletPuff2")
			BPSS A 0 A_FireCustomMissile("MP7CaseSpawn",5,0,16,-3)
			PPFI A 0 A_PlaySound("mp7/fire", CHAN_WEAPON)
			TNT1 A 0 A_SpawnItemEx("ShooterLight",0,0,0)
			PPFI A 0 A_SetPitch(pitch-0.5)
			MP7I B 1 bright A_WeaponReady(WRF_NOFIRE | WRF_NOSWITCH)
			PPFI A 0 A_SetPitch(pitch+0.4)
			MP7I C 1 A_WeaponReady(WRF_NOFIRE | WRF_NOSWITCH)
			PPFI A 0 A_JumpIfInventory("MP7FireMode",1,"Main")
			PPFI A 0 A_ReFire
			Goto Super::Main
			
		// - - - - - - - - - - - - - - - -
		
		Spawn:
			MP7S M -1
			Stop
			
		// - - - - - - - - - - - - - - - -

		AltFire:
			"####" "#" 0 ACS_NamedExecuteAlways("FireModeSwitch",0,0,0,0)
			"####" "#" 0 A_JumpIfInventory("MP7FireMode",1,"ToSemi")
			"####" "#" 0 A_PlaySoundEx("modeswitch/on", "SoundSlot6")
			Goto Super::XHairCheck
		ToSemi:
			"####" "#" 0 A_PlaySoundEx("modeswitch/off", "SoundSlot6")
			Goto Super::XHairCheck

	}
}