mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2026-01-16 11:42:31 +00:00
Merge branch 'ringbox-ta-fudge' into 'master'
Use alternate Ring Box award calculations in TA See merge request KartKrew/Kart!2072
This commit is contained in:
commit
3c2786e8a1
1 changed files with 35 additions and 7 deletions
42
src/k_kart.c
42
src/k_kart.c
|
|
@ -12005,19 +12005,47 @@ void K_MoveKartPlayer(player_t *player, boolean onground)
|
|||
player->ringboxdelay--;
|
||||
if (player->ringboxdelay == 0)
|
||||
{
|
||||
UINT32 behind = K_GetItemRouletteDistance(player, player->itemRoulette.playing);
|
||||
UINT32 behindMulti = behind / 500;
|
||||
behindMulti = min(behindMulti, 60);
|
||||
|
||||
|
||||
UINT32 award = 5*player->ringboxaward + 10;
|
||||
if (!cv_thunderdome.value)
|
||||
award = 3 * award / 2;
|
||||
award = award * (behindMulti + 10) / 10;
|
||||
|
||||
// SPB Attack is hard, but we're okay with that.
|
||||
if (modeattacking & ATTACKING_SPB)
|
||||
{
|
||||
// SPB Attack is hard.
|
||||
award = award / 2;
|
||||
}
|
||||
else if (modeattacking)
|
||||
{
|
||||
// At high distance values, the power of Ring Box is mainly an extra source of speed, to be
|
||||
// stacked with power items (or itself!) during the payout period.
|
||||
// Low-dist Ring Box follows some special rules, to somewhat normalize the reward between stat
|
||||
// blocks that respond to rings differently; here, variance in payout period counts for a lot!
|
||||
|
||||
UINT8 accel = 10-player->kartspeed;
|
||||
UINT8 weight = player->kartweight;
|
||||
|
||||
// Fixed point math can suck a dick.
|
||||
|
||||
if (accel > weight)
|
||||
{
|
||||
accel *= 10;
|
||||
weight *= 3;
|
||||
}
|
||||
else
|
||||
{
|
||||
accel *= 3;
|
||||
weight *= 10;
|
||||
}
|
||||
|
||||
award = (110 + accel + weight) * award / 120;
|
||||
}
|
||||
else
|
||||
{
|
||||
UINT32 behind = K_GetItemRouletteDistance(player, player->itemRoulette.playing);
|
||||
UINT32 behindMulti = behind / 500;
|
||||
behindMulti = min(behindMulti, 60);
|
||||
award = award * (behindMulti + 10) / 10;
|
||||
}
|
||||
|
||||
K_AwardPlayerRings(player, award, true);
|
||||
player->ringboxaward = 0;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue