// Sniper rifle
actor SniperRifle : AOWWeapon {
	obituary "$OB_SNIPER" // "%o was picked off by %k's Sniper Rifle."
	attacksound "rc50/fire"
	weapon.selectionorder 3
	weapon.kickback 80
	weapon.ammotype "SniperAmmo"
	weapon.ammouse 1
	weapon.ammogive 5
	DropItem "SniperRifleWeak"
	inventory.pickupmessage "You got the sniper rifle!"
	+NOEXTREMEDEATH
	Weapon.PreferredSkin "MarineSniper"
	states {
	Ready:
		SNIE AA 0 A_JumpIfInventory ("IsZoomed", 1, "ReadyZoomed")
		SNIE A 1 A_WeaponReady
		wait
	ReadyZoomed:
		TNT1 A 1 A_WeaponReady
		loop
	Deselect:
		SNIE AA 0 A_JumpIfInventory ("IsZoomed", 1, "AltFireOff")
		SNIE A 1 A_Lower
		wait
	Select:
		SNIE A 1 A_Raise
		loop
	Fire:
		TNT1 A 0 A_JumpIfInventory ("IsInSpawnRoom", 1, "Ready")
		TNT1 A 0 A_JumpIfInventory ("InMenu", 1, "Ready")
		TNT1 A 0 A_JumpIfInventory ("IsZoomed", 1, "FireZoomed")
		SNIP A 0 A_GunFlash
		SNIF F 0 A_FireBullets (5.0, 5.0, -1, 25, "RiflePuff")
		goto Reload
	Reload:
		SNIF F 2 BRIGHT
		SNIE A 8
		SNIR ABCDEFGHIJ 2
		SNIR C 5 offset (0, 40) A_PlaySound ("rc50/boltopen")
		SNIR C 5 offset (0, 35) A_SpawnItemEx("RifleShellCasing",3,15,30,random(-2,-4),random(2,3),random(0,-1),random(45,60),128)
		SNIR C 10 offset (0, 33) A_PlaySound ("rc50/boltclose")
		SNIR BA 3
		SNIE A 1 A_ReFire
		goto Ready
	FireZoomed:
		TNT1 A 0 A_ZoomFactor (5.8)
		TNT1 A 0 A_RailAttack (75, 0, 0, none, none, 1, 0, "RiflePuff")
		TNT1 A 2 bright A_FireBullets (0.0, 0.0, 1, 0, "RiflePuff")
		goto ReloadZoomed
	ReloadZoomed:
		TNT1 A 0 A_ZoomFactor (6.00)
		TNT1 A 28
		TNT1 A 5 offset (0, 40) A_PlaySound ("rc50/boltopen")
		TNT1 A 5 offset (0, 35) A_SpawnItemEx("RifleShellCasing",3,15,30,random(-2,-4),random(2,3),random(0,-1),random(45,60),128)
		TNT1 A 10 offset (0, 33) A_PlaySound ("rc50/boltclose")
		TNT1 A 6
		TNT1 A 1 A_ReFire
		goto Ready
	AltFire:
		TNT1 A 0 A_JumpIfInventory ("IsInSpawnRoom", 1, "Ready")
		TNT1 A 0 A_JumpIfInventory ("InMenu", 1, "Ready")
		SNIE A 1 A_JumpIfInventory ("IsZoomed", 1, "AltFireOff")
		SNIE A 0 ACS_ExecuteAlways (916, 0, 0)
		SNIE A 0 A_GiveInventory ("IsZoomed", 1)
		SNIE A 0 A_PlaySound ("rc50/zoomin")
		SNIE A 7
		TNT1 A 10 A_ZoomFactor (6.0)
		goto Ready
	AltFireOff:
		TNT1 A 0 A_TakeInventory ("IsZoomed", 1)
		TNT1 A 0 A_PlaySound ("rc50/zoomout")
		TNT1 A 3 A_ZoomFactor (1.0)
		TNT1 A 7 ACS_ExecuteAlways (916, 0, 0)
		SNIE A 10
		goto Ready
	Spawn:
		TNT1 A 0
		TNT1 A 0 A_SpawnItem("SniperRifleWeak")
		stop
	Flash:
		TNT1 A 2 A_Light1
		TNT1 A 2 A_Light2
		TNT1 A 0 A_Light0
		stop
	}
}

actor IsZoomed : Inventory {}

actor SniperRifleWeak : SniperRifle 21081 {
	//$Category Weapons
	tag "Sniper Rifle"
	states {
	Fire:
		TNT1 A 0 A_JumpIfInventory ("IsInSpawnRoom", 1, "Ready")
		TNT1 A 0 A_JumpIfInventory ("InMenu", 1, "Ready")
		SNIE AA 0 A_JumpIfInventory ("IsZoomed", 1, "FireZoomed")
		SNIP F 0 A_GunFlash
		SNIF F 0 A_FireBullets (5.0, 5.0, -1, 17, "RiflePuff")
		goto Reload
	FireZoomed:
		TNT1 A 0 A_ZoomFactor (5.8)
		TNT1 A 0 A_RailAttack (50, 0, 0, none, none, 1, 0, "RiflePuff")
		TNT1 A 2 bright A_FireBullets (0.0, 0.0, 1, 0, "RiflePuff")
		TNT1 A 0 A_ZoomFactor (6.00)
		goto ReloadZoomed
	Spawn:
		SNIP X -1
		stop
	}
}