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_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);

View file

@ -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;