From b9a2878c11ddec63d814add7fd951dfc68e7476c Mon Sep 17 00:00:00 2001 From: NepDisk Date: Fri, 17 Oct 2025 12:07:45 -0400 Subject: [PATCH 1/4] Fix filepath size --- src/g_demo.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/g_demo.h b/src/g_demo.h index 1d7f7705d..c7c9319e2 100644 --- a/src/g_demo.h +++ b/src/g_demo.h @@ -91,7 +91,7 @@ typedef enum { } menudemotype_e; struct menudemo_t { - char filepath[256]; + char filepath[1024]; menudemotype_e type; char title[65]; // Null-terminated for string prints From bf93fafa27a01b5ae0f92de278b203ea419c03ba Mon Sep 17 00:00:00 2001 From: NepDisk Date: Fri, 17 Oct 2025 12:21:54 -0400 Subject: [PATCH 2/4] Use a constant for file path stuff --- src/filesrch.c | 4 ++-- src/filesrch.h | 3 ++- src/g_demo.h | 3 ++- src/m_menu.c | 8 ++++---- 4 files changed, 10 insertions(+), 8 deletions(-) diff --git a/src/filesrch.c b/src/filesrch.c index 5da959b52..033e0b3da 100644 --- a/src/filesrch.c +++ b/src/filesrch.c @@ -44,7 +44,7 @@ consvar_t cv_addons_search_case = CVAR_INIT ("addons_search_case", "No", CV_SAVE static CV_PossibleValue_t addons_search_type_cons_t[] = {{0, "Start"}, {1, "Anywhere"}, {0, NULL}}; consvar_t cv_addons_search_type = CVAR_INIT ("addons_search_type", "Anywhere", CV_SAVE, addons_search_type_cons_t, NULL); -char menupath[1024]; +char menupath[MAXFILEPATH]; size_t menupathindex[menudepth]; size_t menudepthleft = menudepth; @@ -68,7 +68,7 @@ filestatus_t filesearch(char *filename, const char *startpath, UINT64 wantedhash int found = 0; char *searchname = strdup(filename); int depthleft = maxsearchdepth; - char searchpath[1024]; + char searchpath[MAXFILEPATH]; size_t *searchpathindex; dirhandle = (DIR**) malloc(maxsearchdepth * sizeof (DIR*)); diff --git a/src/filesrch.h b/src/filesrch.h index bcf624ed5..9ebff3daf 100644 --- a/src/filesrch.h +++ b/src/filesrch.h @@ -35,7 +35,8 @@ filestatus_t filesearch(char *filename, const char *startpath, UINT64 wantedhash #define menudepth 20 -extern char menupath[1024]; +#define MAXFILEPATH 1024 +extern char menupath[MAXFILEPATH]; extern size_t menupathindex[menudepth]; extern size_t menudepthleft; diff --git a/src/g_demo.h b/src/g_demo.h index c7c9319e2..a9e782cfb 100644 --- a/src/g_demo.h +++ b/src/g_demo.h @@ -18,6 +18,7 @@ #include "doomstat.h" #include "d_event.h" #include "m_textinput.h" +#include "filesrch.h" #ifdef __cplusplus extern "C" { @@ -91,7 +92,7 @@ typedef enum { } menudemotype_e; struct menudemo_t { - char filepath[1024]; + char filepath[MAXFILEPATH]; menudemotype_e type; char title[65]; // Null-terminated for string prints diff --git a/src/m_menu.c b/src/m_menu.c index ad10169a9..4ed53c6a2 100644 --- a/src/m_menu.c +++ b/src/m_menu.c @@ -3327,7 +3327,7 @@ INT32 MR_Addons(INT32 choice) if (cv_addons_option.value == 3 && *cv_addons_folder.string != '\0') pathname = cv_addons_folder.string; - strlcpy(menupath, pathname, 1024); + strlcpy(menupath, pathname, MAXFILEPATH); menupathindex[(menudepthleft = menudepth-1)] = strlen(menupath) + 1; if (menupath[menupathindex[menudepthleft]-2] != PATHSEP[0]) @@ -3425,9 +3425,9 @@ static void M_DrawTemperature(INT32 x, fixed_t t) static char *M_AddonsHeaderPath(void) { UINT32 len; - static char header[1024]; + static char header[MAXFILEPATH]; - strlcpy(header, va("%s folder%s", cv_addons_option.string, menupath+menupathindex[menudepth-1]-1), 1024); + strlcpy(header, va("%s folder%s", cv_addons_option.string, menupath+menupathindex[menudepth-1]-1), MAXFILEPATH); len = strlen(header); if (len > 34) { @@ -3830,7 +3830,7 @@ static void PrepReplayList(void) else { demolist[i].type = MD_NOTLOADED; - snprintf(demolist[i].filepath, 1024, "%s%s", menupath, dirmenu[i] + DIR_STRING); + snprintf(demolist[i].filepath, MAXFILEPATH, "%s%s", menupath, dirmenu[i] + DIR_STRING); sprintf(demolist[i].title, "....."); } } From 4623afe0be38c6269ee0d0bfc56d512eb501fd88 Mon Sep 17 00:00:00 2001 From: GenericHeroGuy Date: Fri, 17 Oct 2025 19:43:25 +0200 Subject: [PATCH 3/4] Flame shield rebalance: better offroad, lower top speed --- src/d_netcmd.c | 2 +- src/k_kart.c | 23 ++++++++++++----------- 2 files changed, 13 insertions(+), 12 deletions(-) diff --git a/src/d_netcmd.c b/src/d_netcmd.c index 02067ef86..a058693e1 100644 --- a/src/d_netcmd.c +++ b/src/d_netcmd.c @@ -500,7 +500,7 @@ consvar_t cv_kartstacking_bubble_speedboost = CVAR_INIT ("vanillaboost_bubble_sp consvar_t cv_kartstacking_bubble_accelboost = CVAR_INIT ("vanillaboost_bubble_accelboost", "4.0", CV_NETVAR|CV_CHEAT|CV_FLOAT, CV_Unsigned, NULL); consvar_t cv_kartstacking_bubble_stackable = CVAR_INIT ("vanillaboost_bubble_stackable", "Off", CV_NETVAR, CV_OnOff, NULL); -consvar_t cv_kartstacking_flame_speedval = CVAR_INIT ("vanillaboost_flame_speedval", "0.90", CV_NETVAR|CV_CHEAT|CV_FLOAT, CV_Unsigned, NULL); +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); diff --git a/src/k_kart.c b/src/k_kart.c index e71bc53b4..655194358 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -919,6 +919,14 @@ static void K_UpdateOffroad(player_t *player) offroad = offroadstrength / (TICRATE/2); + if (player->flamestore) + { + // flame shield doesn't resist offroad, but slows its effect + // it doesn't suffer the offroad speedboost cut; increase offroadstrength to compensate + offroad = 2*offroad/3; + offroadstrength *= 2; + } + player->offroad += offroad; } @@ -2319,8 +2327,8 @@ void K_SpawnWaterTrail(mobj_t *mobj) static fixed_t K_FlameShieldDashVar(INT32 val) { - // 1 second = 15% + ????% top speed - return (FRACUNIT/6) + (((val * (FRACUNIT)) / TICRATE) / 2); + // 1 second = base% + ~16.8% top speed + return FixedMul(val * 500, FixedDiv(FRACUNIT, FRACUNIT + val*FRACUNIT/60)); } static inline fixed_t K_GetProjectileSpeed(void) @@ -2652,14 +2660,7 @@ static void K_GetKartBoostPower(player_t *player) if (player->flamestore) // Flame Shield dash { fixed_t dash = K_FlameShieldDashVar(player->flamedash); - fixed_t intermediate = 0; - fixed_t boost = 0; - fixed_t val = FLAMESPEEDVAL; // Rim idea: diminish starts around 1.2x sneaker speed and plateaus around 1.4-1.5x - - intermediate = FixedDiv(FixedMul(val, FRACUNIT*-1/2) - FRACUNIT/4,-val+FRACUNIT/2); - boost = FixedMul(val,(FRACUNIT-FixedDiv(FRACUNIT,(dash+intermediate)))); - - K_DoBoost(player, boost, FLAMEACCELBOOST, FLAMESTACKABLE, FLAMESTACKABLE); + K_DoBoost(player, FLAMESPEEDVAL + dash, FLAMEACCELBOOST, FLAMESTACKABLE, FLAMESTACKABLE); } if (player->startboost) // Startup Boost @@ -2730,7 +2731,7 @@ static void K_GetKartBoostPower(player_t *player) // value smoothing if (K_StackingActive()) { - if (player->offroad && K_ApplyOffroad(player)) + if (player->offroad && K_ApplyOffroad(player) && !player->flamestore) { player->speedboost = max(finalspeedboost, player->speedboost)/2; player->accelboost = max(finalaccelboost, player->accelboost)/2; From 9392cc1bd739d01c0cefe8d9980281130f9d54c4 Mon Sep 17 00:00:00 2001 From: GenericHeroGuy Date: Fri, 17 Oct 2025 20:44:25 +0200 Subject: [PATCH 4/4] Fix ring underflow --- 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 beaa9d206..ef07e728f 100644 --- a/src/p_user.c +++ b/src/p_user.c @@ -510,7 +510,7 @@ INT32 P_GivePlayerRings(player_t *player, INT32 num_rings) if (test > player->ringmax) // Caps at 20 rings, sorry! num_rings -= (test-player->ringmax); else if (test < player->ringmin) // Chaotix ring debt! - num_rings -= (test+player->ringmin); + num_rings -= (test-player->ringmin); player->rings += num_rings;