//jet booster
local function metaljetbooster(p)
	if p.mo.skin == "metalsonic"
	and p.alreadydidthefunny2 == false
		P_Thrust(p.mo, p.mo.angle, 17*FRACUNIT)
		local jetboost = P_SpawnMobjFromMobj(p.mo, 0, 0, 0, MT_METALBOOSTRING)
		jetboost.color = SKINCOLOR_WHITE
		jetboost.angle = p.cmd.angleturn << 16 + R_PointToAngle2(0, 0, p.cmd.forwardmove*FRACUNIT, -p.cmd.sidemove*FRACUNIT) + ANGLE_90
		jetboost.scale = p.mo.scale
		jetboost.destscale = p.mo.scale
		jetboost.tics = 3
		S_StartSound(p.mo, sfx_zoom)
		p.alreadydidthefunny2 = true
	end
end

addHook("AbilitySpecial", metaljetbooster)

addHook("PlayerThink", function(p)
	if p.mo.skin == "metalsonic"
	and P_IsObjectOnGround(p.mo)
		p.alreadydidthefunny2 = false
	end
end)

addHook("PlayerThink", function(p)
	if (p.mo.skin == "metalsonic" or p.mo.skin == "sonic")
	and (p.mo.state == S_PLAY_RUN or p.mo.state == S_PLAY_FLOAT_RUN)
	and p.isinboostmode == true
		p.mo.state = S_PLAY_DASH
	end
	if (p.mo.skin == "metalsonic" or p.mo.skin == "sonic")
	and p.mo.state == S_PLAY_DASH
	and p.isinboostmode == false
		p.mo.state = S_PLAY_RUN
	end
end)

addHook("PlayerThink", function(p)
	if p.mo.skin == "metalsonic"
	and p.isinboostmode == true
	and (p.mo.state == S_PLAY_DASH or p.mo.state == S_PLAY_FLOAT)
	and not P_IsObjectOnGround(p.mo)
	and (p.pflags & PF_THOKKED)
		p.mo.momz = 0
	end
end)

//made by buggie the bug
addHook("PlayerThink", function(player)
	if player.mo and player.valid and player.playerstate == PST_LIVE and not (player.powers[pw_carry] == CR_NIGHTSMODE)
	and player.mo.skin == "metalsonic"
		player.powers[pw_underwater] = 9999
		player.powers[pw_spacetime] = 9999
	end
end)