ACTOR EnforcerBurst : Inventory { Inventory.MaxAmount 1 }

Actor Enforcer : "Handgun " //Sponsored by HEM-Custom
{
Scale 0.25
Weapon.AmmoGive 18
Weapon.AmmoType "EnforcerClip"
Inventory.PickupSound "enforcer/pickup"
Inventory.PickupMessage "You got the Enforcer! We're so fucking back."
Obituary "%o was forced to die by %k's Enforcer."
Decal "BulletChip"
Weapon.Kickback 75
States
{
 Spawn:
	EN2F "Z" -1
	Loop
 Select:
	TNT1 A 0
	TNT1 A 0 A_Raise
	Wait
 Deselect:
	TNT1 A 0 A_PlayWeaponSound("weapons/weapondown")
	TNT1 A 0 A_TakeInventory("HandGrenadeAction",1)
	TNT1 A 0 A_TakeInventory("RailgunAction",1)
	TNT1 A 0 A_TakeInventory("MineAction",1)
 DeselectLoop:
	TNT1 A 0 A_Lower
	ENF4 A 1 A_Lower
	Loop
 Ready:
	TNT1 A 0 A_PlaySound("enforcer/draw",7)
	ENF4 BCDEFGHIJ 1
 ReadyLoop:
	ENF4 A 1 A_WeaponReady
	TNT1 A 0 A_JumpIfInventory("RailgunAction",1,"Zoom")
	TNT1 A 0 A_JumpIfInventory("HandGrenadeAction",1,"GrenadeCheck")
	TNT1 A 0 A_JumpIfInventory("MineAction",1,"MineCheck")
	Loop
 Fire:
	TNT1 A 0 A_JumpIfNoAmmo("Empty")
	TNT1 A 0 A_JumpIfInventory("EnforcerBurst",1,"Burstfire")
	TNT1 A 0 A_PlaySound("enforcer/fire")
	//TNT1 A 0 A_PlaySound("enforcer/fire2")
	TNT1 A 0 A_AlertMonsters
	TNT1 A 0 Radius_Quake(2,2,0,1,0)
	TNT1 A 0 A_FireBullets(1.1,1.1,1,Random(40,65),"SniperBulletPuff",FBF_NORANDOM|FBF_USEAMMO)
	TNT1 A 0 A_Light1
	ENF4 KL 2 Bright A_GunFlash
	TNT1 A 0 A_Light0
	TNT1 A 0 A_SpawnItemEx("BulletCasing",30,0,30,Random(2,4),Random(3,6),Random(3,6),0,SXF_NOCHECKPOSITION|SXF_CLIENTSIDE,0)
	ENF4 MNOP 1
	ENF4 QRS 2 A_Refire
	Goto ReadyLoop
 Burstfire:
	TNT1 A 0 A_PlaySound("enforcer/fire")
	//TNT1 A 0 A_PlaySound("enforcer/fire2")
	TNT1 A 0 A_AlertMonsters
	TNT1 A 0 Radius_Quake(2,2,0,1,0)
	TNT1 A 0 A_FireBullets(4.0,2.4,-1,Random(80,100),"SniperBulletPuff",FBF_NORANDOM|FBF_USEAMMO)
	TNT1 A 0 A_Light1
	ENF4 KL 1 Bright A_GunFlash
	TNT1 A 0 A_Light0
	ENF4 M 1
	TNT1 A 0 A_JumpIfNoAmmo("BurstEmpty")
	TNT1 A 0 A_PlaySound("enforcer/fire")
	//TNT1 A 0 A_PlaySound("enforcer/fire2")
	TNT1 A 0 A_AlertMonsters
	TNT1 A 0 Radius_Quake(2,2,0,1,0)
	TNT1 A 0 A_FireBullets(4.0,2.4,-1,Random(80,100),"SniperBulletPuff",FBF_NORANDOM|FBF_USEAMMO)
	TNT1 A 0 A_Light1
	ENF4 KL 1 Bright A_GunFlash
	TNT1 A 0 A_Light0
	ENF4 M 1
	TNT1 A 0 A_JumpIfNoAmmo("BurstEmpty")
	TNT1 A 0 A_PlaySound("enforcer/fire")
	//TNT1 A 0 A_PlaySound("enforcer/fire2")
	TNT1 A 0 A_AlertMonsters
	TNT1 A 0 Radius_Quake(2,2,0,1,0)
	TNT1 A 0 A_FireBullets(4.0,2.4,-1,Random(80,100),"SniperBulletPuff",FBF_NORANDOM|FBF_USEAMMO)
	TNT1 A 0 A_Light1
	ENF4 KL 1 Bright A_GunFlash
	TNT1 A 0 A_Light0
	ENF4 MN 1
	ENF4 OPQR 2
	ENF4 SA 2 A_Refire
	Goto ReadyLoop
 BurstEmpty:
	ENF4 N 1
	ENF4 OPQRS 2
	Goto ReadyLoop
 Empty:
	TNT1 A 0 A_PlayWeaponSound("weapons/click")
	ENF4 RRRRRRRRRR 1 A_WeaponReady(WRF_NOFIRE)
 AltFire:
	TNT1 A 0 A_JumpIfInventory("BulletMag",1,1)
	Goto ReadyLoop
	TNT1 A 0 A_JumpIfInventory("EnforcerClip",18,"ReadyLoop")
	ENF5 A 1 A_PlaySound("enforcer/woosh1",CHAN_AUTO)
	TNT1 A 0 A_JumpIfInventory("EnforcerClip",1,"HalfFull")
	ENF5 BCDEF 1
	ENF5 G 1 A_PlaySound("enforcer/eject",CHAN_AUTO)
	ENF5 HIJ 1
	ENF5 K 6 A_FireCustomMissile("PistolEmptyMagSpawner",0,0,0,1)
 AltFireContinue:
	ENF5 LM 1
	ENF5 N 1 A_PlaySound("enforcer/load",CHAN_AUTO)
	ENF5 OPQRST 1
 Reload:
	TNT1 A 0 A_TakeInventory("BulletMag",1,TIF_NOTAKEINFINITE)
	TNT1 A 0 A_GiveInventory("EnforcerClip",1)
	TNT1 A 0 A_JumpIfInventory("EnforcerClip",18,"Full")
	TNT1 A 0 A_JumpIfInventory("BulletMag",1,"Reload")
 Full:
	ENF5 U 4
	ENF5 V 1 A_PlaySound("enforcer/woosh2",CHAN_AUTO)
	ENF5 WXYZ 1
	ENF6 A 1
	ENF5 DCBA 1
	Goto ReadyLoop
 HalfFull:
	ENF5 BC 1
	ENF6 A 1
	ENF5 ZYXWVU 1
	ENF5 T 1 A_PlaySound("enforcer/eject",CHAN_AUTO)
	ENF5 SRQPONML 1
	ENF5 K 2
	Goto AltFireContinue
 Zoom:
	TNT1 A 0 A_TakeInventory("RailgunAction",1)
	TNT1 A 0 A_JumpIfInventory("EnforcerBurst",1,"Zoom2")
	ENF5 AB 2
	TNT1 A 0 A_PlaySound("enforcer/mode")
	TNT1 A 0 A_GiveInventory("EnforcerBurst",1)
	ENF5 B 4 A_Print("Burst fire",1)
	ENF5 BA 2
	Goto ReadyLoop
 Zoom2:
	ENF5 AB 2
	TNT1 A 0 A_PlaySound("enforcer/mode")
	TNT1 A 0 A_TakeInventory("EnforcerBurst",1)
	ENF5 B 4 A_Print("Semi fire",1)
	ENF5 BA 2
	Goto ReadyLoop
 GrenadeCheck:
	TNT1 A 0 A_JumpIfInventory("HandGrenadeAmmo",1,"GrenadeToss")
	TNT1 A 0 A_TakeInventory("HandGrenadeAction",1)
	Goto ReadyLoop
 GrenadeToss:
	TNT1 A 0 A_PlayWeaponSound("enforcer/holster") 
	ENF4 JIHGFEDCB 1
	TNT1 A 4
	HGRN ABCDEFGHI 1
	TNT1 A 0 A_PlayWeaponSound("weapons/hgrenadepin")
	HGRN JKLM 2
	TNT1 A 11
	TNT1 A 0 A_PlayWeaponSound("weapons/hgrenadethrow")
	TNT1 A 0 A_TakeInventory("HandGrenadeAmmo",1,TIF_NOTAKEINFINITE)
	HGRN N 1 A_FireCustomMissile("ThrownGrenade",0,0,0,0)
	HGRN OPQRS 1
	HGRN TU 2
	TNT1 A 6 A_TakeInventory("HandGrenadeAction",1)
	Goto Ready
 MineCheck:
	TNT1 A 0 A_JumpIfInventory("MineAmmo",1,"MineToss")
	TNT1 A 0 A_TakeInventory("MineAction",1)
	Goto ReadyLoop
 MineToss:
	TNT1 A 0 A_PlayWeaponSound("enforcer/holster") 
	ENF4 JIHGFEDCB 1
	TNT1 A 8
	TNT1 A 0 A_PlayWeaponSound("weapons/hgrenadethrow")
	MINE ABCDEF 1
	TNT1 A 0 A_TakeInventory("MineAmmo",1,TIF_NOTAKEINFINITE)
	MINE G 1 A_FireCustomMissile("ThrownMine",0,0,0,0,false)
	MINE HI 1
	MINE JKLM 1
	TNT1 A 5 A_TakeInventory("MineAction",1)
	Goto Ready
}
}

ACTOR EnforcerClip : Ammo
{
+IGNORESKILL
Inventory.Amount 0
Inventory.MaxAmount 18
Ammo.BackpackAmount 0
Ammo.BackpackMaxAmount 18
Inventory.Icon "EN2FZ0"
}