
ACTOR ViktoryClass : PlayerPawn
{
	yScale 0.105
	xScale 0.12
	Health 100
	Radius 16
	Height 56
	Mass 100
	PainChance 255
	Player.MaxHealth 100
	Player.RunHealth 99999 //You can't use default running as Viktory
	Speed 0.75
	Player.SideMove 0.75
	Player.DisplayName "Viktory"
	Player.StartItem "ViktoryShovel"
	Player.StartItem "ViktoryPM"
	Player.StartItem "ViktorySyringe"
	Player.StartItem "IsViktory", 1
	Player.StartItem "IsPlayer", 1
	Player.StartItem "VikiStamina", 350
	Player.StartItem "ViktoryPMAmmo", 80
	Player.StartItem "ViktoryPMLoaded", 8
	Player.StartItem "ViktoryMosinLoaded", 5
	Player.StartItem "ViktoryKSLoaded", 4
	Player.StartItem "ViktorySVDLoaded", 10
	Player.StartItem "ViktoryRPGLoaded", 1
	Player.StartItem "ViktoryROKSLoaded", 100
    //Player.StartItem "IsPlayer", 1
	//Player.StartItem "DefaultAmmo", 1
	Player.StartItem "CustomAmmo", 1
	Player.StartItem "CustomMisc", 1
	Player.SoundClass "ViktoryClass"
	Player.WeaponSlot 0, ViktorySyringe
	Player.WeaponSlot 1, ViktoryFlashbang, ViktoryFragGrenade, ViktoryShovel
	Player.WeaponSlot 2, ViktoryPM, ViktoryM1895
	Player.WeaponSlot 3, ViktoryMosin, ViktoryKS
	Player.WeaponSlot 4, ViktorySVD
	Player.WeaponSlot 5, ViktoryRPG
	Player.WeaponSlot 6, ViktoryROKS
	Player.WeaponSlot 7, ViktoryTSAR
	Player.Scoreicon "VIKIICON"
	Player.ColorRange 112, 127
	Species "Player"
	+MTHRUSPECIES
    +THRUSPECIES
	States
	{
	Spawn:
		VK10 A -1
		Loop
	See:
		VK10 B 5
		VK10 C 4
		VK10 D 5
		VK10 E 4
		Loop
	Pain:
		VK10 A 0 A_Pain
		Goto Spawn
	Death:
		VK10 A 0 A_PlayerScream
		TNT1 A 0 A_PlaySound("Viktory/headshot", 7, 1)
		VK10 F 7
		TNT1 A 0 A_SpawnItemEX("ViktoryHat", 0, 0, 48, random(0, -3), 0, random(0, 1), random(0, 360))
		VK10 G 4
		VK10 H 10
		TNT1 A 0 A_PlaySound("Viktory/ksfoley2", 7)
		VK10 G 5
		VK10 IJK 5
		TNT1 A 0 A_PlaySound("Viktory/fall", 6)
		VK10 L 5
		VK10 M -1
		Stop
	xDeath:
		TNT1 A 0 A_PlaySound("Viktory/goreexplode", 7, 1)
		TNT1 A 0 A_SpawnItemEX("ViktoryTorsoChunk", 0, 0, 45, random(0, 3), 0, random(0, 6), random(0, 360), SXF_TRANSFERTRANSLATION)
		TNT1 A 0 A_SpawnItemEX("ViktoryRightHandChunk", 0, -5, 45, random(0, 3), 0, random(0, 6), random(0, 360), SXF_TRANSFERTRANSLATION)
		TNT1 A 0 A_SpawnItemEX("ViktoryLeftHandChunk", 0, 5, 45, random(0, 3), 0, random(0, 6), random(0, 360), SXF_TRANSFERTRANSLATION)
		TNT1 A 0 A_SpawnItemEX("ViktoryRightLegChunk", 0, -5, 28, random(0, 3), 0, random(0, 6), random(0, 360), SXF_TRANSFERTRANSLATION)
		TNT1 A 0 A_SpawnItemEX("ViktoryLeftLegChunk", 0, 5, 28, random(0, 3), 0, random(0, 6), random(0, 360), SXF_TRANSFERTRANSLATION)
		TNT1 A 0 A_SpawnItemEX("ViktoryHat", 0, 0, 56, random(0, 3), 0, random(0, 6), random(0, 360))
		TNT1 A 0 A_SkullPop("ViktoryHeadChunk")
		TNT1 A -1
		Stop
	}
}

Actor VikiShooting : inventory 
{
	inventory.maxamount 1
}

Actor viktorySprintPromptUsed : token {}
Actor viktorySprintPromptCounter : inventory
{
	inventory.maxamount 350
}
ACTOR ViktoryBlood : Blood
{
  Mass 5
  +NOBLOCKMAP
  +NOTELEPORT
  +ALLOWPARTICLES
  Scale 0.125
  States
  {
  Spawn:
    VPJ1 HIJ 8
    Stop
  }
}

ACTOR ViktoryHeadChunk : PlayerChunk
{
  Radius 4
  Height 4
  yScale 0.105
  xScale 0.12
  +NOBLOCKMAP
  +DROPOFF
  +LOWGRAVITY
  +CANNOTPUSH
  +SKYEXPLODE
  +NOBLOCKMONST
  +NOSKIN
  States
  {
  Spawn:
    VPJ1 D 1 A_CheckFloor("Hit")
	TNT1 A 0 A_SpawnItemEX("ViktoryBlood", 0, 0, -6, random(0, -3), 0, random(0, -3), random(0, 360))
    Loop
  Hit:
	TNT1 A 0 A_PlaySound("Viktory/goreland", 7, 1)
    VPJ1 E -1 
    Stop
  }
}

ACTOR ViktoryTorsoChunk
{
  Radius 4
  Height 4
  yScale 0.105
  xScale 0.12
  +LOWGRAVITY
  +NOTONAUTOMAP
  +CLIENTSIDEONLY
  +NONETID
  +THRUACTORS
  +NOTELEPORT
  +DONTSPLASH
  States
  {
  Spawn:
    VPJ1 A 1 A_CheckFloor("Hit")
	TNT1 A 0 A_SpawnItemEX("ViktoryBlood", 0, 0, -6, random(0, -3), 0, random(0, -3), random(0, 360))
    Loop
  Hit:
	TNT1 A 0 A_PlaySound("Viktory/goreland", 7, 1)
    VPJ1 A -1 
    Stop
  }
}

ACTOR ViktoryRightHandChunk : ViktoryTorsoChunk
{
  States
  {
  Spawn:
    VPJ1 B 1 A_CheckFloor("Hit")
	TNT1 A 0 A_SpawnItemEX("ViktoryBlood", 0, 0, -6, random(0, -3), 0, random(0, -3), random(0, 360))
    Loop
  Hit:
	TNT1 A 0 A_PlaySound("Viktory/goreland", 7, 1)
    VPJ1 L -1 
    Stop
  }
}

ACTOR ViktoryLeftHandChunk : ViktoryTorsoChunk
{
  States
  {
  Spawn:
	TNT1 A 0 NODELAY A_SetScale(-0.105, 0.12)
    VPJ1 B 1 A_CheckFloor("Hit")
	TNT1 A 0 A_SpawnItemEX("ViktoryBlood", 0, 0, -6, random(0, -3), 0, random(0, -3), random(0, 360))
    Goto Spawn+1
  Hit:
	TNT1 A 0 A_PlaySound("Viktory/goreland", 7, 1)
    VPJ1 L -1 
    Stop
  }
}

ACTOR ViktoryRightLegChunk : ViktoryTorsoChunk
{
  States
  {
  Spawn:
    VPJ1 C 1 A_CheckFloor("Hit")
	TNT1 A 0 A_SpawnItemEX("ViktoryBlood", 0, 0, -6, random(0, -3), 0, random(0, -3), random(0, 360))
    Loop
  Hit:
	TNT1 A 0 A_PlaySound("Viktory/goreland", 7, 1)
    VPJ1 K -1 
    Stop
  }
}

ACTOR ViktoryLeftLegChunk : ViktoryTorsoChunk
{
  States
  {
  Spawn:
	TNT1 A 0 NODELAY A_SetScale(-0.105, 0.12)
    VPJ1 C 1 A_CheckFloor("Hit")
	TNT1 A 0 A_SpawnItemEX("ViktoryBlood", 0, 0, -6, random(0, -3), 0, random(0, -3), random(0, 360))
    Goto Spawn+1
  Hit:
	TNT1 A 0 A_PlaySound("Viktory/goreland", 7, 1)
    VPJ1 K -1 
    Stop
  }
}

ACTOR ViktoryHat : ViktoryTorsoChunk
{
  States
  {
  Spawn:
    VPJ1 F 1 A_CheckFloor("Hit")
    Loop
  Hit:
    VPJ1 G -1 
    Stop
  }
}


ACTOR ViktoryCasing
{
  Projectile
  -NOGRAVITY
  Gravity 0.7
  BounceType Hexen
  BounceCount 3
  BounceSound "viktory/ksshell"
  +BOUNCEAUTOOFFFLOORONLY
  +BOUNCEAUTOOFF
  +BOUNCEONCEILINGS
  +THRUACTORS
  Speed 3
  +PAINLESS
  +NOTONAUTOMAP
  +CLIENTSIDEONLY +NONETID
  Scale 0.03
  States
  {
  Spawn:
    TNT1 A 0 NODELAY A_ScaleVelocity(0.1)
	TNT1 A 3 A_ChangeVelocity(0, 0, random(2,3))
	TNT1 A 0 A_Jump(256, "Spawn1", "Spawn2", "Spawn3", "Spawn4", "Spawn5", "Spawn6", "Spawn7", "Spawn8")
	Spawn1:
    VPJ0 A 3
    Spawn2: 
    VPJ0 B 3
	Spawn3:
    VPJ0 C 3
	Spawn4:
    VPJ0 D 3
	Spawn5:
    VPJ0 E 3
	Spawn6:
    VPJ0 F 3
	Spawn7:
    VPJ0 G 3
	Spawn8:
    VPJ0 H 3
	Goto Spawn1
  Death:
    TNT1 A 0 A_Jump(128, "Mirror")
	Goto Rest
	Mirror: 
	TNT1 A 0 A_SetScale(-0.03, 0.03)
    Rest:
    VPJ0 I 350 
	VPJ0 IIIIIIIIII 1 A_FadeOut(0.1)
	Stop
  }
}

ACTOR ViktoryCasingEmpty : ViktoryCasing
{
  States
  {
  Spawn:
    TNT1 A 0 NODELAY A_ScaleVelocity(0.1)
	TNT1 A 3 A_ChangeVelocity(0, 0, random(2,3))
	TNT1 A 0 A_Jump(256, "Spawn1", "Spawn2", "Spawn3", "Spawn4", "Spawn5", "Spawn6", "Spawn7", "Spawn8")
	Spawn1:
    VJ11 A 3
    Spawn2: 
    VJ11 B 3
	Spawn3:
    VJ11 C 3
	Spawn4:
    VJ11 D 3
	Spawn5:
    VJ11 E 3
	Spawn6:
    VJ11 F 3
	Spawn7:
    VJ11 G 3
	Spawn8:
    VJ11 H 3
	Goto Spawn1
  Death:
    TNT1 A 0 A_Jump(128, "Mirror")
	Goto Rest
	Mirror: 
	TNT1 A 0 A_SetScale(-0.03, 0.03)
    Rest:
    VJ11 I 350 
	VJ11 IIIIIIIIII 1 A_FadeOut(0.1)
	Stop
  }
}

ACTOR ViktoryCasingBullet : ViktoryCasing
{
  BounceSound "viktory/vikibull"
  States
  {
  Spawn:
    TNT1 A 0 NODELAY A_ScaleVelocity(0.1)
	TNT1 A 3 A_ChangeVelocity(0, 0, random(2,3))
	TNT1 A 0 A_Jump(256, "Spawn1", "Spawn2", "Spawn3", "Spawn4", "Spawn5", "Spawn6", "Spawn7", "Spawn8")
	Spawn1:
    VJ10 A 3
    Spawn2: 
    VJ10 B 3
	Spawn3:
    VJ10 C 3
	Spawn4:
    VJ10 D 3
	Spawn5:
    VJ10 E 3
	Spawn6:
    VJ10 F 3
	Spawn7:
    VJ10 G 3
	Spawn8:
    VJ10 H 3
	Goto Spawn1
  Death:
    TNT1 A 0 A_Jump(128, "Mirror")
	Goto Rest
	Mirror: 
	TNT1 A 0 A_SetScale(-0.03, 0.03)
    Rest:
    VJ10 I 350 
	VJ10 IIIIIIIIII 1 A_FadeOut(0.1)
	Stop
  }
}

ACTOR ViktoryCasingBulletEmpty : ViktoryCasingBullet
{
  States
  {
  Spawn:
    TNT1 A 0 NODELAY A_ScaleVelocity(0.1)
	TNT1 A 3 A_ChangeVelocity(0, 0, random(2,3))
	TNT1 A 0 A_Jump(256, "Spawn1", "Spawn2", "Spawn3", "Spawn4", "Spawn5", "Spawn6", "Spawn7", "Spawn8")
	Spawn1:
    VJ12 A 3
    Spawn2: 
    VJ12 B 3
	Spawn3:
    VJ12 C 3
	Spawn4:
    VJ12 D 3
	Spawn5:
    VJ12 E 3
	Spawn6:
    VJ12 F 3
	Spawn7:
    VJ12 G 3
	Spawn8:
    VJ12 H 3
	Goto Spawn1
  Death:
    TNT1 A 0 A_Jump(128, "Mirror")
	Goto Rest
	Mirror: 
	TNT1 A 0 A_SetScale(-0.03, 0.03)
    Rest:
    VJ12 I 350 
	VJ12 IIIIIIIIII 1 A_FadeOut(0.1)
	Stop
  }
}

Actor IsViktory  : Inventory
{ 
}

Actor VikiStamina  : Inventory
{ 
	Inventory.MaxAmount 350
}

Actor ViktoryFootstep : CustomInventory
{
	+INVENTORY.QUIET
	States
	{
	Spawn:
		TNT1 A 0
		Loop
	Pickup:
		TNT1 A 0 A_CheckFloor("Footstep")
		Stop
	Footstep:
		TNT1 A 0 A_PlaySound("viktory/step", 3)
		Stop
	}
}

ACTOR PowerTired : PowerSpeed
{
  Powerup.Duration 35
  Speed 1.0
}

ACTOR PowerSprintSpeedUp : PowerSpeed
{
  Powerup.Duration 3
  +POWERSPEED.NOTRAIL
  Speed 2.5
}

ACTOR PowerViktorySlowdown : PowerSpeed
{
  Powerup.Duration 0x7FFFFFFF
  Speed 0.5
}

ACTOR ViktoryWeapon : Weapon
{
	Weapon.BobRangeX 0.45
	Weapon.BobRangeY 0.4
	Weapon.BobSpeed 1.85
	Weapon.BobStyle Alpha
	Weapon.SwayStyle DownOnly
	Weapon.ViewSwaySpeed 4.0
	Weapon.JumpSwaySpeed 8.0
	Weapon.MotionSwaySpeed 4.0
	Weapon.StillBobRange 2.0
	Weapon.StillBobSpeed 0.2 
	Inventory.RestrictedTo "ViktoryClass"
	+WEAPON.NOALERT
}

Actor VikiEquipped  : Inventory //Token for playing holster animations that play only when the select animation finished.
{ 
}

ACTOR ViktoryShovel : ViktoryWeapon
{
	Weapon.SelectionOrder 2500
	Weapon.KickBack 200
	Inventory.PickupMessage "You got a shovel!"
	Obituary "%k killed %o with a shovel."
	Scale 0.2
	+WEAPON.AMMO_OPTIONAL
	+INVENTORY.NOSCREENFLASH
	Tag "Shovel"
	States
	{
	Ready:
		VG27 A 1 A_WeaponReady(WRF_ALLOWZOOM)
		Loop
	Deselect:
		TNT1 A 0 A_GunFlash("StopAnim")
		TNT1 A 0 A_JumpIfInventory("VikiEquipped", 0, "DeselectAnim")
		Goto DeselectLoop
	DeselectAnim:
		VG27 LKJI 2
		TNT1 A 2
	DeselectLoop:
		TNT1 A 0 A_TakeInventory("VikiEquipped")
		TNT1 A 0 A_Lower
		Loop
	  Select:
		TNT1 A 0 Offset(0, 32)
		TNT1 A 0 A_PlaySound("Viktory/vikishovelequip", 6)
		TNT1 A 3
		VG27 IJKL 2 A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
		TNT1 A 0 A_GiveInventory("VikiEquipped", 1)
		Goto Ready
	  Cant:
		VG27 A 1 
		Goto Ready
	  Fire:
		TNT1 A 0 A_JumpIfInventory("VikiStamina", 70, "FireConfirm")
		Goto Cant
	  FireConfirm:
		TNT1 A 0 A_ChangeVelocity(velx*0.5, vely*0.5, velz, CVF_REPLACE)
		VG27 BCD 2
		TNT1 A 0 A_GunFlash
		TNT1 A 0 A_FireCustomMissile("ViktoryShovelSwing", 0, 1, 0, 6)
		TNT1 A 0 A_PlaySound("viktory/vikishovelswing1", 1)
		TNT1 A 0 A_TakeInventory("VikiStamina", 70)
		TNT1 A 0 A_GiveInventory("PowerTired", 1)
		VG27 EFGH 1
		TNT1 A 10
		VG27 IJKL 2
		Goto Ready
	  Flash:
		TNT1 AA 1 A_SetPitch(pitch+0.75)
		TNT1 AAAAAA 1 A_SetPitch(pitch-0.25)
		Goto LightDone
	  StopAnim:
		TNT1 A 0 
		Stop
	  Spawn:
		TNT1 A -1
		Stop
	  Zoom:
		"####" "#" 1 A_selectweapon("ViktorySyringe")
	  Goto Deselect
  }
}


ACTOR ViktoryShovelSwing
{
  Radius 8
  Height 8
  Speed 50
  Scale 0.075
  Damage (60)
  Species "Player"
  +EXTREMEDEATH
  +BLOODSPLATTER
  Projectile
  ProjectileKickback 350
  Obituary "%o had a taste of %k's shovel."
  States
  {
  Spawn:
	TNT1 A 2
    Stop
  Death:
	TNT1 A 0 A_PlaySound("viktory/vikishovelhit2", 1)
    TNT1 A 18 A_Quake(1, 3, 0, 256, "blank")
	Stop
  xDeath:
	TNT1 A 0 A_PlaySound("viktory/vikishovelhit", 1)
    TNT1 A 18 A_Quake(1, 3, 0, 256, "blank")
	Stop
  }
}

ACTOR ViktoryPM : ViktoryWeapon
{
	Weapon.SelectionOrder 2500
	Weapon.AmmoUse 1
	Weapon.AmmoGive1 8
	Weapon.AmmoType "ViktoryPMLoaded"
	Weapon.AmmoType2 "ViktoryPMAmmo"
	Weapon.AmmoGive2 16
	Weapon.KickBack 200
	Inventory.PickupMessage "You got a PM!"
	Obituary "%k killed %o with a PM."
	Scale 0.2
	+WEAPON.AMMO_OPTIONAL
	+WEAPON.NOAUTOFIRE
	+INVENTORY.NOSCREENFLASH
	Tag "Makarov's Pistol"
	States
	{
	Ready:
		VG35 A 1 A_WeaponReady(WRF_ALLOWRELOAD|WRF_ALLOWZOOM)
		Loop
	Deselect:
		TNT1 A 0 A_TakeInventory("BYOCCurrentlyReloading", 1)
		TNT1 A 0 A_GunFlash("StopAnim")
		TNT1 A 0 A_JumpIfInventory("VikiEquipped", 0, "DeselectAnim")
		Goto DeselectLoop
	DeselectAnim:
		VG36 CBA 2
		TNT1 A 2
	DeselectLoop:
		TNT1 A 0 A_TakeInventory("VikiEquipped")
		TNT1 A 0 A_Lower
		Loop
	  Select:
		TNT1 A 0 Offset(0, 32)
		TNT1 A 0 A_PlaySound("Viktory/m1895equip", 6)
		TNT1 A 3
		VG36 ABC 2 A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
		TNT1 A 0 A_GiveInventory("VikiEquipped", 1)
		Goto Ready
	  Fire:
		TNT1 A 0 A_JumpIfInventory("ViktoryPMLoaded", 1, 1)
		Goto Reload
		TNT1 A 0 A_PlaySound("Viktory/pmfire", 1, 1)
		TNT1 A 0 A_FireBullets(0.5, 0.5, -1, 13, "KS23BulletPuff", FBF_NORANDOM|FBF_USEAMMO)
		TNT1 A 0 ACS_NamedExecuteWithResult("ViktoryDegradeAccuracy", 0, 5)
		TNT1 A 0 A_AlertMonsters
		TNT1 A 0 A_GunFlash
		VG35 B 1 Bright
		VG35 C 2 A_WeaponReady
		VG35 D 2 A_WeaponReady
		VG35 E 3 A_WeaponReady
		TNT1 A 0 A_JumpIfNoAmmo("Reload")
		Goto Ready
	  Reload:
		TNT1 A 0 A_JumpIfInventory("ViktoryPMLoaded", 0, "Ready")
		TNT1 A 0 A_JumpIfInventory("ViktoryPMAmmo", 1, 2)
		VG35 A 1 A_WeaponReady(WRF_NOFIRE)
		Goto Ready
		TNT1 A 0 A_TakeInventory("ViktoryPMLoaded", 8)
		VG35 G 3 A_WeaponReady(WRF_NOFIRE)
		TNT1 A 0 A_GunFlash("PitchDown")
		TNT1 A 0 A_GiveInventory("BYOCCurrentlyReloading", 1)
		Tnt1 A 0 A_giveinventory("ByocReloadOncePromptUsed",1)
		TNT1 A 0 A_PlaySound("Viktory/pmreload1", 6, 1)
		VG35 HIJKLMNOP 3 A_WeaponReady(WRF_NOFIRE)
		TNT1 A 0 A_PlaySound("Viktory/pmreload2", 6, 1)
		TNT1 A 0 A_GiveInventory("ViktoryPMLoaded", 8)
		TNT1 A 0 A_TakeInventory("ViktoryPMAmmo", 8)
		TNT1 A 0 A_GunFlash("PitchUp")
		TNT1 A 0 A_TakeInventory("BYOCCurrentlyReloading", 1)
		VG35 QRSTUV 3 A_WeaponReady(WRF_NOFIRE)
		Goto Ready
	  Flash:
	    TNT1 A 0 A_SetAngle(angle+random(-0.5,0.5))
		TNT1 A 0 A_Quake(1, 3, 0, 256, "blank")
		TNT1 A 1 A_SetPitch(pitch-2.0)
		TNT1 A 0 ACS_NamedExecuteWithResult("ViktoryPKPM", 0)
		TNT1 AAA 1 A_SetPitch(pitch-0.5)
		Goto LightDone
	  PitchUp:
		TNT1 A 1 A_SetPitch(pitch-0.75)
		TNT1 AAA 1 A_SetPitch(pitch+0.25)
		Goto LightDone
	  PitchDown:
		TNT1 A 1 A_SetPitch(pitch+0.75)
		TNT1 AAA 1 A_SetPitch(pitch-0.25)
		Goto LightDone
	  StopAnim:
		TNT1 A 0 
		Stop
	  Spawn:
		TNT1 A -1
		Stop
		Zoom:
			"####" "#" 1 A_selectweapon("ViktorySyringe")
		  Goto Deselect
  }
}

ACTOR ViktoryPMAmmo : Ammo
{
	Inventory.MaxAmount 160
	Inventory.RestrictedTo "ViktoryClass"
	+INVENTORY.IGNORESKILL
	-COUNTITEM
}

ACTOR ViktoryPMLoaded : Ammo
{
	Inventory.MaxAmount 8
	Inventory.RestrictedTo "ViktoryClass"
	+INVENTORY.IGNORESKILL
	-COUNTITEM
}

ACTOR ViktoryM1895 : ViktoryWeapon
{
	Weapon.SelectionOrder 2500
	Weapon.AmmoUse 1
	Weapon.AmmoGive1 7
	Weapon.AmmoType "ViktoryM1895Loaded"
	Weapon.AmmoType2 "ViktoryM1895Ammo"
	Weapon.AmmoGive2 7
	Weapon.KickBack 200
	Inventory.PickupMessage "You got an M1895!"
	Obituary "%k killed %o with an M1895."
	Scale 0.2
	+WEAPON.AMMO_OPTIONAL
	+WEAPON.NOAUTOFIRE
	+INVENTORY.NOSCREENFLASH
	Tag "M1895"
	States
	{
	Ready:
		VG13 A 1 A_WeaponReady(WRF_ALLOWRELOAD|WRF_ALLOWZOOM)
		Loop
	Deselect:
		TNT1 A 0 A_TakeInventory("BYOCCurrentlyReloading", 1)
		TNT1 A 0 A_GunFlash("StopAnim")
		TNT1 A 0 A_JumpIfInventory("VikiEquipped", 0, "DeselectAnim")
		Goto DeselectLoop
	DeselectAnim:
		VG15 CBA 2
		TNT1 A 2
	DeselectLoop:
		TNT1 A 0 A_TakeInventory("VikiEquipped")
		TNT1 A 0 A_Lower
		Loop
	  Select:
		TNT1 A 0 Offset(0, 32)
		TNT1 A 0 A_PlaySound("Viktory/m1895equip", 6)
		TNT1 A 3
		VG15 ABC 2 A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
		TNT1 A 0 A_GiveInventory("VikiEquipped", 1)
		Goto Ready
	  Fire:
		TNT1 A 0 A_JumpIfInventory("ViktoryM1895Loaded", 1, 1)
		Goto Reload
		TNT1 A 0 A_PlaySound("Viktory/m1895fire", 1, 1)
		TNT1 A 0 A_FireBullets(CallACS("ViktoryGA", 7)/10, CallACS("ViktoryGA", 10)/10, -1, 60, "KS23BulletPuff", FBF_NORANDOM|FBF_USEAMMO)
		TNT1 A 0 ACS_NamedExecuteWithResult("ViktoryDegradeAccuracy", 15, 5)
		TNT1 A 0 A_AlertMonsters
		TNT1 A 0 A_GunFlash
		VG13 B 1 Bright
		VG13 C 2
		VG15 D 2
		VG13 D 3
		VG15 E 2 A_WeaponReady
		VG13 E 2 A_WeaponReady
		TNT1 A 0 A_PlaySound("Viktory/m1895cock", 6, 1)
		VG13 F 4 A_WeaponReady
		VG13 G 4 A_WeaponReady
		VG13 HIJK 4 A_WeaponReady
		TNT1 A 0 A_JumpIfNoAmmo("Reload")
		Goto Ready
	  Reload:
		TNT1 A 0 A_JumpIfInventory("ViktoryM1895Loaded", 0, "Ready")
		TNT1 A 0 A_JumpIfInventory("ViktoryM1895Ammo", 1, 2)
		VG13 A 1 A_WeaponReady(WRF_NOFIRE)
		Goto Ready
		TNT1 A 0 A_GiveInventory("BYOCCurrentlyReloading", 1)
		Tnt1 A 0 A_giveinventory("ByocReloadOncePromptUsed",1)
		VG13 LMNOPQRS 2 A_WeaponReady(WRF_NOFIRE)
		TNT1 A 0 A_PlaySound("Viktory/m1895open", 7)
		VG13 TUV 2 A_WeaponReady(WRF_NOFIRE)
	  ReloadLooping:
		VG13 W 2 A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
		TNT1 A 0 A_GunFlash("PitchDown")
		TNT1 A 0 A_PlaySound("Viktory/m1895eject", 6)
		VG13 XYZ 3 A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
		VG14 ABCD 2 A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
		TNT1 A 0 A_GunFlash("PitchUp")
		TNT1 A 0 A_PlaySound("Viktory/m1895insert", 6)
		TNT1 A 0 A_TakeInventory("ViktoryM1895Ammo", 1)
		TNT1 A 0 A_GiveInventory("ViktoryM1895Loaded", 1)
		VG14 EFG 3 A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
		TNT1 A 0 A_PlaySound("Viktory/m1895spin", 7)
		VG14 HI 3 A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
		VG14 JKL 2 A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
		TNT1 A 0 A_JumpIfInventory("ViktoryM1895Loaded", 0, "ReloadEnd")
		TNT1 A 0 A_JumpIfInventory("ViktoryM1895Ammo", 1, "ReloadLooping")
		Goto ReloadLooping
	  ReloadEnd:
	    TNT1 A 0 A_TakeInventory("BYOCCurrentlyReloading", 1)
		TNT1 A 0 A_PlaySound("Viktory/m1895open", 7)
		VG13 NML 2 A_WeaponReady(WRF_NOFIRE)
		Goto Ready
	  Flash:
	    TNT1 A 0 A_SetAngle(angle+random(-1,1))
		TNT1 A 0 A_Quake(1, 3, 0, 256, "blank")
		TNT1 A 1 A_SetPitch(pitch-4.5)
		TNT1 A 0 ACS_NamedExecuteWithResult("ViktoryPK", 0)
		TNT1 AAA 1 A_SetPitch(pitch-0.5)
		Goto LightDone
	  PitchUp:
		TNT1 A 1 A_SetPitch(pitch-0.75)
		TNT1 AAA 1 A_SetPitch(pitch+0.25)
		Goto LightDone
	  PitchDown:
		TNT1 A 1 A_SetPitch(pitch+0.75)
		TNT1 AAA 1 A_SetPitch(pitch-0.25)
		Goto LightDone
	  StopAnim:
		TNT1 A 0 
		Stop
	  Spawn:
		TNT1 A -1
		Stop
	  Zoom:
		"####" "#" 1 A_selectweapon("ViktorySyringe")
	  Goto Deselect
  }
}

ACTOR ViktoryM1895Ammo : Ammo
{
	Inventory.MaxAmount 35
	Inventory.RestrictedTo "ViktoryClass"
	+INVENTORY.IGNORESKILL
	-COUNTITEM
}

ACTOR ViktoryM1895Loaded : Ammo
{
	Inventory.MaxAmount 7
	Inventory.RestrictedTo "ViktoryClass"
	+INVENTORY.IGNORESKILL
	-COUNTITEM
}


ACTOR ViktoryMosin : ViktoryWeapon
{
	Weapon.SelectionOrder 2500
	Weapon.AmmoUse 1
	Weapon.AmmoGive2 12
	Weapon.AmmoType2 "ViktoryMosinAmmo"
	Weapon.AmmoGive1 5
	Weapon.AmmoType "ViktoryMosinLoaded"
	Weapon.AmmoUse2 1
	Weapon.KickBack 200
	Inventory.PickupMessage "You got a Mosin Nagant!"
	Obituary "%k killed %o with a Mosin Nagant."
	Scale 0.2
	+WEAPON.AMMO_CHECKBOTH
	+WEAPON.NOAUTOFIRE
	+INVENTORY.NOSCREENFLASH
	Tag "Mosin Nagant"
	States
	{
	Ready:
		TNT1 A 0 A_JumpIfInventory("IsSprinting", 0, "Sprinting")
		VG19 A 1 A_WeaponReady(WRF_ALLOWRELOAD|WRF_ALLOWZOOM)
		Loop
	Deselect:
		TNT1 A 0 A_TakeInventory("BYOCCurrentlyReloading", 1)
		TNT1 A 0 A_GunFlash("StopAnim")
		TNT1 A 0 A_JumpIfInventory("VikiEquipped", 0, "DeselectAnim")
		Goto DeselectLoop
	DeselectAnim:
		VG21 WXYZ 2
		TNT1 A 2
	DeselectLoop:
		TNT1 A 0 A_TakeInventory("VikiEquipped")
		TNT1 A 0 A_Lower
		Loop
	  Select:
		TNT1 A 0 Offset(0, 32)
		TNT1 A 0 A_PlaySound("Viktory/draw_secondary", 6)
		VG21 ZYXW 2 A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
		TNT1 A 0 A_GiveInventory("VikiEquipped", 1)
		Goto Ready
	  Fire:
		TNT1 A 0 A_JumpIfInventory("IsSprinting", 0, "Sprinting")
		TNT1 A 0 A_JumpIfInventory("ViktoryMosinBolt", 1, "CantFire")
		TNT1 A 0 A_JumpIfInventory("ViktoryMosinLoaded", 1, 1)
		Goto EmptyReload
		TNT1 A 0 A_GiveInventory("ViktoryMosinBolt", 1)
		TNT1 A 0 A_PlaySound("Viktory/mosinfire", 1, 1)
		TNT1 A 0 A_FireBullets(CallACS("ViktoryGA", 3)/10, CallACS("ViktoryGA", 3)/10, -1, 100, "KS23BulletPuff", FBF_NORANDOM|FBF_USEAMMO)
		TNT1 A 0 ACS_NamedExecuteWithResult("ViktoryDegradeAccuracy", 10, 15)
		TNT1 A 0 A_AlertMonsters
		TNT1 A 0 A_GunFlash
		VG19 B 1 Bright
		VG19 CD 2 A_WeaponReady(WRF_NOPRIMARY)
		VG19 EFGH 3 A_WeaponReady(WRF_NOPRIMARY)
		TNT1 A 0 A_JumpIfNoAmmo("Reload")
		Goto Ready
	  CantFire:
		TNT1 A 0 A_PlaySound("Viktory/ksdry", 6, 1)
		VG20 UV 2 A_WeaponReady
		Goto Ready
	  AltFire:
		TNT1 A 0 A_PlaySound("Viktory/mosinfoley", 7)
		VG19 IJK 2
		TNT1 A 0 A_GunFlash("PitchDown")
		EjectCheck:
		TNT1 A 0 A_JumpIfInventory("ViktoryMosinBolt", 1, "EjectEmpty")
		TNT1 A 0 A_JumpIfInventory("ViktoryMosinLoaded", 1, "EjectFull")
		Goto PumpRest 
		EjectFull:
		TNT1 A 0 A_TakeInventory("ViktoryMosinLoaded", 1)
		TNT1 A 0 A_SpawnItemEX("ViktoryCasingBullet", cos(pitch)*20, 5, 40+(-sin(pitch)*20), random(-2,2), random(5,13))
		Goto PumpRest
		EjectEmpty:
		TNT1 A 0 A_SpawnItemEX("ViktoryCasingBulletEmpty", cos(pitch)*20, 5, 40+(-sin(pitch)*20), random(-2,2), random(5,13))
		PumpRest:
		TNT1 A 0 A_PlaySound("Viktory/mosinbolt", 6, 1)
		VG19 M 4
		VG19 N 3
		AltFireLoop:
		VG19 N 1
		TNT1 A 0 A_Refire("AltFireLoop")
		TNT1 A 0 A_PlaySound("Viktory/mosinbolt2", 6, 1)
		TNT1 A 0 A_TakeInventory("ViktoryMosinBolt", 1)
		VG19 OPQRS 4 A_WeaponReady
		Goto Ready
	  Reload:
		TNT1 A 0 A_JumpIfInventory("ViktoryMosinLoaded", 0, "Ready")
		TNT1 A 0 A_JumpIfInventory("ViktoryMosinBolt", 0, "AltFire")
		TNT1 A 0 A_JumpIfInventory("ViktoryMosinAmmo", 1, 2)
		VG19 A 1 A_WeaponReady(WRF_NOFIRE)
		Goto Ready
	  EmptyOrNot:
		TNT1 A 0 A_JumpIfInventory("ViktoryMosinLoaded", 1, "TacticalReload")
		Goto EmptyReload
	  TacticalReload:
		TNT1 A 0 A_GiveInventory("BYOCCurrentlyReloading", 1)
		Tnt1 A 0 A_giveinventory("ByocReloadOncePromptUsed",1)
		TNT1 A 0 A_PlaySound("Viktory/mosinfoley", 7)
		VG20 AB 4 A_WeaponReady(WRF_NOFIRE)
		TNT1 A 0 A_PlaySound("Viktory/mosinreload1", 6)
		VG20 CDEFG 4 A_WeaponReady(WRF_NOFIRE)
		TNT1 A 0 A_PlaySound("Viktory/m1895equip", 6)
		VG20 WXYZ 3 A_WeaponReady(WRF_NOFIRE)
		VG34 ABCD 4 A_WeaponReady(WRF_NOFIRE)
		TNT1 A 0 A_PlaySound("Viktory/mosinfoley", 1)
	  TacticalReloadLooping:
		TNT1 A 0 A_TakeInventory("ViktoryMosinAmmo", 1)
		TNT1 A 0 A_GiveInventory("ViktoryMosinLoaded", 1)
		TNT1 A 0 A_PlaySound("Viktory/mosinbullet", 6)
		TNT1 A 0 A_GunFlash("PitchDown")
		VG34 EFG 3 A_WeaponReady(WRF_NOFIRE)
		TNT1 A 0 A_PlaySound("Viktory/mosinfoley", 1)
		TNT1 A 0 A_JumpIfInventory("ViktoryMosinLoaded", 0, "TacticalReloadEnd")
		TNT1 A 0 A_JumpIfInventory("ViktoryMosinAmmo", 1, "TacticalReloadContLooping")
		Goto TacticalReloadEnd
	  TacticalReloadContLooping:
		VG34 HIJKLMN 3 A_WeaponReady(WRF_NOFIRE)
		Goto TacticalReloadLooping
	  TacticalReloadEnd:
	    TNT1 A 0 A_TakeInventory("BYOCCurrentlyReloading", 1)
		TNT1 A 0 A_PlaySound("Viktory/mosinreload2", 6)
		VG20 OOPQ 4 A_WeaponReady(WRF_NOFIRE)
		VG19 RS 4 A_WeaponReady(WRF_NOFIRE)
		Goto Ready
	  EmptyReload:
		TNT1 A 0 A_JumpIfInventory("ViktoryMosinLoaded", 0, "Ready")
		TNT1 A 0 A_JumpIfInventory("ViktoryMosinBolt", 0, "AltFire")
		TNT1 A 0 A_JumpIfInventory("ViktoryMosinAmmo", 1, 2)
		VK11 A 1 A_WeaponReady(WRF_NOFIRE)
		Goto Ready
		TNT1 A 0 A_PlaySound("Viktory/mosinfoley", 7)
		TNT1 A 0 A_GiveInventory("BYOCCurrentlyReloading", 1)
		Tnt1 A 0 A_giveinventory("ByocReloadOncePromptUsed",1)
		VG20 AB 4 A_WeaponReady(WRF_NOFIRE)
		TNT1 A 0 A_PlaySound("Viktory/mosinreload1", 6)
		VG20 CDEFG 4 A_WeaponReady(WRF_NOFIRE)
		TNT1 A 0 A_PlaySound("Viktory/m1895equip", 6)
		VG20 WXYZ 3 A_WeaponReady(WRF_NOFIRE)
		VG20 HIJK 4 A_WeaponReady(WRF_NOFIRE)
		TNT1 A 0 A_PlaySound("Viktory/mosinfoley", 1)
		TNT1 A 0 A_PlaySound("Viktory/mosinreload3", 7)
		TNT1 A 0 A_GunFlash("PitchDown")
	  EmptyReloadLooping:
		TNT1 A 0 A_TakeInventory("ViktoryMosinAmmo", 1)
		TNT1 A 0 A_GiveInventory("ViktoryMosinLoaded", 1)
		TNT1 A 0 A_JumpIfInventory("ViktoryMosinLoaded", 0, "EmptyReloadEnd")
		TNT1 A 0 A_JumpIfInventory("ViktoryMosinAmmo", 1, "EmptyReloadLooping")
		Goto EmptyReloadEnd
	  EmptyReloadEnd:
	    TNT1 A 0 A_GiveInventory("BYOCCurrentlyReloading", 1)
		Tnt1 A 0 A_giveinventory("ByocReloadOncePromptUsed",1)
		VG20 LMNO 4 A_WeaponReady(WRF_NOFIRE)
		TNT1 A 0 A_PlaySound("Viktory/mosinreload2", 6)
		VG20 OPQ 4 A_WeaponReady(WRF_NOFIRE)
		VG19 RS 4 A_WeaponReady(WRF_NOFIRE)
		Goto Ready
	  Flash:
	    TNT1 A 0 A_SetAngle(angle+random(-2,2))
		TNT1 A 0 A_Quake(1, 6, 0, 256, "blank")
		TNT1 A 1 A_SetPitch(pitch-3.5)
		TNT1 A 0 ACS_NamedExecuteWithResult("ViktoryPK", 0)
		TNT1 AAA 1 A_SetPitch(pitch-0.5)
		Goto LightDone
	  Sprinting:
		TNT1 A 0 A_JumpIfInventory("PowerTired", 0, "CantSprint")
		TNT1 A 0 A_PlaySound("Viktory/rpgfoley3", 7)
		VG19 A 1 Offset(0, 96) A_WeaponReady(WRF_NOFIRE|WRF_NOBOB)
		//TNT1 A 0 A_GunFlash("SprintingLoopAnim")
	  SprintingLoop:
		TNT1 A 0 A_JumpIfInventory("PowerTired", 0, "SprintingDone")
		TNT1 A 1 A_WeaponReady(WRF_NOFIRE)
	    TNT1 A 0 A_JumpIfInventory("IsSprinting", 0, "SprintingLoop")
		Goto SprintingDone
	  SprintingDone:
		TNT1 A 0 A_GunFlash("StopAnim")
	    VG19 A 1 Offset(0, 96) A_WeaponReady(WRF_NOFIRE|WRF_NOBOB)
		Goto Ready
	  SprintingLoopAnim:
	    VG21 Z 2
		Loop
	  CantSprint:
		VG19 A 1 A_WeaponReady(WRF_ALLOWRELOAD|WRF_NOFIRE)
		Goto Ready
	  PitchDown:
		TNT1 A 1 A_SetPitch(pitch+1)
		TNT1 AAAA 1 A_SetPitch(pitch-0.25)
		Goto LightDone
	  StopAnim:
		TNT1 A 0 
		Stop
	  Spawn:
		TNT1 A -1
		Stop
	  Zoom:
		"####" "#" 1 A_selectweapon("ViktorySyringe")
	  Goto Deselect
  }
}

ACTOR ViktoryMosinBolt : Ammo
{
	Inventory.MaxAmount 1
	Inventory.RestrictedTo "ViktoryClass"
	+INVENTORY.IGNORESKILL
	-COUNTITEM
}

ACTOR ViktoryMosinLoaded : Ammo
{
	Inventory.MaxAmount 5
	Inventory.RestrictedTo "ViktoryClass"
	+INVENTORY.IGNORESKILL
	-COUNTITEM
}

ACTOR ViktoryMosinAmmo : Ammo
{
	Inventory.MaxAmount 25
	Ammo.BackpackMaxAmount 50
	Inventory.Amount 1
}

ACTOR ViktoryKS : ViktoryWeapon
{
	Weapon.SelectionOrder 2500
	Weapon.AmmoUse 1
	Weapon.AmmoGive2 12
	Weapon.AmmoType2 "ViktoryKSAmmo"
	Weapon.AmmoGive1 4
	Weapon.AmmoType "ViktoryKSLoaded"
	Weapon.AmmoUse2 1
	Weapon.KickBack 200
	Inventory.PickupMessage "You got a KS-23!"
	Obituary "%k killed %o with a KS-23."
	Scale 0.2
	+WEAPON.AMMO_CHECKBOTH
	+WEAPON.NOAUTOFIRE
	+INVENTORY.NOSCREENFLASH
	Tag "KS-23"
	States
	{
	Ready:
		TNT1 A 0 A_JumpIfInventory("IsSprinting", 0, "Sprinting")
		VG11 A 1 A_WeaponReady(WRF_ALLOWRELOAD|WRF_ALLOWZOOM)
		Loop
	Deselect:
	    TNT1 A 0 A_TakeInventory("BYOCCurrentlyReloading", 1)
		TNT1 A 0 A_GunFlash("StopAnim")
		TNT1 A 0 A_JumpIfInventory("VikiEquipped", 0, "DeselectAnim")
		Goto DeselectLoop
	DeselectAnim:
		VG11 vwxy 2
		VG12 I 2
	DeselectLoop:
		TNT1 A 0 A_TakeInventory("VikiEquipped")
		TNT1 A 0 A_Lower
		Loop
	  Select:
		TNT1 A 0 Offset(0, 32)
		TNT1 A 0 A_PlaySound("Viktory/draw_primary", 6)
		TNT1 A 3
		VG12 I 2 A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
		VG11 YXWV 2 A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
		TNT1 A 0 A_GiveInventory("VikiEquipped", 1)
		Goto Ready
	  Fire:
		TNT1 A 0 A_JumpIfInventory("IsSprinting", 0, "Sprinting")
		TNT1 A 0 A_JumpIfInventory("ViktoryKSPump", 1, "CantFire")
		TNT1 A 0 A_JumpIfInventory("ViktoryKSNoShell", 1, "CantFire")
		TNT1 A 0 A_JumpIfInventory("ViktoryKSLoaded", 1, 1)
		Goto Reload
		TNT1 A 0 A_GiveInventory("ViktoryKSPump", 1)
		TNT1 A 0 A_PlaySound("Viktory/ksfire", 1, 1)
		TNT1 A 0 A_FireBullets(10, 10, 10, 15, "KS23BulletPuff", FBF_NORANDOM|FBF_USEAMMO)
		TNT1 A 0 A_AlertMonsters
		TNT1 A 0 A_GunFlash
		VG11 B 1 Bright
		VG11 C 2 A_WeaponReady(WRF_NOPRIMARY)
		VG11 DE 3 A_WeaponReady(WRF_NOPRIMARY)
		VG11 FG 3 A_WeaponReady(WRF_NOPRIMARY)
		TNT1 A 0 A_JumpIfNoAmmo("Reload")
		VG11 A 10 A_WeaponReady
		Goto Ready
	  CantFire:
		TNT1 A 0 A_PlaySound("Viktory/ksdry", 6, 1)
		VG12 A 2
		VG12 BCD 2 A_WeaponReady
		Goto Ready
	  AltFire:
		TNT1 A 0 A_PlaySound("Viktory/ksfoley", 7)
		VG11 IJKLM 2
		TNT1 A 0 A_GunFlash("PitchDown")
		EjectCheck:
		TNT1 A 0 A_JumpIfInventory("ViktoryKSNoShell", 1, "LoadShell")
		TNT1 A 0 A_JumpIfInventory("ViktoryKSPump", 1, "EjectEmpty")
		TNT1 A 0 A_JumpIfInventory("ViktoryKSLoaded", 1, "EjectFull")
		Goto PumpRest 
		EjectFull:
		TNT1 A 0 A_TakeInventory("ViktoryKSLoaded", 1)
		TNT1 A 0 A_SpawnItemEX("ViktoryCasing", cos(pitch)*20, 5, 40+(-sin(pitch)*20), random(-2,2), random(5,13))
		Goto PumpRest
		EjectEmpty:
		TNT1 A 0 A_TakeInventory("ViktoryKSPump", 1)
		TNT1 A 0 A_SpawnItemEX("ViktoryCasingEmpty", cos(pitch)*20, 5, 40+(-sin(pitch)*20), random(-2,2), random(5,13))
		Goto PumpRest
		LoadShell:
		TNT1 A 0 A_TakeInventory("ViktoryKSNoShell", 1)
		PumpRest:
		TNT1 A 0 A_PlaySound("Viktory/kspump", 6, 1)
		VG11 N 3 A_WeaponReady
		AltFireLoop:
		VG11 O 1
		TNT1 A 0 A_Refire("AltFireLoop")
		TNT1 A 0 A_PlaySound("Viktory/ksfoley2", 7)
		VG11 O 1 A_WeaponReady
		TNT1 A 0 A_PlaySound("Viktory/kspump2", 6, 1)
		VG11 PQRST 2 A_WeaponReady
		Goto Ready
	  Reload:
		TNT1 A 0 A_JumpIfInventory("ViktoryKSLoaded", 0, "Ready")
		TNT1 A 0 A_JumpIfInventory("ViktoryKSPump", 0, "AltFire")
		TNT1 A 0 A_JumpIfInventory("ViktoryKSAmmo", 1, 2)
		VK11 A 1
		Goto Ready
		TNT1 A 0 A_JumpIfInventory("ViktoryKSLoaded", 1, 2)
		TNT1 A 0 A_GiveInventory("ViktoryKSNoShell", 1)
		TNT1 A 0 A_PlaySound("Viktory/ksfoley2", 7)
		VG11 VWXYZ 2 A_WeaponReady(WRF_NOFIRE)
	  ReloadLooping:
	    TNT1 A 0 A_GiveInventory("BYOCCurrentlyReloading", 1)
		Tnt1 A 0 A_giveinventory("ByocReloadOncePromptUsed",1)
		TNT1 A 0 A_TakeInventory("ViktoryKSAmmo", 1)
		TNT1 A 0 A_GiveInventory("ViktoryKSLoaded", 1)
		TNT1 A 0 A_PlaySound("Viktory/ksinsert", 6)
		VG12 EFG 3 A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
		VG12 H 7 A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
		TNT1 A 0 A_JumpIfInventory("ViktoryKSLoaded", 0, "ReloadEnd")
		TNT1 A 0 A_JumpIfInventory("ViktoryKSAmmo", 1, "ReloadLooping")
		Goto ReloadEnd
	  ReloadEnd:
	    TNT1 A 0 A_TakeInventory("BYOCCurrentlyReloading", 1)
		TNT1 A 0 A_PlaySound("Viktory/ksfoley2", 7)
		VG11 YXWV 2 A_WeaponReady(WRF_NOFIRE)
		Goto Ready
	  Flash:
	    TNT1 A 0 A_SetAngle(angle+random(-3,3))
		TNT1 A 0 A_Quake(3, 9, 0, 256, "blank")
		TNT1 A 0 ACS_NamedExecuteWithResult("ViktoryPK", 0)
		TNT1 AAA 1 A_SetPitch(pitch-4.5)
		TNT1 AAAAAA 1 A_SetPitch(pitch-0.5)
		Goto LightDone
	  Sprinting:
		TNT1 A 0 A_JumpIfInventory("PowerTired", 0, "CantSprint")
		TNT1 A 0 A_PlaySound("Viktory/rpgfoley3", 7)
		VG11 A 1 Offset(0, 96) A_WeaponReady(WRF_NOFIRE|WRF_NOBOB)
		//TNT1 A 0 A_GunFlash("SprintingLoopAnim")
	  SprintingLoop:
		TNT1 A 0 A_JumpIfInventory("PowerTired", 0, "SprintingDone")
		TNT1 A 1 A_WeaponReady(WRF_NOFIRE)
	    TNT1 A 0 A_JumpIfInventory("IsSprinting", 0, "SprintingLoop")
		Goto SprintingDone
	  SprintingDone:
		TNT1 A 0 A_GunFlash("StopAnim")
	    VG11 A 1 Offset(0, 96) A_WeaponReady(WRF_NOFIRE|WRF_NOBOB)
		Goto Ready
	  SprintingLoopAnim:
	    VG11 Z 2
		Loop
	  CantSprint:
		VG11 A 1 A_WeaponReady(WRF_ALLOWRELOAD|WRF_NOFIRE)
		Goto Ready
	  PitchDown:
		TNT1 A 1 A_SetPitch(pitch+1)
		TNT1 AAAA 1 A_SetPitch(pitch-0.25)
		Goto LightDone
	  StopAnim:
		TNT1 A 0 
		Stop
	  Spawn:
		TNT1 A -1
		Stop
	  Zoom:
		"####" "#" 1 A_selectweapon("ViktorySyringe")
	  Goto Deselect
  }
}

ACTOR KS23BulletPuff : BaseBulletPuff
{
	+PUFFGETSOWNER
	+HITTRACER
	Decal BulletChip
	+NODECAL
	States
  {
  XDeath:
		TNT1 A 0 A_GiveInventory("KS23KnockbackProc", 1, AAPTR_TRACER)
		Stop
	Death:
		PUFF A 4 Bright
		PUFF BCD 4
    Stop
  }
}

Actor KS23KnockbackProc : CustomInventory
{
  states
  {
  Spawn:
    WSPP B 1 
	Stop
   Pickup:
    TNT1 A 0 A_ChangeVelocity(0, 0, 200/mass, 0)
    Stop
  }
}

Actor ViktoryKSNoShell  : Inventory
{ 
}

ACTOR ViktoryKSPump : Ammo
{
	Inventory.MaxAmount 1
	Inventory.RestrictedTo "ViktoryClass"
	+INVENTORY.IGNORESKILL
	-COUNTITEM
}

ACTOR ViktoryKSLoaded : Ammo
{
	Inventory.MaxAmount 4
	Inventory.RestrictedTo "ViktoryClass"
	+INVENTORY.IGNORESKILL
	-COUNTITEM
}

ACTOR ViktoryKSAmmo : Ammo
{
	Inventory.MaxAmount 25
	Ammo.BackpackMaxAmount 50
	Inventory.Amount 1
}

ACTOR ViktorySVD : ViktoryWeapon
{
	Weapon.SelectionOrder 2500
	Weapon.AmmoUse 1
	Weapon.AmmoGive2 10
	Weapon.AmmoType2 "ViktorySVDAmmo"
	Weapon.AmmoGive1 5
	Weapon.AmmoType "ViktorySVDLoaded"
	Weapon.AmmoUse2 1
	Inventory.PickupMessage "You got an SVD!"
	Obituary "%k killed %o with an SVD."
	Scale 0.2
	+WEAPON.AMMO_CHECKBOTH
	+WEAPON.NOAUTOFIRE
	+INVENTORY.NOSCREENFLASH
	Tag "SVD Dragunov"
	States
	{
	Ready:
		TNT1 A 0 A_JumpIfInventory("IsSprinting", 0, "Sprinting")
		VKG5 A 1 A_WeaponReady(WRF_ALLOWRELOAD)
		Loop
	Deselect:
		TNT1 A 0 A_TakeInventory("BYOCCurrentlyReloading", 1)
		TNT1 A 0 A_GunFlash("StopAnim")
		TNT1 A 0 A_ZoomFactor(1, ZOOM_INSTANT)
		TNT1 A 0 A_TakeInventory("PowerViktorySlowdown", 1)
		TNT1 A 0 A_TakeInventory("SVDScope", 1)
		TNT1 A 0 A_JumpIfInventory("VikiEquipped", 0, "DeselectAnim")
		Goto DeselectLoop
	DeselectAnim:
		VKG6 GFABCDE 2 
	DeselectLoop:
		TNT1 A 0 A_TakeInventory("VikiEquipped")
		TNT1 A 0 A_Lower
		Loop
	  Select:
		TNT1 A 0 Offset(0, 32)
		TNT1 A 3
		TNT1 A 0 A_PlaySound("Viktory/svdequip", 7)
		TNT1 A 0 A_PlaySound("Viktory/draw_secondary", 6)
		VKG6 EDCBAFG 2 A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
		TNT1 A 0 A_GiveInventory("VikiEquipped", 1)
		Goto Ready
	  Fire:
		TNT1 A 0 A_JumpIfInventory("IsSprinting", 0, "Sprinting")
		TNT1 A 0 A_JumpIfInventory("SVDScope", 0, "FireScoped")
		TNT1 A 0 A_JumpIfInventory("SVDBoltCheck", 0, "CantSprint")
		TNT1 A 0 A_JumpIfInventory("ViktorySVDLoaded", 1, 1)
		Goto Reload
		TNT1 A 0 A_PlaySound("Viktory/svdfire", 1, 1)
		TNT1 A 0 ACS_NamedExecuteWithResult("ViktoryDegradeAccuracy", 10, 15)
		TNT1 A 0 A_FireBullets(CallACS("ViktoryGA", 10)/10, CallACS("ViktoryGA", 10)/10, -1, 200, "KS23BulletPuff", FBF_NORANDOM|FBF_USEAMMO)
		TNT1 A 0 A_AlertMonsters
		TNT1 A 0 A_SpawnItemEX("ViktoryCasingBulletEmpty", cos(pitch)*20, -5, 40+(-sin(pitch)*20), random(-2,2), random(-13,-5))
		TNT1 A 0 A_GunFlash
		TNT1 A 0 A_Jump(255, "Fire1", "Fire2", "Fire3")
	  Fire1:
		VKG5 B 1 Bright
		VKG5 CDE 2
		VKG5 FGHIJ 2 A_WeaponReady
		TNT1 A 0 A_JumpIfNoAmmo("Reload")
		Goto Ready
	  Fire2:
		VKG5 B 1 Bright
		VKG7 CDE 2
		VKG5 FGHIJ 2 A_WeaponReady
		TNT1 A 0 A_JumpIfNoAmmo("Reload")
		Goto Ready
	  Fire3:
		VKG5 B 1 Bright
		VKG8 CDE 2
		VKG5 FGHIJ 2 A_WeaponReady
		TNT1 A 0 A_JumpIfNoAmmo("Reload")
		Goto Ready
	  AltFire:
		TNT1 A 0 A_JumpIfInventory("SVDScope", 0, "Unscope")
		TNT1 A 0 A_GiveInventory("SVDScope", 1)
		TNT1 A 0 A_GiveInventory("PowerViktorySlowdown", 1)
		TNT1 A 0 A_ZoomFactor(4, ZOOM_INSTANT)
		TNT1 A 0 A_SetBlend(Black, 1, 35)
		TNT1 A 0 ACS_NamedExecuteWithResult("ViktoryDegradeAccuracy", 50, 13)
		VG10 Z 1 A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
	  AltFireLoop:
		TNT1 A 0 A_JumpIfInventory("IsSprinting", 0, "Unscope")
		VG10 Z 1 A_WeaponReady(WRF_NOBOB)
		Loop
	  Unscope:
		TNT1 A 0 A_ZoomFactor(1, ZOOM_INSTANT)
		TNT1 A 0 A_TakeInventory("SVDScope", 1)
		TNT1 A 0 A_TakeInventory("PowerViktorySlowdown", 1)
		TNT1 A 0 A_SetBlend(Black, 1, 9)
		Goto Ready
	  FireScoped:
		TNT1 A 0 A_JumpIfInventory("SVDBoltCheck", 0, "CantScope")
		TNT1 A 0 A_JumpIfInventory("ViktorySVDLoaded", 1, 1)
		Goto CantScope
		TNT1 A 0 A_PlaySound("Viktory/svdfire", 1, 1)
		TNT1 A 0 A_FireBullets(CallACS("ViktoryGA", 4)/10, CallACS("ViktoryGA", 4)/10, -1, 200, "KS23BulletPuff", FBF_NORANDOM|FBF_USEAMMO)
		TNT1 A 0 A_AlertMonsters
		TNT1 A 0 A_SpawnItemEX("ViktoryCasingBulletEmpty", cos(pitch)*20, -5, 40+(-sin(pitch)*20), random(-2,2), random(-13,-5))
		TNT1 A 0 ACS_NamedExecuteWithResult("ViktoryDegradeAccuracy", 4, 5)
		TNT1 A 0 A_GunFlash("ScopedFlash")
		VG10 Z 7 
		Goto AltFireLoop
	  CheckBolt:
		TNT1 A 0 A_JumpIfInventory("SVDBoltCheck", 0, "RackBolt")
		VKG5 A 1
		Goto Ready
	  Reload:
		TNT1 A 0 A_JumpIfInventory("ViktorySVDLoaded", 0, "CheckBolt")
		TNT1 A 0 A_JumpIfInventory("ViktorySVDAmmo", 1, 2)
		VKG5 A 1
		Goto Ready
		TNT1 A 0 A_JumpIfInventory("ViktorySVDLoaded", 1, 2)
		TNT1 A 0 A_GiveInventory("SVDBoltCheck", 1)
		Goto ReloadStart
	  ReloadStart:
		TNT1 A 0 A_PlaySound("Viktory/svdfoley", 7, 0.6)
		TNT1 A 0 A_GiveInventory("BYOCCurrentlyReloading", 1)
		Tnt1 A 0 A_giveinventory("ByocReloadOncePromptUsed",1)
		VKG9 ABCDD 2 A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
		TNT1 A 0 A_PlaySound("Viktory/svdreloadout", 6)
		TNT1 A 0 A_TakeInventory("ViktorySVDLoaded")
		TNT1 A 0 A_GunFlash("PitchUp")
		VG10 ABCDEFGHIPQR 2 A_WeaponReady(WRF_NOFIRE)
		TNT1 A 0 A_PlaySound("Viktory/m1895equip", 7)
		VG10 STUJKLMNO 2 A_WeaponReady(WRF_NOFIRE)
		ReloadLooping:
		TNT1 A 0 A_TakeInventory("ViktorySVDAmmo", 1)
		TNT1 A 0 A_GiveInventory("ViktorySVDLoaded", 1)
		TNT1 A 0 A_JumpIfInventory("ViktorySVDLoaded", 0, "ReloadEnd")
		TNT1 A 0 A_JumpIfInventory("ViktorySVDAmmo", 1, "ReloadLooping")
		Goto ReloadEnd
		ReloadEnd:
		TNT1 A 0 A_TakeInventory("BYOCCurrentlyReloading", 1)
		TNT1 A 0 A_PlaySound("Viktory/svdreloadin", 6)
		TNT1 A 0 A_GunFlash("PitchUp")
		VKG9 EFGG 2 A_WeaponReady(WRF_NOFIRE)
		TNT1 A 0 A_WeaponReady(WRF_NOFIRE|WRF_ALLOWRELOAD)
		TNT1 A 0 A_PlaySound("Viktory/svdfoley", 7, 0.6)
		VKG9 XYZ 2 A_WeaponReady(WRF_NOFIRE)
		Goto Ready
	  RackBolt:
		TNT1 A 0 A_PlaySound("Viktory/svdfoley", 7, 0.6)
		VKG9 HIJKLM 2 A_WeaponReady(WRF_NOFIRE)
		TNT1 A 0 A_PlaySound("Viktory/svdreloadbolt", 7)
		VKG9 MN 2 A_WeaponReady(WRF_NOFIRE)
		TNT1 A 0 A_Quake(1, 3, 0, 128, "blank")
		TNT1 A 0 A_TakeInventory("SVDBoltCheck", 1)
		VKG9 OOOO 2 A_WeaponReady(WRF_NOFIRE)
		TNT1 A 0 A_GunFlash("PitchUp")
		VKG9 PQRSTUVWXYZ 2 A_WeaponReady(WRF_NOFIRE)
		Goto Ready
	  Flash:
	    TNT1 A 0 A_SetAngle(angle+random(-5,5))
		TNT1 A 0 A_Quake(2, 6, 0, 256, "blank")
		TNT1 A 1 A_SetPitch(pitch-1)
		TNT1 A 0 ACS_NamedExecuteWithResult("ViktoryPK", 0)
		TNT1 A 1 A_SetPitch(pitch-9)
		TNT1 AAAAAAA 1 A_SetPitch(pitch+0.5)
		Goto LightDone
	  ScopedFlash:
	    TNT1 A 0 A_SetAngle(angle+random(-2,2))
		TNT1 A 0 A_Quake(2, 6, 0, 256, "blank")
		TNT1 A 1 A_SetPitch(pitch-1)
		TNT1 A 0 ACS_NamedExecuteWithResult("ViktoryPK", 0)
		TNT1 A 1 A_SetPitch(pitch-2)
		TNT1 AA 1 A_SetPitch(pitch+0.5)
		Goto LightDone
	  PitchDown:
		TNT1 A 1 A_SetPitch(pitch+1)
		TNT1 AAAA 1 A_SetPitch(pitch-0.25)
		Goto LightDone
	  PitchUp:
		TNT1 A 1 A_SetPitch(pitch-1)
		TNT1 AAAA 1 A_SetPitch(pitch+0.25)
		Goto LightDone
	  Sprinting:
		TNT1 A 0 A_JumpIfInventory("PowerTired", 0, "CantSprint")
		TNT1 A 0 A_PlaySound("Viktory/rpgfoley3", 7)
		VKG5 A 1 Offset(0, 96) A_WeaponReady(WRF_NOFIRE|WRF_NOBOB)
		//TNT1 A 0 A_GunFlash("SprintingLoopAnim")
	  SprintingLoop:
		TNT1 A 0 A_JumpIfInventory("PowerTired", 0, "SprintingDone")
		TNT1 A 1 A_WeaponReady(WRF_NOFIRE)
	    TNT1 A 0 A_JumpIfInventory("IsSprinting", 0, "SprintingLoop")
		Goto SprintingDone
	  SprintingDone:
		TNT1 A 0 A_GunFlash("StopAnim")
	    VKG5 A 1 Offset(0, 96) A_WeaponReady(WRF_NOFIRE|WRF_NOBOB)
		Goto Ready
	  SprintingLoopAnim:
	    VKG6 D 2
		Loop
	  CantSprint:
		VKG5 A 1 A_WeaponReady(WRF_ALLOWRELOAD|WRF_NOFIRE)
		Goto Ready
	  CantScope:
		VG10 Z 1 A_WeaponReady(WRF_NOFIRE)
		Goto AltfireLoop
	  StopAnim:
		TNT1 A 0 
		Stop
	  Spawn:
		TNT1 A -1
		Stop
	  Zoom:
		"####" "#" 1 A_selectweapon("ViktorySyringe")
	  Goto Deselect
  }
}

ACTOR ViktorySVDLoaded : Ammo
{
	Inventory.MaxAmount 10
	Inventory.RestrictedTo "ViktoryClass"
	+INVENTORY.IGNORESKILL
	-COUNTITEM
}

Actor SVDScope  : Inventory
{ 
}

Actor SVDBoltCheck  : Inventory
{ 
}

ACTOR ViktorySVDAmmo : Ammo
{
	Inventory.MaxAmount 50
	Ammo.BackpackMaxAmount 100
	Inventory.Amount 1
}

ACTOR ViktoryRPG : ViktoryWeapon
{
	Weapon.SelectionOrder 2500
	Weapon.AmmoUse 1
	Weapon.AmmoGive2 3
	Weapon.AmmoType2 "ViktoryRPGAmmo"
	Weapon.AmmoGive1 1
	Weapon.AmmoType "ViktoryRPGLoaded"
	Weapon.AmmoUse2 1
	Inventory.PickupMessage "You got an RPG-7!"
	Obituary "%k killed %o with an RPG-7."
	Scale 0.2
	+WEAPON.AMMO_CHECKBOTH
	+WEAPON.NOAUTOFIRE
	+INVENTORY.NOSCREENFLASH
	Tag "RPG-7"
	States
	{
	Ready:
		TNT1 A 0 A_JumpIfInventory("ViktoryRPGLoaded", 0, "ReadyRocket")
		TNT1 A 0 A_JumpIfInventory("IsSprinting", 0, "Sprinting")
		VG18 G 1 A_WeaponReady(WRF_ALLOWRELOAD)
		Loop
	ReadyRocket:
		TNT1 A 0 A_JumpIfInventory("IsSprinting", 0, "SprintingRocket")
		VG16 A 1 A_WeaponReady(WRF_ALLOWRELOAD)
		Loop
	Deselect:
		TNT1 A 0 A_TakeInventory("BYOCCurrentlyReloading", 1)
		TNT1 A 0 A_GunFlash("StopAnim")
		TNT1 A 0 A_JumpIfInventory("VikiEquipped", 0, "DeselectAnim")
		Goto DeselectLoop
	DeselectAnim:
		TNT1 A 0 A_JumpIfInventory("ViktoryRPGLoaded", 0, "DeselectRocket")
		VG18 FEDCBA 2
	DeselectLoop:
		TNT1 A 0 A_TakeInventory("VikiEquipped")
		TNT1 A 0 A_Lower
		Loop
	DeselectRocket:
		VG17 FEDCBA 2
		Goto DeselectLoop
	  Select:
		TNT1 A 0 Offset(0, 32)
		TNT1 A 0 A_PlaySound("Viktory/rpgfoley1", 7)
		TNT1 A 0 A_PlaySound("Viktory/draw_primary", 6)
		TNT1 A 0 A_JumpIfInventory("ViktoryRPGLoaded", 0, "SelectRocket")
		VG18 ABCD 2
		TNT1 A 0 A_PlaySound("Viktory/rpgequip", 1)
		VG18 EF 2 A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
		TNT1 A 0 A_GiveInventory("VikiEquipped", 1)
		Goto Ready
	  SelectRocket:
		VG17 ABCD 2
		TNT1 A 0 A_PlaySound("Viktory/rpgequip", 1)
		VG17 EF 2 A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
		TNT1 A 0 A_GiveInventory("VikiEquipped", 1)
		Goto Ready
	  Fire:
		TNT1 A 0 A_JumpIfInventory("IsSprinting", 0, "Sprinting")
		TNT1 A 0 A_JumpIfInventory("ViktoryRPGLoaded", 1, 1)
		Goto Reload
		TNT1 A 0 A_PlaySound("Viktory/rpgfire", 1, 1)
		TNT1 A 0 A_FireCustomMissile("ViktoryRPGRocket", 0, 1, 0, 6)
		TNT1 A 0 A_FireCustomMissile("ViktoryRPGBackblast", 0, 0, 5, 6)
		TNT1 A 0 A_AlertMonsters
		TNT1 A 0 A_GunFlash
		VG16 B 1 Bright
		VG16 CDE 3
		TNT1 A 0 A_JumpIfNoAmmo("Reload")
		Goto Ready
	  Reload:
		TNT1 A 0 A_JumpIfInventory("ViktoryRPGLoaded", 0, "Ready")
		TNT1 A 0 A_JumpIfInventory("ViktoryRPGAmmo", 1, 2)
		VG18 G 1
		Goto Ready
		TNT1 A 0 A_PlaySound("Viktory/rpgfoley3", 7)
		TNT1 A 0 A_GiveInventory("BYOCCurrentlyReloading", 1)
		Tnt1 A 0 A_giveinventory("ByocReloadOncePromptUsed",1)
		VG16 FGHIJKLMNO 3 A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
		TNT1 A 0 A_TakeInventory("ViktoryRPGAmmo", 1)
		TNT1 A 0 A_GiveInventory("ViktoryRPGLoaded", 1)
		TNT1 A 0 A_PlaySound("Viktory/rpgreload", 6)
		TNT1 A 0 A_GunFlash("PitchDown")
		VG16 PQRSTUVW 3 A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
		TNT1 A 0 A_TakeInventory("BYOCCurrentlyReloading", 1)
		Goto Ready
	  Flash:
	    TNT1 A 0 A_SetAngle(angle+random(-2,2))
		TNT1 A 0 A_Quake(1, 3, 0, 256, "blank")
		TNT1 A 1 A_SetPitch(pitch-0.5)
		TNT1 AAA 1 A_SetPitch(pitch-2)
		TNT1 A 1 A_SetPitch(pitch-0.5)
		TNT1 AAA 1 A_SetPitch(pitch+0.5)
		Goto LightDone
	  PitchDown:
		TNT1 A 1 A_SetPitch(pitch+1)
		TNT1 AAAA 1 A_SetPitch(pitch-0.25)
		Goto LightDone
	  Sprinting:
		TNT1 A 0 A_JumpIfInventory("PowerTired", 0, "CantSprint")
		TNT1 A 0 A_PlaySound("Viktory/rpgfoley3", 7)
		VG18 G 1 Offset(0, 96) A_WeaponReady(WRF_NOFIRE|WRF_NOBOB)
		//TNT1 A 0 A_GunFlash("SprintingLoopAnim")
	  SprintingLoop:
		TNT1 A 0 A_JumpIfInventory("PowerTired", 0, "SprintingDone")
		TNT1 A 1 A_WeaponReady(WRF_NOFIRE)
	    TNT1 A 0 A_JumpIfInventory("IsSprinting", 0, "SprintingLoop")
		Goto SprintingDone
	  SprintingDone:
		TNT1 A 0 A_GunFlash("StopAnim")
	    VG18 G 1 Offset(0, 96) A_WeaponReady(WRF_NOFIRE|WRF_NOBOB)
		Goto Ready
	  SprintingRocket:
		TNT1 A 0 A_JumpIfInventory("PowerTired", 0, "CantSprint")
		TNT1 A 0 A_PlaySound("Viktory/rpgfoley3", 7)
		VG16 A 1 Offset(0, 96) A_WeaponReady(WRF_NOFIRE|WRF_NOBOB)
	  SprintingLoopRocket:
		TNT1 A 0 A_JumpIfInventory("PowerTired", 0, "SprintingDoneRocket")
		TNT1 A 1 A_WeaponReady(WRF_NOFIRE)
	    TNT1 A 0 A_JumpIfInventory("IsSprinting", 0, "SprintingLoopRocket")
		Goto SprintingDoneRocket
	  SprintingDoneRocket:
		TNT1 A 0 A_GunFlash("StopAnim")
	    VG16 A 1 Offset(0, 96) A_WeaponReady(WRF_NOFIRE|WRF_NOBOB)
		Goto Ready
	  CantSprint:
		VG16 A 1 A_WeaponReady(WRF_ALLOWRELOAD|WRF_NOFIRE)
		Goto Ready
	  StopAnim:
		TNT1 A 0 
		Stop
	  Spawn:
		TNT1 A -1
		Stop
	  Zoom:
		"####" "#" 1 A_selectweapon("ViktorySyringe")
	  Goto Deselect
  }
}

ACTOR ViktoryRPGLoaded : Ammo
{
	Inventory.MaxAmount 1
	Inventory.RestrictedTo "ViktoryClass"
	+INVENTORY.IGNORESKILL
	-COUNTITEM
}

ACTOR ViktoryRPGRocket
{
  Radius 8
  Height 8
  Speed 70
  Scale 0.075
  Damage (115)
  Species "Player"
  Projectile
  ProjectileKickback 350
  Obituary "%o rode %k's rocket."
  States
  {
  Spawn:
    TNT1 A 0 A_PlaySound("Viktory/rpgfly", 1)
    VPJ1 M 1 Bright A_SpawnItemEX("ViktoryRPGSmoke", -25)
	TNT1 A 0 A_Weave(0.5, 0.5, 2, 2)
	TNT1 A 0 A_GiveInventory("ViktoryRPGArmed")
    Goto SpawnLoop
  SpawnLoop:
	VPJ1 M 1 Bright A_SpawnItemEX("ViktoryRPGSmoke", -25)
	TNT1 A 0 A_Weave(0.5, 0.5, 2, 2)
    Loop
  Death:
    TNT1 A 0 A_StopSound(1)
	TNT1 A 0 A_JumpIfInventory("ViktoryRPGArmed", 0, "DeathExplode")
	TNT1 A 0 A_PlaySound("Viktory/rpghit", 4)
	VPJ1 M 1 A_LowGravity
	TNT1 A 0 A_ChangeVelocity(-2, random(-2, 2), 3, CVF_RELATIVE|CVF_REPLACE)
	VPJ1 M 35
	VPJ1 MMMMMMMMMM 1 A_FadeOut(0.1)
	Stop
  DeathExplode:
	TNT1 A 0 A_ChangeFlag("EXTREMEDEATH", true)
	TNT1 A 0 A_RadiusGive("RPGKnockbackProc", 128, RGF_MONSTERS, 1)
	TNT1 A 0 A_PlaySound("Viktory/rpgexplode", 1)
    TNT1 A 0 A_Explode(75, 128, 1, 1, 96)
	TNT1 A 0 A_Explode(75, 128, 0, 1, 96)
	TNT1 A 0 A_SpawnItemEX("ViktoryRPGExplosion")
	TNT1 A 4 A_Quake(5, 4, 0, 384, "blank")
	TNT1 A 4 A_Quake(4, 4, 0, 384, "blank")
	TNT1 A 4 A_Quake(3, 4, 0, 384, "blank")
	TNT1 A 4 A_Quake(2, 4, 0, 384, "blank")
	TNT1 A 4 A_Quake(1, 4, 0, 384, "blank")
	TNT1 A 105
    Stop
  }
}

Actor ViktoryRPGArmed  : Inventory
{ 
}

ACTOR ViktoryRPGBackblast
{
  Radius 4
  Height 4
  Speed 0
  Scale 0.075
  Damage (0)
  Species "Player"
  Projectile
  ProjectileKickback 100
  Obituary "%o didn't watch %k's backblast. Idiot."
  States
  {
  Spawn:
	TNT1 A 0 NODELAY A_Warp(AAPTR_DEFAULT, -18, 0, 0, 0, WARPF_NOCHECKPOSITION)
	TNT1 A 1
  Death:
    TNT1 A 0 A_Explode(25, 64, 0, 1, 96)
	TNT1 A 0 A_Explode(25, 64, 0, 1, 96)
	TNT1 A 0 A_SpawnItemEX("ViktorySmallRPGExplosion", 0, 0, 0, 0, 0, 0, 0, SXF_TRANSFERPOINTERS)
    Stop
  }
}


Actor RPGKnockbackProc : CustomInventory
{
  states
  {
  Spawn:
    WSPP B 1 
	Stop
   Pickup:
    TNT1 A 0 A_ChangeVelocity(0, 0, 1000/mass, 0)
    Stop
  }
}

Actor ViktoryRPGExplosion
{
	+NOINTERACTION +NOTONAUTOMAP
	+CLIENTSIDEONLY +NONETID
	+FORCEXYBILLBOARD
	Scale 0.5
	States
	{
	Spawn:
		VPJ2 ABCDEFG 1 Bright A_SetScale(scalex+0.1)
		VPJ2 HIJKLMN 2 Bright A_SetScale(scalex+0.05)
		VPJ2 OPQRST 2 Bright A_SetScale(scalex+0.01)
		Stop
	}
}

Actor ViktorySmallRPGExplosion : ViktoryRPGExplosion
{
	Scale 0.15
	States
	{
	Spawn:
		VPJ2 ACEG 1 Bright A_Warp(AAPTR_TARGET, -18, 6, 36, 0, WARPF_NOCHECKPOSITION)
		VPJ2 HJLN 2 Bright A_Warp(AAPTR_TARGET, -18, 6, 36, 0, WARPF_NOCHECKPOSITION)
		VPJ2 OQS 2 Bright A_Warp(AAPTR_TARGET, -18, 6, 36, 0, WARPF_NOCHECKPOSITION)
		Stop
	}
}

ACTOR ViktoryRPGSmoke
{
  Scale 0.22
  Alpha 0.2
  RenderStyle Translucent
  +NOTELEPORT +NOTONAUTOMAP
  +CLIENTSIDEONLY
  +NONETID 
  +NOCLIP
  +NOGRAVITY
  States
  {
  Spawn:
    TNT1 A 0 NODELAY A_Jump(255,"T01","T02","T03")
	Goto T01
	T01:
    VPJ2 UUUU 1 Bright A_SetScale(scalex+0.01)
	VPJ2 UUUUUU 1 Bright A_SetScale(scalex+0.01)
	TNT1 A 0 A_FadeOut(0.05)
	VPJ2 UUUUUUUUUUU 1 Bright A_SetScale(scalex-0.005)
	TNT1 A 0 A_FadeOut(0.05)
	VPJ2 UUUUUUUU 1 Bright A_FadeOut(0.025)
	Stop
	T02:
	VPJ2 VVVV 1 Bright A_SetScale(scalex+0.01)
	VPJ2 VVVVVV 1 Bright A_SetScale(scalex+0.01)
	TNT1 A 0 A_FadeOut(0.05)
	VPJ2 VVVVVVVVVVV 1 Bright A_SetScale(scalex-0.005)
	TNT1 A 0 A_FadeOut(0.05)
	VPJ2 VVVVVVVV 1 Bright A_FadeOut(0.025)
	Stop
	T03:
	VPJ2 WWWW 1 Bright A_SetScale(scalex+0.01)
	VPJ2 WWWWWW 1 Bright A_SetScale(scalex+0.01)
	TNT1 A 0 A_FadeOut(0.05)
	VPJ2 WWWWWWWWWWW 1 Bright A_SetScale(scalex-0.005)
	TNT1 A 0 A_FadeOut(0.05)
	VPJ2 WWWWWWWW 1 Bright A_FadeOut(0.025)
	Stop
  }
}

ACTOR ViktoryRPGAmmo : Ammo
{
	Inventory.MaxAmount 30
	Ammo.BackpackMaxAmount 60
	Inventory.Amount 1
}

ACTOR ViktoryROKS : ViktoryWeapon
{
	Weapon.SelectionOrder 2500
	Weapon.AmmoUse 1
	Weapon.AmmoGive2 3
	Weapon.AmmoType2 "ViktoryROKSAmmo"
	Weapon.AmmoGive1 1
	Weapon.AmmoType "ViktoryROKSLoaded"
	Weapon.AmmoUse2 1
	Inventory.PickupMessage "You got a ROKS-3!"
	Obituary "%k killed %o with a  ROKS-3."
	Scale 0.2
	+WEAPON.AMMO_CHECKBOTH
	+WEAPON.NOAUTOFIRE
	+INVENTORY.NOSCREENFLASH
	Tag "ROKS-3"
	States
	{
	Ready:
		TNT1 A 0 A_TakeInventory("VikiShooting", 1)
	ReadyLoop:
		TNT1 A 0 A_JumpIfInventory("IsSprinting", 0, "Sprinting")
		VG22 E 1 A_WeaponReady(WRF_ALLOWRELOAD)
		Loop
	Deselect:
		TNT1 A 0 A_TakeInventory("BYOCCurrentlyReloading", 1)
		TNT1 A 0 A_GunFlash("StopAnim")
		TNT1 A 0 A_JumpIfInventory("VikiEquipped", 0, "DeselectAnim")
		Goto DeselectLoop
	DeselectAnim:
		VG22 EDCBA 2
	DeselectLoop:
		TNT1 A 0 A_TakeInventory("VikiEquipped")
		TNT1 A 0 A_Lower
		Loop
	  Select:
		TNT1 A 0 Offset(0, 32)
		TNT1 A 0 A_PlaySound("Viktory/roksfoley1", 7)
		TNT1 A 0 A_PlaySound("Viktory/draw_secondary", 6)
		VG22 ABCDE 2 A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
		TNT1 A 0 A_GiveInventory("VikiEquipped", 1)
		Goto Ready
	  Fire:
		TNT1 A 0 A_JumpIfInventory("ViktoryROKSLoaded", 1, 1)
		Goto Reload
		TNT1 A 0 A_GiveInventory("VikiShooting")
		TNT1 A 0 A_PlaySound("Viktory/roksstart", 6, 1)
		TNT1 A 0 A_PlaySound("Viktory/roksloop", 1, 1, 1)
		TNT1 A 0 A_GunFlash("AnimLoop")
		FireLoop:
		TNT1 A 0 A_JumpIfInventory("ViktoryROKSLoaded", 1, 1)
		Goto Reload
		TNT1 A 3
		TNT1 A 0 A_FireCustomMissile("ViktoryAmmoWaster", 0, 1, 0, 6)
		TNT1 A 0 A_AlertMonsters
		TNT1 A 0 A_Quake(1, 3, 0, 256, "blank")
		TNT1 A 0 A_SetAngle(angle+random(-1,1))
		TNT1 A 0 A_SetPitch(pitch+random(-1,1))
		TNT1 A 0 A_Refire("FireLoop")
		TNT1 A 0 A_StopSound(1)
		TNT1 A 0 A_StopSound(6)
		TNT1 A 0 A_PlaySound("Viktory/roksstop", 1, 1)
		TNT1 A 0 A_TakeInventory("VikiShooting")
		TNT1 A 0 A_GunFlash("StopAnim")
		TNT1 A 0 A_JumpIfNoAmmo("Reload")
		Goto Ready
	  AnimLoop:
		VG22 FGHI 1 Bright A_FireCustomMissile("ViktoryROKSFlame", 0, 0, 5, 6)
		Loop
	  Reload:
		TNT1 A 0 A_JumpIfInventory("ViktoryROKSLoaded", 0, "Ready")
		TNT1 A 0 A_JumpIfInventory("ViktoryROKSAmmo", 1, 2)
		VG22 E 1
		Goto Ready
	  ReloadStart:
		TNT1 A 0 A_giveInventory("BYOCCurrentlyReloading", 1)
		TNT1 A 0 A_giveInventory("ByocReloadOncePromptUsed", 1)
		TNT1 A 0 A_StopSound(1)
		TNT1 A 0 A_GunFlash("StopAnim")
		TNT1 A 0 A_PlaySound("Viktory/mosinfoley", 6)
		VG23 ABCDE 3 A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
		TNT1 A 0 A_PlaySound("Viktory/roksfoley1", 6)
		TNT1 A 0 A_PlaySound("Viktory/svdreloadout", 7)
		TNT1 A 0 A_TakeInventory("ViktoryROKSLoaded")
		VG23 FGHIJKLLLLLLLLLMNO 3 A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
		TNT1 A 0 A_PlaySound("Viktory/roksfoley2", 7)
		ReloadLooping:
		TNT1 A 0 A_TakeInventory("ViktoryROKSAmmo", 1)
		TNT1 A 0 A_GiveInventory("ViktoryROKSLoaded", 1)
		TNT1 A 0 A_JumpIfInventory("ViktoryROKSLoaded", 0, "ReloadEnd")
		TNT1 A 0 A_JumpIfInventory("ViktoryROKSAmmo", 1, "ReloadLooping")
		Goto ReloadEnd
		ReloadEnd:
		TNT1 A 0 A_TakeInventory("BYOCCurrentlyReloading", 1)
		TNT1 A 0 A_PlaySound("Viktory/roksfoley2", 6)
		TNT1 A 0 A_PlaySound("Viktory/svdreloadin", 7)
		VG23 PQRRRRRSTUVW 3 A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
		Goto Ready
	  Flash:
	    TNT1 A 0 A_SetAngle(angle+random(-2,2))
		TNT1 A 0 A_Quake(1, 3, 0, 256, "blank")
		TNT1 A 1 A_SetPitch(pitch-0.5)
		TNT1 AAA 1 A_SetPitch(pitch-2)
		TNT1 A 1 A_SetPitch(pitch-0.5)
		TNT1 AAA 1 A_SetPitch(pitch+0.5)
		Goto LightDone
	  PitchDown:
		TNT1 A 1 A_SetPitch(pitch+1)
		TNT1 AAAA 1 A_SetPitch(pitch-0.25)
		Goto LightDone
	  Sprinting:
		TNT1 A 0 A_JumpIfInventory("PowerTired", 0, "CantSprint")
		TNT1 A 0 A_PlaySound("Viktory/rpgfoley3", 7)
		VG22 E 1 Offset(0, 96) A_WeaponReady(WRF_NOFIRE|WRF_NOBOB)
		//TNT1 A 0 A_GunFlash("SprintingLoopAnim")
	  SprintingLoop:
		TNT1 A 0 A_JumpIfInventory("PowerTired", 0, "SprintingDone")
		TNT1 A 1 A_WeaponReady(WRF_NOFIRE)
	    TNT1 A 0 A_JumpIfInventory("IsSprinting", 0, "SprintingLoop")
		Goto SprintingDone
	  SprintingDone:
		TNT1 A 0 A_GunFlash("StopAnim")
	    VG22 E 1 Offset(0, 96) A_WeaponReady(WRF_NOFIRE|WRF_NOBOB)
		Goto Ready
	  CantSprint:
		VG22 E 1 A_WeaponReady(WRF_ALLOWRELOAD|WRF_NOFIRE)
		Goto Ready
	  StopAnim:
		TNT1 A 0 
		Stop
	  Spawn:
		TNT1 A -1
		Stop
	  Zoom:
		"####" "#" 1 A_selectweapon("ViktorySyringe")
	  Goto Deselect
  }
}

ACTOR ViktoryROKSLoaded : Ammo
{
	Inventory.MaxAmount 100
	Inventory.RestrictedTo "ViktoryClass"
	+INVENTORY.IGNORESKILL
	-COUNTITEM
}

ACTOR ViktoryAmmoWaster
{
  Radius 8
  Height 8
  Speed 18
  Damage (0)
  Projectile
  States
  {
  Spawn:
	TNT1 A 0
    Stop
  Death:
    TNT1 A 0 
    Stop
  }
}

ACTOR ViktoryROKSFlame
{
  Radius 8
  Height 8
  Speed 18
  Scale 0.1
  Damage (3)
  DamageType "Fire"
  +RIPPER
  +NOBOSSRIP
  +BLOODLESSIMPACT
  +NODAMAGETHRUST
  Species "Player"
    +MTHRUSPECIES
    +THRUSPECIES
	+PIERCEARMOR
	+FORCERADIUSDMG
  Projectile
  RenderStyle Add
  Alpha 0.6
  States
  {
  Spawn:
	TNT1 A 0 NODELAY A_Jump(128, "Mirror")
	VPJ5 ABCDEFG 3 Bright A_SetScale(scalex+0.1)
	VPJ5 HIJKLMN 2 Bright A_SetScale(scalex+0.05)
	VPJ5 OP 2 Bright A_SetScale(scalex+0.01)
    Stop
  xDeath:
	TNT1 AA 0 A_SpawnItemEX("ViktoryROKSFlameFXShort", random(-9,9), random(-9,9), random(-9,9), random(0,1), 0, random(3,7), random(0,360), SXF_TRANSFERPOINTERS)
	TNT1 A 0 A_Explode(4, 64, 0, 0, 64) //for fighting cybers
	TNT1 A 7
    Stop
  Death:
    TNT1 AA 0 A_SpawnItemEX("ViktoryROKSFlameFX", random(-9,9), random(-9,9), random(-9,9), 0, 0, 0, 0, SXF_TRANSFERPOINTERS)
	TNT1 A 0 A_Explode(12, 64, 1, 0, 64)
	TNT1 A 7
    Stop
  Mirror:
	VPJ5 ABCDEFG 3 Bright A_SetScale(scalex-0.1)
	VPJ5 HIJKLMN 2 Bright A_SetScale(scalex-0.05)
	VPJ5 OP 2 Bright A_SetScale(scalex-0.01)
    Stop
  }
}

ACTOR ViktoryROKSFlameFX
{
  Scale 0.1
  RenderStyle Add
  +NOCLIP
  +NOTONAUTOMAP
  +FORCEXYBILLBOARD
  +NOGRAVITY
  +NODAMAGETHRUST
  +PIERCEARMOR
  DamageType "Fire"
  Alpha 0.8
  States
  {
  Spawn:
    TNT1 A 0 NODELAY A_PlaySound("viktory/firelast", 1, 0.5, 1)
	VPJ3 ABCDE 2 Bright A_SetScale(scalex+0.05)
	TNT1 A 0 A_Explode(2, 16, 1, 0, 16, 0, 0)
	VPJ3 FGHIJ 2 Bright
	VPJ3 KLMNO 2 Bright
	TNT1 A 0 A_Explode(2, 16, 1, 0, 16, 0, 0)
	VPJ3 PQRST 2
	VPJ3 UVWXY 2
	TNT1 A 0 A_Explode(2, 16, 1, 0, 16, 0, 0)
	VPJ3 Z 2 Bright
	VPJ4 ABCD 2 Bright
	VPJ4 EF 2 Bright 
	VPJ3 ABC 2 Bright
	TNT1 A 0 A_Explode(2, 16, 1, 0, 16, 0, 0)
	VPJ3 DEFGH 2 Bright
	VPJ3 IJKLM 2 Bright
	TNT1 A 0 A_Explode(2, 16, 1, 0, 16, 0, 0)
	VPJ3 NOPQR 2 Bright
	VPJ3 STUVW 2 Bright
	TNT1 A 0 A_StopSound(1)
	TNT1 A 0 A_Explode(2, 16, 1, 0, 16, 0, 0)
	VPJ3 XYZAB 2 Bright A_Fadeout(0.2)
    Stop
  }
}

ACTOR ViktoryROKSFlameFXShort : ViktoryROKSFlameFX
{
  Scale 0.1
  RenderStyle Add
  +NOCLIP
  +NOTONAUTOMAP
  +FORCEXYBILLBOARD
  +NOGRAVITY
  +NODAMAGETHRUST
  +PIERCEARMOR
  DamageType "Fire"
  Alpha 0.8
  States
  {
  Spawn:
    TNT1 A 0 NODELAY A_PlaySound("viktory/firelast", 1, 0.5, 1)
	VPJ3 ABCDE 2 Bright A_SetScale(scalex+0.05)
	TNT1 A 0 A_Explode(2, 16, 1, 0, 16, 0, 0)
	VPJ3 FGHIJ 2 Bright A_Fadeout(0.2)
    Stop
  }
}

ACTOR ViktoryAntiFire : PowerRegeneration
{
  Powerup.Duration 18
  Powerup.Strength 0
}


ACTOR ViktoryFlameFX
{
  Scale 0.1
  RenderStyle Add
  +NOCLIP
  +NOINTERACTION +NOTONAUTOMAP
 +NONETID
	+FORCEXYBILLBOARD
  Alpha 0.8
  States
  {
  Spawn:
	VPJ3 ABCDE 2 Bright A_SetScale(scalex+0.05)
	VPJ3 FGHIJKLMNOPQ 2 Bright
	VPJ3 ABCDE 2 Bright A_Fadeout(0.2)
    Stop
  }
}

Actor ViktoryFireEffectsProc : CustomInventory
{
	+INVENTORY.QUIET
	States
	{
	Spawn:
		TNT1 A 0
		Loop
	Pickup:
		TNT1 AAAA 0 A_SpawnItemEX("ViktoryFlameFX", random(0, radius), 0, random(0, height), 0, 0, random(0,1), random(0, 360), SXF_NOCHECKPOSITION)
		Stop
	}
}

ACTOR ViktoryBigFlameFX
{
  Scale 1.2
  RenderStyle Add
  +NOCLIP
  +NOINTERACTION +NOTONAUTOMAP
 +NONETID
	+FORCEXYBILLBOARD
  Alpha 0.8
  States
  {
  Spawn:
	VPJ3 ABCDEFGHIJKLMNOPQRSTUVWXYZ 2 Bright
	VPJ4 ABCDEF 2 Bright A_Fadeout(0.2)
    Stop
  }
}


Actor ViktoryFireEffectsProc2 : CustomInventory
{
	+INVENTORY.QUIET
	States
	{
	Spawn:
		TNT1 A 0
		Loop
	Pickup:
		TNT1 A 0 A_SpawnItemEX("ViktoryBigFlameFX", 0, 0, 0, 0, 0, 0, 0, SXF_NOCHECKPOSITION)
		Stop
	}
}

ACTOR ViktoryBigFlameFX2 : ViktoryBigFlameFX
{
  States
  {
  Spawn:
	VPJ3 ABCDEFGHI 2 Bright A_ScaleVelocity(0.95)
	VPJ4 JKLMNOP 2 Bright A_Fadeout(0.2)
    Stop
  }
}

Actor ViktoryFireEffectsProc3 : CustomInventory
{
	+INVENTORY.QUIET
	States
	{
	Spawn:
		TNT1 A 0
		Loop
	Pickup:
		TNT1 A 0 A_SpawnItemEX("ViktoryBigFlameFX2", 0, 0, 0, 0, 0, random(3, 6), 0, SXF_NOCHECKPOSITION)
		Stop
	}
}



Actor IsOnFire  : Inventory
{ 
Inventory.MaxAmount 350
}

ACTOR ViktoryROKSAmmo : Ammo
{
	Inventory.MaxAmount 200
	Ammo.BackpackMaxAmount 400
	Inventory.Amount 1
}

ACTOR ViktoryTSAR : ViktoryWeapon
{
	Weapon.SelectionOrder 2500
	Weapon.AmmoUse 1
	Weapon.AmmoGive2 3
	Weapon.AmmoType2 "ViktoryTSARAmmo"
	Weapon.AmmoGive1 1
	Weapon.AmmoType "ViktoryTSARLoaded"
	Weapon.AmmoUse2 1
	Inventory.PickupMessage "You got a Mini-TSAR launcher!"
	Obituary "%k killed %o with a Mini-TSAR launcher."
	Scale 0.2
	+WEAPON.Alt_AMMO_OPTIONAL
	+WEAPON.AMMO_OPTIONAL
	+WEAPON.NOAUTOFIRE
	+INVENTORY.NOSCREENFLASH
	Tag "Mini-TSAR Launcher"
	States
	{
	Ready:
		TNT1 A 0 A_JumpIfInventory("ViktoryTSARLoaded", 0, "ReadyRocket")
		TNT1 A 0 A_JumpIfInventory("IsSprinting", 0, "Sprinting")
		VG26 A 1 A_WeaponReady(WRF_ALLOWRELOAD)
		Loop
	ReadyRocket:
		TNT1 A 0 A_JumpIfInventory("IsSprinting", 0, "SprintingRocket")
		VG24 A 1 A_WeaponReady(WRF_ALLOWRELOAD)
		Loop
	Deselect:
		TNT1 A 0 A_TakeInventory("BYOCCurrentlyReloading", 1)
		TNT1 A 0 A_GunFlash("StopAnim")
		TNT1 A 0 A_JumpIfInventory("VikiEquipped", 0, "DeselectAnim")
		Goto DeselectLoop
	DeselectAnim:
		TNT1 A 0 A_JumpIfInventory("ViktoryTSARLoaded", 0, "DeselectRocket")
		VG26 GFEDCB 3
	DeselectLoop:
		TNT1 A 0 A_TakeInventory("VikiEquipped")
		TNT1 A 0 A_Lower
		Loop
	DeselectRocket:
		VG24 GFEDCB 3
		Goto DeselectLoop
	  Select:
		TNT1 A 0 Offset(0, 32)
		TNT1 A 0 A_PlaySound("Viktory/rpgfoley1", 7)
		TNT1 A 0 A_PlaySound("Viktory/tsarequip", 6)
		TNT1 A 0 A_JumpIfInventory("ViktoryTSARLoaded", 0, "SelectRocket")
		VG26 BCDE 3 A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
		TNT1 A 0 A_PlaySound("Viktory/rpgfoley3", 5)
		VG26 FG 3 A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
		TNT1 A 0 A_GiveInventory("VikiEquipped", 1)
		Goto Ready
	  SelectRocket:
		VG24 BCDE 3 A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
		TNT1 A 0 A_PlaySound("Viktory/rpgfoley3", 5)
		VG24 FG 3 A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
		TNT1 A 0 A_GiveInventory("VikiEquipped", 1)
		Goto Ready
	  Fire:
		TNT1 A 0 A_JumpIfInventory("IsSprinting", 0, "Sprinting")
		TNT1 A 0 A_JumpIfInventory("ViktoryTSARLoaded", 1, 1)
		Goto Reload
		TNT1 A 0 A_PlaySound("Viktory/tsarfire", 1, 1)
		TNT1 A 0 A_GunFlash
		TNT1 A 0 A_FireCustomMissile("ViktoryTSARProjectile", 0, 1, 0, 6, 0, 8)
		TNT1 A 0 A_AlertMonsters
		VG25 ABC 3
		VG26 FG 3 
		TNT1 A 0 A_JumpIfNoAmmo("Reload")
		Goto Ready
	  Reload:
		TNT1 A 0 A_JumpIfInventory("ViktoryTSARLoaded", 0, "Ready")
		TNT1 A 0 A_JumpIfInventory("ViktoryTSARAmmo", 1, 2)
		VG26 A 1
		Goto Ready
		TNT1 A 0 A_PlaySound("Viktory/rpgfoley3", 7)
		TNT1 A 0 A_GiveInventory("BYOCCurrentlyReloading", 1)
		Tnt1 A 0 A_giveinventory("ByocReloadOncePromptUsed",1)
		VG25 CDEFGHIJKLMNO 4 A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
		TNT1 A 0 A_TakeInventory("ViktoryTSARAmmo", 1)
		TNT1 A 0 A_GiveInventory("ViktoryTSARLoaded", 1)
		TNT1 A 0 A_PlaySound("Viktory/tsarequip", 6)
		TNT1 A 0 A_PlaySound("Viktory/tsarreload", 5)
		VG25 PQRSTUV 4 A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
		TNT1 A 0 A_PlaySound("Viktory/rpgfoley3", 7)
		VG25 WXY 4 A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
		TNT1 A 0 A_TakeInventory("BYOCCurrentlyReloading", 1)
		Goto Ready
	  Flash:
	    TNT1 A 0 A_SetAngle(angle+random(-2,2))
		TNT1 A 0 A_Quake(1, 3, 0, 256, "blank")
		TNT1 A 1 A_SetPitch(pitch-0.5)
		TNT1 AAA 1 A_SetPitch(pitch-2)
		TNT1 A 1 A_SetPitch(pitch-0.5)
		TNT1 AAA 1 A_SetPitch(pitch+0.5)
		Goto LightDone
	  PitchDown:
		TNT1 A 1 A_SetPitch(pitch+1)
		TNT1 AAAA 1 A_SetPitch(pitch-0.25)
		Goto LightDone
	  Sprinting:
		TNT1 A 0 A_JumpIfInventory("PowerTired", 0, "CantSprint")
		TNT1 A 0 A_PlaySound("Viktory/rpgfoley3", 7)
		VG26 A 1 Offset(0, 96) A_WeaponReady(WRF_NOFIRE|WRF_NOBOB)
		//TNT1 A 0 A_GunFlash("SprintingLoopAnim")
	  SprintingLoop:
		TNT1 A 0 A_JumpIfInventory("PowerTired", 0, "SprintingDone")
		TNT1 A 1 A_WeaponReady(WRF_NOFIRE)
	    TNT1 A 0 A_JumpIfInventory("IsSprinting", 0, "SprintingLoop")
		Goto SprintingDone
	  SprintingDone:
		TNT1 A 0 A_GunFlash("StopAnim")
	    VG26 A 1 Offset(0, 96) A_WeaponReady(WRF_NOFIRE|WRF_NOBOB)
		Goto Ready
	  SprintingRocket:
		TNT1 A 0 A_JumpIfInventory("PowerTired", 0, "CantSprint")
		TNT1 A 0 A_PlaySound("Viktory/rpgfoley3", 7)
		VG24 A 1 Offset(0, 96) A_WeaponReady(WRF_NOFIRE|WRF_NOBOB)
	  SprintingLoopRocket:
		TNT1 A 0 A_JumpIfInventory("PowerTired", 0, "SprintingDoneRocket")
		TNT1 A 1 A_WeaponReady(WRF_NOFIRE)
	    TNT1 A 0 A_JumpIfInventory("IsSprinting", 0, "SprintingLoopRocket")
		Goto SprintingDoneRocket
	  SprintingDoneRocket:
		TNT1 A 0 A_GunFlash("StopAnim")
	    VG24 A 1 Offset(0, 96) A_WeaponReady(WRF_NOFIRE|WRF_NOBOB)
		Goto Ready
	  CantSprint:
		VG24 A 1 A_WeaponReady(WRF_ALLOWRELOAD|WRF_NOFIRE)
		Goto Ready
	  AltFire:
		TNT1 A 0 A_JumpIfInventory("ViktoryTSARLoaded", 0, "AltFireRocket")
		VG26 A 1 Offset(0, 96)
		Goto PutGasmask
	  AltFireRocket:
		VG24 A 1 Offset(0, 96)
		Goto PutGasmask
	  PutGasmask:
		TNT1 A 0 A_JumpIfInventory("ViktoryGasmask", 0, "PutGasmaskOff")
		TNT1 A 0 ACS_NamedExecuteWithResult("PutGasmaskOn", 0)
		TNT1 A 0 A_GiveInventory("ViktoryGasmask", 1)
		TNT1 A 0 A_GiveInventory("PowerNoPoison", 1)
		TNT1 A 35 A_PlaySound("Viktory/gasmaskfidget1", 7)
		TNT1 A 70 A_PlaySound("Viktory/gasmaskfidget2", 6)
		TNT1 A 35 A_PlaySound("Viktory/gasmaskfidget3", 5)
		Goto Ready
	   PutGasmaskOff:
		TNT1 A 0 ACS_NamedExecuteWithResult("PutGasmaskOff", 0)
		TNT1 A 0 A_TakeInventory("ViktoryGasmask", 1)
		TNT1 A 0 A_TakeInventory("PowerNoPoison", 1)
		TNT1 A 65 A_PlaySound("Viktory/gasmaskfidget4", 7)
		Goto Ready
	  StopAnim:
		TNT1 A 0 
		Stop
	  Spawn:
		TNT1 A -1
		Stop
	  Zoom:
		"####" "#" 1 A_selectweapon("ViktorySyringe")
	  Goto Deselect
  }
}

ACTOR ViktoryGasmask : Inventory
{
	Inventory.MaxAmount 1
	Inventory.RestrictedTo "ViktoryClass"
}

ACTOR PowerNoPoison : PowerProtection
{
  DamageFactor "Poison", 0.0
  Powerup.Duration 0x7FFFFFFF
}

ACTOR ViktoryTSARLoaded : Ammo
{
	Inventory.MaxAmount 1
	Inventory.RestrictedTo "ViktoryClass"
	+INVENTORY.IGNORESKILL
	-COUNTITEM
}

ACTOR ViktoryTSARProjectile
{
  Radius 8
  Height 8
  Speed 20
  Gravity 0.5
  Scale 0.15
  Damage (500)
  +FORCERADIUSDMG
  +EXTREMEDEATH
  Species "Player"
  Projectile
  ProjectileKickback 350
  -NOGRAVITY
  Obituary "%o hailed to the %k's TSAR."
  States
  {
  Spawn:
    VPJ1 N 1 Bright A_SpawnItemEX("ViktoryRPGSmoke", -25)
    Loop
  Death:
	TNT1 A 0 A_RadiusGive("RPGKnockbackProc", 128, RGF_MONSTERS, 1)
	TNT1 A 0 A_PlaySound("Viktory/tsarexplode", 1, 1.0, 0, 0.3)
    TNT1 A 0 A_Explode(200, 768, 1, 1, 256)
	TNT1 A 0 A_Explode(2500, 1024, 0, 1, 512)
	TNT1 A 0 A_SpawnItemEX("ViktoryTSARExplosion")
	TNT1 A 0 A_SpawnItemEX("ViktoryTSARExplosionAlt")
	TNT1 A 0 A_SpawnItemEX("ViktoryTSARExplosionSecond", 0, 0, 0, 15, 0, 0, 0)
	TNT1 A 0 A_SpawnItemEX("ViktoryTSARExplosionSecond", 0, 0, 0, 15, 0, 0, 22)
	TNT1 A 0 A_SpawnItemEX("ViktoryTSARExplosionSecond", 0, 0, 0, 15, 0, 0, 45)
	TNT1 A 0 A_SpawnItemEX("ViktoryTSARExplosionSecond", 0, 0, 0, 15, 0, 0, 67)
	TNT1 A 0 A_SpawnItemEX("ViktoryTSARExplosionSecond", 0, 0, 0, 15, 0, 0, 90)
	TNT1 A 0 A_SpawnItemEX("ViktoryTSARExplosionSecond", 0, 0, 0, 15, 0, 0, 112)
	TNT1 A 0 A_SpawnItemEX("ViktoryTSARExplosionSecond", 0, 0, 0, 15, 0, 0, 135)
	TNT1 A 0 A_SpawnItemEX("ViktoryTSARExplosionSecond", 0, 0, 0, 15, 0, 0, 157)
	TNT1 A 0 A_SpawnItemEX("ViktoryTSARExplosionSecond", 0, 0, 0, 15, 0, 0, 180)
	TNT1 A 0 A_SpawnItemEX("ViktoryTSARExplosionSecond", 0, 0, 0, 15, 0, 0, 202)
	TNT1 A 0 A_SpawnItemEX("ViktoryTSARExplosionSecond", 0, 0, 0, 15, 0, 0, 225)
	TNT1 A 0 A_SpawnItemEX("ViktoryTSARExplosionSecond", 0, 0, 0, 15, 0, 0, 247)
	TNT1 A 0 A_SpawnItemEX("ViktoryTSARExplosionSecond", 0, 0, 0, 15, 0, 0, 270)
	TNT1 A 0 A_SpawnItemEX("ViktoryTSARExplosionSecond", 0, 0, 0, 15, 0, 0, 292)
	TNT1 A 0 A_SpawnItemEX("ViktoryTSARExplosionSecond", 0, 0, 0, 15, 0, 0, 315)
	TNT1 A 0 A_SpawnItemEX("ViktoryTSARExplosionSecond", 0, 0, 0, 15, 0, 0, 337)
	TNT1 A 0 A_SpawnItemEX("ViktoryToxicProjectile", 0, 0, 0, 5, 0, 10, 0, SXF_TRANSFERPOINTERS)
	TNT1 A 0 A_SpawnItemEX("ViktoryToxicProjectile", 0, 0, 0, 5, 0, 10, 90, SXF_TRANSFERPOINTERS)
	TNT1 A 0 A_SpawnItemEX("ViktoryToxicProjectile", 0, 0, 0, 5, 0, 10, 180, SXF_TRANSFERPOINTERS)
	TNT1 A 0 A_SpawnItemEX("ViktoryToxicProjectile", 0, 0, 0, 5, 0, 10, 270, SXF_TRANSFERPOINTERS)
	TNT1 A 16 A_Quake(9, 16, 0, 2048, "blank")
	TNT1 A 16 A_Quake(7, 16, 0, 2048, "blank")
	TNT1 A 16 A_Quake(5, 16, 0, 2048, "blank")
	TNT1 A 16 A_Quake(3, 16, 0, 2048, "blank")
	TNT1 A 16 A_Quake(1, 16, 0, 2048, "blank")
	TNT1 A 105
    Stop
  }
}

Actor ViktoryTSARExplosion
{
	+NOINTERACTION +NOTONAUTOMAP
	+CLIENTSIDEONLY +NONETID
	+FORCEXYBILLBOARD
    RenderStyle "Add"
    Alpha 0.9
	Scale 1.0
	States
	{
	Spawn:
		VPJ6 AAABBBCCCDDD 1 Bright A_SetScale(scalex+0.1)
		VPJ6 EEEEEEFFFFGGGGHHHHHIIIIIJJJJJJKKKKKLLLLLMMMMNNNN 1 Bright A_SetScale(scalex+0.025)
		VPJ6 OOOOPPPPQQQQRRRRSSSSTTTTUUU 1 Bright A_SetScale(scalex+0.01)
		Stop
	}
}

Actor ViktoryTSARExplosionAlt
{
	+NOINTERACTION +NOTONAUTOMAP
	+CLIENTSIDEONLY +NONETID
	+FORCEXYBILLBOARD
    RenderStyle "Add"
    Alpha 0.9
	Scale 1.0
	States
	{
	Spawn:
		VPJ7 AAABBBCCCDDD 1 Bright A_SetScale(scalex+0.1)
		VPJ7 EEEEEEFFFFGGGGHHHHHIIIIIJJJJJJKKKKKLLLLLMMMMNNNN 1 Bright A_SetScale(scalex+0.025)
		VPJ7 OOOOPPPPQQQQ 1 Bright A_SetScale(scalex+0.01)
		Stop
	}
}


Actor ViktoryTSARExplosionSecond
{
	+NOINTERACTION +NOTONAUTOMAP
	+CLIENTSIDEONLY +NONETID
	+FORCEXYBILLBOARD
	RenderStyle "Add"
    Alpha 0.9
	Scale 0.5
	States
	{
	Spawn:
		VPJ2 AAABBBCCCDDDEEEFFFGGG 1 Bright A_SetScale(scalex+0.085)
		VPJ2 HIJKLMN 3 Bright A_ScaleVelocity(0.95)
		VPJ2 OPQRST 3 Bright
		Stop
	}
}

ACTOR ViktoryToxicProjectile
{
  Radius 8
  Height 8
  Speed 20
  Gravity 0.5
  Scale 0.15
  Damage (0)
  +FORCERADIUSDMG
  +NODAMAGETHRUST
  +PIERCEARMOR
  +BLOODLESSIMPACT
  BounceCount 4
  BounceType "Hexen"
  DamageType "Poison"
  Species "Player"
  Projectile
  -NOGRAVITY
  Obituary "%o hailed to the %k's TSAR."
  States
  {
  Spawn:
    TNT1 A 1
    Loop
  Death:
	TNT1 A 185
	TNT1 A 0 A_SpawnItemEX("ViktoryToxicFX", 0, 0, 35)
    TNT1 AAAAAAAAAAAAAAAAAAAA 35 A_Explode(10, 768, 1, 1, 256) //20 seconds
	TNT1 AAAAAAAAAAAAAAAAAAAA 35 A_Explode(10, 768, 1, 1, 256) //20 seconds
	TNT1 AAAAAAAAAAAAAAAAAAAA 35 A_Explode(10, 768, 1, 1, 256) //20 seconds
    Stop
  }
}

ACTOR ViktoryToxicFX
{
  Scale 1.2
  RenderStyle Add
  +NOCLIP
  +NOINTERACTION +NOTONAUTOMAP
 +NONETID
	+FORCEXYBILLBOARD
  Alpha 0.1
  States
  {
  Spawn:
    VPJ8 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 1 Bright A_FadeIn(0.0125)
	VPJ8 ABCDEABCDEABCDEABCDE 18 Bright A_SpawnItemEX("ViktoryToxicFX2", 0, 0, 0, random(5, 10), 0, random(-2, 2), random(0, 360)) //10 seconds
	VPJ8 ABCDEABCDEABCDEABCDE 18 Bright A_SpawnItemEX("ViktoryToxicFX2", 0, 0, 0, random(5, 10), 0, random(-2, 2), random(0, 360)) //10 seconds
	VPJ8 ABCDEABCDEABCDEABCDE 18 Bright A_SpawnItemEX("ViktoryToxicFX2", 0, 0, 0, random(5, 10), 0, random(-2, 2), random(0, 360)) //10 seconds
	VPJ8 ABCDEABCDEABCDEABCDE 18 Bright A_SpawnItemEX("ViktoryToxicFX2", 0, 0, 0, random(5, 10), 0, random(-2, 2), random(0, 360)) //10 seconds
	VPJ8 ABCDEABCDEABCDEABCDE 18 Bright A_SpawnItemEX("ViktoryToxicFX2", 0, 0, 0, random(5, 10), 0, random(-2, 2), random(0, 360)) //10 seconds
	VPJ8 ABCDEABCDEABCDEABCDE 18 Bright A_SpawnItemEX("ViktoryToxicFX2", 0, 0, 0, random(5, 10), 0, random(-2, 2), random(0, 360)) //10 seconds
	VPJ8 AAAAAAAAAAAAAAAAAAAA 1 Bright A_Fadeout(0.05)
    Stop
  }
}

ACTOR ViktoryToxicFX2
{
  Scale 0.8
  RenderStyle Add
  -NOCLIP
  +NOINTERACTION +NOTONAUTOMAP
 +NONETID
	+FORCEXYBILLBOARD
  Alpha 0.1
  States
  {
  Spawn:
    VPJ8 AAAAAAAAAAAAAA 1 Bright A_FadeIn(0.05)
	VPJ8 ABCDEABCDE 18 Bright A_ScaleVelocity(0.6) //5 seconds
	VPJ8 ABCDEABCDE 18 Bright //5 seconds
	VPJ8 AAAAAAAAAAAAAAAAAAAA 1 Bright A_Fadeout(0.05)
    Stop
  }
}

ACTOR ViktoryAntiPoison : PowerRegeneration
{
  Powerup.Duration 35
  Powerup.Strength 0
}

ACTOR ViktoryTSARAmmo : Ammo
{
	Inventory.MaxAmount 5
	Ammo.BackpackMaxAmount 7
	Inventory.Amount 1
}

ACTOR ViktoryFragGrenade : ViktoryWeapon
{
	Weapon.AmmoGive 1
	Weapon.AmmoType "ViktoryFragGrenades"
	Weapon.AmmoUse 1
	Weapon.SelectionOrder 2500
	Weapon.KickBack 200
	Inventory.PickupMessage "You got an Frag Grenade!"
	Obituary "%k killed %o with a Frag Grenade."
	Scale 0.2
	+INVENTORY.NOSCREENFLASH
	Tag "Frag Grenade"
	States
	{
	ReadyGrenade:
		VG28 D 1 A_WeaponReady
		Loop
	Deselect:
		TNT1 A 0 A_GunFlash("StopAnim")
		TNT1 A 0 A_JumpIfInventory("VikiEquipped", 0, "DeselectAnim")
		Goto DeselectLoop
	DeselectAnim:
		VG28 CBA 2
		TNT1 A 2
	DeselectLoop:
		TNT1 A 0 A_TakeInventory("VikiEquipped")
		TNT1 A 0 A_Lower
		Loop
	Select:
		TNT1 A 0 Offset(0, 32)
		TNT1 A 0 A_PlaySound("Viktory/grenadeequip", 6)
		TNT1 A 0 A_JumpIfInventory("ViktoryFragGrenades", 1, "SelectGrenade")
	  Ready:
		TNT1 A 0 A_TakeInventory("VikiEquipped", 1)
	  ReadyLoop:
		TNT1 A 1 A_WeaponReady
		Loop
	  SelectGrenade:
		TNT1 A 0 Offset(0, 32)
		TNT1 A 0 A_PlaySound("Viktory/grenadeequip", 6)
		TNT1 A 3
		VG28 ABC 2 A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
		TNT1 A 0 A_GiveInventory("VikiEquipped", 1)
		Goto ReadyGrenade
	  Fire:
		VG28 CBA 1
		TNT1 A 0 A_PlaySound("Viktory/vikipinpull", 1)
		TNT1 A 10
	FireLoop:
		TNT1 A 0 A_JumpIfInventory("ViktoryGrenadeCook", 0, "Toss")
		TNT1 A 0 A_GiveInventory("ViktoryGrenadeCook", 1)
		TNT1 A 1
		TNT1 A 1 A_Refire("FireLoop")
	Toss:
		TNT1 A 0 A_GunFlash
		TNT1 A 0 A_FireCustomMissile("ViktoryFragProjectile", 0, 1, 0, 6)
		TNT1 A 0 A_PlaySound("viktory/hegrenadetoss", 1)
		TNT1 A 0 A_PlaySound("viktory/vikishovelswing1", 6)
		TNT1 A 0 A_TakeInventory("VikiEquipped", 1)
		VG28 EFGHIJK 2
		TNT1 A 10 A_WeaponReady(WRF_NOFIRE)
		TNT1 A 0 A_GiveInventory("VikiEquipped", 1)
		TNT1 A 0 A_TakeInventory("ViktoryGrenadeCook", 140)
		Goto Select
	  Flash:
		TNT1 AA 1 A_SetPitch(pitch+0.75)
		TNT1 AAAAAA 1 A_SetPitch(pitch-0.25)
		Goto LightDone
	  StopAnim:
		TNT1 A 0 
		Stop
	  Spawn:
		TNT1 A -1
		Stop
	  Zoom:
		"####" "#" 1 A_selectweapon("ViktorySyringe")
	  Goto Deselect
  }
}

ACTOR ViktoryFragGrenades : Ammo
{
	Inventory.MaxAmount 10
	Ammo.BackpackMaxAmount 10
	Inventory.Amount 1
}

ACTOR ViktoryGrenadeCook : Inventory
{
	Inventory.MaxAmount 140
	Inventory.Amount 1
	Inventory.RestrictedTo "ViktoryClass"
}

ACTOR ViktoryFragProjectile
{
	Radius 8
	Height 8
	Speed 20
	Scale 0.075
	Gravity 0.4
	BounceFactor 0.25
	Species "Player"
	BounceType Hexen
	BounceSound "Viktory/hegrenadebounce"
	+BOUNCEAUTOOFFFLOORONLY
	+BOUNCEONACTORS
	Projectile
  	-NOGRAVITY
	Obituary "%k killed %o with a Frag Grenade."
	var int user_timer;
	States
	{
	Spawn: 
    TNT1 A 0 NODELAY 
	TNT1 A 0 A_SetUserVar("user_timer", 140)
	Goto CalculateCook
	CalculateCook:
	TNT1 A 0 A_TakeInventory("ViktoryGrenadeCook", 1, 0, AAPTR_TARGET)
	TNT1 A 0 A_SetUserVar("user_timer", user_timer-1)
	TNT1 A 0 A_JumpIfInventory("ViktoryGrenadeCook", 1, "CalculateCook", AAPTR_TARGET)
	Goto StartFlying
	Death:
	StartFlying:
    VPJ9 C 1 A_SetUserVar("user_timer", user_timer-1)
	TNT1 A 0 A_JumpIf(user_timer <= 0, "RealDeath")
	Loop
	RealDeath:
		TNT1 A 0 A_ChangeFlag("EXTREMEDEATH", true)
		TNT1 A 0 A_NoGravity
		TNT1 A 0 A_RadiusGive("RPGKnockbackProc", 128, RGF_MONSTERS, 1)
		TNT1 A 0 A_PlaySound("Viktory/hegrenadeexplode", 1)
		TNT1 A 0 A_Explode(50, 256, 1, 1, 156)
		TNT1 A 0 A_Explode(150, 256, 0, 1, 156)
		TNT1 A 0 A_SpawnItemEX("ViktoryRPGExplosion")
		TNT1 A 4 A_Quake(5, 4, 0, 384, "blank")
		TNT1 A 4 A_Quake(4, 4, 0, 384, "blank")
		TNT1 A 4 A_Quake(3, 4, 0, 384, "blank")
		TNT1 A 4 A_Quake(2, 4, 0, 384, "blank")
		TNT1 A 4 A_Quake(1, 4, 0, 384, "blank")
    Stop
  }
}

ACTOR ViktoryFlashbang : ViktoryWeapon
{
	Weapon.AmmoGive 1
	Weapon.AmmoType "ViktoryFlashbangs"
	Weapon.AmmoUse 1
	Weapon.SelectionOrder 2500
	Weapon.KickBack 200
	Inventory.PickupMessage "You got a Flashbang!"
	Obituary "%k killed %o with a Flashbang."
	Scale 0.2
	+INVENTORY.NOSCREENFLASH
	Tag "Flashbang"
	States
	{
	ReadyGrenade:
		VG29 D 1 A_WeaponReady(WRF_ALLOWZOOM)
		Loop
	Deselect:
		TNT1 A 0 A_GunFlash("StopAnim")
		TNT1 A 0 A_JumpIfInventory("VikiEquipped", 0, "DeselectAnim")
		Goto DeselectLoop
	DeselectAnim:
		VG29 CBA 2
		TNT1 A 2
	DeselectLoop:
		TNT1 A 0 A_TakeInventory("VikiEquipped")
		TNT1 A 0 A_Lower
		Loop
	  Select:
		TNT1 A 0 Offset(0, 32)
		TNT1 A 0 A_PlaySound("Viktory/grenadeequip", 6)
		TNT1 A 0 A_JumpIfInventory("ViktoryFlashbangs", 1, "SelectGrenade")
	  Ready:
		TNT1 A 0 A_TakeInventory("VikiEquipped", 1)
	  ReadyLoop:
		TNT1 A 1 A_WeaponReady(WRF_ALLOWZOOM)
		Loop
	  SelectGrenade:
		TNT1 A 3
		VG29 ABC 2 A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
		TNT1 A 0 A_GiveInventory("VikiEquipped", 1)
		Goto ReadyGrenade
	  Fire:
		VG29 CBA 1
		TNT1 A 0 A_PlaySound("Viktory/vikipinpull", 1)
		TNT1 A 10
	FireLoop:
		TNT1 A 0 A_JumpIfInventory("ViktoryGrenadeCook", 0, "Toss")
		TNT1 A 0 A_GiveInventory("ViktoryGrenadeCook", 1)
		TNT1 A 1
		TNT1 A 1 A_Refire("FireLoop")
	Toss:
		TNT1 A 0 A_GunFlash
		TNT1 A 0 A_FireCustomMissile("ViktoryFlashbangProjectile", 0, 1, 0, 6)
		TNT1 A 0 A_PlaySound("viktory/hegrenadetoss", 1)
		TNT1 A 0 A_PlaySound("viktory/vikishovelswing1", 6)
		TNT1 A 0 A_TakeInventory("VikiEquipped", 1)
		VG28 EFGHIJK 2
		TNT1 A 10 A_WeaponReady(WRF_NOFIRE)
		TNT1 A 0 A_GiveInventory("VikiEquipped", 1)
		TNT1 A 0 A_TakeInventory("ViktoryGrenadeCook", 140)
		Goto Select
	Zoom:
		"####" "#" 1 A_selectweapon("ViktorySyringe")
	  Goto Deselect
	  Flash:
		TNT1 AA 1 A_SetPitch(pitch+0.75)
		TNT1 AAAAAA 1 A_SetPitch(pitch-0.25)
		Goto LightDone
	  StopAnim:
		TNT1 A 0 
		Stop
	  Spawn:
		TNT1 A -1
		Stop
  }
}

ACTOR ViktoryFlashbangs : Ammo
{
	Inventory.MaxAmount 10
	Ammo.BackpackMaxAmount 10
	Inventory.Amount 1
}

ACTOR ViktoryFlashbangProjectile : ViktoryFragProjectile
{
	Obituary "%k killed %o with a Flashbang."
	States
	{
	Spawn: 
    TNT1 A 0 NODELAY 
	TNT1 A 0 A_SetUserVar("user_timer", 140)
	Goto CalculateCook
	CalculateCook:
	TNT1 A 0 A_TakeInventory("ViktoryGrenadeCook", 1, 0, AAPTR_TARGET)
	TNT1 A 0 A_SetUserVar("user_timer", user_timer-1)
	TNT1 A 0 A_JumpIfInventory("ViktoryGrenadeCook", 1, "CalculateCook", AAPTR_TARGET)
	Goto StartFlying
	Death:
	StartFlying:
    VPJ9 A 1 A_SetUserVar("user_timer", user_timer-1)
	TNT1 A 0 A_JumpIf(user_timer <= 0, "RealDeath")
	Loop
	RealDeath:
	TNT1 A 0 A_NoGravity
	TNT1 A 0 A_SpawnItemEX("ViktoryFlashExplosion")
	TNT1 A 0 A_RadiusGive("FlashbangMonsterProc", 512, RGF_MONSTERS, 1)
	TNT1 A 0 A_RadiusGive("FlashbangPlayerProc", 512, RGF_PLAYERS, 1)
	TNT1 A 0 A_PlaySound("Viktory/flashbang1", 1, 1.0, 0, 0.33)
	TNT1 A 35
    Stop
  }
}

Actor ViktoryFlashExplosion
{
	+NOINTERACTION +NOTONAUTOMAP
	+CLIENTSIDEONLY +NONETID
	+FORCEXYBILLBOARD
	Scale 0.5
	States
	{
	Spawn:
		VPJ9 DDDDDDDDD 1 Bright A_SetScale(scalex+0.2)
		SpawnLoop:
		VPJ9 D 1 Bright A_SetScale(scalex+0.2)
		TNT1 A 0 A_FadeOut(0.05)
		Loop
	}
}

ACTOR ViktoryFlashbangTimer : Inventory
{
	Inventory.MaxAmount 350
	Inventory.Amount 1
}

ACTOR PowerTimerFlash : PowerSpeed
{
  Powerup.Duration 69
  Speed 1.0
}

Actor FlashbangMonsterProc : CustomInventory
{
  states
  {
  Spawn:
    TNT1 A 0 
	Stop
   Pickup:
    TNT1 A 0 ACS_NamedExecuteWithResult("FlashBangStun")
    Stop
  }
}

Actor FlashbangPlayerProc : CustomInventory
{
  states
  {
  Spawn:
    TNT1 A 0 
	Stop
   Pickup:
    TNT1 A 0 A_GiveInventory("PowerTimerFlash", 1)
    TNT1 A 0 ACS_NamedExecuteWithResult("FlashBangPlayerStun")
    Stop
  }
}

ACTOR ViktorySyringe : ViktoryWeapon
{
	Weapon.SelectionOrder 2500
	Weapon.AmmoUse 100
	Weapon.AmmoGive1 50
	Weapon.AmmoType "ViktorySyringeCharge"
	Weapon.KickBack 200
	Inventory.PickupMessage "You got a syringe!"
	Obituary "%k killed %o with a syringe."
	Scale 0.2
	+WEAPON.AMMO_OPTIONAL
	+INVENTORY.NOSCREENFLASH
	Tag "Syringe"
	States
	{
	Ready:
		TNT1 A 0 A_FireBullets(0,0,1,0,"ViktoryAllyHPCheck",FBF_NOFLASH,96)
		VG30 D 1 A_WeaponReady
		Loop
	Deselect:
		TNT1 A 0 A_GunFlash("StopAnim")
		TNT1 A 0 A_JumpIfInventory("VikiEquipped", 0, "DeselectAnim")
		Goto DeselectLoop
	DeselectAnim:
		VG30 CBA 2
		TNT1 A 2
	DeselectLoop:
		TNT1 A 0 A_TakeInventory("VikiEquipped")
		TNT1 A 0 A_Lower
		Loop
	  Select:
		TNT1 A 0 Offset(0, 32)
		TNT1 A 0 A_PlaySound("Viktory/m1895equip", 6)
		TNT1 A 3
		VG30 ABC 2 A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
		TNT1 A 0 A_GiveInventory("VikiEquipped", 1)
		Goto Ready
	  Cant:
		VG30 D 1
		Goto Ready
      Fire:
		TNT1 A 0 A_JumpIfInventory("ViktorySyringeCharge", 40, "AttemptHeal")
		Goto Cant
	  AttemptHeal:
	    TNT1 A 0 A_FireBullets(0,0,1,0,"ViktoryAllyCheck",FBF_NOFLASH,96)
		TNT1 A 0 A_JumpIfInventory("ViktoryConfirmedHeal", 0, "HealTeammate")
		VG30 D 1 
		TNT1 A 0 A_Refire
		Goto Cant
		HealTeammate:
		TNT1 A 0 A_TakeInventory("ViktorySyringeCharge", 40)
		TNT1 A 0 A_PlaySound("Viktory/ksfoley2", 7)
		VG31 ABCDEFG 1
		TNT1 A 0 A_PlaySound("viktory/syringeuse", 1)
		VG31 HIJKLM 3
		TNT1 A 0 A_TakeInventory("ViktoryConfirmedHeal")
		Goto Ready
	  AltFire:
		TNT1 A 0 A_JumpIfInventory("ViktorySyringeCharge", 100, 1)
		Goto Cant
		TNT1 A 0 A_PlaySound("Viktory/ksfoley2", 7)
		TNT1 A 0 A_giveinventory("ViktorySyringePromptUsed")
		VG32 ABCDEFGH 3 
		TNT1 A 0 A_PlaySound("viktory/syringeuse", 1)
		TNT1 A 0 A_TakeInventory("ViktorySyringePromptShowtime", 1)
		TNT1 A 0 A_TakeInventory("ViktorySyringeCharge", 100)
		TNT1 A 0 A_SetBlend("Green", 0.2, 18)
		TNT1 A 0 ACS_NamedExecuteWithResult("SyringeHealProcess")
		TNT1 A 0 A_GunFlash("PitchDown")
		VG32 IJKL 3
		VG32 M 20
		VG32 NOP 3
		VG32 Q 14
		VG32 RS 3
		Goto Ready
	  PitchUp:
		TNT1 A 1 A_SetPitch(pitch-0.75)
		TNT1 AAA 1 A_SetPitch(pitch+0.25)
		Goto LightDone
	  PitchDown:
		TNT1 A 1 A_SetPitch(pitch+0.75)
		TNT1 AAA 1 A_SetPitch(pitch-0.25)
		Goto LightDone
	  StopAnim:
		TNT1 A 0 
		Stop
	  Spawn:
		TNT1 A -1
		Stop
  }
}

ACTOR ViktorySyringeCharge : Ammo
{
	Inventory.MaxAmount 125
	Ammo.BackpackMaxAmount 125
	Inventory.Amount 1
}

ACTOR ViktoryAllyCheck //THANKS BASINGA
{
	+NOBLOCKMAP
	+NOGRAVITY
	+RANDOMIZE
	+PUFFONACTORS
	+BLOODLESSIMPACT
	+bright
	+Painless
	+HitTracer
	+PUFFGETSOWNER
	+ForceAllyCollision
	States
	{
	Spawn:
		TNT1 A 1
	XDeath:
		TNT1 A 0 A_JumpIfInventory("IsPlayer", 0, "Heal", AAPTR_TRACER)
	Death:
		TNT1 A 0
	Stop
	Heal:
		TNT1 A 0 A_GiveInventory("ViktoryHealPlayerProc",1,AAPTR_TRACER)
		TNT1 A 0 A_GiveInventory("ViktoryConfirmedHeal",1,AAPTR_TARGET)
    Stop
  }
}

ACTOR ViktoryAllyHPCheck : ViktoryAllyCheck
{
	+NOBLOCKMAP
	+NOGRAVITY
	+RANDOMIZE
	+PUFFONACTORS
	+BLOODLESSIMPACT
	+bright
	+Painless
	+HitTracer
	+PUFFGETSOWNER
	+ForceAllyCollision
	States
	{
	Spawn:
		TNT1 A 1
	XDeath:
		TNT1 A 0 A_JumpIfInventory("IsPlayer", 0, "Check", AAPTR_TRACER)
	Death:
		TNT1 A 0
	Stop
	Check:
		TNT1 A 0 A_TakeInventory("ViktoryAllyHP",100,AAPTR_TARGET)
		TNT1 A 0 A_GiveInventory("ViktoryAllyHP",100,AAPTR_TARGET)
    Stop
  }
}

Actor ViktoryAllyHP  : Inventory
{ 
Inventory.MaxAmount 100
}

Actor ViktoryHealPlayerProc : CustomInventory
{
  states
  {
  Spawn:
    TNT1 A 0 
	Stop
   Pickup:
    TNT1 A 0 HealThing(50, 100)
    Stop
  }
}

Actor ViktoryConfirmedHeal  : Inventory
{ 
-COUNTITEM
}

Actor ViktorySyringePromptUsed : token
{}

Actor ViktorySyringePromptShown : token
{}

Actor ViktorySyringePromptShowtime : powerup
{
	powerup.duration -8
}

ACTOR BabyTiss
{
  -SOLID
  Scale 0.1
  States
  {
  Spawn:
    VJ13 ACBDBCACBDBCACBDBC 9
	VJ13 EFBD 9
    Loop
  HappyExpression:
	TNT1 A 0 A_PlaySound("tiss/talk", 2)
  ChooseWhich:
	TNT1 A 0 A_Jump(255, "Happy1", "Happy2", "Happy3")
  Happy1:
	VJ13 H 0
	Goto HappyAnim
  Happy2:
	VJ13 I 0
	Goto HappyAnim
  Happy3:
	VJ13 J 0
	Goto HappyAnim
  HappyAnim:
	"####" "#" 0 A_SetScale(0.1, 0.13)
	"####" "###" 1 A_SetScale(0.1, scaley-0.01)
	"####" "#" 0 A_SetScale(0.1, 0.1)
	"####" "#" 50
	"####" "#" 0 A_TakeInventory("TissIsTalking", 1)
	Goto Spawn
  NeutralExpression:
	TNT1 A 0 A_PlaySound("tiss/talk", 2)
	TNT1 A 0 A_SetScale(0.1, 0.13)
	VJ13 GGG 1 A_SetScale(0.1, scaley-0.01)
	TNT1 A 0 A_SetScale(0.1, 0.1)
	VJ13 G 50
	TNT1 A 0 A_TakeInventory("TissIsTalking", 1)
	Goto Spawn
  }
}

Actor TissIsTalking  : Inventory
{ 
}