From b69eaff9f67ecdeaaa8898bf3adcd9f12b386310 Mon Sep 17 00:00:00 2001 From: NepDisk Date: Sat, 18 Oct 2025 10:30:23 -0400 Subject: [PATCH 1/3] Player validation for player->mo --- src/lua_playerlib.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lua_playerlib.c b/src/lua_playerlib.c index fbe52f59e..08d6659b0 100644 --- a/src/lua_playerlib.c +++ b/src/lua_playerlib.c @@ -602,7 +602,7 @@ static int player_get(lua_State *L) LUA_PushUserdata(L, plr->mo, META_MOBJ); break; case player_mo: - if (plr->spectator) + if (!plr || plr->spectator) lua_pushnil(L); // sigh else LUA_PushUserdata(L, plr->mo, META_MOBJ); From 735600b0a759f8cbafa5486cd89c7f7d4f6681db Mon Sep 17 00:00:00 2001 From: NepDisk Date: Sat, 18 Oct 2025 11:19:14 -0400 Subject: [PATCH 2/3] invalidate more things for safety --- src/lua_script.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/lua_script.c b/src/lua_script.c index b3ffc781f..cb20f1a56 100644 --- a/src/lua_script.c +++ b/src/lua_script.c @@ -1010,6 +1010,7 @@ void LUA_InvalidateLevel(void) LUA_InvalidateUserdata(§ors[i]); LUA_InvalidateUserdata(§ors[i].lines); LUA_InvalidateUserdata(§ors[i].tags); + LUA_InvalidateUserdata(§ors[i].args); if (sectors[i].ffloors) { for (rover = sectors[i].ffloors; rover; rover = rover->next) @@ -1068,6 +1069,8 @@ void LUA_InvalidateMapthings(void) LUA_InvalidateUserdata(&mapthings[i]); LUA_InvalidateUserdata(mapthings[i].args); LUA_InvalidateUserdata(mapthings[i].stringargs); + LUA_InvalidateUserdata(mapthings[i].script_args); + LUA_InvalidateUserdata(mapthings[i].script_stringargs); } } @@ -1079,6 +1082,7 @@ void LUA_InvalidatePlayer(player_t *player) LUA_InvalidateUserdata(player->karthud); LUA_InvalidateUserdata(player->kartstuff); LUA_InvalidateUserdata(player->powers); + LUA_InvalidateUserdata(&player->loop); LUA_InvalidateUserdata(&player->cmd); } @@ -1138,8 +1142,8 @@ static const struct { {META_FFLOOR, ARCH_FFLOOR}, {META_POLYOBJ, ARCH_POLYOBJ}, {META_SLOPE, ARCH_SLOPE}, - {META_MAPHEADER, ARCH_MAPHEADER}, - {META_SKINCOLOR, ARCH_SKINCOLOR}, + {META_MAPHEADER,ARCH_MAPHEADER}, + {META_SKINCOLOR,ARCH_SKINCOLOR}, {NULL, ARCH_NULL} }; From 83f20d4c4e91b55ff224f178567a8eac952ce82a Mon Sep 17 00:00:00 2001 From: NepDisk Date: Sat, 18 Oct 2025 11:42:14 -0400 Subject: [PATCH 3/3] Make flame and invin stack --- src/d_netcmd.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/d_netcmd.c b/src/d_netcmd.c index a058693e1..d9decd5e8 100644 --- a/src/d_netcmd.c +++ b/src/d_netcmd.c @@ -490,7 +490,7 @@ consvar_t cv_kartstacking_invincibility_legacyspeedboost = CVAR_INIT ("vanillabo consvar_t cv_kartstacking_invincibility_legacyaccelboost = CVAR_INIT ("vanillaboost_invincibility_legacyaccelboost", "3.0", CV_NETVAR|CV_CHEAT|CV_FLOAT, CV_Unsigned, NULL); consvar_t cv_kartstacking_invincibility_alternatespeedboost = CVAR_INIT ("vanillaboost_invincibility_alternatespeedboost", "0.68", CV_NETVAR|CV_CHEAT|CV_FLOAT, CV_Unsigned, NULL); consvar_t cv_kartstacking_invincibility_alternateaccelboost = CVAR_INIT ("vanillaboost_invincibility_alternateaccelboost", "3.0", CV_NETVAR|CV_CHEAT|CV_FLOAT, CV_Unsigned, NULL); -consvar_t cv_kartstacking_invincibility_stackable = CVAR_INIT ("vanillaboost_invincibility_stackable", "Off", CV_NETVAR, CV_OnOff, NULL); +consvar_t cv_kartstacking_invincibility_stackable = CVAR_INIT ("vanillaboost_invincibility_stackable", "On", CV_NETVAR, CV_OnOff, NULL); consvar_t cv_kartstacking_grow_speedboost = CVAR_INIT ("vanillaboost_grow_speedboost", "0.2", CV_NETVAR|CV_CHEAT|CV_FLOAT, CV_Unsigned, NULL); consvar_t cv_kartstacking_grow_accelboost = CVAR_INIT ("vanillaboost_grow_accelboost", "0", CV_NETVAR|CV_CHEAT|CV_FLOAT, CV_Unsigned, NULL); @@ -502,7 +502,7 @@ consvar_t cv_kartstacking_bubble_stackable = CVAR_INIT ("vanillaboost_bubble_sta consvar_t cv_kartstacking_flame_speedval = CVAR_INIT ("vanillaboost_flame_speedval", "0.25", CV_NETVAR|CV_CHEAT|CV_FLOAT, CV_Unsigned, NULL); consvar_t cv_kartstacking_flame_accelboost = CVAR_INIT ("vanillaboost_flame_accelboost", "6.0", CV_NETVAR|CV_CHEAT|CV_FLOAT, CV_Unsigned, NULL); -consvar_t cv_kartstacking_flame_stackable = CVAR_INIT ("vanillaboost_flame_stackable", "Off", CV_NETVAR, CV_OnOff, NULL); +consvar_t cv_kartstacking_flame_stackable = CVAR_INIT ("vanillaboost_flame_stackable", "On", CV_NETVAR, CV_OnOff, NULL); consvar_t cv_kartstacking_start_speedboost = CVAR_INIT ("vanillaboost_start_speedboost", "0.25", CV_NETVAR|CV_CHEAT|CV_FLOAT, CV_Unsigned, NULL); consvar_t cv_kartstacking_start_accelboost = CVAR_INIT ("vanillaboost_start_accelboost", "6.0", CV_NETVAR|CV_CHEAT|CV_FLOAT, CV_Unsigned, NULL);