local p = player local frac = FRACUNIT addHook("ThinkFrame", function() for p in players.iterate do if p.mo.skin ~= "sonic" then continue end if not (p.cmd.buttons & BT_CUSTOM1) then -- flight button press p.c1ready = true p.c1 = false elseif p.c1ready then p.c1 = true p.c1ready = false else p.c1 = false end if p.powers[pw_super] if p.flying and p.c1 p.flying = false elseif not p.flying and not P_IsObjectOnGround(p.mo) and p.c1 p.flying = true end end if not p.powers[pw_super] and p.flying p.flying = false end if p.flying == nil p.flying = false end if P_IsObjectOnGround(p.mo) p.flying = false end if p.flying if (p.cmd.buttons & BT_JUMP) if p.mo.momz <= 20*frac p.mo.momz = p.mo.momz + 2*frac end elseif (p.cmd.buttons & BT_CUSTOM2) if p.mo.momz >= -20*frac p.mo.momz = p.mo.momz - 2*frac end else if p.mo.momz >= 1 p.mo.momz = p.mo.momz - 1*frac elseif p.mo.momz <= -1 p.mo.momz = p.mo.momz + 1*frac elseif p.mo.momz > -2 and p.mo.momz < 2 p.mo.momz = 0 end end if p.speed > 50*frac p.mo.state = S_PLAY_FLOAT_RUN else p.mo.state = S_PLAY_FLOAT end p.pflags = $|PF_JUMPED|PF_THOKKED end end end)