diff --git a/src/p_mobj.c b/src/p_mobj.c index a819883ada1d3ece957b50f1baa0a47706296298..21a74767bfe3ca8ef5ae84538049564fab508467 100644 --- a/src/p_mobj.c +++ b/src/p_mobj.c @@ -2185,7 +2185,8 @@ void P_XYMovement(mobj_t *mo) if (oldslope && (P_MobjFlip(mo)*(predictedz - mo->z) > 0)) // Only for moving up (relative to gravity), otherwise there's a failed launch when going down slopes and hitting walls { transferslope = ((mo->standingslope) ? mo->standingslope : oldslope); - transfermomz = P_GetWallTransferMomZ(mo, transferslope); + if (((transferslope->zangle < ANGLE_180) ? transferslope->zangle : InvAngle(transferslope->zangle)) >= ANGLE_45) // Prevent some weird stuff going on on shallow slopes. + transfermomz = P_GetWallTransferMomZ(mo, transferslope); } #endif