addHook("PlayerThink",function(p) if p.pflags & PF_SPINNING and not (p.pflags & PF_STARTDASH) and P_IsObjectOnGround(p.mo) then local speed = (FixedAngle(1*FRACUNIT))/4 p.counterdriftangle = FixedAngle((p.cmd.sidemove*-10)/50) if p.driftangle == nil then p.driftangle = FixedAngle(0) end if (FixedAngle(((p.cmd.sidemove*90)/50)*FRACUNIT) > FixedAngle(0) + speed) and (p.driftangle > FixedAngle((-7/2)*FRACUNIT)) then p.driftangle = ((p.driftangle * 20 + FixedAngle(-4*FRACUNIT)) / 21) - speed elseif (FixedAngle(((p.cmd.sidemove*90)/50)*FRACUNIT) < FixedAngle(0) - speed) and (p.driftangle < FixedAngle((7/2)*FRACUNIT)) then p.driftangle = ((p.driftangle * 20 + FixedAngle(4*FRACUNIT)) / 21) + speed end if (p.cmd.sidemove == 0 and p.driftangle > FixedAngle (0)) p.driftangle = $ - speed p.driftangle = $*(20/21) elseif (p.cmd.sidemove == 0 and p.driftangle < FixedAngle (0)) p.driftangle = $ + speed p.driftangle = $*(20/21) end local movespd = R_PointToDist2(p.mo.x, p.mo.y, p.mo.x + p.mo.momx, p.mo.y + p.mo.momy) local movementangle = R_PointToAngle2(p.mo.momx,p.mo.momy,p.mo.momx*2,p.mo.momy*2) P_InstaThrust(p.mo,movementangle + p.driftangle + p.counterdriftangle,(movespd+abs((p.driftangle/FRACUNIT)/ANG1))) p.mo.angle = (p.mo.angle+p.driftangle+p.counterdriftangle) else p.driftangle = FixedAngle(0) end end)