// Blood revolver
actor BloodRevolver : AOWWeapon {
    Weapon.BobSpeed 1.75
    Weapon.BobRangeX 0.2
    Weapon.BobRangeY 0.4
    Weapon.BobStyle Alpha
	+WEAPON.NOAUTOFIRE
	Weapon.AmmoUse 1
	Weapon.AmmoGive 1
	Weapon.AmmoType "BloodRevolverAmmo"
	Weapon.SelectionOrder 0
	Weapon.PreferredSkin "MarinePistol"
	Weapon.UpSound "weapons/up/revolver"
	Inventory.Pickupmessage "You got the revolver!"
	Obituary "$OB_REVOLVER"
	DropItem "Handgun"
	Decal "BigBulletChip"
	Tag "Blood Revolver"
	States {
	Spawn:
		TNT1 A 0
		Stop
    Select:
		REVO A 1 offset (90,100)
		REVO A 1 offset (80,89)
		REVO A 1 offset (70,79)
		REVO A 1 offset (60,70)
		REVO A 1 offset (50,62)
		REVO A 1 offset (40,55)
		REVO A 1 offset (30,49)
		REVO A 1 offset (20,44)
		REVO A 1 offset (15,40)
		REVO A 1 offset (10,37)
		REVO A 1 offset (5,34)
		REVO A 1 offset (0,0)
		TNT1 A 0 A_TakeInventory("SelectAnimation",1)
		goto ready
	Deselect:
		TNT1 A 0 A_TakeInventory("ActionFragGrenade",1)	
        TNT1 A 0 A_TakeInventory("ActionFlashbang",1)
        TNT1 A 0 A_TakeInventory("ActionRemoteC4",1)	
        TNT1 A 0 A_TakeInventory("ActionMeleeAttack",1)
		TNT1 A 0 A_TakeInventory("ActionReload",1)
		TNT1 A 0 A_JumpIfNoAmmo ("DeselectNoAmmo")
		REVO A 1 offset (4,34)
		REVO A 1 offset (8,40)
		REVO A 1 offset (16,49)
		REVO A 1 offset (24,62)
		REVO A 1 offset (32,79)
		REVO A 1 offset (40,100)
		TNT1 A 0 offset (1, 33)
		TNT1 A 0 A_Lower
		wait
	DeselectNoAmmo:
		REVO A 1 offset (4,34)
		REVO A 1 offset (8,40)
		REVO A 1 offset (16,49)
		REVO A 1 offset (24,62)
		REVO A 1 offset (32,79)
		REVO A 1 offset (40,100)
		TNT1 A 0 offset (1, 33)
		TNT1 A 0 A_TakeInventory ("BloodRevolver")
		Stop
	Ready:
	    TNT1 A 0 A_JumpIfInventory("SelectAnimation",1,"Select")
		TNT1 A 0 A_JumpIfInventory("ActionFragGrenade",1,"UseFragGrenade")
		TNT1 A 0 A_JumpIfInventory("ActionFlashbang",1,"UseFlashbang")
		TNT1 A 0 A_JumpIfInventory("ActionRemoteC4",1,"UseRemoteC4")
		TNT1 A 0 A_JumpIfInventory("ActionMeleeAttack",1,"UseMeleeAttack")
		TNT1 A 0 A_TakeInventory("ActionReload",1)
		REVO A 1 A_WeaponReady
		loop
	Fire:
		TNT1 A 0 A_JumpIfInventory ("IsInSpawnRoom", 1, "Ready")
		TNT1 A 0 A_JumpIfInventory ("InMenu", 1, "Ready")
		REVF A 0 A_PlayWeaponSound ("revolver/fire")
		// Remove the token item if we had it already - turret kills can cause this
		REVF A 0 A_TakeInventory ("BloodRevolverKill", 1)
		REVF A 0 bright A_RailAttack (300, 0, true, none, none, true, 0, "RevolverPuff")
		goto Fire.End
	Fire.End:
		REVF A 1 bright offset (0, 33)
		REVF B 1 bright offset (0, 34)
		REVF C 1 bright offset (0, 35)
		REVF D 1 bright offset (0, 36)
		REVO B 1 offset (0, 37)
		REVO B 1 offset (0, 38)
		REVO C 1 offset (0, 37)
		REVO C 1 offset (0, 36)
		REVO B 1 offset (0, 35)
		REVO B 1 offset (0, 34)
		REVO A 1 offset (0, 33)
		REVO A 1 offset (0, 32)
		REVO A 0 A_JumpIfInventory ("BloodRevolverKill", 1, "GotKill")
		REVO A 18
		REVO A 0 A_CheckReload
		goto Ready
	GotKill:
		REVO A 18
		REVO A 0 A_GiveInventory ("BloodRevolverAmmo", 1)
		goto Ready
	}
}

actor BloodRevolverKill : Inventory {}
actor BloodRevolverFail : Inventory {}

actor RevolverPuff : HandgunPuff {+ALWAYSPUFF +PUFFONACTORS}