summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGarrett Cox <garrettjcox@gmail.com>2026-01-19 23:14:10 -0600
committerGitHub <noreply@github.com>2026-01-19 23:14:10 -0600
commit66d0276252b91314718b8eba2509d3105de92386 (patch)
tree4869d5823859142e3a25226b5180fdc4073de5a9
parentc768e773d14b4b1fcfa0608fa6ba7c6afcd6da2c (diff)
Gracefully handle old starting items config & allow empty starting items (#1475)
-rw-r--r--mm/2s2h/Rando/StartingItems.cpp25
1 files changed, 16 insertions, 9 deletions
diff --git a/mm/2s2h/Rando/StartingItems.cpp b/mm/2s2h/Rando/StartingItems.cpp
index 13a41a472..3b1b6c540 100644
--- a/mm/2s2h/Rando/StartingItems.cpp
+++ b/mm/2s2h/Rando/StartingItems.cpp
@@ -148,16 +148,23 @@ std::vector<RandoItemId> GetStartingItemsFromConfig() {
// Verify that the config has CVars.gRando.StartingItems and its an array
if (allConfig.find("CVars") != allConfig.end() && allConfig["CVars"].is_object() &&
allConfig["CVars"].find("gRando") != allConfig["CVars"].end() && allConfig["CVars"]["gRando"].is_object() &&
- allConfig["CVars"]["gRando"].find("StartingItems") != allConfig["CVars"]["gRando"].end() &&
- allConfig["CVars"]["gRando"]["StartingItems"].is_array()) {
- startingItems.clear();
-
- auto startingItemsStrings = allConfig["CVars"]["gRando"]["StartingItems"].get<std::vector<std::string>>();
- for (auto& itemName : startingItemsStrings) {
- auto randoItemId = Rando::StaticData::GetItemIdFromName(itemName.c_str());
- if (randoItemId > RI_UNKNOWN && randoItemId < RI_MAX) {
- startingItems.push_back(randoItemId);
+ allConfig["CVars"]["gRando"].find("StartingItems") != allConfig["CVars"]["gRando"].end()) {
+
+ if (allConfig["CVars"]["gRando"]["StartingItems"].is_array()) {
+ startingItems.clear();
+
+ auto startingItemsStrings = allConfig["CVars"]["gRando"]["StartingItems"].get<std::vector<std::string>>();
+ for (auto& itemName : startingItemsStrings) {
+ auto randoItemId = Rando::StaticData::GetItemIdFromName(itemName.c_str());
+ if (randoItemId > RI_UNKNOWN && randoItemId < RI_MAX) {
+ startingItems.push_back(randoItemId);
+ }
}
+ } else if (allConfig["CVars"]["gRando"]["StartingItems"].is_string()) {
+ CVarClear("gRando.StartingItems");
+ Ship::Context::GetInstance()->GetWindow()->GetGui()->SaveConsoleVariablesNextFrame();
+ } else if (allConfig["CVars"]["gRando"]["StartingItems"].is_null()) {
+ startingItems.clear();
}
}