Default bumpspark to removing only charge
Doesn't cancel drifts entirely, but completely resets a player's driftcharge.
This commit is contained in:
parent
5f9406cca0
commit
76c17ec7b9
4 changed files with 32 additions and 3 deletions
|
|
@ -533,7 +533,8 @@ consvar_t cv_kartusepwrlv = CVAR_INIT ("kartusepwrlv", "Yes", CV_NETVAR, CV_YesN
|
|||
|
||||
consvar_t cv_kartpurpledrift = CVAR_INIT ("kartpurpledrift", "No", CV_NETVAR, CV_YesNo, KartPurpleDrift_OnChange);
|
||||
|
||||
consvar_t cv_kartbumpspark = CVAR_INIT ("kartbumpspark", "Yes", CV_NETVAR, CV_YesNo, NULL);
|
||||
static CV_PossibleValue_t bumpspark_cons_t[] = {{0, "Off"}, {1, "Remove Charge Only"}, {2, "On"}, {0, NULL}};
|
||||
consvar_t cv_kartbumpspark = CVAR_INIT ("kartbumpspark", "Remove Charge Only", CV_NETVAR, bumpspark_cons_t, NULL);
|
||||
|
||||
consvar_t cv_kartbumpspring = CVAR_INIT ("kartbumpspring", "Yes", CV_NETVAR, CV_YesNo, NULL);
|
||||
|
||||
|
|
|
|||
|
|
@ -6643,6 +6643,12 @@ void K_AwardScaledPlayerRings(player_t *player, SINT8 mode)
|
|||
K_AwardPlayerRings(player, awardamount, (mode == ASR_SUPERRING) ? true : false);
|
||||
}
|
||||
|
||||
// Returns the bumpspark value as an enum.
|
||||
INT32 K_GetBumpSpark(void)
|
||||
{
|
||||
return max(BUMPSPARK_NONE, min(BUMPSPARK_ALL, (bumpsparktype_t)cv_kartbumpspark.value));
|
||||
}
|
||||
|
||||
/** \brief Decreases various kart timers and powers per frame. Called in P_PlayerThink in p_user.c
|
||||
|
||||
\param player player object passed from P_PlayerThink
|
||||
|
|
|
|||
|
|
@ -346,6 +346,15 @@ void K_AwardScaledPlayerRings(player_t *player, SINT8 mode);
|
|||
|
||||
void K_QuiteSaltyHop(player_t *player);
|
||||
|
||||
typedef enum
|
||||
{
|
||||
BUMPSPARK_NONE = 0,
|
||||
BUMPSPARK_NOCHARGE,
|
||||
BUMPSPARK_ALL
|
||||
} bumpsparktype_t;
|
||||
|
||||
INT32 K_GetBumpSpark(void);
|
||||
|
||||
#ifdef __cplusplus
|
||||
} // extern "C"
|
||||
#endif
|
||||
|
|
|
|||
15
src/p_map.c
15
src/p_map.c
|
|
@ -3479,9 +3479,22 @@ static void P_BouncePlayerMove(mobj_t *mo, TryMoveResult_t *result)
|
|||
mmomx = mo->player->rmomx;
|
||||
mmomy = mo->player->rmomy;
|
||||
|
||||
if ((!cv_kartbumpspark.value && modeattacking == ATTACKING_NONE) || (modeattacking != ATTACKING_NONE && G_CompatLevel(0x0009)))
|
||||
UINT32 bumpspark =
|
||||
max((modeattacking != ATTACKING_NONE) ? BUMPSPARK_NOCHARGE : BUMPSPARK_NONE,
|
||||
K_GetBumpSpark());
|
||||
|
||||
if ((bumpspark < BUMPSPARK_ALL) ||
|
||||
(modeattacking != ATTACKING_NONE && G_CompatLevel(0x0009)))
|
||||
{
|
||||
if (!bumpspark)
|
||||
{
|
||||
// Bumps removing spark would be less frustrating if you didn't get your drift
|
||||
// removed too. Losing sparks is a fair punishment, drifting RIGHT for
|
||||
// daring to scrape a wall for a wide LEFT turn is horrendous and leads to
|
||||
// awful gluewalling.
|
||||
// TL;DR: I hate wrongdrifts and hopefully this is an okay middle ground.
|
||||
mo->player->drift = 0;
|
||||
}
|
||||
mo->player->driftcharge = 0;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue