Milky Way terrain

`OutRun 48.0` on Terrain block will make that texture add 48 units to driving top speed.
This commit is contained in:
Sally Coolatta 2023-06-14 10:29:19 -04:00
parent 5eeb29d552
commit d936c7aed9
5 changed files with 35 additions and 10 deletions

View file

@ -752,6 +752,8 @@ struct player_t
boolean markedfordeath;
fixed_t outrun; // Milky Way road effect
uint8_t public_key[PUBKEYLENGTH];
#ifdef HWRENDER

View file

@ -3337,6 +3337,11 @@ fixed_t K_GetKartSpeed(player_t *player, boolean doboostpower, boolean dorubberb
finalspeed = FixedMul(finalspeed, mapobjectscale);
if (dorubberband == true && K_PlayerUsesBotMovement(player) == true)
{
finalspeed = FixedMul(finalspeed, player->botvars.rubberband);
}
if (doboostpower == true)
{
if (mobjValid == true)
@ -3346,11 +3351,12 @@ fixed_t K_GetKartSpeed(player_t *player, boolean doboostpower, boolean dorubberb
}
finalspeed = FixedMul(finalspeed, player->boostpower + player->speedboost);
}
if (dorubberband == true && K_PlayerUsesBotMovement(player) == true)
{
finalspeed = FixedMul(finalspeed, player->botvars.rubberband);
if (mobjValid == true && player->outrun != 0)
{
// Milky Way's roads
finalspeed += FixedMul(player->outrun, K_GrowShrinkSpeedMul(player));
}
}
return finalspeed;
@ -3369,18 +3375,22 @@ fixed_t K_GetKartAccel(player_t *player)
k_accel += 17 * stat; // 121 - 257
if (K_PodiumSequence() == true)
{
return FixedMul(k_accel, FRACUNIT / 4);
}
// Marble Garden Top gets 1200% accel
if (player->curshield == KSHIELD_TOP)
{
k_accel *= 12;
}
return FixedMul(k_accel, (FRACUNIT + player->accelboost) / 4);
if (K_PodiumSequence() == true)
{
k_accel = FixedMul(k_accel, FRACUNIT / 4);
}
else
{
k_accel = FixedMul(k_accel, (FRACUNIT + player->accelboost) / 4);
}
return k_accel;
}
UINT16 K_GetKartFlashing(player_t *player)

View file

@ -455,6 +455,9 @@ void K_ProcessTerrainEffect(mobj_t *mo)
return;
}
// Milky Way road effect
player->outrun = terrain->outrun + (48*FRACUNIT);
// Damage effects
if (terrain->damageType > 0)
{
@ -1688,6 +1691,10 @@ static void K_ParseTerrainParameter(size_t i, char *param, char *val)
{
terrain->springStarColor = get_number(val);
}
else if (stricmp(param, "outrun") == 0 || stricmp(param, "speedIncrease") == 0)
{
terrain->outrun = FLOAT_TO_FIXED(atof(val));
}
else if (stricmp(param, "floorClip") == 0)
{
terrain->floorClip = FLOAT_TO_FIXED(atof(val));

View file

@ -122,6 +122,7 @@ struct terrain_t
angle_t speedPadAngle; // Speed pad angle
fixed_t springStrength; // Spring strength
UINT16 springStarColor; // Spring star color
fixed_t outrun; // Raise top speed by this amount, for super fast road.
fixed_t floorClip; // Offset for sprites on this ground
UINT32 flags; // Flag values (see: terrain_flags_t)
};

View file

@ -4609,6 +4609,11 @@ void P_PlayerAfterThink(player_t *player)
}
#endif
if (P_IsObjectOnGround(player->mo) == true)
{
player->outrun = 0;
}
#ifdef SECTORSPECIALSAFTERTHINK
if (player->onconveyor != 1 || !P_IsObjectOnGround(player->mo))
player->onconveyor = 0;