ACTOR MP40 : Weapon
{
	Weapon.SelectionOrder 1200
	Weapon.SlotNumber 2
	Weapon.AmmoType "Clip"
	Weapon.AmmoGive 30
	Weapon.AmmoUse 1
	Weapon.AmmoType2 "MP40Ammo"
	Weapon.AmmoUse2 1
	Inventory.PickupMessage "You got the MP40!"
	Inventory.PickupSound "weapon/mp40"
	Obituary "%o was cleansed by %k's MP40."
	+WEAPON.NOALERT
	+WEAPON.AMMO_CHECKBOTH
	Tag "MP40"
	Weapon.BobStyle "Smooth"
	Weapon.BobSpeed 2.0
	Weapon.BobRangeX 0.30
	Weapon.BobRangeY 0.40
	States
	{
	Ready:
		MPGN E 1 Offset(-200,120) A_PlayWeaponSound("weapons/MP40/cock")
		MPGN E 1 Offset(-160,110)
		MPGN E 1 Offset(-140,100)
		MPGN E 1 Offset(-120,80)
		MPGN E 1 Offset(-100,70)
		MPGN D 1 Offset(-80,60)
		MPGN D 1 Offset(-50,45)
		MPGN A 1 Offset(-5,40)
		MPGN A 1 Offset(0,32)
		TNT1 A 0 A_Refire
	ReadyII:
		TNT1 A 0 A_TakeInventory("AltfireToken1",1)
		TNT1 A 0 A_TakeInventory("AltfireToken1",1)
		TNT1 A 0 A_JumpIfInventory("MP40Ammo",0,2)
		TNT1 A 0 A_JumpIfInventory("Clip",1,2)
		MPGN A 1 Offset(0,32) A_WeaponReady
		Loop
		TNT1 A 0 A_TakeInventory("AltfireToken1",1)
		TNT1 A 0 A_TakeInventory("AltfireToken1",1)
		MPGN A 1 Offset(0,32) A_WeaponReady (WRF_ALLOWRELOAD)
		Loop
	Select:
		TNT1 A 0 A_Raise
		Loop
	Deselect:
		TNT1 A 0 A_TakeInventory("AltfireToken1",1)
		TNT1 A 0 A_TakeInventory("AltfireToken1",1)
		TNT1 A 0 A_ClearReFire
		MPGN A 1 Offset(15,40)
		MPGN A 1 Offset(30,55)
		MPGN A 1 Offset(45,75)
		MPGN A 1 Offset(60,100)
		MPGN A 1 Offset(75,130)
		TNT1 A 5
		TNT1 A 0 A_Lower
		Wait
	Fire:
		TNT1 A 0 A_TakeInventory("AltfireToken1",1)
		TNT1 A 0 A_TakeInventory("AltfireToken1",1)
		TNT1 A 0 A_JumpIfInventory("MP40Ammo",1,1)
		Goto ReloadCheck
		TNT1 A 0 A_TakeInventory("MP40Ammo",1,TIF_NOTAKEINFINITE)
		MPGN A 2 A_AlertMonsters
		MPGN A 0 A_GunFlash
		MPGN A 0 A_SetPitch(pitch+0.2)
		MPGN A 0 A_PlaySound("weapons/MP40/fire",7)
		MPGN B 1 Bright A_FireBullets(3,4,-1,6,"AltPuff",0)
		TNT1 A 0 A_ZoomFactor(0.996)
		TNT1 A 0 A_FireCustomMissile("GunSmokeSpawner",0,0,8,-5)
		TNT1 A 0 A_FireCustomMissile("9mmCasingSpawner",0,0,3,-10)
		MPGN C 1 A_SetPitch(pitch-0.2)
		TNT1 A 0 A_ZoomFactor(0.997)
		MPGN X 1
		TNT1 A 0 A_ZoomFactor(1.0)
		TNT1 A 0 A_ReFire
		MPGN FX 1 A_WeaponReady
		Goto ReadyII
	Altfire:
		TNT1 A 0 A_ClearRefire
		TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("MP40Reload")==0, "AltfireCheck1")
		TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("HandgunReload")==0, "AltfireCheck2")
		Goto AltfireShow
	AltfireCheck1:
		TNT1 A 0 A_JumpIfInventory("AltfireToken1",1,"AltfireHold")
		TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("HandgunReload")==0, "AltfireCheck2")
		Goto AltfireShow
	AltfireCheck2:
		TNT1 A 0 A_JumpIfInventory("AltfireToken2",1,"AltfireHold")
		Goto AltfireShow
	AltfireShow:
		TNT1 A 0 A_JumpIfInventory("MP40Ammo",1,1)
		Goto ReloadCheck
		TNT1 A 0 A_JumpIfInventory("9mm",1,1)
		Goto BReloadCheck
		TNT1 A 0 A_PlaySound("weapons/beretta/ready")
		MPGN F 1
		PWHP ABCD 2
		PWHP E 1
		PWHP FG 2
		TNT1 A 0 A_Refire("AltfireHold")
		TNT1 A 0 A_TakeInventory("DuelWield",1)
		PWHP G 1
		PWHP FEDCBA 1
		Goto ReadyII
	AltfireHold:
		TNT1 A 0 A_GiveInventory("DuelWield",1)
		TNT1 A 0 A_JumpIfInventory("MP40Ammo",1,1)
		Goto ReloadCheck
		TNT1 A 0 A_JumpIfInventory("9mm",1,1)
		Goto BReloadCheck
		PSMP A 1
		TNT1 A 0 A_PlaySound("weapons/beretta/fire2", CHAN_AUTO)
		TNT1 A 0 A_TakeInventory("9mm",1,TIF_NOTAKEINFINITE)
		TNT1 A 0 A_AlertMonsters
		TNT1 A 0 A_Gunflash
		PSMP A 1 A_FireBullets(4, 4, -1, 6, "AltPuff", 0)
		TNT1 A 0 A_FireCustomMissile("GunSmokeSpawner",0,0,-8,0)
		TNT1 A 0 A_FireCustomMissile("9mmCasingSpawner",0,0,-16,0)
		PSMP B 1 Bright A_ZoomFactor(0.998)
		TNT1 A 0 A_SetPitch(pitch+0.2)
		TNT1 A 0 A_PlaySound("weapons/MP40/fire", 4)
		TNT1 A 0 A_TakeInventory("MP40Ammo",1,TIF_NOTAKEINFINITE)
		PSMP C 1 A_FireBullets(5,4,-1,6,"AltPuff",0)
		TNT1 A 0 A_ZoomFactor(0.996)
		TNT1 A 0 A_FireCustomMissile("GunSmokeSpawner",0,0,32,-5)
		TNT1 A 0 A_FireCustomMissile("9mmCasingSpawner",0,0,32,-10)
		PSMP D 1 A_SetPitch(pitch-0.2)
		PSMP E 1 Bright
		PSMP F 2 A_SetPitch(pitch+0.2)
		TNT1 A 0 A_PlaySound("weapons/MP40/fire", 4)
		TNT1 A 0 A_TakeInventory("MP40Ammo",1,TIF_NOTAKEINFINITE)
		TNT1 A 0 A_FireBullets(4,5,-1,6,"AltPuff",0)
		TNT1 A 0 A_FireCustomMissile("GunSmokeSpawner",0,0,32,-5)
		TNT1 A 0 A_FireCustomMissile("9mmCasingSpawner",0,0,32,-10)
		PSMP G 1 A_SetPitch(pitch-0.2)
		PSMP HI 1
		TNT1 A 0 A_GiveInventory("AltfireToken1",1)
		TNT1 A 0 A_GiveInventory("AltfireToken2",1)
		TNT1 A 0 A_TakeInventory("DuelWield",1)
		TNT1 AA 0 A_Refire("AltfireHold")
		Goto AltfireEnd
	AltfireEnd:
		TNT1 A 0 A_TakeInventory("AltfireToken1",1)
		TNT1 A 0 A_TakeInventory("AltfireToken2",1)
		TNT1 A 0 A_ZoomFactor(1.0)
		PWHP GFEDCBA 1
		Goto ReadyII
	Flash:
		MP4F A 1 Bright A_Light2
		MP4F B 1 Bright A_Light2
		TNT1 A 1 A_Light1
		Goto LightDone
	AltFlash:
		TNT1 A 1
		DFSH A 1 Bright A_Light2
		DFSH B 1 Bright A_Light1
		DFSH C 1 Bright A_Light1
		TNT1 A 2 A_Light1
		DFSH D 1 Bright A_Light2
		DFSH C 1 Bright A_Light1
		TNT1 A 1 A_Light1
		Goto LightDone
	ReloadCheck:
		TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("MP40Reload")==0, "NoReloadLoop")
		TNT1 A 0 A_JumpIfInventory("DuelWield",1,"DuelReload")
		Goto Reload
	DuelReload:
		TNT1 A 0 A_ClearRefire
		TNT1 A 0 A_TakeInventory("DuelWield",1)
		TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("MP40Reload")==0, "NoReloadLoop")
		PWHP GFEDCBA 1
		Goto Reload
	Reload:
		TNT1 A 0 A_JumpIfInventory("MP40Ammo",1,"Reload2")
		MPGN DE 3
		TNT1 A 0 A_PlayWeaponSound("weapons/MP40/reload")
		MP4R ABC 2
		MP4R E 1
		MP4R F 12
		MP4R GH 1
		MP4R CBA 3
		Goto ReloadLoop
	Reload2:
		MPGN DE 3
		TNT1 A 0 A_PlayWeaponSound("weapons/MP40/reload")
		MP4R ABC 2
		MP4R G 1
		MP4R F 8
		MP4R GHCBA 3
		Goto ReloadLoop2
	ReloadLoop:
		TNT1 A 0 A_GiveInventory("MP40Ammo")
		TNT1 A 0 A_TakeInventory("Clip",1,TIF_NOTAKEINFINITE)
		TNT1 A 0 A_JumpIfInventory("MP40Ammo",32,"ReloadEnd")
		TNT1 A 0 A_JumpIfInventory("Clip",1,"ReloadLoop")
		Goto ReloadEnd
	ReloadLoop2:
		TNT1 A 0 A_GiveInventory("MP40Ammo")
		TNT1 A 0 A_TakeInventory("Clip",1,TIF_NOTAKEINFINITE)
		TNT1 A 0 A_JumpIfInventory("MP40Ammo",32,"End2")
		TNT1 A 0 A_JumpIfInventory("Clip",1,"ReloadLoop2")
		Goto End2
	NoReloadLoop:
		TNT1 A 0 A_GiveInventory("MP40Ammo")
		TNT1 A 0 A_TakeInventory("Clip",1,TIF_NOTAKEINFINITE)
		TNT1 A 0 A_JumpIfInventory("MP40Ammo",32,"NoreloadEnd")
		TNT1 A 0 A_JumpIfInventory("Clip",1,"NoReloadLoop")
		Goto NoReloadEnd
	NoreloadEnd:
		TNT1 AA 0
		TNT1 A 0 A_JumpIfInventory("AltfireToken1",1,"NoreloadEndAlt")
		Goto ReadyII
	NoreloadEndAlt:
		TNT1 AA 0
		TNT1 A 0 A_Refire("AltfireHold")
		Goto ReadyII
	ReloadEnd:
		TNT1 A 0 A_PlayWeaponSound("weapons/MP40/cock")
		MP4C A 2
		MP4C B 3
		MP4C CD 2
		MP4C A 2
		MP4C E 1
		MPGN E 2
		MPGN D 1
		MPGN D 1
		MPGN G 1
		TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("HandgunReload")==0, "ReloadEndReady")
		Goto ReadyII
	ReloadEndReady:
		TNT1 A 0 A_TakeInventory("AltfireToken1",1)
		TNT1 A 0 A_TakeInventory("AltfireToken2",1)
		Goto ReadyII
	End2:
		MPGN E 2
		MPGN D 1
		MPGN D 1
		MPGN G 1 
		Goto ReadyII
	BReloadCheck:
		TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("HandgunReload")==0, "NoBReloadChamberCheck")
		Goto BReload
	BReload:
		MPGN A 1 Offset(15,40)
		MPGN A 1 Offset(30,55)
		MPGN A 1 Offset(45,75)
		MPGN A 1 Offset(60,100)
		MPGN A 1 Offset(75,130)
		DRLD P 1 Offset(90,79)
		DRLD P 1 Offset(15,39)
		DRLD P 1 Offset(1,35)
		DRLD P 1 Offset(0,32) A_PlaySound("weapons/beretta/magdrop",6)
		TNT1 A 0 A_JumpIfInventory ("9mm",1,"BReloadShow2")
	BReloadShow:
		DRLD S 1
		DRLD AB 1
		DRLD CDEE 1
		DRLD F 4
		DRLD G 2
		Goto BReloadChamberCheck
	BReloadShow2:
		DRLD P 1
		DHLD AB 1
		DHLD CMGG 1
		DHLD F 4
		DHLD G 2
		Goto BReloadChamberCheck
	BReloadChamberCheck:
		TNT1 A 0 A_JumpIfInventory ("ExtendedMags",1,"BReloadChamberCheck2")
		TNT1 A 0 A_JumpIfInventory ("9mm",1,"BReloadLoop2")
		Goto BReloadLoop
	BReloadChamberCheck2:
		TNT1 A 0 A_JumpIfInventory ("9mm",1,"BReloadLoop4")
		Goto BReloadLoop3
		
	BReloadLoop:
		TNT1 A 0 A_GiveInventory("9mm")
		TNT1 A 0 A_TakeInventory("Clip",1)
		TNT1 A 0 A_JumpIfInventory("9mm",10,"BReloadEnd")
		TNT1 A 0 A_JumpIfInventory("Clip",1,"BReloadLoop")
		Goto BReloadEnd
	BReloadLoop2:
		TNT1 A 0 A_GiveInventory("9mm")
		TNT1 A 0 A_TakeInventory("Clip",1)
		TNT1 A 0 A_JumpIfInventory("9mm",11,"BReloadEnd2")
		TNT1 A 0 A_JumpIfInventory("Clip",1,"BReloadLoop2")
		Goto BReloadEnd2
	BReloadLoop3:
		TNT1 A 0 A_GiveInventory("9mm")
		TNT1 A 0 A_TakeInventory("Clip",1)
		TNT1 A 0 A_JumpIfInventory("9mm",15,"BReloadEnd")
		TNT1 A 0 A_JumpIfInventory("Clip",1,"BReloadLoop3")
		Goto BReloadEnd
	BReloadLoop4:
		TNT1 A 0 A_GiveInventory("9mm")
		TNT1 A 0 A_TakeInventory("Clip",1)
		TNT1 A 0 A_JumpIfInventory("9mm",16,"BReloadEnd2")
		TNT1 A 0 A_JumpIfInventory("Clip",1,"BReloadLoop4")
		Goto BReloadEnd2
		
	BReloadEnd:
		DRLD HHHIIJJKKKLL 1
		TNT1 A 0 A_PlaySound("weapons/beretta/snap",5)
		DRLD MNOO 1
		DRLD P 1 Offset(-15,39)
		DRLD P 1 Offset(-30,50)
		DRLD P 1 Offset(-60,80)
		DRLD P 1 Offset(-70,90)
		TNT1 A 1 
		MPGN A 1 Offset(75,130)
		MPGN A 1 Offset(60,100)
		MPGN A 1 Offset(45,75)
		MPGN A 1 Offset(15,40)
		MPGN A 1 Offset(0,32)
		Goto ReadyII
	BReloadEnd2:
		DHLD HHHIIJJKKKLL 1
		DRLD MNOO 1
		DRLD P 1 Offset(-15,39)
		DRLD P 1 Offset(-30,50)
		DRLD P 1 Offset(-60,80)
		DRLD P 1 Offset(-70,90)
		TNT1 A 1 
		MPGN A 1 Offset(75,130)
		MPGN A 1 Offset(60,100)
		MPGN A 1 Offset(45,75)
		MPGN A 1 Offset(15,40)
		MPGN A 1 Offset(0,32)
		Goto ReadyII
		
	NoBReloadChamberCheck:
		TNT1 A 0 A_JumpIfInventory ("ExtendedMags",1,"NoBReloadChamberCheck2")
		TNT1 A 0 A_JumpIfInventory ("9mm",1,"NoBReloadLoop2")
		Goto NoBReloadLoop
	NoBReloadChamberCheck2:
		TNT1 A 0 A_JumpIfInventory ("9mm",1,"NoBReloadLoop4")
		Goto NoBReloadLoop3
	NoBReloadLoop:
		TNT1 A 0 A_GiveInventory("9mm")
		TNT1 A 0 A_TakeInventory("Clip",1)
		TNT1 A 0 A_JumpIfInventory("9mm",10,"NoBReloadEnd")
		TNT1 A 0 A_JumpIfInventory("Clip",1,"NoBReloadLoop")
		Goto NoBReloadEnd
	NoBReloadLoop2:
		TNT1 A 0 A_GiveInventory("9mm")
		TNT1 A 0 A_TakeInventory("Clip",1)
		TNT1 A 0 A_JumpIfInventory("9mm",11,"NoBReloadEnd")
		TNT1 A 0 A_JumpIfInventory("Clip",1,"NoBReloadLoop2")
		Goto NoBReloadEnd
	NoBReloadLoop3:
		TNT1 A 0 A_GiveInventory("9mm")
		TNT1 A 0 A_TakeInventory("Clip",1)
		TNT1 A 0 A_JumpIfInventory("9mm",15,"NoBReloadEnd")
		TNT1 A 0 A_JumpIfInventory("Clip",1,"NoBReloadLoop3")
		Goto NoBReloadEnd
	NoBReloadLoop4:
		TNT1 A 0 A_GiveInventory("9mm")
		TNT1 A 0 A_TakeInventory("Clip",1)
		TNT1 A 0 A_JumpIfInventory("9mm",16,"NoBReloadEnd")
		TNT1 A 0 A_JumpIfInventory("Clip",1,"NoBReloadLoop4")
		Goto NoBReloadEnd
	NoBReloadEnd:
		TNT1 AA 0
		TNT1 A 0 A_JumpIfInventory("AltfireToken2",1,"NoBReloadEndAlt")
		Goto ReadyII
	NoBReloadEndAlt:
		TNT1 AA 0
		TNT1 A 0 A_Refire("AltfireHold")
		Goto ReadyII
	Spawn:
		MPIC A -1
		Stop
		}
}

ACTOR MP40Ammo : Ammo
{
   +IGNORESKILL
   Inventory.MaxAmount 32
}

ACTOR DuelWield : Inventory
{
	Inventory.MaxAmount 1
}

ACTOR AltfireToken1 : Inventory
{
	Inventory.MaxAmount 1
}

ACTOR AltfireToken2 : Inventory
{
	Inventory.MaxAmount 1
}