From 8b04551c963567115eaf379f5add113d5250ea00 Mon Sep 17 00:00:00 2001 From: NepDisk Date: Tue, 9 Dec 2025 07:25:40 -0500 Subject: [PATCH 1/2] Fix Lua crash for Player Lib --- src/lua_playerlib.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/lua_playerlib.c b/src/lua_playerlib.c index 1b2a9c99a..bfb364119 100644 --- a/src/lua_playerlib.c +++ b/src/lua_playerlib.c @@ -1397,7 +1397,7 @@ static int player_get(lua_State *L) return 1; } -#define NOSET luaL_error(L, LUA_QL("player_t") " field " LUA_QS " should not be set directly.", field) +#define NOSET luaL_error(L, LUA_QL("player_t") " field " LUA_QS " should not be set directly.", player_opt[field]) static int player_set(lua_State *L) { player_t *plr = *((player_t **)luaL_checkudata(L, 1, META_PLAYER)); @@ -2791,8 +2791,8 @@ static int karthud_len(lua_State *L) } // player.cmd get/set -#define NOFIELD luaL_error(L, LUA_QL("ticcmd_t") " has no field named " LUA_QS, field) -#define NOSET luaL_error(L, LUA_QL("ticcmd_t") " field " LUA_QS " cannot be set.", field) +#define NOFIELD luaL_error(L, "%s %s", LUA_QL("ticcmd_t"), va("has no field named %ui", field)) +#define NOSET luaL_error(L, LUA_QL("ticcmd_t") " field " LUA_QS " cannot be set.", ticcmd_opt[field]) enum ticcmd_e { From 75ecc81e2303cbfb9dde89fc15f3a1137b398a4e Mon Sep 17 00:00:00 2001 From: GenericHeroGuy Date: Tue, 9 Dec 2025 17:59:13 +0100 Subject: [PATCH 2/2] Hashes and tweaks for new patches --- src/d_main.cpp | 4 ++-- src/f_finale.c | 3 +++ src/k_bot.cpp | 6 +++--- src/k_hud.c | 12 +++++------- 4 files changed, 13 insertions(+), 12 deletions(-) diff --git a/src/d_main.cpp b/src/d_main.cpp index d067fe673..75bfe8216 100644 --- a/src/d_main.cpp +++ b/src/d_main.cpp @@ -94,8 +94,8 @@ #define ASSET_HASH_TEXTURES_KART 0xb4211b2f32b6a291 #define ASSET_HASH_CHARS_KART 0x1e68a3e01aa5c68b #define ASSET_HASH_MAPS_KART 0x38558ed00da41ce9 -#define ASSET_HASH_MAIN_PK3 0xf1d3865cfcb63317 -#define ASSET_HASH_MAPPATCH_PK3 0x0afd8afc6fc50175 +#define ASSET_HASH_MAIN_PK3 0xfea5cf465c3a62d1 +#define ASSET_HASH_MAPPATCH_PK3 0x5928d3af98c18214 #define ASSET_HASH_BONUSCHARS_KART 0x60e6f13d822a7461 #ifdef USE_PATCH_FILE #define ASSET_HASH_PATCH_PK3 0x0000000000000000 diff --git a/src/f_finale.c b/src/f_finale.c index 301edae29..04ea7aed8 100644 --- a/src/f_finale.c +++ b/src/f_finale.c @@ -972,6 +972,9 @@ const char *blancredits[] = { "\"ArcadeStriker\"", "\"Lugent\"", "\"WumboSpasm\"", + "\"luna\"", + "\"Super Chris\"", + "\"Sunflower\" aka \"AnimeSonic\"", "", // Anyone who's been directly involved with getting rid of SIGSEGV // culprits gets credited here. diff --git a/src/k_bot.cpp b/src/k_bot.cpp index 75fa915f2..f242d9381 100644 --- a/src/k_bot.cpp +++ b/src/k_bot.cpp @@ -83,7 +83,7 @@ void K_DrawBotDebugger(const player_t *player) V_DrawThinString(x2, y+32, vflags|(bd->driftlockout ? V_ORANGEMAP : 0), va("driftlockout: %d", bd->driftlockout)); V_DrawThinString(x1, y+40, vflags, va("driftturn: %d", bd->driftturn)); V_DrawThinString(x2, y+40, vflags, va("drifttime: %d", bd->drifttime)); - V_DrawThinString(x1, y+48, vflags, va("preditionerror: %d", bd->predictionerror)); + V_DrawThinString(x1, y+48, vflags, va("predicterr: %.1f", ((double)(INT32)bd->predictionerror)/ANG1)); V_DrawThinString(x2, y+48, vflags|(bd->griplockout ? V_ORANGEMAP : 0), va("griplockout: %d", bd->griplockout)); } @@ -1905,9 +1905,9 @@ void K_BotReborn(const player_t *player) bd->driftskill = FixedMul(MAXDRIFTSKILL, K_BotDetermineDriftSkill(player)); // drift parameters, just fixed values for now - bd->driftmaxdist = 200 + gamespeed*50; + bd->driftmaxdist = 300; bd->driftpowerdiv = 40; - bd->driftstatedelay = TICRATE/2 - gamespeed*5; + bd->driftstatedelay = TICRATE/5; } void K_BotResetItemConfirm(const player_t *player, boolean setdelay) diff --git a/src/k_hud.c b/src/k_hud.c index 3e420e7fa..30ba2175c 100644 --- a/src/k_hud.c +++ b/src/k_hud.c @@ -5774,14 +5774,12 @@ static void K_DrawWaypointDebugger(void) return; if (stplyr->bigwaypointgap) - { - V_DrawString(8, 130, 0, va("Auto Respawn Timer: %d", stplyr->bigwaypointgap)); - } + V_DrawString(8, 140, 0, va("Auto Respawn Timer: %d", stplyr->bigwaypointgap)); - V_DrawString(8, 140, 0, va("Current Waypoint ID: %d", K_GetWaypointID(stplyr->currentwaypoint))); - V_DrawString(8, 150, 0, va("Next Waypoint ID: %d", K_GetWaypointID(stplyr->nextwaypoint))); - V_DrawString(8, 160, 0, va("Finishline Distance: %d", stplyr->distancetofinish)); - V_DrawString(8, 170, 0, va("Waypoint DtF: %d", stplyr->currentwaypoint ? stplyr->currentwaypoint->distancetofinish : -1)); + V_DrawString(8, 150, 0, va("Current Waypoint ID: %d", K_GetWaypointID(stplyr->currentwaypoint))); + V_DrawString(8, 160, 0, va("Next Waypoint ID: %d", K_GetWaypointID(stplyr->nextwaypoint))); + V_DrawString(8, 170, 0, va("Finishline Distance: %d (WP %d)", stplyr->distancetofinish, + stplyr->currentwaypoint ? stplyr->currentwaypoint->distancetofinish : -1)); } static void K_DrawClusterDebugger(void)