Merge branch 'no-bot-ballhog' into 'master'

Disable bot ballhog

See merge request kart-krew-dev/ring-racers-internal!2675
This commit is contained in:
Oni VelocitOni 2025-07-15 02:02:14 +00:00
commit 5fff2a9c46
4 changed files with 31 additions and 0 deletions

View file

@ -2160,3 +2160,10 @@ void K_UpdateBotGameplayVars(player_t *player)
K_UpdateBotGameplayVarsItemUsage(player);
}
boolean K_BotUnderstandsItem(kartitems_t item)
{
if (item == KITEM_BALLHOG)
return false; // Sorry. MRs welcome!
return true;
}

View file

@ -401,6 +401,7 @@ void K_BotItemUsage(const player_t *player, ticcmd_t *cmd, INT16 turnamt);
void K_BotPickItemPriority(player_t *player);
boolean K_BotUnderstandsItem(kartitems_t item);
#ifdef __cplusplus
} // extern "C"

View file

@ -9584,6 +9584,11 @@ void K_KartPlayerThink(player_t *player, ticcmd_t *cmd)
player->pflags2 &= ~PF2_SUPERTRANSFERVFX;
}
if (K_PlayerUsesBotMovement(player) && !K_BotUnderstandsItem(player->itemtype) && player->itemamount)
{
K_DropItems(player);
}
if (player->transfer)
{
if (player->fastfall)

View file

@ -929,6 +929,9 @@ static void K_PushToRouletteItemList(itemroulette_t *const roulette, INT32 item)
--------------------------------------------------*/
static void K_AddItemToReel(const player_t *player, itemroulette_t *const roulette, kartitems_t item)
{
if (player && K_PlayerUsesBotMovement(player) && !K_BotUnderstandsItem(item))
return;
K_PushToRouletteItemList(roulette, item);
if (player == NULL)
@ -1235,6 +1238,17 @@ static boolean K_TimingPermitsItem(kartitems_t item, const itemroulette_t *roule
return true;
}
static void K_FixEmptyRoulette(const player_t *player, itemroulette_t *const roulette)
{
if (roulette->itemListLen > 0)
return;
if (K_PlayerUsesBotMovement(player)) // Bots can't use certain items. Give them _something_.
K_PushToRouletteItemList(roulette, KITEM_SUPERRING);
else // Players can use all items, so this should never happen.
K_PushToRouletteItemList(roulette, KITEM_SAD);
}
/*--------------------------------------------------
void K_FillItemRouletteData(const player_t *player, itemroulette_t *const roulette, boolean ringbox, boolean dryrun)
@ -1379,6 +1393,7 @@ void K_FillItemRouletteData(const player_t *player, itemroulette_t *const roulet
if (K_ForcedSPB(player, roulette) == true)
{
K_AddItemToReel(player, roulette, KITEM_SPB);
K_FixEmptyRoulette(player, roulette);
return;
}
@ -1403,6 +1418,7 @@ void K_FillItemRouletteData(const player_t *player, itemroulette_t *const roulet
// singleItem = KITEM_SAD by default,
// so it will be used when all items are turned off.
K_AddItemToReel(player, roulette, singleItem);
K_FixEmptyRoulette(player, roulette);
return;
}
@ -1758,6 +1774,8 @@ void K_FillItemRouletteData(const player_t *player, itemroulette_t *const roulet
totalSpawnChance--;
}
K_FixEmptyRoulette(player, roulette);
}
/*--------------------------------------------------