From 1eabec187a96ec10bade0dbc58db93f635967b18 Mon Sep 17 00:00:00 2001 From: GenericHeroGuy Date: Sun, 7 Sep 2025 01:46:27 +0200 Subject: [PATCH 1/3] Fix gamestate reloads --- src/d_clisrv.c | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/src/d_clisrv.c b/src/d_clisrv.c index 31f298f6f..ba5d2ec4b 100644 --- a/src/d_clisrv.c +++ b/src/d_clisrv.c @@ -5741,6 +5741,17 @@ boolean TryRunTics(tic_t realtics) COM_BufTicker(); if (mapchangepending) D_MapChange(-1, 0, encoremode, false, 2, false, fromlevelselect); // finish the map change + + // fun fact: this used to be located in NetUpdate! + // as it turns out, reloading the level in rendering code is a very bad idea! + if (client) + { + // If the client just finished redownloading the game state, load it + if (cl_redownloadinggamestate && fileneeded[0].status == FS_FOUND) + CL_ReloadReceivedSavegame(); + + hu_redownloadinggamestate = cl_redownloadinggamestate; + } } NetUpdate(); @@ -6184,12 +6195,7 @@ void NetUpdate(void) if (client) { - // If the client just finished redownloading the game state, load it - if (cl_redownloadinggamestate && fileneeded[0].status == FS_FOUND) - CL_ReloadReceivedSavegame(); - CL_SendClientCmd(); // Send tic cmd - hu_redownloadinggamestate = cl_redownloadinggamestate; } else { From 41c584638e443f8bacd0f7f9f70256dc62f63a59 Mon Sep 17 00:00:00 2001 From: NepDisk Date: Sun, 7 Sep 2025 11:23:19 -0400 Subject: [PATCH 2/3] Nerf drafting a small bit and give higher speeds an accel bonus --- src/d_netcmd.c | 4 ++-- src/k_kart.c | 20 ++++++++++++++++++-- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/src/d_netcmd.c b/src/d_netcmd.c index c942b3713..e9012eafb 100644 --- a/src/d_netcmd.c +++ b/src/d_netcmd.c @@ -510,10 +510,10 @@ consvar_t cv_kartstacking_slope_accelboost = CVAR_INIT ("vanillaboost_slope_acce consvar_t cv_kartstacking_slope_stackable = CVAR_INIT ("vanillaboost_slope_stackable", "On", CV_NETVAR, CV_OnOff, NULL); // Max speed for high speeds -consvar_t cv_kartstacking_drafting_minspeed = CVAR_INIT ("vanillaboost_draft_minspeed", "0.22", CV_NETVAR|CV_CHEAT|CV_FLOAT, CV_Unsigned, NULL); +consvar_t cv_kartstacking_drafting_minspeed = CVAR_INIT ("vanillaboost_draft_minspeed", "0.16", CV_NETVAR|CV_CHEAT|CV_FLOAT, CV_Unsigned, NULL); // Max speed for low speeds -consvar_t cv_kartstacking_drafting_maxspeed = CVAR_INIT ("vanillaboost_draft_maxspeed", "0.32", CV_NETVAR|CV_CHEAT|CV_FLOAT, CV_Unsigned, NULL); +consvar_t cv_kartstacking_drafting_maxspeed = CVAR_INIT ("vanillaboost_draft_maxspeed", "0.26", CV_NETVAR|CV_CHEAT|CV_FLOAT, CV_Unsigned, NULL); consvar_t cv_kartchaining = CVAR_INIT ("kartchaining", "No", CV_NETVAR|CV_CALL|CV_NOINIT, CV_YesNo, KartChaining_OnChange); consvar_t cv_kartchainingoffroad = CVAR_INIT ("kartchaining_chainoffroad", "No", CV_NETVAR, CV_YesNo, NULL); diff --git a/src/k_kart.c b/src/k_kart.c index 68817600f..8787c8cac 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -3975,7 +3975,7 @@ static void K_UpdateSlopeBoost(player_t *player) static fixed_t K_BoostRescale(fixed_t value,fixed_t oldmin,fixed_t oldmax,fixed_t newmin,fixed_t newmax) { - return newmin + FixedMul(FixedDiv( value-oldmin , oldmax-oldmin), newmax-newmin); + return newmin + FixedMul(FixedDiv(value-oldmin , oldmax-oldmin), newmax-newmin); } // sets boostpower, speedboost and accelboost to whatever we need it to be @@ -4062,7 +4062,7 @@ static void K_GetKartBoostPower(player_t *player) K_DoBoost(player, player->slopeboost, player->slopeaccel, SLOPESTACKABLE, false); // + ???% top speed, + 300% acceleration } - // This should always remain the last boost + // This should always remain the last boost before drafting if (player->botvars.rubberband > FRACUNIT && K_PlayerUsesBotMovement(player) == true) { //K_DoBoost(player, player->botvars.rubberband - FRACUNIT, 0, false, false); @@ -4073,9 +4073,25 @@ static void K_GetKartBoostPower(player_t *player) if (player->draftpower > 0) // Drafting { fixed_t draftspeed = K_BoostRescale(player->kartspeed*FRACUNIT, 9*FRACUNIT, FRACUNIT, DRAFTMINSPEED, DRAFTMAXSPEED); + fixed_t bonusaccel = K_BoostRescale(player->kartspeed*FRACUNIT, 4*FRACUNIT, 9*FRACUNIT, 0, FRACUNIT/2); player->boostinfo.stackspeedboost += FixedMul(draftspeed, player->draftpower); player->boostinfo.nonstackspeedboost = max(player->boostinfo.nonstackspeedboost, FixedMul(draftspeed, player->draftpower)); + + // Now for a small amount of bonus accel for higher speeds. + if (player->draftpower >= FRACUNIT && player->kartspeed > 4) + { + // CONS_Printf("bonusaccel: %d\n", bonusaccel); + if (cv_kartstacking_accelstack.value && K_StackingActive()) + { + player->boostinfo.accelboost += bonusaccel; + } + else + { + player->boostinfo.accelboost = max(player->boostinfo.accelboost, bonusaccel); + } + } + player->boostinfo.grade++; } From 9986f9aaef87aac63d5841692086444b2c01b3b5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gustaf=20Alh=C3=A4ll?= Date: Sat, 23 Aug 2025 17:30:18 +0200 Subject: [PATCH 3/3] Fix OS-specific behavior caused by integer overflow on Lua numbers --- src/blua/lobject.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/blua/lobject.c b/src/blua/lobject.c index 0250de21d..e74ae05a8 100644 --- a/src/blua/lobject.c +++ b/src/blua/lobject.c @@ -89,8 +89,12 @@ int luaO_rawequalObj (const TValue *t1, const TValue *t2) { int luaO_str2d (const char *s, lua_Number *result) { char *endptr; - double r = lua_str2number(s, &endptr); - *result = (lua_Number)r; + long r = lua_str2number(s, &endptr); + if (r > INT32_MAX) + r = INT32_MAX; + else if (r < INT32_MIN) + r = INT32_MIN; + *result = (lua_Number)r; if (endptr == s) return 0; /* conversion failed */ if (*endptr == 'x' || *endptr == 'X') /* maybe an hexadecimal constant? */ *result = cast_num(strtoul(s, &endptr, 16));