ACTOR StenSilenced : Inventory
{
	Inventory.MaxAmount 1
}
ACTOR StenSilencerHUD : Inventory
{
	Inventory.MaxAmount 1
}

// Whether or not we have the silencer upgrade
ACTOR "Sten MK II Silencer" : Inventory
{
	Inventory.MaxAmount 1
}

ACTOR StenPrimary : Ammo
{
  Inventory.Amount 1
  Inventory.MaxAmount 48
  Inventory.Icon "CLIPA0"
  +INVENTORY.IGNORESKILL
}

ACTOR StenSecondary : Ammo
{
  Inventory.PickupMessage "You picked up a magazine of Sten MK II ammunition." // "Picked up a clip."
  Inventory.PickupSound "sten/magin"
  Inventory.Amount 32
  Inventory.MaxAmount 192
  Ammo.BackpackAmount 64
  Ammo.BackpackMaxAmount 192
  Inventory.Icon "CLIPA0"
  +INVENTORY.IGNORESKILL
  States
  {
  Spawn:
    CLIP A -1
    Stop
  }
}

ACTOR "Sten MK II" : Weapon 11501
{
  +WEAPON.NOAUTOAIM
  +WEAPON.AMMO_OPTIONAL
  Weapon.AmmoUse 1
  Weapon.AmmoGive2 32
  Weapon.BobStyle Smooth
  Weapon.BobSpeed 2.5
  Weapon.BobRangeX 0.5
  Weapon.BobRangeY 0.3
  Weapon.AmmoType "StenPrimary"
  Weapon.AmmoType2 "StenSecondary"
  Obituary "\cJ%k \cG> \cKSten MK II \cG> \cJ%o"
  Inventory.Pickupmessage "You picked up the Sten MK II."
  Inventory.PickupSound "ppsh/pickup"
	//$Category ZT2 - Weapons
	//$Title Sten MK II
	//$Sprite STENL0
  Tag "Sten MK. II"
  Scale 0.25
  +WEAPON.NOAUTOFIRE
  +WEAPON.NOALERT
  States
  {
  Ready:
	PPSS A 0 A_JumpIfInventory("StenSilenced",1,"ReadySilenced")
	PPSS A 0 A_PlaySoundEx("sten/select","SoundSlot6")
	PPSS A 0 A_JumpIfInventory("StenSilenced",1,"ReadySilenced")
	PPSS A 0 A_JumpIfInventory("TertiaryFire",1,"SwapSilencer")
	PPSS A 0 A_JumpIfInventory("DoBlocking",1,"QuickMelee")
	PPSS A 0 A_JumpIfInventory("PendingQuickness",1,"ToQuick")
	PPSS A 0 A_JumpIfInventory("IsReloading",1,"ReloadCheck")
	PPSS A 0 A_JumpIfInventory("Perk_Commando",1,"ReadyMagwell")
	STID A 1 A_WeaponReady
	Goto Ready
   ReadyMagwell:
	SSID A 1 A_WeaponReady
	Goto Ready
   ToQuick:
	TNT1 A 0 ACS_NamedExecute("ProcessQuick",0,0,0,0)
	GoTo Ready+6
  QuickMeleeUnSilenced:
	 STSS DCBA 1
	 GoTo QuickMelee+6
  QuickMelee:
	ORDS A 0 A_JumpIfInventory("StenSilenced",1,1)
	Goto QuickMeleeUnSilenced
	STSS HGFE 1
	TNT1 AAA 3
	MCFI E 1
	MCFI E 0 A_PlaySoundEx("machete/fire","Weapon")
	MCFI FG 1
    MCFI H 0 A_CustomPunch(2*random(1, 10), TRUE, 0, "ZTMeleePuff")
	MCFI HIJ 1
	MCFI K 2
	TNT1 AAA 3
	TNT1 A 0 A_JumpIfInventory("StenSilenced",1,6)
	STSS ABCD 1
	TNT1 A 0 A_TakeInventory("DoBlocking",999)
	GoTo Ready
	STSS EFGH 1
	TNT1 A 0 A_TakeInventory("DoBlocking",999)
	Goto Ready
   ReadySilenced:
	PPSS A 0 A_PlaySoundEx("sten/select","SoundSlot6")
	STSS EFGH 1
	Goto Ready
   ReadySilenced:
	PPSS A 0 A_JumpIfInventory("TertiaryFire",1,"SwapSilencer")
	PPSS A 0 A_JumpIfInventory("QuickGrenading",1,"ToGrenade")
	PPSS A 0 A_JumpIfInventory("DoBlocking",1,"QuickMelee")
    PPSS A 0 A_JumpIfInventory("IsReloading",1,"ReloadCheck")
    STID B 1 A_WeaponReady
    Loop
   SwapSilencer:
	STSS A 0 A_TakeInventory("TertiaryFire",1)
	STSS A 0 A_JumpIfInventory("Sten MK II Silencer",1,2)
	STSS A 0 A_Print("You need the silencer upgrade to do that.")
	Goto Ready
	TNT1 A 0 A_JumpIfInventory("StenSilenced",1,"SilencerOff")
	Goto SilencerOn
   SilencerOff:
	STSS HGFE 1
	TNT1 A 4
	TNT1 A 0 A_PlaySoundEx("sten/silenceroff","SoundSlot6")
	STSS A 0 A_TakeInventory("StenSilenced",1)
	TNT1 A 12
	STSS ABCD 1
	STSS A 0 A_TakeInventory("TertiaryFire",1)
	Goto Ready
   SilencerOn:
	STSS DCBA 1
	TNT1 A 4
	TNT1 A 0 A_PlaySoundEx("sten/silenceron","SoundSlot6")
	TNT1 A 8
	TNT1 A 0 A_PlaySoundEx("sten/silencerpush","SoundSlot6")
	STSS A 0 A_GiveInventory("StenSilenced",1)
	TNT1 A 12
	STSS EFGH 1
	STSS A 0 A_TakeInventory("TertiaryFire",1)
	Goto ReadySilenced
   ToReady:
	 NULL A 0
	 Goto Ready
	 NULL AAA 0
	 NULL A 0 A_PlaySoundEx("dryfire/smg","SoundSlot6")
	 Goto Ready
   Deselect:
	 PPSS A 0 A_JumpIfInventory("StenSilenced",1,"DeselectSilenced")
	 PPSS A 0 A_JumpIfInventory("Perk_Commando",1,"DeselectSlide")
	 STIS DCBA 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
   InstantDeselect:
	 PPFI A 0 A_TakeInventory("HasFiringModes",1)
	 PPFI A 0 A_TakeInventory("SemiAutomatic",1)
	 PPFI A 0 A_TakeInventory("StenSilencerHUD",1)
     TNT1 AAAAAAAAAA 0 A_Lower
	 TNT1 A 1 A_Lower
     Goto Deselect+8
   DeselectSlide:
	 SSIS DCBA 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
	 Goto InstantDeselect
   DeselectSilenced:
     STSS HGFE 1
	 PPFI A 0 A_TakeInventory("HasFiringModes",1)
	 PPFI A 0 A_TakeInventory("StenSilencerHUD",1)
	 PPFI A 0 A_TakeInventory("SemiAutomatic",1)
     TNT1 AAAAAAAAAA 0 A_Lower
	 TNT1 A 1 A_Lower
     Goto DeselectSilenced+7
   HasSilencer:
	 TNT1 A 0 A_GiveInventory("StenSilencerHUD",1)
	 Goto SelectAnim+2
   Select:
	 TNT1 A 0 A_Raise
	 TNT1 A 1 A_WeaponReady
     Goto SelectAnim
   SelectAnim:
	 TNT1 A 0 A_SetCrosshair(17)
	 TNT1 A 0 A_JumpIfInventory("Sten MK II Silencer",1,"HasSilencer")
	 TNT1 A 0 A_GiveInventory("HasFiringModes",1)
	 STIS A 0 A_PlaySoundEx("ppsh/select","SoundSlot6")
	 TNT1 A 0 A_JumpIfInventory("Perk_Commando",1,"SelectAnimSlide")
	 STIS ABCD 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
	 Goto Ready
   SelectAnimSlide:
	 SSIS ABCD 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
	 Goto Ready
  //================================================================
  // RELOAD CHECKING
  //================================================================
  ReloadCheck:
	 TNT1 A 0 A_TakeInventory("IsReloading",1)
	 TNT1 A 0 A_JumpIfInventory("Perk_Commando",1,"RCP")
	 TNT1 A 0 A_JumpIfInventory("StenPrimary",32,"ToReady")
	 TNT1 A 0 A_JumpIfInventory("StenSecondary",1,"BoltCheck")
	 Goto ToReady
  RCP:
	 TNT1 A 0 A_JumpIfInventory("PerkLevel",10,"RCP10")
	 TNT1 A 0 A_JumpIfInventory("StenPrimary",40,"ToReady")
	 TNT1 A 0 A_JumpIfInventory("StenSecondary",1,"BoltCheck")
	 Goto ToReady
  RCP10:
	 TNT1 A 0 A_JumpIfInventory("StenPrimary",48,"ToReady")
	 TNT1 A 0 A_JumpIfInventory("StenSecondary",1,"BoltCheck")
	 Goto ToReady
  //================================================================
  BoltCheck:
	 TNT1 A 0 A_JumpIfInventory("StenPrimary",1,"ReloadAnim")
	 TNT1 A 0 A_GiveInventory("PullBolt",1)
	 Goto ReloadAnim
  HandSlide:
	 SSID GH 1 A_WeaponReady(WRF_NOSWITCH | WRF_NOFIRE)
	 Goto ReloadAnim+2
  ReloadAnim:
     9MRL A 0 ACS_ExecuteAlways(820,0,0,0,0)
	 9MRL A 0 A_JumpIfInventory("Perk_Commando",1,"HandSlide")
	 STRL A 0 A_JumpIfInventory("StenSilenced",1,"ReloadAnimSilenced")
	 STER ABCDEFGH 1 A_WeaponReady(WRF_NOSWITCH | WRF_NOFIRE)
	 STRL F 0 A_PlaySoundEx("sten/magout","SoundSlot6")
	 STER I 1 A_WeaponReady(WRF_NOSWITCH | WRF_NOFIRE)
	 STER I 0 A_SetPitch(pitch+0.75)
	 STER J 1 A_WeaponReady(WRF_NOSWITCH | WRF_NOFIRE)
	 STER I 0 A_SetPitch(pitch+0.6)
	 STER K 1 A_WeaponReady(WRF_NOSWITCH | WRF_NOFIRE)
	 STER I 0 A_SetPitch(pitch+0.4)
	 STER L 1 A_WeaponReady(WRF_NOSWITCH | WRF_NOFIRE)
	 STER I 0 A_SetPitch(pitch+0.2)
	 STER M 1 A_WeaponReady(WRF_NOSWITCH | WRF_NOFIRE)
	 STER I 0 A_SetPitch(pitch-0.1)
	 STER N 1 A_WeaponReady(WRF_NOSWITCH | WRF_NOFIRE)
	 STER I 0 A_SetPitch(pitch-0.2)
	 STER O 1 A_WeaponReady(WRF_NOSWITCH | WRF_NOFIRE)
	 STER I 0 A_SetPitch(pitch-0.35)
	 STER P 1 A_WeaponReady(WRF_NOSWITCH | WRF_NOFIRE)
	 STER I 0 A_SetPitch(pitch-0.5)
	 STER P 1 A_WeaponReady(WRF_NOSWITCH | WRF_NOFIRE)
	 STER I 0 A_SetPitch(pitch-0.6)
	 STER Q 1 A_WeaponReady(WRF_NOSWITCH | WRF_NOFIRE)
	 STER I 0 A_SetPitch(pitch-0.2)
	 STER QQRSTU 1 A_WeaponReady(WRF_NOSWITCH | WRF_NOFIRE)
	 STRL U 0 A_PlaySoundEx("sten/magin","SoundSlot6")
	 Goto CalculateAmmo
  ReloadAnimEnd:
	 STER V 1 A_WeaponReady(WRF_NOSWITCH | WRF_NOFIRE)
	 STER W 0 A_SetPitch(pitch-0.75)
	 STER W 0 A_SetAngle(angle+0.5)
	 STER W 1 A_WeaponReady(WRF_NOSWITCH | WRF_NOFIRE)
	 STER X 0 A_SetPitch(pitch-0.65)
	 STER X 0 A_SetAngle(angle+0.4)
	 STER X 1 A_WeaponReady(WRF_NOSWITCH | WRF_NOFIRE)
	 STER Y 0 A_SetPitch(pitch-0.5)
	 STER Y 0 A_SetAngle(angle+0.3)
	 STER Y 1 A_WeaponReady(WRF_NOSWITCH | WRF_NOFIRE)
	 STER Z 0 A_SetPitch(pitch+0.15)
	 STER Z 0 A_SetAngle(angle-0.1)
	 STER Z 1 A_WeaponReady(WRF_NOSWITCH | WRF_NOFIRE)
	 STER E 0 A_SetPitch(pitch+0.25)
	 STER E 0 A_SetAngle(angle-0.2)
	 STER E 1 A_WeaponReady(WRF_NOSWITCH | WRF_NOFIRE)
	 STER D 0 A_SetPitch(pitch+0.45)
	 STER D 0 A_SetAngle(angle-0.35)
	 STER D 1 A_WeaponReady(WRF_NOSWITCH | WRF_NOFIRE)
	 STER C 0 A_SetPitch(pitch+0.65)
	 STER C 0 A_SetAngle(angle-0.4)
	 STER C 1 A_WeaponReady(WRF_NOSWITCH | WRF_NOFIRE)
	 STER B 0 A_SetPitch(pitch+0.4)
	 STER B 0 A_SetAngle(angle-0.15)
	 STER B 1 A_WeaponReady(WRF_NOSWITCH | WRF_NOFIRE)
	 STER A 1 A_WeaponReady(WRF_NOSWITCH | WRF_NOFIRE)
	 STRL W 0 A_JumpIfInventory("PullBolt",1,"BoltPull")
	 TNT1 A 0 A_TakeInventory("IsReloading",1)
	 TNT1 A 0 A_TakeInventory("TertiaryFire",1)
	 STER A 0 A_JumpIfInventory("Perk_Commando",1,"SlideToReady")
	 Goto Ready
  SlideToReady:
	 SSID HG 1 A_WeaponReady(WRF_NOSWITCH | WRF_NOFIRE)
	 Goto Ready
  BoltPull:
	 STBP A 0 A_JumpIfInventory("StenSilenced",1,"BoltPullSilenced")
     STBP ABCDEFGH 1 A_WeaponReady(WRF_NOSWITCH | WRF_NOFIRE)
	 STBP H 0 A_PlaySoundEx("sten/boltback","SoundSlot6")
	 STBP IJKLMNOP 1 A_WeaponReady(WRF_NOSWITCH | WRF_NOFIRE)
	 TNT1 A 0 A_TakeInventory("PullBolt",1)
	 TNT1 A 0 A_TakeInventory("IsReloading",1)
	 TNT1 A 0 A_TakeInventory("TertiaryFire",1)
	 STER A 0 A_JumpIfInventory("Perk_Commando",1,"SlideToReadY")
	 Goto Ready
  BoltPullSilenced:
	 STBQ ABCDEF 1
	 STBQ G 8
	 STBQ H 0 A_PlaySoundEx("sten/boltback","SoundSlot6")
	 STBQ H 2
	 STBQ I 7
	 STBQ J 0 A_PlaySoundEx("sten/boltfwd","SoundSlot6")
	 STBQ I 1
	 STBQ J 2
	 STBQ KLM 1
	 TNT1 A 0 A_TakeInventory("PullBolt",1)
	 TNT1 A 0 A_TakeInventory("IsReloading",1)
	 TNT1 A 0 A_TakeInventory("TertiaryFire",1)
	 Goto Ready
  ReloadAnimSilenced:
     STRM ABCD 1
	 STRM E 2
	 STRM F 6
	 STRM F 0 A_PlaySoundEx("sten/magout","SoundSlot6")
	 STRM GHIJK 2
	 STRM L 4
	 STRM MNO 1
	 STRM P 4
	 STRM QRST 1
	 STRM U 0 A_PlaySoundEx("sten/magin","SoundSlot6")
	 STRM U 4
	 STRM V 3
	 STRL W 0 A_JumpIfInventory("PullBolt",1,"BoltPull")
	 TNT1 A 0 A_TakeInventory("IsReloading",1)
	 TNT1 A 0 A_TakeInventory("TertiaryFire",1)
	 Goto CalculateAmmo
  //================================================================
  // AMMO CALCULATION
  //================================================================
  CalculateAmmo:
	 TNT1 A 0 A_JumpIfInventory("Perk_Commando",1,"CalculateAmmoPerk")
     TNT1 A 0 A_JumpIfInventory("StenSecondary",1,2)
	 Goto ReloadAnimEnd
	 TNT1 AAA 0
	 TNT1 A 0 A_JumpIfInventory("StenPrimary",32,"ReloadAnimEnd")
	 TNT1 A 0 A_TakeInventory("StenSecondary",1)
	 TNT1 A 0 A_GiveInventory("StenPrimary",1)
	 Loop
  CalculateAmmoPerk:
	 TNT1 A 0 A_JumpIfInventory("PerkLevel",10,"CalculateAmmoPerk10")
     TNT1 A 0 A_JumpIfInventory("StenSecondary",1,2)
	 Goto ReloadAnimEnd
	 TNT1 AAA 0
	 TNT1 A 0 A_JumpIfInventory("StenPrimary",40,"ReloadAnimEnd")
	 TNT1 A 0 A_TakeInventory("StenSecondary",1)
	 TNT1 A 0 A_GiveInventory("StenPrimary",1)
	 Loop
  CalculateAmmoPerk10:
     TNT1 A 0 A_JumpIfInventory("StenSecondary",1,2)
	 Goto ReloadAnimEnd
	 TNT1 AAA 0
	 TNT1 A 0 A_JumpIfInventory("StenPrimary",48,"ReloadAnimEnd")
	 TNT1 A 0 A_TakeInventory("StenSecondary",1)
	 TNT1 A 0 A_GiveInventory("StenPrimary",1)
	 Loop
  //================================================================
  Fire:
	 PPFI A 0 A_JumpIfInventory("StenPrimary",1,1)
	 Goto ToReady+2
	 PPFI A 0 A_JumpIfInventory("StenSilenced",1,"FireSilenced")
	 //PPFI A 0 A_TakeInventory("StenPrimary",1)
	 PPFI A 0 A_AlertMonsters
	 BPSS A 0 A_FireCustomMissile("PistolCaseSpawn",5,0,16,-9)
	 PPFI A 0 A_PlaySound("sten/fire", CHAN_WEAPON)
	 TNT1 A 0 A_SpawnItemEx("ShooterLight",0,0,0)
	 PPFI A 0 A_JumpIfInventory("Perk_Commando",1,"FireMW")
	 PPFI A 0 A_FireBullets (ACS_ExecuteWithResult(566,3,5,0) * (0.1*random(10,13)),ACS_ExecuteWithResult(566,3,5,0) * (0.1*random(10,13)), 1, 5, "BulletPuff2")
	 PPFI A 0 A_SetPitch(pitch-1.25)
	 PPFI A 0 A_SetAngle(angle+(random(1,2)*0.5))
	 PPFI A 0 A_Jump(255,"Flashy1","Flashy2","Flashy3","Flashy4")
	 Goto Flashy1
   Flashy1:
	 STID B 1 bright A_WeaponReady(WRF_NOSWITCH | WRF_NOFIRE)
	 Goto FireEnd
   Flashy2:
	 STID C 1 bright  A_WeaponReady(WRF_NOSWITCH | WRF_NOFIRE)
	 Goto FireEnd
   Flashy3:
	 STID D 1 bright A_WeaponReady(WRF_NOSWITCH | WRF_NOFIRE)
	 Goto FireEnd
   Flashy4:
	 STID E 1 bright A_WeaponReady(WRF_NOSWITCH | WRF_NOFIRE)
	 Goto FireEnd
   FireEnd:
	 STID FA 1
	 PPFI A 0 A_SetPitch(pitch+0.6)
	 PPFI A 0 A_SetAngle(angle-(random(1,2)*0.25))
	 PPFI A 0 A_JumpIfInventory("SemiAutomatic",1,"ToReady")
	 PPFI A 0 A_ReFire
	 Goto Ready
  FireMW:
	 PPFI A 0 A_FireBullets (ACS_ExecuteWithResult(566,2,2,0), ACS_ExecuteWithResult(566,2,2,0), 1, 5, "BulletPuff2")
     PPFI A 0 A_SetPitch(pitch-0.55)
	 PPFI A 0 A_Jump(255,"Flashy1MW","Flashy2MW","Flashy3MW","Flashy4MW")
	 Goto Flashy1MW
  Flashy1MW:
	 SSID B 1 bright A_WeaponReady(WRF_NOSWITCH | WRF_NOFIRE)
	 Goto FireEndMW
   Flashy2MW:
	 SSID C 1 bright  A_WeaponReady(WRF_NOSWITCH | WRF_NOFIRE)
	 Goto FireEndMW
   Flashy3MW:
	 SSID D 1 bright A_WeaponReady(WRF_NOSWITCH | WRF_NOFIRE)
	 Goto FireEndMW
   Flashy4MW:
	 SSID E 1 bright A_WeaponReady(WRF_NOSWITCH | WRF_NOFIRE)
	 Goto FireEndMW
   FireEndMW:
	 SSID FA 1
	 PPFI A 0 A_SetPitch(pitch+0.3)
	 PPFI A 0 A_JumpIfInventory("SemiAutomatic",1,"ToReady")
	 PPFI A 0 A_ReFire
	 Goto Ready
  FireSilenced:
     //PPFI A 0 A_TakeInventory("StenPrimary",1)
	 PPFI A 0 A_FireBullets (ACS_ExecuteWithResult(566,3,0,0), ACS_ExecuteWithResult(566,3,0,0), 1, 5, "BulletPuff2")
	 BPSS A 0 A_FireCustomMissile("PistolCaseSpawn",5,0,16,-3)
	 PPFI A 0 A_PlaySound("sten/silencerfire", CHAN_WEAPON)
	 TNT1 A 0 A_SpawnItemEx("ShooterLight",0,0,0)
	 PPFI A 0 A_SetPitch(pitch+0.5)
	 STFI C 1 bright
	 PPFI A 0 A_SetPitch(pitch-0.4)
	 STFI D 2
	 PPFI A 0 A_JumpIfInventory("SemiAutomatic",1,"ToReady")
	 PPFI A 0 A_ReFire
	 Goto Ready
  AltFire:
	 PPFI A 0 A_JumpIfInventory("SemiAutomatic",1,"ToFull")
	 Goto ToSemi
  ToFull:
     TNT1 A 0 A_SetCrosshair(17)
	 PPFI A 0 A_TakeInventory("SemiAutomatic",1)
	 PPFI A 0 A_Print("Switched to Fully Automatic mode.")
	 Goto Ready
  ToSemi:
     TNT1 A 0 A_SetCrosshair(18)
	 PPFI A 0 A_GiveInventory("SemiAutomatic",1)
	 PPFI A 0 A_Print("Switched to Semi Automatic mode.")
	 Goto Ready
  Spawn:
    STEN L -1
    Stop
  }
}