start spindash/ssmt
This commit is contained in:
parent
ce74d4012d
commit
0beaae5f55
6 changed files with 71 additions and 3 deletions
|
|
@ -549,6 +549,10 @@ 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_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.1", CV_NETVAR|CV_CHEAT|CV_FLOAT|CV_GUARD, CV_Unsigned, NULL);
|
||||
consvar_t cv_kartstacking_ssmt_accelboost = CVAR_INIT ("vanillaboost_ssmt_accelboost", "65535.0", CV_NETVAR|CV_CHEAT|CV_FLOAT|CV_GUARD, CV_Unsigned, NULL);
|
||||
consvar_t cv_kartstacking_ssmt_handleboost = CVAR_INIT ("vanillaboost_ssmt_handleboost", "0", 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_speedboost_max = CVAR_INIT ("vanillaboost_slope_speedboost_max", "3.0", CV_NETVAR|CV_CHEAT|CV_FLOAT|CV_GUARD, CV_Unsigned, NULL);
|
||||
|
|
|
|||
|
|
@ -167,6 +167,10 @@ extern consvar_t cv_kartstacking_ring_accelboost;
|
|||
extern consvar_t cv_kartstacking_ring_handleboost;
|
||||
extern consvar_t cv_kartstacking_ring_stackable;
|
||||
|
||||
extern consvar_t cv_kartstacking_ssmt_speedboost;
|
||||
extern consvar_t cv_kartstacking_ssmt_accelboost;
|
||||
extern consvar_t cv_kartstacking_ssmt_handleboost;
|
||||
|
||||
extern consvar_t cv_kartstacking_slope_decay;
|
||||
extern consvar_t cv_kartstacking_slope_brakemod;
|
||||
extern consvar_t cv_kartstacking_slope_speedboost_max;
|
||||
|
|
|
|||
|
|
@ -103,8 +103,9 @@ typedef enum
|
|||
PF_SHRINKACTIVE = 1<<26, // "Shrink me" cheat is in effect. (Can't be disabled mid-race)
|
||||
|
||||
PF_JUSTFLIPPED = 1<<27, // Just got flipped over, handle the bump interaction.
|
||||
|
||||
PF_CHARGINGSSMT = 1<<28, // Player was charging SSMT last tick
|
||||
|
||||
// up to 1<<28 is free
|
||||
PF_USEDOWN = 1<<29, // For lua compat, don't use!
|
||||
PF_ATTACKDOWN = 1<<30, // For lua compat, don't use!
|
||||
PF_SLIDING = 1<<31, // For lua compat, don't use!
|
||||
|
|
@ -598,6 +599,9 @@ struct player_t
|
|||
// Potentially influenced by player lag.
|
||||
tic_t driftdelay;
|
||||
|
||||
tic_t ssmtcharge; // Time spent charging SSMT
|
||||
UINT16 ssmtboost; // SSMT boost timer (weak boost that ignores offroad)
|
||||
|
||||
fixed_t spinoutrot; // When a player spins out, this value increments modulus 360.
|
||||
|
||||
SINT8 aizdriftstrat; // (-1 to 1) - Let go of your drift while boosting? Helper for the SICK STRATZ (sliptiding!) you have just unlocked
|
||||
|
|
@ -619,6 +623,7 @@ struct player_t
|
|||
fixed_t prevspeedboost; // Max speed boost value from the last frame
|
||||
fixed_t accelboost; // Boost value smoothing for acceleration
|
||||
fixed_t handleboost; // Boost value smoothing for handling
|
||||
fixed_t forcedtopspeed; // Force this top speed while charging SSMT
|
||||
angle_t boostangle; // angle set when not spun out OR boosted to determine what direction you should keep going at if you're spun out and boosted.
|
||||
boostinfo_t boostinfo; // Stores values used for setting speed and accel boosts.
|
||||
UINT8 numsneakers; // Number of stacked sneakers
|
||||
|
|
|
|||
53
src/k_kart.c
53
src/k_kart.c
|
|
@ -2832,6 +2832,11 @@ static void K_GetKartBoostPower(player_t *player)
|
|||
K_DoBoost(player, RINGSPEEDBOOST, RINGACCELBOOST, RINGHANDLEBOOST, RINGSTACKABLE, RINGSTACKABLE); // + 20% top speed, + 400% acceleration
|
||||
}
|
||||
|
||||
if (player->ssmtboost) // Ring Boost
|
||||
{
|
||||
K_DoBoost(player, SSMTSPEEDBOOST, SSMTACCELBOOST, SSMTHANDLEBOOST, false, true); // + 10% top speed, + ♾️% acceleration
|
||||
}
|
||||
|
||||
if (player->slopeboost || player->slopeaccel)
|
||||
{
|
||||
K_DoBoost(player, player->slopeboost, player->slopeaccel, 0, SLOPESTACKABLE, false); // + ???% top speed, + 300% acceleration
|
||||
|
|
@ -2964,6 +2969,9 @@ fixed_t K_GetKartSpeed(const player_t *player, boolean doboostpower, boolean dor
|
|||
boolean karmabomb = ((gametyperules & GTR_BUMPERS) && player->bumper <= 0);
|
||||
fixed_t finalspeed;
|
||||
|
||||
if (player->forcedtopspeed > 0)
|
||||
return FixedMul(player->forcedtopspeed, player->mo->scale);
|
||||
|
||||
if (doboostpower && !player->pogospring && !P_IsObjectOnGround(player->mo) && (player->airdriftspeed == 0))
|
||||
return (75*mapobjectscale); // air speed cap
|
||||
|
||||
|
|
@ -3093,7 +3101,7 @@ SINT8 K_GetForwardMove(const player_t *player)
|
|||
player->flipovertimer) // pw_introcam?
|
||||
{
|
||||
forwardmove = 0;
|
||||
if (player->sneakertimer)
|
||||
if (player->sneakertimer || player->ssmtboost)
|
||||
forwardmove = MAXPLMOVE;
|
||||
}
|
||||
|
||||
|
|
@ -7041,6 +7049,7 @@ void K_KartPlayerThink(player_t *player, ticcmd_t *cmd)
|
|||
// Speed lines
|
||||
if (player->sneakertimer || player->ringboost
|
||||
|| player->driftboost || player->startboost
|
||||
|| player->ssmtboost
|
||||
|| player->walltransferboost
|
||||
|| player->bubbleboost)
|
||||
{
|
||||
|
|
@ -7239,6 +7248,9 @@ void K_KartPlayerThink(player_t *player, ticcmd_t *cmd)
|
|||
if (player->realsneakertimer)
|
||||
player->realsneakertimer--;
|
||||
|
||||
if (player->ssmtboost)
|
||||
player->ssmtboost--;
|
||||
|
||||
if (player->sneakertimer && player->wipeoutslow > 0 && player->wipeoutslow < wipeoutslowtime+1)
|
||||
player->wipeoutslow = wipeoutslowtime+1;
|
||||
|
||||
|
|
@ -9611,6 +9623,41 @@ static void K_KartSlipdash(player_t *player, boolean onground)
|
|||
}
|
||||
}
|
||||
|
||||
static void K_StandStillMiniTurbo(player_t *player, boolean onground)
|
||||
{
|
||||
if (player->speed <= 8*player->mo->scale && onground)
|
||||
{
|
||||
if (player->cmd.buttons & BT_ACCELERATE|BT_BRAKE)
|
||||
{
|
||||
player->pflags |= PF_CHARGINGSSMT;
|
||||
player->forcedtopspeed = 8*FRACUNIT;
|
||||
player->ssmtcharge += 1;
|
||||
K_SpawnDashDustRelease(player, true);
|
||||
if (player->ssmtcharge >= 3*TICRATE/2)
|
||||
{
|
||||
K_SpawnBoostTrail(player);
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
else if (player->pflags & PF_CHARGINGSSMT)
|
||||
{
|
||||
player->pflags &= ~PF_CHARGINGSSMT;
|
||||
player->forcedtopspeed = 0;
|
||||
if (player->ssmtcharge >= 3*TICRATE/2)
|
||||
{
|
||||
player->ssmtboost = TICRATE;
|
||||
}
|
||||
player->ssmtcharge = 0;
|
||||
|
||||
return;
|
||||
}
|
||||
}
|
||||
player->pflags &= ~PF_CHARGINGSSMT;
|
||||
player->forcedtopspeed = 0;
|
||||
player->ssmtcharge = 0;
|
||||
}
|
||||
|
||||
INT32 K_GetDriftAngleOffset(player_t *player)
|
||||
{
|
||||
INT32 a = 0;
|
||||
|
|
@ -11058,10 +11105,12 @@ void K_MoveKartPlayer(player_t *player, boolean onground)
|
|||
|
||||
K_KartSlipdash(player, onground);
|
||||
|
||||
K_StandStillMiniTurbo(player, onground);
|
||||
|
||||
// Quick Turning
|
||||
// You can't turn your kart when you're not moving.
|
||||
// So now it's time to burn some rubber!
|
||||
if (player->speed < 2 && leveltime > starttime && player->cmd.buttons & BT_ACCELERATE && player->cmd.buttons & BT_BRAKE && player->cmd.turning != 0)
|
||||
if (player->speed < 2 && leveltime > starttime && (player->cmd.buttons & BT_ACCELERATE|BT_BRAKE) && player->cmd.turning != 0)
|
||||
{
|
||||
if (leveltime % 8 == 0)
|
||||
S_StartSound(player->mo, sfx_s224);
|
||||
|
|
|
|||
|
|
@ -163,6 +163,10 @@ extern vector3_t clusterpoint, clusterdtf;
|
|||
#define RINGHANDLEBOOST CV_Get(&cv_kartstacking_ring_handleboost)
|
||||
#define RINGSTACKABLE CV_Get(&cv_kartstacking_ring_stackable)
|
||||
|
||||
#define SSMTSPEEDBOOST CV_Get(&cv_kartstacking_ssmt_speedboost)
|
||||
#define SSMTACCELBOOST CV_Get(&cv_kartstacking_ssmt_accelboost)
|
||||
#define SSMTHANDLEBOOST CV_Get(&cv_kartstacking_ssmt_handleboost)
|
||||
|
||||
#define SLOPEDECAY CV_Get(&cv_kartstacking_slope_decay)
|
||||
#define SLOPEBRAKEMOD CV_Get(&cv_kartstacking_slope_brakemod)
|
||||
#define SLOPESPEEDBOOSTMAX CV_Get(&cv_kartstacking_slope_speedboost_max)
|
||||
|
|
|
|||
|
|
@ -2337,6 +2337,8 @@ boolean P_DamageMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source, INT32 da
|
|||
}
|
||||
|
||||
player->driftboost = 0;
|
||||
player->ssmtboost = 0;
|
||||
player->ssmtcharge = 0;
|
||||
player->airdriftspeed = 0;
|
||||
player->ringboost = 0;
|
||||
player->glanceDir = 0;
|
||||
|
|
|
|||
Loading…
Reference in a new issue