From 5df0a313639b7a86eea4e5a22211ac2e00156249 Mon Sep 17 00:00:00 2001 From: Antonio Martinez Date: Mon, 7 Jul 2025 20:02:52 -0400 Subject: [PATCH] Fix empty item roulettes --- src/k_roulette.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/k_roulette.c b/src/k_roulette.c index d12ed65d5..ff441f602 100644 --- a/src/k_roulette.c +++ b/src/k_roulette.c @@ -1232,6 +1232,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) @@ -1376,6 +1387,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; } @@ -1400,6 +1412,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; } @@ -1755,6 +1768,8 @@ void K_FillItemRouletteData(const player_t *player, itemroulette_t *const roulet totalSpawnChance--; } + + K_FixEmptyRoulette(player, roulette); } /*--------------------------------------------------