mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2025-10-30 08:01:28 +00:00
Calculate a bot difficulty to reach
13 is very unlikely for Normal, likely impossible for Easy. (If we want a bonus game speeds, it should be explicitly defined)
This commit is contained in:
parent
c61e017c38
commit
f7851623ff
3 changed files with 21 additions and 4 deletions
|
|
@ -5086,7 +5086,7 @@ void K_drawKartHUD(void)
|
||||||
V_DrawThinString(0, 40, V_SNAPTOTOP|V_SNAPTOLEFT|V_6WIDTHSPACE|V_ALLOWLOWERCASE,
|
V_DrawThinString(0, 40, V_SNAPTOTOP|V_SNAPTOLEFT|V_6WIDTHSPACE|V_ALLOWLOWERCASE,
|
||||||
va("RINGS: %d / %d", g_gpRank.rings, g_gpRank.totalRings));
|
va("RINGS: %d / %d", g_gpRank.rings, g_gpRank.totalRings));
|
||||||
V_DrawThinString(0, 50, V_SNAPTOTOP|V_SNAPTOLEFT|V_6WIDTHSPACE|V_ALLOWLOWERCASE,
|
V_DrawThinString(0, 50, V_SNAPTOTOP|V_SNAPTOLEFT|V_6WIDTHSPACE|V_ALLOWLOWERCASE,
|
||||||
va("DIFFICULTY: %d / %d", g_gpRank.difficulty, MAXBOTDIFFICULTY));
|
va("DIFFICULTY: %d / %d", g_gpRank.difficulty, g_gpRank.difficultyTarget));
|
||||||
V_DrawThinString(0, 60, V_SNAPTOTOP|V_SNAPTOLEFT|V_6WIDTHSPACE|V_ALLOWLOWERCASE,
|
V_DrawThinString(0, 60, V_SNAPTOTOP|V_SNAPTOLEFT|V_6WIDTHSPACE|V_ALLOWLOWERCASE,
|
||||||
va("SPECIAL: %s", (g_gpRank.specialWon == true) ? "YES" : "NO"));
|
va("SPECIAL: %s", (g_gpRank.specialWon == true) ? "YES" : "NO"));
|
||||||
|
|
||||||
|
|
|
||||||
19
src/k_rank.c
19
src/k_rank.c
|
|
@ -31,6 +31,7 @@ gpRank_t g_gpRank = {0};
|
||||||
void K_InitGrandPrixRank(gpRank_t *rankData)
|
void K_InitGrandPrixRank(gpRank_t *rankData)
|
||||||
{
|
{
|
||||||
UINT8 numHumans = 0;
|
UINT8 numHumans = 0;
|
||||||
|
UINT32 laps = 0;
|
||||||
INT32 i;
|
INT32 i;
|
||||||
|
|
||||||
memset(rankData, 0, sizeof(gpRank_t));
|
memset(rankData, 0, sizeof(gpRank_t));
|
||||||
|
|
@ -64,7 +65,18 @@ void K_InitGrandPrixRank(gpRank_t *rankData)
|
||||||
|
|
||||||
rankData->totalRings = grandprixinfo.cup->numlevels * numHumans * 20;
|
rankData->totalRings = grandprixinfo.cup->numlevels * numHumans * 20;
|
||||||
|
|
||||||
UINT32 laps = 0;
|
if (grandprixinfo.masterbots == true)
|
||||||
|
{
|
||||||
|
rankData->difficultyTarget = MAXBOTDIFFICULTY;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
rankData->difficultyTarget = min(
|
||||||
|
MAXBOTDIFFICULTY,
|
||||||
|
K_BotStartingDifficulty(grandprixinfo.gamespeed) + ((grandprixinfo.cup->numlevels + 1) / 2)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
for (i = 0; i < grandprixinfo.cup->numlevels; i++)
|
for (i = 0; i < grandprixinfo.cup->numlevels; i++)
|
||||||
{
|
{
|
||||||
const INT32 cupLevelNum = grandprixinfo.cup->cachedlevels[i];
|
const INT32 cupLevelNum = grandprixinfo.cup->cachedlevels[i];
|
||||||
|
|
@ -131,7 +143,10 @@ gp_rank_e K_CalculateGPGrade(gpRank_t *rankData)
|
||||||
ours += (rankData->rings * ringsWeight) / rankData->totalRings;
|
ours += (rankData->rings * ringsWeight) / rankData->totalRings;
|
||||||
}
|
}
|
||||||
|
|
||||||
ours += (rankData->difficulty * difficultyWeight) / MAXBOTDIFFICULTY;
|
if (rankData->difficultyTarget > 0)
|
||||||
|
{
|
||||||
|
ours += (rankData->difficulty * difficultyWeight) / rankData->difficultyTarget;
|
||||||
|
}
|
||||||
|
|
||||||
ours -= rankData->continuesUsed * continuesPenalty;
|
ours -= rankData->continuesUsed * continuesPenalty;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -39,8 +39,10 @@ struct gpRank_t
|
||||||
UINT32 rings;
|
UINT32 rings;
|
||||||
UINT32 totalRings;
|
UINT32 totalRings;
|
||||||
|
|
||||||
boolean specialWon;
|
|
||||||
UINT8 difficulty;
|
UINT8 difficulty;
|
||||||
|
UINT8 difficultyTarget;
|
||||||
|
|
||||||
|
boolean specialWon;
|
||||||
};
|
};
|
||||||
|
|
||||||
extern gpRank_t g_gpRank;
|
extern gpRank_t g_gpRank;
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue