Actor GezzdtSniperRifle : UWeapon
{
	Weapon.SelectionOrder 2000
	Weapon.SlotNumber 9
	Weapon.AmmoType "URifleRound"
	Weapon.AmmoUse 1
	Weapon.AmmoGive 8
	Inventory.PickupMessage "You got the Rifle"
	Obituary "%k put a bullet through %o's head."
	Tag "Sniper Rifle"
	scale 0.1
	Inventory.Icon "1001C0"
	+Weapon.NOALERT
	States
	{
	Select:
		TNT1 A 0 A_PlaySound("sniper/select",6)
		USNR J 1 Offset(67, 100)
		TNT1 A 0 A_WeaponReady(WRF_NoFire|WRF_NoSwitch)
		USNR J 1 Offset(54, 81)
		TNT1 A 0 A_WeaponReady(WRF_NoFire|WRF_NoSwitch)
		USNR J 1 Offset(32, 69)
		TNT1 A 0 A_WeaponReady(WRF_NoFire|WRF_NoSwitch)
		USNR J 1 Offset(22, 58)
		TNT1 A 0 A_WeaponReady(WRF_NoFire|WRF_NoSwitch)
		USNR J 1 Offset(10, 47)
		TNT1 A 0 A_WeaponReady(WRF_NoFire|WRF_NoSwitch)
		USNR J 1 Offset(7, 39)
		TNT1 A 0 A_WeaponReady(WRF_NoFire|WRF_NoSwitch)
		USNR J 1 Offset(2, 34)
		TNT1 A 0 A_WeaponReady(WRF_NoFire|WRF_NoSwitch)
		USNR JKLMNOPQRST 1
		USNR D 0 A_Raise
		Goto Ready
	Deselect:
		TNT1 A 0 A_ZoomFactor(1.0)
		TNT1 A 0 A_TakeInventory ("Zoomed", 1)
		TNT1 A 0 a_playsound ("weapons/holster", 0)
		TNT1 A 0 A_WeaponReady(WRF_NoFire|WRF_NoSwitch)
		USNR A 1 Offset(2, 34)
		TNT1 A 0 A_WeaponReady(WRF_NoFire|WRF_NoSwitch)
		USNR A 1 Offset(7, 39)
		TNT1 A 0 A_WeaponReady(WRF_NoFire|WRF_NoSwitch)
		USNR A 1 Offset(10, 47)
		TNT1 A 0 A_WeaponReady(WRF_NoFire|WRF_NoSwitch)
		USNR A 1 Offset(22, 58)
		TNT1 A 0 A_WeaponReady(WRF_NoFire|WRF_NoSwitch)
		USNR A 1 Offset(32, 69)
		TNT1 A 0 A_WeaponReady(WRF_NoFire|WRF_NoSwitch)
		USNR A 1 Offset(54, 81)
		TNT1 A 0 A_WeaponReady(WRF_NoFire|WRF_NoSwitch)
		USNR A 1 Offset(67, 100)
		TNT1 A 1 A_Lower
		Wait
	Ready:
		TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("sniperzoom")==0,"Ready2")
		USNR A 1 A_Weaponready(WRF_NOSECONDARY)
		loop
	Ready2:
		USNR A 1 A_Weaponready
		loop
	ZoomReady:
		TNT1 A 1 A_Weaponready
		loop
	ZoomReady2:
		TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("sniperzoom")==0,"ZoomReady")
		TNT1 A 1 A_Weaponready(WRF_NOSECONDARY)
		loop
	Fire:
		TNT1 A 0 A_Playsound("sniper/fire",7)
		TNT1 A 0 A_FireBullets(0,0,1,random(45,100),"UBulletpuff",FBF_USEAMMO|FBF_NORANDOM)
		TNT1 A 0 A_AlertMonsters
		TNT1 A 0 A_JumpIfInventory("Zoomed", 1, "ZoomFire")
		TNT1 A 0 A_SpawnItemEx("ucasing2", 33,cos(pitch)*18,sin(-pitch)*25+33, frandom(0.5,1.2),frandom(0.5,1.2),frandom(2.5,3.5))
		USNF A 1 A_Quake(5,3,0,1,"none")
		USNR CDEFGHIJKLMNOPQRST 1
		Goto Ready
	ZoomFire:
		TNT1 A 0 A_SpawnItemEx("ucasing2", 33,cos(pitch)*28,sin(-pitch)*25+33, frandom(0.5,1.2),frandom(0.5,1.2),frandom(2.5,3.5))
		TNT1 A 0 A_Quake(5,2,0,1,"none")
		TNT1 A 19
		Goto ZoomReady
	Zoom1:
		TNT1 A 1 A_ZoomFactor(2.1)
		TNT1 A 1 A_ZoomFactor(2.2)
		TNT1 A 1 A_ZoomFactor(2.3)
		TNT1 A 1 A_ZoomFactor(2.4)
		TNT1 A 1 A_ZoomFactor(2.5)
		TNT1 A 1 A_ZoomFactor(2.6)
		TNT1 A 1 A_ZoomFactor(2.7)
		TNT1 A 1 A_ZoomFactor(2.8)
		TNT1 A 1 A_ZoomFactor(2.9)
		TNT1 A 1 A_ZoomFactor(3.0)
		TNT1 A 0 A_GiveInventory ("Zoomed", 1)
		TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("sniperzoom")==1,"Zoom2")
		Goto ZoomReady
	Zoom2:
		TNT1 A 1 A_ZoomFactor(3.1)
		TNT1 A 1 A_ZoomFactor(3.2)
		TNT1 A 1 A_ZoomFactor(3.3)
		TNT1 A 1 A_ZoomFactor(3.4)
		TNT1 A 1 A_ZoomFactor(3.5)
		TNT1 A 1 A_ZoomFactor(3.6)
		TNT1 A 1 A_ZoomFactor(3.7)
		TNT1 A 1 A_ZoomFactor(3.8)
		TNT1 A 1 A_ZoomFactor(3.9)
		TNT1 A 1 A_ZoomFactor(4.0)
		TNT1 A 0 A_GiveInventory ("Zoomed", 1)
		TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("sniperzoom")==1,"Zoom3")
		Goto ZoomReady
	Zoom3:
		TNT1 A 1 A_ZoomFactor(4.1)
		TNT1 A 1 A_ZoomFactor(4.2)
		TNT1 A 1 A_ZoomFactor(4.3)
		TNT1 A 1 A_ZoomFactor(4.4)
		TNT1 A 1 A_ZoomFactor(4.5)
		TNT1 A 1 A_ZoomFactor(4.6)
		TNT1 A 1 A_ZoomFactor(4.7)
		TNT1 A 1 A_ZoomFactor(4.8)
		TNT1 A 1 A_ZoomFactor(4.9)
		TNT1 A 1 A_ZoomFactor(5.0)
		TNT1 A 0 A_GiveInventory ("Zoomed", 1)
		TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("sniperzoom")==1,"Zoom4")
		Goto ZoomReady
	Zoom4:
		TNT1 A 1 A_ZoomFactor(5.1)
		TNT1 A 1 A_ZoomFactor(5.2)
		TNT1 A 1 A_ZoomFactor(5.3)
		TNT1 A 1 A_ZoomFactor(5.4)
		TNT1 A 1 A_ZoomFactor(5.5)
		TNT1 A 1 A_ZoomFactor(5.6)
		TNT1 A 1 A_ZoomFactor(5.7)
		TNT1 A 1 A_ZoomFactor(5.8)
		TNT1 A 1 A_ZoomFactor(5.9)
		TNT1 A 1 A_ZoomFactor(6.0)
		TNT1 A 0 A_GiveInventory ("Zoomed", 1)
		TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("sniperzoom")==1,"ZoomReady2")
		Goto ZoomReady
	ZoomOut:
		TNT1 A 0 A_ZoomFactor(1.0)
		TNT1 A 0 A_TakeInventory ("Zoomed", 5)
		Goto Ready 
	Spawn:
		USNP U -1
		Stop
	}
}

Actor Sniperbullet : Fastprojectile
{
	Height 1
	Radius 1
	Speed 200
	Damage 50
		DeathSound "weapons/explosion"
	Projectile
	+BLOODSPLATTER
	+RIPPER

	-PUFFONACTORS
	decal bulletchip
	states
		{
		Spawn:
			TNT1 A 1
			loop
		Crash:
		Death:
		TNT1 A 0 A_Explode(100)
		TNT1 A 0 A_Jump(256,3,2,1)
		TNT1 AAA 8 A_SpawnItemEX("RandomExplosion",-2,random(-6,6),random(-6,6))
		Stop
		}
		
}

Actor Zoomed : Inventory
{Inventory.Maxamount 5}