mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2026-04-27 20:41:46 +00:00
Dynamic Roulette: SPB
This commit is contained in:
parent
9e90cb80dd
commit
e79eeec896
1 changed files with 12 additions and 10 deletions
|
|
@ -52,6 +52,7 @@
|
||||||
#include "k_grandprix.h"
|
#include "k_grandprix.h"
|
||||||
#include "k_specialstage.h"
|
#include "k_specialstage.h"
|
||||||
#include "k_hud.h" // distribution debugger
|
#include "k_hud.h" // distribution debugger
|
||||||
|
#include "m_easing.h"
|
||||||
|
|
||||||
// Magic number distance for use with item roulette tiers
|
// Magic number distance for use with item roulette tiers
|
||||||
#define DISTVAR (2048)
|
#define DISTVAR (2048)
|
||||||
|
|
@ -648,7 +649,6 @@ static fixed_t K_PercentSPBOdds(const itemroulette_t *roulette, UINT8 position)
|
||||||
{
|
{
|
||||||
const UINT32 dist = max(0, ((signed)roulette->secondToFirst) - SPBSTARTDIST);
|
const UINT32 dist = max(0, ((signed)roulette->secondToFirst) - SPBSTARTDIST);
|
||||||
const UINT32 distRange = SPBFORCEDIST - SPBSTARTDIST;
|
const UINT32 distRange = SPBFORCEDIST - SPBSTARTDIST;
|
||||||
const fixed_t maxOdds = 20 << FRACBITS;
|
|
||||||
fixed_t multiplier = FixedDiv(dist, distRange);
|
fixed_t multiplier = FixedDiv(dist, distRange);
|
||||||
|
|
||||||
if (multiplier < 0)
|
if (multiplier < 0)
|
||||||
|
|
@ -661,6 +661,8 @@ static fixed_t K_PercentSPBOdds(const itemroulette_t *roulette, UINT8 position)
|
||||||
multiplier = FRACUNIT;
|
multiplier = FRACUNIT;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
CONS_Printf("%d; %d / %d\n", leveltime, dist, roulette->secondToFirst);
|
||||||
|
|
||||||
return multiplier;
|
return multiplier;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -1365,15 +1367,7 @@ void K_FillItemRouletteData(const player_t *player, itemroulette_t *const roulet
|
||||||
boolean rival = (player->bot && (player->botvars.rival || cv_levelskull.value));
|
boolean rival = (player->bot && (player->botvars.rival || cv_levelskull.value));
|
||||||
boolean mothfilter = true; // strip unusually weak items from reel?
|
boolean mothfilter = true; // strip unusually weak items from reel?
|
||||||
UINT8 reelsize = 15; // How many items to attempt to add in prepass?
|
UINT8 reelsize = 15; // How many items to attempt to add in prepass?
|
||||||
UINT32 humanscaler = 250; // Scaler that converts "useodds" style distances in odds tables to raw distances.
|
UINT32 humanscaler = 250 + (roulette->playing * 15); // Scaler that converts "useodds" style distances in odds tables to raw distances.
|
||||||
|
|
||||||
for (i = 0; i < MAXPLAYERS; ++i)
|
|
||||||
{
|
|
||||||
if (D_IsPlayerHumanAndGaming(i))
|
|
||||||
{
|
|
||||||
humanscaler += 15;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Cache which items are permissible
|
// Cache which items are permissible
|
||||||
for (i = 1; i < NUMKARTRESULTS; i++)
|
for (i = 1; i < NUMKARTRESULTS; i++)
|
||||||
|
|
@ -1505,6 +1499,14 @@ void K_FillItemRouletteData(const player_t *player, itemroulette_t *const roulet
|
||||||
// CONS_Printf("added %s with candidates %d\n", cv_items[lowestindex-1].name, candidates[lowestindex]);
|
// CONS_Printf("added %s with candidates %d\n", cv_items[lowestindex-1].name, candidates[lowestindex]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fixed_t spb_odds = K_PercentSPBOdds(roulette, player->position);
|
||||||
|
|
||||||
|
if ((gametyperules & GTR_CIRCUIT) & (spb_odds > 0) & (spbplace == -1))
|
||||||
|
{
|
||||||
|
permit[KITEM_SPB] = true;
|
||||||
|
deltas[KITEM_SPB] = Easing_Linear(spb_odds, 3000, 0);
|
||||||
|
}
|
||||||
|
|
||||||
UINT8 debugcount = 0;
|
UINT8 debugcount = 0;
|
||||||
UINT32 meanreelpower = totalreelpower/max(added, 1);
|
UINT32 meanreelpower = totalreelpower/max(added, 1);
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue