mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2025-10-30 08:01:28 +00:00
Minimum gradingfactor in Master
This commit is contained in:
parent
2a36838b54
commit
f418b5841a
5 changed files with 19 additions and 10 deletions
|
|
@ -582,7 +582,7 @@ fixed_t K_BotMapModifier(void)
|
||||||
{
|
{
|
||||||
constexpr INT32 complexity_scale = 10000;
|
constexpr INT32 complexity_scale = 10000;
|
||||||
fixed_t modifier_max = (9 * FRACUNIT / 10) - FRACUNIT;
|
fixed_t modifier_max = (9 * FRACUNIT / 10) - FRACUNIT;
|
||||||
fixed_t modifier_min = (3 * FRACUNIT / 10) - FRACUNIT;
|
fixed_t modifier_min = (5 * FRACUNIT / 10) - FRACUNIT;
|
||||||
|
|
||||||
const fixed_t complexity_value = std::clamp<fixed_t>(
|
const fixed_t complexity_value = std::clamp<fixed_t>(
|
||||||
FixedDiv(K_GetTrackComplexity(), complexity_scale),
|
FixedDiv(K_GetTrackComplexity(), complexity_scale),
|
||||||
|
|
@ -685,8 +685,7 @@ fixed_t K_BotRubberband(const player_t *player)
|
||||||
if (player->gradingfactor < FRACUNIT && !(player->botvars.rival))
|
if (player->gradingfactor < FRACUNIT && !(player->botvars.rival))
|
||||||
{
|
{
|
||||||
UINT8 levelreduce = 3; // How much to drop the "effective level" of bots that are consistently behind
|
UINT8 levelreduce = 3; // How much to drop the "effective level" of bots that are consistently behind
|
||||||
fixed_t effgradingfactor = std::max(FRACUNIT/2, player->gradingfactor);
|
expreduce = Easing_Linear((K_EffectiveGradingFactor(player) - MINGRADINGFACTOR) * 2, levelreduce*FRACUNIT, 0);
|
||||||
expreduce = Easing_Linear((effgradingfactor - FRACUNIT/2) * 2, levelreduce*FRACUNIT, 0);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fixed_t difficultyEase = (((player->botvars.difficulty - 1) * FRACUNIT) - expreduce) / (MAXBOTDIFFICULTY - 1);
|
fixed_t difficultyEase = (((player->botvars.difficulty - 1) * FRACUNIT) - expreduce) / (MAXBOTDIFFICULTY - 1);
|
||||||
|
|
|
||||||
|
|
@ -4037,8 +4037,8 @@ static boolean K_drawKartLaps(void)
|
||||||
// WHAT IS THIS?
|
// WHAT IS THIS?
|
||||||
// WHAT ARE YOU FUCKING TALKING ABOUT?
|
// WHAT ARE YOU FUCKING TALKING ABOUT?
|
||||||
V_DrawMappedPatch(fr, fy, V_HUDTRANS|V_SLIDEIN|splitflags, kp_exp[1], R_GetTranslationColormap(TC_RAINBOW, SKINCOLOR_MUSTARD, GTC_CACHE));
|
V_DrawMappedPatch(fr, fy, V_HUDTRANS|V_SLIDEIN|splitflags, kp_exp[1], R_GetTranslationColormap(TC_RAINBOW, SKINCOLOR_MUSTARD, GTC_CACHE));
|
||||||
auto transflag = K_GetTransFlagFromFixed(stplyr->gradingfactor);
|
auto transflag = K_GetTransFlagFromFixed(K_EffectiveGradingFactor(stplyr));
|
||||||
skincolornum_t overlaycolor = stplyr->gradingfactor < FRACUNIT ? SKINCOLOR_RUBY : SKINCOLOR_ULTRAMARINE ;
|
skincolornum_t overlaycolor = K_EffectiveGradingFactor(stplyr) < FRACUNIT ? SKINCOLOR_RUBY : SKINCOLOR_ULTRAMARINE ;
|
||||||
auto colormap = R_GetTranslationColormap(TC_RAINBOW, overlaycolor, GTC_CACHE);
|
auto colormap = R_GetTranslationColormap(TC_RAINBOW, overlaycolor, GTC_CACHE);
|
||||||
V_DrawMappedPatch(fr, fy, transflag|V_SLIDEIN|splitflags, kp_exp[1], colormap);
|
V_DrawMappedPatch(fr, fy, transflag|V_SLIDEIN|splitflags, kp_exp[1], colormap);
|
||||||
|
|
||||||
|
|
@ -4054,8 +4054,8 @@ static boolean K_drawKartLaps(void)
|
||||||
|
|
||||||
V_DrawMappedPatch(LAPS_X+bump, LAPS_Y, V_HUDTRANS|V_SLIDEIN|splitflags, kp_exp[0], R_GetTranslationColormap(TC_RAINBOW, SKINCOLOR_MUSTARD, GTC_CACHE));
|
V_DrawMappedPatch(LAPS_X+bump, LAPS_Y, V_HUDTRANS|V_SLIDEIN|splitflags, kp_exp[0], R_GetTranslationColormap(TC_RAINBOW, SKINCOLOR_MUSTARD, GTC_CACHE));
|
||||||
|
|
||||||
auto transflag = K_GetTransFlagFromFixed(stplyr->gradingfactor);
|
auto transflag = K_GetTransFlagFromFixed(K_EffectiveGradingFactor(stplyr));
|
||||||
skincolornum_t overlaycolor = stplyr->gradingfactor < FRACUNIT ? SKINCOLOR_RUBY : SKINCOLOR_ULTRAMARINE ;
|
skincolornum_t overlaycolor = K_EffectiveGradingFactor(stplyr) < FRACUNIT ? SKINCOLOR_RUBY : SKINCOLOR_ULTRAMARINE ;
|
||||||
auto colormap = R_GetTranslationColormap(TC_RAINBOW, overlaycolor, GTC_CACHE);
|
auto colormap = R_GetTranslationColormap(TC_RAINBOW, overlaycolor, GTC_CACHE);
|
||||||
V_DrawMappedPatch(LAPS_X+bump, LAPS_Y, transflag|V_SLIDEIN|splitflags, kp_exp[0], colormap);
|
V_DrawMappedPatch(LAPS_X+bump, LAPS_Y, transflag|V_SLIDEIN|splitflags, kp_exp[0], colormap);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -124,6 +124,13 @@ boolean K_InRaceDuel(void)
|
||||||
return (inDuel && (gametyperules & GTR_CIRCUIT) && !(mapheaderinfo[gamemap-1]->levelflags & LF_SECTIONRACE)) && !specialstageinfo.valid;
|
return (inDuel && (gametyperules & GTR_CIRCUIT) && !(mapheaderinfo[gamemap-1]->levelflags & LF_SECTIONRACE)) && !specialstageinfo.valid;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fixed_t K_EffectiveGradingFactor(const player_t *player)
|
||||||
|
{
|
||||||
|
if (grandprixinfo.gp && grandprixinfo.masterbots && !K_PlayerUsesBotMovement(player))
|
||||||
|
return MINGRADINGFACTOR;
|
||||||
|
return max(MINGRADINGFACTOR, player->gradingfactor);
|
||||||
|
}
|
||||||
|
|
||||||
player_t *K_DuelOpponent(player_t *player)
|
player_t *K_DuelOpponent(player_t *player)
|
||||||
{
|
{
|
||||||
if (!K_InRaceDuel())
|
if (!K_InRaceDuel())
|
||||||
|
|
@ -13567,7 +13574,7 @@ void K_MoveKartPlayer(player_t *player, boolean onground)
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
UINT32 behind = K_GetItemRouletteDistance(player, player->itemRoulette.playing);
|
UINT32 behind = K_GetItemRouletteDistance(player, player->itemRoulette.playing);
|
||||||
behind = FixedMul(behind, max(player->gradingfactor, FRACUNIT/2));
|
behind = FixedMul(behind, K_EffectiveGradingFactor(player));
|
||||||
UINT32 behindMulti = behind / 500;
|
UINT32 behindMulti = behind / 500;
|
||||||
behindMulti = min(behindMulti, 60);
|
behindMulti = min(behindMulti, 60);
|
||||||
award = award * (behindMulti + 10) / 10;
|
award = award * (behindMulti + 10) / 10;
|
||||||
|
|
|
||||||
|
|
@ -114,6 +114,9 @@ boolean K_DuelItemAlwaysSpawns(mapthing_t *mt);
|
||||||
boolean K_InRaceDuel(void);
|
boolean K_InRaceDuel(void);
|
||||||
player_t *K_DuelOpponent(player_t *player);
|
player_t *K_DuelOpponent(player_t *player);
|
||||||
|
|
||||||
|
fixed_t K_EffectiveGradingFactor(const player_t *player);
|
||||||
|
#define MINGRADINGFACTOR (FRACUNIT/2)
|
||||||
|
|
||||||
void K_TimerReset(void);
|
void K_TimerReset(void);
|
||||||
void K_TimerInit(void);
|
void K_TimerInit(void);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1132,7 +1132,7 @@ static boolean K_ShouldPlayerAllowItem(kartitems_t item, const player_t *player)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
// GIGA power items reserved only for players who were doing great and died.
|
// GIGA power items reserved only for players who were doing great and died.
|
||||||
if (player->gradingfactor < K_RequiredXPForItem(item))
|
if (K_EffectiveGradingFactor(player) < K_RequiredXPForItem(item))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
return !K_IsItemFirstOnly(item);
|
return !K_IsItemFirstOnly(item);
|
||||||
|
|
@ -1399,7 +1399,7 @@ void K_FillItemRouletteData(const player_t *player, itemroulette_t *const roulet
|
||||||
|
|
||||||
if ((gametyperules & GTR_CIRCUIT) && !K_Cooperative())
|
if ((gametyperules & GTR_CIRCUIT) && !K_Cooperative())
|
||||||
{
|
{
|
||||||
roulette->dist = FixedMul(roulette->preexpdist, max(player->gradingfactor, FRACUNIT/2));
|
roulette->dist = FixedMul(roulette->preexpdist, K_EffectiveGradingFactor(player));
|
||||||
}
|
}
|
||||||
|
|
||||||
// ===============================================================================
|
// ===============================================================================
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue