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:
Sally Coolatta 2023-02-23 12:43:08 -05:00
parent c61e017c38
commit f7851623ff
3 changed files with 21 additions and 4 deletions

View file

@ -5086,7 +5086,7 @@ void K_drawKartHUD(void)
V_DrawThinString(0, 40, V_SNAPTOTOP|V_SNAPTOLEFT|V_6WIDTHSPACE|V_ALLOWLOWERCASE,
va("RINGS: %d / %d", g_gpRank.rings, g_gpRank.totalRings));
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,
va("SPECIAL: %s", (g_gpRank.specialWon == true) ? "YES" : "NO"));

View file

@ -31,6 +31,7 @@ gpRank_t g_gpRank = {0};
void K_InitGrandPrixRank(gpRank_t *rankData)
{
UINT8 numHumans = 0;
UINT32 laps = 0;
INT32 i;
memset(rankData, 0, sizeof(gpRank_t));
@ -64,7 +65,18 @@ void K_InitGrandPrixRank(gpRank_t *rankData)
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++)
{
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->difficulty * difficultyWeight) / MAXBOTDIFFICULTY;
if (rankData->difficultyTarget > 0)
{
ours += (rankData->difficulty * difficultyWeight) / rankData->difficultyTarget;
}
ours -= rankData->continuesUsed * continuesPenalty;

View file

@ -39,8 +39,10 @@ struct gpRank_t
UINT32 rings;
UINT32 totalRings;
boolean specialWon;
UINT8 difficulty;
UINT8 difficultyTarget;
boolean specialWon;
};
extern gpRank_t g_gpRank;