diff --git a/src/p_slopes.c b/src/p_slopes.c index a4f334caff3ce36ba4dfd6baaf9ebb086f78a1a4..32cae8ca6ea35703f0f57ff20ee59cd4a528d5cb 100644 --- a/src/p_slopes.c +++ b/src/p_slopes.c @@ -876,26 +876,16 @@ void P_ButteredSlope(mobj_t *mo) return; // Allow the player to stand still on slopes below a certain steepness } - thrust = FINESINE(mo->standingslope->zangle>>ANGLETOFINESHIFT) * 3 / 2 * (mo->eflags & MFE_VERTICALFLIP ? 1 : -1); + thrust = FINESINE(mo->standingslope->zangle>>ANGLETOFINESHIFT) * 11 / 4 * (mo->eflags & MFE_VERTICALFLIP ? 1 : -1); if (mo->player && (mo->player->pflags & PF_SPINNING)) { - fixed_t mult = 0; - if (mo->momx || mo->momy) { - angle_t angle = R_PointToAngle2(0, 0, mo->momx, mo->momy) - mo->standingslope->xydirection; - - if (P_MobjFlip(mo) * mo->standingslope->zdelta < 0) - angle ^= ANGLE_180; - - mult = FINECOSINE(angle >> ANGLETOFINESHIFT); - } - - //CONS_Printf("%d\n", mult); - - thrust = FixedMul(thrust, FRACUNIT*2/3 + mult/8); + if (P_GetZAt(mo->standingslope, mo->x+mo->momx, mo->y+mo->momy) < P_GetZAt(mo->standingslope, mo->x, mo->y)) // if they're going down increase thrust + thrust = FixedMul(thrust, 5*FRACUNIT/2); } - if (mo->momx || mo->momy) // Slightly increase thrust based on the object's speed - thrust = FixedMul(thrust, FRACUNIT+P_AproxDistance(mo->momx, mo->momy)/16); + // I've commented this out for now until I figure out whether it should be kept or not + //if (mo->momx || mo->momy) // Slightly increase thrust based on the object's speed + //thrust = FixedMul(thrust, FRACUNIT+P_AproxDistance(mo->momx, mo->momy)/16); // This makes it harder to zigzag up steep slopes, as well as allows greater top speed when rolling down // Multiply by gravity