diff --git a/src/p_mobj.c b/src/p_mobj.c index 19ce8a867e0bfc3df91ea013b752218aeda8451d..180b9e3dc616f2afd4d8c7322cca70162a23645e 100644 --- a/src/p_mobj.c +++ b/src/p_mobj.c @@ -1932,8 +1932,6 @@ void P_XYMovement(mobj_t *mo) if (player) { player->powers[pw_justlaunched] = 2; - if (player->pflags & PF_SPINNING) - player->pflags |= PF_THOKKED; } } } diff --git a/src/p_user.c b/src/p_user.c index 050ca8489b6c769eb536ec244fa1b797f0960217..48855355a20c7e7308ec88b0b6759eb0234ac1e2 100644 --- a/src/p_user.c +++ b/src/p_user.c @@ -5769,7 +5769,7 @@ static void P_2dMovement(player_t *player) INT32 acceleration = P_GetPlayerAcceleration(player,player->acceleration); fixed_t subfriction = P_CounterFriction(player); - boolean spin = ((onground = P_IsObjectOnGround(player->mo)) && (player->pflags & (PF_SPINNING|PF_THOKKED)) == PF_SPINNING && (player->rmomx || player->rmomy) && !(player->pflags & PF_STARTDASH)); + boolean spin = ((onground = P_IsObjectOnGround(player->mo)) && (player->pflags & PF_SPINNING) && (player->rmomx || player->rmomy) && !(player->pflags & PF_STARTDASH)); cmd = &player->cmd; @@ -6124,8 +6124,8 @@ static void P_3dMovement(player_t *player) */ if (spin) // Prevent gaining speed whilst rolling! { - const fixed_t ns = FixedDiv(549*ORIG_FRICTION,500*FRACUNIT); // P_XYFriction - //const fixed_t ns = FixedDiv(500*ORIG_FRICTION,500*FRACUNIT); // P_XYFriction + const fixed_t ns = FixedDiv(110349*ORIG_FRICTION,100000*FRACUNIT); // P_XYFriction + //const fixed_t ns = FixedDiv(549*ORIG_FRICTION,500*FRACUNIT); // P_XYFriction topspeed = FixedMul(oldMagnitude, ns); } @@ -6164,15 +6164,11 @@ static void P_3dMovement(player_t *player) movepushforward = cmd->forwardmove * acceleration; // Allow a bit of movement while spinning - if ((player->pflags & (PF_SPINNING|PF_THOKKED)) == PF_SPINNING) - { + if (player->pflags & PF_STARTDASH) + movepushforward = 0; + //if ((mforward && cmd->forwardmove > 0) || (mbackward && cmd->forwardmove < 0) - //|| - if (player->pflags & PF_STARTDASH) - movepushforward = 0; - else if (!onground) - movepushforward >>= 1; - } + //|| movepushforward = FixedMul(movepushforward, player->mo->scale); totalthrust.x += P_ReturnThrustX(player->mo, movepushangle, movepushforward); @@ -6200,14 +6196,8 @@ static void P_3dMovement(player_t *player) movepushforward = FixedHypot(cmd->sidemove, cmd->forwardmove) * acceleration; // Allow a bit of movement while spinning - if ((player->pflags & (PF_SPINNING|PF_THOKKED)) == PF_SPINNING) - { - if ((mforward && cmd->forwardmove > 0) || (mbackward && cmd->forwardmove < 0) - || (player->pflags & PF_STARTDASH)) - movepushforward = 0; - else if (!onground) - movepushforward >>= 1; - } + if ((player->pflags & PF_SPINNING) && onground) + movepushforward = 0; movepushsideangle = controldirection; @@ -6223,12 +6213,12 @@ static void P_3dMovement(player_t *player) movepushside = cmd->sidemove * acceleration; // Allow a bit of movement while spinning - if ((player->pflags & (PF_SPINNING|PF_THOKKED)) == PF_SPINNING) + if ((player->pflags & PF_SPINNING) && onground) { if (player->pflags & PF_STARTDASH) movepushside = 0; - else if (!onground) - movepushside >>= 1; + else + movepushside <<= 1; } // Finally move the player now that their speed/direction has been decided.