diff --git a/src/g_demo.cpp b/src/g_demo.cpp index 2f9c64626..f0df146b6 100644 --- a/src/g_demo.cpp +++ b/src/g_demo.cpp @@ -182,9 +182,10 @@ demoghost *ghosts = NULL; // - 0x000F -- RR 2.4 indev (staff ghosts part 2 - dynslopes thinker fix) // - 0x0010 -- RR 2.4 rc1 (staff ghosts part 3 - skinlimit raise. don't say we never did anythin for 'ya) // - 0x0011 -- RR 2.4 rc2 (K_FlipFromObject oversight) +// - 0x0012 -- RR 2.4 rc6 (Waterskii regression from 2.3) #define MINDEMOVERSION 0x000E -#define DEMOVERSION 0x0011 +#define DEMOVERSION 0x0012 boolean G_CompatLevel(UINT16 level) { diff --git a/src/k_kart.c b/src/k_kart.c index f5ce718ca..fe67e3ff5 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -3323,10 +3323,8 @@ boolean K_WaterRun(mobj_t *mobj) return false; } - case MT_PLAYER: + case MT_PLAYER: // Waterskii { - fixed_t minspeed = 0; - if (mobj->player == NULL) { return false; @@ -3337,11 +3335,22 @@ boolean K_WaterRun(mobj_t *mobj) return K_IsHoldingDownTop(mobj->player) == false; } - minspeed = K_PlayerTripwireSpeedThreshold(mobj->player); + fixed_t basefullspeed = K_GetKartSpeed(mobj->player, false, false); + fixed_t minspeed = K_PlayerTripwireSpeedThreshold(mobj->player); - if (mobj->player->speed < minspeed / 5) // 40% + if (G_CompatLevel(0x0011)) { - return false; + if (mobj->player->speed < minspeed / 5) // 40% + { + return false; + } + } + else // Don't factor tripwire speed for pre-boost cutoff + { + if (mobj->player->speed < basefullspeed * 2/3) // 66% + { + return false; + } } if (mobj->player->invincibilitytimer diff --git a/src/k_terrain.c b/src/k_terrain.c index a065827aa..be8cce4f8 100644 --- a/src/k_terrain.c +++ b/src/k_terrain.c @@ -603,6 +603,15 @@ void K_ProcessTerrainEffect(mobj_t *mo) player->dashpadcooldown = TICRATE/3; player->trickpanel = TRICKSTATE_NONE; player->floorboost = 2; + + if (G_CompatLevel(0x0011)) + { + // Old behavior, no grease + } + else + { + player->tiregrease = TICRATE/2; + } S_StartSound(player->mo, sfx_cdfm62); }