summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcoco875 <59367621+coco875@users.noreply.github.com>2025-12-24 16:44:45 +0100
committerGitHub <noreply@github.com>2025-12-24 16:44:45 +0100
commit5fc7aebf87b91cc9f4c27812dbf6b034012a72df (patch)
tree36bfc6a0c12063a81911dc2a2ba639ffc3ac3fef
parentb0582b5c32914a815fe6a2ffc41f3eb9c24a3a2b (diff)
fix item in multiplayer (#612)
-rw-r--r--src/engine/RaceManager.cpp26
-rw-r--r--src/engine/registry/RegisterItemTables.cpp19
2 files changed, 25 insertions, 20 deletions
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<std::string> humanTableName;
+ std::optional<std::string> 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<RandomItemTable>& r) {
void RegisterBattleItemTable(DataRegistry<RandomItemTable>& 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));
}