local function NoChucklesJumpThinker(p)
	if p.mo.skin != "2.1knuckles" return end
	
	if p.mo.skin == "2.1knuckles" and (p.pflags & PF_GLIDING)
		local leeway

		if (p.mo.momz == (-2*FRACUNIT)/TICRATE)
			p.mo.momz = (-2*FRACUNIT)/TICRATE
		elseif (p.mo.momz < (-2*FRACUNIT)/TICRATE)
			p.mo.momz = $ + (3*(FRACUNIT/4))/TICRATE
		end

		-- Strafing while gliding.
		leeway = FixedAngle(p.cmd.sidemove * (FRACUNIT/2))

		if p.mo.skin == "2.1knuckles" and ((p.mo.eflags & MFE_UNDERWATER))
			P_InstaThrust(p.mo, p.mo.angle - leeway, ((p.actionspd*(p.powers[pw_super] and 40 or 20)) + p.glidetime * 750)/TICRATE)
		elseif p.mo.skin == "2.1knuckles"
			P_InstaThrust(p.mo, p.mo.angle - leeway, ((p.actionspd*(p.powers[pw_super] and 80 or 40)) + p.glidetime * 1500)/TICRATE)
		end
			
		p.glidetime = $ + 1

		if p.mo.skin == "2.1knuckles" and not (p.pflags & PF_JUMPDOWN) -- If not holding the jump button
			P_ResetPlayer(p) -- down, stop gliding.
		end
	elseif p.mo.skin == "2.1knuckles" and p.climbing -- 'Deceleration' for climbing on walls.
		if (p.mo.momz > 0)
			p.mo.momz = $ - FRACUNIT/(TICRATE*2)
		elseif (p.mo.momz < 0)
			p.mo.momz = $ + FRACUNIT/(TICRATE*2)
		end
	end
end

addHook("JumpSpecial", NoChucklesJumpThinker)