diff --git a/src/p_user.c b/src/p_user.c index 80d16e30bbbddcbee80c38fa1b1b8b9e685dc8eb..54ec1af55bbbfbfe20f02b735bcf83f507b1a94b 100644 --- a/src/p_user.c +++ b/src/p_user.c @@ -3789,7 +3789,7 @@ void P_DoJump(player_t *player, boolean soundandstate) else player->mo->momz = 15*(FRACUNIT/4); - player->mo->angle = player->mo->angle - ANGLE_180; // Turn around from the wall you were climbing. + player->drawangle = player->mo->angle = player->mo->angle - ANGLE_180; // Turn around from the wall you were climbing. if (!demoplayback || P_AnalogMove(player)) { @@ -9823,7 +9823,8 @@ void P_PlayerThink(player_t *player) { boolean currentlyonground = P_IsObjectOnGround(player->mo); - if (((player->pflags & (PF_AUTOBRAKE|PF_APPLYAUTOBRAKE)) == (PF_AUTOBRAKE|PF_APPLYAUTOBRAKE)) + if (!player->powers[pw_carry] + && ((player->pflags & (PF_AUTOBRAKE|PF_APPLYAUTOBRAKE)) == (PF_AUTOBRAKE|PF_APPLYAUTOBRAKE)) && !(cmd->forwardmove || cmd->sidemove) && (player->rmomx || player->rmomy)) { @@ -9840,10 +9841,12 @@ void P_PlayerThink(player_t *player) } if (!(player->pflags & PF_AUTOBRAKE) + || player->powers[pw_carry] || player->panim == PA_SPRING || player->panim == PA_PAIN || !player->mo->health - || player->pflags & PF_SPINNING) + || player->climbing + || player->pflags & (PF_SPINNING|PF_SLIDING)) player->pflags &= ~PF_APPLYAUTOBRAKE; else if (currentlyonground) player->pflags |= PF_APPLYAUTOBRAKE;