From c26455d8b4d22935f36c1c309b60b7f13f859392 Mon Sep 17 00:00:00 2001 From: Ashnal Date: Sat, 4 May 2024 14:07:27 -0400 Subject: [PATCH 1/3] Fix slope pushback force to scale with mapobject and player grow/shrink scale --- src/p_user.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/p_user.c b/src/p_user.c index fc0c0bd23..4a36b19ae 100644 --- a/src/p_user.c +++ b/src/p_user.c @@ -1917,7 +1917,7 @@ static void P_3dMovement(player_t *player) vector3_t totalthrust; totalthrust.x = totalthrust.y = 0; // I forget if this is needed - totalthrust.z = FRACUNIT*P_MobjFlip(player->mo)/3; // A bit of extra push-back on slopes + totalthrust.z = FixedMul(mapobjectscale, K_GrowShrinkSpeedMul(player))*P_MobjFlip(player->mo)/3; // A bit of extra push-back on slopes if (K_SlopeResistance(player) == true) { From f74280ad0af0fccf3f384c2de02c7a4e971809ea Mon Sep 17 00:00:00 2001 From: Ashnal Date: Sat, 4 May 2024 14:24:44 -0400 Subject: [PATCH 2/3] Compat level guarding --- src/g_demo.cpp | 6 +++++- src/p_user.c | 6 +++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/g_demo.cpp b/src/g_demo.cpp index db3391707..f73407198 100644 --- a/src/g_demo.cpp +++ b/src/g_demo.cpp @@ -166,8 +166,12 @@ demoghost *ghosts = NULL; // - A bug was preventing control after ending a drift. // Older behavior is kept around for staff ghost compat. // - Also, polyobject bounce-back was fixed! +// - 0x000B (Ring Racers v2.1 + In dev revisions) +// - SPB cup TA replays were recorded at this time +// - Slope physics changed with a scaling fix +// - 0x000C (Ring Racers v2.2) -#define DEMOVERSION 0x000B +#define DEMOVERSION 0x000C boolean G_CompatLevel(UINT16 level) { diff --git a/src/p_user.c b/src/p_user.c index 4a36b19ae..bec4a06a6 100644 --- a/src/p_user.c +++ b/src/p_user.c @@ -1917,7 +1917,11 @@ static void P_3dMovement(player_t *player) vector3_t totalthrust; totalthrust.x = totalthrust.y = 0; // I forget if this is needed - totalthrust.z = FixedMul(mapobjectscale, K_GrowShrinkSpeedMul(player))*P_MobjFlip(player->mo)/3; // A bit of extra push-back on slopes + + if (G_CompatLevel(0x000B)) // Ring Racers 2.1 behavior + totalthrust.z = FRACUNIT*P_MobjFlip(player->mo)/3; // A bit of extra push-back on slopes + else + totalthrust.z = FixedMul(mapobjectscale, K_GrowShrinkSpeedMul(player))*P_MobjFlip(player->mo)/3; // A bit of extra push-back on slopes if (K_SlopeResistance(player) == true) { From 7b6f5c9d231b9026c08adf5855033c3c5eebb378 Mon Sep 17 00:00:00 2001 From: Ashnal Date: Sat, 4 May 2024 14:32:01 -0400 Subject: [PATCH 3/3] More informative comment --- src/p_user.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/p_user.c b/src/p_user.c index bec4a06a6..c23f9e1f8 100644 --- a/src/p_user.c +++ b/src/p_user.c @@ -1921,7 +1921,7 @@ static void P_3dMovement(player_t *player) if (G_CompatLevel(0x000B)) // Ring Racers 2.1 behavior totalthrust.z = FRACUNIT*P_MobjFlip(player->mo)/3; // A bit of extra push-back on slopes else - totalthrust.z = FixedMul(mapobjectscale, K_GrowShrinkSpeedMul(player))*P_MobjFlip(player->mo)/3; // A bit of extra push-back on slopes + totalthrust.z = FixedMul(mapobjectscale, K_GrowShrinkSpeedMul(player))*P_MobjFlip(player->mo)/3; // A bit of extra push-back on slopes, but scaled for mapobject and player size if (K_SlopeResistance(player) == true) {