ACTOR BDFist : Fist
{
	Weapon.SlotNumber 4
	Weapon.BobSpeed 2.0
	AttackSound "*fist"	// played when hitting enemies
	Tag "Fists"

	States
	{
		Ready:
			FIST A 1 A_WeaponReady
			Loop
		Deselect:
			FIST A 1 A_Lower
			Loop
		Select:
			// TODO if player levels up while having the fist selected, the damage won't be increased until switching weapons
			TNT1 A 0 ACS_NamedExecuteAlways("SetWeaponDamageMultiplier")
			FIST A 1 A_Raise
			Loop

		Fire:
			TNT1 A 0 A_JumpIfInventory("PowerStrength", 1, "FireBerserked")
			// left hand
			TNT1 A 0 A_PlaySound("fist/attack", CHAN_WEAPON)
			FIST B 2
			FIST C 3 A_CustomPunch(2 * random(1, 10), TRUE)
			FIST B 3
			FIST A 5
			FIST A 5 A_ReFire
			Goto Ready
		Hold:
			// right hand
			TNT1 A 0 A_PlaySound("fist/attack", CHAN_WEAPON)
			FIST D 2
			FIST E 3 A_CustomPunch(2 * random(1, 10), TRUE)
			FIST D 3
			FIST A 5
			FIST A 5 A_ReFire("Fire")	// switch to left hand again
			Goto Ready
		// same as above, but for berserker mode
		FireBerserked:
			// left hand
			TNT1 A 0 A_PlaySound("fist/attack", CHAN_WEAPON)
			FIST B 1
			FIST C 2 A_CustomPunch(2 * random(1, 10), TRUE)
			FIST B 2
			FIST A 4 A_ReFire("HoldBerserked")
			Goto Ready
		HoldBerserked:
			// right hand
			TNT1 A 0 A_PlaySound("fist/attack", CHAN_WEAPON)
			FIST D 1
			FIST E 2 A_CustomPunch(2 * random(1, 10), TRUE)
			FIST D 2
			FIST A 4 A_ReFire("FireBerserked")	// switch to left hand again
			Goto Ready

		AltFire:
			// "load up" punch
			FIST F 10
			FIST F 0 A_ReFire
			Goto DoAltPunch
		AltHold:
			// hold "loaded up" punch
			FIST F 1
			FIST F 0 A_ReFire
			Goto DoAltPunch
		DoAltPunch:
			TNT1 A 0 A_PlaySound("fist/attack", CHAN_WEAPON)
			FIST G 1 Offset(10, 32)
			FIST D 1 Offset(1, 32)
//			FIST E 2 A_CustomPunch(20 * random(1, 2), TRUE)
			// multiply damage by 10 if player has berserker pack
			FIST E 2 A_CustomPunch(20 * random(1, 2) * (1 + (9 * CountInv("PowerStrength"))), TRUE)
			// move down-left
			FIST E 1 Offset(-20, 32)
			FIST E 1 Offset(-40, 37)
			FIST D 1 Offset(-90, 32)
			FIST D 1 Offset(-110, 37)
			FIST D 1 Offset(-140, 47)
			FIST D 0 Offset(-1, 32)	// necessary to avoid a "sliding" animation from left to right
			Goto Ready
	}
}