freeslot("S_PLAY_TRICK","sfx_trck")
sfxinfo[sfx_trck].caption = "Spring Trick"

states[S_PLAY_TRICK] = {
	sprite = SPR_PLAY,
	frame = A|SPR2_FALL,
	var1 = 0,
	var2 = 0,
	tics = 2,
	nextstate = S_PLAY_TRICK
}

addHook("PlayerSpawn", function(player)
	player.ast_sprung = false
	player.ast_trick = false
	player.ast_twirl = 0
end)

addHook("PlayerThink",function(player)
	if (player.mo.state == S_PLAY_SPRING or player.mo.state == S_PLAY_FALL)
	and player.powers[pw_justsprung]
		player.ast_sprung = true
	end
	if not (player.mo.state == S_PLAY_SPRING or player.mo.state == S_PLAY_FALL)
		player.ast_sprung = false
	end
	if player.ast_trick == true
	and P_IsObjectOnGround(player.mo)
	or player.powers[pw_justsprung]
		player.ast_trick = false
	end
	if player.mo.state == S_PLAY_TRICK
		player.ast_twirl = player.ast_twirl + FixedAngle(36*FU + (player.speed/14))
		player.drawangle = player.ast_twirl
		player.powers[pw_strong] = $ | (STR_ANIM | STR_PUNCH)
	end
	if player.mo.state == S_PLAY_TRICK
	and player.pflags & PF_SPINNING
		 player.mo.state = S_PLAY_ROLL
		 S_StartSound(mo, sfx_spin)
	end
end)

addHook("SpinSpecial",function(player)
	if not (player.pflags & PF_SPINDOWN)
	and player.ast_sprung == true
		player.ast_sprung = false
		player.mo.state = S_PLAY_TRICK
		player.cmd.buttons = $1 & ~BT_SPIN
		player.pflags = $1 & ~PF_SPINDOWN
		P_SetObjectMomZ(player.mo, 1*FRACUNIT, false)
		S_StartSound(mo, sfx_trck)
		if player.speed < 36*FU
			P_InstaThrust(player.mo, player.mo.angle, 36*FU)
		else
			P_InstaThrust(player.mo, player.mo.angle, player.speed + 10*FU)
		end
	end
end)