billion config cvars, add recovery dash to menus

This commit is contained in:
minenice55 2026-01-28 02:00:11 -05:00
parent 92e74dca27
commit dd15f7cc67
7 changed files with 110 additions and 13 deletions

View file

@ -93,7 +93,7 @@
#define ASSET_HASH_TEXTURES_KART 0xb4211b2f32b6a291 #define ASSET_HASH_TEXTURES_KART 0xb4211b2f32b6a291
#define ASSET_HASH_CHARS_KART 0x1e68a3e01aa5c68b #define ASSET_HASH_CHARS_KART 0x1e68a3e01aa5c68b
#define ASSET_HASH_MAPS_KART 0x38558ed00da41ce9 #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_MAPPATCH_PK3 0xbbc2c6a7a685da3a
#define ASSET_HASH_BONUSCHARS_KART 0x60e6f13d822a7461 #define ASSET_HASH_BONUSCHARS_KART 0x60e6f13d822a7461
#ifdef USE_PATCH_FILE #ifdef USE_PATCH_FILE

View file

@ -170,6 +170,7 @@ static void KartSlopeBoost_OnChange(void);
static void KartDrafting_OnChange(void); static void KartDrafting_OnChange(void);
static void KartAirDrop_OnChange(void); static void KartAirDrop_OnChange(void);
static void KartAirThrust_OnChange(void); static void KartAirThrust_OnChange(void);
static void KartRecoveryDash_OnChange(void);
static void KartWaterSkipLock_OnChange(void); static void KartWaterSkipLock_OnChange(void);
static void KartItemLitter_OnChange(void); static void KartItemLitter_OnChange(void);
static void KartItemPush_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_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_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_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_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); 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_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) #define ANTIBUMP_MAX (UINT32_MAX / TICRATE)
static CV_PossibleValue_t antibump_cons_t[] = {{0, "MIN"}, {ANTIBUMP_MAX, "MAX"}, {0, NULL}}; 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); 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) static void KartWaterSkipLock_OnChange(void)
{ {
if (K_CanChangeRules(false) == false) if (K_CanChangeRules(false) == false)

View file

@ -171,6 +171,14 @@ extern consvar_t cv_kartstacking_ssmt_speedboost;
extern consvar_t cv_kartstacking_ssmt_accelboost; extern consvar_t cv_kartstacking_ssmt_accelboost;
extern consvar_t cv_kartstacking_ssmt_handleboost; 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_decay;
extern consvar_t cv_kartstacking_slope_brakemod; extern consvar_t cv_kartstacking_slope_brakemod;
extern consvar_t cv_kartstacking_slope_speedboost_max; 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_handleboostslip;
extern consvar_t cv_kartrecoverydash;
extern consvar_t cv_kartrecoverydash_spinspeed;
extern consvar_t cv_kartoddsdist; extern consvar_t cv_kartoddsdist;
extern consvar_t cv_kartlegacyoddsdist; extern consvar_t cv_kartlegacyoddsdist;

View file

@ -361,6 +361,13 @@ void K_RegisterKartStuff(void)
CV_RegisterVar(&cv_kartstacking_ssmt_accelboost); CV_RegisterVar(&cv_kartstacking_ssmt_accelboost);
CV_RegisterVar(&cv_kartstacking_ssmt_handleboost); 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_decay);
CV_RegisterVar(&cv_kartstacking_slope_brakemod); CV_RegisterVar(&cv_kartstacking_slope_brakemod);
CV_RegisterVar(&cv_kartstacking_slope_speedboost_max); CV_RegisterVar(&cv_kartstacking_slope_speedboost_max);
@ -411,6 +418,9 @@ void K_RegisterKartStuff(void)
CV_RegisterVar(&cv_kartslopeboost); CV_RegisterVar(&cv_kartslopeboost);
CV_RegisterVar(&cv_kartrecoverydash);
CV_RegisterVar(&cv_kartrecoverydash_spinspeed);
CV_RegisterVar(&cv_kartaltshrinktime); CV_RegisterVar(&cv_kartaltshrinktime);
CV_RegisterVar(&cv_kartinvintheme); CV_RegisterVar(&cv_kartinvintheme);
@ -2847,11 +2857,11 @@ static void K_GetKartBoostPower(player_t *player)
{ {
if (player->flashing || player->recoverydashcharge >= TICRATE) 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 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) 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)); (player->cmd.buttons & BT_ACCELERATE) && (player->cmd.buttons & BT_BRAKE));
} }
static boolean K_PlayerCanChargeSsmt(player_t *player) static boolean K_PlayerCanChargeSsmt(player_t *player)
{ {
return (leveltime > starttime && return (K_RecoveryDashActive() && leveltime > starttime &&
!(player->sneakertimer || K_IsPlayerDamaged(player) || player->squishedtimer || player->exiting)); !(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)) 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)) 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)) if (P_IsObjectOnGround(player->mo))
{ {
player->recoverydashcharge += 1; player->recoverydashcharge += 1;
@ -9695,8 +9706,9 @@ static void K_StandStillMiniTurbo(player_t *player, boolean onground)
fixed_t newx; fixed_t newx;
fixed_t newy; fixed_t newy;
mobj_t *spark; mobj_t *spark;
angle_t travelangle; angle_t travelangle, sparkangle;
travelangle = player->mo->angle; travelangle = player->mo->angle;
sparkangle = R_PointToAngle2(0, 0, player->mo->momx, player->mo->momy);
for (INT32 i = 0; i < 2; i++) 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)); 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; spark->momy = player->mo->momy/2;
P_SetTarget(&spark->target, player->mo); P_SetTarget(&spark->target, player->mo);
spark->angle = travelangle; spark->angle = sparkangle;
spark->color = SKINCOLOR_WHITE; 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); K_MatchGenericExtraFlags(spark, player->mo);
} }
} }
@ -11193,7 +11212,7 @@ void K_MoveKartPlayer(player_t *player, boolean onground)
K_KartSlipdash(player, onground); K_KartSlipdash(player, onground);
K_StandStillMiniTurbo(player, onground); K_StandStillMiniTurbo(player);
// Quick Turning // Quick Turning
// You can't turn your kart when you're not moving. // You can't turn your kart when you're not moving.
@ -11558,6 +11577,17 @@ boolean K_AirThrustActive(void)
return false; return false;
} }
boolean K_RecoveryDashActive(void)
{
if (recoverydashactive)
{
// Recovery Dash is enabled!
return true;
}
return false;
}
boolean K_WaterskipBricksActive(void) boolean K_WaterskipBricksActive(void)
{ {
if (waterskipbricks) if (waterskipbricks)

View file

@ -167,6 +167,14 @@ extern vector3_t clusterpoint, clusterdtf;
#define SSMTACCELBOOST CV_Get(&cv_kartstacking_ssmt_accelboost) #define SSMTACCELBOOST CV_Get(&cv_kartstacking_ssmt_accelboost)
#define SSMTHANDLEBOOST CV_Get(&cv_kartstacking_ssmt_handleboost) #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 SLOPEDECAY CV_Get(&cv_kartstacking_slope_decay)
#define SLOPEBRAKEMOD CV_Get(&cv_kartstacking_slope_brakemod) #define SLOPEBRAKEMOD CV_Get(&cv_kartstacking_slope_brakemod)
#define SLOPESPEEDBOOSTMAX CV_Get(&cv_kartstacking_slope_speedboost_max) #define SLOPESPEEDBOOSTMAX CV_Get(&cv_kartstacking_slope_speedboost_max)
@ -375,6 +383,7 @@ boolean K_SlopeBoostActive(void);
boolean K_DraftingActive(void); boolean K_DraftingActive(void);
boolean K_AirDropActive(void); boolean K_AirDropActive(void);
boolean K_AirThrustActive(void); boolean K_AirThrustActive(void);
boolean K_RecoveryDashActive(void);
boolean K_WaterskipBricksActive(void); boolean K_WaterskipBricksActive(void);
boolean K_ItemLitterActive(void); boolean K_ItemLitterActive(void);
boolean K_ItemListActive(void); boolean K_ItemListActive(void);

View file

@ -619,6 +619,7 @@ extern boolean slopeboostactive;
extern boolean draftingactive; extern boolean draftingactive;
extern boolean airdropactive; extern boolean airdropactive;
extern boolean airthrustactive; extern boolean airthrustactive;
extern boolean recoverydashactive;
extern boolean waterskipbricks; extern boolean waterskipbricks;
extern boolean itemlittering; extern boolean itemlittering;
extern boolean itempushing; extern boolean itempushing;

View file

@ -162,6 +162,7 @@ boolean slopeboostactive;
boolean draftingactive; boolean draftingactive;
boolean airdropactive; boolean airdropactive;
boolean airthrustactive; boolean airthrustactive;
boolean recoverydashactive;
boolean waterskipbricks; boolean waterskipbricks;
boolean itemlittering; boolean itemlittering;
boolean itempushing; boolean itempushing;