// Self-heal syringe
actor SelfHealItem : InventoryItem {
	+INVBAR
	tag "Self-heal syringe"
	inventory.icon "syriicon"
	scale 0.25
	states {
	Spawn:
		SYRI X -1
		stop
	Use:
		TNT1 A 0 A_JumpIfInventory ("IsMech", 1, "Use.Mech")
		TNT1 A 0 A_JumpIfInventory ("IsInSpawnRoom", 1, "Failure")
		TNT1 A 0 ACS_ExecuteAlways (951, 0, 4)
		fail
	Nope:
		TNT1 A 0
		fail
	}
}

actor SelfHeal : AOWWeapon {
	+NOALERT
	+AMMO_OPTIONAL
	+CHEATNOTWEAPON
	weapon.preferredskin "MarineFist"
	dropitem "SpentSyringe", 255
	states {
	Deselect:
		TNT1 A 0
		SYRU AA 0 A_JumpIfInventory ("SelfHealItem", 1, "DeselectFull")
		TNT1 A 1 A_TakeInventory ("SelfHeal", 1)
		TNT1 A -1
		stop
	DeselectFull:
		SYRD A 1
		SYRD BCDE 1
		SYRD E 1
		SYRD E 1 A_TakeInventory ("SelfHeal", 1)
		TNT1 A -1
		stop
	Select:
		SYRI A 0 A_Raise
		Loop
	Ready:
		SYRU A 1 A_PlaySound ("weapons/syringeup")
		SYRU BCDEFGHIJKLMNO 1
		SYRI BCDD 3
		SYRI EFGHI 1
		SYRI I 1 A_WeaponReady (WRF_NOBOB|WRF_NOSWITCH)
		SYRI I 0 A_PlayWeaponSound ("Heal/Ready")
		SYRI J 48 A_WeaponReady (WRF_NOBOB|WRF_NOSWITCH)
		SYRI KL 1 A_WeaponReady (WRF_NOBOB|WRF_NOSWITCH) 
		INJE A 8 A_PlaySound ("weapons/knifehit3")
		INJE B 2
		INJE C 0 A_PlaySound ("weapons/syringepain")
		INJE C 2 A_PlayWeaponSound ("weapons/syringe")
		INJE D 2
		INJE E 0 A_TakeInventory ("SelfHealItem", 1)
		INJE E 2 ACS_ExecuteAlways (816, 0)
		INJE EFGHIJKKKL 2
		INJE M 8
		INJE N 2
		INJE O 2 A_PlayWeaponSound ("weapons/knifehit4")
		INJE PQR 2
		INJE S 8
		INJE TU 2
		INJE VWXYZ 1 
		NULL A 10
		SYRT AB 1
		SYRT C 1 A_FireCustomMissile ("SpentSyringe")
		SYRT DEF 1
		TNT1 A 0 ACS_NamedExecuteAlways("SC_USEGRENADEWEPSWITCH")
		NULL A 8 A_CheckReload
		goto Deselect
	Fire:
	AltFire:
		SYRI IHGFE 1
		SYRI DDCB 3
		TNT1 A 0 ACS_NamedExecuteAlways("SC_USEGRENADEWEPSWITCH")
		goto DeselectFull
	}
}

actor SpentSyringe { 
	+CLIENTSIDEONLY
	+NOBLOCKMAP +DROPOFF +MISSILE
	+NOTELEPORT +FLOORCLIP +DOOMBOUNCE
	Scale 0.1
	Radius 3
	Height 3
	Speed 10
	Mass 5
	SeeSound "weapons/shell"
	States {
	Spawn:
		SYTR ABCDEFGHIJKLMNOP 3
		Loop
	Death:
		SYTR A 512
		SYTR A 1 A_Fadeout(0.01)
		Wait
	}
}

Actor selfHealCoolDownItem : Inventory { Inventory.MaxAmount 1 }
actor FastSelfHeal : Inventory {}
actor EnhancedSelfHeal : Inventory {}