mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2025-10-30 08:01:28 +00:00
Reduce stunned tics in games with more than 8 players
This commit is contained in:
parent
f24a5db5d2
commit
da6d7ec6b1
1 changed files with 21 additions and 3 deletions
24
src/k_kart.c
24
src/k_kart.c
|
|
@ -16311,12 +16311,30 @@ void K_ApplyStun(player_t *player, mobj_t *inflictor, mobj_t *source, INT32 dama
|
||||||
{
|
{
|
||||||
#define BASE_STUN_TICS_MIN (4 * TICRATE)
|
#define BASE_STUN_TICS_MIN (4 * TICRATE)
|
||||||
#define BASE_STUN_TICS_MAX (10 * TICRATE)
|
#define BASE_STUN_TICS_MAX (10 * TICRATE)
|
||||||
UINT16 stunTics = 0;
|
INT32 stunTics = 0;
|
||||||
|
UINT8 numPlayers = 0;
|
||||||
|
UINT8 i;
|
||||||
|
|
||||||
|
// calculate the number of players playing
|
||||||
|
for (i = 0; i < MAXPLAYERS; i++)
|
||||||
|
{
|
||||||
|
if (playeringame[i] && !players[i].spectator)
|
||||||
|
{
|
||||||
|
numPlayers++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// calculate base stun tics
|
||||||
stunTics = Easing_Linear((player->kartweight - 1) * FRACUNIT / 8, BASE_STUN_TICS_MAX, BASE_STUN_TICS_MIN);
|
stunTics = Easing_Linear((player->kartweight - 1) * FRACUNIT / 8, BASE_STUN_TICS_MAX, BASE_STUN_TICS_MIN);
|
||||||
stunTics >>= player->stunnedCombo; // consecutive hits add half as much stun as the previous hit
|
stunTics >>= player->stunnedCombo; // consecutive hits add half as much stun as the previous hit
|
||||||
|
|
||||||
// 1/3 base stun values in battle
|
// reduce stun in games with more than 8 players
|
||||||
|
if (numPlayers > 8)
|
||||||
|
{
|
||||||
|
stunTics -= 17 * (numPlayers - 8);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 1/3 stun values in battle
|
||||||
if (gametyperules & GTR_SPHERES)
|
if (gametyperules & GTR_SPHERES)
|
||||||
{
|
{
|
||||||
stunTics /= 3;
|
stunTics /= 3;
|
||||||
|
|
@ -16326,7 +16344,7 @@ void K_ApplyStun(player_t *player, mobj_t *inflictor, mobj_t *source, INT32 dama
|
||||||
{
|
{
|
||||||
player->stunnedCombo++;
|
player->stunnedCombo++;
|
||||||
}
|
}
|
||||||
stunTics = min(player->stunned + stunTics, UINT16_MAX);
|
stunTics = min(max(player->stunned + stunTics, 0), UINT16_MAX);
|
||||||
player->stunned = stunTics;
|
player->stunned = stunTics;
|
||||||
|
|
||||||
#undef BASE_STUN_TICS_MIN
|
#undef BASE_STUN_TICS_MIN
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue