mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2025-10-30 08:01:28 +00:00
WIP: more EXP math
This commit is contained in:
parent
9cfa67dae6
commit
a8211b980f
4 changed files with 32 additions and 13 deletions
|
|
@ -5739,12 +5739,21 @@ static void K_drawDistributionDebugger(void)
|
|||
// V_DrawString((x >> FRACBITS) + 20, 50, V_SNAPTOTOP, va("secondDist = %u", rouletteData.secondDist));
|
||||
// V_DrawString((x >> FRACBITS) + 20, 58, V_SNAPTOTOP, va("secondToFirst = %u", rouletteData.secondToFirst));
|
||||
|
||||
if (rouletteData.preexpuseOdds > rouletteData.useOdds)
|
||||
{
|
||||
V_DrawString((x >> FRACBITS) + 20, 10, V_SNAPTOTOP, va("items NERFED %u -> %u", rouletteData.preexpuseOdds, rouletteData.useOdds));
|
||||
}
|
||||
else if (rouletteData.preexpuseOdds < rouletteData.useOdds)
|
||||
{
|
||||
V_DrawString((x >> FRACBITS) + 20, 10, V_SNAPTOTOP, va("items BOOSTED %u -> %u", rouletteData.preexpuseOdds, rouletteData.useOdds));
|
||||
}
|
||||
|
||||
/*
|
||||
V_DrawString((x >> FRACBITS) + 20, 10, V_SNAPTOTOP, va("pre-exp dist %u", rouletteData.preexpdist));
|
||||
V_DrawString((x >> FRACBITS) + 20, 18, V_SNAPTOTOP, va("pre-exp useOdds %u", rouletteData.preexpuseOdds));
|
||||
V_DrawString((x >> FRACBITS) + 20, 26, V_SNAPTOTOP, va(" dist %u", rouletteData.dist));
|
||||
V_DrawString((x >> FRACBITS) + 20, 34, V_SNAPTOTOP, va(" useOdds %u", rouletteData.useOdds));
|
||||
|
||||
|
||||
*/
|
||||
|
||||
#ifndef ITEM_LIST_SIZE
|
||||
Z_Free(rouletteData.itemList);
|
||||
|
|
|
|||
28
src/k_kart.c
28
src/k_kart.c
|
|
@ -4091,7 +4091,7 @@ boolean K_Overdrive(player_t *player)
|
|||
S_StartSound(player->mo, sfx_cdfm35);
|
||||
S_StartSound(player->mo, sfx_cdfm13);
|
||||
|
||||
player->overdrive += (player->amps)*3;
|
||||
player->overdrive += (player->amps)*5;
|
||||
player->overshield += (player->amps)*2;
|
||||
player->overdrivepower = FRACUNIT;
|
||||
|
||||
|
|
@ -4112,7 +4112,7 @@ boolean K_DefensiveOverdrive(player_t *player)
|
|||
S_StartSound(player->mo, sfx_cdfm35);
|
||||
S_StartSound(player->mo, sfx_cdfm13);
|
||||
|
||||
player->overdrive += (player->amps)*2;
|
||||
player->overdrive += (player->amps)*3;
|
||||
player->overshield += (player->amps)*2 + TICRATE*2;
|
||||
player->overdrivepower = FRACUNIT;
|
||||
|
||||
|
|
@ -14771,21 +14771,29 @@ boolean K_PlayerCanUseItem(player_t *player)
|
|||
|
||||
fixed_t K_GetExpAdjustment(player_t *player)
|
||||
{
|
||||
fixed_t exp_power = 1*FRACUNIT/100; // adjust to change overall xp volatility
|
||||
fixed_t exp_drainrate = 995*FRACUNIT/1000; // adjust to change overall item chaos
|
||||
fixed_t exp_power = 3*FRACUNIT/100; // adjust to change overall xp volatility
|
||||
fixed_t exp_stablerate = 3*FRACUNIT/10; // how low is your placement before losing XP? 4*FRACUNIT/10 = top 40% of race will gain
|
||||
fixed_t result = 0;
|
||||
|
||||
INT32 live_players = 0;
|
||||
|
||||
// Increase XP for each player you're beating...
|
||||
for (INT32 i = 0; i < MAXPLAYERS; i++)
|
||||
{
|
||||
if (!playeringame[i] || player->spectator)
|
||||
if (!playeringame[i] || players[i].spectator || player == players+i)
|
||||
continue;
|
||||
|
||||
result -= exp_power;
|
||||
|
||||
live_players++;
|
||||
|
||||
if (player->position < players[i].position)
|
||||
{
|
||||
result += FixedMul(exp_power, exp_drainrate);
|
||||
}
|
||||
result += exp_power;
|
||||
}
|
||||
|
||||
// ...then take all of the XP you could possibly have earned,
|
||||
// and lose it proportional to the stable rate. If you're below
|
||||
// the stable threshold, this results in you losing XP.
|
||||
result -= exp_power * FixedInt(FixedMul(live_players*FRACUNIT, FRACUNIT - exp_stablerate));
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1490,7 +1490,7 @@ void K_FillItemRouletteData(const player_t *player, itemroulette_t *const roulet
|
|||
roulette->preexpdist = K_GetItemRouletteDistance(player, roulette->playing);
|
||||
roulette->dist = roulette->preexpdist;
|
||||
roulette->preexpuseOdds = K_FindUseodds(player, roulette);
|
||||
roulette->dist = FixedMul(roulette->preexpdist, player->exp);
|
||||
roulette->dist = FixedMul(roulette->preexpdist, max(player->exp, FRACUNIT/2));
|
||||
roulette->useOdds = K_FindUseodds(player, roulette);
|
||||
|
||||
for (i = 1; i < NUMKARTRESULTS; i++)
|
||||
|
|
|
|||
|
|
@ -3565,4 +3565,6 @@ void P_PlayerRingBurst(player_t *player, INT32 num_rings)
|
|||
{
|
||||
P_FlingBurst(player, fa, MT_DEBTSPIKE, 0, 3 * FRACUNIT / 2, i++);
|
||||
}
|
||||
|
||||
K_DefensiveOverdrive(player);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue