ACTOR Beretta : Weapon replaces Pistol
{
	Weapon.SelectionOrder 2000
	Weapon.SlotNumber 2
	Weapon.AmmoType "Clip"
	Weapon.AmmoGive 12
	Weapon.AmmoUse 1
	Weapon.AmmoType2 "9mm"
	Weapon.AmmoUse2 1
	Inventory.Pickupmessage "Picked up a handgun"
	Inventory.PickupSound "weapons/fist/swing"
	Inventory.Icon "CLIPB0"
	Obituary "%o was humiliated by %k's side-arm"
	+WEAPON.WIMPY_WEAPON
	+WEAPON.NOALERT
	+WEAPON.AMMO_CHECKBOTH
	+WEAPON.ALT_AMMO_OPTIONAL
	Tag "Beretta"
	Weapon.BobStyle "Smooth"
	Weapon.BobSpeed 2.0
	Weapon.BobRangeX 0.30
	Weapon.BobRangeY 0.40
	States
	{
	Deselect:
		TNT1 A 0 A_ClearRefire
		BRTT A 1 Offset(-5,35)
		BRTT A 1 Offset(-15,39)
		BRTT A 1 Offset(-30,45)
		BRTT A 1 Offset(-40,52)
		BRLD P 1 Offset(-45,60)
		BRLD P 1 Offset(-49,75)
		BRLD P 1 Offset(-51,90)
		TNT1 A 3 Offset(0,32)
		TNT1 A 0 A_Lower
	Wait
	Select:
		TNT1 A 0 A_Raise
	Loop
	Ready:
		BRLD P 1 Offset(-90,79)
		BRLD P 1 Offset(-75,69)
		BRLD P 1 Offset(-60,60)
		TNT1 A 0 A_PlaySound("weapons/beretta/snap")
		BRTT A 1 Offset(-45,52)
		BRTT A 1 Offset(-30,45)
		BRTT A 1 Offset(-15,39)
		BRTT A 1 Offset(-1,35)
		TNT1 A 0 Offset(0,32)
	ReadyII:
		BRTT A 0 A_JumpIfInventory("9mm",0,2)
		BRTT A 0 A_JumpIfInventory("Clip",1,2)
		BRTT A 1 A_WeaponReady
		Loop
		BRTT A 1 A_WeaponReady(WRF_ALLOWRELOAD)
		Loop
	Fire:
		TNT1 A 0 A_JumpIfInventory("9mm",1,1)
		Goto Reloadcheck
		TNT1 AAAA 0
		TNT1 A 0 A_JumpIfInventory("Toggle",1,"ToggleLockFire")
		TNT1 A 0 A_TakeInventory("9mm",1,TIF_NOTAKEINFINITE) 
		BRTT B 1 A_GunFlash
		TNT1 A 0 A_SetPitch (pitch+0.1)
		TNT1 A 0 A_PlaySound("weapons/beretta/fire", 7)
		BRTT B 1 Bright A_FireBullets(3, 3, -1, 6, "AltPuff", 0)
		TNT1 A 0 A_ZoomFactor(0.998)
		TNT1 A 0 A_SetPitch (pitch-0.1)
		BRTT C 1 Offset(0,33) A_AlertMonsters
		BRTT C 1 Offset(0,32) A_ZoomFactor(1.0)
		TNT1 A 0 A_FireCustomMissile("GunSmokeSpawner",0,0,8,0)
		TNT1 A 0 A_FireCustomMissile("9mmCasingSpawner",0,0,8,0)
		BRTT EED 1
		BRTT B 2
		BRTT A 1 A_ReFire
		Goto ReadyII
	Flash:
		BRTF A 1 Bright A_Light2
		BRTF B 1 Bright A_Light1
		Goto LightDone
	AltFire:
		TNT1 A 0
		Goto PistolKick
	PistolKick:
		TNT1 A 0 A_JumpIfInventory("PowerStrength", 1, "BerserkPistolKick")
		TNT1 A 0 A_PlaySound("weapons/foot/swing")
		GKCK ABC 2
		BOOT D 1
		BOOT D 1 A_ZoomFactor(0.995)
		TNT1 A 0 A_Custompunch(2*random(5,15),1,0,"FootPuff",96)
		TNT1 A 0 A_RadiusThrust(5000, 64, RTF_NOIMPACTDAMAGE)
		TNT1 A 0 A_ZoomFactor(1.0)
		TNT1 A 0 A_JumpIfInventory("MeleeAlarm", 1, "PistolKickAlert")
		Goto KickEnd
	BerserkPistolKick:
		TNT1 A 0 A_PlaySound("weapons/foot/swing")
		GKCK ABC 2
		BOOT D 1
		BOOT D 1 A_ZoomFactor(0.995)
		TNT1 A 0 A_Custompunch(20*random(5,15),1,0,"FootPuff",96)
		TNT1 A 0 A_RadiusThrust(5000, 64, RTF_NOIMPACTDAMAGE)
		TNT1 A 0 A_ZoomFactor(1.0)
		TNT1 A 0 A_JumpIfInventory("MeleeAlarm", 1, "PistolKickAlert")
		Goto KickEnd
	PistolKickAlert:
		TNT1 A 0 A_AlertMonsters
		TNT1 A 0 A_TakeInventory("MeleeAlarm",1)
	KickEnd:
		KICK E 1
		KICK F 1
		KICK G 2
		KICK E 1
		BOOT D 2
		GKCK CCBBA 1
		BRTT B 1 A_Refire
		Goto ReadyII
	ReloadCheck:
		TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("HandgunReload")==0, "NoReloadChamberCheck")
		Goto Reload

	Reload:
		BRTT B 4 A_PlaySound("weapons/beretta/magdrop",6)
		TNT1 A 0 A_JumpIfInventory ("9mm",1,"ReloadShow2")
	ReloadShow:
		BRLD S 2
		BRLD AB 2
		BRLD CDEE 1
		BRLD F 4
		BRLD G 2
		Goto ReloadChamberCheck
	ReloadShow2:
		BRLD P 2
		CHLD AB 2
		CHLD CMGG 1
		CHLD F 4
		CHLD G 2
		Goto ReloadChamberCheck
	ReloadChamberCheck:
		TNT1 A 0 A_JumpIfInventory ("ExtendedMags",1,"ReloadChamberCheck2")
		TNT1 A 0 A_JumpIfInventory ("9mm",1,"ReloadLoop2")
		Goto ReloadLoop
	ReloadChamberCheck2:
		TNT1 A 0 A_JumpIfInventory ("9mm",1,"ReloadLoop4")
		Goto ReloadLoop3

	ReloadLoop:
		TNT1 A 0 A_GiveInventory("9mm")
		TNT1 A 0 A_TakeInventory("Clip",1)
		TNT1 A 0 A_JumpIfInventory("9mm",10,"ReloadEnd")
		TNT1 A 0 A_JumpIfInventory("Clip",1,"ReloadLoop")
		Goto ReloadEnd
	ReloadLoop2:
		TNT1 A 0 A_GiveInventory("9mm")
		TNT1 A 0 A_TakeInventory("Clip",1)
		TNT1 A 0 A_JumpIfInventory("9mm",11,"ReloadEnd2")
		TNT1 A 0 A_JumpIfInventory("Clip",1,"ReloadLoop2")
		Goto ReloadEnd2
	ReloadLoop3:
		TNT1 A 0 A_GiveInventory("9mm")
		TNT1 A 0 A_TakeInventory("Clip",1)
		TNT1 A 0 A_JumpIfInventory("9mm",15,"ReloadEnd")
		TNT1 A 0 A_JumpIfInventory("Clip",1,"ReloadLoop3")
		Goto ReloadEnd
	ReloadLoop4:
		TNT1 A 0 A_GiveInventory("9mm")
		TNT1 A 0 A_TakeInventory("Clip",1)
		TNT1 A 0 A_JumpIfInventory("9mm",16,"ReloadEnd2")
		TNT1 A 0 A_JumpIfInventory("Clip",1,"ReloadLoop4")
		Goto ReloadEnd2
		
	ReloadEnd:
		BRLD HHHIIJJKKKLL 1
		TNT1 A 0 A_PlaySound("weapons/beretta/snap",5)
		BRLD M 3
		BRLD NNOOP 1
		TNT1 A 0 A_Refire
		Goto ReadyII
	ReloadEnd2:
		CHLD HHHIIJJKKKLL 1
		BRLD M 3
		BRLD NNOOP 1
		TNT1 A 0 A_Refire
		Goto ReadyII
		
	NoReloadChamberCheck:
		TNT1 A 0 A_JumpIfInventory ("ExtendedMags",1,"NoReloadChamberCheck2")
		TNT1 A 0 A_JumpIfInventory ("9mm",1,"NoReloadLoop2")
		Goto NoReloadLoop
	NoReloadChamberCheck2:
		TNT1 A 0 A_JumpIfInventory ("9mm",1,"NoReloadLoop4")
		Goto NoReloadLoop3
	NoReloadLoop:
		TNT1 A 0 A_GiveInventory("9mm")
		TNT1 A 0 A_TakeInventory("Clip",1)
		TNT1 A 0 A_JumpIfInventory("9mm",10,"NoReloadEnd")
		TNT1 A 0 A_JumpIfInventory("Clip",1,"NoReloadLoop")
		Goto NoReloadEnd
	NoReloadLoop2:
		TNT1 A 0 A_GiveInventory("9mm")
		TNT1 A 0 A_TakeInventory("Clip",1)
		TNT1 A 0 A_JumpIfInventory("9mm",11,"NoReloadEnd")
		TNT1 A 0 A_JumpIfInventory("Clip",1,"NoReloadLoop2")
		Goto NoReloadEnd
	NoReloadLoop3:
		TNT1 A 0 A_GiveInventory("9mm")
		TNT1 A 0 A_TakeInventory("Clip",1)
		TNT1 A 0 A_JumpIfInventory("9mm",15,"NoReloadEnd")
		TNT1 A 0 A_JumpIfInventory("Clip",1,"NoReloadLoop3")
		Goto NoReloadEnd
	NoReloadLoop4:
		TNT1 A 0 A_GiveInventory("9mm")
		TNT1 A 0 A_TakeInventory("Clip",1)
		TNT1 A 0 A_JumpIfInventory("9mm",16,"NoReloadEnd")
		TNT1 A 0 A_JumpIfInventory("Clip",1,"NoReloadLoop4")
		Goto NoReloadEnd
	NoReloadEnd:
		TNT1 A 0 A_Refire
		Goto ReadyII
		
	Spawn:
		PIST A -1
		Stop
	}
}

Actor Toggle : Inventory
{
	Inventory.Maxamount 1
}

ACTOR 9mm : Ammo
{
	+IGNORESKILL
	Inventory.MaxAmount 11
	Ammo.BackpackMaxAmount 16
}

ACTOR ExtendedMags : Ammo
{
	Ammo.BackpackAmount 1
	Ammo.BackpackMaxAmount 1
}