diff --git a/gui/desktop/mainwindow.cpp b/gui/desktop/mainwindow.cpp index 7e29c406..1e125401 100644 --- a/gui/desktop/mainwindow.cpp +++ b/gui/desktop/mainwindow.cpp @@ -608,6 +608,7 @@ void MainWindow::apply_config_settings() APPLY_CHECKBOX_SETTING(config, ui, ho_ho_hints); APPLY_CHECKBOX_SETTING(config, ui, ho_ho_triforce_hints); APPLY_CHECKBOX_SETTING(config, ui, korl_hints); + APPLY_CHECKBOX_SETTING(config, ui, kreeb_bow_hints); APPLY_CHECKBOX_SETTING(config, ui, use_always_hints); APPLY_CHECKBOX_SETTING(config, ui, clearer_hints); APPLY_CHECKBOX_SETTING(config, ui, hint_importance); @@ -1102,6 +1103,7 @@ void MainWindow::on_player_in_casual_clothes_stateChanged(int arg1) { DEFINE_STATE_CHANGE_FUNCTION(ho_ho_hints) DEFINE_STATE_CHANGE_FUNCTION(ho_ho_triforce_hints) DEFINE_STATE_CHANGE_FUNCTION(korl_hints) +DEFINE_STATE_CHANGE_FUNCTION(kreeb_bow_hints) DEFINE_STATE_CHANGE_FUNCTION(use_always_hints) DEFINE_STATE_CHANGE_FUNCTION(clearer_hints) DEFINE_STATE_CHANGE_FUNCTION(hint_importance) @@ -1372,3 +1374,4 @@ void MainWindow::on_paste_permalink_clicked() auto permalink = QGuiApplication::clipboard()->text(); on_permalink_textEdited(permalink); } + diff --git a/gui/desktop/mainwindow.hpp b/gui/desktop/mainwindow.hpp index c3837bbd..bbe4fac7 100644 --- a/gui/desktop/mainwindow.hpp +++ b/gui/desktop/mainwindow.hpp @@ -240,6 +240,7 @@ private slots: void on_ho_ho_hints_stateChanged(int arg1); void on_ho_ho_triforce_hints_stateChanged(int arg1); void on_korl_hints_stateChanged(int arg1); + void on_kreeb_bow_hints_stateChanged(int arg1); void on_use_always_hints_stateChanged(int arg1); void on_path_hints_valueChanged(int path_hints); void on_barren_hints_valueChanged(int barren_hints); @@ -304,9 +305,6 @@ private slots: void open_chart_mapping_list(uint8_t islandNum); void tracker_give_and_map_chart(TrackerLabel* label, GameItem chart); - - - public: void update_items_color(); void update_locations_color(); diff --git a/gui/desktop/mainwindow.ui b/gui/desktop/mainwindow.ui index ec436bda..bae0e27c 100644 --- a/gui/desktop/mainwindow.ui +++ b/gui/desktop/mainwindow.ui @@ -24,7 +24,7 @@ - QFrame::Shape::NoFrame + QFrame::NoFrame true @@ -63,7 +63,7 @@ - Qt::ContextMenuPolicy::DefaultContextMenu + Qt::DefaultContextMenu @@ -116,7 +116,7 @@ <html><head/><body><p>Playing the randomizer on console requires a Wii U with the Aroma environment and sigpatches. A guide for installing Aroma can be found <a href="https://wiiu.hacks.guide"><span style=" text-decoration: underline; color:#007af4;">here</span></a>. After following the guide, you will need to add <a href="https://github.com/marco-calautti/SigpatchesModuleWiiU/releases"><span style=" text-decoration: underline; color:#007af4;">01_sigpatches.rpx</span></a> to <span style=" font-family:'Courier New';">/wiiu/environments/aroma/modules/setup</span> on your SD card. Make sure to read each page of the guide closely, and pay attention to which environment you are booting into.</p></body></html> - Qt::AlignmentFlag::AlignLeading|Qt::AlignmentFlag::AlignLeft|Qt::AlignmentFlag::AlignTop + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop true @@ -153,7 +153,7 @@ <html><head/><body><p>The patcher requires an accessible version of TWWHD (USA) on your Wii U (digital install or inserted disc). You must also have 2GB of space available for the randomized channel, either on the console's internal memory or a connected USB storage device (*<span style=" font-style:italic;">This storage is reserved after the first-time setup</span>).</p><p>Once homebrew is set up, copy <span style=" font-family:'Courier New';">wwhd_randomizer.wuhb</span> from the <a href="https://github.com/SuperDude88/TWWHD-Randomizer/releases/latest"><span style=" text-decoration: underline; color:#007af4;">releases page</span></a> into <span style=" font-family:'Courier New';">/wiiu/apps</span> on your SD Card. Run the app from the home menu to open the patcher. </p><p>Select the settings you wish to use and then follow the prompts to begin the randomization process. The first time it runs, the patcher will create a home menu channel for the randomized game. This takes some time, but it only happens once. The process of patching the randomized game itself after the new channel is created will also take a few minutes. (*<span style=" font-style:italic;">Note: Everytime you create a new randomized game, it will overwrite any previous one that existed.)</span></p><p><br/></p></body></html> - Qt::AlignmentFlag::AlignLeading|Qt::AlignmentFlag::AlignLeft|Qt::AlignmentFlag::AlignTop + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop true @@ -184,7 +184,7 @@ <html><head/><body><p>To play the randomized game, you must have Aroma active. This should always be the case right after you run the patcher. The randomized channel will have an orange, mirrored icon of the vanilla game. </p><p>A tracker is provided for your convenience in this application. Simply click the <span style=" font-family:'Courier New';">Start New Tracker</span> button in the top right of the tracker tab. Progress made in the tracker is autosaved, so you can close the application and resume progress later if you wish.</p><p>You can either set the same settings in the application for the tracker, or you can retrieve the <span style=" font-family:'Courier New';">config.yaml</span> file from <code>/wiiu/apps/save/(hex digits)(TWWHD Randomizer)</code>, close this application, place the config file in the same folder as this application, and reopen the application to apply the settings automatically.</p></body></html> - Qt::AlignmentFlag::AlignLeading|Qt::AlignmentFlag::AlignLeft|Qt::AlignmentFlag::AlignTop + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop true @@ -222,7 +222,7 @@ <html><head/><body><p>Before generating a seed, you need to have a valid extract of the decrypted USA version of the game. The PAL and JP versions will not work, and neither will the original Wind Waker.</p><p>The decrypted copy of the game is a folder which contains three subfolders (<span style=" font-family:'Courier New';">code</span>, <span style=" font-family:'Courier New';">content</span>, and <span style=" font-family:'Courier New';">meta</span>). It is <span style=" font-style:italic;">not</span> a single file like a <span style=" font-family:'Courier New';">.iso</span> or a <span style=" font-family:'Courier New';">.wad</span>. You can dump a disc or digital install from your Wii U with <a href="https://github.com/emiyl/dumpling/releases/latest"><span style=" text-decoration: underline; color:#007af4;">dumpling</span></a>.</p></body></html> - Qt::AlignmentFlag::AlignLeading|Qt::AlignmentFlag::AlignLeft|Qt::AlignmentFlag::AlignTop + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop true @@ -247,7 +247,7 @@ Generate a Seed - Qt::AlignmentFlag::AlignLeading|Qt::AlignmentFlag::AlignLeft|Qt::AlignmentFlag::AlignVCenter + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter @@ -256,7 +256,7 @@ <html><head/><body><p>After you've obtained your decrypted copy of the game, you need to tell the randomizer where the vanilla game is, as well as where to output the randomized version of the game.</p><p>In the <span style=" font-family:'Courier New';">Base Game Folder</span> field below, browse to and select the folder which contains the decrypted games's three subfolders. In the <span style=" font-family:'Courier New';">Output Folder</span> field, select the folder where you want the randomized game to appear.</p><p>Feel free to go through the settings in the rest of the tabs to customize your experience, and when you're ready, hit the <code>Randomize</code> button in the bottom right.</p></body></html> - Qt::AlignmentFlag::AlignLeading|Qt::AlignmentFlag::AlignLeft|Qt::AlignmentFlag::AlignTop + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop true @@ -287,7 +287,7 @@ <html><head/><body><p>To play the seed, open up the <a href="https://github.com/cemu-project/Cemu/releases"><span style=" text-decoration: underline; color:#007af4;">CEMU Emulator</span></a>. Go to <span style=" font-family:'Courier New';">Options &gt; General Settings</span>. At the bottom where you enter game paths, click <span style=" font-family:'Courier New';">Add</span> and browse for the output folder where the randomized game is. The randomized game should now appear in the games list. It has an orange icon with the King of Red Lions in it. Now launch the game in CEMU and enjoy!</p><p>A tracker is provided for your convenience in this application. Simply click the <code>Start New Tracker</code> button in the tracker tab. Progress made in the tracker is autosaved, so you can close the application and resume progress later if you wish.</p></body></html> - Qt::AlignmentFlag::AlignLeading|Qt::AlignmentFlag::AlignLeft|Qt::AlignmentFlag::AlignTop + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop true @@ -368,7 +368,7 @@ - QLayout::SizeConstraint::SetDefaultConstraint + QLayout::SetDefaultConstraint @@ -894,7 +894,7 @@ - QAbstractSpinBox::ButtonSymbols::UpDownArrows + QAbstractSpinBox::UpDownArrows x @@ -1044,10 +1044,10 @@ - QAbstractItemView::EditTrigger::NoEditTriggers + QAbstractItemView::NoEditTriggers - QAbstractItemView::SelectionMode::ExtendedSelection + QAbstractItemView::ExtendedSelection @@ -1058,7 +1058,7 @@ - Qt::Orientation::Vertical + Qt::Vertical @@ -1109,7 +1109,7 @@ - Qt::Orientation::Vertical + Qt::Vertical @@ -1133,10 +1133,10 @@ - QAbstractItemView::EditTrigger::NoEditTriggers + QAbstractItemView::NoEditTriggers - QAbstractItemView::SelectionMode::ExtendedSelection + QAbstractItemView::ExtendedSelection @@ -1162,7 +1162,7 @@ - Qt::LayoutDirection::LeftToRight + Qt::LeftToRight 1 @@ -1214,7 +1214,7 @@ - Qt::Orientation::Horizontal + Qt::Horizontal @@ -1297,7 +1297,7 @@ - Qt::Orientation::Horizontal + Qt::Horizontal @@ -1399,7 +1399,7 @@ Knights Crests - Qt::AlignmentFlag::AlignRight|Qt::AlignmentFlag::AlignTrailing|Qt::AlignmentFlag::AlignVCenter + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter @@ -1439,7 +1439,7 @@ - QAbstractItemView::EditTrigger::NoEditTriggers + QAbstractItemView::NoEditTriggers @@ -1450,7 +1450,7 @@ - Qt::Orientation::Vertical + Qt::Vertical @@ -1501,7 +1501,7 @@ - Qt::Orientation::Vertical + Qt::Vertical @@ -1525,7 +1525,7 @@ - QAbstractItemView::EditTrigger::NoEditTriggers + QAbstractItemView::NoEditTriggers @@ -1696,7 +1696,7 @@ - QFrame::Shape::NoFrame + QFrame::NoFrame @@ -1710,7 +1710,7 @@ - Qt::Orientation::Vertical + Qt::Vertical @@ -1769,7 +1769,7 @@ - QLayout::SizeConstraint::SetNoConstraint + QLayout::SetNoConstraint @@ -1835,7 +1835,7 @@ - + Hints @@ -1973,6 +1973,13 @@ + + + + Kreeb Hints Bows + + + @@ -2466,7 +2473,7 @@ color: lightgray - QLayout::SizeConstraint::SetMinimumSize + QLayout::SetMinimumSize @@ -2535,10 +2542,10 @@ font-size: 15px; background: transparent; - QFrame::Shape::NoFrame + QFrame::NoFrame - QFrame::Shadow::Plain + QFrame::Plain true @@ -2610,7 +2617,7 @@ font-size: 15px; - QLayout::SizeConstraint::SetMaximumSize + QLayout::SetMaximumSize @@ -2668,10 +2675,10 @@ font-size: 15px; background: transparent; - QFrame::Shape::NoFrame + QFrame::NoFrame - QFrame::Shadow::Plain + QFrame::Plain true @@ -2766,7 +2773,7 @@ font-size: 15px; 6 - QLayout::SizeConstraint::SetMaximumSize + QLayout::SetMaximumSize @@ -2807,10 +2814,10 @@ font-size: 15px; background: transparent; - QFrame::Shape::NoFrame + QFrame::NoFrame - QFrame::Shadow::Plain + QFrame::Plain true @@ -2864,7 +2871,7 @@ font-size: 15px; Where did lead to? - Qt::AlignmentFlag::AlignCenter + Qt::AlignCenter true @@ -2953,7 +2960,7 @@ font-size: 15px; - QLayout::SizeConstraint::SetDefaultConstraint + QLayout::SetDefaultConstraint @@ -3011,7 +3018,7 @@ font-weight: bold; 0 - Qt::AlignmentFlag::AlignRight|Qt::AlignmentFlag::AlignTrailing|Qt::AlignmentFlag::AlignVCenter + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter @@ -3043,7 +3050,7 @@ font-weight: bold; 0 - Qt::AlignmentFlag::AlignRight|Qt::AlignmentFlag::AlignTrailing|Qt::AlignmentFlag::AlignVCenter + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter @@ -3057,7 +3064,7 @@ font-weight: bold; 0 - Qt::AlignmentFlag::AlignRight|Qt::AlignmentFlag::AlignTrailing|Qt::AlignmentFlag::AlignVCenter + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter @@ -3109,7 +3116,7 @@ font-weight: bold; - Qt::AlignmentFlag::AlignBottom|Qt::AlignmentFlag::AlignHCenter + Qt::AlignBottom|Qt::AlignHCenter true @@ -3169,7 +3176,7 @@ font-weight: bold; - Qt::AlignmentFlag::AlignRight|Qt::AlignmentFlag::AlignTrailing|Qt::AlignmentFlag::AlignVCenter + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter @@ -3188,7 +3195,7 @@ font-weight: bold; - Qt::AlignmentFlag::AlignRight|Qt::AlignmentFlag::AlignTrailing|Qt::AlignmentFlag::AlignVCenter + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter @@ -3207,7 +3214,7 @@ font-weight: bold; - Qt::AlignmentFlag::AlignHCenter|Qt::AlignmentFlag::AlignTop + Qt::AlignHCenter|Qt::AlignTop true @@ -3248,7 +3255,7 @@ color: lightgray - Qt::Orientation::Vertical + Qt::Vertical @@ -3337,7 +3344,7 @@ color: lightgray Seed Hash: - Qt::AlignmentFlag::AlignLeading|Qt::AlignmentFlag::AlignLeft|Qt::AlignmentFlag::AlignVCenter + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter @@ -3383,7 +3390,7 @@ color: lightgray - Qt::Orientation::Horizontal + Qt::Horizontal @@ -3403,7 +3410,7 @@ color: lightgray - Qt::Orientation::Horizontal + Qt::Horizontal @@ -3429,7 +3436,7 @@ color: lightgray - Qt::Orientation::Horizontal + Qt::Horizontal diff --git a/gui/desktop/option_descriptions.hpp b/gui/desktop/option_descriptions.hpp index 4406bbe2..1d0901b3 100644 --- a/gui/desktop/option_descriptions.hpp +++ b/gui/desktop/option_descriptions.hpp @@ -304,6 +304,10 @@ static std::unordered_map optionDescriptions = { "korl_hints", "Places hints on the King of Red Lions. Talk to the King of Red Lions to get hints.", }, + { + "kreeb_bow_hints", + "When this option is selected, Kreeb will give an item hint for each Progressive Bow after Link reactivates the Windfall lighthouse.", + }, { "path_hints", "Determines the number of path hints that will be placed in the game, distributed using the selected hint placement options.
If multiple hint placement options are selected, the hint count will be split evenly among the placement options.", diff --git a/gui/wiiu/OptionActions.cpp b/gui/wiiu/OptionActions.cpp index 173ce4bc..61046e35 100644 --- a/gui/wiiu/OptionActions.cpp +++ b/gui/wiiu/OptionActions.cpp @@ -352,6 +352,11 @@ namespace OptionCB { return fromBool(conf.settings.korl_hints); } + std::string toggleKreebBowHints() { + conf.settings.kreeb_bow_hints = !conf.settings.kreeb_bow_hints; + return fromBool(conf.settings.kreeb_bow_hints); + } + std::string toggleClearHints() { conf.settings.clearer_hints = !conf.settings.clearer_hints; return fromBool(conf.settings.clearer_hints); @@ -983,6 +988,8 @@ std::string getValue(const Option& option) { return fromBool(conf.settings.ho_ho_triforce_hints); case Option::KorlHints: return fromBool(conf.settings.korl_hints); + case Option::KreebBowHints: + return fromBool(conf.settings.kreeb_bow_hints); case Option::ClearerHints: return fromBool(conf.settings.clearer_hints); case Option::UseAlwaysHints: @@ -1195,6 +1202,8 @@ TriggerCallback getCallback(const Option& option) { return &toggleHoHoTriforceHints; case Option::KorlHints: return &toggleKorlHints; + case Option::KreebBowHints: + return &toggleKreebBowHints; case Option::ClearerHints: return &toggleClearHints; case Option::UseAlwaysHints: @@ -1362,6 +1371,7 @@ std::pair getNameDesc(const Option& option) { {HoHoHints, {"Place Hints on Old Man Ho Ho", "Places hints on Old Man Ho Ho. Old Man Ho Ho appears at 10 different islands. Simply talk to Old Man Ho Ho to get hints."}}, {HoHoTriforceHints, {"Old Man Ho Ho Hints Shards", "When this option is selected, each Old Man Ho Ho will give an item hint for a Triforce Shard. Hints are not repeated until each shard is hinted once. This setting will override placing other hints on Old Man Ho Ho."}}, {KorlHints, {"Place Hints on King of Red Lions", "Places hints on the King of Red Lions. Talk to the King of Red Lions to get hints."}}, + {KreebBowHints, {"Kreeb Hints Bows", "When this option is selected, Kreeb will give an item hint for each Progressive Bow after Link reactivates the Windfall lighthouse."}}, {ClearerHints, {"Clearer Hints", "When this option is selected, location and item hints will use the standard check or item name, instead of using cryptic hints."}}, {UseAlwaysHints, {"Use Always Hints", "When the number of location hints is nonzero, certain locations that will always be hinted will take precedence over normal location hints."}}, {HintImportance, {"Hint Importance", "When this option is selected, item and location hints will also indicate if the hinted item is required, possibly required, or not required. Only progress items will have these additions; non-progress items are trivially not required."}}, diff --git a/gui/wiiu/OptionActions.hpp b/gui/wiiu/OptionActions.hpp index 095a8a3d..90d52a2b 100644 --- a/gui/wiiu/OptionActions.hpp +++ b/gui/wiiu/OptionActions.hpp @@ -59,6 +59,7 @@ namespace OptionCB { std::string toggleHoHoHints(); std::string toggleHoHoTriforceHints(); std::string toggleKorlHints(); + std::string toggleKreebBowHints(); std::string toggleClearHints(); std::string toggleAlwaysHints(); std::string toggleHintImportance(); diff --git a/gui/wiiu/Page.cpp b/gui/wiiu/Page.cpp index 31fa0b9c..c9c92152 100644 --- a/gui/wiiu/Page.cpp +++ b/gui/wiiu/Page.cpp @@ -270,6 +270,7 @@ HintsPage::HintsPage() { buttonColumns[0].emplace_back(std::make_unique(Option::HoHoHints)); buttonColumns[0].emplace_back(std::make_unique(Option::HoHoTriforceHints)); buttonColumns[0].emplace_back(std::make_unique(Option::KorlHints)); + buttonColumns[0].emplace_back(std::make_unique(Option::KreebBowHints)); buttonColumns[0].emplace_back(std::make_unique(Option::ClearerHints)); buttonColumns[0].emplace_back(std::make_unique(Option::UseAlwaysHints)); buttonColumns[0].emplace_back(std::make_unique(Option::HintImportance)); diff --git a/logic/Hints.cpp b/logic/Hints.cpp index b6747db9..251dbc6e 100644 --- a/logic/Hints.cpp +++ b/logic/Hints.cpp @@ -724,6 +724,24 @@ static HintError assignHoHoHints(World& world, WorldPool& worlds, std::listcurrentItem.getGameItemId() == GameItem::ProgressiveBow) + { + world.kreebHints.push_back(location); + LOG_AND_RETURN_IF_ERR(generateItemHintMessage(location)); + } + } + return HintError::NONE; +} + HintError generateHints(WorldPool& worlds) { LOG_AND_RETURN_IF_ERR(calculatePossiblePathLocations(worlds)); @@ -751,6 +769,12 @@ HintError generateHints(WorldPool& worlds) uint8_t totalMadeHints = hintLocations.size(); LOG_AND_RETURN_IF_ERR(generateLocationHintLocations(world, hintLocations, totalNumHints - totalMadeHints)); + // Assign Kreeb Bow Hints if the setting is enabled + if (settings.kreeb_bow_hints) + { + assignKreebHints(world, worlds); + } + // Distribute hints evenly among the possible hint placement options std::vector hintPlacementOptions = {}; std::unordered_map> hintsForCategory = {}; diff --git a/logic/LogicTests.cpp b/logic/LogicTests.cpp index dcc42e5c..5a9eef76 100644 --- a/logic/LogicTests.cpp +++ b/logic/LogicTests.cpp @@ -184,6 +184,7 @@ void runLogicTests(Config& newConfig) TEST(settings1, settings1.ho_ho_hints, "5 item hints"); settings1.location_hints = 5; TEST(settings1, settings1.ho_ho_hints, "5 location hints"); + TEST(settings1, settings1.kreeb_bow_hints, "kreeb bow hints"); TEST(settings1, settings1.use_always_hints, "use always hints"); TEST(settings1, settings1.clearer_hints, "clearer hints"); TEST(settings1, settings1.hint_importance, "hint importance"); @@ -223,6 +224,7 @@ void runLogicTests(Config& newConfig) TEST(settings2, settings2.hint_importance, "hint importance"); TEST(settings2, settings2.clearer_hints, "clearer hints"); TEST(settings2, settings2.use_always_hints, "use always hints"); + TEST(settings2, settings2.kreeb_bow_hints, "kreeb bow hints"); settings2.path_hints = 5; TEST(settings2, settings2.korl_hints, "5 path hints"); settings2.barren_hints = 5; diff --git a/logic/SpoilerLog.cpp b/logic/SpoilerLog.cpp index 80c2e88e..04f5fcc1 100644 --- a/logic/SpoilerLog.cpp +++ b/logic/SpoilerLog.cpp @@ -238,7 +238,7 @@ void generateSpoilerLog(WorldPool& worlds) for (auto& world : worlds) { // Don't print "Hints" if there are none - if (world.hohoHints.empty() && world.korlHints.empty() && world.bigOctoFairyHintLocation == nullptr) + if (world.hohoHints.empty() && world.korlHints.empty() && world.bigOctoFairyHintLocation == nullptr && world.kreebHints.empty()) { continue; } @@ -291,6 +291,16 @@ void generateSpoilerLog(WorldPool& worlds) } spoilerLog << " " << Utility::Str::toUTF8(hintText) << std::endl; } + + if (!world.kreebHints.empty()) + { + spoilerLog << " Kreeb Hints:" << std::endl; + for (auto location : world.kreebHints) + { + spoilerLog << " " << getSpoilerFormatHint(location); + spoilerLog << std::endl; + } + } } spoilerLog << std::endl; diff --git a/logic/World.hpp b/logic/World.hpp index 9ca6291d..12221ac0 100644 --- a/logic/World.hpp +++ b/logic/World.hpp @@ -128,6 +128,7 @@ class World std::list goalLocations = {}; std::map> barrenRegions = {}; std::list korlHints = {}; + std::list kreebHints = {}; std::map, PointerLess> hohoHints = {}; // map of Ho Ho Hint Location to hinted locations Location* bigOctoFairyHintLocation = nullptr; std::list> playthroughSpheres = {}; diff --git a/options.cpp b/options.cpp index c5ab7334..aaf4c16f 100644 --- a/options.cpp +++ b/options.cpp @@ -61,6 +61,7 @@ void Settings::resetDefaultSettings() { decouple_entrances = false; korl_hints = false; + kreeb_bow_hints = false; ho_ho_hints = false; ho_ho_triforce_hints = false; path_hints = false; @@ -237,6 +238,8 @@ uint8_t Settings::getSetting(const Option& option) const { return ho_ho_triforce_hints; case Option::KorlHints: return korl_hints; + case Option::KreebBowHints: + return kreeb_bow_hints; case Option::ClearerHints: return clearer_hints; case Option::UseAlwaysHints: @@ -426,6 +429,8 @@ void Settings::setSetting(const Option& option, const size_t& value) { ho_ho_triforce_hints = value; return; case Option::KorlHints: korl_hints = value; return; + case Option::KreebBowHints: + kreeb_bow_hints = value; return; case Option::ClearerHints: clearer_hints = value; return; case Option::UseAlwaysHints: @@ -914,6 +919,7 @@ Option nameToSetting(const std::string& name) { {"Ho Ho Hints", Option::HoHoHints}, {"Ho Ho Triforce Hints", Option::HoHoTriforceHints}, {"Korl Hints", Option::KorlHints}, + {"Kreeb Bow Hints", Option::KreebBowHints}, {"Clearer Hints", Option::ClearerHints}, {"Use Always Hints", Option::UseAlwaysHints}, {"Hint Importance", Option::HintImportance}, @@ -1016,6 +1022,7 @@ std::string settingToName(const Option& setting) { {Option::HoHoHints, "Ho Ho Hints"}, {Option::HoHoTriforceHints, "Ho Ho Triforce Hints"}, {Option::KorlHints, "Korl Hints"}, + {Option::KreebBowHints, "Kreeb Bow Hints"}, {Option::ClearerHints, "Clearer Hints"}, {Option::UseAlwaysHints, "Use Always Hints"}, {Option::HintImportance, "Hint Importance"}, diff --git a/options.hpp b/options.hpp index 92acd390..be2247c9 100644 --- a/options.hpp +++ b/options.hpp @@ -178,6 +178,7 @@ enum struct Option { HoHoHints, HoHoTriforceHints, KorlHints, + KreebBowHints, ClearerHints, UseAlwaysHints, HintImportance, @@ -269,6 +270,7 @@ class Settings { bool ho_ho_hints; bool ho_ho_triforce_hints; bool korl_hints; + bool kreeb_bow_hints; bool clearer_hints; bool use_always_hints; bool hint_importance; diff --git a/seedgen/config.cpp b/seedgen/config.cpp index fc3ba18a..6b7c4a00 100644 --- a/seedgen/config.cpp +++ b/seedgen/config.cpp @@ -196,6 +196,7 @@ ConfigError Config::loadFromFile(const fspath& filePath, const fspath& preferenc GET_FIELD(root, "ho_ho_hints", settings.ho_ho_hints) GET_FIELD(root, "ho_ho_triforce_hints", settings.ho_ho_triforce_hints) GET_FIELD(root, "korl_hints", settings.korl_hints) + GET_FIELD(root, "kreeb_bow_hints", settings.kreeb_bow_hints) GET_FIELD(root, "clearer_hints", settings.clearer_hints) GET_FIELD(root, "use_always_hints", settings.use_always_hints) GET_FIELD(root, "hint_importance", settings.hint_importance) @@ -527,6 +528,7 @@ YAML::Node Config::settingsToYaml() const { SET_FIELD(root, "ho_ho_hints", settings.ho_ho_hints) SET_FIELD(root, "ho_ho_triforce_hints", settings.ho_ho_triforce_hints) SET_FIELD(root, "korl_hints", settings.korl_hints) + SET_FIELD(root, "kreeb_bow_hints", settings.kreeb_bow_hints) SET_FIELD(root, "clearer_hints", settings.clearer_hints) SET_FIELD(root, "use_always_hints", settings.use_always_hints) SET_FIELD(root, "hint_importance", settings.hint_importance) @@ -808,6 +810,7 @@ static const std::vector