Flame shield rebalance: better offroad, lower top speed

This commit is contained in:
GenericHeroGuy 2025-10-17 19:43:25 +02:00
parent bf93fafa27
commit 4623afe0be
2 changed files with 13 additions and 12 deletions

View file

@ -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_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_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_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", "Off", CV_NETVAR, CV_OnOff, NULL);

View file

@ -919,6 +919,14 @@ static void K_UpdateOffroad(player_t *player)
offroad = offroadstrength / (TICRATE/2); 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; player->offroad += offroad;
} }
@ -2319,8 +2327,8 @@ void K_SpawnWaterTrail(mobj_t *mobj)
static fixed_t K_FlameShieldDashVar(INT32 val) static fixed_t K_FlameShieldDashVar(INT32 val)
{ {
// 1 second = 15% + ????% top speed // 1 second = base% + ~16.8% top speed
return (FRACUNIT/6) + (((val * (FRACUNIT)) / TICRATE) / 2); return FixedMul(val * 500, FixedDiv(FRACUNIT, FRACUNIT + val*FRACUNIT/60));
} }
static inline fixed_t K_GetProjectileSpeed(void) static inline fixed_t K_GetProjectileSpeed(void)
@ -2652,14 +2660,7 @@ static void K_GetKartBoostPower(player_t *player)
if (player->flamestore) // Flame Shield dash if (player->flamestore) // Flame Shield dash
{ {
fixed_t dash = K_FlameShieldDashVar(player->flamedash); fixed_t dash = K_FlameShieldDashVar(player->flamedash);
fixed_t intermediate = 0; K_DoBoost(player, FLAMESPEEDVAL + dash, FLAMEACCELBOOST, FLAMESTACKABLE, FLAMESTACKABLE);
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);
} }
if (player->startboost) // Startup Boost if (player->startboost) // Startup Boost
@ -2730,7 +2731,7 @@ static void K_GetKartBoostPower(player_t *player)
// value smoothing // value smoothing
if (K_StackingActive()) 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->speedboost = max(finalspeedboost, player->speedboost)/2;
player->accelboost = max(finalaccelboost, player->accelboost)/2; player->accelboost = max(finalaccelboost, player->accelboost)/2;