mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2025-10-30 08:01:28 +00:00
Reduce stun based on distance to leader
This commit is contained in:
parent
546bb52e3b
commit
51abee48cd
1 changed files with 13 additions and 1 deletions
14
src/k_kart.c
14
src/k_kart.c
|
|
@ -16302,10 +16302,12 @@ fixed_t K_TeamComebackMultiplier(player_t *player)
|
|||
return multiplier;
|
||||
}
|
||||
|
||||
void K_ApplyStun(player_t *player, mobj_t *inflictor, mobj_t *source, INT32 damage, UINT8 damagetype)
|
||||
void K_ApplyStun(player_t *player, mobj_t *inflictor, mobj_t *source, ATTRUNUSED INT32 damage, ATTRUNUSED UINT8 damagetype)
|
||||
{
|
||||
#define BASE_STUN_TICS_MIN (4 * TICRATE)
|
||||
#define BASE_STUN_TICS_MAX (10 * TICRATE)
|
||||
#define MAX_STUN_REDUCTION (FRACUNIT/2)
|
||||
#define STUN_REDUCTION_DISTANCE (20000)
|
||||
INT32 stunTics = 0;
|
||||
UINT8 numPlayers = 0;
|
||||
UINT8 i;
|
||||
|
|
@ -16350,10 +16352,20 @@ void K_ApplyStun(player_t *player, mobj_t *inflictor, mobj_t *source, INT32 dama
|
|||
stunTics /= 4;
|
||||
}
|
||||
|
||||
UINT32 dist = K_GetItemRouletteDistance(player, D_NumPlayersInRace());
|
||||
if (dist > STUN_REDUCTION_DISTANCE)
|
||||
dist = STUN_REDUCTION_DISTANCE;
|
||||
|
||||
fixed_t distfactor = FixedDiv(dist, STUN_REDUCTION_DISTANCE); // 0-1 as you approach STUN_REDUCTION_DISTANCE
|
||||
fixed_t stunfactor = Easing_Linear(distfactor, FRACUNIT, MAX_STUN_REDUCTION);
|
||||
stunTics = FixedMul(stunTics*FRACUNIT, stunfactor)/FRACUNIT;
|
||||
|
||||
player->stunned = max(stunTics, 0);
|
||||
|
||||
#undef BASE_STUN_TICS_MIN
|
||||
#undef BASE_STUN_TICS_MAX
|
||||
#undef MAX_STUN_REDUCTION
|
||||
#undef STUN_REDUCTION_DISTANCE
|
||||
}
|
||||
|
||||
//}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue