diff --git a/src/engine/RaceManager.cpp b/src/engine/RaceManager.cpp index 96d0ad2ff..cecda6ced 100644 --- a/src/engine/RaceManager.cpp +++ b/src/engine/RaceManager.cpp @@ -119,8 +119,8 @@ void RaceManager::PostInit() { } void RaceManager::SetItemTables() { - std::string humanTableName = ""; - std::string cpuTableName = ""; + std::optional humanTableName; + std::optional cpuTableName; switch(gModeSelection) { case GRAND_PRIX: @@ -131,32 +131,36 @@ void RaceManager::SetItemTables() { humanTableName = "mk:human_grand_prix"; cpuTableName = "mk:cpu_grand_prix"; } + break; case VERSUS: switch (gPlayerCountSelection1) { case TWO_PLAYERS_SELECTED: humanTableName = "mk:versus_2p"; - cpuTableName = "none selected"; break; case THREE_PLAYERS_SELECTED: humanTableName = "mk:versus_3p"; - cpuTableName = "none selected"; break; case FOUR_PLAYERS_SELECTED: humanTableName = "mk:versus_4p"; - cpuTableName = "none selected"; break; } break; case BATTLE: humanTableName = "mk:battle"; - cpuTableName = "none selected"; break; } - - mHumanItemTable = gItemTableRegistry.Get(humanTableName); - mCPUItemTable = gItemTableRegistry.Get(cpuTableName); - printf("[RaceManager] Selected human item probability table %s\n", humanTableName.c_str()); - printf("[RaceManager] Selected cpu item probability table %s\n", cpuTableName.c_str()); + if (humanTableName.has_value()) { + mHumanItemTable = gItemTableRegistry.Get(humanTableName.value()); + } else { + mHumanItemTable = nullptr; + } + if (cpuTableName.has_value()) { + mCPUItemTable = gItemTableRegistry.Get(cpuTableName.value()); + } else { + mCPUItemTable = nullptr; + } + printf("[RaceManager] Selected human item probability table %s\n", humanTableName.value_or("none").c_str()); + printf("[RaceManager] Selected cpu item probability table %s\n", cpuTableName.value_or("none").c_str()); } extern "C" int16_t RaceManager_GetRandomHumanItem(uint32_t rank) { diff --git a/src/engine/registry/RegisterItemTables.cpp b/src/engine/registry/RegisterItemTables.cpp index 5d9b39bd3..5dfffc6d2 100644 --- a/src/engine/registry/RegisterItemTables.cpp +++ b/src/engine/registry/RegisterItemTables.cpp @@ -365,15 +365,16 @@ void RegisterVersus4PItemTable(DataRegistry& r) { void RegisterBattleItemTable(DataRegistry& r) { RandomItemTable table; - - table.Add("mk:banana", RANK_ONE, 10, 0.0f); - table.Add("mk:banana_bunch", RANK_ONE, 5, 0.0f); - table.Add("mk:green_shell", RANK_ONE, 5, 0.0f); - table.Add("mk:triple_green_shell", RANK_ONE, 20, 0.0f); - table.Add("mk:red_shell", RANK_ONE, 20, 0.0f); - table.Add("mk:fake_item_box", RANK_ONE, 15, 0.0f); - table.Add("mk:star", RANK_ONE, 20, 0.0f); - table.Add("mk:boo", RANK_ONE, 5, 0.0f); + for (int rank = RANK_ONE; rank <= RANK_EIGHT; rank++) { + table.Add("mk:banana", rank, 10, 0.0f); + table.Add("mk:banana_bunch", rank, 5, 0.0f); + table.Add("mk:green_shell", rank, 5, 0.0f); + table.Add("mk:triple_green_shell", rank, 20, 0.0f); + table.Add("mk:red_shell", rank, 20, 0.0f); + table.Add("mk:fake_item_box", rank, 15, 0.0f); + table.Add("mk:star", rank, 20, 0.0f); + table.Add("mk:boo", rank, 5, 0.0f); + } r.Add("mk:battle", std::move(table)); }