From 036a87f0a2f418766afc9a2f6c672c3f2708af20 Mon Sep 17 00:00:00 2001 From: NepDisk Date: Wed, 9 Apr 2025 18:31:31 -0400 Subject: [PATCH] More stacking customization cvars --- src/d_netcmd.c | 9 +++++++++ src/d_netcmd.h | 8 ++++++++ src/k_kart.c | 32 ++++++++++++++++++++++++-------- src/k_kart.h | 7 +++++++ 4 files changed, 48 insertions(+), 8 deletions(-) diff --git a/src/d_netcmd.c b/src/d_netcmd.c index b1e32db62..c139e9485 100644 --- a/src/d_netcmd.c +++ b/src/d_netcmd.c @@ -450,6 +450,8 @@ consvar_t cv_kartstacking_calc_arg_offset = CVAR_INIT ("kartstacking_calcargoffs consvar_t cv_kartstacking_maxvanillaboost = CVAR_INIT ("kartstacking_maxvanillaboost", "0.375", CV_NETVAR|CV_CHEAT|CV_FLOAT, CV_Unsigned, NULL); consvar_t cv_kartstacking_speedboostdropoff = CVAR_INIT ("kartstacking_speedboostdropoff", "0.01", CV_NETVAR|CV_CHEAT|CV_FLOAT, CV_Unsigned, NULL); consvar_t cv_kartstacking_speedboostdropoff_brake = CVAR_INIT ("kartstacking_speedboostdropoff_brake", "0.05", CV_NETVAR|CV_CHEAT|CV_FLOAT, CV_Unsigned, NULL); +// V recreates neptunes old ass misread of stacking code lmao +consvar_t cv_kartstacking_accelstack = CVAR_INIT ("kartstacking_accelstack", "Off", CV_NETVAR, CV_OnOff, NULL); // Vanilla Stacking boosts. consvar_t cv_kartstacking_sneaker_easyspeedboost = CVAR_INIT ("vanillaboost_sneaker_easyspeedboost", "0.8317", CV_NETVAR|CV_CHEAT|CV_FLOAT, CV_Unsigned, NULL); @@ -457,24 +459,31 @@ consvar_t cv_kartstacking_sneaker_normalspeedboost = CVAR_INIT ("vanillaboost_sn consvar_t cv_kartstacking_sneaker_hardspeedboost = CVAR_INIT ("vanillaboost_sneaker_hardspeedboost", "0.2756", CV_NETVAR|CV_CHEAT|CV_FLOAT, CV_Unsigned, NULL); consvar_t cv_kartstacking_sneaker_accelboost = CVAR_INIT ("vanillaboost_sneaker_accelboost", "8.0", CV_NETVAR|CV_CHEAT|CV_FLOAT, CV_Unsigned, NULL); consvar_t cv_kartstacking_sneaker_maxgrade = CVAR_INIT ("vanillaboost_sneaker_maxgrade", "3", CV_NETVAR|CV_CHEAT, CV_Natural, NULL); +consvar_t cv_kartstacking_sneaker_stackable = CVAR_INIT ("vanillaboost_sneaker_stackable", "On", CV_NETVAR, CV_OnOff, NULL); consvar_t cv_kartstacking_invincibility_speedboost = CVAR_INIT ("vanillaboost_invincibility_speedboost", "0.375", CV_NETVAR|CV_CHEAT|CV_FLOAT, CV_Unsigned, NULL); consvar_t cv_kartstacking_invincibility_accelboost = CVAR_INIT ("vanillaboost_invincibility_accelboost", "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_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); +consvar_t cv_kartstacking_grow_stackable = CVAR_INIT ("vanillaboost_grow_stackable", "Off", CV_NETVAR, CV_OnOff, NULL); consvar_t cv_kartstacking_flame_speedval = CVAR_INIT ("vanillaboost_flame_speedval", "0.80", CV_NETVAR|CV_CHEAT|CV_FLOAT, CV_Unsigned, NULL); consvar_t cv_kartstacking_flame_accelboost = CVAR_INIT ("vanillaboost_flame_accelboost", "3.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_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); +consvar_t cv_kartstacking_start_stackable = CVAR_INIT ("vanillaboost_start_stackable", "On", CV_NETVAR, CV_OnOff, NULL); consvar_t cv_kartstacking_drift_speedboost = CVAR_INIT ("vanillaboost_drift_speedboost", "0.25", CV_NETVAR|CV_CHEAT|CV_FLOAT, CV_Unsigned, NULL); consvar_t cv_kartstacking_drift_accelboost = CVAR_INIT ("vanillaboost_drift_accelboost", "4.0", CV_NETVAR|CV_CHEAT|CV_FLOAT, CV_Unsigned, NULL); +consvar_t cv_kartstacking_drift_stackable = CVAR_INIT ("vanillaboost_drift_stackable", "On", CV_NETVAR, CV_OnOff, NULL); consvar_t cv_kartstacking_ring_speedboost = CVAR_INIT ("vanillaboost_ring_speedboost", "0.2", CV_NETVAR|CV_CHEAT|CV_FLOAT, CV_Unsigned, NULL); consvar_t cv_kartstacking_ring_accelboost = CVAR_INIT ("vanillaboost_ring_accelboost", "4.0", CV_NETVAR|CV_CHEAT|CV_FLOAT, CV_Unsigned, NULL); +consvar_t cv_kartstacking_ring_stackable = CVAR_INIT ("vanillaboost_ring_stackable", "On", CV_NETVAR, CV_OnOff, NULL); consvar_t cv_kartchaining = CVAR_INIT ("kartchaining", "No", CV_NETVAR|CV_CALL|CV_NOINIT, CV_YesNo, KartChaining_OnChange); consvar_t cv_kartchainingoffroad = CVAR_INIT ("kartchaining_chainoffroad", "No", CV_NETVAR, CV_YesNo, NULL); diff --git a/src/d_netcmd.h b/src/d_netcmd.h index c1e7dd2d2..016659871 100644 --- a/src/d_netcmd.h +++ b/src/d_netcmd.h @@ -125,30 +125,38 @@ extern consvar_t cv_kartstacking_calc_arg_offset; extern consvar_t cv_kartstacking_maxvanillaboost; extern consvar_t cv_kartstacking_speedboostdropoff; extern consvar_t cv_kartstacking_speedboostdropoff_brake; +extern consvar_t cv_kartstacking_accelstack; extern consvar_t cv_kartstacking_sneaker_easyspeedboost; extern consvar_t cv_kartstacking_sneaker_normalspeedboost; extern consvar_t cv_kartstacking_sneaker_hardspeedboost; extern consvar_t cv_kartstacking_sneaker_accelboost; extern consvar_t cv_kartstacking_sneaker_maxgrade; +extern consvar_t cv_kartstacking_sneaker_stackable; extern consvar_t cv_kartstacking_invincibility_speedboost; extern consvar_t cv_kartstacking_invincibility_accelboost; +extern consvar_t cv_kartstacking_invincibility_stackable; extern consvar_t cv_kartstacking_flame_speedval; extern consvar_t cv_kartstacking_flame_accelboost; +extern consvar_t cv_kartstacking_flame_stackable; extern consvar_t cv_kartstacking_grow_speedboost; extern consvar_t cv_kartstacking_grow_accelboost; +extern consvar_t cv_kartstacking_grow_stackable; extern consvar_t cv_kartstacking_start_speedboost; extern consvar_t cv_kartstacking_start_accelboost; +extern consvar_t cv_kartstacking_start_stackable; extern consvar_t cv_kartstacking_drift_speedboost; extern consvar_t cv_kartstacking_drift_accelboost; +extern consvar_t cv_kartstacking_drift_stackable; extern consvar_t cv_kartstacking_ring_speedboost; extern consvar_t cv_kartstacking_ring_accelboost; +extern consvar_t cv_kartstacking_ring_stackable; extern consvar_t cv_kartchaining; extern consvar_t cv_kartchainingoffroad; diff --git a/src/k_kart.c b/src/k_kart.c index 88d04dfd4..b3bb1d8d9 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -270,6 +270,7 @@ void K_RegisterKartStuff(void) CV_RegisterVar(&cv_kartstacking_calc_arg_offset); CV_RegisterVar(&cv_kartstacking_speedboostdropoff); CV_RegisterVar(&cv_kartstacking_speedboostdropoff_brake); + CV_RegisterVar(&cv_kartstacking_accelstack); CV_RegisterVar(&cv_kartstacking_colorflame); CV_RegisterVar(&cv_kartstacking_sneakerstacksound); @@ -279,24 +280,31 @@ void K_RegisterKartStuff(void) CV_RegisterVar(&cv_kartstacking_sneaker_hardspeedboost); CV_RegisterVar(&cv_kartstacking_sneaker_accelboost); CV_RegisterVar(&cv_kartstacking_sneaker_maxgrade); + CV_RegisterVar(&cv_kartstacking_sneaker_stackable); CV_RegisterVar(&cv_kartstacking_invincibility_speedboost); CV_RegisterVar(&cv_kartstacking_invincibility_accelboost); + CV_RegisterVar(&cv_kartstacking_invincibility_stackable); CV_RegisterVar(&cv_kartstacking_grow_speedboost); CV_RegisterVar(&cv_kartstacking_grow_accelboost); + CV_RegisterVar(&cv_kartstacking_grow_stackable); CV_RegisterVar(&cv_kartstacking_flame_speedval); CV_RegisterVar(&cv_kartstacking_flame_accelboost); + CV_RegisterVar(&cv_kartstacking_flame_stackable); CV_RegisterVar(&cv_kartstacking_start_speedboost); CV_RegisterVar(&cv_kartstacking_start_accelboost); + CV_RegisterVar(&cv_kartstacking_start_stackable); CV_RegisterVar(&cv_kartstacking_drift_speedboost); CV_RegisterVar(&cv_kartstacking_drift_accelboost); + CV_RegisterVar(&cv_kartstacking_drift_stackable); CV_RegisterVar(&cv_kartstacking_ring_speedboost); CV_RegisterVar(&cv_kartstacking_ring_accelboost); + CV_RegisterVar(&cv_kartstacking_ring_stackable); CV_RegisterVar(&cv_kartchaining); CV_RegisterVar(&cv_kartchainingoffroad); @@ -3378,7 +3386,15 @@ void K_DoBoost(player_t *player, fixed_t speedboost, fixed_t accelboost, boolean } player->boostinfo.nonstackspeedboost = max(player->boostinfo.nonstackspeedboost, speedboost); - player->boostinfo.accelboost = max(player->boostinfo.accelboost, accelboost); + + if (cv_kartstacking_accelstack.value) + { + player->boostinfo.accelboost += accelboost; + } + else + { + player->boostinfo.accelboost = max(player->boostinfo.accelboost, accelboost); + } if (visible) { @@ -3435,18 +3451,18 @@ static void K_GetKartBoostPower(player_t *player) for (i = 0; i < numsneakers; i++) { - K_DoBoost(player, sneakerspeedboost, SNEAKERACCELBOOST, true, true); // + ???% top speed, + 800% acceleration + K_DoBoost(player, sneakerspeedboost, SNEAKERACCELBOOST, SNEAKERSTACKABLE, SNEAKERSTACKABLE); // + ???% top speed, + 800% acceleration } } if (player->invincibilitytimer) // Invincibility { - K_DoBoost(player, INVINSPEEDBOOST, INVINACCELBOOST, false, false); // + 37.5% top speed, + 300% acceleration + K_DoBoost(player, INVINSPEEDBOOST, INVINACCELBOOST, INVINSTACKABLE, INVINSTACKABLE); // + 37.5% top speed, + 300% acceleration } if (player->growshrinktimer > 0) // Grow { - K_DoBoost(player, GROWSPEEDBOOST, GROWACCELBOOST, false, false); // + 20% top speed, + 0% acceleration + K_DoBoost(player, GROWSPEEDBOOST, GROWACCELBOOST, GROWSTACKABLE, GROWSTACKABLE); // + 20% top speed, + 0% acceleration } if (player->flamestore) // Flame Shield dash @@ -3459,22 +3475,22 @@ static void K_GetKartBoostPower(player_t *player) 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, false, false); + K_DoBoost(player, boost, FLAMEACCELBOOST, FLAMESTACKABLE, FLAMESTACKABLE); } if (player->startboost) // Startup Boost { - K_DoBoost(player, STARTSPEEDBOOST, STARTACCELBOOST, true, true); // + 25% top speed, + 600% acceleration + K_DoBoost(player, STARTSPEEDBOOST, STARTACCELBOOST, STARTSTACKABLE, STARTSTACKABLE); // + 25% top speed, + 600% acceleration } if (player->driftboost) // Drift Boost { - K_DoBoost(player, DRIFTSPEEDBOOST, DRIFTACCELBOOST, true, true); // + 25% top speed, + 400% acceleration + K_DoBoost(player, DRIFTSPEEDBOOST, DRIFTACCELBOOST, DRIFTSTACKABLE, DRIFTSTACKABLE); // + 25% top speed, + 400% acceleration } if (player->ringboost) // Ring Boost { - K_DoBoost(player, RINGSPEEDBOOST, RINGACCELBOOST, true, true); // + 20% top speed, + 400% acceleration + K_DoBoost(player, RINGSPEEDBOOST, RINGACCELBOOST, RINGSTACKABLE, RINGSTACKABLE); // + 20% top speed, + 400% acceleration } // This should always remain the last boost diff --git a/src/k_kart.h b/src/k_kart.h index 913e11f9d..d79d0456b 100644 --- a/src/k_kart.h +++ b/src/k_kart.h @@ -51,18 +51,25 @@ Make sure this matches the actual number of states #define HARDSNEAKERSPEEDBOOST cv_kartstacking_sneaker_hardspeedboost.value #define SNEAKERACCELBOOST cv_kartstacking_sneaker_accelboost.value #define MAXSNEAKERSTACK cv_kartstacking_sneaker_maxgrade.value +#define SNEAKERSTACKABLE cv_kartstacking_sneaker_stackable.value #define INVINSPEEDBOOST cv_kartstacking_invincibility_speedboost.value #define INVINACCELBOOST cv_kartstacking_invincibility_accelboost.value +#define INVINSTACKABLE cv_kartstacking_invincibility_stackable.value #define GROWSPEEDBOOST cv_kartstacking_grow_speedboost.value #define GROWACCELBOOST cv_kartstacking_grow_accelboost.value +#define GROWSTACKABLE cv_kartstacking_grow_stackable.value #define FLAMESPEEDVAL cv_kartstacking_flame_speedval.value #define FLAMEACCELBOOST cv_kartstacking_flame_accelboost.value +#define FLAMESTACKABLE cv_kartstacking_flame_stackable.value #define STARTSPEEDBOOST cv_kartstacking_start_speedboost.value #define STARTACCELBOOST cv_kartstacking_start_accelboost.value +#define STARTSTACKABLE cv_kartstacking_start_stackable.value #define DRIFTSPEEDBOOST cv_kartstacking_drift_speedboost.value #define DRIFTACCELBOOST cv_kartstacking_drift_accelboost.value +#define DRIFTSTACKABLE cv_kartstacking_drift_stackable.value #define RINGSPEEDBOOST cv_kartstacking_ring_speedboost.value #define RINGACCELBOOST cv_kartstacking_ring_accelboost.value +#define RINGSTACKABLE cv_kartstacking_ring_stackable.value #define CANTCHAINOFFROAD (cv_kartchaining.value && !cv_kartchainingoffroad.value)