From dd15f7cc67b0ee9df9a70ef53c3ac8c48f788653 Mon Sep 17 00:00:00 2001 From: minenice55 Date: Wed, 28 Jan 2026 02:00:11 -0500 Subject: [PATCH] billion config cvars, add recovery dash to menus --- src/d_main.cpp | 2 +- src/d_netcmd.c | 49 +++++++++++++++++++++++++++++++++++++++++++++++-- src/d_netcmd.h | 11 +++++++++++ src/k_kart.c | 50 ++++++++++++++++++++++++++++++++++++++++---------- src/k_kart.h | 9 +++++++++ src/p_mobj.h | 1 + src/p_setup.c | 1 + 7 files changed, 110 insertions(+), 13 deletions(-) diff --git a/src/d_main.cpp b/src/d_main.cpp index c98a9b2cd..e1e6c3722 100644 --- a/src/d_main.cpp +++ b/src/d_main.cpp @@ -93,7 +93,7 @@ #define ASSET_HASH_TEXTURES_KART 0xb4211b2f32b6a291 #define ASSET_HASH_CHARS_KART 0x1e68a3e01aa5c68b #define ASSET_HASH_MAPS_KART 0x38558ed00da41ce9 -#define ASSET_HASH_MAIN_PK3 0xbfb32f5c97ecf875 +#define ASSET_HASH_MAIN_PK3 0x74f5f90d7c8b863d #define ASSET_HASH_MAPPATCH_PK3 0xbbc2c6a7a685da3a #define ASSET_HASH_BONUSCHARS_KART 0x60e6f13d822a7461 #ifdef USE_PATCH_FILE diff --git a/src/d_netcmd.c b/src/d_netcmd.c index a6aad1bfe..df85b273b 100644 --- a/src/d_netcmd.c +++ b/src/d_netcmd.c @@ -170,6 +170,7 @@ static void KartSlopeBoost_OnChange(void); static void KartDrafting_OnChange(void); static void KartAirDrop_OnChange(void); static void KartAirThrust_OnChange(void); +static void KartRecoveryDash_OnChange(void); static void KartWaterSkipLock_OnChange(void); static void KartItemLitter_OnChange(void); static void KartItemPush_OnChange(void); @@ -549,9 +550,17 @@ consvar_t cv_kartstacking_ring_accelboost = CVAR_INIT ("vanillaboost_ring_accelb consvar_t cv_kartstacking_ring_handleboost = CVAR_INIT ("vanillaboost_ring_handleboost", "0", CV_NETVAR|CV_CHEAT|CV_FLOAT|CV_GUARD, CV_Unsigned, NULL); consvar_t cv_kartstacking_ring_stackable = CVAR_INIT ("vanillaboost_ring_stackable", "On", CV_NETVAR|CV_CHEAT|CV_GUARD, CV_OnOff, NULL); -consvar_t cv_kartstacking_ssmt_speedboost = CVAR_INIT ("vanillaboost_ssmt_speedboost", "0.05", CV_NETVAR|CV_CHEAT|CV_FLOAT|CV_GUARD, CV_Unsigned, NULL); +consvar_t cv_kartstacking_ssmt_speedboost = CVAR_INIT ("vanillaboost_ssmt_speedboost", "0.1", CV_NETVAR|CV_CHEAT|CV_FLOAT|CV_GUARD, CV_Unsigned, NULL); consvar_t cv_kartstacking_ssmt_accelboost = CVAR_INIT ("vanillaboost_ssmt_accelboost", "8.0", CV_NETVAR|CV_CHEAT|CV_FLOAT|CV_GUARD, CV_Unsigned, NULL); -consvar_t cv_kartstacking_ssmt_handleboost = CVAR_INIT ("vanillaboost_ssmt_handleboost", "0.25", CV_NETVAR|CV_CHEAT|CV_FLOAT|CV_GUARD, CV_Unsigned, NULL); +consvar_t cv_kartstacking_ssmt_handleboost = CVAR_INIT ("vanillaboost_ssmt_handleboost", "0.1", CV_NETVAR|CV_CHEAT|CV_FLOAT|CV_GUARD, CV_Unsigned, NULL); + +consvar_t cv_kartstacking_recspin_speedboost_lo = CVAR_INIT ("vanillaboost_recspin_speedboost_lo", "0.0001", CV_NETVAR|CV_CHEAT|CV_FLOAT|CV_GUARD, CV_Unsigned, NULL); +consvar_t cv_kartstacking_recspin_accelboost_lo = CVAR_INIT ("vanillaboost_recspin_accelboost_lo", "2.0", CV_NETVAR|CV_CHEAT|CV_FLOAT|CV_GUARD, CV_Unsigned, NULL); +consvar_t cv_kartstacking_recspin_handleboost_lo = CVAR_INIT ("vanillaboost_recspin_handleboost_lo", "0.25", CV_NETVAR|CV_CHEAT|CV_FLOAT|CV_GUARD, CV_Unsigned, NULL); + +consvar_t cv_kartstacking_recspin_speedboost_hi = CVAR_INIT ("vanillaboost_recspin_speedboost_hi", "0.0001", CV_NETVAR|CV_CHEAT|CV_FLOAT|CV_GUARD, CV_Unsigned, NULL); +consvar_t cv_kartstacking_recspin_accelboost_hi = CVAR_INIT ("vanillaboost_recspin_accelboost_hi", "6.0", CV_NETVAR|CV_CHEAT|CV_FLOAT|CV_GUARD, CV_Unsigned, NULL); +consvar_t cv_kartstacking_recspin_handleboost_hi = CVAR_INIT ("vanillaboost_recspin_handleboost_hi", "0.3", CV_NETVAR|CV_CHEAT|CV_FLOAT|CV_GUARD, CV_Unsigned, NULL); consvar_t cv_kartstacking_slope_decay = CVAR_INIT ("vanillaboost_slope_decay", "0.004", CV_NETVAR|CV_CHEAT|CV_FLOAT|CV_GUARD, CV_Unsigned, NULL); consvar_t cv_kartstacking_slope_brakemod = CVAR_INIT ("vanillaboost_slope_brakemod", "0.01", CV_NETVAR|CV_CHEAT|CV_FLOAT|CV_GUARD, CV_Unsigned, NULL); @@ -621,6 +630,9 @@ consvar_t cv_kartforcelegacyodds = CVAR_INIT ("kartforcelegacyodds", "Off", CV_N consvar_t cv_handleboostslip = CVAR_INIT ("karthandleboostsliptide", "Off", CV_NETVAR, CV_OnOff, NULL); +consvar_t cv_kartrecoverydash = CVAR_INIT ("kartrecoverydash", "No", CV_NETVAR|CV_CALL|CV_NOINIT|CV_GUARD, CV_YesNo, KartRecoveryDash_OnChange); +consvar_t cv_kartrecoverydash_spinspeed = CVAR_INIT ("kartrecoverydash_spinspeed", "22.0", CV_NETVAR|CV_FLOAT|CV_CHEAT|CV_GUARD, CV_Unsigned, NULL); + #define ANTIBUMP_MAX (UINT32_MAX / TICRATE) static CV_PossibleValue_t antibump_cons_t[] = {{0, "MIN"}, {ANTIBUMP_MAX, "MAX"}, {0, NULL}}; consvar_t cv_kartantibump = CVAR_INIT ("kartantibump", "0", CV_NETVAR|CV_CALL|CV_NOINIT, antibump_cons_t, KartAntiBump_OnChange); @@ -8504,6 +8516,39 @@ static void KartAirThrust_OnChange(void) } } +static void KartRecoveryDash_OnChange(void) +{ + if (K_CanChangeRules(false) == false) + { + return; + } + + if (!K_RecoveryDashActive() && cv_kartrecoverydash.value) + { + if (leveltime < starttime) + { + recoverydashactive = true; + CONS_Printf(M_GetText("Recovery Dash has been turned \"On\".\n")); + } + else + { + CONS_Printf(M_GetText("Recovery Dash will be turned \"On\" Next Round.\n")); + } + } + else if (K_RecoveryDashActive() && !cv_kartrecoverydash.value) + { + if (leveltime < starttime) + { + recoverydashactive = false; + CONS_Printf(M_GetText("Recovery Dash has been turned \"Off\".\n")); + } + else + { + CONS_Printf(M_GetText("Recovery Dash will be turned \"Off\" next round.\n")); + } + } +} + static void KartWaterSkipLock_OnChange(void) { if (K_CanChangeRules(false) == false) diff --git a/src/d_netcmd.h b/src/d_netcmd.h index 1123d3a71..8b5b1cc66 100644 --- a/src/d_netcmd.h +++ b/src/d_netcmd.h @@ -171,6 +171,14 @@ extern consvar_t cv_kartstacking_ssmt_speedboost; extern consvar_t cv_kartstacking_ssmt_accelboost; extern consvar_t cv_kartstacking_ssmt_handleboost; +extern consvar_t cv_kartstacking_recspin_speedboost_lo; +extern consvar_t cv_kartstacking_recspin_accelboost_lo; +extern consvar_t cv_kartstacking_recspin_handleboost_lo; + +extern consvar_t cv_kartstacking_recspin_speedboost_hi; +extern consvar_t cv_kartstacking_recspin_accelboost_hi; +extern consvar_t cv_kartstacking_recspin_handleboost_hi; + extern consvar_t cv_kartstacking_slope_decay; extern consvar_t cv_kartstacking_slope_brakemod; extern consvar_t cv_kartstacking_slope_speedboost_max; @@ -234,6 +242,9 @@ extern consvar_t cv_kartforcelegacyodds; extern consvar_t cv_handleboostslip; +extern consvar_t cv_kartrecoverydash; +extern consvar_t cv_kartrecoverydash_spinspeed; + extern consvar_t cv_kartoddsdist; extern consvar_t cv_kartlegacyoddsdist; diff --git a/src/k_kart.c b/src/k_kart.c index 95b8a363f..0695a6f9d 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -361,6 +361,13 @@ void K_RegisterKartStuff(void) CV_RegisterVar(&cv_kartstacking_ssmt_accelboost); CV_RegisterVar(&cv_kartstacking_ssmt_handleboost); + CV_RegisterVar(&cv_kartstacking_recspin_speedboost_lo); + CV_RegisterVar(&cv_kartstacking_recspin_accelboost_lo); + CV_RegisterVar(&cv_kartstacking_recspin_handleboost_lo); + CV_RegisterVar(&cv_kartstacking_recspin_speedboost_hi); + CV_RegisterVar(&cv_kartstacking_recspin_accelboost_hi); + CV_RegisterVar(&cv_kartstacking_recspin_handleboost_hi); + CV_RegisterVar(&cv_kartstacking_slope_decay); CV_RegisterVar(&cv_kartstacking_slope_brakemod); CV_RegisterVar(&cv_kartstacking_slope_speedboost_max); @@ -411,6 +418,9 @@ void K_RegisterKartStuff(void) CV_RegisterVar(&cv_kartslopeboost); + CV_RegisterVar(&cv_kartrecoverydash); + CV_RegisterVar(&cv_kartrecoverydash_spinspeed); + CV_RegisterVar(&cv_kartaltshrinktime); CV_RegisterVar(&cv_kartinvintheme); @@ -2847,11 +2857,11 @@ static void K_GetKartBoostPower(player_t *player) { if (player->flashing || player->recoverydashcharge >= TICRATE) { - K_DoBoost(player, 1, 4*FRACUNIT, FRACUNIT/4, false, false); // + 400% acceleration, + 25% handling + K_DoBoost(player, RECSPINSPEEDBOOSTHI, RECSPINACCELBOOSTHI, RECSPINHANDLEBOOSTHI, false, false); // + 500% acceleration, + 25% handling } else { - K_DoBoost(player, 1, 2*FRACUNIT, FRACUNIT/4, false, false);// + 200% acceleration, + 25% handling + K_DoBoost(player, RECSPINSPEEDBOOSTLO, RECSPINACCELBOOSTLO, RECSPINHANDLEBOOSTLO, false, false);// + 200% acceleration, + 25% handling } } @@ -9647,17 +9657,18 @@ static void K_KartSlipdash(player_t *player, boolean onground) static boolean K_PlayerCanStartSsmt(player_t *player) { - return (P_IsObjectOnGround(player->mo) && player->speed <= 10*player->mo->scale && (!(player->pflags & PF_CHARGINGSSMT)) && + return (K_RecoveryDashActive() && P_IsObjectOnGround(player->mo) && + player->speed <= 12*player->mo->scale && (!(player->pflags & PF_CHARGINGSSMT)) && (player->cmd.buttons & BT_ACCELERATE) && (player->cmd.buttons & BT_BRAKE)); } static boolean K_PlayerCanChargeSsmt(player_t *player) { - return (leveltime > starttime && + return (K_RecoveryDashActive() && leveltime > starttime && !(player->sneakertimer || K_IsPlayerDamaged(player) || player->squishedtimer || player->exiting)); } -static void K_StandStillMiniTurbo(player_t *player, boolean onground) +static void K_StandStillMiniTurbo(player_t *player) { if (K_PlayerCanChargeSsmt(player)) { @@ -9670,7 +9681,7 @@ static void K_StandStillMiniTurbo(player_t *player, boolean onground) { if ((player->cmd.buttons & BT_ACCELERATE) && (player->cmd.buttons & BT_BRAKE)) { - player->forcedtopspeed = 22*FRACUNIT; + player->forcedtopspeed = cv_kartrecoverydash_spinspeed.value; if (P_IsObjectOnGround(player->mo)) { player->recoverydashcharge += 1; @@ -9695,8 +9706,9 @@ static void K_StandStillMiniTurbo(player_t *player, boolean onground) fixed_t newx; fixed_t newy; mobj_t *spark; - angle_t travelangle; + angle_t travelangle, sparkangle; travelangle = player->mo->angle; + sparkangle = R_PointToAngle2(0, 0, player->mo->momx, player->mo->momy); for (INT32 i = 0; i < 2; i++) { newx = player->mo->x + P_ReturnThrustX(player->mo, travelangle + ((i&1) ? -1 : 1)*ANGLE_135, FixedMul(32*FRACUNIT, player->mo->scale)); @@ -9706,10 +9718,17 @@ static void K_StandStillMiniTurbo(player_t *player, boolean onground) spark->momy = player->mo->momy/2; P_SetTarget(&spark->target, player->mo); - spark->angle = travelangle; + spark->angle = sparkangle; spark->color = SKINCOLOR_WHITE; - P_SetMobjState(spark, S_DRIFTSPARK_A1); + if (player->recoverydashcharge >= 2*TICRATE + TICRATE/4) + { + P_SetMobjState(spark, S_DRIFTSPARK_B1); + } + else + { + P_SetMobjState(spark, S_DRIFTSPARK_A1); + } K_MatchGenericExtraFlags(spark, player->mo); } } @@ -11193,7 +11212,7 @@ void K_MoveKartPlayer(player_t *player, boolean onground) K_KartSlipdash(player, onground); - K_StandStillMiniTurbo(player, onground); + K_StandStillMiniTurbo(player); // Quick Turning // You can't turn your kart when you're not moving. @@ -11558,6 +11577,17 @@ boolean K_AirThrustActive(void) return false; } +boolean K_RecoveryDashActive(void) +{ + if (recoverydashactive) + { + // Recovery Dash is enabled! + return true; + } + + return false; +} + boolean K_WaterskipBricksActive(void) { if (waterskipbricks) diff --git a/src/k_kart.h b/src/k_kart.h index 564ebec8e..5b4d9830c 100644 --- a/src/k_kart.h +++ b/src/k_kart.h @@ -167,6 +167,14 @@ extern vector3_t clusterpoint, clusterdtf; #define SSMTACCELBOOST CV_Get(&cv_kartstacking_ssmt_accelboost) #define SSMTHANDLEBOOST CV_Get(&cv_kartstacking_ssmt_handleboost) +#define RECSPINSPEEDBOOSTLO CV_Get(&cv_kartstacking_recspin_speedboost_lo) +#define RECSPINACCELBOOSTLO CV_Get(&cv_kartstacking_recspin_accelboost_lo) +#define RECSPINHANDLEBOOSTLO CV_Get(&cv_kartstacking_recspin_handleboost_lo) + +#define RECSPINSPEEDBOOSTHI CV_Get(&cv_kartstacking_recspin_speedboost_hi) +#define RECSPINACCELBOOSTHI CV_Get(&cv_kartstacking_recspin_accelboost_hi) +#define RECSPINHANDLEBOOSTHI CV_Get(&cv_kartstacking_recspin_handleboost_hi) + #define SLOPEDECAY CV_Get(&cv_kartstacking_slope_decay) #define SLOPEBRAKEMOD CV_Get(&cv_kartstacking_slope_brakemod) #define SLOPESPEEDBOOSTMAX CV_Get(&cv_kartstacking_slope_speedboost_max) @@ -375,6 +383,7 @@ boolean K_SlopeBoostActive(void); boolean K_DraftingActive(void); boolean K_AirDropActive(void); boolean K_AirThrustActive(void); +boolean K_RecoveryDashActive(void); boolean K_WaterskipBricksActive(void); boolean K_ItemLitterActive(void); boolean K_ItemListActive(void); diff --git a/src/p_mobj.h b/src/p_mobj.h index 4f828cf25..80f0447ba 100644 --- a/src/p_mobj.h +++ b/src/p_mobj.h @@ -619,6 +619,7 @@ extern boolean slopeboostactive; extern boolean draftingactive; extern boolean airdropactive; extern boolean airthrustactive; +extern boolean recoverydashactive; extern boolean waterskipbricks; extern boolean itemlittering; extern boolean itempushing; diff --git a/src/p_setup.c b/src/p_setup.c index 112378981..80ff25a52 100644 --- a/src/p_setup.c +++ b/src/p_setup.c @@ -162,6 +162,7 @@ boolean slopeboostactive; boolean draftingactive; boolean airdropactive; boolean airthrustactive; +boolean recoverydashactive; boolean waterskipbricks; boolean itemlittering; boolean itempushing;