diff --git a/src/p_mobj.c b/src/p_mobj.c index f1fc6bb7875a3b8725188dae072869ed28e37063..4796e18b09c7bb13a9d200ce94106b9a8c399e49 100644 --- a/src/p_mobj.c +++ b/src/p_mobj.c @@ -1986,8 +1986,14 @@ static void P_PlayerZMovement(mobj_t *mo) (FixedMul(cv_viewheight.value<<FRACBITS, mo->scale) - mo->player->viewheight)>>3; } - if (mo->pmomz && mo->z > mo->floorz) + // adjust height + if (mo->pmomz && !P_IsObjectOnGround(mo)) + { + if ((mo->eflags & MFE_VERTICALFLIP && mo->pmomz < 0) + || (!(mo->eflags & MFE_VERTICALFLIP) && mo->pmomz > 0)) + mo->momz += mo->pmomz; mo->pmomz = 0; + } mo->z += mo->momz;