diff --git a/mods/randomizer/generator/data/macros.yaml b/mods/randomizer/generator/data/macros.yaml index bdb731327b..a337cb762c 100644 --- a/mods/randomizer/generator/data/macros.yaml +++ b/mods/randomizer/generator/data/macros.yaml @@ -103,7 +103,7 @@ Has Damaging Item: Sword or Ball_and_Chain or Bow or Bombs or Iron_Boots or Wolf Can Hit Crystal Switch: Clawshot or Has_Damaging_Item Can Hit Crystal Switch at Range: Clawshot or Bow -Can Complete MDH: Skip_Midna's_Desparate_Hour == On or ('Can_Access_Castle_Town_South' and 'Can_Complete_Lakebed_Temple') +Can Complete MDH: Skip_Midna's_Desperate_Hour == On or ('Can_Access_Castle_Town_South' and 'Can_Complete_Lakebed_Temple') diff --git a/mods/randomizer/generator/data/settings_list.yaml b/mods/randomizer/generator/data/settings_list.yaml index 17cbd616d7..054b218cac 100644 --- a/mods/randomizer/generator/data/settings_list.yaml +++ b/mods/randomizer/generator/data/settings_list.yaml @@ -315,7 +315,7 @@ - "Off": "You will be required to complete the Lanayru Twilight section of the game." - "On": "The Lanayru Twilight section of the game will be completed from the start." -- Name: Skip Midna's Desparate Hour +- Name: Skip Midna's Desperate Hour Tracker Important: True Default Option: "Off" Options: diff --git a/mods/randomizer/generator/data/startflags.yaml b/mods/randomizer/generator/data/startflags.yaml index 5665f341a9..35e3a175f6 100644 --- a/mods/randomizer/generator/data/startflags.yaml +++ b/mods/randomizer/generator/data/startflags.yaml @@ -77,9 +77,9 @@ EventFlags: - 0x0602 # Forest Temple Story Flag - 0x0C40 # Talked to Farone after clearing Forest Temple - 0x5E10 # Midna text after Forest Temple completed - - Skip_Midna's_Desparate_Hour == On: + - Skip_Midna's_Desperate_Hour == On: - 0x0C01 # Midna's Desperate Hour started. - - 0x1E08 # Midna's Deseperate Hour Completed. + - 0x1E08 # Midna's Desperate Hour Completed. - Small_Keys == Keysy: - 0x0850 # Zora Escort started and completed. - 0x0480 # Told Yeta about pumpkin. @@ -235,7 +235,7 @@ RegionFlags: - 0xB0 # Watched CS of Ooccoo running to Sky Cannon. - Lanayru_Twilight_Cleared == On: - 0x7F # Lake Hylia has water on Lake Hylia Map. - - Skip_Midna's_Desparate_Hour == On: + - Skip_Midna's_Desperate_Hour == On: - 0x51 # Set flag for MDH Cutscene in Lake Hylia - Lakebed_Does_Not_Require_Water_Bombs == On: - 0x70 # Blew up rock in front of lakebed CS. diff --git a/mods/randomizer/generator/data/tests/logic/all random/settings.yaml b/mods/randomizer/generator/data/tests/logic/all random/settings.yaml index cdb0701a59..f469aad0ff 100644 --- a/mods/randomizer/generator/data/tests/logic/all random/settings.yaml +++ b/mods/randomizer/generator/data/tests/logic/all random/settings.yaml @@ -45,7 +45,7 @@ Sacred Grove Does Not Require Skull Kid: Random Shop Items: Random Shops Display The Replaced Item: Random Skip Major Cutscenes: Random -Skip Midna's Desparate Hour: Random +Skip Midna's Desperate Hour: Random Skip Minor Cutscenes: Random Skip Prologue: Random Sky Characters: Random diff --git a/mods/randomizer/generator/data/tests/logic/max entrance rando/settings.yaml b/mods/randomizer/generator/data/tests/logic/max entrance rando/settings.yaml index c95a0803c5..de8039f78e 100644 --- a/mods/randomizer/generator/data/tests/logic/max entrance rando/settings.yaml +++ b/mods/randomizer/generator/data/tests/logic/max entrance rando/settings.yaml @@ -4,7 +4,7 @@ Skip Prologue: On Faron Twilight Cleared: On Eldin Twilight Cleared: On Lanayru Twilight Cleared: On -Skip Midna's Desparate Hour: On +Skip Midna's Desperate Hour: On Randomize Starting Spawn: On Randomize Dungeon Entrances: On Randomize Boss Entrances: On diff --git a/mods/randomizer/generator/data/tests/logic/mixed entrance pools/settings.yaml b/mods/randomizer/generator/data/tests/logic/mixed entrance pools/settings.yaml index 77babdaf99..9ed92dacd9 100644 --- a/mods/randomizer/generator/data/tests/logic/mixed entrance pools/settings.yaml +++ b/mods/randomizer/generator/data/tests/logic/mixed entrance pools/settings.yaml @@ -4,7 +4,7 @@ Skip Prologue: On Faron Twilight Cleared: On Eldin Twilight Cleared: On Lanayru Twilight Cleared: On -Skip Midna's Desparate Hour: On +Skip Midna's Desperate Hour: On Randomize Starting Spawn: On Randomize Dungeon Entrances: On Randomize Grotto Entrances: On diff --git a/mods/randomizer/generator/data/tests/logic/random cave entrances/settings.yaml b/mods/randomizer/generator/data/tests/logic/random cave entrances/settings.yaml index 5f51f783c7..b993917e5e 100644 --- a/mods/randomizer/generator/data/tests/logic/random cave entrances/settings.yaml +++ b/mods/randomizer/generator/data/tests/logic/random cave entrances/settings.yaml @@ -4,5 +4,5 @@ Skip Prologue: On Faron Twilight Cleared: On Eldin Twilight Cleared: On Lanayru Twilight Cleared: On -Skip Midna's Desparate Hour: On +Skip Midna's Desperate Hour: On Randomize Cave Entrances: On \ No newline at end of file diff --git a/mods/randomizer/generator/data/tests/logic/random interior entrances/settings.yaml b/mods/randomizer/generator/data/tests/logic/random interior entrances/settings.yaml index 6510d279bf..0e3ec8a5f3 100644 --- a/mods/randomizer/generator/data/tests/logic/random interior entrances/settings.yaml +++ b/mods/randomizer/generator/data/tests/logic/random interior entrances/settings.yaml @@ -4,5 +4,5 @@ Skip Prologue: On Faron Twilight Cleared: On Eldin Twilight Cleared: On Lanayru Twilight Cleared: On -Skip Midna's Desparate Hour: On +Skip Midna's Desperate Hour: On Randomize Interior Entrances: On \ No newline at end of file diff --git a/mods/randomizer/generator/data/tests/logic/random overworld entrances/settings.yaml b/mods/randomizer/generator/data/tests/logic/random overworld entrances/settings.yaml index a018903bf5..ce75a85547 100644 --- a/mods/randomizer/generator/data/tests/logic/random overworld entrances/settings.yaml +++ b/mods/randomizer/generator/data/tests/logic/random overworld entrances/settings.yaml @@ -4,5 +4,5 @@ Skip Prologue: On Faron Twilight Cleared: On Eldin Twilight Cleared: On Lanayru Twilight Cleared: On -Skip Midna's Desparate Hour: On +Skip Midna's Desperate Hour: On Randomize Overworld Entrances: On \ No newline at end of file diff --git a/mods/randomizer/generator/data/tests/logic/randomize starting spawn/settings.yaml b/mods/randomizer/generator/data/tests/logic/randomize starting spawn/settings.yaml index 27784d7b97..e2d2c0f217 100644 --- a/mods/randomizer/generator/data/tests/logic/randomize starting spawn/settings.yaml +++ b/mods/randomizer/generator/data/tests/logic/randomize starting spawn/settings.yaml @@ -4,5 +4,5 @@ Skip Prologue: On Faron Twilight Cleared: On Eldin Twilight Cleared: On Lanayru Twilight Cleared: On -Skip Midna's Desparate Hour: On +Skip Midna's Desperate Hour: On Randomize Starting Spawn: On \ No newline at end of file diff --git a/mods/randomizer/generator/data/tests/logic/skip mdh/settings.yaml b/mods/randomizer/generator/data/tests/logic/skip mdh/settings.yaml index d08be69c12..493d6488d6 100644 --- a/mods/randomizer/generator/data/tests/logic/skip mdh/settings.yaml +++ b/mods/randomizer/generator/data/tests/logic/skip mdh/settings.yaml @@ -1,2 +1,2 @@ Seed: TESTTESTTEST -Skip Midna's Desparate Hour: On \ No newline at end of file +Skip Midna's Desperate Hour: On \ No newline at end of file diff --git a/mods/randomizer/generator/seedgen/config.cpp b/mods/randomizer/generator/seedgen/config.cpp index 41f58cfedf..36f76d676c 100644 --- a/mods/randomizer/generator/seedgen/config.cpp +++ b/mods/randomizer/generator/seedgen/config.cpp @@ -105,7 +105,12 @@ namespace randomizer::seedgen::config // Loop through all setting fields for (const auto& settingNode : settingsTree) { - const auto& settingName = settingNode.first.as(); + auto settingName = settingNode.first.as(); + if (settings::UpdateOldSettingName(settingName)) { + utility::platform::Log(std::string("Setting \"") + settingName + + "\" was updated from \"" + settingNode.first.as() + "\""); + rewriteSettings = true; + } // Insert the setting if it's in the info map if (settingInfoMap->contains(settingName)) { @@ -181,7 +186,12 @@ namespace randomizer::seedgen::config auto preferencesTree = LoadYAML(preferencesPath); for (const auto& preferenceNode : preferencesTree) { - const auto& preferenceName = preferenceNode.first.as(); + auto preferenceName = preferenceNode.first.as(); + if (settings::UpdateOldSettingName(preferenceName)) { + utility::platform::Log(std::string("Preference \"") + preferenceName + + "\" was updated from \"" + preferenceNode.first.as() + "\""); + rewritePreferences = true; + } // Insert the preference if it's in the info map if (settingInfoMap->contains(preferenceName)) { diff --git a/mods/randomizer/generator/seedgen/settings.cpp b/mods/randomizer/generator/seedgen/settings.cpp index 56482a6323..49a0f18a78 100644 --- a/mods/randomizer/generator/seedgen/settings.cpp +++ b/mods/randomizer/generator/seedgen/settings.cpp @@ -412,4 +412,13 @@ namespace randomizer::seedgen::settings return settingsInfoHash; } + bool UpdateOldSettingName(std::string& settingName) { + if (settingName == "Skip Midna's Desparate Hour") { + settingName = "Skip Midna's Desperate Hour"; + return true; + } + + return false; + } + }; // namespace randomizer::seedgen::settings diff --git a/mods/randomizer/generator/seedgen/settings.hpp b/mods/randomizer/generator/seedgen/settings.hpp index 3ae2a204bb..79267e9a8f 100644 --- a/mods/randomizer/generator/seedgen/settings.hpp +++ b/mods/randomizer/generator/seedgen/settings.hpp @@ -231,4 +231,11 @@ namespace randomizer::seedgen::settings */ uint32_t GetSettingInfoHash(); + /** + * @brief Updates an old setting name to the corresponding new one + * @param settingName The potentially old setting name + * @return True if the setting name was updated, false otherwise + */ + bool UpdateOldSettingName(std::string& settingName); + }; // namespace randomizer::seedgen::settings diff --git a/mods/randomizer/src/ui/rando_config.cpp b/mods/randomizer/src/ui/rando_config.cpp index 8b19564658..750e9b53e7 100644 --- a/mods/randomizer/src/ui/rando_config.cpp +++ b/mods/randomizer/src/ui/rando_config.cpp @@ -887,7 +887,7 @@ ModResult buildSeedOptionsTab(ModContext* ctx, UiWindowHandle, UiElementHandle l add_select_setting(leftPane, "Faron Twilight Cleared"); add_select_setting(leftPane, "Eldin Twilight Cleared"); add_select_setting(leftPane, "Lanayru Twilight Cleared"); - add_select_setting(leftPane, "Skip Midna's Desparate Hour"); + add_select_setting(leftPane, "Skip Midna's Desperate Hour"); add_select_setting(leftPane, "Skip Minor Cutscenes"); add_select_setting(leftPane, "Skip Major Cutscenes"); add_select_setting(leftPane, "Unlock Map Regions");