local function HABILITY(player)
if player.mo.skin == "metalsonic" and player.playerstate == PST_LIVE and player.charability == CA_FLOAT then
if (player.secondjump == 1) and player.control then
if player.powers[pw_super] and (player.cmd.buttons & BT_SPIN) then
P_SetObjectMomZ(player.mo,20*FRACUNIT)
player.mo.state = S_PLAY_RUN
else
if not (player.mo.state == S_PLAY_RUN or player.mo.state == S_PLAY_FLOAT_RUN or player.mo.state == S_PLAY_FLOAT or player.mo.state == S_PLAY_WALK or player.mo.state == S_PLAY_DASH) then
player.mo.state = S_PLAY_FLOAT_RUN
end
if (player.mo.eflags & MFE_UNDERWATER) and (player.cmd.buttons & BT_SPIN) then
P_SetObjectMomZ(player.mo,5*FRACUNIT)
elseif ((player.mo.momz < 0 and P_MobjFlip(player.mo) == 1) or (player.mo.momz > 0 and P_MobjFlip(player.mo) == -1)) then
player.mo.momz = 1*P_MobjFlip(player.mo)
end
end
player.pflags = $ & ~PF_JUMPED
end
end
end
addHook("PlayerThink", HABILITY)


addHook("PlayerThink", function(player)
	if player.mo and player.playerstate == PST_LIVE and player.mo.skin == "metalsonic" then
		
		if (player.pflags & PF_THOKKED) then
			player.charability = CA_FLOAT
		else
			player.charability = CA_DOUBLEJUMP 
		end
		
	end
end)
