// Handgun
actor "StealthPistol" : AOWWeapon {
    Weapon.BobSpeed 1.75
    Weapon.BobRangeX 0.2
    Weapon.BobRangeY 0.4
    Weapon.BobStyle Alpha
	//$Category Weapons
	+WIMPY_WEAPON
	+WEAPON.NOAUTOFIRE
	Weapon.AmmoUse 1
	Weapon.AmmoGive2 16
	Weapon.AmmoType "StealthPistolMag"
	Weapon.AmmoType2 "NewClipAmmo"
	Weapon.SelectionOrder 19
	Weapon.PreferredSkin "MarinePistol"
	Inventory.Pickupmessage "You got the Stealth pistol!"
	Obituary "$OB_STEALTHPISTOL"
	Weapon.UpSound "weapons/up/pistol"
	AttackSound "weapons/spistolfire"
	Scale 0.35
	Tag "Stealth Pistol"
	decal "BulletChip"
	+WEAPON.AMMO_OPTIONAL
	States {
    Select:
	    TNT1 A 0 A_TakeInventory ("StealthFire", 1)
		SPIS A 1 offset (-90,100)
		SPIS A 1 offset (-80,89)
		SPIS A 1 offset (-70,79)
		SPIS A 1 offset (-60,70)
		SPIS A 1 offset (-50,62)
		SPIS A 1 offset (-40,55)
		SPIS A 1 offset (-30,49)
		SPIS A 1 offset (-20,44)
		SPIS A 1 offset (-15,40)
		SPIS A 1 offset (-10,37)
		SPIS A 1 offset (-5,34)
		SPIS A 1 offset (0,0)
		TNT1 A 0 A_TakeInventory("SelectAnimation",1)
		goto ready
	Deselect:
		TNT1 A 0 A_TakeInventory ("StealthFire", 1)
		TNT1 A 0 ACS_ExecuteAlways (SC_STEALTH, 0, STEALTH_FORCEOFF)
	    TNT1 A 0 A_TakeInventory("ActionFragGrenade",1)	
        TNT1 A 0 A_TakeInventory("ActionFlashbang",1)
        TNT1 A 0 A_TakeInventory("ActionRemoteC4",1)	
        TNT1 A 0 A_TakeInventory("ActionMeleeAttack",1)
		TNT1 A 0 A_TakeInventory("ActionReload",1)	
		SPIS A 1 offset (-4,34)
		SPIS A 1 offset (-8,40)
		SPIS A 1 offset (-16,49)
		SPIS A 1 offset (-24,62)
		SPIS A 1 offset (-32,79)
		SPIS A 1 offset (-40,100)
		TNT1 A 0 offset (-1, 33)
		TNT1 A 0 A_Lower
		wait
	Ready:
	    TNT1 A 0 A_JumpIfInventory("SelectAnimation",1,"Select")
		TNT1 A 0 A_JumpIfInventory("StealthMode",1,"Ready.Stealth")
	    TNT1 A 0 A_JumpIfInventory("ActionFragGrenade",1,"UseFragGrenade")
		TNT1 A 0 A_JumpIfInventory("ActionFlashbang",1,"UseFlashbang")
		TNT1 A 0 A_JumpIfInventory("ActionRemoteC4",1,"UseRemoteC4")
		TNT1 A 0 A_JumpIfInventory("ActionMeleeAttack",1,"UseMeleeAttack")
	    TNT1 A 0 A_JumpIfInventory("ActionReload",1,"Reload")
		SPIS A 1 A_WeaponReady
		TNT1 A 0 A_TakeInventory("StealthFire", 1)
		loop
	Ready.Stealth:
		TNT1 A 0 A_JumpIfInventory("StealthCharge", 1, 1)
		goto AltFireOff
		TNT1 A 0 A_JumpIfInventory("ActionFragGrenade",1,"UseFragGrenade")
		TNT1 A 0 A_JumpIfInventory("ActionFlashbang",1,"UseFlashbang")
		TNT1 A 0 A_JumpIfInventory("ActionRemoteC4",1,"UseRemoteC4")
		TNT1 A 0 A_JumpIfInventory("ActionMeleeAttack",1,"UseMeleeAttack")
		TNT1 A 0 A_JumpIfInventory("ActionReload",1,"Reload")
		SPIS A 5 A_WeaponReady
		TNT1 A 0 A_JumpIfInventory("ActionFragGrenade",1,"UseFragGrenade")
		TNT1 A 0 A_JumpIfInventory("ActionFlashbang",1,"UseFlashbang")
		TNT1 A 0 A_JumpIfInventory("ActionRemoteC4",1,"UseRemoteC4")
		TNT1 A 0 A_JumpIfInventory("ActionMeleeAttack",1,"UseMeleeAttack")
		TNT1 A 0 A_JumpIfInventory("ActionReload",1,"Reload")
		SPIS A 5 A_WeaponReady
		TNT1 A 0 A_JumpIfInventory("ActionFragGrenade",1,"UseFragGrenade")
		TNT1 A 0 A_JumpIfInventory("ActionFlashbang",1,"UseFlashbang")
		TNT1 A 0 A_JumpIfInventory("ActionRemoteC4",1,"UseRemoteC4")
		TNT1 A 0 A_JumpIfInventory("ActionMeleeAttack",1,"UseMeleeAttack")
		TNT1 A 0 A_JumpIfInventory("ActionReload",1,"Reload")
		SPIS A 5 A_WeaponReady
		TNT1 A 0 A_JumpIfInventory("ActionFragGrenade",1,"UseFragGrenade")
		TNT1 A 0 A_JumpIfInventory("ActionFlashbang",1,"UseFlashbang")
		TNT1 A 0 A_JumpIfInventory("ActionRemoteC4",1,"UseRemoteC4")
		TNT1 A 0 A_JumpIfInventory("ActionMeleeAttack",1,"UseMeleeAttack")
		TNT1 A 0 A_JumpIfInventory("ActionReload",1,"Reload")
		SPIS A 5 A_WeaponReady
		TNT1 A 0 A_JumpIfInventory("ActionFragGrenade",1,"UseFragGrenade")
		TNT1 A 0 A_JumpIfInventory("ActionFlashbang",1,"UseFlashbang")
		TNT1 A 0 A_JumpIfInventory("ActionRemoteC4",1,"UseRemoteC4")
		TNT1 A 0 A_JumpIfInventory("ActionMeleeAttack",1,"UseMeleeAttack")
		TNT1 A 0 A_JumpIfInventory("ActionReload",1,"Reload")
		SPIS A 5 A_WeaponReady
		TNT1 A 0 A_JumpIfInventory("ActionFragGrenade",1,"UseFragGrenade")
		TNT1 A 0 A_JumpIfInventory("ActionFlashbang",1,"UseFlashbang")
		TNT1 A 0 A_JumpIfInventory("ActionRemoteC4",1,"UseRemoteC4")
		TNT1 A 0 A_JumpIfInventory("ActionMeleeAttack",1,"UseMeleeAttack")
		TNT1 A 0 A_JumpIfInventory("ActionReload",1,"Reload")
		SPIS A 5 A_WeaponReady
		TNT1 A 0 A_JumpIfInventory("ActionFragGrenade",1,"UseFragGrenade")
		TNT1 A 0 A_JumpIfInventory("ActionFlashbang",1,"UseFlashbang")
		TNT1 A 0 A_JumpIfInventory("ActionRemoteC4",1,"UseRemoteC4")
		TNT1 A 0 A_JumpIfInventory("ActionMeleeAttack",1,"UseMeleeAttack")
		TNT1 A 0 A_JumpIfInventory("ActionReload",1,"Reload")
		SPIS A 5 A_WeaponReady
		TNT1 A 0 A_TakeInventory("StealthCharge",1)
		goto Ready
	Fire:
		TNT1 A 0 A_JumpIfInventory ("IsInSpawnRoom", 1, "Ready")
		TNT1 A 0 A_JumpIfInventory ("InMenu", 1, "Ready")
		SPIS A 0 A_JumpIfInventory("StealthMode", 1, "Fire.Stealth")
	FireGo:
		TNT1 A 0 A_JumpIfNoAmmo("Empty")
		TNT1 B 0 A_SpawnItemEx ("ShellCasing", 0, 12, 38, random (-2, -4), random (2, 3), random (1, 3), random (45, 60))
		TNT1 B 0 A_FireBullets (2.5, 2.5, -1, 16, "HandgunPuff", FBF_NORANDOM|FBF_USEAMMO, 1536)
		SPIS B 2 Bright
		SPIS CD 1
		SPIS EFGH 1 A_WeaponReady (WRF_NOBOB)
		TNT1 A 0 A_JumpIfInventory("ActionFragGrenade",1,"UseFragGrenade")
		TNT1 A 0 A_JumpIfInventory("ActionFlashbang",1,"UseFlashbang")
		TNT1 A 0 A_JumpIfInventory("ActionRemoteC4",1,"UseRemoteC4")
		TNT1 A 0 A_JumpIfInventory("ActionMeleeAttack",1,"UseMeleeAttack")
		TNT1 A 0 A_JumpIfInventory("ActionReload",1,"Reload")
		SPIS A 8 A_WeaponReady (WRF_NOBOB)
		Goto Restealth
	Fire.Stealth:
		TNT1 A 0 A_JumpIfInventory ("StealthMode", 3, "FireGo")
		TNT1 A 0 A_GiveInventory ("StealthFire", 1)
		TNT1 A 0 ACS_ExecuteAlways (SC_STEALTH, 0, STEALTH_FORCEOFF)
		goto FireGo
	Restealth:
		TNT1 A 0 A_JumpIfInventory ("StealthFire", 1, 2)
		goto Ready
		TNT1 A 0 A_TakeInventory ("StealthFire", 1)
		TNT1 A 0 ACS_ExecuteAlways (SC_STEALTH, 0, STEALTH_ON)
		SPIS AAAAAAAAAAAAAAA 1 A_WeaponReady
		goto Ready
	AltFire:
		TNT1 A 0 A_JumpIfInventory ("IsInSpawnRoom", 1, "AltRejected") // [Cata] Prevent knife from being used in spawn room.
	    TNT1 A 0 A_JumpIfInventory ("IsStealth", 1, "AltFire2")
		TNT1 A 0 A_Print("You need a Stealth Suit!")
		goto Ready
	AltFire2:
		TNT1 A 0 A_JumpIfInventory ("StealthCharge", 1, 1)
		goto AltRejected
		SPIS A 5 A_JumpIfInventory ("StealthMode", 1, "AltFireOff")
		SPIS A 50 ACS_ExecuteAlways (SC_STEALTH, 0, STEALTH_ON)
		goto Ready
	AltFireOff:
		SPIS A 5 A_JumpIfInventory ("StealthMode", 3, "AltRejected")
		SPIS A 5
		TNT1 A 0 ACS_ExecuteAlways (SC_STEALTH, 0, STEALTH_OFF)
		SPIS A 40 A_WeaponReady (WRF_NOSECONDARY)
		goto Ready
	AltRejected:
		SPIS A 16 A_WeaponReady (WRF_NOSECONDARY)
		goto Ready
    Empty:
	    TNT1 A 0 A_PlayWeaponSound("weapons/empty1")
	    SPIS A 10 A_WeaponReady(WRF_NOFIRE)
    Reload:
	    TNT1 A 0 A_TakeInventory("ActionReload",1)
	    TNT1 A 0 A_JumpIfInventory("StealthPistolMag",12,2)
	    TNT1 A 0 A_JumpIfInventory("NewClipAmmo",1,2)
	    TNT1 A 0
	    Goto Ready
	    SPIR A 2 A_PlaySound("weapons/pistolr1")
	    SPIR BCDEF 2
	    TNT1 A 0 A_FireCustomMissile("SMGEmptyMagSpawner",0,0,0,1)
		TNT1 A 0 A_WeaponReady(WRF_NOBOB | WRF_NOFIRE)
	    SPIR GG 5 A_JumpIfInventory("ActionMeleeAttack",1,"UseMeleeAttack")
	    TNT1 A 0 A_PlayWeaponSound("weapons/pistolr2")
		SPIR HI 2 A_WeaponReady(WRF_NOBOB | WRF_NOFIRE)
		SPIR JKLMNO 3 A_JumpIfInventory("ActionMeleeAttack",1,"UseMeleeAttack")
	    TNT1 A 0 A_JumpIfInventory("NewClipAmmo",1,"Reload2")
    Reload2:
	    TNT1 A 0 A_TakeInventory("NewClipAmmo",1)
	    TNT1 A 0 A_GiveInventory("StealthPistolMag",1)
	    TNT1 A 0 A_JumpIfInventory("StealthPistolMag",12,2)
	    TNT1 A 0 A_JumpIfInventory("NewClipAmmo",1,"Reload2")
		TNT1 A 0
	    Goto Ready
	Spawn:
		SPIS X -1
		stop
	}
}

ACTOR StealthPistolMag : Ammo
{
Inventory.Amount 0
Inventory.MaxAmount 12
Ammo.BackpackAmount 0
Ammo.BackpackMaxAmount 12
+IGNORESKILL
}
