diff --git a/CMakeLists.txt b/CMakeLists.txt index 6dc479fb4..ec9f14f5b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -5,7 +5,7 @@ set(CMAKE_CXX_STANDARD 20 CACHE STRING "The C++ standard to use") set(CMAKE_OSX_DEPLOYMENT_TARGET "10.15" CACHE STRING "Minimum OS X deployment version") -project(Ship VERSION 9.0.1 LANGUAGES C CXX) +project(Ship VERSION 9.0.2 LANGUAGES C CXX) include(CMake/soh-cvars.cmake) include(CMake/lus-cvars.cmake) diff --git a/run-clang-format.ps1 b/run-clang-format.ps1 index 6aaf12ea4..39905f9ed 100644 --- a/run-clang-format.ps1 +++ b/run-clang-format.ps1 @@ -37,12 +37,13 @@ if (-not (Test-Path $clangFormatFilePath) -or ($currentVersion -ne $requiredVers $basePath = (Resolve-Path .).Path $files = Get-ChildItem -Path $basePath\soh -Recurse -File ` | Where-Object { ($_.Extension -eq '.c' -or $_.Extension -eq '.cpp' -or ` - ($_.Extension -eq '.h' -and ` + (($_.Extension -eq '.h' -or $_.Extension -eq '.hpp') -and ` (-not ($_.FullName -like "*\soh\src\*" -or $_.FullName -like "*\soh\include\*")))) -and ` (-not ($_.FullName -like "*\soh\assets\*")) } -foreach ($file in $files) { +for ($i = 0; $i -lt $files.Length; $i++) { + $file = $files[$i] $relativePath = $file.FullName.Substring($basePath.Length + 1) - Write-Host "Formatting $relativePath" + Write-Host "Formatting [$($i+1)/$($files.Length)] $relativePath" .\clang-format.exe -i $file.FullName } diff --git a/run-clang-format.sh b/run-clang-format.sh index 6f9fc0c80..20129e63d 100755 --- a/run-clang-format.sh +++ b/run-clang-format.sh @@ -10,20 +10,20 @@ # -name "*.c" -o -name "*.cpp" # find all .c and .cpp files # -# -name "*.h" ! -path "soh/src/**.h" ! -path "soh/include/**.h" -# find all .h files that aren't in soh/src or soh/include +# ( -name "*.h" -o -name "*.hpp" ) ! -path "soh/src/**.h" ! -path "soh/include/**.h" +# find all .h and .hpp files that aren't in soh/src or soh/include # this is because zret decomp only runs clang-format on c files # https://github.com/zeldaret/mm/blob/b7e5468ca16315a7e322055eff3d97fe980bbc25/format.py#L182 # # ! -path "soh/assets/*" # asset headers are autogenerated, don't fight them # -# | sed 's| |\\ |g' -# pipe the result of find into sed to -# ensure all the paths returned by find have spaces escaped +# -print0 +# separate paths with NUL bytes, avoiding issues with spaces in paths # -# | xargs clang-format-14 -i +# | xargs -0 clang-format-14 -i -verbose # use xargs to take each path we've found # and pass it as an argument to clang-format +# verbose to print files being formatted and X out of Y status -find soh -type f \( -name "*.c" -o -name "*.cpp" -o \( -name "*.h" ! -path "soh/src/**.h" ! -path "soh/include/**.h" \) \) ! -path "soh/assets/*" | sed 's| |\\ |g' | xargs clang-format-14 -i +find soh -type f \( -name "*.c" -o -name "*.cpp" -o \( \( -name "*.h" -o -name "*.hpp" \) ! -path "soh/src/*" ! -path "soh/include/*" \) \) ! -path "soh/assets/*" -print0 | xargs -0 clang-format-14 -i --verbose diff --git a/soh/assets/xml/GC_MQ_NTSC_J/textures/item_name_static.xml b/soh/assets/xml/GC_MQ_NTSC_J/textures/item_name_static.xml index 266b3c200..1bc074c2f 100644 --- a/soh/assets/xml/GC_MQ_NTSC_J/textures/item_name_static.xml +++ b/soh/assets/xml/GC_MQ_NTSC_J/textures/item_name_static.xml @@ -239,7 +239,7 @@ - + diff --git a/soh/assets/xml/GC_MQ_NTSC_U/textures/item_name_static.xml b/soh/assets/xml/GC_MQ_NTSC_U/textures/item_name_static.xml index 266b3c200..1bc074c2f 100644 --- a/soh/assets/xml/GC_MQ_NTSC_U/textures/item_name_static.xml +++ b/soh/assets/xml/GC_MQ_NTSC_U/textures/item_name_static.xml @@ -239,7 +239,7 @@ - + diff --git a/soh/assets/xml/GC_NMQ_NTSC_J/textures/item_name_static.xml b/soh/assets/xml/GC_NMQ_NTSC_J/textures/item_name_static.xml index 266b3c200..1bc074c2f 100644 --- a/soh/assets/xml/GC_NMQ_NTSC_J/textures/item_name_static.xml +++ b/soh/assets/xml/GC_NMQ_NTSC_J/textures/item_name_static.xml @@ -239,7 +239,7 @@ - + diff --git a/soh/assets/xml/GC_NMQ_NTSC_J_CE/textures/item_name_static.xml b/soh/assets/xml/GC_NMQ_NTSC_J_CE/textures/item_name_static.xml index 266b3c200..1bc074c2f 100644 --- a/soh/assets/xml/GC_NMQ_NTSC_J_CE/textures/item_name_static.xml +++ b/soh/assets/xml/GC_NMQ_NTSC_J_CE/textures/item_name_static.xml @@ -239,7 +239,7 @@ - + diff --git a/soh/assets/xml/GC_NMQ_NTSC_U/textures/item_name_static.xml b/soh/assets/xml/GC_NMQ_NTSC_U/textures/item_name_static.xml index 266b3c200..1bc074c2f 100644 --- a/soh/assets/xml/GC_NMQ_NTSC_U/textures/item_name_static.xml +++ b/soh/assets/xml/GC_NMQ_NTSC_U/textures/item_name_static.xml @@ -239,7 +239,7 @@ - + diff --git a/soh/assets/xml/N64_NTSC_10/textures/item_name_static.xml b/soh/assets/xml/N64_NTSC_10/textures/item_name_static.xml index 266b3c200..1bc074c2f 100644 --- a/soh/assets/xml/N64_NTSC_10/textures/item_name_static.xml +++ b/soh/assets/xml/N64_NTSC_10/textures/item_name_static.xml @@ -239,7 +239,7 @@ - + diff --git a/soh/assets/xml/N64_NTSC_11/textures/item_name_static.xml b/soh/assets/xml/N64_NTSC_11/textures/item_name_static.xml index 266b3c200..1bc074c2f 100644 --- a/soh/assets/xml/N64_NTSC_11/textures/item_name_static.xml +++ b/soh/assets/xml/N64_NTSC_11/textures/item_name_static.xml @@ -239,7 +239,7 @@ - + diff --git a/soh/assets/xml/N64_NTSC_12/textures/item_name_static.xml b/soh/assets/xml/N64_NTSC_12/textures/item_name_static.xml index 266b3c200..1bc074c2f 100644 --- a/soh/assets/xml/N64_NTSC_12/textures/item_name_static.xml +++ b/soh/assets/xml/N64_NTSC_12/textures/item_name_static.xml @@ -239,7 +239,7 @@ - + diff --git a/soh/soh/Enhancements/Presets/PresetEntries.cpp b/soh/soh/Enhancements/Presets/PresetEntries.cpp index ebf6d4a19..c9ca5c24f 100644 --- a/soh/soh/Enhancements/Presets/PresetEntries.cpp +++ b/soh/soh/Enhancements/Presets/PresetEntries.cpp @@ -46,7 +46,7 @@ const std::vector vanillaPlusPresetEntries = { PRESET_ENTRY_S32(CVAR_ENHANCEMENT("FixZoraHintDialogue"), 1), PRESET_ENTRY_S32(CVAR_ENHANCEMENT("FixVineFall"), 1), PRESET_ENTRY_S32(CVAR_ENHANCEMENT("EnemySpawnsOverWaterboxes"), 1), PRESET_ENTRY_S32(CVAR_ENHANCEMENT("FixSawSoftlock"), 1), PRESET_ENTRY_S32(CVAR_ENHANCEMENT("DekuNutUpgradeFix"), 1), - PRESET_ENTRY_S32(CVAR_ENHANCEMENT("FixGrokenGiantsKnife"), 1), PRESET_ENTRY_S32(CVAR_ENHANCEMENT("FixMenuLR"), 1), + PRESET_ENTRY_S32(CVAR_ENHANCEMENT("FixBrokenGiantsKnife"), 1), PRESET_ENTRY_S32(CVAR_ENHANCEMENT("FixMenuLR"), 1), PRESET_ENTRY_S32(CVAR_ENHANCEMENT("FixDungeonMinimapIcon"), 1), PRESET_ENTRY_S32(CVAR_ENHANCEMENT("TwoHandedIdle"), 1), PRESET_ENTRY_S32(CVAR_ENHANCEMENT("NaviTextFix"), 1), PRESET_ENTRY_S32(CVAR_ENHANCEMENT("GerudoWarriorClothingFix"), 1), @@ -125,7 +125,7 @@ const std::vector enhancedPresetEntries = { PRESET_ENTRY_S32(CVAR_ENHANCEMENT("FixZoraHintDialogue"), 1), PRESET_ENTRY_S32(CVAR_ENHANCEMENT("FixVineFall"), 1), PRESET_ENTRY_S32(CVAR_ENHANCEMENT("EnemySpawnsOverWaterboxes"), 1), PRESET_ENTRY_S32(CVAR_ENHANCEMENT("FixSawSoftlock"), 1), PRESET_ENTRY_S32(CVAR_ENHANCEMENT("DekuNutUpgradeFix"), 1), - PRESET_ENTRY_S32(CVAR_ENHANCEMENT("FixGrokenGiantsKnife"), 1), PRESET_ENTRY_S32(CVAR_ENHANCEMENT("FixMenuLR"), 1), + PRESET_ENTRY_S32(CVAR_ENHANCEMENT("FixBrokenGiantsKnife"), 1), PRESET_ENTRY_S32(CVAR_ENHANCEMENT("FixMenuLR"), 1), PRESET_ENTRY_S32(CVAR_ENHANCEMENT("FixDungeonMinimapIcon"), 1), PRESET_ENTRY_S32(CVAR_ENHANCEMENT("TwoHandedIdle"), 1), PRESET_ENTRY_S32(CVAR_ENHANCEMENT("NaviTextFix"), 1), PRESET_ENTRY_S32(CVAR_ENHANCEMENT("GerudoWarriorClothingFix"), 1), @@ -251,7 +251,7 @@ const std::vector randomizerPresetEntries = { PRESET_ENTRY_S32(CVAR_ENHANCEMENT("EnemySpawnsOverWaterboxes"), 1), PRESET_ENTRY_S32(CVAR_ENHANCEMENT("FixSawSoftlock"), 1), PRESET_ENTRY_S32(CVAR_ENHANCEMENT("DekuNutUpgradeFix"), 1), - PRESET_ENTRY_S32(CVAR_ENHANCEMENT("FixGrokenGiantsKnife"), 1), + PRESET_ENTRY_S32(CVAR_ENHANCEMENT("FixBrokenGiantsKnife"), 1), PRESET_ENTRY_S32(CVAR_ENHANCEMENT("FixMenuLR"), 1), PRESET_ENTRY_S32(CVAR_ENHANCEMENT("FixDungeonMinimapIcon"), 1), PRESET_ENTRY_S32(CVAR_ENHANCEMENT("TwoHandedIdle"), 1), diff --git a/soh/soh/Enhancements/audio/AudioCollection.cpp b/soh/soh/Enhancements/audio/AudioCollection.cpp index 69b3723b4..d3f69dad8 100644 --- a/soh/soh/Enhancements/audio/AudioCollection.cpp +++ b/soh/soh/Enhancements/audio/AudioCollection.cpp @@ -119,7 +119,7 @@ AudioCollection::AudioCollection() { SEQUENCE_MAP_ENTRY(NA_BGM_STAFF_2, "End Credits II", "NA_BGM_STAFF_2", SEQ_BGM_EVENT, false, false), // Previously SEQ_UNUSED, so not shown anywhere? SEQUENCE_MAP_ENTRY(NA_BGM_STAFF_3, "End Credits III", "NA_BGM_STAFF_3", SEQ_BGM_EVENT, false, false), // Previously SEQ_UNUSED, so not shown anywhere? SEQUENCE_MAP_ENTRY(NA_BGM_STAFF_4, "End Credits IV", "NA_BGM_STAFF_4", SEQ_BGM_EVENT, false, false), // Previously SEQ_UNUSED, so not shown anywhere? - + // SEQ_INSTRUMENT SEQUENCE_MAP_ENTRY(INSTRUMENT_OFFSET + 1, "Ocarina", "OCARINA_INSTRUMENT_DEFAULT", SEQ_INSTRUMENT, true, true), SEQUENCE_MAP_ENTRY(INSTRUMENT_OFFSET + 2, "Malon", "OCARINA_INSTRUMENT_MALON", SEQ_INSTRUMENT, true, true), @@ -304,7 +304,7 @@ AudioCollection::AudioCollection() { //SEQUENCE_MAP_ENTRY("Adult Link - Unused Sound 1?","NA_SE_VO_LI_ELECTRIC_SHOCK_LV", "NA_SE_VO_LI_ELECTRIC_SHOCK_LV", SEQ_VOICE, true, false), //SEQUENCE_MAP_ENTRY(NA_SE_VO_LI_GROAN_KID, "Child Link - Groan (Unused)", "NA_SE_VO_LI_GROAN_KID", SEQ_VOICE, true, false), //SEQUENCE_MAP_ENTRY(NA_SE_VO_LI_ELECTRIC_SHOCK_LV_KID, "Child Link - Unused Sound 1?", "NA_SE_VO_LI_ELECTRIC_SHOCK_LV_KID", SEQ_VOICE, true, false), - + // Following group of Dummies are all duplicate entries for Navi saying Look/Hey/Watchout //SEQUENCE_MAP_ENTRY(NA_SE_VO_DUMMY_0x45, "NA_SE_VO_DUMMY_0x45", "NA_SE_VO_DUMMY_0x45", SEQ_VOICE, true, false), //SEQUENCE_MAP_ENTRY(NA_SE_VO_DUMMY_0x46, "NA_SE_VO_DUMMY_0x46", "NA_SE_VO_DUMMY_0x46", SEQ_VOICE, true, false), diff --git a/soh/soh/Enhancements/controls/InputViewer.cpp b/soh/soh/Enhancements/controls/InputViewer.cpp index 3ae3bc1ba..1d6695d25 100644 --- a/soh/soh/Enhancements/controls/InputViewer.cpp +++ b/soh/soh/Enhancements/controls/InputViewer.cpp @@ -151,7 +151,7 @@ void InputViewer::DrawElement() { } ImVec2 mainPos = ImGui::GetWindowPos(); - ImVec2 size = ImGui::GetContentRegionAvail(); + ImVec2 size = ImGui::GetMainViewport()->WorkSize; #ifdef __WIIU__ const float scale = CVarGetFloat(CVAR_INPUT_VIEWER("Scale"), 1.0f) * 2.0f; diff --git a/soh/soh/Enhancements/cosmetics/CosmeticsEditor.cpp b/soh/soh/Enhancements/cosmetics/CosmeticsEditor.cpp index e0f530bc2..8074fa707 100644 --- a/soh/soh/Enhancements/cosmetics/CosmeticsEditor.cpp +++ b/soh/soh/Enhancements/cosmetics/CosmeticsEditor.cpp @@ -2376,10 +2376,12 @@ void CosmeticsEditorWindow::DrawElement() { .Step(0.01f) .Size(ImVec2(300.0f, 0.0f)) .Color(THEME_COLOR)); + ImGui::BeginDisabled(CVarGetInteger(CVAR_SETTING("DisableChanges"), 0)); UIWidgets::CVarCheckbox("Randomize All on New Scene", CVAR_COSMETIC("RandomizeAllOnNewScene"), UIWidgets::CheckboxOptions() .Color(THEME_COLOR) .Tooltip("Enables randomizing all unlocked cosmetics when you enter a new scene.")); + ImGui::EndDisabled(); UIWidgets::CVarCheckbox( "Advanced Mode", CVAR_COSMETIC("AdvancedMode"), UIWidgets::CheckboxOptions() @@ -2408,13 +2410,15 @@ void CosmeticsEditorWindow::DrawElement() { } } } + ImGui::BeginDisabled(CVarGetInteger(CVAR_SETTING("DisableChanges"), 0)); if (UIWidgets::Button("Randomize All", UIWidgets::ButtonOptions().Size(ImVec2(250.0f, 0.0f)).Color(THEME_COLOR))) { CosmeticsEditor_RandomizeAll(); } + ImGui::EndDisabled(); + ImGui::SameLine(); if (UIWidgets::Button("Reset All", UIWidgets::ButtonOptions().Size(ImVec2(250.0f, 0.0f)).Color(THEME_COLOR))) { - CVarClearBlock("gCosmetics"); - ApplyOrResetCustomGfxPatches(); + CosmeticsEditor_ResetAll(); } if (UIWidgets::Button("Lock All", UIWidgets::ButtonOptions().Size(ImVec2(250.0f, 0.0f)).Color(THEME_COLOR))) { for (auto& [id, cosmeticOption] : cosmeticOptions) { @@ -2432,6 +2436,7 @@ void CosmeticsEditorWindow::DrawElement() { } } + ImGui::BeginDisabled(CVarGetInteger(CVAR_SETTING("DisableChanges"), 0)); if (UIWidgets::Button("Rainbow All", UIWidgets::ButtonOptions().Size(ImVec2(250.0f, 0.0f)).Color(THEME_COLOR))) { for (auto& [id, cosmeticOption] : cosmeticOptions) { if (!CVarGetInteger(cosmeticOption.lockedCvar, 0) && @@ -2441,6 +2446,8 @@ void CosmeticsEditorWindow::DrawElement() { } } } + ImGui::EndDisabled(); + ImGui::SameLine(); if (UIWidgets::Button("Un-Rainbow All", UIWidgets::ButtonOptions().Size(ImVec2(250.0f, 0.0f)).Color(THEME_COLOR))) { for (auto& [id, cosmeticOption] : cosmeticOptions) { @@ -2470,6 +2477,7 @@ void CosmeticsEditorWindow::DrawElement() { if (ImGui::BeginTabItem("Keys")) { + ImGui::BeginDisabled(CVarGetInteger(CVAR_SETTING("DisableChanges"), 0)); UIWidgets::Separator(true, true, 2.0f, 2.0f); if (UIWidgets::Button("Give all keys dungeon-specific colors", @@ -2483,6 +2491,7 @@ void CosmeticsEditorWindow::DrawElement() { DrawCosmeticGroup(COSMETICS_GROUP_SMALL_KEYS); DrawCosmeticGroup(COSMETICS_GROUP_BOSS_KEYS); + ImGui::EndDisabled(); ImGui::EndTabItem(); } diff --git a/soh/soh/Enhancements/custom-message/CustomMessageManager.cpp b/soh/soh/Enhancements/custom-message/CustomMessageManager.cpp index 278b8db0c..1a6f9ce62 100644 --- a/soh/soh/Enhancements/custom-message/CustomMessageManager.cpp +++ b/soh/soh/Enhancements/custom-message/CustomMessageManager.cpp @@ -469,6 +469,27 @@ size_t CustomMessage::FindNEWLINE(std::string& str, size_t lastNewline) const { return newLine; } +bool CustomMessage::AddBreakString(std::string& str, size_t pos, std::string breakString) const { + if (str[pos] == ' ' || str[pos] == '&') { + str.replace(pos, 1, breakString); + return false; + } else { + if (pos <= str.size() - 1) { + // If the next char is a new textbox, it has priority, ignore whatever we are replacing it with + if (str[pos + 1] == '^') { + return false; + // otherwise, if it is a line break or space, replace it + } else if (str[pos + 1] == ' ' || str[pos + 1] == '&') { + str.replace(pos + 1, 1, breakString); + return false; + } + } + // otherwise insert after it + str.insert(pos + 1, breakString); + return true; + } +} + void CustomMessage::AutoFormatString(std::string& str) const { ReplaceAltarIcons(str); ReplaceColors(str); @@ -481,7 +502,6 @@ void CustomMessage::AutoFormatString(std::string& str) const { while (lastNewline + lineLength < str.length() || yesNo != std::string::npos) { const size_t carrot = str.find('^', lastNewline); const size_t ampersand = str.find('&', lastNewline); - const size_t lastSpace = str.rfind(' ', lastNewline + lineLength); size_t waitForInput = str.find(WAIT_FOR_INPUT()[0], lastNewline); size_t newLine = FindNEWLINE(str, lastNewline); if (carrot < waitForInput) { @@ -513,13 +533,25 @@ void CustomMessage::AutoFormatString(std::string& str) const { lastNewline = waitForInput + 1; lineCount = 0; // some lines need to be split but don't have spaces, look for periods instead - } else if (lastSpace == std::string::npos) { - const size_t lastPeriod = str.rfind('.', lastNewline + lineLength); - str.replace(lastPeriod, 1, ".&"); - lastNewline = lastPeriod + 2; } else { - str.replace(lastSpace, 1, "&"); - lastNewline = lastSpace + 1; + const size_t lastBreak = + str.find_last_of(static_cast(".,!?- "), lastNewline + lineLength); + // if none exist or we go backwards, we look forward for a something and allow the overflow + if (lastBreak == std::string::npos || lastBreak < lastNewline) { + const size_t nextBreak = str.find_first_of(static_cast(".,!?- &^"), lastNewline); + if (str[nextBreak] == '^') { + lastNewline = nextBreak + 1; + lineCount = 0; // increments to 1 at the end + } else if (str[nextBreak] == '&') { + lastNewline = nextBreak + 1; + } else { + bool isAdded = AddBreakString(str, nextBreak, "&"); + lastNewline = nextBreak + 1 + isAdded; + } + } else { + bool isAdded = AddBreakString(str, lastBreak, "&"); + lastNewline = lastBreak + 1 + isAdded; + } } lineCount += 1; } else { @@ -536,14 +568,23 @@ void CustomMessage::AutoFormatString(std::string& str) const { // or move the lastNewline cursor to the next line if a '^' is encountered. } else if (carrot < lastNewline + lineLength) { lastNewline = carrot + 1; - // some lines need to be split but don't have spaces, look for periods instead - } else if (lastSpace == std::string::npos) { - const size_t lastPeriod = str.rfind('.', lastNewline + lineLength); - str.replace(lastPeriod, 1, ".^" + colorText); - lastNewline = lastPeriod + 2; + // some lines need to be split but don't have spaces, look for punctuation instead } else { - str.replace(lastSpace, 1, "^" + colorText); - lastNewline = lastSpace + 1; + const size_t lastBreak = + str.find_last_of(static_cast(".,!?- &"), lastNewline + lineLength); + // if none exist or we go backwards, we look forward for a something and allow the overflow + if (lastBreak == std::string::npos || lastBreak < lastNewline) { + const size_t nextBreak = str.find_first_of(static_cast(".,!?- &^"), lastNewline); + if (str[nextBreak] == '^') { + lastNewline = nextBreak + 1; + } else { + bool isAdded = AddBreakString(str, nextBreak, "^" + colorText); + lastNewline = nextBreak + 1 + isAdded; + } + } else { + bool isAdded = AddBreakString(str, lastBreak, "^" + colorText); + lastNewline = lastBreak + 1 + isAdded; + } } lineCount = 1; } diff --git a/soh/soh/Enhancements/custom-message/CustomMessageManager.h b/soh/soh/Enhancements/custom-message/CustomMessageManager.h index f312d9f85..3fbd7dfb5 100644 --- a/soh/soh/Enhancements/custom-message/CustomMessageManager.h +++ b/soh/soh/Enhancements/custom-message/CustomMessageManager.h @@ -190,6 +190,17 @@ class CustomMessage { */ size_t FindNEWLINE(std::string& str, size_t lastNewline) const; + /** + * @brief Inserts a string into another string, following the rules + * of auto-format inserting new lines: spaces and & are replaced while + * other chars are appended to. + * + * @param str the string we are inserting into + * @param pos the position in the string to insert + * @param breakString the string we are inserting + */ + bool AddBreakString(std::string& str, size_t pos, std::string breakString) const; + /** * @brief formats the string specifically to fit in OoT's * textboxes, and use it's formatting. diff --git a/soh/soh/Enhancements/debugger/MessageViewer.cpp b/soh/soh/Enhancements/debugger/MessageViewer.cpp index 83aac4d6c..c018b0017 100644 --- a/soh/soh/Enhancements/debugger/MessageViewer.cpp +++ b/soh/soh/Enhancements/debugger/MessageViewer.cpp @@ -27,6 +27,7 @@ void MessageViewer::InitElement() { } void MessageViewer::DrawElement() { + ImGui::BeginDisabled(CVarGetInteger(CVAR_SETTING("DisableChanges"), 0)); ImGui::Text("Table ID"); ImGui::SameLine(); PushStyleInput(THEME_COLOR); @@ -78,6 +79,7 @@ void MessageViewer::DrawElement() { mDisplayCustomMessageClicked = true; } PopStyleButton(); + ImGui::EndDisabled(); } void MessageViewer::UpdateElement() { diff --git a/soh/soh/Enhancements/debugger/SohConsoleWindow.cpp b/soh/soh/Enhancements/debugger/SohConsoleWindow.cpp index d5090e7e5..19be376ed 100644 --- a/soh/soh/Enhancements/debugger/SohConsoleWindow.cpp +++ b/soh/soh/Enhancements/debugger/SohConsoleWindow.cpp @@ -12,6 +12,7 @@ void SohConsoleWindow::UpdateElement() { } void SohConsoleWindow::DrawElement() { + ImGui::BeginDisabled(CVarGetInteger(CVAR_SETTING("DisableChanges"), 0)); UIWidgets::PushStyleInput(THEME_COLOR); // Small font (13) to match hardcoded width values in the LUS window.. set large font after below TODO addressed ImGui::PushFont(OTRGlobals::Instance->fontMonoSmall); @@ -27,4 +28,5 @@ void SohConsoleWindow::DrawElement() { ImGui::PopFont(); UIWidgets::PopStyleInput(); + ImGui::EndDisabled(); } diff --git a/soh/soh/Enhancements/debugger/SohGfxDebuggerWindow.cpp b/soh/soh/Enhancements/debugger/SohGfxDebuggerWindow.cpp index 06d81577d..def23cacc 100644 --- a/soh/soh/Enhancements/debugger/SohGfxDebuggerWindow.cpp +++ b/soh/soh/Enhancements/debugger/SohGfxDebuggerWindow.cpp @@ -10,7 +10,9 @@ void SohGfxDebuggerWindow::UpdateElement() { } void SohGfxDebuggerWindow::DrawElement() { + ImGui::BeginDisabled(CVarGetInteger(CVAR_SETTING("DisableChanges"), 0)); ImGui::PushFont(OTRGlobals::Instance->fontMonoLarger); GfxDebuggerWindow::DrawElement(); ImGui::PopFont(); + ImGui::EndDisabled(); } diff --git a/soh/soh/Enhancements/debugger/actorViewer.cpp b/soh/soh/Enhancements/debugger/actorViewer.cpp index 8ae940ffb..515da6491 100644 --- a/soh/soh/Enhancements/debugger/actorViewer.cpp +++ b/soh/soh/Enhancements/debugger/actorViewer.cpp @@ -849,6 +849,7 @@ void ActorViewer_AddTagForAllActors() { } void ActorViewerWindow::DrawElement() { + ImGui::BeginDisabled(CVarGetInteger(CVAR_SETTING("DisableChanges"), 0)); static Actor* display; static Actor empty{}; static Actor* fetch = NULL; @@ -1186,6 +1187,7 @@ void ActorViewerWindow::DrawElement() { actors.clear(); } } + ImGui::EndDisabled(); } void ActorViewerWindow::InitElement() { diff --git a/soh/soh/Enhancements/debugger/colViewer.cpp b/soh/soh/Enhancements/debugger/colViewer.cpp index e3abba484..352d4b962 100644 --- a/soh/soh/Enhancements/debugger/colViewer.cpp +++ b/soh/soh/Enhancements/debugger/colViewer.cpp @@ -58,6 +58,7 @@ using namespace UIWidgets; // Draws the ImGui window for the collision viewer void ColViewerWindow::DrawElement() { + ImGui::BeginDisabled(CVarGetInteger(CVAR_SETTING("DisableChanges"), 0)); CheckboxOptions checkOpt = CheckboxOptions().Color(THEME_COLOR); ComboboxOptions comboOpt = ComboboxOptions().Color(THEME_COLOR); CVarCheckbox("Enabled", CVAR_DEVELOPER_TOOLS("ColViewer.Enabled"), checkOpt); @@ -139,6 +140,7 @@ void ColViewerWindow::DrawElement() { UIWidgets::Tooltip(colorHelpText.c_str()); } PopStyleHeader(); + ImGui::EndDisabled(); } // Calculates the normal for a triangle at the 3 specified points diff --git a/soh/soh/Enhancements/debugger/debugSaveEditor.cpp b/soh/soh/Enhancements/debugger/debugSaveEditor.cpp index a97a41d16..499e8d1ad 100644 --- a/soh/soh/Enhancements/debugger/debugSaveEditor.cpp +++ b/soh/soh/Enhancements/debugger/debugSaveEditor.cpp @@ -1665,6 +1665,7 @@ void ResetBaseOptions() { void SaveEditorWindow::DrawElement() { PushStyleTabs(THEME_COLOR); ImGui::PushFont(OTRGlobals::Instance->fontMonoLarger); + ImGui::BeginDisabled(CVarGetInteger(CVAR_SETTING("DisableChanges"), 0)); if (ImGui::BeginTabBar("SaveContextTabBar", ImGuiTabBarFlags_NoCloseWithMiddleMouseButton)) { ResetBaseOptions(); @@ -1706,6 +1707,7 @@ void SaveEditorWindow::DrawElement() { ImGui::EndTabBar(); } + ImGui::EndDisabled(); ImGui::PopFont(); PopStyleTabs(); } diff --git a/soh/soh/Enhancements/debugger/dlViewer.cpp b/soh/soh/Enhancements/debugger/dlViewer.cpp index 7cedcdf26..a02aa7d95 100644 --- a/soh/soh/Enhancements/debugger/dlViewer.cpp +++ b/soh/soh/Enhancements/debugger/dlViewer.cpp @@ -89,6 +89,7 @@ void PerformDisplayListSearch() { } void DLViewerWindow::DrawElement() { + ImGui::BeginDisabled(CVarGetInteger(CVAR_SETTING("DisableChanges"), 0)); // Debounce the search field as listing otr files is expensive UIWidgets::PushStyleInput(THEME_COLOR); ImGui::PushFont(OTRGlobals::Instance->fontMonoLarger); @@ -122,6 +123,7 @@ void DLViewerWindow::DrawElement() { if (activeDisplayList == "") { ImGui::PopFont(); + ImGui::EndDisabled(); return; } @@ -131,6 +133,8 @@ void DLViewerWindow::DrawElement() { if (res->GetInitData()->Type != static_cast(Fast::ResourceType::DisplayList)) { ImGui::Text("Resource type is not a Display List. Please choose another."); + ImGui::PopFont(); + ImGui::EndDisabled(); return; } @@ -325,13 +329,10 @@ void DLViewerWindow::DrawElement() { } ImGui::EndGroup(); } - } catch (const std::exception& e) { - ImGui::Text("Error displaying DL instructions."); - ImGui::PopFont(); - return; - } + } catch (const std::exception& e) { ImGui::Text("Error displaying DL instructions."); } ImGui::PopFont(); + ImGui::EndDisabled(); } void DLViewerWindow::InitElement() { diff --git a/soh/soh/Enhancements/debugger/hookDebugger.cpp b/soh/soh/Enhancements/debugger/hookDebugger.cpp index 113862282..146db2ddc 100644 --- a/soh/soh/Enhancements/debugger/hookDebugger.cpp +++ b/soh/soh/Enhancements/debugger/hookDebugger.cpp @@ -77,6 +77,7 @@ void DrawHookRegisteringInfos(const char* hookName) { } void HookDebuggerWindow::DrawElement() { + ImGui::BeginDisabled(CVarGetInteger(CVAR_SETTING("DisableChanges"), 0)); #ifndef __cpp_lib_source_location ImGui::TextColored(yellow, "Some features of the Hook Debugger are unavailable because SoH was compiled " "without \"\" support " @@ -93,6 +94,7 @@ void HookDebuggerWindow::DrawElement() { } ImGui::PopFont(); + ImGui::EndDisabled(); } void HookDebuggerWindow::InitElement() { diff --git a/soh/soh/Enhancements/debugger/valueViewer.cpp b/soh/soh/Enhancements/debugger/valueViewer.cpp index 1ea117444..4544979cb 100644 --- a/soh/soh/Enhancements/debugger/valueViewer.cpp +++ b/soh/soh/Enhancements/debugger/valueViewer.cpp @@ -154,6 +154,7 @@ void RegisterValueViewerHooks() { RegisterShipInitFunc initFunc(RegisterValueViewerHooks, { CVAR_NAME }); void ValueViewerWindow::DrawElement() { + ImGui::BeginDisabled(CVarGetInteger(CVAR_SETTING("DisableChanges"), 0)); UIWidgets::CVarCheckbox("Enable Printing", CVAR_NAME, UIWidgets::CheckboxOptions().Color(THEME_COLOR)); ImGui::BeginGroup(); @@ -275,6 +276,7 @@ void ValueViewerWindow::DrawElement() { } ImGui::EndGroup(); } + ImGui::EndDisabled(); } void ValueViewerWindow::InitElement() { diff --git a/soh/soh/Enhancements/game-interactor/GameInteractor_HookTable.h b/soh/soh/Enhancements/game-interactor/GameInteractor_HookTable.h index 44d0e643a..ecd970b31 100644 --- a/soh/soh/Enhancements/game-interactor/GameInteractor_HookTable.h +++ b/soh/soh/Enhancements/game-interactor/GameInteractor_HookTable.h @@ -15,6 +15,7 @@ DEFINE_HOOK(OnItemReceive, (GetItemEntry itemEntry)); DEFINE_HOOK(OnSaleEnd, (GetItemEntry itemEntry)); DEFINE_HOOK(OnTransitionEnd, (int16_t sceneNum)); DEFINE_HOOK(OnSceneInit, (int16_t sceneNum)); +DEFINE_HOOK(AfterSceneCommands, (int16_t sceneNum)); DEFINE_HOOK(OnSceneFlagSet, (int16_t sceneNum, int16_t flagType, int16_t flag)); DEFINE_HOOK(OnSceneFlagUnset, (int16_t sceneNum, int16_t flagType, int16_t flag)); DEFINE_HOOK(OnFlagSet, (int16_t flagType, int16_t flag)); diff --git a/soh/soh/Enhancements/game-interactor/GameInteractor_Hooks.cpp b/soh/soh/Enhancements/game-interactor/GameInteractor_Hooks.cpp index 9231da843..5e52bed71 100644 --- a/soh/soh/Enhancements/game-interactor/GameInteractor_Hooks.cpp +++ b/soh/soh/Enhancements/game-interactor/GameInteractor_Hooks.cpp @@ -45,12 +45,18 @@ void GameInteractor_ExecuteOnTransitionEndHooks(int16_t sceneNum) { GameInteractor::Instance->ExecuteHooksForFilter(sceneNum); } -void GameInteractor_ExecuteOnSceneInitHooks(int16_t sceneNum) { +void GameInteractor_ExecuteOnSceneInit(int16_t sceneNum) { GameInteractor::Instance->ExecuteHooks(sceneNum); GameInteractor::Instance->ExecuteHooksForID(sceneNum, sceneNum); GameInteractor::Instance->ExecuteHooksForFilter(sceneNum); } +void GameInteractor_ExecuteAfterSceneCommands(int16_t sceneNum) { + GameInteractor::Instance->ExecuteHooks(sceneNum); + GameInteractor::Instance->ExecuteHooksForID(sceneNum, sceneNum); + GameInteractor::Instance->ExecuteHooksForFilter(sceneNum); +} + void GameInteractor_ExecuteOnSceneFlagSet(int16_t sceneNum, int16_t flagType, int16_t flag) { GameInteractor::Instance->ExecuteHooks(sceneNum, flagType, flag); GameInteractor::Instance->ExecuteHooksForFilter(sceneNum, flagType, flag); diff --git a/soh/soh/Enhancements/game-interactor/GameInteractor_Hooks.h b/soh/soh/Enhancements/game-interactor/GameInteractor_Hooks.h index 33c8d2681..b1f9195b4 100644 --- a/soh/soh/Enhancements/game-interactor/GameInteractor_Hooks.h +++ b/soh/soh/Enhancements/game-interactor/GameInteractor_Hooks.h @@ -18,6 +18,7 @@ void GameInteractor_ExecuteOnItemReceiveHooks(GetItemEntry itemEntry); void GameInteractor_ExecuteOnSaleEndHooks(GetItemEntry itemEntry); void GameInteractor_ExecuteOnTransitionEndHooks(int16_t sceneNum); void GameInteractor_ExecuteOnSceneInit(int16_t sceneNum); +void GameInteractor_ExecuteAfterSceneCommands(int16_t sceneNum); void GameInteractor_ExecuteOnSceneFlagSet(int16_t sceneNum, int16_t flagType, int16_t flag); void GameInteractor_ExecuteOnSceneFlagUnset(int16_t sceneNum, int16_t flagType, int16_t flag); void GameInteractor_ExecuteOnFlagSet(int16_t flagType, int16_t flag); diff --git a/soh/soh/Enhancements/game-interactor/vanilla-behavior/GIVanillaBehavior.h b/soh/soh/Enhancements/game-interactor/vanilla-behavior/GIVanillaBehavior.h index 6c18a6edb..d57d5029a 100644 --- a/soh/soh/Enhancements/game-interactor/vanilla-behavior/GIVanillaBehavior.h +++ b/soh/soh/Enhancements/game-interactor/vanilla-behavior/GIVanillaBehavior.h @@ -951,7 +951,7 @@ typedef enum { // false // ``` // #### `args` - // - '*Fishing' (&this) + // - '*Fishing' VB_GIVE_RANDO_GLITCH_FISHING_PRIZE, // #### `result` diff --git a/soh/soh/Enhancements/randomizer/3drando/custom_messages.hpp b/soh/soh/Enhancements/randomizer/3drando/custom_messages.hpp index 4daacf51a..71a0e66b0 100644 --- a/soh/soh/Enhancements/randomizer/3drando/custom_messages.hpp +++ b/soh/soh/Enhancements/randomizer/3drando/custom_messages.hpp @@ -6,28 +6,28 @@ #include "text.hpp" namespace CustomMessages { - std::string MESSAGE_END(); - std::string WAIT_FOR_INPUT(); - std::string HORIZONTAL_SPACE(uint8_t x); - std::string GO_TO(uint16_t x); - std::string INSTANT_TEXT_ON(); - std::string INSTANT_TEXT_OFF(); - std::string SHOP_MESSAGE_BOX(); - std::string EVENT_TRIGGER(); - std::string DELAY_FRAMES(uint8_t x); - std::string CLOSE_AFTER(uint8_t x); - std::string PLAYER_NAME(); - std::string PLAY_OCARINA(); - std::string ITEM_OBTAINED(uint8_t x); - std::string SET_SPEED(uint8_t x); - std::string SKULLTULAS_DESTROYED(); - std::string CURRENT_TIME(); - std::string UNSKIPPABLE(); - std::string TWO_WAY_CHOICE(); - std::string NEWLINE(); - std::string COLOR(std::string x); - std::string CENTER_TEXT(); - std::string IF_NOT_MQ(); - std::string MQ_ELSE(); - std::string MQ_END(); -} +std::string MESSAGE_END(); +std::string WAIT_FOR_INPUT(); +std::string HORIZONTAL_SPACE(uint8_t x); +std::string GO_TO(uint16_t x); +std::string INSTANT_TEXT_ON(); +std::string INSTANT_TEXT_OFF(); +std::string SHOP_MESSAGE_BOX(); +std::string EVENT_TRIGGER(); +std::string DELAY_FRAMES(uint8_t x); +std::string CLOSE_AFTER(uint8_t x); +std::string PLAYER_NAME(); +std::string PLAY_OCARINA(); +std::string ITEM_OBTAINED(uint8_t x); +std::string SET_SPEED(uint8_t x); +std::string SKULLTULAS_DESTROYED(); +std::string CURRENT_TIME(); +std::string UNSKIPPABLE(); +std::string TWO_WAY_CHOICE(); +std::string NEWLINE(); +std::string COLOR(std::string x); +std::string CENTER_TEXT(); +std::string IF_NOT_MQ(); +std::string MQ_ELSE(); +std::string MQ_END(); +} // namespace CustomMessages diff --git a/soh/soh/Enhancements/randomizer/3drando/fill.hpp b/soh/soh/Enhancements/randomizer/3drando/fill.hpp index bb013cc13..f2028e05d 100644 --- a/soh/soh/Enhancements/randomizer/3drando/fill.hpp +++ b/soh/soh/Enhancements/randomizer/3drando/fill.hpp @@ -7,52 +7,52 @@ #include #include -//RANDOTODO merge into Logic once Logic is a class passed to logic funtions +// RANDOTODO merge into Logic once Logic is a class passed to logic funtions struct GetAccessibleLocationsStruct { - std::vector accessibleLocations; - std::vector regionPool; - //Variables for playthrough - int gsCount; - int maxGsCount; - std::vector buyIgnores; + std::vector accessibleLocations; + std::vector regionPool; + // Variables for playthrough + int gsCount; + int maxGsCount; + std::vector buyIgnores; - //Variables for search - std::vector newItemLocations; - bool logicUpdated; - bool resetSphere; + // Variables for search + std::vector newItemLocations; + bool logicUpdated; + bool resetSphere; - //Variables For Validating Entrences - bool haveTimeAccess; - bool foundTempleOfTime; - bool validatedStartingRegion; - bool sphereZeroComplete; - bool timePassChildDay; - bool timePassChildNight; - bool timePassAdultDay; - bool timePassAdultNight; + // Variables For Validating Entrences + bool haveTimeAccess; + bool foundTempleOfTime; + bool validatedStartingRegion; + bool sphereZeroComplete; + bool timePassChildDay; + bool timePassChildNight; + bool timePassAdultDay; + bool timePassAdultNight; - std::vector itemSphere; - std::list entranceSphere; + std::vector itemSphere; + std::list entranceSphere; - bool calculatingAvailableChecks = false; + bool calculatingAvailableChecks = false; - GetAccessibleLocationsStruct(int _maxGsCount){ - regionPool = {RR_ROOT}; - gsCount = 0; - maxGsCount = _maxGsCount; - logicUpdated = false; - resetSphere = false; - } - - void InitLoop(){ - logicUpdated = false; - for (Rando::ItemLocation* location : newItemLocations) { - location->ApplyPlacedItemEffect(); + GetAccessibleLocationsStruct(int _maxGsCount) { + regionPool = { RR_ROOT }; + gsCount = 0; + maxGsCount = _maxGsCount; + logicUpdated = false; + resetSphere = false; + } + + void InitLoop() { + logicUpdated = false; + for (Rando::ItemLocation* location : newItemLocations) { + location->ApplyPlacedItemEffect(); + } + newItemLocations.clear(); + itemSphere.clear(); + entranceSphere.clear(); } - newItemLocations.clear(); - itemSphere.clear(); - entranceSphere.clear(); - } }; void ClearProgress(); @@ -61,13 +61,15 @@ int Fill(); std::vector GetEmptyLocations(std::vector allowedLocations); -void ProcessRegion(Region* region, GetAccessibleLocationsStruct& gals, RandomizerGet ignore = RG_NONE, +void ProcessRegion(Region* region, GetAccessibleLocationsStruct& gals, RandomizerGet ignore = RG_NONE, bool stopOnBeatable = false, bool addToPlaythrough = false); -std::vector ReachabilitySearch(const std::vector& allowedLocations, RandomizerGet ignore=RG_NONE, bool calculatingAvailableChecks=false); +std::vector ReachabilitySearch(const std::vector& allowedLocations, + RandomizerGet ignore = RG_NONE, + bool calculatingAvailableChecks = false); void GeneratePlaythrough(); -bool CheckBeatable(RandomizerGet ignore=RG_NONE); +bool CheckBeatable(RandomizerGet ignore = RG_NONE); void ValidateEntrances(bool checkPoeCollectorAccess, bool checkOtherEntranceAccess); \ No newline at end of file diff --git a/soh/soh/Enhancements/randomizer/3drando/hint_list.cpp b/soh/soh/Enhancements/randomizer/3drando/hint_list.cpp index 90ddcef06..ec947bcb5 100644 --- a/soh/soh/Enhancements/randomizer/3drando/hint_list.cpp +++ b/soh/soh/Enhancements/randomizer/3drando/hint_list.cpp @@ -953,7 +953,7 @@ void StaticData::HintTable_Init() { /*german*/ "Verlorene Wälder", /*french*/ "les Bois Perdus")); // /*spanish*/el Bosque Perdido - + hintTextTable[RHT_SACRED_FOREST_MEADOW] = HintText(CustomMessage("Sacred Forest Meadow", /*german*/ "Heilige Lichtung", /*french*/ "le Bosquet Sacré")); @@ -998,12 +998,12 @@ void StaticData::HintTable_Init() { /*german*/ "Zitadelle der Zeit", /*french*/ "le Temple du Temps")); // /*spanish*/el Templo del Tiempo - + hintTextTable[RHT_CASTLE_GROUNDS] = HintText(CustomMessage("the Castle Grounds", /*german*/ "Anlage von Schloß Hyrule", /*french*/ "le Château d'Hyrule")); // /*spanish*/ - + hintTextTable[RHT_HYRULE_CASTLE] = HintText(CustomMessage("Hyrule Castle", /*german*/ "Schloß Hyrule", /*french*/ "le Château d'Hyrule")); @@ -1018,7 +1018,7 @@ void StaticData::HintTable_Init() { /*german*/ "Anlage von Schloß Hyrule", /*french*/ "le Château d'Hyrule")); // /*spanish*/ - + hintTextTable[RHT_KAKARIKO_VILLAGE] = HintText(CustomMessage("Kakariko Village", /*german*/ "Kakariko", /*french*/ "le Village Cocorico")); @@ -1058,7 +1058,7 @@ void StaticData::HintTable_Init() { /*german*/ "Zoras Quelle", /*french*/ "la Fontaine Zora")); // /*spanish*/la Fuente Zora - + hintTextTable[RHT_LON_LON_RANCH] = HintText(CustomMessage("Lon Lon Ranch", /*german*/ "Lon Lon-Farm", /*french*/ "le Ranch Lon Lon")); @@ -1077,7 +1077,7 @@ void StaticData::HintTable_Init() { /*german*/ "Midos Haus", /*french*/ "la Cabane du Grand Mido")); // /*spanish*/la casa de Mido - + hintTextTable[RHT_KF_SARIAS_HOUSE] = HintText(CustomMessage("Saria's House", /*german*/ "Salias Haus", /*french*/ "la Cabane de Saria")); @@ -1097,7 +1097,7 @@ void StaticData::HintTable_Init() { /*german*/ "der #Kokiri-Laden#", /*french*/ "le #Magasin Kokiri#")); // /*spanish*/la tienda kokiri - + hintTextTable[RHT_LH_LAB] = HintText(CustomMessage("the #Lakeside Laboratory#", /*german*/ "das #Laboratorium des Sees#", /*french*/ "le #Laboratoire du Lac#")); @@ -1292,7 +1292,7 @@ void StaticData::HintTable_Init() { /*german*/ "eine solitäre #Kuh#", /*french*/ "la #grotte avec une vache#")); // /*spanish*/una #vaca# solitaria - + hintTextTable[RHT_HC_STORMS_GROTTO] = HintText(CustomMessage("a sandy grotto with #fragile walls#", /*german*/ "eine sandige Grotte mit #fragilen Wänden#", /*french*/ "la #grotte avec des murs fragiles#")); @@ -1337,7 +1337,7 @@ void StaticData::HintTable_Init() { /*german*/ "eine #generische Grotte#", /*french*/ "une #grotte avec un trésor#")); // /*spanish*/una #cueva genérica# - + hintTextTable[RHT_DMC_UPPER_GROTTO] = HintText(CustomMessage("a #generic grotto#", /*german*/ "eine #generische Grotte#", /*french*/ "une #grotte avec un trésor#")); @@ -1362,7 +1362,7 @@ void StaticData::HintTable_Init() { /*german*/ "eine #generische Grotte#", /*french*/ "une #grotte avec un trésor#")); // /*spanish*/una #cueva genérica# - + hintTextTable[RHT_HF_SOUTHEAST_GROTTO] = HintText(CustomMessage("a #generic grotto#", /*german*/ "eine #generische Grotte#", /*french*/ "une #grotte avec un trésor#")); @@ -1458,257 +1458,258 @@ void StaticData::HintTable_Init() { ---------------------------*/ hintTextTable[RHT_JUNK01] = HintText(CustomMessage("They say you must read the names of \"Special Deal\" shop items carefully.", - /*german*/ TODO_TRANSLATE, + /*german*/ "Man erzählt sich, dass man die \"Sonderangebote\" im Laden sorgfältig lesen sollte!", /*french*/ "Selon moi, les \"Offres spéciales\" sont parfois trompeuses... Lisez les attentivement!")); hintTextTable[RHT_JUNK02] = HintText(CustomMessage("They say that Zelda is a poor leader.", - /*german*/ TODO_TRANSLATE, + /*german*/ "Man erzählt sich, dass Zelda eine schlechte Anführerin ist.", /*french*/ "Selon moi, Zelda ne ferait pas un bon monarque.")); hintTextTable[RHT_JUNK03] = HintText(CustomMessage("These hints can be quite useful. This is an exception.", - /*german*/ TODO_TRANSLATE, + /*german*/ "Die Hinweise können sehr nützlich sein. Dies ist eine Ausnahme.", /*french*/ "Ces indices sont très utiles, à l'exception de celui-ci.")); hintTextTable[RHT_JUNK04] = HintText(CustomMessage("They say that the Lizalfos in Dodongo's Cavern like to play in lava.", - /*german*/ TODO_TRANSLATE, + /*german*/ "Man erzählt sich, dass die Echsalfos in Dodongo's Cavern gerne in der Lava spielen.", /*french*/ "Selon moi, les Lézalfos de la Caverne Dodongo aiment patauger dans la lave.")); hintTextTable[RHT_JUNK05] = HintText(CustomMessage("They say that all the Zora drowned in Wind Waker.", - /*german*/ TODO_TRANSLATE, + /*german*/ "Man erzählt sich, dass alle Zoras in Wind Waker ertrunken sind.", /*french*/ "Selon moi, les Zoras se sont noyés dans Wind Waker.")); hintTextTable[RHT_JUNK06] = HintText(CustomMessage("If Gorons eat rocks, does that mean I'm in danger?", - /*german*/ TODO_TRANSLATE, + /*german*/ "Goronen essen doch Steine… heißt das, ich sollte mir Sorgen machen?", /*french*/ "Ne dis pas au Gorons que je suis ici. Ils mangent des roches, tu sais!")); hintTextTable[RHT_JUNK07] = HintText(CustomMessage("'Member when Ganon was a blue pig?^I 'member.", - /*german*/ TODO_TRANSLATE, + /*german*/ "Erinnert ihr euch noch, als Ganon ein blauer Schwein war?^Ich erinnere mich!“", /*french*/ "Dans mon temps, Ganon était un cochon bleu...^Pff! Les jeunes de nos jours, et leur Ganondorf!")); hintTextTable[RHT_JUNK08] = HintText(CustomMessage("One who does not have Triforce can't go in.", - /*german*/ TODO_TRANSLATE, + /*german*/ "Jemand, der nicht im Besitz der Triforce ist, kann nicht eintreten!", /*french*/ "Ceux sans Triforce doivent rebrousser chemin.")); hintTextTable[RHT_JUNK09] = HintText(CustomMessage("Save your future, end the Happy Mask Salesman.", - /*german*/ TODO_TRANSLATE, + /*german*/ "Man erzählt sich, dass der Maskenverkäufer aufgehalten werden muss, wenn man eine sichere Zukunft will.", /*french*/ "Selon moi, tu t'éviteras des jours de malheur si tu vaincs le vendeur de masques...")); hintTextTable[RHT_JUNK10] = HintText(CustomMessage("Glitches are a pathway to many abilities some consider to be... Unnatural.", - /*german*/ TODO_TRANSLATE, + /*german*/ "Glitches sind ein Weg zu vielen Fähigkeiten, die manche als... unnatürlich betrachten.", /*french*/ "Les glitchs sont un moyen d'acquérir de nombreuses facultés considérées par certains comme... contraire ")); hintTextTable[RHT_JUNK11] = HintText(CustomMessage("I'm stoned. Get it?", - /*german*/ TODO_TRANSLATE, - /*french*/ "Allez, roche, papier, ciseau...&Roche.")); + /*german*/ "Ich bin stoned. Verstehst du?", + /*french*/ "J'ai été pétrifié.&Tu as compris?")); hintTextTable[RHT_JUNK12] = HintText(CustomMessage("Hoot! Hoot! Would you like me to repeat that?", - /*german*/ TODO_TRANSLATE, + /*german*/ "Sei willkommen! Soll ich meine Worte wiederholen?", /*french*/ "Hou hou! Veux-tu que je répète tout ça?")); hintTextTable[RHT_JUNK13] = HintText(CustomMessage("Gorons are stupid. They eat rocks.", - /*german*/ TODO_TRANSLATE, + /*german*/ "Goronen sind dumm. Sie essen Felsen.", /*french*/ "Les Gorons sont des vraies têtes dures.")); hintTextTable[RHT_JUNK14] = HintText(CustomMessage("They say that Lon Lon Ranch prospered under Ingo.", - /*german*/ TODO_TRANSLATE, + /*german*/ "Man erzählt sich, dass Ingo der Lon-Lon-Farm zu neuem Glanz verholfen hat.", /*french*/ "Selon moi, le Ranch Lon Lon était plus prospère sous Ingo.")); hintTextTable[RHT_JUNK15] = HintText(CustomMessage("They say without the Lens of Truth, the Treasure Chest Mini-Game is a 1 out of 32 chance.^Good luck!", - /*german*/ TODO_TRANSLATE, - /*french*/ "Gagner la Chasse-aux-Trésors est 1 chance sur 32.^Bonne chance!")); + /*german*/ "Man erzählt sich, dass du ohne das Auge der Wahrheit beim Schatzkisten-Minispiel nur eine 1-zu-32-Chance hast.^Na dann, viel Glück.", + /*french*/ "Selon moi, les chances de gagner la Chasse-aux-Trésors sans Monocle de Vérité est de 1 chance sur 32.^Bonne chance!")); hintTextTable[RHT_JUNK16] = HintText(CustomMessage("Use bombs wisely.", - /*german*/ TODO_TRANSLATE, + /*german*/ "Setze Bomben mit Bedacht ein.", /*french*/ "Utilise les bombes avec précaution.")); hintTextTable[RHT_JUNK17] = HintText(CustomMessage("They say that players who select the \"ON\" option for \"MOTION CONTROL\" are the real \"Zelda players!\"", - /*german*/ TODO_TRANSLATE, + /*german*/ "Man erzählt sich, dass Spieler, die die Option ‚BEWEGUNGSSTEUERUNG‘ auf ‚EIN‘ stellen, die wahren ‚Zelda-Spieler‘ sind.", /*french*/ "Selon moi, ceux qui utilisent les contrôles gyroscopiques sont les VRAIS joueurs.")); hintTextTable[RHT_JUNK18] = HintText(CustomMessage("L2P @.", - /*german*/ TODO_TRANSLATE, + /*german*/ "Lern zu spielen, @.", /*french*/ "Arrête de lire les indices et joue comme un grand, @.")); hintTextTable[RHT_JUNK19] = HintText(CustomMessage("I bet you'd like to have more bombs.", - /*german*/ TODO_TRANSLATE, + /*german*/ "Ich wette, du würdest jetzt gerne mehr Bomben haben.", /*french*/ "Je parie que tu veux plus de bombes.")); hintTextTable[RHT_JUNK20] = HintText(CustomMessage("When all else fails, use Fire.", - /*german*/ TODO_TRANSLATE, + /*german*/ "Wenn alles andere scheitert, benutze Feuer.", /*french*/ "Quand rien ne marche, utilise le feu.")); hintTextTable[RHT_JUNK21] = HintText(CustomMessage("Here's a hint, @. Don't be bad.", - /*german*/ TODO_TRANSLATE, + /*german*/ "Hier ein Tipp, @: Sei nicht so schlecht.", /*french*/ "Selon moi, la #Triforce# n'est pas dans le jeu... Duh!")); hintTextTable[RHT_JUNK22] = HintText(CustomMessage("Game Over. Return of Ganon.", - /*german*/ TODO_TRANSLATE, + /*german*/ "Game Over. Die Rückkehr von Ganon.", /*french*/ "Partie terminée. RETour de Ganon.")); hintTextTable[RHT_JUNK23] = HintText(CustomMessage("May the way of the Hero lead to the Triforce.", - /*german*/ TODO_TRANSLATE, + /*german*/ "Möge der Weg des Helden zur Triforce führen.", /*french*/ "Que le chemin du héros te mène à la Triforce.")); hintTextTable[RHT_JUNK24] = HintText(CustomMessage("Can't find an item? Scan an Amiibo.", - /*german*/ TODO_TRANSLATE, + /*german*/ "Du kannst einen Gegenstand nicht finden? Scanne einen Amiibo.", /*french*/ "Tu cherches de quoi? Utilise un Amiibo!")); hintTextTable[RHT_JUNK25] = HintText(CustomMessage("They say this game has just a few glitches.", - /*german*/ TODO_TRANSLATE, + /*german*/ "Man erzählt sich, dass dieses Spiel nur ein paar Glitches hat.", /*french*/ "Selon moi, ce jeu est complètement exempt de glitchs.")); hintTextTable[RHT_JUNK26] = HintText(CustomMessage("BRRING BRRING This is Ulrira. Wrong number?", - /*german*/ TODO_TRANSLATE, + /*german*/ "BRRING BRRING, hier ist Ulrira. Falsche Nummer.", /*french*/ "DRING DRING!! Pépé le Ramollo à l'appareil... Quoi? Faux numéro?")); hintTextTable[RHT_JUNK27] = HintText(CustomMessage("Tingle Tingle Kooloo Limpah!", - /*german*/ TODO_TRANSLATE, + /*german*/ "Tingle Tingle Kuuluu-Limpah!", /*french*/ "Tingle! Tingle! Kooloolin... Pah!")); hintTextTable[RHT_JUNK28] = HintText(CustomMessage("L is real 2401", - /*german*/ TODO_TRANSLATE, + /*german*/ "L is real 2401", /*french*/ "L is real 2401")); hintTextTable[RHT_JUNK29] = HintText(CustomMessage("They say that Ganondorf will appear in the next Mario Tennis.", - /*german*/ TODO_TRANSLATE, + /*german*/ "Man erzählt sich, dass Ganondorf im nächsten Mario Tennis erscheinen wird.", /*french*/ "Selon moi, Ganondorf sera la nouvelle recrue dans Mario Tennis.")); hintTextTable[RHT_JUNK30] = HintText(CustomMessage("They say Medigoron sells the earliest Breath of the Wild demo.", - /*german*/ TODO_TRANSLATE, + /*german*/ "Man erzählt sich, dass Medigoron die früheste Breath of the Wild-Demo verkauft.", /*french*/ "Selon moi, Medigoron vend une démo de #Breath of the Wild#.")); hintTextTable[RHT_JUNK31] = HintText(CustomMessage("Can you move me? I don't get great service here.", - /*german*/ TODO_TRANSLATE, + /*german*/ "Kannst du mich bewegen? Der Service hier ist nicht gerade gut.", /*french*/ "Peux-tu me déplacer? J'ai pas une bonne réception ici.")); hintTextTable[RHT_JUNK32] = HintText(CustomMessage("They say if you use Strength on the truck, you can find Mew.", - /*german*/ TODO_TRANSLATE, + /*german*/ "Man erzählt sich, dass man mit Stärke am Truck Mew finden kann.", /*french*/ "Selon moi, #Mew# se trouve dessous le camion... Duh!")); hintTextTable[RHT_JUNK33] = HintText(CustomMessage("I'm a helpful hint Gossip Stone!^See, I'm helping.", - /*german*/ TODO_TRANSLATE, + /*german*/ "Ich bin ein hilfreicher Stein!^Siehst du, ich helfe.", /*french*/ "Salut! Je suis une pierre de bons conseils!^Tiens, tu vois? J'aide bien, hein?")); hintTextTable[RHT_JUNK34] = HintText(CustomMessage("Dear @, please come to the castle. I've baked a cake for you.&Yours truly, Princess Zelda.", - /*german*/ TODO_TRANSLATE, + /*german*/ "Lieber @, bitte komm ins Schloss. Ich habe einen Kuchen für dich gebacken. Mit freundlichen Grüßen,^Prinzessin Zelda.", /*french*/ "Mon très cher @:&Viens vite au château, je t'ai préparé&un délicieux gâteau...^À bientôt, Princesse Zelda")); hintTextTable[RHT_JUNK35] = HintText(CustomMessage("They say all toasters toast toast.", - /*german*/ TODO_TRANSLATE, + /*german*/ "Man erzählt sich, dass alle Toaster Toast toasten.", /*french*/ "Selon moi, les grille-pains grillent du pain.")); hintTextTable[RHT_JUNK36] = HintText(CustomMessage("You thought it would be a useful hint, but it was me, junk hint!", - /*german*/ TODO_TRANSLATE, + /*german*/ "Du dachtest, es wäre ein nützlicher Hinweis, aber es war ich, der Müll-Hinweis.", /*french*/ "Tu t'attendais à un bon indice... Mais c'était moi, un mauvais indice!")); hintTextTable[RHT_JUNK37] = HintText(CustomMessage("They say that quest guidance can be found at a talking rock.", - /*german*/ TODO_TRANSLATE, + /*german*/ "Man erzählt sich, dass man Quest-Hinweise bei einem sprechenden Stein finden kann.", /*french*/ "Selon moi, des #indices# se trouvent auprès d'une pierre parlante... Duh!")); hintTextTable[RHT_JUNK38] = HintText(CustomMessage("They say that the final item you're looking for can be found somewhere in Hyrule.", - /*german*/ TODO_TRANSLATE, + /*german*/ "Man erzählt sich, dass das letzte Item, nach dem du suchst, irgendwo in Hyrule zu finden ist.", /*french*/ "Selon moi, le #dernier objet# se trouve quelque part dans Hyrule... Duh!")); hintTextTable[RHT_JUNK39] = HintText(CustomMessage("Mweep.^Mweep.^Mweep.^Mweep.^Mweep.^Mweep.^Mweep.^Mweep.^Mweep.^Mweep.^Mweep.^Mweep.", - /*german*/ TODO_TRANSLATE, + /*german*/ "Mweep.^Mweep.^Mweep.^Mweep.^Mweep.^Mweep.^Mweep.^Mweep.^Mweep.^Mweep.^Mweep.^Mweep.", /*french*/ "Mwip.^Mwip.^Mwip.^Mwip.^Mwip.^Mwip.^Mwip.^Mwip.^Mwip.^Mwip.^Mwip.^Mwip.")); hintTextTable[RHT_JUNK40] = HintText(CustomMessage("They say that Barinade fears Deku Nuts.", - /*german*/ TODO_TRANSLATE, + /*german*/ "Man erzählt sich, dass Barinade Angst vor Deku-Nüssen hat.", /*french*/ "Selon moi, Barinade a la frousse des noix Mojo.")); hintTextTable[RHT_JUNK41] = HintText(CustomMessage("They say that Flare Dancers do not fear Goron-crafted blades.", - /*german*/ TODO_TRANSLATE, + /*german*/ "Man erzählt sich, dass Flammenderwische keine Angst vor von Goronen geschmiedeten Klingen haben.", /*french*/ "Selon moi, le danse-flamme n'a pas peur des armes de Goron.")); hintTextTable[RHT_JUNK42] = HintText(CustomMessage("They say that Morpha is easily trapped in a corner.", - /*german*/ TODO_TRANSLATE, + /*german*/ "Man erzählt sich, dass man Morpha ganz leicht in die Ecke drängen kann.", /*french*/ "Selon moi, Morpha est facilement coincé.")); hintTextTable[RHT_JUNK43] = HintText(CustomMessage("They say that Bongo Bongo really hates the cold.", - /*german*/ TODO_TRANSLATE, + /*german*/ "Man erzählt sich, dass Bongo Bongo die Kälte wirklich hasst.", /*french*/ "Selon moi, Bongo Bongo a facilement froid aux doigts.")); hintTextTable[RHT_JUNK44] = HintText(CustomMessage("They say that your sword is most powerful when you put it away.", - /*german*/ TODO_TRANSLATE, + /*german*/ "Man erzählt sich, dass dein Schwert am mächtigsten ist, wenn du es wegsteckst.", /*french*/ "Selon moi, ton épée est à pleine puissance quand tu la rengaines.")); hintTextTable[RHT_JUNK45] = HintText(CustomMessage("They say that bombing the hole Volvagia last flew into can be rewarding.", - /*german*/ TODO_TRANSLATE, + /*german*/ "Man erzählt sich, dass es sich lohnt, das Loch zu bombardieren, in das Volvagia zuletzt geflogen ist.", /*french*/ "Selon moi, le trou où se creuse Volvagia est vulnérable aux bombes.")); hintTextTable[RHT_JUNK46] = HintText(CustomMessage("They say that invisible ghosts can be exposed with Deku Nuts.", - /*german*/ TODO_TRANSLATE, + /*german*/ "Man erzählt sich, dass unsichtbare Geister mit Deku-Nüssen sichtbar gemacht werden können.", /*french*/ "Selon moi, des fantômes invisibles apparaissent avec des noix Mojo.")); hintTextTable[RHT_JUNK47] = HintText(CustomMessage("They say that the real Phantom Ganon is bright and loud.", - /*german*/ TODO_TRANSLATE, + /*german*/ "Man erzählt sich, dass der wahre Phantom-Ganon durch Helligkeit und Lärm auffällt.", /*french*/ "Selon moi, le vrai spectre de Ganon est clair et bruyant.")); hintTextTable[RHT_JUNK48] = HintText(CustomMessage("They say that walking backwards is very fast.", - /*german*/ TODO_TRANSLATE, + /*german*/ "Man erzählt sich, dass rückwärts laufen sehr schnell ist.", /*french*/ "Selon moi, tu fais marche arrière très rapidement pour un héros.")); hintTextTable[RHT_JUNK49] = HintText(CustomMessage("They say Ingo is not very good at planning ahead.", - /*german*/ TODO_TRANSLATE, + /*german*/ "Man erzählt sich, dass Ingo nicht besonders gut darin ist, vorauszuplanen.", /*french*/ "Selon moi, Ingo ne fait pas un très bon geôlier.")); hintTextTable[RHT_JUNK50] = HintText(CustomMessage("You found a spiritual Stone! By which I mean, I worship Nayru.", - /*german*/ TODO_TRANSLATE, + /*german*/ "Du hast einen heiligen Stein gefunden! Also... eigentlich heißt das nur, dass ich Nayru verehre.", /*french*/ "Vous avez trouvé une Pierre Ancestrale! En effet, je vénère la déesse Hylia.")); hintTextTable[RHT_JUNK51] = HintText(CustomMessage("Open your eyes.^Open your eyes.^Wake up, @.", - /*german*/ TODO_TRANSLATE, + /*german*/ "Öffne deine Augen.^Öffne deine Augen.^Wach auf, @.", /*french*/ "Réveille-toi...^Réveille-toi.^Ouvre les yeux, @.")); hintTextTable[RHT_JUNK52] = HintText(CustomMessage("They say that the Nocturne of Shadow can bring you very close to Ganon.", - /*german*/ TODO_TRANSLATE, + /*german*/ "Man erzählt sich, dass das Nocturne des Schattens dich Ganon sehr nahe bringen kann.", /*french*/ "Selon moi, le Nocturne de l'Ombre peut t'amener très près de Ganon.")); hintTextTable[RHT_JUNK53] = HintText(CustomMessage("They say that Twinrova always casts the same spell the first three times.", - /*german*/ TODO_TRANSLATE, + /*german*/ "Man erzählt sich, dass Twinrova die ersten drei Male immer denselben Zauber benutzt.", /*french*/ "Selon moi, le Duo Maléfique lance toujours les mêmes trois premiers sorts.")); hintTextTable[RHT_JUNK54] = HintText(CustomMessage("They say that the nightly builds may be unstable.", - /*german*/ TODO_TRANSLATE, + /*german*/ "Man erzählt sich, dass die \"nightly builds\" instabil sein könnten.", /*french*/ "Selon moi, les \"nightly builds\" peuvent être instables.")); hintTextTable[RHT_JUNK55] = HintText(CustomMessage("You're playing a Randomizer. I'm randomized!^Here's a random number: #4#.&Enjoy your Randomizer!", - /*german*/ TODO_TRANSLATE, + /*german*/ "Du spielst einen Randomizer. Ich bin randomisiert!^Hier ist eine zufällige Zahl: #4#.&Viel Spaß mit dem Randomizer!", /*french*/ "Tu joues à un randomizer. Je suis aléatoire!^Voici un nombre aléatoire: #4#.&Bonne partie!")); hintTextTable[RHT_JUNK56] = HintText(CustomMessage("They say Ganondorf's bolts can be reflected with glass or steel.", - /*german*/ TODO_TRANSLATE, + /*german*/ "Man erzählt sich, dass man Ganondorfs Blitze mit Glas oder Stahl reflektieren kann.", /*french*/ "Selon moi, les éclairs de Ganon se reflètent sur l'acier et le verre.")); hintTextTable[RHT_JUNK57] = HintText(CustomMessage("They say Ganon's tail is vulnerable to nuts, arrows, swords, explosives, hammers...^...sticks, seeds, " "boomerangs...^...rods, shovels, iron balls, angry bees...", - /*german*/ TODO_TRANSLATE, + /*german*/ "Man erzählt sich, dass Ganons Schwanz verwundbar ist durch Nüsse, Pfeile, Schwerter...^...Sprengstoffe, Hämmer, " + "Stöcke...^...Kerne, Bumerangs, Schaufeln, Eisenkugeln, wütende Bienen...", /*french*/ "Selon moi, la queue de Ganon est vulnérable aux noix, flèches, épées, bombes, marteaux...^...bâtons, " "graines, boomerangs...^...baguettes, pelles, boulets de fer, abeilles enragées...")); hintTextTable[RHT_JUNK58] = HintText(CustomMessage("They say that you're wasting time reading this hint, but I disagree. Talk to me again!", - /*german*/ TODO_TRANSLATE, + /*german*/ "Man erzählt sich, dass du deine Zeit mit dem Lesen dieses Hinweises verschwendest, aber ich bin anderer Meinung. Sprich noch einmal mit mir.", /*french*/ "Selon moi... tu sais quoi? Parle-moi encore, et je te le dirai!")); hintTextTable[RHT_JUNK59] = HintText(CustomMessage("They say Ganondorf knows where to find the instrument of his doom.", - /*german*/ TODO_TRANSLATE, + /*german*/ "Man erzählt sich, dass Ganondorf weiß, wo er das Instrument seines Untergangs finden kann.", /*french*/ "Selon moi, Ganondorf sait où il a caché son point faible.")); hintTextTable[RHT_JUNK60] = HintText(CustomMessage("I heard @ is pretty good at Zelda.", - /*german*/ TODO_TRANSLATE, + /*german*/ "Ich habe gehört, dass @ ziemlich gut in Zelda ist.", /*french*/ "Apparemment, @ est super bon à Zelda.")); hintTextTable[RHT_JUNK61] = HintText(CustomMessage("Hi @, we've been trying to reach you about your car's extended warranty. ", - /*german*/ TODO_TRANSLATE, + /*german*/ "Hallo @, wir haben versucht, dich wegen der erweiterten Garantie für dein Auto zu erreichen.", /*french*/ "Bonjour, @. Vous avez une voiture? Vous savez, nous offrons des assurances abordables...")); hintTextTable[RHT_JUNK62] = HintText(CustomMessage("They say that it's actually possible to beat the running man.", - /*german*/ TODO_TRANSLATE, + /*german*/ "Man erzählt sich, dass es tatsächlich möglich ist, den Laufenden Mann zu besiegen.", /*french*/ "Selon moi, il est possible de battre le coureur.&Donc, tu prends ton arc, et...")); hintTextTable[RHT_JUNK63] = HintText(CustomMessage("They say this hint makes more sense in other languages.", - /*german*/ TODO_TRANSLATE, + /*german*/ "Man erzählt sich, dass diese Hinweise besser übersetzt werden könnten… na ja, wer hätte das gedacht.", /*french*/ "Selon moi, ces indices auraient pu être mieux traduits... Duh!")); // ^ Junk hints above are from 3drando @@ -1717,46 +1718,43 @@ void StaticData::HintTable_Init() { // Please keep hints to stuff related to ship directly, or to Nintendo/Zelda related stuff. // And nothing that's super obscure that no one's going to understand. -#define HINT_TEXT_NEEDS_TRANSLATION_FR \ - "Erreur 0x69a504:&Traduction manquante^C'est de la faute à Purple Hato!&J'vous jure!" - hintTextTable[RHT_JUNK64] = HintText(CustomMessage("They say Greg is special.", - /*german*/ TODO_TRANSLATE, + /*german*/ "Man erzählt sich, dass Greg etwas Besonderes ist.", /*french*/ "Selon moi, Greg est spécial.")); hintTextTable[RHT_JUNK65] = HintText(CustomMessage("They say the longer the Goron's neck, the wiser they are.", - /*german*/ TODO_TRANSLATE, + /*german*/ "Man erzählt sich, dass ein Gorone umso weiser wird, je länger sein Hals ist.", /*french*/ "Selon moi, plus le cou des Gorons est long, plus ils sont sage." )); hintTextTable[RHT_JUNK66] = HintText(CustomMessage("They say this ship is what all true gamers strive for.", - /*german*/ TODO_TRANSLATE, + /*german*/ "Man erzählt sich, dass dieses \"ship\" das ist, wonach alle echten Gamer streben.", /*french*/ "Selon moi, cette version du port est ce pour quoi luttent tous les vrais gamers.")); - + hintTextTable[RHT_JUNK67] = HintText(CustomMessage("They say that Glowsticks can be found in the Raveyard.", - /*german*/ TODO_TRANSLATE, + /*german*/ "Man erzählt sich, dass Leuchtstäbe auf dem Partyfriedhof zu finden sind.", /*french*/ "Selon moi, on peut trouver des Bâtons Lumineux sur le dancefloor du cimetière.")); hintTextTable[RHT_JUNK68] = HintText(CustomMessage("They say @'s uncle works for Nintendo.", - /*german*/ TODO_TRANSLATE, + /*german*/ "Man erzählt sich, dass @'s Onkel bei Nintendo arbeitet.", /*french*/ "Selon moi, l'oncle de @ travaille chez Nintendo.")); hintTextTable[RHT_JUNK69] = HintText(CustomMessage("They say pulling all gravestones in the graveyard leads to something magical.", - /*german*/ TODO_TRANSLATE, + /*german*/ "Man erzählt sich, dass das Ziehen aller Grabsteine auf dem Friedhof zu etwas Magischem führt.", /*french*/ "Selon moi, tirer toutes les tombes du Cimetière déclanche un truc magique.")); hintTextTable[RHT_JUNK70] = HintText(CustomMessage("They say holding L while pausing makes you win the game.", - /*german*/ TODO_TRANSLATE, + /*german*/ "Man erzählt sich, dass man das Spiel gewinnt, wenn man L gedrückt hält, während man pausiert.", /*french*/ "Selon moi, maintenir L pendant que vous appuyez sur START vous permet de terminer le jeu.")); hintTextTable[RHT_JUNK71] = HintText(CustomMessage("They say @'s body is ready.", - /*german*/ TODO_TRANSLATE, + /*german*/ "Man erzählt sich... nein weisst du was, ich hab keine lust mehr.", /*french*/ "Selon moi, ce junk hint ne se traduirait pas bien en français.")); /*-------------------------- | DUNGEON HINT TEXT | ---------------------------*/ - + hintTextTable[RHT_DEKU_TREE] = HintText(CustomMessage("Deku Tree", /*german*/ "Deku-Baum", /*french*/ "l'Arbre Mojo"), @@ -2000,13 +1998,13 @@ void StaticData::HintTable_Init() { // /*spanish*/$8Los sabios aguardarán a que el héroe&obtenga #[[d]] |medallón|medallones|#.^ hintTextTable[RHT_BRIDGE_REWARDS_HINT] = HintText(CustomMessage("$CThe awakened ones will await for the Hero to collect #[[d]]# |#Spiritual Stone# or #Medallion#|" - "#Spiritual Stones# and #Medallions#|.^", - /*german*/ "$CDie Weisen werden darauf warten, daß der Held #[[d]]# |#Heiligen Stein# oder #Amulett#|" - "#Heilige Steine# oder #Amulette#| sammelt.^", - /*french*/ "$CLes êtres de sagesse attendront le héros muni de #[[d]]# |#Pierre Ancestrale# ou #Médaillon#" - "|#Pierres Ancestrales# ou #Médaillons#|.^", - {QM_YELLOW, QM_BLUE, QM_RED})); - // /*spanish*/$CLos sabios aguardarán a que el héroe obtenga #[[d]]# |#piedra espiritual# o #medallón#| + "#Spiritual Stones# and #Medallions#|.^", + /*german*/ "$CDie Weisen werden darauf warten, daß der Held #[[d]]# |#Heiligen Stein# oder #Amulett#|" + "#Heilige Steine# oder #Amulette#| sammelt.^", + /*french*/ "$CLes êtres de sagesse attendront le héros muni de #[[d]]# |#Pierre Ancestrale# ou #Médaillon#" + "|#Pierres Ancestrales# ou #Médaillons#|.^", + {QM_YELLOW, QM_BLUE, QM_RED})); + // /*spanish*/$CLos sabios aguardarán a que el héroe obtenga #[[d]]# |#piedra espiritual# o #medallón#| //#piedras espirtuales# y #medallones#|.^ hintTextTable[RHT_BRIDGE_DUNGEONS_HINT] = HintText(CustomMessage("$mThe awakened ones will await for the Hero to conquer #[[d]] Dungeon||s|#.^", @@ -2022,6 +2020,8 @@ void StaticData::HintTable_Init() { // /*spanish*/$sLos sabios aguardarán a que el héroe obtenga #[[d]] símbolo||s| de skulltula dorada#.^ hintTextTable[RHT_BRIDGE_GREG_HINT] = HintText(CustomMessage("$gThe awakened ones will await for the Hero to find #Greg#.^", + /*german*/ "$gDie Erwachten werden darauf warten, dass der Held #Greg# findet.^", + /*french*/ "$gLes êtres de sagesse attendront le héros muni de #Greg#.^", {QM_GREEN})); @@ -2188,7 +2188,7 @@ void StaticData::HintTable_Init() { /*german*/ "$cJener auf dem Weg des Helden...&Nehme er seine Okarina zur Hand und&spiele hier die Hymne der Zeit.", /*french*/ "$cÀ celui qui a quête de devenir&héros...&Portez l'Ocarina et jouez&le chant du temps.")); // /*spanish*/$cPara aquel que se convierta en el héroe...&Tome la ocarina y&entone la Canción del Tiempo. - + hintTextTable[RHT_CHILD_ALTAR_TEXT_END_DOTCLOSED] = HintText(CustomMessage("$iYe who may become a Hero...&Offer the spiritual stones and&play the Song of Time.", /*german*/ "$iJener mit den drei Heiligen Steinen&nehme seine Okarina zur Hand und&spiele hier die Hymne der Zeit.", /*french*/ "$iÀ celui qui a quête de devenir&héros... Présentez les Pierres&Ancestrales et jouez&le chant du temps.")); @@ -2214,19 +2214,20 @@ void StaticData::HintTable_Init() { ---------------------------*/ hintTextTable[RHT_GANONDORF_HINT_LA_ONLY] = HintText(CustomMessage("Ha ha ha... You'll never beat me by reflecting my lightning bolts and unleashing the arrows from #[[1]]#!", - /*german*/ TODO_TRANSLATE, + /*german*/ "Ha ha ha... Du wirst mich nie besiegen, indem du meine Blitze zurückschlägst und die Pfeile aus #[[1]]# entfesselts!", /*french*/ "Ha ha ha... Pauvre fou! Tu ne pourras jamais me vaincre sans les flèches que j'ai cachées dans #[[1]]#!", {QM_RED})); // /*spanish*/Ja, ja, ja... Nunca me derrotarás reflejando mis esferas de energía y desplegando la flecha de luz de #[[1]]#! hintTextTable[RHT_GANONDORF_HINT_MS_ONLY] = HintText(CustomMessage("Ha ha ha... You'll never defeat me, drop a castle on me and finish me off with the sacred blade from #[[2]]#!", - /*german*/ TODO_TRANSLATE, + /*german*/ "Ha ha ha... Du wirst mich nie besiegen, wirf ein Schloss auf mich und beende mich mit dem heiligen Schwert von #[[2]]#!", /*french*/ "Ha ha ha... Pauvre fou! Tu ne pourras jamais me vaincre sans l'Épée de Légende cachée dans #[[2]]#!", {QM_RED})); hintTextTable[RHT_GANONDORF_HINT_LA_AND_MS] = HintText(CustomMessage("Ha ha ha... You'll never beat me by reflecting my lightning bolts and unleashing the arrows from #[[1]]#!" "^And even if you do, you'll never find the legendary blade hidden in #[[2]]#!", - /*german*/ TODO_TRANSLATE, + /*german*/ "Ha ha ha... Du wirst mich nie besiegen, indem du meine Blitze zurückschlägst und die Pfeile aus #[[1]]# entfesselts!" + "^Und selbst wenn du es tust, wirst du nie das legendäre Schwert finden, das in #[[2]]# versteckt ist!", /*french*/ "Ha ha ha... Pauvre fou! Tu ne pourras jamais me vaincre sans les flèches que j'ai cachées dans #[[1]]#!" "^Et même si tu les trouves, tu ne touveras jamais l'Épée de Légende cachée dans #[[2]]#!", {QM_RED, QM_RED})); @@ -2234,34 +2235,38 @@ void StaticData::HintTable_Init() { // ^E incluso si lo haces, nunca encontrarás la espada legendaria escondida en #[[2]]#! hintTextTable[RHT_SHEIK_HINT_LA_ONLY] = HintText(CustomMessage("I overheard Ganondorf say that he misplaced the #Light Arrows# in #[[1]]#.", - /*german*/ TODO_TRANSLATE, + /*german*/ "Ich habe Ganondorf sagen hören, dass er die #Lichtpfeile# in #[[1]]# verlegt hat.", /*french*/ "J'ai entendu dire que Ganondorf aurait caché les #Flèches de Lumière# dans #[[1]]#.", {QM_YELLOW, QM_RED})); hintTextTable[RHT_DAMPE_DIARY] = HintText(CustomMessage("Whoever reads this, please enter #[[1]]#. I will let you have my #stretching, shrinking keepsake#.^I'm waiting for you.&--Dampé", - /*german*/ "Wer immer dies liest, der möge folgenden Ort aufsuchen: #[[1]]#. Ihm gebe ich meinen #dehnenden, schrumpfenden Schatz#.^Ich warte!&Boris", //RANDOTODO color in whatever refers to the hookshot + /*german*/ "Wer immer dies liest, der möge folgenden Ort aufsuchen: #[[1]]#. Ihm gebe ich meinen #dehnenden, schrumpfenden Schatz#.^Ich warte!&Boris", /*french*/ "Toi qui lit ce journal, rends-toi dans #[[1]]#. Et peut-être auras-tu droit à mon précieux #trésor#.^Je t'attends...&--Igor", {QM_RED, QM_RED})); hintTextTable[RHT_GREG_HINT] = HintText(CustomMessage("By the way, if you're interested, I saw the shiniest #Green Rupee# somewhere in #[[1]]#.^It's said to have #mysterious powers#...^But then, it could just be another regular rupee.&Oh well.", - /*german*/ TODO_TRANSLATE, - /*french*/ "Au fait, si ça t'intéresse, j'ai aperçu le plus éclatant des #Rubis Verts# quelque part à #[[1]]#. On dit qu'il possède des pouvoirs mystérieux... Mais bon, ça pourrait juste être un autre rubis ordinaire.",//RANDOTODO color in mysterious powers + /*german*/ "Übrigens, falls es dich interessiert, ich habe irgendwo in #[[1]]# den glänzendsten #Grünen Rubinen# gesehen.^Es soll #mysteriöse Kräfte# haben...^Aber na ja, es könnte auch einfach nur ein normaler Rubin sein. Tja", + /*french*/ "Au fait, si ça t'intéresse, j'ai aperçu le plus éclatant des #Rubis Verts# quelque part à #[[1]]#.^On dit qu'il possède des #pouvoirs mystérieux#...^Mais bon, ça pourrait juste être un autre rubis ordinaire.", {QM_GREEN, QM_RED, QM_RED})); hintTextTable[RHT_SARIA_TALK_HINT] = HintText(CustomMessage("Did you feel the #surge of magic# recently? A mysterious bird told me it came from #[[1]]#.^You should check that place out, @!", - /*german*/ TODO_TRANSLATE, - /*french*/ "As-tu récemment ressenti une vague de #puissance magique#? Un mystérieux hibou m'a dit qu'elle provenait du #[[1]]#. Tu devrais aller y jeter un coup d'oeil, @!", - {QM_GREEN, QM_RED})); + /*german*/ "Hast du kürzlich den #Magieschub# gespürt? Ein geheimnisvoller Vogel hat mir erzählt, dass er aus #[[1]]# kam.^Du solltest dir diesen Ort mal ansehen, @!", + /*french*/ "As-tu récemment ressenti une vague de #puissance magique#? Un mystérieux hibou m'a dit qu'elle provenait du #[[1]]#.^Tu devrais aller y jeter un coup d'oeil, @!", + {QM_GREEN, QM_RED})); hintTextTable[RHT_SARIA_SONG_HINT] = HintText(CustomMessage("Did you feel the #surge of magic# recently? A mysterious bird told me it came from #[[1]]#.^You should check that place out, @!\x0B", - /*german*/ TODO_TRANSLATE, - /*french*/ "As-tu récemment ressenti une vague de #puissance magique#? Un mystérieux hibou m'a dit qu'elle provenait du #[[1]]#. Tu devrais aller y jeter un coup d'oeil, @!\x0B", - {QM_GREEN, QM_RED}, {}, TEXTBOX_TYPE_BLUE)); + /*german*/ "Hast du kürzlich den #Magieschub# gespürt? Ein geheimnisvoller Vogel hat mir erzählt, dass er aus #[[1]]# kam.^Du solltest dir diesen Ort mal ansehen, @!\x0B", + /*french*/ "As-tu récemment ressenti une vague de #puissance magique#? Un mystérieux hibou m'a dit qu'elle provenait du #[[1]]#.^Tu devrais aller y jeter un coup d'oeil, @!\x0B", + {QM_GREEN, QM_RED}, {}, TEXTBOX_TYPE_BLUE)); hintTextTable[RHT_LOACH_HINT] = HintText(CustomMessage("What?^You wanna know about the&%rHyrule Loach%w?^It's a big fish, but it's so rare that I'll give my %g[[1]]%w to anyone who catches it. Seriously!", - {QM_RED})); + /*german*/ "Was?^Du willst was über den&%rHyrule-Schleicher%w wissen?^Das ist ein riesiger Fisch, aber&so selten, dass ich jedem mein&%g[[1]]%w gebe, der ihn fängt.&Im Ernst." + /*french*/ "Quoi?&Tu veux en savoir plus sur le&%rBrochet d'Hyrule%w?^C'est un gros poisson, mais il&est si rare que je donne&%g[[1]]%w&à celui qui l'attrape.^Ouais, j'suis sérieux!", + {QM_RED})); hintTextTable[RHT_FISHING_POLE_HINT] = HintText(CustomMessage("^If I remember correctly, I lost it somewhere in #[[1]]#...&Let me know if you find it!", + /*german*/ "Wenn ich mich recht erinnere,&hab ich es irgendwo in #[[1]]#&verloren...&Sag mir Bescheid, wenn du es findest." + /*french*/ "Si je me souviens bien, il me&semble que je l'ai perdue&quelque part dans&#[[1]]#...^Fais-moi signe si jamais&tu la trouves!", {QM_RED})); /*-------------------------- @@ -2272,49 +2277,89 @@ void StaticData::HintTable_Init() { /*german*/ "Zu&#[[1]]#?&" + TWO_WAY_CHOICE() + "#OK&No#", /*french*/ "Se téléporter vers&#[[1]]#?&" + TWO_WAY_CHOICE() + "#OK!&Non#", {QM_RED, QM_GREEN})); - + /*-------------------------- | STATIC LOCATION HINTS | ---------------------------*/ + /*-------------------------- + | STATIC LOCATION HINTS | + ---------------------------*/ + hintTextTable[RHT_HBA_HINT_SIGN] = HintText(CustomMessage("#Horseback Archery# Range Prizes:&1000: #[[1]]#&1500: #[[2]]#^@'s Record: #" + CustomMessage::POINTS(HS_HORSE_ARCHERY) + "#", + /*german*/ "#Bogenschießen zu Pferde#&Schießstandpreise:&1000: #[[1]]#&1500: #[[2]]#^@'s Record: #" + CustomMessage::POINTS(HS_HORSE_ARCHERY) + "#", + /*french*/ "Récompenses de l'#Archerie Montée#:&1000: #[[1]]#&1500: #[[2]]#^Record de @: #" + CustomMessage::POINTS(HS_HORSE_ARCHERY) + "#", {QM_RED, QM_GREEN, QM_GREEN, QM_GREEN}, {}, TEXTBOX_TYPE_WOODEN)); - hintTextTable[RHT_HBA_HINT_NOT_ON_HORSE] = HintText(CustomMessage("Hey, rookie!&Come back on your #horse# and take on then #Horseback Archery# challenge!^" + hintTextTable[RHT_HBA_HINT_NOT_ON_HORSE] = HintText(CustomMessage("Hey, rookie!&Come back on your #horse# and take on the #Horseback Archery# challenge!^" "Impress me with a high score of 1000 to win a #[[1]]# or score 1500 for #[[2]]#!", + /*german*/ "Hey, Neuling!&Komm mit deinem #Pferd# zurück und stell dich der #Pferdebogenschießen#-Herausforderung!^" + "Beeindruck mich mit 1000 Punkten und gewinne #[[1]]#! Oder hol dir 1500 Punkte für #[[2]]#!", + /*french*/ "Hé, l'nouveau!&Reviens avec ton #cheval# et essaie notre #Terrain d'Archerie Montée#^" + "Impressionne-moi avec un score de 1000 pour gagner #[[1]]# ou atteins 1500 pour #[[2]]#!", {QM_RED, QM_RED, QM_GREEN, QM_GREEN})); hintTextTable[RHT_HBA_HINT_INITIAL] = HintText(CustomMessage("Hey, rookie!&Want to take on the #Horseback Archery# challenge?^" "Impress me with a high score of 1000 to win a #[[1]]# or score 1500 for #[[2]]#!\x0B", + /*german*/ "Hey, Neuling!&Willst du dich der #Pferdebogenschießen#-Herausforderung stellen?^" + "Zeig, was du drauf hast - hol 1000 Punkte für #[[1]]#! Oder knack die 1500 und kassier #[[2]]#!\x0B", + /*french*/ "Hé, l'nouveau!&Tu veux essayer notre #Terrain d'Archerie Montée#^" + "Impressionne-moi avec un score de 1000 pour gagner #[[1]]# ou atteins 1500 pour #[[2]]#!\x0B", {QM_RED, QM_GREEN, QM_GREEN})); hintTextTable[RHT_HBA_HINT_HAVE_1000] = HintText(CustomMessage("Hey, newcomer!&Want to take on the #Horseback Archery# challenge?^" "Prove yourself to be a horsemaster by scoring 1500 points to win #[[2]]#!\x0B", + /*german*/ "Hey, Neuling!&Willst du dich der #Pferdebogenschießen#-Herausforderung stellen?^" + "Beweise dein Können als Reitmeister - hol 1500 Punkte und gewinne #[[2]]#!\x0B", + /*french*/ "Hé, l'nouveau!&Tu veux essayer notre #Terrain d'Archerie Montée#^" + "Prouve que tu es un véritable cavalier en obtenant 1500 points pour gagner #[[2]]#!\x0B", {QM_RED, QM_GREEN})); hintTextTable[RHT_MALON_HINT_HOW_IS_EPONA] = HintText(CustomMessage("@! You should come back with Epona and try to beat my time on the #Obstacle Course#!^" "If you beat my time, I'll give you my favourite #cow# Elsie and her toy #[[1]]#!", + /*german*/ "@! Du solltest mit Epona zurückkommen und versuchen, meine Zeit im #Hindernisparcours# zu schlagen!^" + "Wenn du meine Zeit schlägst, gebe ich dir meine #Lieblingskuh# Elsie und ihr Spielzeug #[[1]]#!", + /*french*/ "@! Tu devrais revenir avec Epona et essayer de battre mon temps sur le #Parcours d'Obstacles#!^" + "Si tu bats mon temps, je te donnerai ma vache préférée, Elsie, ainsi que son jouet #[[1]]#!", {QM_RED, QM_BLUE, QM_GREEN})); hintTextTable[RHT_MALON_HINT_OBSTICLE_COURSE] = HintText(CustomMessage("How about trying the #Obstacle Course?# If you beat my time I'll let you keep my favourite #cow# Elsie and her toy #[[1]]#!^" "Challenge the #Obstacle Course?#&\x1B&#Let's go&No thanks#", + /*german*/ "Wie wärs mit dem #Hindernisparcours#? Wenn du meine Zeit schlägst, lasse ich dir meine #LieblingsKuh# Elsie und ihr Spielzeug #[[1]]#!^" + "Herausforderung: #Hindernisparcours?#&\x1B&#Los geht's!&nein, danke#", + /*french*/ "Que dirais-tu d'essayer le #Parcours d'Obstacles#? Si tu bats mon temps, je te donnerai ma vache préférée, Elsie, et son jouet #[[1]]#!^" + "Tenter le #Parcours d'Obstacles#?&\x1B&#Allons-y&Non merci#", {QM_RED, QM_BLUE, QM_GREEN, QM_RED, QM_GREEN})); hintTextTable[RHT_MALON_HINT_TURNING_EVIL] = HintText(CustomMessage("@? Is that you? ^If I ran the ranch, I'd build an #Obstacle Course#, and whoever gets the best time would win a #cow#!^" "Elsie loves sharing her #[[1]]# with new people, It'll be fun!^...But Ingo won't let me...", + /*german*/ "@? Bist du das? ^Wenn ich die Ranch leiten würde, würde ich einen #Hindernisparcours# bauen, und wer die beste Zeit schafft, gewinnt eine #Kuh#!^" + "Elsie liebt es, ihr #[[1]]# mit neuen Leuten zu teilen. Es wird Spaß machen^...Aber Ingo lässt mich nicht", + /*french*/ "@? C'est toi?^Si je dirigeais le ranch, je construirais un #Parcours d'Obstacles#, et celui qui obtiendrait le meilleur temps gagnerait une #vache#!^" + "Elsie adore partager son #[[1]]# avec de nouvelles personnes, ce serait amusant!^... Mais Ingo ne me laisse pas faire...", {QM_RED, QM_BLUE, QM_GREEN})); hintTextTable[RHT_MALON_HINT_INGO_TEMPTED] = HintText(CustomMessage("@! You should come back in the morning and try to beat my time on the #Obstacle Course#!^" "If you beat my time, I'll give you my favourite #cow# Elsie and her toy #[[1]]#!", + /*german*/ "@! Du solltest morgens zurückkommen und versuchen, meine Zeit im #Hindernisparcours# zu schlagen!^" + "Wenn du meine Zeit schlägst, gebe ich dir meine #Lieblingskuh# Elsie und ihr Spielzeug #[[1]]#!", + /*french*/ "@! Tu devrais revenir le matin et essayer de battre mon temps sur le #Parcours d'Obstacles#!^" + "Si tu bats mon temps, je te donnerai ma vache préférée, Elsie, ainsi que son jouet #[[1]]#!", {QM_RED, QM_BLUE, QM_GREEN})); hintTextTable[RHT_CHICKENS_HINT] = HintText(CustomMessage("You! Please!&Bring my Cucco's back to my pen!&I'll give you my #[[1]]#!", + /*german*/ "Du! Bitte!&Bring meine Hühner zurück in ihren&Stall! Ich gebe dir meine #[[1]]#!", + /*french*/ "Mes Cocottes sont perdues!&Dépose toutes les cocottes dans cet enclos!&Je te donnerai #[[1]]#!", {QM_GREEN})); hintTextTable[RHT_BIG_POES_HINT] = HintText(CustomMessage("You have #\x1E\x01 Poe Points#! Reach 1000 and you'll get a #[[1]]#!", + /*german*/ "Du hast #\x1E\x01 Nachtschwärmer-Punkte#! Erreiche 1000 und du bekommst ein #[[1]]#!", + /*french*/ "Tu as #\x1E\x01 Points d'Âme#! Atteins 1000 et tu recevras #[[1]]#!", {QM_YELLOW, QM_GREEN})); hintTextTable[RHT_BIGGORON_HINT] = HintText(CustomMessage("Arrrrrre you here to claim my finest #[[1]]#? Shoooooow me your #Claim Check#.", + /*german*/ "Arrrrr, bist du hier, um mein feinsten #[[1]]# zu beanspruchen? Zeig mir deinen #Zertifikat#!" + /*french*/ "Eeeeeees-tu ici pour réclaaaaaamer mon plus beau #[[1]]#? Moooooontre-moi ton #Certificat#.", {QM_GREEN, QM_RED})); hintTextTable[RHT_FROGS_HINT] = HintText(CustomMessage("Some frogs holding #[[1]]# are looking at you from underwater...", @@ -2323,6 +2368,8 @@ void StaticData::HintTable_Init() { {QM_GREEN})); hintTextTable[RHT_OOT_HINT] = HintText(CustomMessage("Bring the #Spiritual Stones# to the past so you can receive #[[1]]# from Zelda and learn #[[2]]#!", + /*german*/ "Bringe die #Spirituellen Steine# in die Vergangenheit, damit du #[[1]]# von Zelda erhältst und #[[2]]#! lernst", + /*french*/ "Amène les #Pierres Spirituelles# dans le passé et Zelda te donnera #[[1]]# et t'apprendra #[[2]]# !", {QM_BLUE, QM_GREEN, QM_GREEN})); hintTextTable[RHT_SKULLS_HINT] = HintText(CustomMessage("Yeaaarrgh! I'm cursed!!^Please save me by destroying #[[d]] Spiders of the Curse# and I will give you my #[[1]]#!", @@ -2332,6 +2379,10 @@ void StaticData::HintTable_Init() { hintTextTable[RHT_MASK_SHOP_HINT] = HintText(CustomMessage("Some young scrubs in the #Deku Theatre# love seeing Masks!^" "They'll give you #[[1]]# if you show them the #Skull Mask#, and #[[2]]# if you show them the #Mask of Truth#!", + /*german*/ "Ein paar junge Gören in der #Waldbühne# lieben es, Masken zu sehen!^" + "Sie geben dir #[[1]]#, wenn du ihnen die #Schädel-Maske# zeigst, und #[[2]]#, wenn du ihnen die #Maske des Wissens# zeigst!", + /*french*/ "De jeunes Pestes Mojo qui se trouvent dans le #Théâtre Mojo# adorent voir des masques !^" + "Elles te donneront #[[1]]# si tu leur montres le #Masque de Mort#, et #[[2]]# si tu leur montres le #Masque de Vérité#.", {QM_GREEN, QM_GREEN, QM_RED, QM_GREEN, QM_RED})); /*-------------------------- @@ -2339,33 +2390,34 @@ void StaticData::HintTable_Init() { ---------------------------*/ hintTextTable[RHT_GANON_JOKE01] = HintText(CustomMessage("Oh! It's @.&I was expecting someone called Sheik.&Do you know what happened to them?", - /*german*/ TODO_TRANSLATE, + /*german*/ "Oh! Da ist @.&Ich hatte eigentlich jemanden namens&Sheik erwartet. Weißt du, was mit&ihnen passiert ist?", /*french*/ "Ah, c'est @.&J'attendais un certain Sheik.&Tu sais ce qui lui est arrivé?")); // /*spanish*/¡Oh! Pero si es @.&Estaba esperando a alguien llamado Sheik. ¿Sabes qué puede haberle pasado? hintTextTable[RHT_GANON_JOKE02] = HintText(CustomMessage("I knew I shouldn't have put the key on the other side of my door.", - /*german*/ TODO_TRANSLATE, + /*german*/ "Ich wusste, dass ich den Schlüssel nicht auf der anderen Seite meiner Tür legen sollte.", /*french*/ "J'aurais dû garder la clé ici. Hélas...")); // /*spanish*/Sabía que no tendría que haber dejado la llave al otro lado de la puerta. hintTextTable[RHT_GANON_JOKE03] = HintText(CustomMessage("Looks like it's time for a round of tennis.", - /*german*/ TODO_TRANSLATE, + /*german*/ "Sieht so aus, als wäre es Zeit für eine Runde Tennis.", /*french*/ "C'est l'heure de jouer au tennis.")); // /*spanish*/Parece que es hora de una pachanga de tenis. hintTextTable[RHT_GANON_JOKE04] = HintText(CustomMessage("You'll never deflect my bolts of energy with your sword, then shoot me with those Light Arrows you happen to have.", - /*german*/ TODO_TRANSLATE, + /*german*/ "Du wirst meine Energiestrahlen nie mit deinem Schwert abwehren und mich dann mit den Lichtpfeilen beschießen, die du zufällig hast.", /*french*/ "Ne perds pas ton temps à frapper mes éclairs d'énergie avec ton épée et me tirer avec tes flèches de Lumière!")); // /*spanish*/Nunca reflejarás mis esferas de energía con tu espada, para después dispararme con las flechas de luz que tendrás. hintTextTable[RHT_GANON_JOKE05] = HintText(CustomMessage("Why did I leave my trident back in the desert?", - /*german*/ TODO_TRANSLATE, + /*german*/ "Warum habe ich meinen Dreizack wieder in der Wüste gelassen?", /*french*/ "Sale bêtise... Et j'ai oublié mon trident dans le désert!")); // /*spanish*/Santa Hylia... ¿Por qué me habré dejado el tridente en el desierto? hintTextTable[RHT_GANON_JOKE06] = HintText(CustomMessage("Zelda is probably going to do something stupid, like send you back to your own timeline.^So this is " "quite meaningless. Do you really want to save this moron?", - /*german*/ TODO_TRANSLATE, + /*german*/ "Zelda wird wahrscheinlich wieder etwas Dummes tun, wie dich zurück in deine eigene Timeline schicken " + "^Das ist also ziemlich bedeutungslos. Willst du wirklich diese Idiotin retten?", /*french*/ "Même si je suis vaincu... Zelda te renverra dans ton ère, et je reviendrai conquérir!^Telle est la " "prophécie d'Hyrule Historia!")); // /*spanish*/Seguro que Zelda trata de hacer alguna tontería, como enviarte de vuelta a tu línea temporal.^No tiene @@ -2373,30 +2425,31 @@ void StaticData::HintTable_Init() { hintTextTable[RHT_GANON_JOKE07] = HintText(CustomMessage("What about Zelda makes you think&she'd be a better ruler than I?^I saved Lon Lon Ranch,&fed the " "hungry,&and my castle floats.", - /*german*/ TODO_TRANSLATE, + /*german*/ "Was an Zelda lässt dich glauben&sie wäre eine bessere&Herrscherin als ich?^Ich rettete die Lon Lon Ranch,&fütterte die Hungrigen" + "&und mein Schloss schwebt.", /*french*/ "Zelda ne sera jamais un meilleur monarque que moi!^J'ai un château volant, mes sujets sont des belles " "amazones... et mes Moblins sont clairement plus puissants que jamais!")); // /*spanish*/¿Qué te hace pensar que Zelda gobierna mejor que yo?^Yo he salvado el Rancho Lon Lon,&he alimentado a // los hambrientos&y hasta hago que mi castillo flote. hintTextTable[RHT_GANON_JOKE08] = HintText(CustomMessage("I've learned this spell,&it's really neat,&I'll keep it later&for your treat!", - /*german*/ TODO_TRANSLATE, + /*german*/ "Ich hab' diesen Zauber gelernt,&er ist wirklich ziemlich fein,&ich heb' ihn auf für später,&und dann soll er dein Geschenk sein!", /*french*/ "Gamin, ton destin achève,&sous mon sort tu périras!&Cette partie ne fut pas brève,&et cette mort, tu subiras!")); // /*spanish*/Veamos ahora que harás,&la batalla ha de comenzar,&te enviaré de una vez al más allá,&¿listo para // afrontar la verdad? hintTextTable[RHT_GANON_JOKE09] = HintText(CustomMessage("Many tricks are up my sleeve,&to save yourself&you'd better leave!", - /*german*/ TODO_TRANSLATE, + /*german*/ "Viele Tricks hab' ich im Gepäck,&und um dich zu retten,&solltest du lieber weg.", /*french*/ "Sale petit garnement,&tu fais erreur!&C'est maintenant que marque&ta dernière heure!")); // /*spanish*/¿No osarás a mí enfrentarte?&Rimas aparte,&¡voy a matarte! hintTextTable[RHT_GANON_JOKE10] = HintText(CustomMessage("After what you did to Koholint Island, how can you call me the bad guy?", - /*german*/ TODO_TRANSLATE, + /*german*/ "Nach dem, was du auf Insel Cocolint getan hast, wie kannst du mich da den Bösewicht nennen?", /*french*/ "J'admire ce que tu as fait à l'Île Koholint... Toi et moi, nous devrions faire équipe!")); // /*spanish*/Después de lo que le hiciste a la Isla Koholint, ¿cómo te atreves a llamarme malvado? hintTextTable[RHT_GANON_JOKE11] = HintText(CustomMessage("Today, let's begin down&'The Hero is Defeated' timeline.", - /*german*/ TODO_TRANSLATE, + /*german*/ "Heute beginnen wir in der&‚Der Held ist besiegt‘-Timeline", /*french*/ "Si tu me vaincs, Hyrule sera englouti... mais si tu meurs, on aura A Link to the Past, le meilleur opus " "de la série!")); // /*spanish*/Hoy daremos lugar a la línea temporal del Héroe Derrotado.&¡Prepárate para el culmen de esta saga! @@ -2404,13 +2457,15 @@ void StaticData::HintTable_Init() { /*-------------------------- | Misc utilities | ---------------------------*/ - + hintTextTable[RHT_YOUR_POCKET] = HintText(CustomMessage("your pocket", /*german*/ "deine Tasche", /*french*/ "tes poches")); // /*spanish*/tu bolsillo - hintTextTable[RHT_ISOLATED_PLACE] = HintText(CustomMessage("an Isolated Place")); + hintTextTable[RHT_ISOLATED_PLACE] = HintText(CustomMessage("an Isolated Place", + /*german*/ "ein abgelegener Ort", + /*french*/ "un lieu isolé")); hintTextTable[RHT_DUNGEON_ORDINARY] = HintText(CustomMessage(" It's ordinary.", /*german*/ "&Sieht aus wie immer.", diff --git a/soh/soh/Enhancements/randomizer/3drando/hint_list/hint_list_exclude_dungeon.cpp b/soh/soh/Enhancements/randomizer/3drando/hint_list/hint_list_exclude_dungeon.cpp index 75072e72a..066bde6e9 100644 --- a/soh/soh/Enhancements/randomizer/3drando/hint_list/hint_list_exclude_dungeon.cpp +++ b/soh/soh/Enhancements/randomizer/3drando/hint_list/hint_list_exclude_dungeon.cpp @@ -126,7 +126,7 @@ void StaticData::HintTable_Init_Exclude_Dungeon() { hintTextTable[RHT_DEKU_TREE_GRASS] = HintText(CustomMessage("They say that some #grass in the Deku Tree# hides #[[1]]#.", /*german*/ "Man erzählt sich, daß etwas #Gras im Deku-Baum# #[[1]]# verstecke.", /*french*/ "Selon moi, de l'#herbe dans l'Arbre Mojo# cache #[[1]]#.", {QM_RED, QM_GREEN})); - + hintTextTable[RHT_CRATE_DEKU_TREE] = HintText(CustomMessage("They say that a #crate in the Deku Tree# contains #[[1]]#.", /*german*/ "Man erzählt sich, daß eine #Kiste im Deku-Baum# #[[1]]# enthielte.", /*french*/ "Selon moi, une #caisse dans l'Arbre Mojo# contient #[[1]]#.", {QM_RED, QM_GREEN})); @@ -475,7 +475,7 @@ void StaticData::HintTable_Init_Exclude_Dungeon() { hintTextTable[RHT_JABU_JABUS_BELLY_GRASS] = HintText(CustomMessage("They say that some #grass in Jabu Jabu's Belly# hides #[[1]]#.", /*german*/ "Man erzählt sich, daß etwas #Gras in Jabu-Jabus Bauch# #[[1]]# verstecke.", /*french*/ "Selon moi, de l'#herbe dans le Ventre de Jabu-Jabu# cache #[[1]]#.", {QM_RED, QM_GREEN})); - + hintTextTable[RHT_CRATE_JABU_JABU] = HintText(CustomMessage("They say that a #crate in Jabu Jabu's Belly# contains #[[1]]#.", /*german*/ "Man erzählt sich, daß eine #Kiste in Jabu-Jabus Bauch# #[[1]]# enthielte.", /*french*/ "Selon moi, une #caisse dans le Ventre de Jabu-Jabu# contient #[[1]]#.", {QM_RED, QM_GREEN})); diff --git a/soh/soh/Enhancements/randomizer/3drando/hint_list/hint_list_exclude_overworld.cpp b/soh/soh/Enhancements/randomizer/3drando/hint_list/hint_list_exclude_overworld.cpp index b47c68646..cf7921eac 100644 --- a/soh/soh/Enhancements/randomizer/3drando/hint_list/hint_list_exclude_overworld.cpp +++ b/soh/soh/Enhancements/randomizer/3drando/hint_list/hint_list_exclude_overworld.cpp @@ -319,7 +319,7 @@ void StaticData::HintTable_Init_Exclude_Overworld() { /*french*/ "Selon moi, #[[1]]#.", {QM_RED, QM_GREEN})); // /*spanish*/ Según dicen, #[[1]]#. - + hintTextTable[RHT_GC_ROLLING_GORON_AS_ADULT] = HintText(CustomMessage("They say that #reassuring a young Goron# is rewarded with #[[1]]#.", /*german*/ "Man erzählt sich, daß das #Beruhigen eines jungen Goronen# mit #[[1]]# belohnt würde.", /*french*/ "Selon moi, #rassurer un jeune Goron# donne #[[1]]#.", {QM_RED, QM_GREEN}), @@ -1936,7 +1936,7 @@ void StaticData::HintTable_Init_Exclude_Overworld() { hintTextTable[RHT_DMC_UPPER_GROTTO_GOSSIP_STONE_FAIRY_BIG] = HintText(CustomMessage("They say that #playing a stormy tune for an odd stone within the side of a crater# reveals #[[1]]#.", /*german*/ "Man erzählt sich, daß das #Spielen einer stürmischen Melodie für einen seltsamen Stein innerhalb der Seite eines Kraters# #[[1]]# enthülle.", /*french*/ "Selon moi, #jouer une mélodie orageuse pour une pierre étrange dans le côté d'un cratère# révèle [[1]].", {QM_RED, QM_GREEN})); - + hintTextTable[RHT_LH_ISLAND_SUN_FAIRY] = HintText(CustomMessage("They say that #summoning the sun on the lake's island# calls #[[1]]#.", /*german*/ "Man erzählt sich, daß das #Beschwören der Sonne auf der Insel eines Sees# #[[1]]# anrufe.", /*french*/ "Selon moi, #appeler le soleil sur l'île du lac # révèle #[[1]]#.", {QM_RED, QM_GREEN})); @@ -2012,7 +2012,7 @@ void StaticData::HintTable_Init_Exclude_Overworld() { hintTextTable[RHT_GROTTO_GRASS] = HintText(CustomMessage("They say that #cutting some grass in a grotto# reveals #[[1]]#.", /*german*/ "Man erzählt sich, daß das #Schneiden einiger Gräser in einer Grotte# #[[1]]# enthülle.", /*french*/ "Selon moi, de l'#herbe# cache #[[1]]#.", {QM_RED, QM_GREEN})); - + hintTextTable[RHT_CRATE_GERUDO_VALLEY] = HintText(CustomMessage("They say that a #crate in Gerudo Valley# contains #[[1]]#.", /*german*/ "Man erzählt sich, daß eine #Kiste im Gerudotal# #[[1]]# enthielte.", /*french*/ "Selon moi, une #caisse dans une vallée# a #[[1]]#.", {QM_RED, QM_GREEN})); diff --git a/soh/soh/Enhancements/randomizer/3drando/hint_list/hint_list_item.cpp b/soh/soh/Enhancements/randomizer/3drando/hint_list/hint_list_item.cpp index fa5155fef..5afa0f847 100644 --- a/soh/soh/Enhancements/randomizer/3drando/hint_list/hint_list_item.cpp +++ b/soh/soh/Enhancements/randomizer/3drando/hint_list/hint_list_item.cpp @@ -2097,7 +2097,7 @@ void StaticData::HintTable_Init_Item() { }, { CustomMessage("a master unlocker", /*german*/ "ein Meisterentsperrer", /*french*/ "un Kit de Déverrouillage") }); // /*spanish*/un desbloqueador maestro - + //RANDOTODO if these are ever used for anything other than name, they want abscure and ambiguous hints hintTextTable[RHT_QUIVER_INF] = HintText(CustomMessage("an infinite Quiver", /*german*/"ein unendlicher Köcher", /*french*/"un Carquois Infini")); @@ -2136,7 +2136,7 @@ void StaticData::HintTable_Init_Item() { hintTextTable[RHT_MYSTERIOUS_ITEM] = HintText(CustomMessage("mysterious item", /*german*/"mysteriöser Gegenstand", /*french*/"objet mystérieux")); // /*spanish*/algo misterioso - + hintTextTable[RHT_MYSTERIOUS_ITEM_CAPITAL] = HintText(CustomMessage("Mysterious Item", /*german*/"Mysteriöser Gegenstand", /*french*/"Objet Mystérieux")); // /*spanish*/Algo Misterioso diff --git a/soh/soh/Enhancements/randomizer/3drando/hints.hpp b/soh/soh/Enhancements/randomizer/3drando/hints.hpp index 9199c6c81..48566f47e 100644 --- a/soh/soh/Enhancements/randomizer/3drando/hints.hpp +++ b/soh/soh/Enhancements/randomizer/3drando/hints.hpp @@ -11,29 +11,30 @@ #include "../../custom-message/CustomMessageManager.h" struct HintDistributionSetting { - std::string name; - HintType type; - uint32_t weight; - uint8_t fixed; - uint8_t copies; - std::function filter; - uint8_t dungeonLimit; + std::string name; + HintType type; + uint32_t weight; + uint8_t fixed; + uint8_t copies; + std::function filter; + uint8_t dungeonLimit; - HintDistributionSetting(std::string _name, HintType _type, uint32_t _weight, uint8_t _fixed, uint8_t _copies, - std::function _filter, uint8_t _dungeonLimit = 40); + HintDistributionSetting(std::string _name, HintType _type, uint32_t _weight, uint8_t _fixed, uint8_t _copies, + std::function _filter, uint8_t _dungeonLimit = 40); }; struct HintSetting { - uint8_t alwaysCopies; - uint8_t trialCopies; - uint8_t junkWeight; - std::vector distTable; + uint8_t alwaysCopies; + uint8_t trialCopies; + uint8_t junkWeight; + std::vector distTable; }; class HintText { -public: + public: HintText() = default; - HintText(CustomMessage clearText_, std::vector ambiguousText_ = {}, std::vector obscureText_ = {}); + HintText(CustomMessage clearText_, std::vector ambiguousText_ = {}, + std::vector obscureText_ = {}); const CustomMessage& GetClear() const; const CustomMessage& GetObscure() const; const CustomMessage& GetObscure(uint8_t selection) const; @@ -46,27 +47,28 @@ public: bool operator==(const HintText& right) const; bool operator!=(const HintText& right) const; -private: + private: CustomMessage clearText; std::vector ambiguousText = {}; std::vector obscureText = {}; }; -struct StaticHintInfo{ - HintType type; - std::vector hintKeys; - RandomizerSettingKey setting; - std::variant condition; - std::vector targetChecks; - std::vector targetItems; - std::vector hintChecks; - bool yourPocket; - int num; +struct StaticHintInfo { + HintType type; + std::vector hintKeys; + RandomizerSettingKey setting; + std::variant condition; + std::vector targetChecks; + std::vector targetItems; + std::vector hintChecks; + bool yourPocket; + int num; - StaticHintInfo() = default; - StaticHintInfo(HintType _type, std::vector _hintKeys, RandomizerSettingKey _setting, std::variant _condition, - std::vector _targetChecks, std::vector _targetItems = {}, - std::vector _hintChecks = {}, bool _yourPocket = false, int _num = 0); + StaticHintInfo() = default; + StaticHintInfo(HintType _type, std::vector _hintKeys, RandomizerSettingKey _setting, + std::variant _condition, std::vector _targetChecks, + std::vector _targetItems = {}, std::vector _hintChecks = {}, + bool _yourPocket = false, int _num = 0); }; RandomizerHintTextKey GetRandomJunkHint(); diff --git a/soh/soh/Enhancements/randomizer/3drando/menu.hpp b/soh/soh/Enhancements/randomizer/3drando/menu.hpp index e0e6e4210..b40c97c2d 100644 --- a/soh/soh/Enhancements/randomizer/3drando/menu.hpp +++ b/soh/soh/Enhancements/randomizer/3drando/menu.hpp @@ -13,4 +13,5 @@ #define DELETE_PRESET 6 #define RESET_TO_DEFAULTS 8 -bool GenerateRandomizer(std::set excludedLocations, std::set enabledTricks, std::string seedInput); \ No newline at end of file +bool GenerateRandomizer(std::set excludedLocations, std::set enabledTricks, + std::string seedInput); \ No newline at end of file diff --git a/soh/soh/Enhancements/randomizer/3drando/playthrough.hpp b/soh/soh/Enhancements/randomizer/3drando/playthrough.hpp index 1dbbc7842..52ad6a3ee 100644 --- a/soh/soh/Enhancements/randomizer/3drando/playthrough.hpp +++ b/soh/soh/Enhancements/randomizer/3drando/playthrough.hpp @@ -4,6 +4,8 @@ #include "../context.h" namespace Playthrough { - int Playthrough_Init(uint32_t seed, std::set excludedLocations, std::set enabledTricks); - int Playthrough_Repeat(std::set excludedLocations, std::set enabledTricks, int count = 1); -} +int Playthrough_Init(uint32_t seed, std::set excludedLocations, + std::set enabledTricks); +int Playthrough_Repeat(std::set excludedLocations, std::set enabledTricks, + int count = 1); +} // namespace Playthrough diff --git a/soh/soh/Enhancements/randomizer/3drando/pool_functions.hpp b/soh/soh/Enhancements/randomizer/3drando/pool_functions.hpp index 5a83cda5b..5edcb0fda 100644 --- a/soh/soh/Enhancements/randomizer/3drando/pool_functions.hpp +++ b/soh/soh/Enhancements/randomizer/3drando/pool_functions.hpp @@ -5,38 +5,35 @@ #include #include -template -static void erase_if(std::vector& vector, Predicate pred) { - vector.erase(std::remove_if(begin(vector), end(vector), pred), end(vector)); +template static void erase_if(std::vector& vector, Predicate pred) { + vector.erase(std::remove_if(begin(vector), end(vector), pred), end(vector)); } template std::vector FilterFromPool(std::vector& vector, Predicate pred, bool eraseAfterFilter = false) { - std::vector filteredPool = {}; - std::copy_if(vector.begin(), vector.end(), std::back_inserter(filteredPool), pred); + std::vector filteredPool = {}; + std::copy_if(vector.begin(), vector.end(), std::back_inserter(filteredPool), pred); - if (eraseAfterFilter) { - erase_if(vector, pred); - } + if (eraseAfterFilter) { + erase_if(vector, pred); + } - return filteredPool; + return filteredPool; } template std::vector FilterAndEraseFromPool(std::vector& vector, Predicate pred) { - return FilterFromPool(vector, pred, true); + return FilterFromPool(vector, pred, true); } -template -void AddElementsToPool(std::vector& toPool, const FromPool& fromPool) { - toPool.insert(toPool.end(), std::cbegin(fromPool), std::cend(fromPool)); +template void AddElementsToPool(std::vector& toPool, const FromPool& fromPool) { + toPool.insert(toPool.end(), std::cbegin(fromPool), std::cend(fromPool)); } -template -bool ElementInContainer(T& element, const Container& container) { - return std::find(container.begin(), container.end(), element) != container.end(); +template bool ElementInContainer(T& element, const Container& container) { + return std::find(container.begin(), container.end(), element) != container.end(); } template bool IsAnyOf(First&& first, T&&... t) { - return ((first == t) || ...); + return ((first == t) || ...); } diff --git a/soh/soh/Enhancements/randomizer/3drando/rando_main.hpp b/soh/soh/Enhancements/randomizer/3drando/rando_main.hpp index 8ac22069b..b03dd8b88 100644 --- a/soh/soh/Enhancements/randomizer/3drando/rando_main.hpp +++ b/soh/soh/Enhancements/randomizer/3drando/rando_main.hpp @@ -3,5 +3,6 @@ #include namespace RandoMain { -void GenerateRando(std::set excludedLocations, std::set enabledTricks, std::string seedInput); +void GenerateRando(std::set excludedLocations, std::set enabledTricks, + std::string seedInput); } diff --git a/soh/soh/Enhancements/randomizer/3drando/random.hpp b/soh/soh/Enhancements/randomizer/3drando/random.hpp index 24ab78dcd..cc519d5f9 100644 --- a/soh/soh/Enhancements/randomizer/3drando/random.hpp +++ b/soh/soh/Enhancements/randomizer/3drando/random.hpp @@ -11,9 +11,8 @@ void Random_Init(uint32_t seed); uint32_t Random(int min, int max); double RandomDouble(); -//Get a random element from a vector or array -template -T RandomElement(std::vector& vector, bool erase) { +// Get a random element from a vector or array +template T RandomElement(std::vector& vector, bool erase) { const auto idx = Random(0, vector.size()); const T selected = vector[idx]; if (erase) { @@ -21,17 +20,14 @@ T RandomElement(std::vector& vector, bool erase) { } return selected; } -template -auto& RandomElement(Container& container) { +template auto& RandomElement(Container& container) { return container[Random(0, std::size(container))]; } -template -const auto& RandomElement(const Container& container) { +template const auto& RandomElement(const Container& container) { return container[Random(0, std::size(container))]; } -template -const T RandomElementFromSet(const std::set& set) { +template const T RandomElementFromSet(const std::set& set) { if (set.size() == 1) { return *set.begin(); } @@ -44,19 +40,15 @@ const T RandomElementFromSet(const std::set& set) { return *it; } -//Shuffle items within a vector or array -//RANDOTODO There's probably a more efficient way to do what this does. -template -void Shuffle(std::vector& vector) { - for (std::size_t i = 0; i + 1 < vector.size(); i++) - { +// Shuffle items within a vector or array +// RANDOTODO There's probably a more efficient way to do what this does. +template void Shuffle(std::vector& vector) { + for (std::size_t i = 0; i + 1 < vector.size(); i++) { std::swap(vector[i], vector[Random(i, vector.size())]); } } -template -void Shuffle(std::array& arr) { - for (std::size_t i = 0; i + 1 < arr.size(); i++) - { +template void Shuffle(std::array& arr) { + for (std::size_t i = 0; i + 1 < arr.size(); i++) { std::swap(arr[i], arr[Random(i, arr.size())]); } } diff --git a/soh/soh/Enhancements/randomizer/3drando/shops.hpp b/soh/soh/Enhancements/randomizer/3drando/shops.hpp index b1f09a9a7..81c4a4358 100644 --- a/soh/soh/Enhancements/randomizer/3drando/shops.hpp +++ b/soh/soh/Enhancements/randomizer/3drando/shops.hpp @@ -16,16 +16,10 @@ struct PriceSettingsStruct { RandomizerSettingKey tycoonWallet; RandomizerSettingKey affordable; - PriceSettingsStruct(RandomizerSettingKey _main, - RandomizerSettingKey _fixedPrice, - RandomizerSettingKey _range1, - RandomizerSettingKey _range2, - RandomizerSettingKey _noWallet, - RandomizerSettingKey _childWallet, - RandomizerSettingKey _adultWallet, - RandomizerSettingKey _giantWallet, - RandomizerSettingKey _tycoonWallet, - RandomizerSettingKey _affordable); + PriceSettingsStruct(RandomizerSettingKey _main, RandomizerSettingKey _fixedPrice, RandomizerSettingKey _range1, + RandomizerSettingKey _range2, RandomizerSettingKey _noWallet, RandomizerSettingKey _childWallet, + RandomizerSettingKey _adultWallet, RandomizerSettingKey _giantWallet, + RandomizerSettingKey _tycoonWallet, RandomizerSettingKey _affordable); }; extern void PlaceVanillaShopItems(); @@ -34,5 +28,3 @@ extern uint16_t GetRandomPrice(Rando::Location* loc, PriceSettingsStruct priceSe extern uint16_t GetCheapBalancedPrice(); extern int GetShopsanityReplaceAmount(); extern Text GetIceTrapName(uint8_t id); - - diff --git a/soh/soh/Enhancements/randomizer/3drando/text.hpp b/soh/soh/Enhancements/randomizer/3drando/text.hpp index 46c0196bb..1196ac928 100644 --- a/soh/soh/Enhancements/randomizer/3drando/text.hpp +++ b/soh/soh/Enhancements/randomizer/3drando/text.hpp @@ -7,22 +7,20 @@ #define SINGULAR 1 class Text { -public: + public: Text() = default; Text(std::string english_, std::string french_, std::string spanish_) - : english(std::move(english_)), - french(std::move(french_)), - spanish(std::move(spanish_)), - german(std::move("")) { - // german defaults to english text until a translation is provided. - german = english; - } + : english(std::move(english_)), french(std::move(french_)), spanish(std::move(spanish_)), + german(std::move("")) { + // german defaults to english text until a translation is provided. + german = english; + } Text(std::string english_, std::string french_, std::string spanish_, std::string german_) - : english(std::move(english_)), - french(std::move(french_)), - spanish(std::move(spanish_)), - german(std::move(german_)) {} - Text(std::string english_) : english(std::move(english_)), french(std::move("")), spanish(std::move("")), german(std::move("")) { + : english(std::move(english_)), french(std::move(french_)), spanish(std::move(spanish_)), + german(std::move(german_)) { + } + Text(std::string english_) + : english(std::move(english_)), french(std::move("")), spanish(std::move("")), german(std::move("")) { // default unprovided languages to english text french = spanish = german = english; } @@ -54,24 +52,24 @@ public: const std::string& GetForLanguage(uint8_t language) const { switch (language) { - case 0: //LANGUAGE_ENG: changed to resolve #include loops + case 0: // LANGUAGE_ENG: changed to resolve #include loops return GetEnglish(); - case 2: //LANGUAGE_FRA: + case 2: // LANGUAGE_FRA: return GetFrench(); - case 1: //LANGUAGE_GER: + case 1: // LANGUAGE_GER: return GetGerman(); default: return GetEnglish(); } } - Text operator+ (const Text& right) const { - return Text{english + right.GetEnglish(), french + right.GetFrench(), spanish + right.GetSpanish(), - german + right.GetGerman()}; + Text operator+(const Text& right) const { + return Text{ english + right.GetEnglish(), french + right.GetFrench(), spanish + right.GetSpanish(), + german + right.GetGerman() }; } - Text operator+ (const std::string& right) const { - return Text{english + right, french + right, spanish + right, german + right}; + Text operator+(const std::string& right) const { + return Text{ english + right, french + right, spanish + right, german + right }; } bool operator==(const Text& right) const { @@ -88,11 +86,11 @@ public: void Replace(std::string oldStr, std::string newStr) { - for (std::string* str : {&english, &french, &spanish, &german}) { + for (std::string* str : { &english, &french, &spanish, &german }) { size_t position = str->find(oldStr); while (position != std::string::npos) { - str->replace(position, oldStr.length(), newStr); - position = str->find(oldStr); + str->replace(position, oldStr.length(), newStr); + position = str->find(oldStr); } } } @@ -123,15 +121,15 @@ public: // Convert first char to upper case Text Capitalize(void) const { Text cap = *this + ""; - for (std::string* str : {&cap.english, &cap.french, &cap.spanish, &cap.german}) { + for (std::string* str : { &cap.english, &cap.french, &cap.spanish, &cap.german }) { (*str)[0] = std::toupper((*str)[0]); } return cap; } - //find the appropriate bars that separate singular from plural + // find the appropriate bars that separate singular from plural void SetForm(int form) { - for (std::string* str : {&english, &french, &spanish, &german}) { + for (std::string* str : { &english, &french, &spanish, &german }) { size_t firstBar = str->find('|'); if (firstBar != std::string::npos) { @@ -151,7 +149,7 @@ public: } } } - //remove the remaining bar + // remove the remaining bar this->Replace("|", ""); } diff --git a/soh/soh/Enhancements/randomizer/ShuffleCrates.cpp b/soh/soh/Enhancements/randomizer/ShuffleCrates.cpp index 3cb341980..aaac412f9 100644 --- a/soh/soh/Enhancements/randomizer/ShuffleCrates.cpp +++ b/soh/soh/Enhancements/randomizer/ShuffleCrates.cpp @@ -381,7 +381,7 @@ void Rando::StaticData::RegisterCrateLocations() { locationTable[RC_GV_CRATE_BRIDGE_3] = Location::NLCrate(RC_GV_CRATE_BRIDGE_3, RCQUEST_BOTH, RCAREA_GERUDO_VALLEY, SCENE_GERUDO_VALLEY, TWO_ACTOR_PARAMS(-860, -150), "Near Bridge Crate 3", RHT_CRATE_GERUDO_VALLEY, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GV_CRATE_BRIDGE_3)); locationTable[RC_GV_CRATE_BRIDGE_4] = Location::NLCrate(RC_GV_CRATE_BRIDGE_4, RCQUEST_BOTH, RCAREA_GERUDO_VALLEY, SCENE_GERUDO_VALLEY, TWO_ACTOR_PARAMS(-860, -90), "Near Bridge Crate 4", RHT_CRATE_GERUDO_VALLEY, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GV_CRATE_BRIDGE_4)); locationTable[RC_GF_ARCHERY_LEFT_END_CHILD_CRATE] = Location::NLCrate(RC_GF_ARCHERY_LEFT_END_CHILD_CRATE, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_GERUDOS_FORTRESS, TWO_ACTOR_PARAMS(3443, -4876), "Archery Left End Child Crate", RHT_CRATE_GERUDOS_FORTRESS, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_ARCHERY_LEFT_END_CHILD_CRATE)); - + // MQ Crates // Randomizer Check Randomizer Check Quest Area Scene ID Params Short Name Hint Text Key Vanilla Spoiler Collection Check locationTable[RC_DEKU_TREE_MQ_LOBBY_CRATE] = Location::Crate(RC_DEKU_TREE_MQ_LOBBY_CRATE, RCQUEST_MQ, RCAREA_DEKU_TREE, SCENE_DEKU_TREE, TWO_ACTOR_PARAMS(279, 333), "MQ Lobby Crate", RHT_CRATE_DEKU_TREE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DEKU_TREE_MQ_LOBBY_CRATE)); @@ -524,7 +524,7 @@ void Rando::StaticData::RegisterCrateLocations() { locationTable[RC_SPIRIT_TEMPLE_MQ_BIG_MIRROR_CRATE_3] = Location::Crate(RC_SPIRIT_TEMPLE_MQ_BIG_MIRROR_CRATE_3, RCQUEST_MQ, RCAREA_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(-150, -1186), "MQ Big Mirror Crate 3", RHT_CRATE_SPIRIT_TEMPLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_MQ_BIG_MIRROR_CRATE_3)); locationTable[RC_SPIRIT_TEMPLE_MQ_BIG_MIRROR_CRATE_4] = Location::Crate(RC_SPIRIT_TEMPLE_MQ_BIG_MIRROR_CRATE_4, RCQUEST_MQ, RCAREA_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(270, -1186), "MQ Big Mirror Crate 4", RHT_CRATE_SPIRIT_TEMPLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_MQ_BIG_MIRROR_CRATE_4)); locationTable[RC_GERUDO_TRAINING_GROUND_MQ_MAZE_CRATE] = Location::Crate(RC_GERUDO_TRAINING_GROUND_MQ_MAZE_CRATE, RCQUEST_MQ, RCAREA_GERUDO_TRAINING_GROUND, SCENE_GERUDO_TRAINING_GROUND, TWO_ACTOR_PARAMS(-59, -1598), "MQ Maze Crate", RHT_CRATE_GERUDO_TRAINING_GROUND, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GERUDO_TRAINING_GROUND_MQ_MAZE_CRATE)); - + // Small Crates // Randomizer Check Randomizer Check Quest Area Scene ID Params Short Name Hint Text Key Vanilla Spoiler Collection Check locationTable[RC_JABU_JABUS_BELLY_PLATFORM_ROOM_SMALL_CRATE_1] = Location::SmallCrate(RC_JABU_JABUS_BELLY_PLATFORM_ROOM_SMALL_CRATE_1, RCQUEST_VANILLA, RCAREA_JABU_JABUS_BELLY, SCENE_JABU_JABU, TWO_ACTOR_PARAMS(-141, -1945), "Platform Room Small Crate 1", RHT_CRATE_JABU_JABU, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_JABU_JABUS_BELLY_PLATFORM_ROOM_SMALL_CRATE_1)); diff --git a/soh/soh/Enhancements/randomizer/ShufflePots.cpp b/soh/soh/Enhancements/randomizer/ShufflePots.cpp index 9e6f50f42..20ef1922a 100644 --- a/soh/soh/Enhancements/randomizer/ShufflePots.cpp +++ b/soh/soh/Enhancements/randomizer/ShufflePots.cpp @@ -102,553 +102,553 @@ void Rando::StaticData::RegisterPotLocations() { registered = true; // clang-format off // Overworld Pots - // Randomizer Check Randomizer Check Quest Area Scene ID Params Short Name Hint Text Key Vanilla Spoiler Collection Check - locationTable[RC_KF_LINKS_HOUSE_POT] = Location::Pot(RC_KF_LINKS_HOUSE_POT, RCQUEST_BOTH, RCAREA_KOKIRI_FOREST, SCENE_LINKS_HOUSE, TWO_ACTOR_PARAMS(-118, 51), "Links House Pot", RHT_POT_KOKIRI_FOREST, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_KF_LINKS_HOUSE_POT)); - locationTable[RC_KF_TWINS_HOUSE_POT_2] = Location::Pot(RC_KF_TWINS_HOUSE_POT_2, RCQUEST_BOTH, RCAREA_KOKIRI_FOREST, SCENE_TWINS_HOUSE, TWO_ACTOR_PARAMS(35, 57), "Twins House Pot 2", RHT_POT_KOKIRI_FOREST, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_KF_TWINS_HOUSE_POT_2)); - locationTable[RC_KF_TWINS_HOUSE_POT_1] = Location::Pot(RC_KF_TWINS_HOUSE_POT_1, RCQUEST_BOTH, RCAREA_KOKIRI_FOREST, SCENE_TWINS_HOUSE, TWO_ACTOR_PARAMS(33, -55), "Twins House Pot 1", RHT_POT_KOKIRI_FOREST, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_KF_TWINS_HOUSE_POT_1)); - locationTable[RC_KF_BROTHERS_HOUSE_POT_1] = Location::Pot(RC_KF_BROTHERS_HOUSE_POT_1, RCQUEST_BOTH, RCAREA_KOKIRI_FOREST, SCENE_KNOW_IT_ALL_BROS_HOUSE, TWO_ACTOR_PARAMS(-134, -29), "Brothers House Pot 1", RHT_POT_KOKIRI_FOREST, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_KF_BROTHERS_HOUSE_POT_1)); - locationTable[RC_KF_BROTHERS_HOUSE_POT_2] = Location::Pot(RC_KF_BROTHERS_HOUSE_POT_2, RCQUEST_BOTH, RCAREA_KOKIRI_FOREST, SCENE_KNOW_IT_ALL_BROS_HOUSE, TWO_ACTOR_PARAMS(-68, 114), "Brothers House Pot 2", RHT_POT_KOKIRI_FOREST, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_KF_BROTHERS_HOUSE_POT_2)); - locationTable[RC_GF_BREAK_ROOM_POT_1] = Location::Pot(RC_GF_BREAK_ROOM_POT_1, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_THIEVES_HIDEOUT, TWO_ACTOR_PARAMS(1438, -3629), "Break Room Pot 1", RHT_POT_GERUDO_FORTRESS, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_BREAK_ROOM_POT_1)); - locationTable[RC_GF_BREAK_ROOM_POT_2] = Location::Pot(RC_GF_BREAK_ROOM_POT_2, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_THIEVES_HIDEOUT, TWO_ACTOR_PARAMS(1403, -3679), "Break Room Pot 2", RHT_POT_GERUDO_FORTRESS, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_BREAK_ROOM_POT_2)); - locationTable[RC_GF_KITCHEN_POT_1] = Location::Pot(RC_GF_KITCHEN_POT_1, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_THIEVES_HIDEOUT, TWO_ACTOR_PARAMS(1908, -789), "Kitchen Pot 1", RHT_POT_GERUDO_FORTRESS, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_KITCHEN_POT_1)); - locationTable[RC_GF_KITCHEN_POT_2] = Location::Pot(RC_GF_KITCHEN_POT_2, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_THIEVES_HIDEOUT, TWO_ACTOR_PARAMS(1951, -850), "Kitchen Pot 2", RHT_POT_GERUDO_FORTRESS, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_KITCHEN_POT_2)); - locationTable[RC_GF_NORTH_F1_CARPENTER_POT_1] = Location::Pot(RC_GF_NORTH_F1_CARPENTER_POT_1, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_THIEVES_HIDEOUT, TWO_ACTOR_PARAMS(-475, -2622), "North F1 Carpenter Pot 1", RHT_POT_GERUDO_FORTRESS, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_NORTH_F1_CARPENTER_POT_1)); - locationTable[RC_GF_NORTH_F1_CARPENTER_POT_2] = Location::Pot(RC_GF_NORTH_F1_CARPENTER_POT_2, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_THIEVES_HIDEOUT, TWO_ACTOR_PARAMS(-512, -2621), "North F1 Carpenter Pot 2", RHT_POT_GERUDO_FORTRESS, RG_RED_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_NORTH_F1_CARPENTER_POT_2)); - locationTable[RC_GF_NORTH_F1_CARPENTER_POT_3] = Location::Pot(RC_GF_NORTH_F1_CARPENTER_POT_3, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_THIEVES_HIDEOUT, TWO_ACTOR_PARAMS(-511, -2582), "North F1 Carpenter Pot 3", RHT_POT_GERUDO_FORTRESS, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_NORTH_F1_CARPENTER_POT_3)); - locationTable[RC_GF_NORTH_F2_CARPENTER_POT_1] = Location::Pot(RC_GF_NORTH_F2_CARPENTER_POT_1, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_THIEVES_HIDEOUT, TWO_ACTOR_PARAMS(67, -1975), "North F2 Carpenter Pot 1", RHT_POT_GERUDO_FORTRESS, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_NORTH_F2_CARPENTER_POT_1)); - locationTable[RC_GF_NORTH_F2_CARPENTER_POT_2] = Location::Pot(RC_GF_NORTH_F2_CARPENTER_POT_2, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_THIEVES_HIDEOUT, TWO_ACTOR_PARAMS(39, -1943), "North F2 Carpenter Pot 2", RHT_POT_GERUDO_FORTRESS, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_NORTH_F2_CARPENTER_POT_2)); - locationTable[RC_GF_SOUTH_F1_CARPENTER_POT_1] = Location::Pot(RC_GF_SOUTH_F1_CARPENTER_POT_1, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_THIEVES_HIDEOUT, TWO_ACTOR_PARAMS(691, 48), "South F1 Carpenter Pot 1", RHT_POT_GERUDO_FORTRESS, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_SOUTH_F1_CARPENTER_POT_1)); - locationTable[RC_GF_SOUTH_F1_CARPENTER_POT_2] = Location::Pot(RC_GF_SOUTH_F1_CARPENTER_POT_2, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_THIEVES_HIDEOUT, TWO_ACTOR_PARAMS(691, 16), "South F1 Carpenter Pot 2", RHT_POT_GERUDO_FORTRESS, RG_RED_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_SOUTH_F1_CARPENTER_POT_2)); - locationTable[RC_GF_SOUTH_F1_CARPENTER_POT_3] = Location::Pot(RC_GF_SOUTH_F1_CARPENTER_POT_3, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_THIEVES_HIDEOUT, TWO_ACTOR_PARAMS(661, 16), "South F1 Carpenter Pot 3", RHT_POT_GERUDO_FORTRESS, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_SOUTH_F1_CARPENTER_POT_3)); - locationTable[RC_GF_SOUTH_F1_CARPENTER_CELL_POT_1] = Location::Pot(RC_GF_SOUTH_F1_CARPENTER_CELL_POT_1, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_THIEVES_HIDEOUT, TWO_ACTOR_PARAMS(26, 524), "South F1 Carpenter Cell Pot 1", RHT_POT_GERUDO_FORTRESS, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_SOUTH_F1_CARPENTER_CELL_POT_1)); - locationTable[RC_GF_SOUTH_F1_CARPENTER_CELL_POT_2] = Location::Pot(RC_GF_SOUTH_F1_CARPENTER_CELL_POT_2, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_THIEVES_HIDEOUT, TWO_ACTOR_PARAMS(61, 549), "South F1 Carpenter Cell Pot 2", RHT_POT_GERUDO_FORTRESS, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_SOUTH_F1_CARPENTER_CELL_POT_2)); - locationTable[RC_GF_SOUTH_F1_CARPENTER_CELL_POT_3] = Location::Pot(RC_GF_SOUTH_F1_CARPENTER_CELL_POT_3, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_THIEVES_HIDEOUT, TWO_ACTOR_PARAMS(215, 549), "South F1 Carpenter Cell Pot 3", RHT_POT_GERUDO_FORTRESS, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_SOUTH_F1_CARPENTER_CELL_POT_3)); - locationTable[RC_GF_SOUTH_F1_CARPENTER_CELL_POT_4] = Location::Pot(RC_GF_SOUTH_F1_CARPENTER_CELL_POT_4, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_THIEVES_HIDEOUT, TWO_ACTOR_PARAMS(254, 529), "South F1 Carpenter Cell Pot 4", RHT_POT_GERUDO_FORTRESS, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_SOUTH_F1_CARPENTER_CELL_POT_4)); - locationTable[RC_WASTELAND_NEAR_GS_POT_1] = Location::Pot(RC_WASTELAND_NEAR_GS_POT_1, RCQUEST_BOTH, RCAREA_WASTELAND, SCENE_HAUNTED_WASTELAND, TWO_ACTOR_PARAMS(488, -2424), "Near GS Pot 1", RHT_POT_GERUDO_FORTRESS, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WASTELAND_NEAR_GS_POT_1)); - locationTable[RC_WASTELAND_NEAR_GS_POT_2] = Location::Pot(RC_WASTELAND_NEAR_GS_POT_2, RCQUEST_BOTH, RCAREA_WASTELAND, SCENE_HAUNTED_WASTELAND, TWO_ACTOR_PARAMS(485, -2463), "Near GS Pot 2", RHT_POT_GERUDO_FORTRESS, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WASTELAND_NEAR_GS_POT_2)); - locationTable[RC_WASTELAND_NEAR_GS_POT_3] = Location::Pot(RC_WASTELAND_NEAR_GS_POT_3, RCQUEST_BOTH, RCAREA_WASTELAND, SCENE_HAUNTED_WASTELAND, TWO_ACTOR_PARAMS(806, -2426), "Near GS Pot 3", RHT_POT_GERUDO_FORTRESS, RG_DEKU_NUTS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WASTELAND_NEAR_GS_POT_3)); - locationTable[RC_WASTELAND_NEAR_GS_POT_4] = Location::Pot(RC_WASTELAND_NEAR_GS_POT_4, RCQUEST_BOTH, RCAREA_WASTELAND, SCENE_HAUNTED_WASTELAND, TWO_ACTOR_PARAMS(801, -2460), "Near GS Pot 4", RHT_POT_GERUDO_FORTRESS, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WASTELAND_NEAR_GS_POT_4)); - locationTable[RC_MK_GUARD_HOUSE_CHILD_POT_1] = Location::Pot(RC_MK_GUARD_HOUSE_CHILD_POT_1, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(-60, 27), "Guard House Child Pot 1", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_CHILD_POT_1)); - locationTable[RC_MK_GUARD_HOUSE_CHILD_POT_2] = Location::Pot(RC_MK_GUARD_HOUSE_CHILD_POT_2, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(-89, 28), "Guard House Child Pot 2", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_CHILD_POT_2)); - locationTable[RC_MK_GUARD_HOUSE_CHILD_POT_3] = Location::Pot(RC_MK_GUARD_HOUSE_CHILD_POT_3, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(-110, 6), "Guard House Child Pot 3", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_CHILD_POT_3)); - locationTable[RC_MK_GUARD_HOUSE_CHILD_POT_4] = Location::Pot(RC_MK_GUARD_HOUSE_CHILD_POT_4, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(-58, -7), "Guard House Child Pot 4", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_CHILD_POT_4)); - locationTable[RC_MK_GUARD_HOUSE_CHILD_POT_5] = Location::Pot(RC_MK_GUARD_HOUSE_CHILD_POT_5, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(-80, -7), "Guard House Child Pot 5", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_CHILD_POT_5)); - locationTable[RC_MK_GUARD_HOUSE_CHILD_POT_6] = Location::Pot(RC_MK_GUARD_HOUSE_CHILD_POT_6, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(-65, -45), "Guard House Child Pot 6", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_CHILD_POT_6)); - locationTable[RC_MK_GUARD_HOUSE_CHILD_POT_7] = Location::Pot(RC_MK_GUARD_HOUSE_CHILD_POT_7, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(-85, -41), "Guard House Child Pot 7", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_CHILD_POT_7)); - locationTable[RC_MK_GUARD_HOUSE_CHILD_POT_8] = Location::Pot(RC_MK_GUARD_HOUSE_CHILD_POT_8, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(-107, -45), "Guard House Child Pot 8", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_CHILD_POT_8)); - locationTable[RC_MK_GUARD_HOUSE_CHILD_POT_9] = Location::Pot(RC_MK_GUARD_HOUSE_CHILD_POT_9, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(-66, -79), "Guard House Child Pot 9", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_CHILD_POT_9)); - locationTable[RC_MK_GUARD_HOUSE_CHILD_POT_10] = Location::Pot(RC_MK_GUARD_HOUSE_CHILD_POT_10, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(-88, -84), "Guard House Child Pot 10", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_CHILD_POT_10)); - locationTable[RC_MK_GUARD_HOUSE_CHILD_POT_11] = Location::Pot(RC_MK_GUARD_HOUSE_CHILD_POT_11, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(70, 215), "Guard House Child Pot 11", RHT_POT_MARKET, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_CHILD_POT_11)); - locationTable[RC_MK_GUARD_HOUSE_CHILD_POT_12] = Location::Pot(RC_MK_GUARD_HOUSE_CHILD_POT_12, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(68, 148), "Guard House Child Pot 12", RHT_POT_MARKET, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_CHILD_POT_12)); - locationTable[RC_MK_GUARD_HOUSE_CHILD_POT_13] = Location::Pot(RC_MK_GUARD_HOUSE_CHILD_POT_13, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(73, 117), "Guard House Child Pot 13", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_CHILD_POT_13)); - locationTable[RC_MK_GUARD_HOUSE_CHILD_POT_14] = Location::Pot(RC_MK_GUARD_HOUSE_CHILD_POT_14, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(40, 123), "Guard House Child Pot 14", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_CHILD_POT_14)); - locationTable[RC_MK_GUARD_HOUSE_CHILD_POT_15] = Location::Pot(RC_MK_GUARD_HOUSE_CHILD_POT_15, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(43, 89), "Guard House Child Pot 15", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_CHILD_POT_15)); - locationTable[RC_MK_GUARD_HOUSE_CHILD_POT_16] = Location::Pot(RC_MK_GUARD_HOUSE_CHILD_POT_16, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(68, 81), "Guard House Child Pot 16", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_CHILD_POT_16)); - locationTable[RC_MK_GUARD_HOUSE_CHILD_POT_17] = Location::Pot(RC_MK_GUARD_HOUSE_CHILD_POT_17, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(21, 73), "Guard House Child Pot 17", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_CHILD_POT_17)); - locationTable[RC_MK_GUARD_HOUSE_CHILD_POT_18] = Location::Pot(RC_MK_GUARD_HOUSE_CHILD_POT_18, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(64, 45), "Guard House Child Pot 18", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_CHILD_POT_18)); - locationTable[RC_MK_GUARD_HOUSE_CHILD_POT_19] = Location::Pot(RC_MK_GUARD_HOUSE_CHILD_POT_19, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(84, 31), "Guard House Child Pot 19", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_CHILD_POT_19)); - locationTable[RC_MK_GUARD_HOUSE_CHILD_POT_20] = Location::Pot(RC_MK_GUARD_HOUSE_CHILD_POT_20, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(42, 26), "Guard House Child Pot 20", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_CHILD_POT_20)); - locationTable[RC_MK_GUARD_HOUSE_CHILD_POT_21] = Location::Pot(RC_MK_GUARD_HOUSE_CHILD_POT_21, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(20, 34), "Guard House Child Pot 21", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_CHILD_POT_21)); - locationTable[RC_MK_GUARD_HOUSE_CHILD_POT_22] = Location::Pot(RC_MK_GUARD_HOUSE_CHILD_POT_22, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(89, -2), "Guard House Child Pot 22", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_CHILD_POT_22)); - locationTable[RC_MK_GUARD_HOUSE_CHILD_POT_23] = Location::Pot(RC_MK_GUARD_HOUSE_CHILD_POT_23, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(70, -12), "Guard House Child Pot 23", RHT_POT_MARKET, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_CHILD_POT_23)); - locationTable[RC_MK_GUARD_HOUSE_CHILD_POT_24] = Location::Pot(RC_MK_GUARD_HOUSE_CHILD_POT_24, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(42, -5), "Guard House Child Pot 24", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_CHILD_POT_24)); - locationTable[RC_MK_GUARD_HOUSE_CHILD_POT_25] = Location::Pot(RC_MK_GUARD_HOUSE_CHILD_POT_25, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(16, -6), "Guard House Child Pot 25", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_CHILD_POT_25)); - locationTable[RC_MK_GUARD_HOUSE_CHILD_POT_26] = Location::Pot(RC_MK_GUARD_HOUSE_CHILD_POT_26, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(68, -44), "Guard House Child Pot 26", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_CHILD_POT_26)); - locationTable[RC_MK_GUARD_HOUSE_CHILD_POT_27] = Location::Pot(RC_MK_GUARD_HOUSE_CHILD_POT_27, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(37, -40), "Guard House Child Pot 27", RHT_POT_MARKET, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_CHILD_POT_27)); - locationTable[RC_MK_GUARD_HOUSE_CHILD_POT_28] = Location::Pot(RC_MK_GUARD_HOUSE_CHILD_POT_28, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(70, -80), "Guard House Child Pot 28", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_CHILD_POT_28)); - locationTable[RC_MK_GUARD_HOUSE_CHILD_POT_29] = Location::Pot(RC_MK_GUARD_HOUSE_CHILD_POT_29, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(50, -74), "Guard House Child Pot 29", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_CHILD_POT_29)); - locationTable[RC_MK_GUARD_HOUSE_CHILD_POT_30] = Location::Pot(RC_MK_GUARD_HOUSE_CHILD_POT_30, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(28, -79), "Guard House Child Pot 30", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_CHILD_POT_30)); - locationTable[RC_MK_GUARD_HOUSE_CHILD_POT_31] = Location::Pot(RC_MK_GUARD_HOUSE_CHILD_POT_31, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(39, -111), "Guard House Child Pot 31", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_CHILD_POT_31)); - locationTable[RC_MK_GUARD_HOUSE_CHILD_POT_32] = Location::Pot(RC_MK_GUARD_HOUSE_CHILD_POT_32, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(169, 216), "Guard House Child Pot 32", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_CHILD_POT_32)); - locationTable[RC_MK_GUARD_HOUSE_CHILD_POT_33] = Location::Pot(RC_MK_GUARD_HOUSE_CHILD_POT_33, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(168, 166), "Guard House Child Pot 33", RHT_POT_MARKET, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_CHILD_POT_33)); - locationTable[RC_MK_GUARD_HOUSE_CHILD_POT_34] = Location::Pot(RC_MK_GUARD_HOUSE_CHILD_POT_34, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(170, 120), "Guard House Child Pot 34", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_CHILD_POT_34)); - locationTable[RC_MK_GUARD_HOUSE_CHILD_POT_35] = Location::Pot(RC_MK_GUARD_HOUSE_CHILD_POT_35, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(177, 85), "Guard House Child Pot 35", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_CHILD_POT_35)); - locationTable[RC_MK_GUARD_HOUSE_CHILD_POT_36] = Location::Pot(RC_MK_GUARD_HOUSE_CHILD_POT_36, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(155, 39), "Guard House Child Pot 36", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_CHILD_POT_36)); - locationTable[RC_MK_GUARD_HOUSE_CHILD_POT_37] = Location::Pot(RC_MK_GUARD_HOUSE_CHILD_POT_37, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(184, 13), "Guard House Child Pot 37", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_CHILD_POT_37)); - locationTable[RC_MK_GUARD_HOUSE_CHILD_POT_38] = Location::Pot(RC_MK_GUARD_HOUSE_CHILD_POT_38, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(156, -1), "Guard House Child Pot 38", RHT_POT_MARKET, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_CHILD_POT_38)); - locationTable[RC_MK_GUARD_HOUSE_CHILD_POT_39] = Location::Pot(RC_MK_GUARD_HOUSE_CHILD_POT_39, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(181, -33), "Guard House Child Pot 39", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_CHILD_POT_39)); - locationTable[RC_MK_GUARD_HOUSE_CHILD_POT_40] = Location::Pot(RC_MK_GUARD_HOUSE_CHILD_POT_40, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(156, -45), "Guard House Child Pot 40", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_CHILD_POT_40)); - locationTable[RC_MK_GUARD_HOUSE_CHILD_POT_41] = Location::Pot(RC_MK_GUARD_HOUSE_CHILD_POT_41, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(172, -82), "Guard House Child Pot 41", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_CHILD_POT_41)); - locationTable[RC_MK_GUARD_HOUSE_CHILD_POT_42] = Location::Pot(RC_MK_GUARD_HOUSE_CHILD_POT_42, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(170, -120), "Guard House Child Pot 42", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_CHILD_POT_42)); - locationTable[RC_MK_GUARD_HOUSE_CHILD_POT_43] = Location::Pot(RC_MK_GUARD_HOUSE_CHILD_POT_43, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(170, -166), "Guard House Child Pot 43", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_CHILD_POT_43)); - locationTable[RC_MK_GUARD_HOUSE_CHILD_POT_44] = Location::Pot(RC_MK_GUARD_HOUSE_CHILD_POT_44, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(170, -216), "Guard House Child Pot 44", RHT_POT_MARKET, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_CHILD_POT_44)); - locationTable[RC_MK_GUARD_HOUSE_ADULT_POT_1] = Location::Pot(RC_MK_GUARD_HOUSE_ADULT_POT_1, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(61, 204), "Guard House Adult Pot 1", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_ADULT_POT_1)); - locationTable[RC_MK_GUARD_HOUSE_ADULT_POT_2] = Location::Pot(RC_MK_GUARD_HOUSE_ADULT_POT_2, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(71, 132), "Guard House Adult Pot 2", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_ADULT_POT_2)); - locationTable[RC_MK_GUARD_HOUSE_ADULT_POT_3] = Location::Pot(RC_MK_GUARD_HOUSE_ADULT_POT_3, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(74, 23), "Guard House Adult Pot 3", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_ADULT_POT_3)); - locationTable[RC_MK_GUARD_HOUSE_ADULT_POT_4] = Location::Pot(RC_MK_GUARD_HOUSE_ADULT_POT_4, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(40, 4), "Guard House Adult Pot 4", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_ADULT_POT_4)); - locationTable[RC_MK_GUARD_HOUSE_ADULT_POT_5] = Location::Pot(RC_MK_GUARD_HOUSE_ADULT_POT_5, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(71, -22), "Guard House Adult Pot 5", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_ADULT_POT_5)); - locationTable[RC_MK_GUARD_HOUSE_ADULT_POT_6] = Location::Pot(RC_MK_GUARD_HOUSE_ADULT_POT_6, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(44, -151), "Guard House Adult Pot 6", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_ADULT_POT_6)); - locationTable[RC_MK_GUARD_HOUSE_ADULT_POT_7] = Location::Pot(RC_MK_GUARD_HOUSE_ADULT_POT_7, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(79, -182), "Guard House Adult Pot 7", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_ADULT_POT_7)); - locationTable[RC_MK_GUARD_HOUSE_ADULT_POT_8] = Location::Pot(RC_MK_GUARD_HOUSE_ADULT_POT_8, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(44, -198), "Guard House Adult Pot 8", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_ADULT_POT_8)); - locationTable[RC_MK_GUARD_HOUSE_ADULT_POT_9] = Location::Pot(RC_MK_GUARD_HOUSE_ADULT_POT_9, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(168, 210), "Guard House Adult Pot 9", RHT_POT_MARKET, RG_RED_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_ADULT_POT_9)); - locationTable[RC_MK_GUARD_HOUSE_ADULT_POT_10] = Location::Pot(RC_MK_GUARD_HOUSE_ADULT_POT_10, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(167, -122), "Guard House Adult Pot 10", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_ADULT_POT_10)); - locationTable[RC_MK_GUARD_HOUSE_ADULT_POT_11] = Location::Pot(RC_MK_GUARD_HOUSE_ADULT_POT_11, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(167, -210), "Guard House Adult Pot 11", RHT_POT_MARKET, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_ADULT_POT_11)); - locationTable[RC_MK_BACK_ALLEY_HOUSE_POT_1] = Location::Pot(RC_MK_BACK_ALLEY_HOUSE_POT_1, RCQUEST_BOTH, RCAREA_MARKET, SCENE_BACK_ALLEY_HOUSE, TWO_ACTOR_PARAMS(100, 45), "Back Alley House Pot 1", RHT_POT_MARKET, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_BACK_ALLEY_HOUSE_POT_1)); - locationTable[RC_MK_BACK_ALLEY_HOUSE_POT_2] = Location::Pot(RC_MK_BACK_ALLEY_HOUSE_POT_2, RCQUEST_BOTH, RCAREA_MARKET, SCENE_BACK_ALLEY_HOUSE, TWO_ACTOR_PARAMS(12, -180), "Back Alley House Pot 2", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_BACK_ALLEY_HOUSE_POT_2)); - locationTable[RC_MK_BACK_ALLEY_HOUSE_POT_3] = Location::Pot(RC_MK_BACK_ALLEY_HOUSE_POT_3, RCQUEST_BOTH, RCAREA_MARKET, SCENE_BACK_ALLEY_HOUSE, TWO_ACTOR_PARAMS(-54, -180), "Back Alley House Pot 3", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_BACK_ALLEY_HOUSE_POT_3)); - locationTable[RC_KAK_NEAR_POTION_SHOP_POT_1] = Location::Pot(RC_KAK_NEAR_POTION_SHOP_POT_1, RCQUEST_BOTH, RCAREA_KAKARIKO_VILLAGE, SCENE_KAKARIKO_VILLAGE, TWO_ACTOR_PARAMS(222, -377), "Near Potion Shop Pot 1", RHT_POT_KAKARIKO, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_KAK_NEAR_POTION_SHOP_POT_1)); - locationTable[RC_KAK_NEAR_POTION_SHOP_POT_2] = Location::Pot(RC_KAK_NEAR_POTION_SHOP_POT_2, RCQUEST_BOTH, RCAREA_KAKARIKO_VILLAGE, SCENE_KAKARIKO_VILLAGE, TWO_ACTOR_PARAMS(255, -366), "Near Potion Shop Pot 2", RHT_POT_KAKARIKO, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_KAK_NEAR_POTION_SHOP_POT_2)); - locationTable[RC_KAK_NEAR_POTION_SHOP_POT_3] = Location::Pot(RC_KAK_NEAR_POTION_SHOP_POT_3, RCQUEST_BOTH, RCAREA_KAKARIKO_VILLAGE, SCENE_KAKARIKO_VILLAGE, TWO_ACTOR_PARAMS(284, -356), "Near Potion Shop Pot 3", RHT_POT_KAKARIKO, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_KAK_NEAR_POTION_SHOP_POT_3)); - locationTable[RC_KAK_NEAR_IMPAS_HOUSE_POT_1] = Location::Pot(RC_KAK_NEAR_IMPAS_HOUSE_POT_1, RCQUEST_BOTH, RCAREA_KAKARIKO_VILLAGE, SCENE_KAKARIKO_VILLAGE, TWO_ACTOR_PARAMS(-384, 1568), "Near Impas House Pot 1", RHT_POT_KAKARIKO, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_KAK_NEAR_IMPAS_HOUSE_POT_1)); - locationTable[RC_KAK_NEAR_IMPAS_HOUSE_POT_2] = Location::Pot(RC_KAK_NEAR_IMPAS_HOUSE_POT_2, RCQUEST_BOTH, RCAREA_KAKARIKO_VILLAGE, SCENE_KAKARIKO_VILLAGE, TWO_ACTOR_PARAMS(-384, 1539), "Near Impas House Pot 2", RHT_POT_KAKARIKO, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_KAK_NEAR_IMPAS_HOUSE_POT_2)); - locationTable[RC_KAK_NEAR_IMPAS_HOUSE_POT_3] = Location::Pot(RC_KAK_NEAR_IMPAS_HOUSE_POT_3, RCQUEST_BOTH, RCAREA_KAKARIKO_VILLAGE, SCENE_KAKARIKO_VILLAGE, TWO_ACTOR_PARAMS(-384, 1510), "Near Impas House Pot 3", RHT_POT_KAKARIKO, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_KAK_NEAR_IMPAS_HOUSE_POT_3)); - locationTable[RC_KAK_NEAR_GUARDS_HOUSE_POT_1] = Location::Pot(RC_KAK_NEAR_GUARDS_HOUSE_POT_1, RCQUEST_BOTH, RCAREA_KAKARIKO_VILLAGE, SCENE_KAKARIKO_VILLAGE, TWO_ACTOR_PARAMS(-392, -870), "Near Guards House Pot 1", RHT_POT_KAKARIKO, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_KAK_NEAR_GUARDS_HOUSE_POT_1)); - locationTable[RC_KAK_NEAR_GUARDS_HOUSE_POT_2] = Location::Pot(RC_KAK_NEAR_GUARDS_HOUSE_POT_2, RCQUEST_BOTH, RCAREA_KAKARIKO_VILLAGE, SCENE_KAKARIKO_VILLAGE, TWO_ACTOR_PARAMS(-422, -883), "Near Guards House Pot 2", RHT_POT_KAKARIKO, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_KAK_NEAR_GUARDS_HOUSE_POT_2)); - locationTable[RC_KAK_NEAR_GUARDS_HOUSE_POT_3] = Location::Pot(RC_KAK_NEAR_GUARDS_HOUSE_POT_3, RCQUEST_BOTH, RCAREA_KAKARIKO_VILLAGE, SCENE_KAKARIKO_VILLAGE, TWO_ACTOR_PARAMS(-450, -895), "Near Guards House Pot 3", RHT_POT_KAKARIKO, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_KAK_NEAR_GUARDS_HOUSE_POT_3)); - locationTable[RC_KAK_NEAR_MEDICINE_SHOP_POT_1] = Location::Pot(RC_KAK_NEAR_MEDICINE_SHOP_POT_1, RCQUEST_BOTH, RCAREA_KAKARIKO_VILLAGE, SCENE_KAKARIKO_VILLAGE, TWO_ACTOR_PARAMS(781, 89), "Near Medicine Shop Pot 1", RHT_POT_KAKARIKO, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_KAK_NEAR_MEDICINE_SHOP_POT_1)); - locationTable[RC_KAK_NEAR_MEDICINE_SHOP_POT_2] = Location::Pot(RC_KAK_NEAR_MEDICINE_SHOP_POT_2, RCQUEST_BOTH, RCAREA_KAKARIKO_VILLAGE, SCENE_KAKARIKO_VILLAGE, TWO_ACTOR_PARAMS(815, 89), "Near Medicine Shop Pot 2", RHT_POT_KAKARIKO, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_KAK_NEAR_MEDICINE_SHOP_POT_2)); - locationTable[RC_GY_DAMPES_GRAVE_POT_1] = Location::Pot(RC_GY_DAMPES_GRAVE_POT_1, RCQUEST_BOTH, RCAREA_GRAVEYARD, SCENE_WINDMILL_AND_DAMPES_GRAVE, TWO_ACTOR_PARAMS(-319, -1542), "Dampes Grave Pot 1", RHT_POT_GRAVEYARD, RG_ARROWS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GY_DAMPES_GRAVE_POT_1)); - locationTable[RC_GY_DAMPES_GRAVE_POT_2] = Location::Pot(RC_GY_DAMPES_GRAVE_POT_2, RCQUEST_BOTH, RCAREA_GRAVEYARD, SCENE_WINDMILL_AND_DAMPES_GRAVE, TWO_ACTOR_PARAMS(-319, -1600), "Dampes Grave Pot 2", RHT_POT_GRAVEYARD, RG_BOMBS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GY_DAMPES_GRAVE_POT_2)); - locationTable[RC_GY_DAMPES_GRAVE_POT_3] = Location::Pot(RC_GY_DAMPES_GRAVE_POT_3, RCQUEST_BOTH, RCAREA_GRAVEYARD, SCENE_WINDMILL_AND_DAMPES_GRAVE, TWO_ACTOR_PARAMS(-364, -1571), "Dampes Grave Pot 3", RHT_POT_GRAVEYARD, RG_RED_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GY_DAMPES_GRAVE_POT_3)); - locationTable[RC_GY_DAMPES_GRAVE_POT_4] = Location::Pot(RC_GY_DAMPES_GRAVE_POT_4, RCQUEST_BOTH, RCAREA_GRAVEYARD, SCENE_WINDMILL_AND_DAMPES_GRAVE, TWO_ACTOR_PARAMS(198, -1540), "Dampes Grave Pot 4", RHT_POT_GRAVEYARD, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GY_DAMPES_GRAVE_POT_4)); - locationTable[RC_GY_DAMPES_GRAVE_POT_5] = Location::Pot(RC_GY_DAMPES_GRAVE_POT_5, RCQUEST_BOTH, RCAREA_GRAVEYARD, SCENE_WINDMILL_AND_DAMPES_GRAVE, TWO_ACTOR_PARAMS(198, -1608), "Dampes Grave Pot 5", RHT_POT_GRAVEYARD, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GY_DAMPES_GRAVE_POT_5)); - locationTable[RC_GY_DAMPES_GRAVE_POT_6] = Location::Pot(RC_GY_DAMPES_GRAVE_POT_6, RCQUEST_BOTH, RCAREA_GRAVEYARD, SCENE_WINDMILL_AND_DAMPES_GRAVE, TWO_ACTOR_PARAMS(239, -1577), "Dampes Grave Pot 6", RHT_POT_GRAVEYARD, RG_DEKU_NUTS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GY_DAMPES_GRAVE_POT_6)); - locationTable[RC_GC_LOWER_STAIRCASE_POT_1] = Location::Pot(RC_GC_LOWER_STAIRCASE_POT_1, RCQUEST_BOTH, RCAREA_GORON_CITY, SCENE_GORON_CITY, TWO_ACTOR_PARAMS(-189, 866), "Lower Staircase Pot 1", RHT_POT_GORON_CITY, RG_DEKU_STICK_1, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GC_LOWER_STAIRCASE_POT_1)); - locationTable[RC_GC_LOWER_STAIRCASE_POT_2] = Location::Pot(RC_GC_LOWER_STAIRCASE_POT_2, RCQUEST_BOTH, RCAREA_GORON_CITY, SCENE_GORON_CITY, TWO_ACTOR_PARAMS(-271, 825), "Lower Staircase Pot 2", RHT_POT_GORON_CITY, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GC_LOWER_STAIRCASE_POT_2)); - locationTable[RC_GC_UPPER_STAIRCASE_POT_1] = Location::Pot(RC_GC_UPPER_STAIRCASE_POT_1, RCQUEST_BOTH, RCAREA_GORON_CITY, SCENE_GORON_CITY, TWO_ACTOR_PARAMS(-1170, 60), "Upper Staircase Pot 1", RHT_POT_GORON_CITY, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GC_UPPER_STAIRCASE_POT_1)); - locationTable[RC_GC_UPPER_STAIRCASE_POT_2] = Location::Pot(RC_GC_UPPER_STAIRCASE_POT_2, RCQUEST_BOTH, RCAREA_GORON_CITY, SCENE_GORON_CITY, TWO_ACTOR_PARAMS(-1185, 95), "Upper Staircase Pot 2", RHT_POT_GORON_CITY, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GC_UPPER_STAIRCASE_POT_2)); - locationTable[RC_GC_UPPER_STAIRCASE_POT_3] = Location::Pot(RC_GC_UPPER_STAIRCASE_POT_3, RCQUEST_BOTH, RCAREA_GORON_CITY, SCENE_GORON_CITY, TWO_ACTOR_PARAMS(-1200, 63), "Upper Staircase Pot 3", RHT_POT_GORON_CITY, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GC_UPPER_STAIRCASE_POT_3)); - locationTable[RC_GC_MEDIGORON_POT_1] = Location::Pot(RC_GC_MEDIGORON_POT_1, RCQUEST_BOTH, RCAREA_GORON_CITY, SCENE_GORON_CITY, TWO_ACTOR_PARAMS(-694, 1196), "Medigoron Pot 1", RHT_POT_GORON_CITY, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GC_MEDIGORON_POT_1)); - locationTable[RC_GC_DARUNIA_POT_1] = Location::Pot(RC_GC_DARUNIA_POT_1, RCQUEST_BOTH, RCAREA_GORON_CITY, SCENE_GORON_CITY, TWO_ACTOR_PARAMS(262, -1210), "Darunia Pot 1", RHT_POT_GORON_CITY, RG_ARROWS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GC_DARUNIA_POT_1)); - locationTable[RC_GC_DARUNIA_POT_2] = Location::Pot(RC_GC_DARUNIA_POT_2, RCQUEST_BOTH, RCAREA_GORON_CITY, SCENE_GORON_CITY, TWO_ACTOR_PARAMS(261, -1254), "Darunia Pot 2", RHT_POT_GORON_CITY, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GC_DARUNIA_POT_2)); - locationTable[RC_GC_DARUNIA_POT_3] = Location::Pot(RC_GC_DARUNIA_POT_3, RCQUEST_BOTH, RCAREA_GORON_CITY, SCENE_GORON_CITY, TWO_ACTOR_PARAMS(262, -1386), "Darunia Pot 3", RHT_POT_GORON_CITY, RG_RED_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GC_DARUNIA_POT_3)); - locationTable[RC_DMC_NEAR_GC_POT_2] = Location::Pot(RC_DMC_NEAR_GC_POT_2, RCQUEST_BOTH, RCAREA_DEATH_MOUNTAIN_CRATER, SCENE_DEATH_MOUNTAIN_CRATER, TWO_ACTOR_PARAMS(-1546, 141), "Near GC Pot 2", RHT_POT_DEATH_MOUNTAIN_CRATER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DMC_NEAR_GC_POT_2)); - locationTable[RC_DMC_NEAR_GC_POT_3] = Location::Pot(RC_DMC_NEAR_GC_POT_3, RCQUEST_BOTH, RCAREA_DEATH_MOUNTAIN_CRATER, SCENE_DEATH_MOUNTAIN_CRATER, TWO_ACTOR_PARAMS(-1641, -127), "Near GC Pot 3", RHT_POT_DEATH_MOUNTAIN_CRATER, RG_ARROWS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DMC_NEAR_GC_POT_3)); - locationTable[RC_DMC_NEAR_GC_POT_1] = Location::Pot(RC_DMC_NEAR_GC_POT_1, RCQUEST_BOTH, RCAREA_DEATH_MOUNTAIN_CRATER, SCENE_DEATH_MOUNTAIN_CRATER, TWO_ACTOR_PARAMS(-1590, 132), "Near GC Pot 1", RHT_POT_DEATH_MOUNTAIN_CRATER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DMC_NEAR_GC_POT_1)); - locationTable[RC_DMC_NEAR_GC_POT_4] = Location::Pot(RC_DMC_NEAR_GC_POT_4, RCQUEST_BOTH, RCAREA_DEATH_MOUNTAIN_CRATER, SCENE_DEATH_MOUNTAIN_CRATER, TWO_ACTOR_PARAMS(-1606, -166), "Near GC Pot 4", RHT_POT_DEATH_MOUNTAIN_CRATER, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DMC_NEAR_GC_POT_4)); - locationTable[RC_ZD_NEAR_SHOP_POT_1] = Location::Pot(RC_ZD_NEAR_SHOP_POT_1, RCQUEST_BOTH, RCAREA_ZORAS_DOMAIN, SCENE_ZORAS_DOMAIN, TWO_ACTOR_PARAMS(676, 377), "Near Shop Pot 1", RHT_POT_ZORAS_DOMAIN, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ZD_NEAR_SHOP_POT_1)); - locationTable[RC_ZD_NEAR_SHOP_POT_2] = Location::Pot(RC_ZD_NEAR_SHOP_POT_2, RCQUEST_BOTH, RCAREA_ZORAS_DOMAIN, SCENE_ZORAS_DOMAIN, TWO_ACTOR_PARAMS(614, 419), "Near Shop Pot 2", RHT_POT_ZORAS_DOMAIN, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ZD_NEAR_SHOP_POT_2)); - locationTable[RC_ZD_NEAR_SHOP_POT_3] = Location::Pot(RC_ZD_NEAR_SHOP_POT_3, RCQUEST_BOTH, RCAREA_ZORAS_DOMAIN, SCENE_ZORAS_DOMAIN, TWO_ACTOR_PARAMS(289, 415), "Near Shop Pot 3", RHT_POT_ZORAS_DOMAIN, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ZD_NEAR_SHOP_POT_3)); - locationTable[RC_ZD_NEAR_SHOP_POT_4] = Location::Pot(RC_ZD_NEAR_SHOP_POT_4, RCQUEST_BOTH, RCAREA_ZORAS_DOMAIN, SCENE_ZORAS_DOMAIN, TWO_ACTOR_PARAMS(289, 289), "Near Shop Pot 4", RHT_POT_ZORAS_DOMAIN, RG_DEKU_NUTS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ZD_NEAR_SHOP_POT_4)); - locationTable[RC_ZD_NEAR_SHOP_POT_5] = Location::Pot(RC_ZD_NEAR_SHOP_POT_5, RCQUEST_BOTH, RCAREA_ZORAS_DOMAIN, SCENE_ZORAS_DOMAIN, TWO_ACTOR_PARAMS(220, 384), "Near Shop Pot 5", RHT_POT_ZORAS_DOMAIN, RG_DEKU_STICK_1, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ZD_NEAR_SHOP_POT_5)); - locationTable[RC_ZF_HIDDEN_CAVE_POT_1] = Location::Pot(RC_ZF_HIDDEN_CAVE_POT_1, RCQUEST_BOTH, RCAREA_ZORAS_FOUNTAIN, SCENE_ZORAS_FOUNTAIN, TWO_ACTOR_PARAMS(385, 2587), "Hidden Cave Pot 1", RHT_POT_ZORAS_FOUNTAIN, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ZF_HIDDEN_CAVE_POT_1)); - locationTable[RC_ZF_HIDDEN_CAVE_POT_2] = Location::Pot(RC_ZF_HIDDEN_CAVE_POT_2, RCQUEST_BOTH, RCAREA_ZORAS_FOUNTAIN, SCENE_ZORAS_FOUNTAIN, TWO_ACTOR_PARAMS(418, 2609), "Hidden Cave Pot 2", RHT_POT_ZORAS_FOUNTAIN, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ZF_HIDDEN_CAVE_POT_2)); - locationTable[RC_ZF_HIDDEN_CAVE_POT_3] = Location::Pot(RC_ZF_HIDDEN_CAVE_POT_3, RCQUEST_BOTH, RCAREA_ZORAS_FOUNTAIN, SCENE_ZORAS_FOUNTAIN, TWO_ACTOR_PARAMS(430, 2568), "Hidden Cave Pot 3", RHT_POT_ZORAS_FOUNTAIN, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ZF_HIDDEN_CAVE_POT_3)); - locationTable[RC_ZF_NEAR_JABU_POT_1] = Location::Pot(RC_ZF_NEAR_JABU_POT_1, RCQUEST_BOTH, RCAREA_ZORAS_FOUNTAIN, SCENE_ZORAS_FOUNTAIN, TWO_ACTOR_PARAMS(-1630, 170), "Near Jabu Pot 1", RHT_POT_ZORAS_FOUNTAIN, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ZF_NEAR_JABU_POT_1)); - locationTable[RC_ZF_NEAR_JABU_POT_2] = Location::Pot(RC_ZF_NEAR_JABU_POT_2, RCQUEST_BOTH, RCAREA_ZORAS_FOUNTAIN, SCENE_ZORAS_FOUNTAIN, TWO_ACTOR_PARAMS(-1550, 170), "Near Jabu Pot 2", RHT_POT_ZORAS_FOUNTAIN, RG_DEKU_SEEDS_30, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ZF_NEAR_JABU_POT_2)); - locationTable[RC_ZF_NEAR_JABU_POT_3] = Location::Pot(RC_ZF_NEAR_JABU_POT_3, RCQUEST_BOTH, RCAREA_ZORAS_FOUNTAIN, SCENE_ZORAS_FOUNTAIN, TWO_ACTOR_PARAMS(-1630, -260), "Near Jabu Pot 3", RHT_POT_ZORAS_FOUNTAIN, RG_DEKU_SEEDS_30, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ZF_NEAR_JABU_POT_3)); - locationTable[RC_ZF_NEAR_JABU_POT_4] = Location::Pot(RC_ZF_NEAR_JABU_POT_4, RCQUEST_BOTH, RCAREA_ZORAS_FOUNTAIN, SCENE_ZORAS_FOUNTAIN, TWO_ACTOR_PARAMS(-1550, -260), "Near Jabu Pot 4", RHT_POT_ZORAS_FOUNTAIN, RG_DEKU_SEEDS_30, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ZF_NEAR_JABU_POT_4)); - locationTable[RC_LLR_FRONT_POT_1] = Location::Pot(RC_LLR_FRONT_POT_1, RCQUEST_BOTH, RCAREA_LON_LON_RANCH, SCENE_LON_LON_RANCH, TWO_ACTOR_PARAMS(667, -3218), "Front Pot 1", RHT_POT_LON_LON_RANCH, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_LLR_FRONT_POT_1)); - locationTable[RC_LLR_FRONT_POT_2] = Location::Pot(RC_LLR_FRONT_POT_2, RCQUEST_BOTH, RCAREA_LON_LON_RANCH, SCENE_LON_LON_RANCH, TWO_ACTOR_PARAMS(667, -3186), "Front Pot 2", RHT_POT_LON_LON_RANCH, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_LLR_FRONT_POT_2)); - locationTable[RC_LLR_FRONT_POT_3] = Location::Pot(RC_LLR_FRONT_POT_3, RCQUEST_BOTH, RCAREA_LON_LON_RANCH, SCENE_LON_LON_RANCH, TWO_ACTOR_PARAMS(667, -3154), "Front Pot 3", RHT_POT_LON_LON_RANCH, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_LLR_FRONT_POT_3)); - locationTable[RC_LLR_FRONT_POT_4] = Location::Pot(RC_LLR_FRONT_POT_4, RCQUEST_BOTH, RCAREA_LON_LON_RANCH, SCENE_LON_LON_RANCH, TWO_ACTOR_PARAMS(667, -3122), "Front Pot 4", RHT_POT_LON_LON_RANCH, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_LLR_FRONT_POT_4)); - locationTable[RC_LLR_RAIN_SHED_POT_1] = Location::Pot(RC_LLR_RAIN_SHED_POT_1, RCQUEST_BOTH, RCAREA_LON_LON_RANCH, SCENE_LON_LON_RANCH, TWO_ACTOR_PARAMS(852, 172), "Rain Shed Pot 1", RHT_POT_LON_LON_RANCH, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_LLR_RAIN_SHED_POT_1)); - locationTable[RC_LLR_RAIN_SHED_POT_2] = Location::Pot(RC_LLR_RAIN_SHED_POT_2, RCQUEST_BOTH, RCAREA_LON_LON_RANCH, SCENE_LON_LON_RANCH, TWO_ACTOR_PARAMS(840, 212), "Rain Shed Pot 2", RHT_POT_LON_LON_RANCH, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_LLR_RAIN_SHED_POT_2)); - locationTable[RC_LLR_RAIN_SHED_POT_3] = Location::Pot(RC_LLR_RAIN_SHED_POT_3, RCQUEST_BOTH, RCAREA_LON_LON_RANCH, SCENE_LON_LON_RANCH, TWO_ACTOR_PARAMS(872, 219), "Rain Shed Pot 3", RHT_POT_LON_LON_RANCH, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_LLR_RAIN_SHED_POT_3)); - locationTable[RC_LLR_TALONS_HOUSE_POT_1] = Location::Pot(RC_LLR_TALONS_HOUSE_POT_1, RCQUEST_BOTH, RCAREA_LON_LON_RANCH, SCENE_LON_LON_BUILDINGS, TWO_ACTOR_PARAMS(1255, 47), "Talons House Pot 1", RHT_POT_LON_LON_RANCH, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_LLR_TALONS_HOUSE_POT_1)); - locationTable[RC_LLR_TALONS_HOUSE_POT_2] = Location::Pot(RC_LLR_TALONS_HOUSE_POT_2, RCQUEST_BOTH, RCAREA_LON_LON_RANCH, SCENE_LON_LON_BUILDINGS, TWO_ACTOR_PARAMS(1256, -51), "Talons House Pot 2", RHT_POT_LON_LON_RANCH, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_LLR_TALONS_HOUSE_POT_2)); - locationTable[RC_LLR_TALONS_HOUSE_POT_3] = Location::Pot(RC_LLR_TALONS_HOUSE_POT_3, RCQUEST_BOTH, RCAREA_LON_LON_RANCH, SCENE_LON_LON_BUILDINGS, TWO_ACTOR_PARAMS(1256, -78), "Talons House Pot 3", RHT_POT_LON_LON_RANCH, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_LLR_TALONS_HOUSE_POT_3)); - locationTable[RC_HF_COW_GROTTO_POT_1] = Location::Pot(RC_HF_COW_GROTTO_POT_1, RCQUEST_BOTH, RCAREA_HYRULE_FIELD, SCENE_GROTTOS, TWO_ACTOR_PARAMS(3410, -223), "Cow Grotto Pot 1", RHT_POT_HYRULE_FIELD, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_HF_COW_GROTTO_POT_1)); - locationTable[RC_HF_COW_GROTTO_POT_2] = Location::Pot(RC_HF_COW_GROTTO_POT_2, RCQUEST_BOTH, RCAREA_HYRULE_FIELD, SCENE_GROTTOS, TWO_ACTOR_PARAMS(3390, -258), "Cow Grotto Pot 2", RHT_POT_HYRULE_FIELD, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_HF_COW_GROTTO_POT_2)); - locationTable[RC_HC_STORMS_GROTTO_POT_1] = Location::Pot(RC_HC_STORMS_GROTTO_POT_1, RCQUEST_BOTH, RCAREA_HYRULE_CASTLE, SCENE_GROTTOS, TWO_ACTOR_PARAMS(1843, 1014), "Storms Grotto Pot 1", RHT_POT_HYRULE_CASTLE, RG_RED_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_HC_STORMS_GROTTO_POT_1)); - locationTable[RC_HC_STORMS_GROTTO_POT_2] = Location::Pot(RC_HC_STORMS_GROTTO_POT_2, RCQUEST_BOTH, RCAREA_HYRULE_CASTLE, SCENE_GROTTOS, TWO_ACTOR_PARAMS(1769, 954), "Storms Grotto Pot 2", RHT_POT_HYRULE_CASTLE, RG_ARROWS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_HC_STORMS_GROTTO_POT_2)); - locationTable[RC_HC_STORMS_GROTTO_POT_3] = Location::Pot(RC_HC_STORMS_GROTTO_POT_3, RCQUEST_BOTH, RCAREA_HYRULE_CASTLE, SCENE_GROTTOS, TWO_ACTOR_PARAMS(1857, 897), "Storms Grotto Pot 3", RHT_POT_HYRULE_CASTLE, RG_BOMBS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_HC_STORMS_GROTTO_POT_3)); - locationTable[RC_HC_STORMS_GROTTO_POT_4] = Location::Pot(RC_HC_STORMS_GROTTO_POT_4, RCQUEST_BOTH, RCAREA_HYRULE_CASTLE, SCENE_GROTTOS, TWO_ACTOR_PARAMS(1764, 847), "Storms Grotto Pot 4", RHT_POT_HYRULE_CASTLE, RG_DEKU_NUTS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_HC_STORMS_GROTTO_POT_4)); - + // Randomizer Check Randomizer Check Quest Area Scene ID Params Short Name Hint Text Key Vanilla Spoiler Collection Check + locationTable[RC_KF_LINKS_HOUSE_POT] = Location::Pot(RC_KF_LINKS_HOUSE_POT, RCQUEST_BOTH, RCAREA_KOKIRI_FOREST, SCENE_LINKS_HOUSE, TWO_ACTOR_PARAMS(-118, 51), "Links House Pot", RHT_POT_KOKIRI_FOREST, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_KF_LINKS_HOUSE_POT)); + locationTable[RC_KF_TWINS_HOUSE_POT_2] = Location::Pot(RC_KF_TWINS_HOUSE_POT_2, RCQUEST_BOTH, RCAREA_KOKIRI_FOREST, SCENE_TWINS_HOUSE, TWO_ACTOR_PARAMS(35, 57), "Twins House Pot 2", RHT_POT_KOKIRI_FOREST, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_KF_TWINS_HOUSE_POT_2)); + locationTable[RC_KF_TWINS_HOUSE_POT_1] = Location::Pot(RC_KF_TWINS_HOUSE_POT_1, RCQUEST_BOTH, RCAREA_KOKIRI_FOREST, SCENE_TWINS_HOUSE, TWO_ACTOR_PARAMS(33, -55), "Twins House Pot 1", RHT_POT_KOKIRI_FOREST, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_KF_TWINS_HOUSE_POT_1)); + locationTable[RC_KF_BROTHERS_HOUSE_POT_1] = Location::Pot(RC_KF_BROTHERS_HOUSE_POT_1, RCQUEST_BOTH, RCAREA_KOKIRI_FOREST, SCENE_KNOW_IT_ALL_BROS_HOUSE, TWO_ACTOR_PARAMS(-134, -29), "Brothers House Pot 1", RHT_POT_KOKIRI_FOREST, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_KF_BROTHERS_HOUSE_POT_1)); + locationTable[RC_KF_BROTHERS_HOUSE_POT_2] = Location::Pot(RC_KF_BROTHERS_HOUSE_POT_2, RCQUEST_BOTH, RCAREA_KOKIRI_FOREST, SCENE_KNOW_IT_ALL_BROS_HOUSE, TWO_ACTOR_PARAMS(-68, 114), "Brothers House Pot 2", RHT_POT_KOKIRI_FOREST, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_KF_BROTHERS_HOUSE_POT_2)); + locationTable[RC_GF_BREAK_ROOM_POT_1] = Location::Pot(RC_GF_BREAK_ROOM_POT_1, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_THIEVES_HIDEOUT, TWO_ACTOR_PARAMS(1438, -3629), "Break Room Pot 1", RHT_POT_GERUDO_FORTRESS, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_BREAK_ROOM_POT_1)); + locationTable[RC_GF_BREAK_ROOM_POT_2] = Location::Pot(RC_GF_BREAK_ROOM_POT_2, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_THIEVES_HIDEOUT, TWO_ACTOR_PARAMS(1403, -3679), "Break Room Pot 2", RHT_POT_GERUDO_FORTRESS, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_BREAK_ROOM_POT_2)); + locationTable[RC_GF_KITCHEN_POT_1] = Location::Pot(RC_GF_KITCHEN_POT_1, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_THIEVES_HIDEOUT, TWO_ACTOR_PARAMS(1908, -789), "Kitchen Pot 1", RHT_POT_GERUDO_FORTRESS, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_KITCHEN_POT_1)); + locationTable[RC_GF_KITCHEN_POT_2] = Location::Pot(RC_GF_KITCHEN_POT_2, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_THIEVES_HIDEOUT, TWO_ACTOR_PARAMS(1951, -850), "Kitchen Pot 2", RHT_POT_GERUDO_FORTRESS, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_KITCHEN_POT_2)); + locationTable[RC_GF_NORTH_F1_CARPENTER_POT_1] = Location::Pot(RC_GF_NORTH_F1_CARPENTER_POT_1, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_THIEVES_HIDEOUT, TWO_ACTOR_PARAMS(-475, -2622), "North F1 Carpenter Pot 1", RHT_POT_GERUDO_FORTRESS, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_NORTH_F1_CARPENTER_POT_1)); + locationTable[RC_GF_NORTH_F1_CARPENTER_POT_2] = Location::Pot(RC_GF_NORTH_F1_CARPENTER_POT_2, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_THIEVES_HIDEOUT, TWO_ACTOR_PARAMS(-512, -2621), "North F1 Carpenter Pot 2", RHT_POT_GERUDO_FORTRESS, RG_RED_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_NORTH_F1_CARPENTER_POT_2)); + locationTable[RC_GF_NORTH_F1_CARPENTER_POT_3] = Location::Pot(RC_GF_NORTH_F1_CARPENTER_POT_3, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_THIEVES_HIDEOUT, TWO_ACTOR_PARAMS(-511, -2582), "North F1 Carpenter Pot 3", RHT_POT_GERUDO_FORTRESS, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_NORTH_F1_CARPENTER_POT_3)); + locationTable[RC_GF_NORTH_F2_CARPENTER_POT_1] = Location::Pot(RC_GF_NORTH_F2_CARPENTER_POT_1, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_THIEVES_HIDEOUT, TWO_ACTOR_PARAMS(67, -1975), "North F2 Carpenter Pot 1", RHT_POT_GERUDO_FORTRESS, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_NORTH_F2_CARPENTER_POT_1)); + locationTable[RC_GF_NORTH_F2_CARPENTER_POT_2] = Location::Pot(RC_GF_NORTH_F2_CARPENTER_POT_2, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_THIEVES_HIDEOUT, TWO_ACTOR_PARAMS(39, -1943), "North F2 Carpenter Pot 2", RHT_POT_GERUDO_FORTRESS, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_NORTH_F2_CARPENTER_POT_2)); + locationTable[RC_GF_SOUTH_F1_CARPENTER_POT_1] = Location::Pot(RC_GF_SOUTH_F1_CARPENTER_POT_1, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_THIEVES_HIDEOUT, TWO_ACTOR_PARAMS(691, 48), "South F1 Carpenter Pot 1", RHT_POT_GERUDO_FORTRESS, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_SOUTH_F1_CARPENTER_POT_1)); + locationTable[RC_GF_SOUTH_F1_CARPENTER_POT_2] = Location::Pot(RC_GF_SOUTH_F1_CARPENTER_POT_2, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_THIEVES_HIDEOUT, TWO_ACTOR_PARAMS(691, 16), "South F1 Carpenter Pot 2", RHT_POT_GERUDO_FORTRESS, RG_RED_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_SOUTH_F1_CARPENTER_POT_2)); + locationTable[RC_GF_SOUTH_F1_CARPENTER_POT_3] = Location::Pot(RC_GF_SOUTH_F1_CARPENTER_POT_3, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_THIEVES_HIDEOUT, TWO_ACTOR_PARAMS(661, 16), "South F1 Carpenter Pot 3", RHT_POT_GERUDO_FORTRESS, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_SOUTH_F1_CARPENTER_POT_3)); + locationTable[RC_GF_SOUTH_F1_CARPENTER_CELL_POT_1] = Location::Pot(RC_GF_SOUTH_F1_CARPENTER_CELL_POT_1, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_THIEVES_HIDEOUT, TWO_ACTOR_PARAMS(26, 524), "South F1 Carpenter Cell Pot 1", RHT_POT_GERUDO_FORTRESS, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_SOUTH_F1_CARPENTER_CELL_POT_1)); + locationTable[RC_GF_SOUTH_F1_CARPENTER_CELL_POT_2] = Location::Pot(RC_GF_SOUTH_F1_CARPENTER_CELL_POT_2, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_THIEVES_HIDEOUT, TWO_ACTOR_PARAMS(61, 549), "South F1 Carpenter Cell Pot 2", RHT_POT_GERUDO_FORTRESS, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_SOUTH_F1_CARPENTER_CELL_POT_2)); + locationTable[RC_GF_SOUTH_F1_CARPENTER_CELL_POT_3] = Location::Pot(RC_GF_SOUTH_F1_CARPENTER_CELL_POT_3, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_THIEVES_HIDEOUT, TWO_ACTOR_PARAMS(215, 549), "South F1 Carpenter Cell Pot 3", RHT_POT_GERUDO_FORTRESS, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_SOUTH_F1_CARPENTER_CELL_POT_3)); + locationTable[RC_GF_SOUTH_F1_CARPENTER_CELL_POT_4] = Location::Pot(RC_GF_SOUTH_F1_CARPENTER_CELL_POT_4, RCQUEST_BOTH, RCAREA_GERUDO_FORTRESS, SCENE_THIEVES_HIDEOUT, TWO_ACTOR_PARAMS(254, 529), "South F1 Carpenter Cell Pot 4", RHT_POT_GERUDO_FORTRESS, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GF_SOUTH_F1_CARPENTER_CELL_POT_4)); + locationTable[RC_WASTELAND_NEAR_GS_POT_1] = Location::Pot(RC_WASTELAND_NEAR_GS_POT_1, RCQUEST_BOTH, RCAREA_WASTELAND, SCENE_HAUNTED_WASTELAND, TWO_ACTOR_PARAMS(488, -2424), "Near GS Pot 1", RHT_POT_GERUDO_FORTRESS, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WASTELAND_NEAR_GS_POT_1)); + locationTable[RC_WASTELAND_NEAR_GS_POT_2] = Location::Pot(RC_WASTELAND_NEAR_GS_POT_2, RCQUEST_BOTH, RCAREA_WASTELAND, SCENE_HAUNTED_WASTELAND, TWO_ACTOR_PARAMS(485, -2463), "Near GS Pot 2", RHT_POT_GERUDO_FORTRESS, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WASTELAND_NEAR_GS_POT_2)); + locationTable[RC_WASTELAND_NEAR_GS_POT_3] = Location::Pot(RC_WASTELAND_NEAR_GS_POT_3, RCQUEST_BOTH, RCAREA_WASTELAND, SCENE_HAUNTED_WASTELAND, TWO_ACTOR_PARAMS(806, -2426), "Near GS Pot 3", RHT_POT_GERUDO_FORTRESS, RG_DEKU_NUTS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WASTELAND_NEAR_GS_POT_3)); + locationTable[RC_WASTELAND_NEAR_GS_POT_4] = Location::Pot(RC_WASTELAND_NEAR_GS_POT_4, RCQUEST_BOTH, RCAREA_WASTELAND, SCENE_HAUNTED_WASTELAND, TWO_ACTOR_PARAMS(801, -2460), "Near GS Pot 4", RHT_POT_GERUDO_FORTRESS, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WASTELAND_NEAR_GS_POT_4)); + locationTable[RC_MK_GUARD_HOUSE_CHILD_POT_1] = Location::Pot(RC_MK_GUARD_HOUSE_CHILD_POT_1, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(-60, 27), "Guard House Child Pot 1", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_CHILD_POT_1)); + locationTable[RC_MK_GUARD_HOUSE_CHILD_POT_2] = Location::Pot(RC_MK_GUARD_HOUSE_CHILD_POT_2, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(-89, 28), "Guard House Child Pot 2", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_CHILD_POT_2)); + locationTable[RC_MK_GUARD_HOUSE_CHILD_POT_3] = Location::Pot(RC_MK_GUARD_HOUSE_CHILD_POT_3, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(-110, 6), "Guard House Child Pot 3", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_CHILD_POT_3)); + locationTable[RC_MK_GUARD_HOUSE_CHILD_POT_4] = Location::Pot(RC_MK_GUARD_HOUSE_CHILD_POT_4, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(-58, -7), "Guard House Child Pot 4", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_CHILD_POT_4)); + locationTable[RC_MK_GUARD_HOUSE_CHILD_POT_5] = Location::Pot(RC_MK_GUARD_HOUSE_CHILD_POT_5, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(-80, -7), "Guard House Child Pot 5", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_CHILD_POT_5)); + locationTable[RC_MK_GUARD_HOUSE_CHILD_POT_6] = Location::Pot(RC_MK_GUARD_HOUSE_CHILD_POT_6, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(-65, -45), "Guard House Child Pot 6", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_CHILD_POT_6)); + locationTable[RC_MK_GUARD_HOUSE_CHILD_POT_7] = Location::Pot(RC_MK_GUARD_HOUSE_CHILD_POT_7, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(-85, -41), "Guard House Child Pot 7", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_CHILD_POT_7)); + locationTable[RC_MK_GUARD_HOUSE_CHILD_POT_8] = Location::Pot(RC_MK_GUARD_HOUSE_CHILD_POT_8, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(-107, -45), "Guard House Child Pot 8", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_CHILD_POT_8)); + locationTable[RC_MK_GUARD_HOUSE_CHILD_POT_9] = Location::Pot(RC_MK_GUARD_HOUSE_CHILD_POT_9, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(-66, -79), "Guard House Child Pot 9", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_CHILD_POT_9)); + locationTable[RC_MK_GUARD_HOUSE_CHILD_POT_10] = Location::Pot(RC_MK_GUARD_HOUSE_CHILD_POT_10, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(-88, -84), "Guard House Child Pot 10", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_CHILD_POT_10)); + locationTable[RC_MK_GUARD_HOUSE_CHILD_POT_11] = Location::Pot(RC_MK_GUARD_HOUSE_CHILD_POT_11, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(70, 215), "Guard House Child Pot 11", RHT_POT_MARKET, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_CHILD_POT_11)); + locationTable[RC_MK_GUARD_HOUSE_CHILD_POT_12] = Location::Pot(RC_MK_GUARD_HOUSE_CHILD_POT_12, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(68, 148), "Guard House Child Pot 12", RHT_POT_MARKET, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_CHILD_POT_12)); + locationTable[RC_MK_GUARD_HOUSE_CHILD_POT_13] = Location::Pot(RC_MK_GUARD_HOUSE_CHILD_POT_13, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(73, 117), "Guard House Child Pot 13", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_CHILD_POT_13)); + locationTable[RC_MK_GUARD_HOUSE_CHILD_POT_14] = Location::Pot(RC_MK_GUARD_HOUSE_CHILD_POT_14, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(40, 123), "Guard House Child Pot 14", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_CHILD_POT_14)); + locationTable[RC_MK_GUARD_HOUSE_CHILD_POT_15] = Location::Pot(RC_MK_GUARD_HOUSE_CHILD_POT_15, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(43, 89), "Guard House Child Pot 15", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_CHILD_POT_15)); + locationTable[RC_MK_GUARD_HOUSE_CHILD_POT_16] = Location::Pot(RC_MK_GUARD_HOUSE_CHILD_POT_16, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(68, 81), "Guard House Child Pot 16", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_CHILD_POT_16)); + locationTable[RC_MK_GUARD_HOUSE_CHILD_POT_17] = Location::Pot(RC_MK_GUARD_HOUSE_CHILD_POT_17, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(21, 73), "Guard House Child Pot 17", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_CHILD_POT_17)); + locationTable[RC_MK_GUARD_HOUSE_CHILD_POT_18] = Location::Pot(RC_MK_GUARD_HOUSE_CHILD_POT_18, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(64, 45), "Guard House Child Pot 18", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_CHILD_POT_18)); + locationTable[RC_MK_GUARD_HOUSE_CHILD_POT_19] = Location::Pot(RC_MK_GUARD_HOUSE_CHILD_POT_19, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(84, 31), "Guard House Child Pot 19", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_CHILD_POT_19)); + locationTable[RC_MK_GUARD_HOUSE_CHILD_POT_20] = Location::Pot(RC_MK_GUARD_HOUSE_CHILD_POT_20, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(42, 26), "Guard House Child Pot 20", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_CHILD_POT_20)); + locationTable[RC_MK_GUARD_HOUSE_CHILD_POT_21] = Location::Pot(RC_MK_GUARD_HOUSE_CHILD_POT_21, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(20, 34), "Guard House Child Pot 21", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_CHILD_POT_21)); + locationTable[RC_MK_GUARD_HOUSE_CHILD_POT_22] = Location::Pot(RC_MK_GUARD_HOUSE_CHILD_POT_22, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(89, -2), "Guard House Child Pot 22", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_CHILD_POT_22)); + locationTable[RC_MK_GUARD_HOUSE_CHILD_POT_23] = Location::Pot(RC_MK_GUARD_HOUSE_CHILD_POT_23, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(70, -12), "Guard House Child Pot 23", RHT_POT_MARKET, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_CHILD_POT_23)); + locationTable[RC_MK_GUARD_HOUSE_CHILD_POT_24] = Location::Pot(RC_MK_GUARD_HOUSE_CHILD_POT_24, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(42, -5), "Guard House Child Pot 24", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_CHILD_POT_24)); + locationTable[RC_MK_GUARD_HOUSE_CHILD_POT_25] = Location::Pot(RC_MK_GUARD_HOUSE_CHILD_POT_25, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(16, -6), "Guard House Child Pot 25", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_CHILD_POT_25)); + locationTable[RC_MK_GUARD_HOUSE_CHILD_POT_26] = Location::Pot(RC_MK_GUARD_HOUSE_CHILD_POT_26, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(68, -44), "Guard House Child Pot 26", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_CHILD_POT_26)); + locationTable[RC_MK_GUARD_HOUSE_CHILD_POT_27] = Location::Pot(RC_MK_GUARD_HOUSE_CHILD_POT_27, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(37, -40), "Guard House Child Pot 27", RHT_POT_MARKET, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_CHILD_POT_27)); + locationTable[RC_MK_GUARD_HOUSE_CHILD_POT_28] = Location::Pot(RC_MK_GUARD_HOUSE_CHILD_POT_28, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(70, -80), "Guard House Child Pot 28", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_CHILD_POT_28)); + locationTable[RC_MK_GUARD_HOUSE_CHILD_POT_29] = Location::Pot(RC_MK_GUARD_HOUSE_CHILD_POT_29, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(50, -74), "Guard House Child Pot 29", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_CHILD_POT_29)); + locationTable[RC_MK_GUARD_HOUSE_CHILD_POT_30] = Location::Pot(RC_MK_GUARD_HOUSE_CHILD_POT_30, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(28, -79), "Guard House Child Pot 30", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_CHILD_POT_30)); + locationTable[RC_MK_GUARD_HOUSE_CHILD_POT_31] = Location::Pot(RC_MK_GUARD_HOUSE_CHILD_POT_31, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(39, -111), "Guard House Child Pot 31", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_CHILD_POT_31)); + locationTable[RC_MK_GUARD_HOUSE_CHILD_POT_32] = Location::Pot(RC_MK_GUARD_HOUSE_CHILD_POT_32, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(169, 216), "Guard House Child Pot 32", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_CHILD_POT_32)); + locationTable[RC_MK_GUARD_HOUSE_CHILD_POT_33] = Location::Pot(RC_MK_GUARD_HOUSE_CHILD_POT_33, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(168, 166), "Guard House Child Pot 33", RHT_POT_MARKET, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_CHILD_POT_33)); + locationTable[RC_MK_GUARD_HOUSE_CHILD_POT_34] = Location::Pot(RC_MK_GUARD_HOUSE_CHILD_POT_34, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(170, 120), "Guard House Child Pot 34", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_CHILD_POT_34)); + locationTable[RC_MK_GUARD_HOUSE_CHILD_POT_35] = Location::Pot(RC_MK_GUARD_HOUSE_CHILD_POT_35, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(177, 85), "Guard House Child Pot 35", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_CHILD_POT_35)); + locationTable[RC_MK_GUARD_HOUSE_CHILD_POT_36] = Location::Pot(RC_MK_GUARD_HOUSE_CHILD_POT_36, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(155, 39), "Guard House Child Pot 36", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_CHILD_POT_36)); + locationTable[RC_MK_GUARD_HOUSE_CHILD_POT_37] = Location::Pot(RC_MK_GUARD_HOUSE_CHILD_POT_37, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(184, 13), "Guard House Child Pot 37", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_CHILD_POT_37)); + locationTable[RC_MK_GUARD_HOUSE_CHILD_POT_38] = Location::Pot(RC_MK_GUARD_HOUSE_CHILD_POT_38, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(156, -1), "Guard House Child Pot 38", RHT_POT_MARKET, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_CHILD_POT_38)); + locationTable[RC_MK_GUARD_HOUSE_CHILD_POT_39] = Location::Pot(RC_MK_GUARD_HOUSE_CHILD_POT_39, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(181, -33), "Guard House Child Pot 39", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_CHILD_POT_39)); + locationTable[RC_MK_GUARD_HOUSE_CHILD_POT_40] = Location::Pot(RC_MK_GUARD_HOUSE_CHILD_POT_40, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(156, -45), "Guard House Child Pot 40", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_CHILD_POT_40)); + locationTable[RC_MK_GUARD_HOUSE_CHILD_POT_41] = Location::Pot(RC_MK_GUARD_HOUSE_CHILD_POT_41, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(172, -82), "Guard House Child Pot 41", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_CHILD_POT_41)); + locationTable[RC_MK_GUARD_HOUSE_CHILD_POT_42] = Location::Pot(RC_MK_GUARD_HOUSE_CHILD_POT_42, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(170, -120), "Guard House Child Pot 42", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_CHILD_POT_42)); + locationTable[RC_MK_GUARD_HOUSE_CHILD_POT_43] = Location::Pot(RC_MK_GUARD_HOUSE_CHILD_POT_43, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(170, -166), "Guard House Child Pot 43", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_CHILD_POT_43)); + locationTable[RC_MK_GUARD_HOUSE_CHILD_POT_44] = Location::Pot(RC_MK_GUARD_HOUSE_CHILD_POT_44, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(170, -216), "Guard House Child Pot 44", RHT_POT_MARKET, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_CHILD_POT_44)); + locationTable[RC_MK_GUARD_HOUSE_ADULT_POT_1] = Location::Pot(RC_MK_GUARD_HOUSE_ADULT_POT_1, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(61, 204), "Guard House Adult Pot 1", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_ADULT_POT_1)); + locationTable[RC_MK_GUARD_HOUSE_ADULT_POT_2] = Location::Pot(RC_MK_GUARD_HOUSE_ADULT_POT_2, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(71, 132), "Guard House Adult Pot 2", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_ADULT_POT_2)); + locationTable[RC_MK_GUARD_HOUSE_ADULT_POT_3] = Location::Pot(RC_MK_GUARD_HOUSE_ADULT_POT_3, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(74, 23), "Guard House Adult Pot 3", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_ADULT_POT_3)); + locationTable[RC_MK_GUARD_HOUSE_ADULT_POT_4] = Location::Pot(RC_MK_GUARD_HOUSE_ADULT_POT_4, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(40, 4), "Guard House Adult Pot 4", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_ADULT_POT_4)); + locationTable[RC_MK_GUARD_HOUSE_ADULT_POT_5] = Location::Pot(RC_MK_GUARD_HOUSE_ADULT_POT_5, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(71, -22), "Guard House Adult Pot 5", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_ADULT_POT_5)); + locationTable[RC_MK_GUARD_HOUSE_ADULT_POT_6] = Location::Pot(RC_MK_GUARD_HOUSE_ADULT_POT_6, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(44, -151), "Guard House Adult Pot 6", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_ADULT_POT_6)); + locationTable[RC_MK_GUARD_HOUSE_ADULT_POT_7] = Location::Pot(RC_MK_GUARD_HOUSE_ADULT_POT_7, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(79, -182), "Guard House Adult Pot 7", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_ADULT_POT_7)); + locationTable[RC_MK_GUARD_HOUSE_ADULT_POT_8] = Location::Pot(RC_MK_GUARD_HOUSE_ADULT_POT_8, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(44, -198), "Guard House Adult Pot 8", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_ADULT_POT_8)); + locationTable[RC_MK_GUARD_HOUSE_ADULT_POT_9] = Location::Pot(RC_MK_GUARD_HOUSE_ADULT_POT_9, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(168, 210), "Guard House Adult Pot 9", RHT_POT_MARKET, RG_RED_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_ADULT_POT_9)); + locationTable[RC_MK_GUARD_HOUSE_ADULT_POT_10] = Location::Pot(RC_MK_GUARD_HOUSE_ADULT_POT_10, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(167, -122), "Guard House Adult Pot 10", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_ADULT_POT_10)); + locationTable[RC_MK_GUARD_HOUSE_ADULT_POT_11] = Location::Pot(RC_MK_GUARD_HOUSE_ADULT_POT_11, RCQUEST_BOTH, RCAREA_MARKET, SCENE_MARKET_GUARD_HOUSE, TWO_ACTOR_PARAMS(167, -210), "Guard House Adult Pot 11", RHT_POT_MARKET, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_GUARD_HOUSE_ADULT_POT_11)); + locationTable[RC_MK_BACK_ALLEY_HOUSE_POT_1] = Location::Pot(RC_MK_BACK_ALLEY_HOUSE_POT_1, RCQUEST_BOTH, RCAREA_MARKET, SCENE_BACK_ALLEY_HOUSE, TWO_ACTOR_PARAMS(100, 45), "Back Alley House Pot 1", RHT_POT_MARKET, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_BACK_ALLEY_HOUSE_POT_1)); + locationTable[RC_MK_BACK_ALLEY_HOUSE_POT_2] = Location::Pot(RC_MK_BACK_ALLEY_HOUSE_POT_2, RCQUEST_BOTH, RCAREA_MARKET, SCENE_BACK_ALLEY_HOUSE, TWO_ACTOR_PARAMS(12, -180), "Back Alley House Pot 2", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_BACK_ALLEY_HOUSE_POT_2)); + locationTable[RC_MK_BACK_ALLEY_HOUSE_POT_3] = Location::Pot(RC_MK_BACK_ALLEY_HOUSE_POT_3, RCQUEST_BOTH, RCAREA_MARKET, SCENE_BACK_ALLEY_HOUSE, TWO_ACTOR_PARAMS(-54, -180), "Back Alley House Pot 3", RHT_POT_MARKET, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_MK_BACK_ALLEY_HOUSE_POT_3)); + locationTable[RC_KAK_NEAR_POTION_SHOP_POT_1] = Location::Pot(RC_KAK_NEAR_POTION_SHOP_POT_1, RCQUEST_BOTH, RCAREA_KAKARIKO_VILLAGE, SCENE_KAKARIKO_VILLAGE, TWO_ACTOR_PARAMS(222, -377), "Near Potion Shop Pot 1", RHT_POT_KAKARIKO, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_KAK_NEAR_POTION_SHOP_POT_1)); + locationTable[RC_KAK_NEAR_POTION_SHOP_POT_2] = Location::Pot(RC_KAK_NEAR_POTION_SHOP_POT_2, RCQUEST_BOTH, RCAREA_KAKARIKO_VILLAGE, SCENE_KAKARIKO_VILLAGE, TWO_ACTOR_PARAMS(255, -366), "Near Potion Shop Pot 2", RHT_POT_KAKARIKO, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_KAK_NEAR_POTION_SHOP_POT_2)); + locationTable[RC_KAK_NEAR_POTION_SHOP_POT_3] = Location::Pot(RC_KAK_NEAR_POTION_SHOP_POT_3, RCQUEST_BOTH, RCAREA_KAKARIKO_VILLAGE, SCENE_KAKARIKO_VILLAGE, TWO_ACTOR_PARAMS(284, -356), "Near Potion Shop Pot 3", RHT_POT_KAKARIKO, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_KAK_NEAR_POTION_SHOP_POT_3)); + locationTable[RC_KAK_NEAR_IMPAS_HOUSE_POT_1] = Location::Pot(RC_KAK_NEAR_IMPAS_HOUSE_POT_1, RCQUEST_BOTH, RCAREA_KAKARIKO_VILLAGE, SCENE_KAKARIKO_VILLAGE, TWO_ACTOR_PARAMS(-384, 1568), "Near Impas House Pot 1", RHT_POT_KAKARIKO, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_KAK_NEAR_IMPAS_HOUSE_POT_1)); + locationTable[RC_KAK_NEAR_IMPAS_HOUSE_POT_2] = Location::Pot(RC_KAK_NEAR_IMPAS_HOUSE_POT_2, RCQUEST_BOTH, RCAREA_KAKARIKO_VILLAGE, SCENE_KAKARIKO_VILLAGE, TWO_ACTOR_PARAMS(-384, 1539), "Near Impas House Pot 2", RHT_POT_KAKARIKO, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_KAK_NEAR_IMPAS_HOUSE_POT_2)); + locationTable[RC_KAK_NEAR_IMPAS_HOUSE_POT_3] = Location::Pot(RC_KAK_NEAR_IMPAS_HOUSE_POT_3, RCQUEST_BOTH, RCAREA_KAKARIKO_VILLAGE, SCENE_KAKARIKO_VILLAGE, TWO_ACTOR_PARAMS(-384, 1510), "Near Impas House Pot 3", RHT_POT_KAKARIKO, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_KAK_NEAR_IMPAS_HOUSE_POT_3)); + locationTable[RC_KAK_NEAR_GUARDS_HOUSE_POT_1] = Location::Pot(RC_KAK_NEAR_GUARDS_HOUSE_POT_1, RCQUEST_BOTH, RCAREA_KAKARIKO_VILLAGE, SCENE_KAKARIKO_VILLAGE, TWO_ACTOR_PARAMS(-392, -870), "Near Guards House Pot 1", RHT_POT_KAKARIKO, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_KAK_NEAR_GUARDS_HOUSE_POT_1)); + locationTable[RC_KAK_NEAR_GUARDS_HOUSE_POT_2] = Location::Pot(RC_KAK_NEAR_GUARDS_HOUSE_POT_2, RCQUEST_BOTH, RCAREA_KAKARIKO_VILLAGE, SCENE_KAKARIKO_VILLAGE, TWO_ACTOR_PARAMS(-422, -883), "Near Guards House Pot 2", RHT_POT_KAKARIKO, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_KAK_NEAR_GUARDS_HOUSE_POT_2)); + locationTable[RC_KAK_NEAR_GUARDS_HOUSE_POT_3] = Location::Pot(RC_KAK_NEAR_GUARDS_HOUSE_POT_3, RCQUEST_BOTH, RCAREA_KAKARIKO_VILLAGE, SCENE_KAKARIKO_VILLAGE, TWO_ACTOR_PARAMS(-450, -895), "Near Guards House Pot 3", RHT_POT_KAKARIKO, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_KAK_NEAR_GUARDS_HOUSE_POT_3)); + locationTable[RC_KAK_NEAR_MEDICINE_SHOP_POT_1] = Location::Pot(RC_KAK_NEAR_MEDICINE_SHOP_POT_1, RCQUEST_BOTH, RCAREA_KAKARIKO_VILLAGE, SCENE_KAKARIKO_VILLAGE, TWO_ACTOR_PARAMS(781, 89), "Near Medicine Shop Pot 1", RHT_POT_KAKARIKO, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_KAK_NEAR_MEDICINE_SHOP_POT_1)); + locationTable[RC_KAK_NEAR_MEDICINE_SHOP_POT_2] = Location::Pot(RC_KAK_NEAR_MEDICINE_SHOP_POT_2, RCQUEST_BOTH, RCAREA_KAKARIKO_VILLAGE, SCENE_KAKARIKO_VILLAGE, TWO_ACTOR_PARAMS(815, 89), "Near Medicine Shop Pot 2", RHT_POT_KAKARIKO, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_KAK_NEAR_MEDICINE_SHOP_POT_2)); + locationTable[RC_GY_DAMPES_GRAVE_POT_1] = Location::Pot(RC_GY_DAMPES_GRAVE_POT_1, RCQUEST_BOTH, RCAREA_GRAVEYARD, SCENE_WINDMILL_AND_DAMPES_GRAVE, TWO_ACTOR_PARAMS(-319, -1542), "Dampes Grave Pot 1", RHT_POT_GRAVEYARD, RG_ARROWS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GY_DAMPES_GRAVE_POT_1)); + locationTable[RC_GY_DAMPES_GRAVE_POT_2] = Location::Pot(RC_GY_DAMPES_GRAVE_POT_2, RCQUEST_BOTH, RCAREA_GRAVEYARD, SCENE_WINDMILL_AND_DAMPES_GRAVE, TWO_ACTOR_PARAMS(-319, -1600), "Dampes Grave Pot 2", RHT_POT_GRAVEYARD, RG_BOMBS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GY_DAMPES_GRAVE_POT_2)); + locationTable[RC_GY_DAMPES_GRAVE_POT_3] = Location::Pot(RC_GY_DAMPES_GRAVE_POT_3, RCQUEST_BOTH, RCAREA_GRAVEYARD, SCENE_WINDMILL_AND_DAMPES_GRAVE, TWO_ACTOR_PARAMS(-364, -1571), "Dampes Grave Pot 3", RHT_POT_GRAVEYARD, RG_RED_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GY_DAMPES_GRAVE_POT_3)); + locationTable[RC_GY_DAMPES_GRAVE_POT_4] = Location::Pot(RC_GY_DAMPES_GRAVE_POT_4, RCQUEST_BOTH, RCAREA_GRAVEYARD, SCENE_WINDMILL_AND_DAMPES_GRAVE, TWO_ACTOR_PARAMS(198, -1540), "Dampes Grave Pot 4", RHT_POT_GRAVEYARD, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GY_DAMPES_GRAVE_POT_4)); + locationTable[RC_GY_DAMPES_GRAVE_POT_5] = Location::Pot(RC_GY_DAMPES_GRAVE_POT_5, RCQUEST_BOTH, RCAREA_GRAVEYARD, SCENE_WINDMILL_AND_DAMPES_GRAVE, TWO_ACTOR_PARAMS(198, -1608), "Dampes Grave Pot 5", RHT_POT_GRAVEYARD, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GY_DAMPES_GRAVE_POT_5)); + locationTable[RC_GY_DAMPES_GRAVE_POT_6] = Location::Pot(RC_GY_DAMPES_GRAVE_POT_6, RCQUEST_BOTH, RCAREA_GRAVEYARD, SCENE_WINDMILL_AND_DAMPES_GRAVE, TWO_ACTOR_PARAMS(239, -1577), "Dampes Grave Pot 6", RHT_POT_GRAVEYARD, RG_DEKU_NUTS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GY_DAMPES_GRAVE_POT_6)); + locationTable[RC_GC_LOWER_STAIRCASE_POT_1] = Location::Pot(RC_GC_LOWER_STAIRCASE_POT_1, RCQUEST_BOTH, RCAREA_GORON_CITY, SCENE_GORON_CITY, TWO_ACTOR_PARAMS(-189, 866), "Lower Staircase Pot 1", RHT_POT_GORON_CITY, RG_DEKU_STICK_1, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GC_LOWER_STAIRCASE_POT_1)); + locationTable[RC_GC_LOWER_STAIRCASE_POT_2] = Location::Pot(RC_GC_LOWER_STAIRCASE_POT_2, RCQUEST_BOTH, RCAREA_GORON_CITY, SCENE_GORON_CITY, TWO_ACTOR_PARAMS(-271, 825), "Lower Staircase Pot 2", RHT_POT_GORON_CITY, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GC_LOWER_STAIRCASE_POT_2)); + locationTable[RC_GC_UPPER_STAIRCASE_POT_1] = Location::Pot(RC_GC_UPPER_STAIRCASE_POT_1, RCQUEST_BOTH, RCAREA_GORON_CITY, SCENE_GORON_CITY, TWO_ACTOR_PARAMS(-1170, 60), "Upper Staircase Pot 1", RHT_POT_GORON_CITY, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GC_UPPER_STAIRCASE_POT_1)); + locationTable[RC_GC_UPPER_STAIRCASE_POT_2] = Location::Pot(RC_GC_UPPER_STAIRCASE_POT_2, RCQUEST_BOTH, RCAREA_GORON_CITY, SCENE_GORON_CITY, TWO_ACTOR_PARAMS(-1185, 95), "Upper Staircase Pot 2", RHT_POT_GORON_CITY, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GC_UPPER_STAIRCASE_POT_2)); + locationTable[RC_GC_UPPER_STAIRCASE_POT_3] = Location::Pot(RC_GC_UPPER_STAIRCASE_POT_3, RCQUEST_BOTH, RCAREA_GORON_CITY, SCENE_GORON_CITY, TWO_ACTOR_PARAMS(-1200, 63), "Upper Staircase Pot 3", RHT_POT_GORON_CITY, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GC_UPPER_STAIRCASE_POT_3)); + locationTable[RC_GC_MEDIGORON_POT_1] = Location::Pot(RC_GC_MEDIGORON_POT_1, RCQUEST_BOTH, RCAREA_GORON_CITY, SCENE_GORON_CITY, TWO_ACTOR_PARAMS(-694, 1196), "Medigoron Pot 1", RHT_POT_GORON_CITY, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GC_MEDIGORON_POT_1)); + locationTable[RC_GC_DARUNIA_POT_1] = Location::Pot(RC_GC_DARUNIA_POT_1, RCQUEST_BOTH, RCAREA_GORON_CITY, SCENE_GORON_CITY, TWO_ACTOR_PARAMS(262, -1210), "Darunia Pot 1", RHT_POT_GORON_CITY, RG_ARROWS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GC_DARUNIA_POT_1)); + locationTable[RC_GC_DARUNIA_POT_2] = Location::Pot(RC_GC_DARUNIA_POT_2, RCQUEST_BOTH, RCAREA_GORON_CITY, SCENE_GORON_CITY, TWO_ACTOR_PARAMS(261, -1254), "Darunia Pot 2", RHT_POT_GORON_CITY, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GC_DARUNIA_POT_2)); + locationTable[RC_GC_DARUNIA_POT_3] = Location::Pot(RC_GC_DARUNIA_POT_3, RCQUEST_BOTH, RCAREA_GORON_CITY, SCENE_GORON_CITY, TWO_ACTOR_PARAMS(262, -1386), "Darunia Pot 3", RHT_POT_GORON_CITY, RG_RED_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GC_DARUNIA_POT_3)); + locationTable[RC_DMC_NEAR_GC_POT_2] = Location::Pot(RC_DMC_NEAR_GC_POT_2, RCQUEST_BOTH, RCAREA_DEATH_MOUNTAIN_CRATER, SCENE_DEATH_MOUNTAIN_CRATER, TWO_ACTOR_PARAMS(-1546, 141), "Near GC Pot 2", RHT_POT_DEATH_MOUNTAIN_CRATER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DMC_NEAR_GC_POT_2)); + locationTable[RC_DMC_NEAR_GC_POT_3] = Location::Pot(RC_DMC_NEAR_GC_POT_3, RCQUEST_BOTH, RCAREA_DEATH_MOUNTAIN_CRATER, SCENE_DEATH_MOUNTAIN_CRATER, TWO_ACTOR_PARAMS(-1641, -127), "Near GC Pot 3", RHT_POT_DEATH_MOUNTAIN_CRATER, RG_ARROWS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DMC_NEAR_GC_POT_3)); + locationTable[RC_DMC_NEAR_GC_POT_1] = Location::Pot(RC_DMC_NEAR_GC_POT_1, RCQUEST_BOTH, RCAREA_DEATH_MOUNTAIN_CRATER, SCENE_DEATH_MOUNTAIN_CRATER, TWO_ACTOR_PARAMS(-1590, 132), "Near GC Pot 1", RHT_POT_DEATH_MOUNTAIN_CRATER, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DMC_NEAR_GC_POT_1)); + locationTable[RC_DMC_NEAR_GC_POT_4] = Location::Pot(RC_DMC_NEAR_GC_POT_4, RCQUEST_BOTH, RCAREA_DEATH_MOUNTAIN_CRATER, SCENE_DEATH_MOUNTAIN_CRATER, TWO_ACTOR_PARAMS(-1606, -166), "Near GC Pot 4", RHT_POT_DEATH_MOUNTAIN_CRATER, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DMC_NEAR_GC_POT_4)); + locationTable[RC_ZD_NEAR_SHOP_POT_1] = Location::Pot(RC_ZD_NEAR_SHOP_POT_1, RCQUEST_BOTH, RCAREA_ZORAS_DOMAIN, SCENE_ZORAS_DOMAIN, TWO_ACTOR_PARAMS(676, 377), "Near Shop Pot 1", RHT_POT_ZORAS_DOMAIN, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ZD_NEAR_SHOP_POT_1)); + locationTable[RC_ZD_NEAR_SHOP_POT_2] = Location::Pot(RC_ZD_NEAR_SHOP_POT_2, RCQUEST_BOTH, RCAREA_ZORAS_DOMAIN, SCENE_ZORAS_DOMAIN, TWO_ACTOR_PARAMS(614, 419), "Near Shop Pot 2", RHT_POT_ZORAS_DOMAIN, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ZD_NEAR_SHOP_POT_2)); + locationTable[RC_ZD_NEAR_SHOP_POT_3] = Location::Pot(RC_ZD_NEAR_SHOP_POT_3, RCQUEST_BOTH, RCAREA_ZORAS_DOMAIN, SCENE_ZORAS_DOMAIN, TWO_ACTOR_PARAMS(289, 415), "Near Shop Pot 3", RHT_POT_ZORAS_DOMAIN, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ZD_NEAR_SHOP_POT_3)); + locationTable[RC_ZD_NEAR_SHOP_POT_4] = Location::Pot(RC_ZD_NEAR_SHOP_POT_4, RCQUEST_BOTH, RCAREA_ZORAS_DOMAIN, SCENE_ZORAS_DOMAIN, TWO_ACTOR_PARAMS(289, 289), "Near Shop Pot 4", RHT_POT_ZORAS_DOMAIN, RG_DEKU_NUTS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ZD_NEAR_SHOP_POT_4)); + locationTable[RC_ZD_NEAR_SHOP_POT_5] = Location::Pot(RC_ZD_NEAR_SHOP_POT_5, RCQUEST_BOTH, RCAREA_ZORAS_DOMAIN, SCENE_ZORAS_DOMAIN, TWO_ACTOR_PARAMS(220, 384), "Near Shop Pot 5", RHT_POT_ZORAS_DOMAIN, RG_DEKU_STICK_1, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ZD_NEAR_SHOP_POT_5)); + locationTable[RC_ZF_HIDDEN_CAVE_POT_1] = Location::Pot(RC_ZF_HIDDEN_CAVE_POT_1, RCQUEST_BOTH, RCAREA_ZORAS_FOUNTAIN, SCENE_ZORAS_FOUNTAIN, TWO_ACTOR_PARAMS(385, 2587), "Hidden Cave Pot 1", RHT_POT_ZORAS_FOUNTAIN, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ZF_HIDDEN_CAVE_POT_1)); + locationTable[RC_ZF_HIDDEN_CAVE_POT_2] = Location::Pot(RC_ZF_HIDDEN_CAVE_POT_2, RCQUEST_BOTH, RCAREA_ZORAS_FOUNTAIN, SCENE_ZORAS_FOUNTAIN, TWO_ACTOR_PARAMS(418, 2609), "Hidden Cave Pot 2", RHT_POT_ZORAS_FOUNTAIN, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ZF_HIDDEN_CAVE_POT_2)); + locationTable[RC_ZF_HIDDEN_CAVE_POT_3] = Location::Pot(RC_ZF_HIDDEN_CAVE_POT_3, RCQUEST_BOTH, RCAREA_ZORAS_FOUNTAIN, SCENE_ZORAS_FOUNTAIN, TWO_ACTOR_PARAMS(430, 2568), "Hidden Cave Pot 3", RHT_POT_ZORAS_FOUNTAIN, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ZF_HIDDEN_CAVE_POT_3)); + locationTable[RC_ZF_NEAR_JABU_POT_1] = Location::Pot(RC_ZF_NEAR_JABU_POT_1, RCQUEST_BOTH, RCAREA_ZORAS_FOUNTAIN, SCENE_ZORAS_FOUNTAIN, TWO_ACTOR_PARAMS(-1630, 170), "Near Jabu Pot 1", RHT_POT_ZORAS_FOUNTAIN, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ZF_NEAR_JABU_POT_1)); + locationTable[RC_ZF_NEAR_JABU_POT_2] = Location::Pot(RC_ZF_NEAR_JABU_POT_2, RCQUEST_BOTH, RCAREA_ZORAS_FOUNTAIN, SCENE_ZORAS_FOUNTAIN, TWO_ACTOR_PARAMS(-1550, 170), "Near Jabu Pot 2", RHT_POT_ZORAS_FOUNTAIN, RG_DEKU_SEEDS_30, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ZF_NEAR_JABU_POT_2)); + locationTable[RC_ZF_NEAR_JABU_POT_3] = Location::Pot(RC_ZF_NEAR_JABU_POT_3, RCQUEST_BOTH, RCAREA_ZORAS_FOUNTAIN, SCENE_ZORAS_FOUNTAIN, TWO_ACTOR_PARAMS(-1630, -260), "Near Jabu Pot 3", RHT_POT_ZORAS_FOUNTAIN, RG_DEKU_SEEDS_30, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ZF_NEAR_JABU_POT_3)); + locationTable[RC_ZF_NEAR_JABU_POT_4] = Location::Pot(RC_ZF_NEAR_JABU_POT_4, RCQUEST_BOTH, RCAREA_ZORAS_FOUNTAIN, SCENE_ZORAS_FOUNTAIN, TWO_ACTOR_PARAMS(-1550, -260), "Near Jabu Pot 4", RHT_POT_ZORAS_FOUNTAIN, RG_DEKU_SEEDS_30, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ZF_NEAR_JABU_POT_4)); + locationTable[RC_LLR_FRONT_POT_1] = Location::Pot(RC_LLR_FRONT_POT_1, RCQUEST_BOTH, RCAREA_LON_LON_RANCH, SCENE_LON_LON_RANCH, TWO_ACTOR_PARAMS(667, -3218), "Front Pot 1", RHT_POT_LON_LON_RANCH, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_LLR_FRONT_POT_1)); + locationTable[RC_LLR_FRONT_POT_2] = Location::Pot(RC_LLR_FRONT_POT_2, RCQUEST_BOTH, RCAREA_LON_LON_RANCH, SCENE_LON_LON_RANCH, TWO_ACTOR_PARAMS(667, -3186), "Front Pot 2", RHT_POT_LON_LON_RANCH, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_LLR_FRONT_POT_2)); + locationTable[RC_LLR_FRONT_POT_3] = Location::Pot(RC_LLR_FRONT_POT_3, RCQUEST_BOTH, RCAREA_LON_LON_RANCH, SCENE_LON_LON_RANCH, TWO_ACTOR_PARAMS(667, -3154), "Front Pot 3", RHT_POT_LON_LON_RANCH, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_LLR_FRONT_POT_3)); + locationTable[RC_LLR_FRONT_POT_4] = Location::Pot(RC_LLR_FRONT_POT_4, RCQUEST_BOTH, RCAREA_LON_LON_RANCH, SCENE_LON_LON_RANCH, TWO_ACTOR_PARAMS(667, -3122), "Front Pot 4", RHT_POT_LON_LON_RANCH, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_LLR_FRONT_POT_4)); + locationTable[RC_LLR_RAIN_SHED_POT_1] = Location::Pot(RC_LLR_RAIN_SHED_POT_1, RCQUEST_BOTH, RCAREA_LON_LON_RANCH, SCENE_LON_LON_RANCH, TWO_ACTOR_PARAMS(852, 172), "Rain Shed Pot 1", RHT_POT_LON_LON_RANCH, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_LLR_RAIN_SHED_POT_1)); + locationTable[RC_LLR_RAIN_SHED_POT_2] = Location::Pot(RC_LLR_RAIN_SHED_POT_2, RCQUEST_BOTH, RCAREA_LON_LON_RANCH, SCENE_LON_LON_RANCH, TWO_ACTOR_PARAMS(840, 212), "Rain Shed Pot 2", RHT_POT_LON_LON_RANCH, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_LLR_RAIN_SHED_POT_2)); + locationTable[RC_LLR_RAIN_SHED_POT_3] = Location::Pot(RC_LLR_RAIN_SHED_POT_3, RCQUEST_BOTH, RCAREA_LON_LON_RANCH, SCENE_LON_LON_RANCH, TWO_ACTOR_PARAMS(872, 219), "Rain Shed Pot 3", RHT_POT_LON_LON_RANCH, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_LLR_RAIN_SHED_POT_3)); + locationTable[RC_LLR_TALONS_HOUSE_POT_1] = Location::Pot(RC_LLR_TALONS_HOUSE_POT_1, RCQUEST_BOTH, RCAREA_LON_LON_RANCH, SCENE_LON_LON_BUILDINGS, TWO_ACTOR_PARAMS(1255, 47), "Talons House Pot 1", RHT_POT_LON_LON_RANCH, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_LLR_TALONS_HOUSE_POT_1)); + locationTable[RC_LLR_TALONS_HOUSE_POT_2] = Location::Pot(RC_LLR_TALONS_HOUSE_POT_2, RCQUEST_BOTH, RCAREA_LON_LON_RANCH, SCENE_LON_LON_BUILDINGS, TWO_ACTOR_PARAMS(1256, -51), "Talons House Pot 2", RHT_POT_LON_LON_RANCH, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_LLR_TALONS_HOUSE_POT_2)); + locationTable[RC_LLR_TALONS_HOUSE_POT_3] = Location::Pot(RC_LLR_TALONS_HOUSE_POT_3, RCQUEST_BOTH, RCAREA_LON_LON_RANCH, SCENE_LON_LON_BUILDINGS, TWO_ACTOR_PARAMS(1256, -78), "Talons House Pot 3", RHT_POT_LON_LON_RANCH, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_LLR_TALONS_HOUSE_POT_3)); + locationTable[RC_HF_COW_GROTTO_POT_1] = Location::Pot(RC_HF_COW_GROTTO_POT_1, RCQUEST_BOTH, RCAREA_HYRULE_FIELD, SCENE_GROTTOS, TWO_ACTOR_PARAMS(3410, -223), "Cow Grotto Pot 1", RHT_POT_HYRULE_FIELD, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_HF_COW_GROTTO_POT_1)); + locationTable[RC_HF_COW_GROTTO_POT_2] = Location::Pot(RC_HF_COW_GROTTO_POT_2, RCQUEST_BOTH, RCAREA_HYRULE_FIELD, SCENE_GROTTOS, TWO_ACTOR_PARAMS(3390, -258), "Cow Grotto Pot 2", RHT_POT_HYRULE_FIELD, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_HF_COW_GROTTO_POT_2)); + locationTable[RC_HC_STORMS_GROTTO_POT_1] = Location::Pot(RC_HC_STORMS_GROTTO_POT_1, RCQUEST_BOTH, RCAREA_HYRULE_CASTLE, SCENE_GROTTOS, TWO_ACTOR_PARAMS(1843, 1014), "Storms Grotto Pot 1", RHT_POT_HYRULE_CASTLE, RG_RED_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_HC_STORMS_GROTTO_POT_1)); + locationTable[RC_HC_STORMS_GROTTO_POT_2] = Location::Pot(RC_HC_STORMS_GROTTO_POT_2, RCQUEST_BOTH, RCAREA_HYRULE_CASTLE, SCENE_GROTTOS, TWO_ACTOR_PARAMS(1769, 954), "Storms Grotto Pot 2", RHT_POT_HYRULE_CASTLE, RG_ARROWS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_HC_STORMS_GROTTO_POT_2)); + locationTable[RC_HC_STORMS_GROTTO_POT_3] = Location::Pot(RC_HC_STORMS_GROTTO_POT_3, RCQUEST_BOTH, RCAREA_HYRULE_CASTLE, SCENE_GROTTOS, TWO_ACTOR_PARAMS(1857, 897), "Storms Grotto Pot 3", RHT_POT_HYRULE_CASTLE, RG_BOMBS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_HC_STORMS_GROTTO_POT_3)); + locationTable[RC_HC_STORMS_GROTTO_POT_4] = Location::Pot(RC_HC_STORMS_GROTTO_POT_4, RCQUEST_BOTH, RCAREA_HYRULE_CASTLE, SCENE_GROTTOS, TWO_ACTOR_PARAMS(1764, 847), "Storms Grotto Pot 4", RHT_POT_HYRULE_CASTLE, RG_DEKU_NUTS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_HC_STORMS_GROTTO_POT_4)); + // Dungeon Pots - // Randomizer Check Randomizer Check Quest Area Scene ID Params Short Name Spoiler Name Hint Text Key Vanilla Spoiler Collection Check - locationTable[RC_DODONGOS_CAVERN_LIZALFOS_POT_3] = Location::Pot(RC_DODONGOS_CAVERN_LIZALFOS_POT_3, RCQUEST_VANILLA, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(2673, -2060), "Lizalfos Pot 3", RHT_POT_DODONGOS_CAVERN, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_LIZALFOS_POT_3)); - locationTable[RC_DODONGOS_CAVERN_LIZALFOS_POT_2] = Location::Pot(RC_DODONGOS_CAVERN_LIZALFOS_POT_2, RCQUEST_VANILLA, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(3526, -2574), "Lizalfos Pot 2", RHT_POT_DODONGOS_CAVERN, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_LIZALFOS_POT_2)); - locationTable[RC_DODONGOS_CAVERN_LIZALFOS_POT_1] = Location::Pot(RC_DODONGOS_CAVERN_LIZALFOS_POT_1, RCQUEST_VANILLA, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(3579, -2574), "Lizalfos Pot 1", RHT_POT_DODONGOS_CAVERN, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_LIZALFOS_POT_1)); - locationTable[RC_DODONGOS_CAVERN_LIZALFOS_POT_4] = Location::Pot(RC_DODONGOS_CAVERN_LIZALFOS_POT_4, RCQUEST_VANILLA, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(2653, -2031), "Lizalfos Pot 4", RHT_POT_DODONGOS_CAVERN, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_LIZALFOS_POT_4)); - locationTable[RC_DODONGOS_CAVERN_SIDE_ROOM_POT_1] = Location::Pot(RC_DODONGOS_CAVERN_SIDE_ROOM_POT_1, RCQUEST_VANILLA, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(1708, -471), "Side Room Pot 1", RHT_POT_DODONGOS_CAVERN, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_SIDE_ROOM_POT_1)); - locationTable[RC_DODONGOS_CAVERN_SIDE_ROOM_POT_2] = Location::Pot(RC_DODONGOS_CAVERN_SIDE_ROOM_POT_2, RCQUEST_VANILLA, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(1746, -424), "Side Room Pot 2", RHT_POT_DODONGOS_CAVERN, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_SIDE_ROOM_POT_2)); - locationTable[RC_DODONGOS_CAVERN_SIDE_ROOM_POT_3] = Location::Pot(RC_DODONGOS_CAVERN_SIDE_ROOM_POT_3, RCQUEST_VANILLA, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(2573, -489), "Side Room Pot 3", RHT_POT_DODONGOS_CAVERN, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_SIDE_ROOM_POT_3)); - locationTable[RC_DODONGOS_CAVERN_SIDE_ROOM_POT_4] = Location::Pot(RC_DODONGOS_CAVERN_SIDE_ROOM_POT_4, RCQUEST_VANILLA, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(2622, -489), "Side Room Pot 4", RHT_POT_DODONGOS_CAVERN, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_SIDE_ROOM_POT_4)); - locationTable[RC_DODONGOS_CAVERN_SIDE_ROOM_POT_5] = Location::Pot(RC_DODONGOS_CAVERN_SIDE_ROOM_POT_5, RCQUEST_VANILLA, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(3507, -964), "Side Room Pot 5", RHT_POT_DODONGOS_CAVERN, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_SIDE_ROOM_POT_5)); - locationTable[RC_DODONGOS_CAVERN_SIDE_ROOM_POT_6] = Location::Pot(RC_DODONGOS_CAVERN_SIDE_ROOM_POT_6, RCQUEST_VANILLA, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(3617, -911), "Side Room Pot 6", RHT_POT_DODONGOS_CAVERN, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_SIDE_ROOM_POT_6)); - locationTable[RC_DODONGOS_CAVERN_TORCH_ROOM_POT_1] = Location::Pot(RC_DODONGOS_CAVERN_TORCH_ROOM_POT_1, RCQUEST_VANILLA, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(1846, -1879), "Torch Room Pot 1", RHT_POT_DODONGOS_CAVERN, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_TORCH_ROOM_POT_1)); - locationTable[RC_DODONGOS_CAVERN_TORCH_ROOM_POT_2] = Location::Pot(RC_DODONGOS_CAVERN_TORCH_ROOM_POT_2, RCQUEST_VANILLA, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(2050, -1964), "Torch Room Pot 2", RHT_POT_DODONGOS_CAVERN, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_TORCH_ROOM_POT_2)); - locationTable[RC_DODONGOS_CAVERN_TORCH_ROOM_POT_3] = Location::Pot(RC_DODONGOS_CAVERN_TORCH_ROOM_POT_3, RCQUEST_VANILLA, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(2281, -1799), "Torch Room Pot 3", RHT_POT_DODONGOS_CAVERN, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_TORCH_ROOM_POT_3)); - locationTable[RC_DODONGOS_CAVERN_TORCH_ROOM_POT_4] = Location::Pot(RC_DODONGOS_CAVERN_TORCH_ROOM_POT_4, RCQUEST_VANILLA, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(1836, -1239), "Torch Room Pot 4", RHT_POT_DODONGOS_CAVERN, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_TORCH_ROOM_POT_4)); - locationTable[RC_DODONGOS_CAVERN_STAIRCASE_POT_1] = Location::Pot(RC_DODONGOS_CAVERN_STAIRCASE_POT_1, RCQUEST_VANILLA, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(-2414, -1823), "Staircase Pot 1", RHT_POT_DODONGOS_CAVERN, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_STAIRCASE_POT_1)); - locationTable[RC_DODONGOS_CAVERN_STAIRCASE_POT_2] = Location::Pot(RC_DODONGOS_CAVERN_STAIRCASE_POT_2, RCQUEST_VANILLA, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(-2368, -1827), "Staircase Pot 2", RHT_POT_DODONGOS_CAVERN, RG_RED_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_STAIRCASE_POT_2)); - locationTable[RC_DODONGOS_CAVERN_STAIRCASE_POT_3] = Location::Pot(RC_DODONGOS_CAVERN_STAIRCASE_POT_3, RCQUEST_VANILLA, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(-1574, -1831), "Staircase Pot 3", RHT_POT_DODONGOS_CAVERN, RG_RED_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_STAIRCASE_POT_3)); - locationTable[RC_DODONGOS_CAVERN_STAIRCASE_POT_4] = Location::Pot(RC_DODONGOS_CAVERN_STAIRCASE_POT_4, RCQUEST_VANILLA, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(-1528, -1827), "Staircase Pot 4", RHT_POT_DODONGOS_CAVERN, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_STAIRCASE_POT_4)); - locationTable[RC_DODONGOS_CAVERN_SINGLE_EYE_POT_1] = Location::Pot(RC_DODONGOS_CAVERN_SINGLE_EYE_POT_1, RCQUEST_VANILLA, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(2704, -483), "Single Eye Pot 1", RHT_POT_DODONGOS_CAVERN, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_SINGLE_EYE_POT_1)); - locationTable[RC_DODONGOS_CAVERN_SINGLE_EYE_POT_2] = Location::Pot(RC_DODONGOS_CAVERN_SINGLE_EYE_POT_2, RCQUEST_VANILLA, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(3195, -155), "Single Eye Pot 2", RHT_POT_DODONGOS_CAVERN, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_SINGLE_EYE_POT_2)); - locationTable[RC_DODONGOS_CAVERN_BLADE_POT_1] = Location::Pot(RC_DODONGOS_CAVERN_BLADE_POT_1, RCQUEST_VANILLA, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(1656, -531), "Blade Pot 1", RHT_POT_DODONGOS_CAVERN, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_BLADE_POT_1)); - locationTable[RC_DODONGOS_CAVERN_BLADE_POT_2] = Location::Pot(RC_DODONGOS_CAVERN_BLADE_POT_2, RCQUEST_VANILLA, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(1831, -593), "Blade Pot 2", RHT_POT_DODONGOS_CAVERN, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_BLADE_POT_2)); - locationTable[RC_DODONGOS_CAVERN_DOUBLE_EYE_POT_1] = Location::Pot(RC_DODONGOS_CAVERN_DOUBLE_EYE_POT_1, RCQUEST_VANILLA, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(3329, -753), "Double Eye Pot 1", RHT_POT_DODONGOS_CAVERN, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_DOUBLE_EYE_POT_1)); - locationTable[RC_DODONGOS_CAVERN_DOUBLE_EYE_POT_2] = Location::Pot(RC_DODONGOS_CAVERN_DOUBLE_EYE_POT_2, RCQUEST_VANILLA, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(2705, -1086), "Double Eye Pot 2", RHT_POT_DODONGOS_CAVERN, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_DOUBLE_EYE_POT_2)); - locationTable[RC_DODONGOS_CAVERN_BACK_ROOM_POT_1] = Location::Pot(RC_DODONGOS_CAVERN_BACK_ROOM_POT_1, RCQUEST_VANILLA, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(1027, -3704), "Back Room Pot 1", RHT_POT_DODONGOS_CAVERN, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_BACK_ROOM_POT_1)); - locationTable[RC_DODONGOS_CAVERN_BACK_ROOM_POT_2] = Location::Pot(RC_DODONGOS_CAVERN_BACK_ROOM_POT_2, RCQUEST_VANILLA, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(966, -3704), "Back Room Pot 2", RHT_POT_DODONGOS_CAVERN, RG_DEKU_SEEDS_30, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_BACK_ROOM_POT_2)); - locationTable[RC_DODONGOS_CAVERN_BACK_ROOM_POT_3] = Location::Pot(RC_DODONGOS_CAVERN_BACK_ROOM_POT_3, RCQUEST_VANILLA, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(125, -3854), "Back Room Pot 3", RHT_POT_DODONGOS_CAVERN, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_BACK_ROOM_POT_3)); - locationTable[RC_DODONGOS_CAVERN_BACK_ROOM_POT_4] = Location::Pot(RC_DODONGOS_CAVERN_BACK_ROOM_POT_4, RCQUEST_VANILLA, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(78, -3835), "Back Room Pot 4", RHT_POT_DODONGOS_CAVERN, RG_BOMBS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_BACK_ROOM_POT_4)); - locationTable[RC_JABU_JABUS_BELLY_ABOVE_BIG_OCTO_POT_1] = Location::Pot(RC_JABU_JABUS_BELLY_ABOVE_BIG_OCTO_POT_1, RCQUEST_VANILLA, RCAREA_JABU_JABUS_BELLY, SCENE_JABU_JABU, TWO_ACTOR_PARAMS(-1295, -3612), "Above Big Octo Pot 1", RHT_POT_JABU_JABUS_BELLY, RG_DEKU_NUTS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_JABU_JABUS_BELLY_ABOVE_BIG_OCTO_POT_1)); - locationTable[RC_JABU_JABUS_BELLY_ABOVE_BIG_OCTO_POT_2] = Location::Pot(RC_JABU_JABUS_BELLY_ABOVE_BIG_OCTO_POT_2, RCQUEST_VANILLA, RCAREA_JABU_JABUS_BELLY, SCENE_JABU_JABU, TWO_ACTOR_PARAMS(-1355, -3612), "Above Big Octo Pot 2", RHT_POT_JABU_JABUS_BELLY, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_JABU_JABUS_BELLY_ABOVE_BIG_OCTO_POT_2)); - locationTable[RC_JABU_JABUS_BELLY_ABOVE_BIG_OCTO_POT_3] = Location::Pot(RC_JABU_JABUS_BELLY_ABOVE_BIG_OCTO_POT_3, RCQUEST_VANILLA, RCAREA_JABU_JABUS_BELLY, SCENE_JABU_JABU, TWO_ACTOR_PARAMS(-1422, -3612), "Above Big Octo Pot 3", RHT_POT_JABU_JABUS_BELLY, RG_DEKU_NUTS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_JABU_JABUS_BELLY_ABOVE_BIG_OCTO_POT_3)); - locationTable[RC_JABU_JABUS_BELLY_BARINADE_POT_1] = Location::Pot(RC_JABU_JABUS_BELLY_BARINADE_POT_1, RCQUEST_BOTH, RCAREA_JABU_JABUS_BELLY, SCENE_JABU_JABU_BOSS, TWO_ACTOR_PARAMS(-551, 33), "Barinade Pot 1", RHT_POT_JABU_JABUS_BELLY, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_JABU_JABUS_BELLY_BARINADE_POT_1)); - locationTable[RC_JABU_JABUS_BELLY_BARINADE_POT_2] = Location::Pot(RC_JABU_JABUS_BELLY_BARINADE_POT_2, RCQUEST_BOTH, RCAREA_JABU_JABUS_BELLY, SCENE_JABU_JABU_BOSS, TWO_ACTOR_PARAMS(551, 36), "Barinade Pot 2", RHT_POT_JABU_JABUS_BELLY, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_JABU_JABUS_BELLY_BARINADE_POT_2)); - locationTable[RC_JABU_JABUS_BELLY_BARINADE_POT_3] = Location::Pot(RC_JABU_JABUS_BELLY_BARINADE_POT_3, RCQUEST_BOTH, RCAREA_JABU_JABUS_BELLY, SCENE_JABU_JABU_BOSS, TWO_ACTOR_PARAMS(554, -493), "Barinade Pot 3", RHT_POT_JABU_JABUS_BELLY, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_JABU_JABUS_BELLY_BARINADE_POT_3)); - locationTable[RC_JABU_JABUS_BELLY_BARINADE_POT_4] = Location::Pot(RC_JABU_JABUS_BELLY_BARINADE_POT_4, RCQUEST_BOTH, RCAREA_JABU_JABUS_BELLY, SCENE_JABU_JABU_BOSS, TWO_ACTOR_PARAMS(-543, -496), "Barinade Pot 4", RHT_POT_JABU_JABUS_BELLY, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_JABU_JABUS_BELLY_BARINADE_POT_4)); - locationTable[RC_JABU_JABUS_BELLY_BARINADE_POT_5] = Location::Pot(RC_JABU_JABUS_BELLY_BARINADE_POT_5, RCQUEST_BOTH, RCAREA_JABU_JABUS_BELLY, SCENE_JABU_JABU_BOSS, TWO_ACTOR_PARAMS(-268, -786), "Barinade Pot 5", RHT_POT_JABU_JABUS_BELLY, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_JABU_JABUS_BELLY_BARINADE_POT_5)); - locationTable[RC_JABU_JABUS_BELLY_BARINADE_POT_6] = Location::Pot(RC_JABU_JABUS_BELLY_BARINADE_POT_6, RCQUEST_BOTH, RCAREA_JABU_JABUS_BELLY, SCENE_JABU_JABU_BOSS, TWO_ACTOR_PARAMS(279, -761), "Barinade Pot 6", RHT_POT_JABU_JABUS_BELLY, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_JABU_JABUS_BELLY_BARINADE_POT_6)); - locationTable[RC_JABU_JABUS_BELLY_BASEMENT_POT_1] = Location::Pot(RC_JABU_JABUS_BELLY_BASEMENT_POT_1, RCQUEST_VANILLA, RCAREA_JABU_JABUS_BELLY, SCENE_JABU_JABU, TWO_ACTOR_PARAMS(703, -2371), "Basement Pot 1", RHT_POT_JABU_JABUS_BELLY, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_JABU_JABUS_BELLY_BASEMENT_POT_1)); - locationTable[RC_JABU_JABUS_BELLY_BASEMENT_POT_2] = Location::Pot(RC_JABU_JABUS_BELLY_BASEMENT_POT_2, RCQUEST_VANILLA, RCAREA_JABU_JABUS_BELLY, SCENE_JABU_JABU, TWO_ACTOR_PARAMS(645, -2408), "Basement Pot 2", RHT_POT_JABU_JABUS_BELLY, RG_DEKU_SEEDS_30, SpoilerCollectionCheck::RandomizerInf(RAND_INF_JABU_JABUS_BELLY_BASEMENT_POT_2)); - locationTable[RC_JABU_JABUS_BELLY_BASEMENT_POT_3] = Location::Pot(RC_JABU_JABUS_BELLY_BASEMENT_POT_3, RCQUEST_VANILLA, RCAREA_JABU_JABUS_BELLY, SCENE_JABU_JABU, TWO_ACTOR_PARAMS(650, -2344), "Basement Pot 3", RHT_POT_JABU_JABUS_BELLY, RG_DEKU_NUTS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_JABU_JABUS_BELLY_BASEMENT_POT_3)); - locationTable[RC_JABU_JABUS_BELLY_TWO_OCTOROK_POT_1] = Location::Pot(RC_JABU_JABUS_BELLY_TWO_OCTOROK_POT_1, RCQUEST_VANILLA, RCAREA_JABU_JABUS_BELLY, SCENE_JABU_JABU, TWO_ACTOR_PARAMS(-1127, -2271), "Two Octorok Pot 1", RHT_POT_JABU_JABUS_BELLY, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_JABU_JABUS_BELLY_TWO_OCTOROK_POT_1)); - locationTable[RC_JABU_JABUS_BELLY_TWO_OCTOROK_POT_2] = Location::Pot(RC_JABU_JABUS_BELLY_TWO_OCTOROK_POT_2, RCQUEST_VANILLA, RCAREA_JABU_JABUS_BELLY, SCENE_JABU_JABU, TWO_ACTOR_PARAMS(-1178, -2272), "Two Octorok Pot 2", RHT_POT_JABU_JABUS_BELLY, RG_RED_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_JABU_JABUS_BELLY_TWO_OCTOROK_POT_2)); - locationTable[RC_JABU_JABUS_BELLY_TWO_OCTOROK_POT_3] = Location::Pot(RC_JABU_JABUS_BELLY_TWO_OCTOROK_POT_3, RCQUEST_VANILLA, RCAREA_JABU_JABUS_BELLY, SCENE_JABU_JABU, TWO_ACTOR_PARAMS(-1150, -2248), "Two Octorok Pot 3", RHT_POT_JABU_JABUS_BELLY, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_JABU_JABUS_BELLY_TWO_OCTOROK_POT_3)); - locationTable[RC_JABU_JABUS_BELLY_TWO_OCTOROK_POT_4] = Location::Pot(RC_JABU_JABUS_BELLY_TWO_OCTOROK_POT_4, RCQUEST_VANILLA, RCAREA_JABU_JABUS_BELLY, SCENE_JABU_JABU, TWO_ACTOR_PARAMS(-1131, -2221), "Two Octorok Pot 4", RHT_POT_JABU_JABUS_BELLY, RG_RED_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_JABU_JABUS_BELLY_TWO_OCTOROK_POT_4)); - locationTable[RC_JABU_JABUS_BELLY_TWO_OCTOROK_POT_5] = Location::Pot(RC_JABU_JABUS_BELLY_TWO_OCTOROK_POT_5, RCQUEST_VANILLA, RCAREA_JABU_JABUS_BELLY, SCENE_JABU_JABU, TWO_ACTOR_PARAMS(-1173, -2227), "Two Octorok Pot 5", RHT_POT_JABU_JABUS_BELLY, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_JABU_JABUS_BELLY_TWO_OCTOROK_POT_5)); - locationTable[RC_FOREST_TEMPLE_LOBBY_POT_1] = Location::Pot(RC_FOREST_TEMPLE_LOBBY_POT_1, RCQUEST_VANILLA, RCAREA_FOREST_TEMPLE, SCENE_FOREST_TEMPLE, TWO_ACTOR_PARAMS(720, -1037), "Lobby Pot 1", RHT_POT_FOREST_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FOREST_TEMPLE_LOBBY_POT_1)); - locationTable[RC_FOREST_TEMPLE_LOBBY_POT_2] = Location::Pot(RC_FOREST_TEMPLE_LOBBY_POT_2, RCQUEST_VANILLA, RCAREA_FOREST_TEMPLE, SCENE_FOREST_TEMPLE, TWO_ACTOR_PARAMS(675, -989), "Lobby Pot 2", RHT_POT_FOREST_TEMPLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FOREST_TEMPLE_LOBBY_POT_2)); - locationTable[RC_FOREST_TEMPLE_LOBBY_POT_3] = Location::Pot(RC_FOREST_TEMPLE_LOBBY_POT_3, RCQUEST_VANILLA, RCAREA_FOREST_TEMPLE, SCENE_FOREST_TEMPLE, TWO_ACTOR_PARAMS(630, -943), "Lobby Pot 3", RHT_POT_FOREST_TEMPLE, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FOREST_TEMPLE_LOBBY_POT_3)); - locationTable[RC_FOREST_TEMPLE_LOBBY_POT_4] = Location::Pot(RC_FOREST_TEMPLE_LOBBY_POT_4, RCQUEST_VANILLA, RCAREA_FOREST_TEMPLE, SCENE_FOREST_TEMPLE, TWO_ACTOR_PARAMS(-384, -937), "Lobby Pot 4", RHT_POT_FOREST_TEMPLE, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FOREST_TEMPLE_LOBBY_POT_4)); - locationTable[RC_FOREST_TEMPLE_LOBBY_POT_5] = Location::Pot(RC_FOREST_TEMPLE_LOBBY_POT_5, RCQUEST_VANILLA, RCAREA_FOREST_TEMPLE, SCENE_FOREST_TEMPLE, TWO_ACTOR_PARAMS(-429, -981), "Lobby Pot 5", RHT_POT_FOREST_TEMPLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FOREST_TEMPLE_LOBBY_POT_5)); - locationTable[RC_FOREST_TEMPLE_LOBBY_POT_6] = Location::Pot(RC_FOREST_TEMPLE_LOBBY_POT_6, RCQUEST_VANILLA, RCAREA_FOREST_TEMPLE, SCENE_FOREST_TEMPLE, TWO_ACTOR_PARAMS(-477, -1034), "Lobby Pot 6", RHT_POT_FOREST_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FOREST_TEMPLE_LOBBY_POT_6)); - locationTable[RC_FOREST_TEMPLE_LOWER_STALFOS_POT_1] = Location::Pot(RC_FOREST_TEMPLE_LOWER_STALFOS_POT_1, RCQUEST_VANILLA, RCAREA_FOREST_TEMPLE, SCENE_FOREST_TEMPLE, TWO_ACTOR_PARAMS(90, -3583), "Lower Stalfos Pot 1", RHT_POT_FOREST_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FOREST_TEMPLE_LOWER_STALFOS_POT_1)); - locationTable[RC_FOREST_TEMPLE_LOWER_STALFOS_POT_2] = Location::Pot(RC_FOREST_TEMPLE_LOWER_STALFOS_POT_2, RCQUEST_VANILLA, RCAREA_FOREST_TEMPLE, SCENE_FOREST_TEMPLE, TWO_ACTOR_PARAMS(142, -3583), "Lower Stalfos Pot 2", RHT_POT_FOREST_TEMPLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FOREST_TEMPLE_LOWER_STALFOS_POT_2)); - locationTable[RC_FOREST_TEMPLE_GREEN_POE_POT_1] = Location::Pot(RC_FOREST_TEMPLE_GREEN_POE_POT_1, RCQUEST_VANILLA, RCAREA_FOREST_TEMPLE, SCENE_FOREST_TEMPLE, TWO_ACTOR_PARAMS(1647, -1529), "Green Poe Pot 1", RHT_POT_FOREST_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FOREST_TEMPLE_GREEN_POE_POT_1)); - locationTable[RC_FOREST_TEMPLE_GREEN_POE_POT_2] = Location::Pot(RC_FOREST_TEMPLE_GREEN_POE_POT_2, RCQUEST_VANILLA, RCAREA_FOREST_TEMPLE, SCENE_FOREST_TEMPLE, TWO_ACTOR_PARAMS(1645, -1588), "Green Poe Pot 2", RHT_POT_FOREST_TEMPLE, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FOREST_TEMPLE_GREEN_POE_POT_2)); - locationTable[RC_FOREST_TEMPLE_UPPER_STALFOS_POT_1] = Location::Pot(RC_FOREST_TEMPLE_UPPER_STALFOS_POT_1, RCQUEST_VANILLA, RCAREA_FOREST_TEMPLE, SCENE_FOREST_TEMPLE, TWO_ACTOR_PARAMS(32, -3012), "Upper Stalfos Pot 1", RHT_POT_FOREST_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FOREST_TEMPLE_UPPER_STALFOS_POT_1)); - locationTable[RC_FOREST_TEMPLE_UPPER_STALFOS_POT_2] = Location::Pot(RC_FOREST_TEMPLE_UPPER_STALFOS_POT_2, RCQUEST_VANILLA, RCAREA_FOREST_TEMPLE, SCENE_FOREST_TEMPLE, TWO_ACTOR_PARAMS(202, -3012), "Upper Stalfos Pot 2", RHT_POT_FOREST_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FOREST_TEMPLE_UPPER_STALFOS_POT_2)); - locationTable[RC_FOREST_TEMPLE_UPPER_STALFOS_POT_3] = Location::Pot(RC_FOREST_TEMPLE_UPPER_STALFOS_POT_3, RCQUEST_VANILLA, RCAREA_FOREST_TEMPLE, SCENE_FOREST_TEMPLE, TWO_ACTOR_PARAMS(30, -3631), "Upper Stalfos Pot 3", RHT_POT_FOREST_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FOREST_TEMPLE_UPPER_STALFOS_POT_3)); - locationTable[RC_FOREST_TEMPLE_UPPER_STALFOS_POT_4] = Location::Pot(RC_FOREST_TEMPLE_UPPER_STALFOS_POT_4, RCQUEST_VANILLA, RCAREA_FOREST_TEMPLE, SCENE_FOREST_TEMPLE, TWO_ACTOR_PARAMS(206, -3631), "Upper Stalfos Pot 4", RHT_POT_FOREST_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FOREST_TEMPLE_UPPER_STALFOS_POT_4)); - locationTable[RC_FOREST_TEMPLE_BLUE_POE_POT_1] = Location::Pot(RC_FOREST_TEMPLE_BLUE_POE_POT_1, RCQUEST_VANILLA, RCAREA_FOREST_TEMPLE, SCENE_FOREST_TEMPLE, TWO_ACTOR_PARAMS(830, -3639), "Blue Poe Pot 1", RHT_POT_FOREST_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FOREST_TEMPLE_BLUE_POE_POT_1)); - locationTable[RC_FOREST_TEMPLE_BLUE_POE_POT_2] = Location::Pot(RC_FOREST_TEMPLE_BLUE_POE_POT_2, RCQUEST_VANILLA, RCAREA_FOREST_TEMPLE, SCENE_FOREST_TEMPLE, TWO_ACTOR_PARAMS(883, -3640), "Blue Poe Pot 2", RHT_POT_FOREST_TEMPLE, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FOREST_TEMPLE_BLUE_POE_POT_2)); - locationTable[RC_FOREST_TEMPLE_BLUE_POE_POT_3] = Location::Pot(RC_FOREST_TEMPLE_BLUE_POE_POT_3, RCQUEST_VANILLA, RCAREA_FOREST_TEMPLE, SCENE_FOREST_TEMPLE, TWO_ACTOR_PARAMS(941, -3640), "Blue Poe Pot 3", RHT_POT_FOREST_TEMPLE, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FOREST_TEMPLE_BLUE_POE_POT_3)); - locationTable[RC_FOREST_TEMPLE_FROZEN_EYE_POT_1] = Location::Pot(RC_FOREST_TEMPLE_FROZEN_EYE_POT_1, RCQUEST_VANILLA, RCAREA_FOREST_TEMPLE, SCENE_FOREST_TEMPLE, TWO_ACTOR_PARAMS(2312, -874), "Frozen Eye Pot 1", RHT_POT_FOREST_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FOREST_TEMPLE_FROZEN_EYE_POT_1)); - locationTable[RC_FOREST_TEMPLE_FROZEN_EYE_POT_2] = Location::Pot(RC_FOREST_TEMPLE_FROZEN_EYE_POT_2, RCQUEST_VANILLA, RCAREA_FOREST_TEMPLE, SCENE_FOREST_TEMPLE, TWO_ACTOR_PARAMS(2364, -873), "Frozen Eye Pot 2", RHT_POT_FOREST_TEMPLE, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FOREST_TEMPLE_FROZEN_EYE_POT_2)); - locationTable[RC_FIRE_TEMPLE_NEAR_BOSS_POT_1] = Location::Pot(RC_FIRE_TEMPLE_NEAR_BOSS_POT_1, RCQUEST_VANILLA, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(-1086, -714), "Near Boss Pot 1", RHT_POT_FIRE_TEMPLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_NEAR_BOSS_POT_1)); - locationTable[RC_FIRE_TEMPLE_NEAR_BOSS_POT_2] = Location::Pot(RC_FIRE_TEMPLE_NEAR_BOSS_POT_2, RCQUEST_VANILLA, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(-1138, -713), "Near Boss Pot 2", RHT_POT_FIRE_TEMPLE, RG_BOMBS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_NEAR_BOSS_POT_2)); - locationTable[RC_FIRE_TEMPLE_NEAR_BOSS_POT_3] = Location::Pot(RC_FIRE_TEMPLE_NEAR_BOSS_POT_3, RCQUEST_VANILLA, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(-1087, -765), "Near Boss Pot 3", RHT_POT_FIRE_TEMPLE, RG_BOMBS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_NEAR_BOSS_POT_3)); - locationTable[RC_FIRE_TEMPLE_NEAR_BOSS_POT_4] = Location::Pot(RC_FIRE_TEMPLE_NEAR_BOSS_POT_4, RCQUEST_VANILLA, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(-1139, -766), "Near Boss Pot 4", RHT_POT_FIRE_TEMPLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_NEAR_BOSS_POT_4)); - locationTable[RC_FIRE_TEMPLE_BIG_LAVA_POT_1] = Location::Pot(RC_FIRE_TEMPLE_BIG_LAVA_POT_1, RCQUEST_VANILLA, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(2226, -754), "Big Lava Pot 1", RHT_POT_FIRE_TEMPLE, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_BIG_LAVA_POT_1)); - locationTable[RC_FIRE_TEMPLE_BIG_LAVA_POT_2] = Location::Pot(RC_FIRE_TEMPLE_BIG_LAVA_POT_2, RCQUEST_VANILLA, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(2226, -809), "Big Lava Pot 2", RHT_POT_FIRE_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_BIG_LAVA_POT_2)); - locationTable[RC_FIRE_TEMPLE_BIG_LAVA_POT_3] = Location::Pot(RC_FIRE_TEMPLE_BIG_LAVA_POT_3, RCQUEST_VANILLA, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(2227, -862), "Big Lava Pot 3", RHT_POT_FIRE_TEMPLE, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_BIG_LAVA_POT_3)); - locationTable[RC_FIRE_TEMPLE_FLAME_MAZE_LEFT_POT_1] = Location::Pot(RC_FIRE_TEMPLE_FLAME_MAZE_LEFT_POT_1, RCQUEST_VANILLA, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(-2388, 953), "Flame Maze Left Pot 1", RHT_POT_FIRE_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_FLAME_MAZE_LEFT_POT_1)); - locationTable[RC_FIRE_TEMPLE_FLAME_MAZE_LEFT_POT_2] = Location::Pot(RC_FIRE_TEMPLE_FLAME_MAZE_LEFT_POT_2, RCQUEST_VANILLA, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(-2423, 920), "Flame Maze Left Pot 2", RHT_POT_FIRE_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_FLAME_MAZE_LEFT_POT_2)); - locationTable[RC_FIRE_TEMPLE_FLAME_MAZE_LEFT_POT_3] = Location::Pot(RC_FIRE_TEMPLE_FLAME_MAZE_LEFT_POT_3, RCQUEST_VANILLA, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(-2442, 715), "Flame Maze Left Pot 3", RHT_POT_FIRE_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_FLAME_MAZE_LEFT_POT_3)); - locationTable[RC_FIRE_TEMPLE_FLAME_MAZE_LEFT_POT_4] = Location::Pot(RC_FIRE_TEMPLE_FLAME_MAZE_LEFT_POT_4, RCQUEST_VANILLA, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(-2408, 680), "Flame Maze Left Pot 4", RHT_POT_FIRE_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_FLAME_MAZE_LEFT_POT_4)); - locationTable[RC_FIRE_TEMPLE_FLAME_MAZE_RIGHT_POT_1] = Location::Pot(RC_FIRE_TEMPLE_FLAME_MAZE_RIGHT_POT_1, RCQUEST_VANILLA, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(-2208, -168), "Flame Maze Right Pot 1", RHT_POT_FIRE_TEMPLE, RG_BOMBS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_FLAME_MAZE_RIGHT_POT_1)); - locationTable[RC_FIRE_TEMPLE_FLAME_MAZE_RIGHT_POT_2] = Location::Pot(RC_FIRE_TEMPLE_FLAME_MAZE_RIGHT_POT_2, RCQUEST_VANILLA, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(-2253, -167), "Flame Maze Right Pot 2", RHT_POT_FIRE_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_FLAME_MAZE_RIGHT_POT_2)); - locationTable[RC_FIRE_TEMPLE_FLAME_MAZE_RIGHT_POT_3] = Location::Pot(RC_FIRE_TEMPLE_FLAME_MAZE_RIGHT_POT_3, RCQUEST_VANILLA, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(-2657, -591), "Flame Maze Right Pot 3", RHT_POT_FIRE_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_FLAME_MAZE_RIGHT_POT_3)); - locationTable[RC_FIRE_TEMPLE_FLAME_MAZE_RIGHT_POT_4] = Location::Pot(RC_FIRE_TEMPLE_FLAME_MAZE_RIGHT_POT_4, RCQUEST_VANILLA, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(-2657, -635), "Flame Maze Right Pot 4", RHT_POT_FIRE_TEMPLE, RG_BOMBS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_FLAME_MAZE_RIGHT_POT_4)); - locationTable[RC_WATER_TEMPLE_MAIN_LEVEL_2_POT_1] = Location::Pot(RC_WATER_TEMPLE_MAIN_LEVEL_2_POT_1, RCQUEST_VANILLA, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(330, -198), "Main Level 2 Pot 1", RHT_POT_WATER_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_MAIN_LEVEL_2_POT_1)); - locationTable[RC_WATER_TEMPLE_MAIN_LEVEL_2_POT_2] = Location::Pot(RC_WATER_TEMPLE_MAIN_LEVEL_2_POT_2, RCQUEST_VANILLA, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(331, -168), "Main Level 2 Pot 2", RHT_POT_WATER_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_MAIN_LEVEL_2_POT_2)); - locationTable[RC_WATER_TEMPLE_MAIN_LEVEL_1_POT_1] = Location::Pot(RC_WATER_TEMPLE_MAIN_LEVEL_1_POT_1, RCQUEST_VANILLA, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(-241, -1193), "Main Level 1 Pot 1", RHT_POT_WATER_TEMPLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_MAIN_LEVEL_1_POT_1)); - locationTable[RC_WATER_TEMPLE_MAIN_LEVEL_1_POT_2] = Location::Pot(RC_WATER_TEMPLE_MAIN_LEVEL_1_POT_2, RCQUEST_VANILLA, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(-117, -1192), "Main Level 1 Pot 2", RHT_POT_WATER_TEMPLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_MAIN_LEVEL_1_POT_2)); - locationTable[RC_WATER_TEMPLE_TORCH_POT_1] = Location::Pot(RC_WATER_TEMPLE_TORCH_POT_1, RCQUEST_VANILLA, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(1123, 62), "Torch Pot 1", RHT_POT_WATER_TEMPLE, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_TORCH_POT_1)); - locationTable[RC_WATER_TEMPLE_TORCH_POT_2] = Location::Pot(RC_WATER_TEMPLE_TORCH_POT_2, RCQUEST_VANILLA, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(1123, 293), "Torch Pot 2", RHT_POT_WATER_TEMPLE, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_TORCH_POT_2)); - locationTable[RC_WATER_TEMPLE_NEAR_COMPASS_POT_1] = Location::Pot(RC_WATER_TEMPLE_NEAR_COMPASS_POT_1, RCQUEST_VANILLA, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(1222, -617), "Near Compass Pot 1", RHT_POT_WATER_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_NEAR_COMPASS_POT_1)); - locationTable[RC_WATER_TEMPLE_NEAR_COMPASS_POT_2] = Location::Pot(RC_WATER_TEMPLE_NEAR_COMPASS_POT_2, RCQUEST_VANILLA, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(1172, -617), "Near Compass Pot 2", RHT_POT_WATER_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_NEAR_COMPASS_POT_2)); - locationTable[RC_WATER_TEMPLE_NEAR_COMPASS_POT_3] = Location::Pot(RC_WATER_TEMPLE_NEAR_COMPASS_POT_3, RCQUEST_VANILLA, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(1122, -617), "Near Compass Pot 3", RHT_POT_WATER_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_NEAR_COMPASS_POT_3)); - locationTable[RC_WATER_TEMPLE_CENTRAL_BOW_POT_1] = Location::Pot(RC_WATER_TEMPLE_CENTRAL_BOW_POT_1, RCQUEST_VANILLA, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(688, 1008), "Central Bow Pot 1", RHT_POT_WATER_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_CENTRAL_BOW_POT_1)); - locationTable[RC_WATER_TEMPLE_CENTRAL_BOW_POT_2] = Location::Pot(RC_WATER_TEMPLE_CENTRAL_BOW_POT_2, RCQUEST_VANILLA, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(631, 1008), "Central Bow Pot 2", RHT_POT_WATER_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_CENTRAL_BOW_POT_2)); - locationTable[RC_WATER_TEMPLE_BEHIND_GATE_POT_1] = Location::Pot(RC_WATER_TEMPLE_BEHIND_GATE_POT_1, RCQUEST_VANILLA, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(-2313, 944), "Behind Gate Pot 1", RHT_POT_WATER_TEMPLE, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_BEHIND_GATE_POT_1)); - locationTable[RC_WATER_TEMPLE_BEHIND_GATE_POT_2] = Location::Pot(RC_WATER_TEMPLE_BEHIND_GATE_POT_2, RCQUEST_VANILLA, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(-2313, 905), "Behind Gate Pot 2", RHT_POT_WATER_TEMPLE, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_BEHIND_GATE_POT_2)); - locationTable[RC_WATER_TEMPLE_BEHIND_GATE_POT_3] = Location::Pot(RC_WATER_TEMPLE_BEHIND_GATE_POT_3, RCQUEST_VANILLA, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(-2314, 808), "Behind Gate Pot 3", RHT_POT_WATER_TEMPLE, RG_BOMBS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_BEHIND_GATE_POT_3)); - locationTable[RC_WATER_TEMPLE_BEHIND_GATE_POT_4] = Location::Pot(RC_WATER_TEMPLE_BEHIND_GATE_POT_4, RCQUEST_VANILLA, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(-2314, 770), "Behind Gate Pot 4", RHT_POT_WATER_TEMPLE, RG_BOMBS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_BEHIND_GATE_POT_4)); - locationTable[RC_WATER_TEMPLE_BASEMENT_BLOCK_PUZZLE_POT_1] = Location::Pot(RC_WATER_TEMPLE_BASEMENT_BLOCK_PUZZLE_POT_1, RCQUEST_VANILLA, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(-28, -3817), "Basement Block Puzzle Pot 1", RHT_POT_WATER_TEMPLE, RG_BOMBS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_BASEMENT_BLOCK_PUZZLE_POT_1)); - locationTable[RC_WATER_TEMPLE_BASEMENT_BLOCK_PUZZLE_POT_2] = Location::Pot(RC_WATER_TEMPLE_BASEMENT_BLOCK_PUZZLE_POT_2, RCQUEST_VANILLA, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(28, -3817), "Basement Block Puzzle Pot 2", RHT_POT_WATER_TEMPLE, RG_BOMBS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_BASEMENT_BLOCK_PUZZLE_POT_2)); - locationTable[RC_WATER_TEMPLE_RIVER_POT_1] = Location::Pot(RC_WATER_TEMPLE_RIVER_POT_1, RCQUEST_VANILLA, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(-2226, -2487), "River Pot 1", RHT_POT_WATER_TEMPLE, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_RIVER_POT_1)); - locationTable[RC_WATER_TEMPLE_RIVER_POT_2] = Location::Pot(RC_WATER_TEMPLE_RIVER_POT_2, RCQUEST_VANILLA, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(-2184, -2456), "River Pot 2", RHT_POT_WATER_TEMPLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_RIVER_POT_2)); - locationTable[RC_WATER_TEMPLE_LIKE_LIKE_POT_1] = Location::Pot(RC_WATER_TEMPLE_LIKE_LIKE_POT_1, RCQUEST_VANILLA, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(-3188, -1628), "Like Like Pot 1", RHT_POT_WATER_TEMPLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_LIKE_LIKE_POT_1)); - locationTable[RC_WATER_TEMPLE_LIKE_LIKE_POT_2] = Location::Pot(RC_WATER_TEMPLE_LIKE_LIKE_POT_2, RCQUEST_VANILLA, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(-3056, -1626), "Like Like Pot 2", RHT_POT_WATER_TEMPLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_LIKE_LIKE_POT_2)); - locationTable[RC_WATER_TEMPLE_BOSS_KEY_POT_1] = Location::Pot(RC_WATER_TEMPLE_BOSS_KEY_POT_1, RCQUEST_VANILLA, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(-1150, -3031), "Boss Key Pot 1", RHT_POT_WATER_TEMPLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_BOSS_KEY_POT_1)); - locationTable[RC_WATER_TEMPLE_BOSS_KEY_POT_2] = Location::Pot(RC_WATER_TEMPLE_BOSS_KEY_POT_2, RCQUEST_VANILLA, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(-1417, -3025), "Boss Key Pot 2", RHT_POT_WATER_TEMPLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_BOSS_KEY_POT_2)); - locationTable[RC_SHADOW_TEMPLE_NEAR_DEAD_HAND_POT_1] = Location::Pot(RC_SHADOW_TEMPLE_NEAR_DEAD_HAND_POT_1, RCQUEST_VANILLA, RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(-1806, -344), "Near Dead Hand Pot 1", RHT_POT_SHADOW_TEMPLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_NEAR_DEAD_HAND_POT_1)); - locationTable[RC_SHADOW_TEMPLE_WHISPERING_WALLS_POT_1] = Location::Pot(RC_SHADOW_TEMPLE_WHISPERING_WALLS_POT_1, RCQUEST_VANILLA, RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(-1721, 61), "Whispering Walls Pot 1", RHT_POT_SHADOW_TEMPLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_WHISPERING_WALLS_POT_1)); - locationTable[RC_SHADOW_TEMPLE_WHISPERING_WALLS_POT_2] = Location::Pot(RC_SHADOW_TEMPLE_WHISPERING_WALLS_POT_2, RCQUEST_VANILLA, RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(-1407, 61), "Whispering Walls Pot 2", RHT_POT_SHADOW_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_WHISPERING_WALLS_POT_2)); - locationTable[RC_SHADOW_TEMPLE_WHISPERING_WALLS_POT_3] = Location::Pot(RC_SHADOW_TEMPLE_WHISPERING_WALLS_POT_3, RCQUEST_VANILLA, RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(-1614, 61), "Whispering Walls Pot 3", RHT_POT_SHADOW_TEMPLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_WHISPERING_WALLS_POT_3)); - locationTable[RC_SHADOW_TEMPLE_WHISPERING_WALLS_POT_4] = Location::Pot(RC_SHADOW_TEMPLE_WHISPERING_WALLS_POT_4, RCQUEST_VANILLA, RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(-1055, -257), "Whispering Walls Pot 4", RHT_POT_SHADOW_TEMPLE, RG_DEKU_NUTS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_WHISPERING_WALLS_POT_4)); - locationTable[RC_SHADOW_TEMPLE_WHISPERING_WALLS_POT_5] = Location::Pot(RC_SHADOW_TEMPLE_WHISPERING_WALLS_POT_5, RCQUEST_VANILLA, RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(-1050, -130), "Whispering Walls Pot 5", RHT_POT_SHADOW_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_WHISPERING_WALLS_POT_5)); - locationTable[RC_SHADOW_TEMPLE_MAP_CHEST_POT_1] = Location::Pot(RC_SHADOW_TEMPLE_MAP_CHEST_POT_1, RCQUEST_VANILLA, RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(-665, -760), "Map Chest Pot 1", RHT_POT_SHADOW_TEMPLE, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_MAP_CHEST_POT_1)); - locationTable[RC_SHADOW_TEMPLE_MAP_CHEST_POT_2] = Location::Pot(RC_SHADOW_TEMPLE_MAP_CHEST_POT_2, RCQUEST_VANILLA, RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(-929, -748), "Map Chest Pot 2", RHT_POT_SHADOW_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_MAP_CHEST_POT_2)); - locationTable[RC_SHADOW_TEMPLE_FALLING_SPIKES_POT_1] = Location::Pot(RC_SHADOW_TEMPLE_FALLING_SPIKES_POT_1, RCQUEST_VANILLA, RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(614, 3579), "Falling Spikes Pot 1", RHT_POT_SHADOW_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_FALLING_SPIKES_POT_1)); - locationTable[RC_SHADOW_TEMPLE_FALLING_SPIKES_POT_2] = Location::Pot(RC_SHADOW_TEMPLE_FALLING_SPIKES_POT_2, RCQUEST_VANILLA, RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(798, 3574), "Falling Spikes Pot 2", RHT_POT_SHADOW_TEMPLE, RG_BOMBS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_FALLING_SPIKES_POT_2)); - locationTable[RC_SHADOW_TEMPLE_FALLING_SPIKES_POT_3] = Location::Pot(RC_SHADOW_TEMPLE_FALLING_SPIKES_POT_3, RCQUEST_VANILLA, RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(1173, 3707), "Falling Spikes Pot 3", RHT_POT_SHADOW_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_FALLING_SPIKES_POT_3)); - locationTable[RC_SHADOW_TEMPLE_FALLING_SPIKES_POT_4] = Location::Pot(RC_SHADOW_TEMPLE_FALLING_SPIKES_POT_4, RCQUEST_VANILLA, RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(1173, 3605), "Falling Spikes Pot 4", RHT_POT_SHADOW_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_FALLING_SPIKES_POT_4)); - locationTable[RC_SHADOW_TEMPLE_AFTER_WIND_POT_1] = Location::Pot(RC_SHADOW_TEMPLE_AFTER_WIND_POT_1, RCQUEST_VANILLA, RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(4222, -916), "After Wind Pot 1", RHT_POT_SHADOW_TEMPLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_AFTER_WIND_POT_1)); - locationTable[RC_SHADOW_TEMPLE_AFTER_WIND_POT_2] = Location::Pot(RC_SHADOW_TEMPLE_AFTER_WIND_POT_2, RCQUEST_VANILLA, RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(4549, -922), "After Wind Pot 2", RHT_POT_SHADOW_TEMPLE, RG_DEKU_NUTS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_AFTER_WIND_POT_2)); - locationTable[RC_SHADOW_TEMPLE_SPIKE_WALLS_POT_1] = Location::Pot(RC_SHADOW_TEMPLE_SPIKE_WALLS_POT_1, RCQUEST_VANILLA, RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(-4303, -2657), "Spike Walls Pot 1", RHT_POT_SHADOW_TEMPLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_SPIKE_WALLS_POT_1)); - locationTable[RC_SHADOW_TEMPLE_FLOORMASTER_POT_1] = Location::Pot(RC_SHADOW_TEMPLE_FLOORMASTER_POT_1, RCQUEST_VANILLA, RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(-4575, -811), "Floormaster Pot 1", RHT_POT_SHADOW_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_FLOORMASTER_POT_1)); - locationTable[RC_SHADOW_TEMPLE_FLOORMASTER_POT_2] = Location::Pot(RC_SHADOW_TEMPLE_FLOORMASTER_POT_2, RCQUEST_VANILLA, RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(-4036, -811), "Floormaster Pot 2", RHT_POT_SHADOW_TEMPLE, RG_ARROWS_30, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_FLOORMASTER_POT_2)); - locationTable[RC_SHADOW_TEMPLE_AFTER_BOAT_POT_1] = Location::Pot(RC_SHADOW_TEMPLE_AFTER_BOAT_POT_1, RCQUEST_VANILLA, RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(-2400, -1470), "After Boat Pot 1", RHT_POT_SHADOW_TEMPLE, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_AFTER_BOAT_POT_1)); - locationTable[RC_SHADOW_TEMPLE_AFTER_BOAT_POT_2] = Location::Pot(RC_SHADOW_TEMPLE_AFTER_BOAT_POT_2, RCQUEST_VANILLA, RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(-2230, -1470), "After Boat Pot 2", RHT_POT_SHADOW_TEMPLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_AFTER_BOAT_POT_2)); - locationTable[RC_SHADOW_TEMPLE_AFTER_BOAT_POT_3] = Location::Pot(RC_SHADOW_TEMPLE_AFTER_BOAT_POT_3, RCQUEST_VANILLA, RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(-2859, -497), "After Boat Pot 3", RHT_POT_SHADOW_TEMPLE, RG_ARROWS_30, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_AFTER_BOAT_POT_3)); - locationTable[RC_SHADOW_TEMPLE_AFTER_BOAT_POT_4] = Location::Pot(RC_SHADOW_TEMPLE_AFTER_BOAT_POT_4, RCQUEST_VANILLA, RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(-2624, -492), "After Boat Pot 4", RHT_POT_SHADOW_TEMPLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_AFTER_BOAT_POT_4)); - locationTable[RC_SPIRIT_TEMPLE_LOBBY_POT_1] = Location::Pot(RC_SPIRIT_TEMPLE_LOBBY_POT_1, RCQUEST_VANILLA, RCAREA_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(-181, 233), "Lobby Pot 1", RHT_POT_SPIRIT_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_LOBBY_POT_1)); - locationTable[RC_SPIRIT_TEMPLE_LOBBY_POT_2] = Location::Pot(RC_SPIRIT_TEMPLE_LOBBY_POT_2, RCQUEST_VANILLA, RCAREA_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(184, 231), "Lobby Pot 2", RHT_POT_SPIRIT_TEMPLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_LOBBY_POT_2)); - locationTable[RC_SPIRIT_TEMPLE_ANUBIS_POT_1] = Location::Pot(RC_SPIRIT_TEMPLE_ANUBIS_POT_1, RCQUEST_VANILLA, RCAREA_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(-975, -1751), "Anubis Pot 1", RHT_POT_SPIRIT_TEMPLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_ANUBIS_POT_1)); - locationTable[RC_SPIRIT_TEMPLE_ANUBIS_POT_2] = Location::Pot(RC_SPIRIT_TEMPLE_ANUBIS_POT_2, RCQUEST_VANILLA, RCAREA_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(-928, -1827), "Anubis Pot 2", RHT_POT_SPIRIT_TEMPLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_ANUBIS_POT_2)); - locationTable[RC_SPIRIT_TEMPLE_ANUBIS_POT_3] = Location::Pot(RC_SPIRIT_TEMPLE_ANUBIS_POT_3, RCQUEST_VANILLA, RCAREA_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(-1211, -1530), "Anubis Pot 3", RHT_POT_SPIRIT_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_ANUBIS_POT_3)); - locationTable[RC_SPIRIT_TEMPLE_ANUBIS_POT_4] = Location::Pot(RC_SPIRIT_TEMPLE_ANUBIS_POT_4, RCQUEST_VANILLA, RCAREA_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(-1055, -1680), "Anubis Pot 4", RHT_POT_SPIRIT_TEMPLE, RG_DEKU_SHIELD, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_ANUBIS_POT_4)); - locationTable[RC_SPIRIT_TEMPLE_CHILD_CLIMB_POT_1] = Location::Pot(RC_SPIRIT_TEMPLE_CHILD_CLIMB_POT_1, RCQUEST_VANILLA, RCAREA_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(-1101, -1305), "Child Climb Pot 1", RHT_POT_SPIRIT_TEMPLE, RG_DEKU_SEEDS_30, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_CHILD_CLIMB_POT_1)); - locationTable[RC_SPIRIT_TEMPLE_AFTER_SUN_BLOCK_POT_1] = Location::Pot(RC_SPIRIT_TEMPLE_AFTER_SUN_BLOCK_POT_1, RCQUEST_VANILLA, RCAREA_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(-1781, 830), "After Sun Block Pot 1", RHT_POT_SPIRIT_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_AFTER_SUN_BLOCK_POT_1)); - locationTable[RC_SPIRIT_TEMPLE_AFTER_SUN_BLOCK_POT_2] = Location::Pot(RC_SPIRIT_TEMPLE_AFTER_SUN_BLOCK_POT_2, RCQUEST_VANILLA, RCAREA_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(-1617, 830), "After Sun Block Pot 2", RHT_POT_SPIRIT_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_AFTER_SUN_BLOCK_POT_2)); - locationTable[RC_SPIRIT_TEMPLE_CENTRAL_CHAMBER_POT_1] = Location::Pot(RC_SPIRIT_TEMPLE_CENTRAL_CHAMBER_POT_1, RCQUEST_VANILLA, RCAREA_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(-600, -1213), "Central Chamber Pot 1", RHT_POT_SPIRIT_TEMPLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_CENTRAL_CHAMBER_POT_1)); - locationTable[RC_SPIRIT_TEMPLE_CENTRAL_CHAMBER_POT_2] = Location::Pot(RC_SPIRIT_TEMPLE_CENTRAL_CHAMBER_POT_2, RCQUEST_VANILLA, RCAREA_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(-564, -1180), "Central Chamber Pot 2", RHT_POT_SPIRIT_TEMPLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_CENTRAL_CHAMBER_POT_2)); - locationTable[RC_SPIRIT_TEMPLE_CENTRAL_CHAMBER_POT_3] = Location::Pot(RC_SPIRIT_TEMPLE_CENTRAL_CHAMBER_POT_3, RCQUEST_VANILLA, RCAREA_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(-526, -1213), "Central Chamber Pot 3", RHT_POT_SPIRIT_TEMPLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_CENTRAL_CHAMBER_POT_3)); - locationTable[RC_SPIRIT_TEMPLE_CENTRAL_CHAMBER_POT_4] = Location::Pot(RC_SPIRIT_TEMPLE_CENTRAL_CHAMBER_POT_4, RCQUEST_VANILLA, RCAREA_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(639, -1224), "Central Chamber Pot 4", RHT_POT_SPIRIT_TEMPLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_CENTRAL_CHAMBER_POT_4)); - locationTable[RC_SPIRIT_TEMPLE_CENTRAL_CHAMBER_POT_5] = Location::Pot(RC_SPIRIT_TEMPLE_CENTRAL_CHAMBER_POT_5, RCQUEST_VANILLA, RCAREA_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(671, -1179), "Central Chamber Pot 5", RHT_POT_SPIRIT_TEMPLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_CENTRAL_CHAMBER_POT_5)); - locationTable[RC_SPIRIT_TEMPLE_CENTRAL_CHAMBER_POT_6] = Location::Pot(RC_SPIRIT_TEMPLE_CENTRAL_CHAMBER_POT_6, RCQUEST_VANILLA, RCAREA_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(704, -1224), "Central Chamber Pot 6", RHT_POT_SPIRIT_TEMPLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_CENTRAL_CHAMBER_POT_6)); - locationTable[RC_SPIRIT_TEMPLE_BEAMOS_HALL_POT_1] = Location::Pot(RC_SPIRIT_TEMPLE_BEAMOS_HALL_POT_1, RCQUEST_VANILLA, RCAREA_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(819, -333), "Beamos Hall Pot 1", RHT_POT_SPIRIT_TEMPLE, RG_BOMBS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_BEAMOS_HALL_POT_1)); - locationTable[RC_GANONS_CASTLE_FOREST_TRIAL_POT_1] = Location::Pot(RC_GANONS_CASTLE_FOREST_TRIAL_POT_1, RCQUEST_VANILLA, RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(1725, 2336), "Forest Trial Pot 1", RHT_POT_GANONS_CASTLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_FOREST_TRIAL_POT_1)); - locationTable[RC_GANONS_CASTLE_FOREST_TRIAL_POT_2] = Location::Pot(RC_GANONS_CASTLE_FOREST_TRIAL_POT_2, RCQUEST_VANILLA, RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(1892, 2241), "Forest Trial Pot 2", RHT_POT_GANONS_CASTLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_FOREST_TRIAL_POT_2)); - locationTable[RC_GANONS_CASTLE_FIRE_TRIAL_POT_2] = Location::Pot(RC_GANONS_CASTLE_FIRE_TRIAL_POT_2, RCQUEST_VANILLA, RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(-1898, -3942), "Fire Trial Pot 2", RHT_POT_GANONS_CASTLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_FIRE_TRIAL_POT_2)); - locationTable[RC_GANONS_CASTLE_FIRE_TRIAL_POT_1] = Location::Pot(RC_GANONS_CASTLE_FIRE_TRIAL_POT_1, RCQUEST_VANILLA, RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(-2051, -3855), "Fire Trial Pot 1", RHT_POT_GANONS_CASTLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_FIRE_TRIAL_POT_1)); - locationTable[RC_GANONS_CASTLE_WATER_TRIAL_POT_1] = Location::Pot(RC_GANONS_CASTLE_WATER_TRIAL_POT_1, RCQUEST_VANILLA, RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(3558, -920), "Water Trial Pot 1", RHT_POT_GANONS_CASTLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_WATER_TRIAL_POT_1)); - locationTable[RC_GANONS_CASTLE_WATER_TRIAL_POT_2] = Location::Pot(RC_GANONS_CASTLE_WATER_TRIAL_POT_2, RCQUEST_VANILLA, RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(3558, -761), "Water Trial Pot 2", RHT_POT_GANONS_CASTLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_WATER_TRIAL_POT_2)); - locationTable[RC_GANONS_CASTLE_WATER_TRIAL_POT_3] = Location::Pot(RC_GANONS_CASTLE_WATER_TRIAL_POT_3, RCQUEST_VANILLA, RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(2822, -507), "Water Trial Pot 3", RHT_POT_GANONS_CASTLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_WATER_TRIAL_POT_3)); - locationTable[RC_GANONS_CASTLE_SHADOW_TRIAL_POT_1] = Location::Pot(RC_GANONS_CASTLE_SHADOW_TRIAL_POT_1, RCQUEST_VANILLA, RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(1234, -3418), "Shadow Trial Pot 1", RHT_POT_GANONS_CASTLE, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_SHADOW_TRIAL_POT_1)); - locationTable[RC_GANONS_CASTLE_SHADOW_TRIAL_POT_2] = Location::Pot(RC_GANONS_CASTLE_SHADOW_TRIAL_POT_2, RCQUEST_VANILLA, RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(1621, -3203), "Shadow Trial Pot 2", RHT_POT_GANONS_CASTLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_SHADOW_TRIAL_POT_2)); - locationTable[RC_GANONS_CASTLE_SHADOW_TRIAL_POT_3] = Location::Pot(RC_GANONS_CASTLE_SHADOW_TRIAL_POT_3, RCQUEST_VANILLA, RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(2067, -4592), "Shadow Trial Pot 3", RHT_POT_GANONS_CASTLE, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_SHADOW_TRIAL_POT_3)); - locationTable[RC_GANONS_CASTLE_SHADOW_TRIAL_POT_4] = Location::Pot(RC_GANONS_CASTLE_SHADOW_TRIAL_POT_4, RCQUEST_VANILLA, RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(2224, -4506), "Shadow Trial Pot 4", RHT_POT_GANONS_CASTLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_SHADOW_TRIAL_POT_4)); - locationTable[RC_GANONS_CASTLE_SPIRIT_TRIAL_POT_1] = Location::Pot(RC_GANONS_CASTLE_SPIRIT_TRIAL_POT_1, RCQUEST_VANILLA, RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(-1398, 1402), "Spirit Trial Pot 1", RHT_POT_GANONS_CASTLE, RG_DEKU_NUTS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_SPIRIT_TRIAL_POT_1)); - locationTable[RC_GANONS_CASTLE_SPIRIT_TRIAL_POT_2] = Location::Pot(RC_GANONS_CASTLE_SPIRIT_TRIAL_POT_2, RCQUEST_VANILLA, RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(-1237, 1494), "Spirit Trial Pot 2", RHT_POT_GANONS_CASTLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_SPIRIT_TRIAL_POT_2)); - locationTable[RC_GANONS_CASTLE_LIGHT_TRIAL_BOULDER_POT_1] = Location::Pot(RC_GANONS_CASTLE_LIGHT_TRIAL_BOULDER_POT_1, RCQUEST_VANILLA, RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(-2581, -839), "Light Trial Boulder Pot 1", RHT_POT_GANONS_CASTLE, RG_ARROWS_30, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_LIGHT_TRIAL_BOULDER_POT_1)); - locationTable[RC_GANONS_CASTLE_LIGHT_TRIAL_POT_1] = Location::Pot(RC_GANONS_CASTLE_LIGHT_TRIAL_POT_1, RCQUEST_VANILLA, RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(-3840, -923), "Light Trial Pot 1", RHT_POT_GANONS_CASTLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_LIGHT_TRIAL_POT_1)); - locationTable[RC_GANONS_CASTLE_LIGHT_TRIAL_POT_2] = Location::Pot(RC_GANONS_CASTLE_LIGHT_TRIAL_POT_2, RCQUEST_VANILLA, RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(-3840, -755), "Light Trial Pot 2", RHT_POT_GANONS_CASTLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_LIGHT_TRIAL_POT_2)); - locationTable[RC_GANONS_CASTLE_GANONS_TOWER_POT_1] = Location::Pot(RC_GANONS_CASTLE_GANONS_TOWER_POT_1, RCQUEST_BOTH, RCAREA_GANONS_CASTLE, SCENE_GANONS_TOWER, TWO_ACTOR_PARAMS(-422, -258), "Ganons Tower Pot 1", RHT_POT_GANONS_CASTLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_1)); - locationTable[RC_GANONS_CASTLE_GANONS_TOWER_POT_2] = Location::Pot(RC_GANONS_CASTLE_GANONS_TOWER_POT_2, RCQUEST_BOTH, RCAREA_GANONS_CASTLE, SCENE_GANONS_TOWER, TWO_ACTOR_PARAMS(-382, -300), "Ganons Tower Pot 2", RHT_POT_GANONS_CASTLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_2)); - locationTable[RC_GANONS_CASTLE_GANONS_TOWER_POT_3] = Location::Pot(RC_GANONS_CASTLE_GANONS_TOWER_POT_3, RCQUEST_BOTH, RCAREA_GANONS_CASTLE, SCENE_GANONS_TOWER, TWO_ACTOR_PARAMS(-342, -341), "Ganons Tower Pot 3", RHT_POT_GANONS_CASTLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_3)); - locationTable[RC_GANONS_CASTLE_GANONS_TOWER_POT_4] = Location::Pot(RC_GANONS_CASTLE_GANONS_TOWER_POT_4, RCQUEST_BOTH, RCAREA_GANONS_CASTLE, SCENE_GANONS_TOWER, TWO_ACTOR_PARAMS(-298, -383), "Ganons Tower Pot 4", RHT_POT_GANONS_CASTLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_4)); - locationTable[RC_GANONS_CASTLE_GANONS_TOWER_POT_5] = Location::Pot(RC_GANONS_CASTLE_GANONS_TOWER_POT_5, RCQUEST_BOTH, RCAREA_GANONS_CASTLE, SCENE_GANONS_TOWER, TWO_ACTOR_PARAMS(-257, -424), "Ganons Tower Pot 5", RHT_POT_GANONS_CASTLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_5)); - locationTable[RC_GANONS_CASTLE_GANONS_TOWER_POT_6] = Location::Pot(RC_GANONS_CASTLE_GANONS_TOWER_POT_6, RCQUEST_BOTH, RCAREA_GANONS_CASTLE, SCENE_GANONS_TOWER, TWO_ACTOR_PARAMS(-382, -259), "Ganons Tower Pot 6", RHT_POT_GANONS_CASTLE, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_6)); - locationTable[RC_GANONS_CASTLE_GANONS_TOWER_POT_7] = Location::Pot(RC_GANONS_CASTLE_GANONS_TOWER_POT_7, RCQUEST_BOTH, RCAREA_GANONS_CASTLE, SCENE_GANONS_TOWER, TWO_ACTOR_PARAMS(-342, -300), "Ganons Tower Pot 7", RHT_POT_GANONS_CASTLE, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_7)); - locationTable[RC_GANONS_CASTLE_GANONS_TOWER_POT_8] = Location::Pot(RC_GANONS_CASTLE_GANONS_TOWER_POT_8, RCQUEST_BOTH, RCAREA_GANONS_CASTLE, SCENE_GANONS_TOWER, TWO_ACTOR_PARAMS(-301, -341), "Ganons Tower Pot 8", RHT_POT_GANONS_CASTLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_8)); - locationTable[RC_GANONS_CASTLE_GANONS_TOWER_POT_9] = Location::Pot(RC_GANONS_CASTLE_GANONS_TOWER_POT_9, RCQUEST_BOTH, RCAREA_GANONS_CASTLE, SCENE_GANONS_TOWER, TWO_ACTOR_PARAMS(-258, -383), "Ganons Tower Pot 9", RHT_POT_GANONS_CASTLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_9)); - locationTable[RC_GANONS_CASTLE_GANONS_TOWER_POT_10] = Location::Pot(RC_GANONS_CASTLE_GANONS_TOWER_POT_10, RCQUEST_BOTH, RCAREA_GANONS_CASTLE, SCENE_GANONS_TOWER, TWO_ACTOR_PARAMS(418, -261), "Ganons Tower Pot 10", RHT_POT_GANONS_CASTLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_10)); - locationTable[RC_GANONS_CASTLE_GANONS_TOWER_POT_11] = Location::Pot(RC_GANONS_CASTLE_GANONS_TOWER_POT_11, RCQUEST_BOTH, RCAREA_GANONS_CASTLE, SCENE_GANONS_TOWER, TWO_ACTOR_PARAMS(377, -301), "Ganons Tower Pot 11", RHT_POT_GANONS_CASTLE, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_11)); - locationTable[RC_GANONS_CASTLE_GANONS_TOWER_POT_12] = Location::Pot(RC_GANONS_CASTLE_GANONS_TOWER_POT_12, RCQUEST_BOTH, RCAREA_GANONS_CASTLE, SCENE_GANONS_TOWER, TWO_ACTOR_PARAMS(338, -340), "Ganons Tower Pot 12", RHT_POT_GANONS_CASTLE, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_12)); - locationTable[RC_GANONS_CASTLE_GANONS_TOWER_POT_13] = Location::Pot(RC_GANONS_CASTLE_GANONS_TOWER_POT_13, RCQUEST_BOTH, RCAREA_GANONS_CASTLE, SCENE_GANONS_TOWER, TWO_ACTOR_PARAMS(300, -380), "Ganons Tower Pot 13", RHT_POT_GANONS_CASTLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_13)); - locationTable[RC_GANONS_CASTLE_GANONS_TOWER_POT_14] = Location::Pot(RC_GANONS_CASTLE_GANONS_TOWER_POT_14, RCQUEST_BOTH, RCAREA_GANONS_CASTLE, SCENE_GANONS_TOWER, TWO_ACTOR_PARAMS(260, -420), "Ganons Tower Pot 14", RHT_POT_GANONS_CASTLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_14)); - locationTable[RC_GANONS_CASTLE_GANONS_TOWER_POT_15] = Location::Pot(RC_GANONS_CASTLE_GANONS_TOWER_POT_15, RCQUEST_BOTH, RCAREA_GANONS_CASTLE, SCENE_GANONS_TOWER, TWO_ACTOR_PARAMS(378, -261), "Ganons Tower Pot 15", RHT_POT_GANONS_CASTLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_15)); - locationTable[RC_GANONS_CASTLE_GANONS_TOWER_POT_16] = Location::Pot(RC_GANONS_CASTLE_GANONS_TOWER_POT_16, RCQUEST_BOTH, RCAREA_GANONS_CASTLE, SCENE_GANONS_TOWER, TWO_ACTOR_PARAMS(337, -300), "Ganons Tower Pot 16", RHT_POT_GANONS_CASTLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_16)); - locationTable[RC_GANONS_CASTLE_GANONS_TOWER_POT_17] = Location::Pot(RC_GANONS_CASTLE_GANONS_TOWER_POT_17, RCQUEST_BOTH, RCAREA_GANONS_CASTLE, SCENE_GANONS_TOWER, TWO_ACTOR_PARAMS(299, -340), "Ganons Tower Pot 17", RHT_POT_GANONS_CASTLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_17)); - locationTable[RC_GANONS_CASTLE_GANONS_TOWER_POT_18] = Location::Pot(RC_GANONS_CASTLE_GANONS_TOWER_POT_18, RCQUEST_BOTH, RCAREA_GANONS_CASTLE, SCENE_GANONS_TOWER, TWO_ACTOR_PARAMS(260, -380), "Ganons Tower Pot 18", RHT_POT_GANONS_CASTLE, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_18)); - locationTable[RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_1] = Location::Pot(RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_1, RCQUEST_VANILLA, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(-95, -673), "Basement Pot 1", RHT_POT_BOTTOM_OF_THE_WELL, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_1)); - locationTable[RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_2] = Location::Pot(RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_2, RCQUEST_VANILLA, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(75, -598), "Basement Pot 2", RHT_POT_BOTTOM_OF_THE_WELL, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_2)); - locationTable[RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_3] = Location::Pot(RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_3, RCQUEST_VANILLA, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(270, -1151), "Basement Pot 3", RHT_POT_BOTTOM_OF_THE_WELL, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_3)); - locationTable[RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_4] = Location::Pot(RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_4, RCQUEST_VANILLA, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(566, -1254), "Basement Pot 4", RHT_POT_BOTTOM_OF_THE_WELL, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_4)); - locationTable[RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_5] = Location::Pot(RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_5, RCQUEST_VANILLA, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(378, -1089), "Basement Pot 5", RHT_POT_BOTTOM_OF_THE_WELL, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_5)); - locationTable[RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_6] = Location::Pot(RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_6, RCQUEST_VANILLA, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(665, -1252), "Basement Pot 6", RHT_POT_BOTTOM_OF_THE_WELL, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_6)); - locationTable[RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_7] = Location::Pot(RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_7, RCQUEST_VANILLA, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(566, -1345), "Basement Pot 7", RHT_POT_BOTTOM_OF_THE_WELL, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_7)); - locationTable[RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_8] = Location::Pot(RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_8, RCQUEST_VANILLA, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(562, -1304), "Basement Pot 8", RHT_POT_BOTTOM_OF_THE_WELL, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_8)); - locationTable[RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_9] = Location::Pot(RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_9, RCQUEST_VANILLA, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(313, -1086), "Basement Pot 9", RHT_POT_BOTTOM_OF_THE_WELL, RG_DEKU_NUTS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_9)); - locationTable[RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_10] = Location::Pot(RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_10, RCQUEST_VANILLA, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(618, -1254), "Basement Pot 10", RHT_POT_BOTTOM_OF_THE_WELL, RG_DEKU_STICK_1, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_10)); - locationTable[RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_11] = Location::Pot(RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_11, RCQUEST_VANILLA, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(257, -1099), "Basement Pot 11", RHT_POT_BOTTOM_OF_THE_WELL, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_11)); - locationTable[RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_12] = Location::Pot(RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_12, RCQUEST_VANILLA, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(296, -1206), "Basement Pot 12", RHT_POT_BOTTOM_OF_THE_WELL, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_12)); - locationTable[RC_BOTTOM_OF_THE_WELL_LEFT_SIDE_POT_1] = Location::Pot(RC_BOTTOM_OF_THE_WELL_LEFT_SIDE_POT_1, RCQUEST_VANILLA, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(-969, 55), "Left Side Pot 1", RHT_POT_BOTTOM_OF_THE_WELL, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_LEFT_SIDE_POT_1)); - locationTable[RC_BOTTOM_OF_THE_WELL_LEFT_SIDE_POT_2] = Location::Pot(RC_BOTTOM_OF_THE_WELL_LEFT_SIDE_POT_2, RCQUEST_VANILLA, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(-966, 9), "Left Side Pot 2", RHT_POT_BOTTOM_OF_THE_WELL, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_LEFT_SIDE_POT_2)); - locationTable[RC_BOTTOM_OF_THE_WELL_LEFT_SIDE_POT_3] = Location::Pot(RC_BOTTOM_OF_THE_WELL_LEFT_SIDE_POT_3, RCQUEST_VANILLA, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(-965, -32), "Left Side Pot 3", RHT_POT_BOTTOM_OF_THE_WELL, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_LEFT_SIDE_POT_3)); - locationTable[RC_BOTTOM_OF_THE_WELL_NEAR_ENTRANCE_POT_1] = Location::Pot(RC_BOTTOM_OF_THE_WELL_NEAR_ENTRANCE_POT_1, RCQUEST_VANILLA, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(-41, 389), "Near Entrance Pot 1", RHT_POT_BOTTOM_OF_THE_WELL, RG_DEKU_STICK_1, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_NEAR_ENTRANCE_POT_1)); - locationTable[RC_BOTTOM_OF_THE_WELL_NEAR_ENTRANCE_POT_2] = Location::Pot(RC_BOTTOM_OF_THE_WELL_NEAR_ENTRANCE_POT_2, RCQUEST_VANILLA, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(36, 389), "Near Entrance Pot 2", RHT_POT_BOTTOM_OF_THE_WELL, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_NEAR_ENTRANCE_POT_2)); - locationTable[RC_BOTTOM_OF_THE_WELL_FIRE_KEESE_POT_1] = Location::Pot(RC_BOTTOM_OF_THE_WELL_FIRE_KEESE_POT_1, RCQUEST_VANILLA, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(874, -1294), "Fire Keese Pot 1", RHT_POT_BOTTOM_OF_THE_WELL, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_FIRE_KEESE_POT_1)); - locationTable[RC_BOTTOM_OF_THE_WELL_UNDERWATER_POT] = Location::Pot(RC_BOTTOM_OF_THE_WELL_UNDERWATER_POT, RCQUEST_VANILLA, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(3, -1641), "Underwater Pot", RHT_POT_BOTTOM_OF_THE_WELL, RG_BOMBS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_UNDERWATER_POT)); - locationTable[RC_ICE_CAVERN_HALL_POT_1] = Location::Pot(RC_ICE_CAVERN_HALL_POT_1, RCQUEST_VANILLA, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(-206, 449), "Hall Pot 1", RHT_POT_ICE_CAVERN, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_HALL_POT_1)); - locationTable[RC_ICE_CAVERN_HALL_POT_2] = Location::Pot(RC_ICE_CAVERN_HALL_POT_2, RCQUEST_VANILLA, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(-203, 492), "Hall Pot 2", RHT_POT_ICE_CAVERN, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_HALL_POT_2)); - locationTable[RC_ICE_CAVERN_SPINNING_BLADE_POT_1] = Location::Pot(RC_ICE_CAVERN_SPINNING_BLADE_POT_1, RCQUEST_VANILLA, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(433, -732), "Spinning Blade Pot 1", RHT_POT_ICE_CAVERN, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_SPINNING_BLADE_POT_1)); - locationTable[RC_ICE_CAVERN_SPINNING_BLADE_POT_2] = Location::Pot(RC_ICE_CAVERN_SPINNING_BLADE_POT_2, RCQUEST_VANILLA, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(569, -175), "Spinning Blade Pot 2", RHT_POT_ICE_CAVERN, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_SPINNING_BLADE_POT_2)); - locationTable[RC_ICE_CAVERN_SPINNING_BLADE_POT_3] = Location::Pot(RC_ICE_CAVERN_SPINNING_BLADE_POT_3, RCQUEST_VANILLA, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(521, -131), "Spinning Blade Pot 3", RHT_POT_ICE_CAVERN, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_SPINNING_BLADE_POT_3)); - locationTable[RC_ICE_CAVERN_NEAR_END_POT_1] = Location::Pot(RC_ICE_CAVERN_NEAR_END_POT_1, RCQUEST_VANILLA, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(-1422, 586), "Near End Pot 1", RHT_POT_ICE_CAVERN, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_NEAR_END_POT_1)); - locationTable[RC_ICE_CAVERN_NEAR_END_POT_2] = Location::Pot(RC_ICE_CAVERN_NEAR_END_POT_2, RCQUEST_VANILLA, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(-1488, 676), "Near End Pot 2", RHT_POT_ICE_CAVERN, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_NEAR_END_POT_2)); - locationTable[RC_ICE_CAVERN_FROZEN_POT_1] = Location::Pot(RC_ICE_CAVERN_FROZEN_POT_1, RCQUEST_VANILLA, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(366, -2036), "Frozen Pot 1", RHT_POT_ICE_CAVERN, RG_PURPLE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_FROZEN_POT_1)); - - // MQ Dungeon Pots - // Randomizer Check Randomizer Check Quest Area Scene ID Params Short Name Spoiler Name Hint Text Key Vanilla Spoiler Collection Check - locationTable[RC_DODONGOS_CAVERN_MQ_STAIRCASE_POT_1] = Location::Pot(RC_DODONGOS_CAVERN_MQ_STAIRCASE_POT_1, RCQUEST_MQ, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(-2391, -1804), "MQ Staircase Pot 1", RHT_POT_DODONGOS_CAVERN, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_MQ_STAIRCASE_POT_1)); - locationTable[RC_DODONGOS_CAVERN_MQ_STAIRCASE_POT_2] = Location::Pot(RC_DODONGOS_CAVERN_MQ_STAIRCASE_POT_2, RCQUEST_MQ, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(-2361, -1161), "MQ Staircase Pot 2", RHT_POT_DODONGOS_CAVERN, RG_RED_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_MQ_STAIRCASE_POT_2)); - locationTable[RC_DODONGOS_CAVERN_MQ_STAIRCASE_POT_3] = Location::Pot(RC_DODONGOS_CAVERN_MQ_STAIRCASE_POT_3, RCQUEST_MQ, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(-1525, -1800), "MQ Staircase Pot 3", RHT_POT_DODONGOS_CAVERN, RG_RED_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_MQ_STAIRCASE_POT_3)); - locationTable[RC_DODONGOS_CAVERN_MQ_STAIRCASE_POT_4] = Location::Pot(RC_DODONGOS_CAVERN_MQ_STAIRCASE_POT_4, RCQUEST_MQ, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(-1558, -1169), "MQ Staircase Pot 4", RHT_POT_DODONGOS_CAVERN, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_MQ_STAIRCASE_POT_4)); - locationTable[RC_DODONGOS_CAVERN_MQ_TORCH_PUZZLE_MIDDLE_POT] = Location::Pot(RC_DODONGOS_CAVERN_MQ_TORCH_PUZZLE_MIDDLE_POT, RCQUEST_MQ, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(1532, -1225), "MQ Torch Puzzle Middle Pot", RHT_POT_DODONGOS_CAVERN, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_MQ_BLOCK_ROOM_POT_2)); - locationTable[RC_DODONGOS_CAVERN_MQ_BIG_BLOCK_POT_1] = Location::Pot(RC_DODONGOS_CAVERN_MQ_BIG_BLOCK_POT_1, RCQUEST_MQ, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(3195, -155), "MQ Big Block Pot 1", RHT_POT_DODONGOS_CAVERN, RG_DEKU_SEEDS_30, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_MQ_SILVER_BLOCK_POT_1)); - locationTable[RC_DODONGOS_CAVERN_MQ_BIG_BLOCK_POT_2] = Location::Pot(RC_DODONGOS_CAVERN_MQ_BIG_BLOCK_POT_2, RCQUEST_MQ, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(2704, -483), "MQ Big Block Pot 2", RHT_POT_DODONGOS_CAVERN, RG_DEKU_SEEDS_30, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_MQ_SILVER_BLOCK_POT_2)); - locationTable[RC_DODONGOS_CAVERN_MQ_UPPER_LIZALFOS_POT_1] = Location::Pot(RC_DODONGOS_CAVERN_MQ_UPPER_LIZALFOS_POT_1, RCQUEST_MQ, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(3869, -811), "MQ Upper Lizalfos Pot 1", RHT_POT_DODONGOS_CAVERN, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_MQ_UPPER_LIZALFOS_POT_1)); - locationTable[RC_DODONGOS_CAVERN_MQ_UPPER_LIZALFOS_POT_2] = Location::Pot(RC_DODONGOS_CAVERN_MQ_UPPER_LIZALFOS_POT_2, RCQUEST_MQ, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(3867, -969), "MQ Upper Lizalfos Pot 2", RHT_POT_DODONGOS_CAVERN, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_MQ_UPPER_LIZALFOS_POT_2)); - locationTable[RC_DODONGOS_CAVERN_MQ_UPPER_LIZALFOS_POT_3] = Location::Pot(RC_DODONGOS_CAVERN_MQ_UPPER_LIZALFOS_POT_3, RCQUEST_MQ, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(4687, -1071), "MQ Upper Lizalfos Pot 3", RHT_POT_DODONGOS_CAVERN, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_MQ_UPPER_LIZALFOS_POT_3)); - locationTable[RC_DODONGOS_CAVERN_MQ_UPPER_LIZALFOS_POT_4] = Location::Pot(RC_DODONGOS_CAVERN_MQ_UPPER_LIZALFOS_POT_4, RCQUEST_MQ, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(4693, -1194), "MQ Upper Lizalfos Pot 4", RHT_POT_DODONGOS_CAVERN, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_MQ_UPPER_LIZALFOS_POT_4)); - locationTable[RC_DODONGOS_CAVERN_MQ_TWO_FLAMES_POT_1] = Location::Pot(RC_DODONGOS_CAVERN_MQ_TWO_FLAMES_POT_1, RCQUEST_MQ, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(3327, -805), "MQ Two Flames Pot 1", RHT_POT_DODONGOS_CAVERN, RG_DEKU_SEEDS_30, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_MQ_TWO_FLAMES_POT_1)); - locationTable[RC_DODONGOS_CAVERN_MQ_TWO_FLAMES_POT_2] = Location::Pot(RC_DODONGOS_CAVERN_MQ_TWO_FLAMES_POT_2, RCQUEST_MQ, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(3326, -753), "MQ Two Flames Pot 2", RHT_POT_DODONGOS_CAVERN, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_MQ_TWO_FLAMES_POT_2)); - locationTable[RC_DODONGOS_CAVERN_MQ_TORCH_PUZZLE_CORNER_POT] = Location::Pot(RC_DODONGOS_CAVERN_MQ_TORCH_PUZZLE_CORNER_POT, RCQUEST_MQ, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(1827, -587), "MQ Torch Puzzle Corner Pot", RHT_POT_DODONGOS_CAVERN, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_MQ_BLOCK_ROOM_POT_1)); - locationTable[RC_DODONGOS_CAVERN_MQ_RIGHT_SIDE_POT_1] = Location::Pot(RC_DODONGOS_CAVERN_MQ_RIGHT_SIDE_POT_1, RCQUEST_MQ, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(1727, -151), "MQ Right Side Pot 1", RHT_POT_DODONGOS_CAVERN, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_MQ_RIGHT_SIDE_POT_1)); - locationTable[RC_DODONGOS_CAVERN_MQ_RIGHT_SIDE_POT_2] = Location::Pot(RC_DODONGOS_CAVERN_MQ_RIGHT_SIDE_POT_2, RCQUEST_MQ, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(1815, -154), "MQ Right Side Pot 2", RHT_POT_DODONGOS_CAVERN, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_MQ_RIGHT_SIDE_POT_2)); - locationTable[RC_DODONGOS_CAVERN_MQ_RIGHT_SIDE_POT_3] = Location::Pot(RC_DODONGOS_CAVERN_MQ_RIGHT_SIDE_POT_3, RCQUEST_MQ, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(3442, -469), "MQ Right Side Pot 3", RHT_POT_DODONGOS_CAVERN, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_MQ_RIGHT_SIDE_POT_3)); - locationTable[RC_DODONGOS_CAVERN_MQ_RIGHT_SIDE_POT_4] = Location::Pot(RC_DODONGOS_CAVERN_MQ_RIGHT_SIDE_POT_4, RCQUEST_MQ, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(3682, -466), "MQ Right Side Pot 4", RHT_POT_DODONGOS_CAVERN, RG_DEKU_SEEDS_30, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_MQ_RIGHT_SIDE_POT_4)); - locationTable[RC_DODONGOS_CAVERN_MQ_POE_ROOM_POT_1] = Location::Pot(RC_DODONGOS_CAVERN_MQ_POE_ROOM_POT_1, RCQUEST_MQ, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(1844, -1867), "MQ Poe Room Pot 1", RHT_POT_DODONGOS_CAVERN, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_MQ_POE_ROOM_POT_1)); - locationTable[RC_DODONGOS_CAVERN_MQ_POE_ROOM_POT_2] = Location::Pot(RC_DODONGOS_CAVERN_MQ_POE_ROOM_POT_2, RCQUEST_MQ, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(2272, -2213), "MQ Poe Room Pot 2", RHT_POT_DODONGOS_CAVERN, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_MQ_POE_ROOM_POT_2)); - locationTable[RC_DODONGOS_CAVERN_MQ_POE_ROOM_POT_3] = Location::Pot(RC_DODONGOS_CAVERN_MQ_POE_ROOM_POT_3, RCQUEST_MQ, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(2240, -1369), "MQ Poe Room Pot 3", RHT_POT_DODONGOS_CAVERN, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_MQ_POE_ROOM_POT_3)); - locationTable[RC_DODONGOS_CAVERN_MQ_POE_ROOM_POT_4] = Location::Pot(RC_DODONGOS_CAVERN_MQ_POE_ROOM_POT_4, RCQUEST_MQ, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(1535, -1299), "MQ Poe Room Pot 4", RHT_POT_DODONGOS_CAVERN, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_MQ_POE_ROOM_POT_4)); - locationTable[RC_DODONGOS_CAVERN_MQ_BEFORE_BOSS_SW_POT] = Location::Pot(RC_DODONGOS_CAVERN_MQ_BEFORE_BOSS_SW_POT, RCQUEST_MQ, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(258, -3055), "MQ Before Boss SW Pot", RHT_POT_DODONGOS_CAVERN, RG_BOMBS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_MQ_BEFORE_BOSS_POT_1)); - locationTable[RC_DODONGOS_CAVERN_MQ_BEFORE_BOSS_NE_POT] = Location::Pot(RC_DODONGOS_CAVERN_MQ_BEFORE_BOSS_NE_POT, RCQUEST_MQ, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(-265, -2499), "MQ Before Boss NE Pot", RHT_POT_DODONGOS_CAVERN, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_MQ_BEFORE_BOSS_POT_2)); - locationTable[RC_DODONGOS_CAVERN_MQ_ARMOS_ROOM_SE_POT] = Location::Pot(RC_DODONGOS_CAVERN_MQ_ARMOS_ROOM_SE_POT, RCQUEST_MQ, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(1758, -3194), "MQ Armos Room SE Pot", RHT_POT_DODONGOS_CAVERN, RG_BOMBS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_MQ_ARMOS_POT_3)); - locationTable[RC_DODONGOS_CAVERN_MQ_ARMOS_ROOM_SW_POT] = Location::Pot(RC_DODONGOS_CAVERN_MQ_ARMOS_ROOM_SW_POT, RCQUEST_MQ, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(1223, -3197), "MQ Armos Room SW Pot", RHT_POT_DODONGOS_CAVERN, RG_BOMBS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_MQ_ARMOS_POT_4)); - locationTable[RC_DODONGOS_CAVERN_MQ_BACKROOM_POT_1] = Location::Pot(RC_DODONGOS_CAVERN_MQ_BACKROOM_POT_1, RCQUEST_MQ, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(1663, -4311), "MQ Backroom Pot 1", RHT_POT_DODONGOS_CAVERN, RG_BOMBS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_MQ_BACKROOM_POT_1)); - locationTable[RC_DODONGOS_CAVERN_MQ_BACKROOM_POT_2] = Location::Pot(RC_DODONGOS_CAVERN_MQ_BACKROOM_POT_2, RCQUEST_MQ, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(1648, -4694), "MQ Backroom Pot 2", RHT_POT_DODONGOS_CAVERN, RG_BOMBS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_MQ_BACKROOM_POT_2)); - locationTable[RC_DODONGOS_CAVERN_MQ_ARMOS_ROOM_NW_POT] = Location::Pot(RC_DODONGOS_CAVERN_MQ_ARMOS_ROOM_NW_POT, RCQUEST_MQ, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(1005, -3711), "MQ Armos Room NW Pot", RHT_POT_DODONGOS_CAVERN, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_MQ_ARMOS_POT_1)); - locationTable[RC_DODONGOS_CAVERN_MQ_ARMOS_ROOM_NE_POT] = Location::Pot(RC_DODONGOS_CAVERN_MQ_ARMOS_ROOM_NE_POT, RCQUEST_MQ, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(1066, -3711), "MQ Armos Room NE Pot", RHT_POT_DODONGOS_CAVERN, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_MQ_ARMOS_POT_2)); - locationTable[RC_JABU_JABUS_BELLY_MQ_ENTRANCE_POT_1] = Location::Pot(RC_JABU_JABUS_BELLY_MQ_ENTRANCE_POT_1, RCQUEST_MQ, RCAREA_JABU_JABUS_BELLY, SCENE_JABU_JABU, TWO_ACTOR_PARAMS(-183, -449), "MQ Entrance Pot 1", RHT_POT_JABU_JABUS_BELLY, RG_BOMBS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_JABU_JABUS_BELLY_MQ_ENTRANCE_POT_1)); - locationTable[RC_JABU_JABUS_BELLY_MQ_ENTRANCE_POT_2] = Location::Pot(RC_JABU_JABUS_BELLY_MQ_ENTRANCE_POT_2, RCQUEST_MQ, RCAREA_JABU_JABUS_BELLY, SCENE_JABU_JABU, TWO_ACTOR_PARAMS(202, -62), "MQ Entrance Pot 2", RHT_POT_JABU_JABUS_BELLY, RG_DEKU_NUTS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_JABU_JABUS_BELLY_MQ_ENTRANCE_POT_2)); - locationTable[RC_JABU_JABUS_BELLY_MQ_GEYSER_POT_1] = Location::Pot(RC_JABU_JABUS_BELLY_MQ_GEYSER_POT_1, RCQUEST_MQ, RCAREA_JABU_JABUS_BELLY, SCENE_JABU_JABU, TWO_ACTOR_PARAMS(-689, -1800), "MQ Geyser Pot 1", RHT_POT_JABU_JABUS_BELLY, RG_ARROWS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_JABU_JABUS_BELLY_MQ_GEYSER_POT_1)); - locationTable[RC_JABU_JABUS_BELLY_MQ_GEYSER_POT_2] = Location::Pot(RC_JABU_JABUS_BELLY_MQ_GEYSER_POT_2, RCQUEST_MQ, RCAREA_JABU_JABUS_BELLY, SCENE_JABU_JABU, TWO_ACTOR_PARAMS(-693, -1614), "MQ Geyser Pot 2", RHT_POT_JABU_JABUS_BELLY, RG_DEKU_NUTS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_JABU_JABUS_BELLY_MQ_GEYSER_POT_2)); - locationTable[RC_JABU_JABUS_BELLY_MQ_TIME_BLOCK_POT_1] = Location::Pot(RC_JABU_JABUS_BELLY_MQ_TIME_BLOCK_POT_1, RCQUEST_MQ, RCAREA_JABU_JABUS_BELLY, SCENE_JABU_JABU, TWO_ACTOR_PARAMS(697, -2318), "MQ Time Block Pot 1", RHT_POT_JABU_JABUS_BELLY, RG_BOMBS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_JABU_JABUS_BELLY_MQ_TIME_BLOCK_POT_1)); - locationTable[RC_JABU_JABUS_BELLY_MQ_TIME_BLOCK_POT_2] = Location::Pot(RC_JABU_JABUS_BELLY_MQ_TIME_BLOCK_POT_2, RCQUEST_MQ, RCAREA_JABU_JABUS_BELLY, SCENE_JABU_JABU, TWO_ACTOR_PARAMS(699, -2445), "MQ Time Block Pot 2", RHT_POT_JABU_JABUS_BELLY, RG_ARROWS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_JABU_JABUS_BELLY_MQ_TIME_BLOCK_POT_2)); - locationTable[RC_JABU_JABUS_BELLY_MQ_LIKE_LIKES_POT_1] = Location::Pot(RC_JABU_JABUS_BELLY_MQ_LIKE_LIKES_POT_1, RCQUEST_MQ, RCAREA_JABU_JABUS_BELLY, SCENE_JABU_JABU, TWO_ACTOR_PARAMS(612, -5932), "MQ Like Likes Pot 1", RHT_POT_JABU_JABUS_BELLY, RG_ARROWS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_JABU_JABUS_BELLY_MQ_LIKE_LIKES_POT_1)); - locationTable[RC_JABU_JABUS_BELLY_MQ_LIKE_LIKES_POT_2] = Location::Pot(RC_JABU_JABUS_BELLY_MQ_LIKE_LIKES_POT_2, RCQUEST_MQ, RCAREA_JABU_JABUS_BELLY, SCENE_JABU_JABU, TWO_ACTOR_PARAMS(718, -5929), "MQ Like Likes Pot 2", RHT_POT_JABU_JABUS_BELLY, RG_BOMBS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_JABU_JABUS_BELLY_MQ_LIKE_LIKES_POT_2)); - locationTable[RC_JABU_JABUS_BELLY_MQ_BEFORE_BOSS_POT_1] = Location::Pot(RC_JABU_JABUS_BELLY_MQ_BEFORE_BOSS_POT_1, RCQUEST_MQ, RCAREA_JABU_JABUS_BELLY, SCENE_JABU_JABU, TWO_ACTOR_PARAMS(1305, -2005), "MQ Before Boss Pot 1", RHT_POT_JABU_JABUS_BELLY, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_JABU_JABUS_BELLY_MQ_BEFORE_BOSS_POT_1)); - locationTable[RC_FOREST_TEMPLE_MQ_LOBBY_POT_1] = Location::Pot(RC_FOREST_TEMPLE_MQ_LOBBY_POT_1, RCQUEST_MQ, RCAREA_FOREST_TEMPLE, SCENE_FOREST_TEMPLE, TWO_ACTOR_PARAMS(675, -989), "MQ Lobby Pot 1", RHT_POT_FOREST_TEMPLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FOREST_TEMPLE_MQ_LOBBY_POT_1)); - locationTable[RC_FOREST_TEMPLE_MQ_LOBBY_POT_2] = Location::Pot(RC_FOREST_TEMPLE_MQ_LOBBY_POT_2, RCQUEST_MQ, RCAREA_FOREST_TEMPLE, SCENE_FOREST_TEMPLE, TWO_ACTOR_PARAMS(-429, -981), "MQ Lobby Pot 2", RHT_POT_FOREST_TEMPLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FOREST_TEMPLE_MQ_LOBBY_POT_2)); - locationTable[RC_FOREST_TEMPLE_MQ_LOBBY_POT_3] = Location::Pot(RC_FOREST_TEMPLE_MQ_LOBBY_POT_3, RCQUEST_MQ, RCAREA_FOREST_TEMPLE, SCENE_FOREST_TEMPLE, TWO_ACTOR_PARAMS(720, -1037), "MQ Lobby Pot 3", RHT_POT_FOREST_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FOREST_TEMPLE_MQ_LOBBY_POT_3)); - locationTable[RC_FOREST_TEMPLE_MQ_LOBBY_POT_4] = Location::Pot(RC_FOREST_TEMPLE_MQ_LOBBY_POT_4, RCQUEST_MQ, RCAREA_FOREST_TEMPLE, SCENE_FOREST_TEMPLE, TWO_ACTOR_PARAMS(-477, -1034), "MQ Lobby Pot 4", RHT_POT_FOREST_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FOREST_TEMPLE_MQ_LOBBY_POT_4)); - locationTable[RC_FOREST_TEMPLE_MQ_LOBBY_POT_5] = Location::Pot(RC_FOREST_TEMPLE_MQ_LOBBY_POT_5, RCQUEST_MQ, RCAREA_FOREST_TEMPLE, SCENE_FOREST_TEMPLE, TWO_ACTOR_PARAMS(630, -943), "MQ Lobby Pot 5", RHT_POT_FOREST_TEMPLE, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FOREST_TEMPLE_MQ_LOBBY_POT_5)); - locationTable[RC_FOREST_TEMPLE_MQ_LOBBY_POT_6] = Location::Pot(RC_FOREST_TEMPLE_MQ_LOBBY_POT_6, RCQUEST_MQ, RCAREA_FOREST_TEMPLE, SCENE_FOREST_TEMPLE, TWO_ACTOR_PARAMS(-384, -937), "MQ Lobby Pot 6", RHT_POT_FOREST_TEMPLE, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FOREST_TEMPLE_MQ_LOBBY_POT_6)); - locationTable[RC_FOREST_TEMPLE_MQ_WOLFOS_POT_1] = Location::Pot(RC_FOREST_TEMPLE_MQ_WOLFOS_POT_1, RCQUEST_MQ, RCAREA_FOREST_TEMPLE, SCENE_FOREST_TEMPLE, TWO_ACTOR_PARAMS(90, -3583), "MQ Wolfos Pot 1", RHT_POT_FOREST_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FOREST_TEMPLE_MQ_LOWER_STALFOS_POT_1)); - locationTable[RC_FOREST_TEMPLE_MQ_WOLFOS_POT_2] = Location::Pot(RC_FOREST_TEMPLE_MQ_WOLFOS_POT_2, RCQUEST_MQ, RCAREA_FOREST_TEMPLE, SCENE_FOREST_TEMPLE, TWO_ACTOR_PARAMS(142, -3583), "MQ Wolfos Pot 2", RHT_POT_FOREST_TEMPLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FOREST_TEMPLE_MQ_LOWER_STALFOS_POT_2)); - locationTable[RC_FOREST_TEMPLE_MQ_UPPER_STALFOS_POT_1] = Location::Pot(RC_FOREST_TEMPLE_MQ_UPPER_STALFOS_POT_1, RCQUEST_MQ, RCAREA_FOREST_TEMPLE, SCENE_FOREST_TEMPLE, TWO_ACTOR_PARAMS(206, -3631), "MQ Upper Stalfos Pot 1", RHT_POT_FOREST_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FOREST_TEMPLE_MQ_UPPER_STALFOS_POT_1)); - locationTable[RC_FOREST_TEMPLE_MQ_UPPER_STALFOS_POT_2] = Location::Pot(RC_FOREST_TEMPLE_MQ_UPPER_STALFOS_POT_2, RCQUEST_MQ, RCAREA_FOREST_TEMPLE, SCENE_FOREST_TEMPLE, TWO_ACTOR_PARAMS(32, -3012), "MQ Upper Stalfos Pot 2", RHT_POT_FOREST_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FOREST_TEMPLE_MQ_UPPER_STALFOS_POT_2)); - locationTable[RC_FOREST_TEMPLE_MQ_UPPER_STALFOS_POT_3] = Location::Pot(RC_FOREST_TEMPLE_MQ_UPPER_STALFOS_POT_3, RCQUEST_MQ, RCAREA_FOREST_TEMPLE, SCENE_FOREST_TEMPLE, TWO_ACTOR_PARAMS(30, -3631), "MQ Upper Stalfos Pot 3", RHT_POT_FOREST_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FOREST_TEMPLE_MQ_UPPER_STALFOS_POT_3)); - locationTable[RC_FOREST_TEMPLE_MQ_UPPER_STALFOS_POT_4] = Location::Pot(RC_FOREST_TEMPLE_MQ_UPPER_STALFOS_POT_4, RCQUEST_MQ, RCAREA_FOREST_TEMPLE, SCENE_FOREST_TEMPLE, TWO_ACTOR_PARAMS(202, -3012), "MQ Upper Stalfos Pot 4", RHT_POT_FOREST_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FOREST_TEMPLE_MQ_UPPER_STALFOS_POT_4)); - locationTable[RC_FOREST_TEMPLE_MQ_BLUE_POE_POT_1] = Location::Pot(RC_FOREST_TEMPLE_MQ_BLUE_POE_POT_1, RCQUEST_MQ, RCAREA_FOREST_TEMPLE, SCENE_FOREST_TEMPLE, TWO_ACTOR_PARAMS(830, -3639), "MQ Blue Poe Pot 1", RHT_POT_FOREST_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FOREST_TEMPLE_MQ_BLUE_POE_POT_1)); - locationTable[RC_FOREST_TEMPLE_MQ_BLUE_POE_POT_2] = Location::Pot(RC_FOREST_TEMPLE_MQ_BLUE_POE_POT_2, RCQUEST_MQ, RCAREA_FOREST_TEMPLE, SCENE_FOREST_TEMPLE, TWO_ACTOR_PARAMS(941, -3640), "MQ Blue Poe Pot 2", RHT_POT_FOREST_TEMPLE, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FOREST_TEMPLE_MQ_BLUE_POE_POT_2)); - locationTable[RC_FOREST_TEMPLE_MQ_BLUE_POE_POT_3] = Location::Pot(RC_FOREST_TEMPLE_MQ_BLUE_POE_POT_3, RCQUEST_MQ, RCAREA_FOREST_TEMPLE, SCENE_FOREST_TEMPLE, TWO_ACTOR_PARAMS(883, -3640), "MQ Blue Poe Pot 3", RHT_POT_FOREST_TEMPLE, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FOREST_TEMPLE_MQ_BLUE_POE_POT_3)); - locationTable[RC_FOREST_TEMPLE_MQ_GREEN_POE_POT_1] = Location::Pot(RC_FOREST_TEMPLE_MQ_GREEN_POE_POT_1, RCQUEST_MQ, RCAREA_FOREST_TEMPLE, SCENE_FOREST_TEMPLE, TWO_ACTOR_PARAMS(1647, -1529), "MQ Green Poe Pot 1", RHT_POT_FOREST_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FOREST_TEMPLE_MQ_GREEN_POE_POT_1)); - locationTable[RC_FOREST_TEMPLE_MQ_GREEN_POE_POT_2] = Location::Pot(RC_FOREST_TEMPLE_MQ_GREEN_POE_POT_2, RCQUEST_MQ, RCAREA_FOREST_TEMPLE, SCENE_FOREST_TEMPLE, TWO_ACTOR_PARAMS(1645, -1588), "MQ Green Poe Pot 2", RHT_POT_FOREST_TEMPLE, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FOREST_TEMPLE_MQ_GREEN_POE_POT_2)); - locationTable[RC_FOREST_TEMPLE_MQ_BASEMENT_POT_1] = Location::Pot(RC_FOREST_TEMPLE_MQ_BASEMENT_POT_1, RCQUEST_MQ, RCAREA_FOREST_TEMPLE, SCENE_FOREST_TEMPLE, TWO_ACTOR_PARAMS(-461, -1095), "MQ Basement Pot 1", RHT_POT_FOREST_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FOREST_TEMPLE_MQ_BASEMENT_POT_1)); - locationTable[RC_FOREST_TEMPLE_MQ_BASEMENT_POT_2] = Location::Pot(RC_FOREST_TEMPLE_MQ_BASEMENT_POT_2, RCQUEST_MQ, RCAREA_FOREST_TEMPLE, SCENE_FOREST_TEMPLE, TWO_ACTOR_PARAMS(-351, -979), "MQ Basement Pot 2", RHT_POT_FOREST_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FOREST_TEMPLE_MQ_BASEMENT_POT_2)); - locationTable[RC_FOREST_TEMPLE_MQ_BASEMENT_POT_3] = Location::Pot(RC_FOREST_TEMPLE_MQ_BASEMENT_POT_3, RCQUEST_MQ, RCAREA_FOREST_TEMPLE, SCENE_FOREST_TEMPLE, TWO_ACTOR_PARAMS(-387, -1018), "MQ Basement Pot 3", RHT_POT_FOREST_TEMPLE, RG_BOMBS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FOREST_TEMPLE_MQ_BASEMENT_POT_3)); - locationTable[RC_FOREST_TEMPLE_MQ_BASEMENT_POT_4] = Location::Pot(RC_FOREST_TEMPLE_MQ_BASEMENT_POT_4, RCQUEST_MQ, RCAREA_FOREST_TEMPLE, SCENE_FOREST_TEMPLE, TWO_ACTOR_PARAMS(-424, -1057), "MQ Basement Pot 4", RHT_POT_FOREST_TEMPLE, RG_ARROWS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FOREST_TEMPLE_MQ_BASEMENT_POT_4)); - locationTable[RC_GANONS_CASTLE_MQ_FOREST_TRIAL_POT_1] = Location::Pot(RC_GANONS_CASTLE_MQ_FOREST_TRIAL_POT_1, RCQUEST_MQ, RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(1873, 2252), "MQ Forest Trial Pot 1", RHT_POT_GANONS_CASTLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_MQ_FOREST_TRIAL_POT_1)); - locationTable[RC_GANONS_CASTLE_MQ_FOREST_TRIAL_POT_2] = Location::Pot(RC_GANONS_CASTLE_MQ_FOREST_TRIAL_POT_2, RCQUEST_MQ, RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(1726, 2326), "MQ Forest Trial Pot 2", RHT_POT_GANONS_CASTLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_MQ_FOREST_TRIAL_POT_2)); - locationTable[RC_GANONS_CASTLE_MQ_WATER_TRIAL_POT_1] = Location::Pot(RC_GANONS_CASTLE_MQ_WATER_TRIAL_POT_1, RCQUEST_MQ, RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(3544, -931), "MQ Water Trial Pot 1", RHT_POT_GANONS_CASTLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_MQ_WATER_TRIAL_POT_1)); - locationTable[RC_GANONS_CASTLE_MQ_WATER_TRIAL_POT_2] = Location::Pot(RC_GANONS_CASTLE_MQ_WATER_TRIAL_POT_2, RCQUEST_MQ, RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(3541, -755), "MQ Water Trial Pot 2", RHT_POT_GANONS_CASTLE, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_MQ_WATER_TRIAL_POT_2)); - locationTable[RC_GANONS_CASTLE_MQ_SHADOW_TRIAL_POT_1] = Location::Pot(RC_GANONS_CASTLE_MQ_SHADOW_TRIAL_POT_1, RCQUEST_MQ, RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(2073, -4592), "MQ Shadow Trial Pot 1", RHT_POT_GANONS_CASTLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_MQ_SHADOW_TRIAL_POT_1)); - locationTable[RC_GANONS_CASTLE_MQ_SHADOW_TRIAL_POT_2] = Location::Pot(RC_GANONS_CASTLE_MQ_SHADOW_TRIAL_POT_2, RCQUEST_MQ, RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(2217, -4516), "MQ Shadow Trial Pot 2", RHT_POT_GANONS_CASTLE, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_MQ_SHADOW_TRIAL_POT_2)); - locationTable[RC_GANONS_CASTLE_MQ_FIRE_TRIAL_POT_1] = Location::Pot(RC_GANONS_CASTLE_MQ_FIRE_TRIAL_POT_1, RCQUEST_MQ, RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(-1918, -3957), "MQ Fire Trial Pot 1", RHT_POT_GANONS_CASTLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_MQ_FIRE_TRIAL_POT_1)); - locationTable[RC_GANONS_CASTLE_MQ_FIRE_TRIAL_POT_2] = Location::Pot(RC_GANONS_CASTLE_MQ_FIRE_TRIAL_POT_2, RCQUEST_MQ, RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(-2052, -3888), "MQ Fire Trial Pot 2", RHT_POT_GANONS_CASTLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_MQ_FIRE_TRIAL_POT_2)); - locationTable[RC_GANONS_CASTLE_MQ_LIGHT_TRIAL_POT_1] = Location::Pot(RC_GANONS_CASTLE_MQ_LIGHT_TRIAL_POT_1, RCQUEST_MQ, RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(-3842, -759), "MQ Light Trial Pot 1", RHT_POT_GANONS_CASTLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_MQ_LIGHT_TRIAL_POT_1)); - locationTable[RC_GANONS_CASTLE_MQ_LIGHT_TRIAL_POT_2] = Location::Pot(RC_GANONS_CASTLE_MQ_LIGHT_TRIAL_POT_2, RCQUEST_MQ, RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(-3845, -933), "MQ Light Trial Pot 2", RHT_POT_GANONS_CASTLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_MQ_LIGHT_TRIAL_POT_2)); - locationTable[RC_GANONS_CASTLE_MQ_SPIRIT_TRIAL_POT_1] = Location::Pot(RC_GANONS_CASTLE_MQ_SPIRIT_TRIAL_POT_1, RCQUEST_MQ, RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(-1402, 1414), "MQ Spirit Trial Pot 1", RHT_POT_GANONS_CASTLE, RG_DEKU_NUTS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_MQ_SPIRIT_TRIAL_POT_1)); - locationTable[RC_GANONS_CASTLE_MQ_SPIRIT_TRIAL_POT_2] = Location::Pot(RC_GANONS_CASTLE_MQ_SPIRIT_TRIAL_POT_2, RCQUEST_MQ, RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(-1256, 1500), "MQ Spirit Trial Pot 2", RHT_POT_GANONS_CASTLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_MQ_SPIRIT_TRIAL_POT_2)); - locationTable[RC_SHADOW_TEMPLE_MQ_WHISPERING_WALLS_POT_1] = Location::Pot(RC_SHADOW_TEMPLE_MQ_WHISPERING_WALLS_POT_1, RCQUEST_MQ, RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(-1045, -130), "MQ Whispering Walls Pot 1", RHT_POT_SHADOW_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_MQ_WHISPERING_WALLS_POT_1)); - locationTable[RC_SHADOW_TEMPLE_MQ_WHISPERING_WALLS_POT_2] = Location::Pot(RC_SHADOW_TEMPLE_MQ_WHISPERING_WALLS_POT_2, RCQUEST_MQ, RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(-1045, -240), "MQ Whispering Walls Pot 2", RHT_POT_SHADOW_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_MQ_WHISPERING_WALLS_POT_2)); - locationTable[RC_SHADOW_TEMPLE_MQ_ENTRANCE_REDEAD_POT_1] = Location::Pot(RC_SHADOW_TEMPLE_MQ_ENTRANCE_REDEAD_POT_1, RCQUEST_MQ, RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(-657, -949), "MQ Entrance Redead Pot 1", RHT_POT_SHADOW_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_MQ_ENTRANCE_REDEAD_POT_1)); - locationTable[RC_SHADOW_TEMPLE_MQ_ENTRANCE_REDEAD_POT_2] = Location::Pot(RC_SHADOW_TEMPLE_MQ_ENTRANCE_REDEAD_POT_2, RCQUEST_MQ, RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(-713, -1016), "MQ Entrance Redead Pot 2", RHT_POT_SHADOW_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_MQ_ENTRANCE_REDEAD_POT_2)); - locationTable[RC_SHADOW_TEMPLE_MQ_LOWER_UMBRELLA_WEST_POT] = Location::Pot(RC_SHADOW_TEMPLE_MQ_LOWER_UMBRELLA_WEST_POT, RCQUEST_MQ, RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(614, 3579), "MQ Lower Umbrella W Pot", RHT_POT_SHADOW_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_MQ_FALLING_SPIKES_POT_1)); - locationTable[RC_SHADOW_TEMPLE_MQ_LOWER_UMBRELLA_EAST_POT] = Location::Pot(RC_SHADOW_TEMPLE_MQ_LOWER_UMBRELLA_EAST_POT, RCQUEST_MQ, RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(798, 3574), "MQ Lower Umbrella E Pot", RHT_POT_SHADOW_TEMPLE, RG_BOMBS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_MQ_FALLING_SPIKES_POT_2)); - locationTable[RC_SHADOW_TEMPLE_MQ_UPPER_UMBRELLA_SOUTH_POT] = Location::Pot(RC_SHADOW_TEMPLE_MQ_UPPER_UMBRELLA_SOUTH_POT, RCQUEST_MQ, RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(1173, 3707), "MQ Upper Umbrella S Pot", RHT_POT_SHADOW_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_MQ_FALLING_SPIKES_POT_3)); - locationTable[RC_SHADOW_TEMPLE_MQ_UPPER_UMBRELLA_NORTH_POT] = Location::Pot(RC_SHADOW_TEMPLE_MQ_UPPER_UMBRELLA_NORTH_POT, RCQUEST_MQ, RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(1173, 3605), "MQ Upper Umbrella N Pot", RHT_POT_SHADOW_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_MQ_FALLING_SPIKES_POT_4)); - locationTable[RC_SHADOW_TEMPLE_MQ_BEFORE_BOAT_POT_1] = Location::Pot(RC_SHADOW_TEMPLE_MQ_BEFORE_BOAT_POT_1, RCQUEST_MQ, RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(4222, -916), "MQ Before Boat Pot 1", RHT_POT_SHADOW_TEMPLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_MQ_BEFORE_BOAT_POT_1)); - locationTable[RC_SHADOW_TEMPLE_MQ_BEFORE_BOAT_POT_2] = Location::Pot(RC_SHADOW_TEMPLE_MQ_BEFORE_BOAT_POT_2, RCQUEST_MQ, RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(4549, -922), "MQ Before Boat Pot 2", RHT_POT_SHADOW_TEMPLE, RG_DEKU_NUTS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_MQ_BEFORE_BOAT_POT_2)); - locationTable[RC_SHADOW_TEMPLE_MQ_BEFORE_CHASM_WEST_POT] = Location::Pot(RC_SHADOW_TEMPLE_MQ_BEFORE_CHASM_WEST_POT, RCQUEST_MQ, RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(-2400, -1470), "MQ Before Chasm W Pot", RHT_POT_SHADOW_TEMPLE, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_MQ_AFTER_BOAT_POT_1)); - locationTable[RC_SHADOW_TEMPLE_MQ_BEFORE_CHASM_EAST_POT] = Location::Pot(RC_SHADOW_TEMPLE_MQ_BEFORE_CHASM_EAST_POT, RCQUEST_MQ, RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(-2230, -1470), "MQ Before Chasm E Pot", RHT_POT_SHADOW_TEMPLE, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_MQ_AFTER_BOAT_POT_2)); - locationTable[RC_SHADOW_TEMPLE_MQ_AFTER_CHASM_WEST_POT] = Location::Pot(RC_SHADOW_TEMPLE_MQ_AFTER_CHASM_WEST_POT, RCQUEST_MQ, RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(-2859, -497), "MQ After Chasm W Pot", RHT_POT_SHADOW_TEMPLE, RG_ARROWS_30, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_MQ_AFTER_BOAT_POT_3)); - locationTable[RC_SHADOW_TEMPLE_MQ_AFTER_CHASM_EAST_POT] = Location::Pot(RC_SHADOW_TEMPLE_MQ_AFTER_CHASM_EAST_POT, RCQUEST_MQ, RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(-2624, -492), "MQ After Chasm E Pot", RHT_POT_SHADOW_TEMPLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_MQ_AFTER_BOAT_POT_4)); - locationTable[RC_SHADOW_TEMPLE_MQ_SPIKE_BARICADE_POT] = Location::Pot(RC_SHADOW_TEMPLE_MQ_SPIKE_BARICADE_POT, RCQUEST_MQ, RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(-4303, -2657), "MQ Spike Baricade Pot", RHT_POT_SHADOW_TEMPLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_MQ_SPIKE_BARICADE_POT)); - locationTable[RC_SHADOW_TEMPLE_MQ_DEAD_HAND_POT_1] = Location::Pot(RC_SHADOW_TEMPLE_MQ_DEAD_HAND_POT_1, RCQUEST_MQ, RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(-4575, -811), "MQ Dead Hand Pot 1", RHT_POT_SHADOW_TEMPLE, RG_BOMBS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_MQ_DEAD_HAND_POT_1)); - locationTable[RC_SHADOW_TEMPLE_MQ_DEAD_HAND_POT_2] = Location::Pot(RC_SHADOW_TEMPLE_MQ_DEAD_HAND_POT_2, RCQUEST_MQ, RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(-4036, -811), "MQ Dead Hand Pot 2", RHT_POT_SHADOW_TEMPLE, RG_ARROWS_30, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_MQ_DEAD_HAND_POT_2)); - locationTable[RC_BOTTOM_OF_THE_WELL_MQ_INNER_LOBBY_POT_1] = Location::Pot(RC_BOTTOM_OF_THE_WELL_MQ_INNER_LOBBY_POT_1, RCQUEST_MQ, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(339, -377), "MQ Inner Lobby Pot 1", RHT_POT_BOTTOM_OF_THE_WELL, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_MQ_INNER_LOBBY_POT_1)); - locationTable[RC_BOTTOM_OF_THE_WELL_MQ_INNER_LOBBY_POT_2] = Location::Pot(RC_BOTTOM_OF_THE_WELL_MQ_INNER_LOBBY_POT_2, RCQUEST_MQ, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(416, -377), "MQ Inner Lobby Pot 2", RHT_POT_BOTTOM_OF_THE_WELL, RG_BOMBS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_MQ_INNER_LOBBY_POT_2)); - locationTable[RC_BOTTOM_OF_THE_WELL_MQ_INNER_LOBBY_POT_3] = Location::Pot(RC_BOTTOM_OF_THE_WELL_MQ_INNER_LOBBY_POT_3, RCQUEST_MQ, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(269, -376), "MQ Inner Lobby Pot 3", RHT_POT_BOTTOM_OF_THE_WELL, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_MQ_INNER_LOBBY_POT_3)); - locationTable[RC_BOTTOM_OF_THE_WELL_MQ_OUTER_LOBBY_POT] = Location::Pot(RC_BOTTOM_OF_THE_WELL_MQ_OUTER_LOBBY_POT, RCQUEST_MQ, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(421, -174), "MQ Outer Lobby Pot", RHT_POT_BOTTOM_OF_THE_WELL, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_MQ_OUTER_LOBBY_POT)); - locationTable[RC_BOTTOM_OF_THE_WELL_MQ_EAST_INNER_ROOM_POT_1] = Location::Pot(RC_BOTTOM_OF_THE_WELL_MQ_EAST_INNER_ROOM_POT_1, RCQUEST_MQ, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(288, -1240), "MQ East Inner Pot 1", RHT_POT_BOTTOM_OF_THE_WELL, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_MQ_SOUTH_KEY_POT_1)); - locationTable[RC_BOTTOM_OF_THE_WELL_MQ_EAST_INNER_ROOM_POT_2] = Location::Pot(RC_BOTTOM_OF_THE_WELL_MQ_EAST_INNER_ROOM_POT_2, RCQUEST_MQ, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(438, -1234), "MQ East Inner Pot 2", RHT_POT_BOTTOM_OF_THE_WELL, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_MQ_SOUTH_KEY_POT_2)); - locationTable[RC_BOTTOM_OF_THE_WELL_MQ_EAST_INNER_ROOM_POT_3] = Location::Pot(RC_BOTTOM_OF_THE_WELL_MQ_EAST_INNER_ROOM_POT_3, RCQUEST_MQ, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(444, -1114), "MQ East Inner Pot 3", RHT_POT_BOTTOM_OF_THE_WELL, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_MQ_SOUTH_KEY_POT_3)); - locationTable[RC_FIRE_TEMPLE_MQ_ENTRANCE_POT_1] = Location::Pot(RC_FIRE_TEMPLE_MQ_ENTRANCE_POT_1, RCQUEST_MQ, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(-357, 957), "MQ Entrance Pot 1", RHT_POT_FIRE_TEMPLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_MQ_ENTRANCE_POT_1)); - locationTable[RC_FIRE_TEMPLE_MQ_ENTRANCE_POT_2] = Location::Pot(RC_FIRE_TEMPLE_MQ_ENTRANCE_POT_2, RCQUEST_MQ, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(356, 959), "MQ Entrance Pot 2", RHT_POT_FIRE_TEMPLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_MQ_ENTRANCE_POT_2)); - locationTable[RC_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_1] = Location::Pot(RC_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_1, RCQUEST_MQ, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(187, -1449), "MQ Before Mini Boss Pot 1", RHT_POT_FIRE_TEMPLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_1)); - locationTable[RC_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_2] = Location::Pot(RC_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_2, RCQUEST_MQ, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(188, -1514), "MQ Before Mini Boss Pot 2", RHT_POT_FIRE_TEMPLE, RG_BOMBS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_2)); - locationTable[RC_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_3] = Location::Pot(RC_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_3, RCQUEST_MQ, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(487, -1450), "MQ Before Mini Boss Pot 3", RHT_POT_FIRE_TEMPLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_3)); - locationTable[RC_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_4] = Location::Pot(RC_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_4, RCQUEST_MQ, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(486, -1515), "MQ Before Mini Boss Pot 4", RHT_POT_FIRE_TEMPLE, RG_BOMBS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_4)); - locationTable[RC_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_5] = Location::Pot(RC_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_5, RCQUEST_MQ, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(38, -1179), "MQ Before Mini Boss Pot 5", RHT_POT_FIRE_TEMPLE, RG_BOMBS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_5)); - locationTable[RC_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_6] = Location::Pot(RC_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_6, RCQUEST_MQ, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(42, -1298), "MQ Before Mini Boss Pot 6", RHT_POT_FIRE_TEMPLE, RG_BOMBS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_6)); - locationTable[RC_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_7] = Location::Pot(RC_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_7, RCQUEST_MQ, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(520, -943), "MQ Before Mini Boss Pot 7", RHT_POT_FIRE_TEMPLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_7)); - locationTable[RC_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_8] = Location::Pot(RC_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_8, RCQUEST_MQ, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(35, -946), "MQ Before Mini Boss Pot 8", RHT_POT_FIRE_TEMPLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_8)); - locationTable[RC_FIRE_TEMPLE_MQ_OUTSIDE_BOSS_POT_1] = Location::Pot(RC_FIRE_TEMPLE_MQ_OUTSIDE_BOSS_POT_1, RCQUEST_MQ, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(-1426, -711), "MQ Outside Boss Pot 1", RHT_POT_FIRE_TEMPLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_MQ_OUTSIDE_BOSS_POT_1)); - locationTable[RC_FIRE_TEMPLE_MQ_OUTSIDE_BOSS_POT_2] = Location::Pot(RC_FIRE_TEMPLE_MQ_OUTSIDE_BOSS_POT_2, RCQUEST_MQ, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(-1425, -660), "MQ Outside Boss Pot 2", RHT_POT_FIRE_TEMPLE, RG_ARROWS_30, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_MQ_OUTSIDE_BOSS_POT_2)); - locationTable[RC_FIRE_TEMPLE_MQ_LAVA_ROOM_NORTH_POT] = Location::Pot(RC_FIRE_TEMPLE_MQ_LAVA_ROOM_NORTH_POT, RCQUEST_MQ, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(1646, -1260), "MQ Lava Room North Pot", RHT_POT_FIRE_TEMPLE, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_MQ_LAVA_POT_1)); - locationTable[RC_FIRE_TEMPLE_MQ_LAVA_ROOM_HIGH_POT] = Location::Pot(RC_FIRE_TEMPLE_MQ_LAVA_ROOM_HIGH_POT, RCQUEST_MQ, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(2226, -809), "MQ Lava Room High Pot", RHT_POT_FIRE_TEMPLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_MQ_LAVA_POT_2)); - locationTable[RC_FIRE_TEMPLE_MQ_LAVA_ROOM_SOUTH_POT] = Location::Pot(RC_FIRE_TEMPLE_MQ_LAVA_ROOM_SOUTH_POT, RCQUEST_MQ, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(1634, 1475), "MQ Lava Room South Pot", RHT_POT_FIRE_TEMPLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_MQ_LAVA_POT_3)); - locationTable[RC_FIRE_TEMPLE_MQ_LAVA_TORCH_POT_1] = Location::Pot(RC_FIRE_TEMPLE_MQ_LAVA_TORCH_POT_1, RCQUEST_MQ, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(845, -1591), "MQ Lava Torch Pot 1", RHT_POT_FIRE_TEMPLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_MQ_LAVA_TORCH_POT_1)); - locationTable[RC_FIRE_TEMPLE_MQ_LAVA_TORCH_POT_2] = Location::Pot(RC_FIRE_TEMPLE_MQ_LAVA_TORCH_POT_2, RCQUEST_MQ, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(901, -1593), "MQ Lava Torch Pot 2", RHT_POT_FIRE_TEMPLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_MQ_LAVA_TORCH_POT_2)); - locationTable[RC_FIRE_TEMPLE_MQ_ABOVE_LAVA_POT_1] = Location::Pot(RC_FIRE_TEMPLE_MQ_ABOVE_LAVA_POT_1, RCQUEST_MQ, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(1756, -155), "MQ Above Lava Pot 1", RHT_POT_FIRE_TEMPLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_MQ_ABOVE_LAVA_POT_1)); - locationTable[RC_FIRE_TEMPLE_MQ_ABOVE_LAVA_POT_2] = Location::Pot(RC_FIRE_TEMPLE_MQ_ABOVE_LAVA_POT_2, RCQUEST_MQ, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(1819, -82), "MQ Above Lava Pot 2", RHT_POT_FIRE_TEMPLE, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_MQ_ABOVE_LAVA_POT_2)); - locationTable[RC_FIRE_TEMPLE_MQ_ABOVE_LAVA_POT_3] = Location::Pot(RC_FIRE_TEMPLE_MQ_ABOVE_LAVA_POT_3, RCQUEST_MQ, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(1789, -122), "MQ Above Lava Pot 3", RHT_POT_FIRE_TEMPLE, RG_BOMBS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_MQ_ABOVE_LAVA_POT_3)); - locationTable[RC_FIRE_TEMPLE_MQ_FLAME_WALL_POT_1] = Location::Pot(RC_FIRE_TEMPLE_MQ_FLAME_WALL_POT_1, RCQUEST_MQ, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(1493, 386), "MQ Flame Wall Pot 1", RHT_POT_FIRE_TEMPLE, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_MQ_FLAME_WALL_POT_1)); - locationTable[RC_FIRE_TEMPLE_MQ_FLAME_WALL_POT_2] = Location::Pot(RC_FIRE_TEMPLE_MQ_FLAME_WALL_POT_2, RCQUEST_MQ, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(1445, 445), "MQ Flame Wall Pot 2", RHT_POT_FIRE_TEMPLE, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_MQ_FLAME_WALL_POT_2)); - locationTable[RC_FIRE_TEMPLE_MQ_PAST_FIRE_MAZE_SOUTH_POT] = Location::Pot(RC_FIRE_TEMPLE_MQ_PAST_FIRE_MAZE_SOUTH_POT, RCQUEST_MQ, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(-2217, -163), "MQ Past Fire Maze North Pot", RHT_POT_FIRE_TEMPLE, RG_BOMBS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_MQ_FIRE_MAZE_POT_1)); - locationTable[RC_FIRE_TEMPLE_MQ_PAST_FIRE_MAZE_NORTH_POT] = Location::Pot(RC_FIRE_TEMPLE_MQ_PAST_FIRE_MAZE_NORTH_POT, RCQUEST_MQ, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(-2657, -591), "MQ Past Fire Maze South Pot", RHT_POT_FIRE_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_MQ_FIRE_MAZE_POT_2)); - locationTable[RC_FIRE_TEMPLE_MQ_FIRE_MAZE_NORTHMOST_POT] = Location::Pot(RC_FIRE_TEMPLE_MQ_FIRE_MAZE_NORTHMOST_POT, RCQUEST_MQ, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(-1849, -1114), "MQ Fire Maze Northmost Pot", RHT_POT_FIRE_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_MQ_FIRE_MAZE_POT_3)); - locationTable[RC_FIRE_TEMPLE_MQ_FIRE_MAZE_NORTHWEST_POT] = Location::Pot(RC_FIRE_TEMPLE_MQ_FIRE_MAZE_NORTHWEST_POT, RCQUEST_MQ, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(-2110, -646), "MQ Fire Maze North West Pot", RHT_POT_FIRE_TEMPLE, RG_BOMBS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_MQ_FIRE_MAZE_POT_4)); - locationTable[RC_FIRE_TEMPLE_MQ_SOUTH_FIRE_MAZE_WEST_POT] = Location::Pot(RC_FIRE_TEMPLE_MQ_SOUTH_FIRE_MAZE_WEST_POT, RCQUEST_MQ, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(-2319, 838), "MQ South Fire Maze W Pot", RHT_POT_FIRE_TEMPLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_MQ_FIRE_MAZE_POT_5)); - locationTable[RC_FIRE_TEMPLE_MQ_SOUTH_FIRE_MAZE_EAST_POT] = Location::Pot(RC_FIRE_TEMPLE_MQ_SOUTH_FIRE_MAZE_EAST_POT, RCQUEST_MQ, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(-2285, 803), "MQ South Fire Maze E Pot", RHT_POT_FIRE_TEMPLE, RG_BOMBS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_MQ_FIRE_MAZE_POT_6)); - locationTable[RC_ICE_CAVERN_MQ_ENTRANCE_POT] = Location::Pot(RC_ICE_CAVERN_MQ_ENTRANCE_POT, RCQUEST_MQ, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(248, 2287), "MQ Entrance Pot", RHT_POT_ICE_CAVERN, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_MQ_ENTRANCE_POT)); - locationTable[RC_ICE_CAVERN_MQ_FIRST_CRYSTAL_POT_1] = Location::Pot(RC_ICE_CAVERN_MQ_FIRST_CRYSTAL_POT_1, RCQUEST_MQ, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(51, 718), "MQ First Crystal Pot 1", RHT_POT_ICE_CAVERN, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_MQ_FIRST_CRYSTAL_POT_1)); - locationTable[RC_ICE_CAVERN_MQ_FIRST_CRYSTAL_POT_2] = Location::Pot(RC_ICE_CAVERN_MQ_FIRST_CRYSTAL_POT_2, RCQUEST_MQ, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(52, 768), "MQ First Crystal Pot 2", RHT_POT_ICE_CAVERN, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_MQ_FIRST_CRYSTAL_POT_2)); - locationTable[RC_ICE_CAVERN_MQ_EARLY_WOLFOS_POT_1] = Location::Pot(RC_ICE_CAVERN_MQ_EARLY_WOLFOS_POT_1, RCQUEST_MQ, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(433, -732), "MQ Early Wolfos Pot 1", RHT_POT_ICE_CAVERN, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_MQ_EARLY_WOLFOS_POT_1)); - locationTable[RC_ICE_CAVERN_MQ_EARLY_WOLFOS_POT_2] = Location::Pot(RC_ICE_CAVERN_MQ_EARLY_WOLFOS_POT_2, RCQUEST_MQ, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(569, -175), "MQ Early Wolfos Pot 2", RHT_POT_ICE_CAVERN, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_MQ_EARLY_WOLFOS_POT_2)); - locationTable[RC_ICE_CAVERN_MQ_EARLY_WOLFOS_POT_3] = Location::Pot(RC_ICE_CAVERN_MQ_EARLY_WOLFOS_POT_3, RCQUEST_MQ, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(521, -131), "MQ Early Wolfos Pot 3", RHT_POT_ICE_CAVERN, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_MQ_EARLY_WOLFOS_POT_3)); - locationTable[RC_ICE_CAVERN_MQ_EARLY_WOLFOS_POT_4] = Location::Pot(RC_ICE_CAVERN_MQ_EARLY_WOLFOS_POT_4, RCQUEST_MQ, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(138, -672), "MQ Early Wolfos Pot 4", RHT_POT_ICE_CAVERN, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_MQ_EARLY_WOLFOS_POT_4)); - locationTable[RC_ICE_CAVERN_MQ_PUSH_BLOCK_POT_1] = Location::Pot(RC_ICE_CAVERN_MQ_PUSH_BLOCK_POT_1, RCQUEST_MQ, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(-1352, 639), "MQ Push Block Pot 1", RHT_POT_ICE_CAVERN, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_MQ_PUSH_BLOCK_POT_1)); - locationTable[RC_ICE_CAVERN_MQ_PUSH_BLOCK_POT_2] = Location::Pot(RC_ICE_CAVERN_MQ_PUSH_BLOCK_POT_2, RCQUEST_MQ, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(-1396, 596), "MQ Push Block Pot 2", RHT_POT_ICE_CAVERN, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_MQ_PUSH_BLOCK_POT_2)); - locationTable[RC_ICE_CAVERN_MQ_COMPASS_POT_1] = Location::Pot(RC_ICE_CAVERN_MQ_COMPASS_POT_1, RCQUEST_MQ, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(902, -2720), "MQ Compass Pot 1", RHT_POT_ICE_CAVERN, RG_BOMBS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_MQ_COMPASS_POT_1)); - locationTable[RC_ICE_CAVERN_MQ_COMPASS_POT_2] = Location::Pot(RC_ICE_CAVERN_MQ_COMPASS_POT_2, RCQUEST_MQ, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(451, -2726), "MQ Compass Pot 2", RHT_POT_ICE_CAVERN, RG_BOMBS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_MQ_COMPASS_POT_2)); - locationTable[RC_SPIRIT_TEMPLE_MQ_ENTRANCE_POT_1] = Location::Pot(RC_SPIRIT_TEMPLE_MQ_ENTRANCE_POT_1, RCQUEST_MQ, RCAREA_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(-255, 742), "MQ Entrance Pot 1", RHT_POT_SPIRIT_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_MQ_ENTRANCE_POT_1)); - locationTable[RC_SPIRIT_TEMPLE_MQ_ENTRANCE_POT_2] = Location::Pot(RC_SPIRIT_TEMPLE_MQ_ENTRANCE_POT_2, RCQUEST_MQ, RCAREA_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(306, 682), "MQ Entrance Pot 2", RHT_POT_SPIRIT_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_MQ_ENTRANCE_POT_2)); - locationTable[RC_SPIRIT_TEMPLE_MQ_ENTRANCE_POT_3] = Location::Pot(RC_SPIRIT_TEMPLE_MQ_ENTRANCE_POT_3, RCQUEST_MQ, RCAREA_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(-297, 687), "MQ Entrance Pot 3", RHT_POT_SPIRIT_TEMPLE, RG_BOMBS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_MQ_ENTRANCE_POT_3)); - locationTable[RC_SPIRIT_TEMPLE_MQ_ENTRANCE_POT_4] = Location::Pot(RC_SPIRIT_TEMPLE_MQ_ENTRANCE_POT_4, RCQUEST_MQ, RCAREA_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(260, 735), "MQ Entrance Pot 4", RHT_POT_SPIRIT_TEMPLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_MQ_ENTRANCE_POT_4)); - locationTable[RC_SPIRIT_TEMPLE_MQ_CHILD_SLUGMA_POT] = Location::Pot(RC_SPIRIT_TEMPLE_MQ_CHILD_SLUGMA_POT, RCQUEST_MQ, RCAREA_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(-894, -50), "MQ Child Slugma Pot", RHT_POT_SPIRIT_TEMPLE, RG_BOMBS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_MQ_CHILD_SLUGMA_POT)); - locationTable[RC_SPIRIT_TEMPLE_MQ_CHILD_GIBDO_POT_1] = Location::Pot(RC_SPIRIT_TEMPLE_MQ_CHILD_GIBDO_POT_1, RCQUEST_MQ, RCAREA_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(-382, -1256), "MQ Child Gibdo Pot 1", RHT_POT_SPIRIT_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_MQ_CHILD_GIBDO_POT_1)); - locationTable[RC_SPIRIT_TEMPLE_MQ_CHILD_GIBDO_POT_2] = Location::Pot(RC_SPIRIT_TEMPLE_MQ_CHILD_GIBDO_POT_2, RCQUEST_MQ, RCAREA_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(-381, -1207), "MQ Child Gibdo Pot 2", RHT_POT_SPIRIT_TEMPLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_MQ_CHILD_GIBDO_POT_2)); - locationTable[RC_SPIRIT_TEMPLE_MQ_CHILD_LIKE_LIKE_POT] = Location::Pot(RC_SPIRIT_TEMPLE_MQ_CHILD_LIKE_LIKE_POT, RCQUEST_MQ, RCAREA_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(-1035, -1240), "MQ Child Like Like Pot", RHT_POT_SPIRIT_TEMPLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_MQ_CHILD_LIKE_LIKE_POT)); - locationTable[RC_SPIRIT_TEMPLE_MQ_CHILD_STALFOS_POT_1] = Location::Pot(RC_SPIRIT_TEMPLE_MQ_CHILD_STALFOS_POT_1, RCQUEST_MQ, RCAREA_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(-1166, -1931), "MQ Child Stalfos Pot 1", RHT_POT_SPIRIT_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_MQ_CHILD_STALFOS_POT_1)); - locationTable[RC_SPIRIT_TEMPLE_MQ_CHILD_STALFOS_POT_2] = Location::Pot(RC_SPIRIT_TEMPLE_MQ_CHILD_STALFOS_POT_2, RCQUEST_MQ, RCAREA_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(-959, -1930), "MQ Child Stalfos Pot 2", RHT_POT_SPIRIT_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_MQ_CHILD_STALFOS_POT_2)); - locationTable[RC_SPIRIT_TEMPLE_MQ_CHILD_STALFOS_POT_3] = Location::Pot(RC_SPIRIT_TEMPLE_MQ_CHILD_STALFOS_POT_3, RCQUEST_MQ, RCAREA_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(-853, -1837), "MQ Child Stalfos Pot 3", RHT_POT_SPIRIT_TEMPLE, RG_DEKU_SEEDS_30, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_MQ_CHILD_STALFOS_POT_3)); - locationTable[RC_SPIRIT_TEMPLE_MQ_CHILD_STALFOS_POT_4] = Location::Pot(RC_SPIRIT_TEMPLE_MQ_CHILD_STALFOS_POT_4, RCQUEST_MQ, RCAREA_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(-1250, -1852), "MQ Child Stalfos Pot 4", RHT_POT_SPIRIT_TEMPLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_MQ_CHILD_STALFOS_POT_4)); - locationTable[RC_SPIRIT_TEMPLE_MQ_STATUE_2F_CENTER_EAST_POT] = Location::Pot(RC_SPIRIT_TEMPLE_MQ_STATUE_2F_CENTER_EAST_POT, RCQUEST_MQ, RCAREA_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(639, -1224), "MQ Statue Room 2F CE Pot", RHT_POT_SPIRIT_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_MQ_CENTRAL_CHAMBER_POT_1)); - locationTable[RC_SPIRIT_TEMPLE_MQ_STATUE_3F_EAST_POT] = Location::Pot(RC_SPIRIT_TEMPLE_MQ_STATUE_3F_EAST_POT, RCQUEST_MQ, RCAREA_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(-521, -1576), "MQ Statue Room 3F E Pot", RHT_POT_SPIRIT_TEMPLE, RG_ARROWS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_MQ_CENTRAL_CHAMBER_POT_2)); - locationTable[RC_SPIRIT_TEMPLE_MQ_STATUE_3F_WEST_POT] = Location::Pot(RC_SPIRIT_TEMPLE_MQ_STATUE_3F_WEST_POT, RCQUEST_MQ, RCAREA_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(-595, -1576), "MQ Statue Room 3F W Pot", RHT_POT_SPIRIT_TEMPLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_MQ_CENTRAL_CHAMBER_POT_3)); - locationTable[RC_SPIRIT_TEMPLE_MQ_STATUE_2F_WEST_POT] = Location::Pot(RC_SPIRIT_TEMPLE_MQ_STATUE_2F_WEST_POT, RCQUEST_MQ, RCAREA_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(-559, -1209), "MQ Statue Room 2F W Pot", RHT_POT_SPIRIT_TEMPLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_MQ_CENTRAL_CHAMBER_POT_4)); - locationTable[RC_SPIRIT_TEMPLE_MQ_STATUE_2F_EASTMOST_POT] = Location::Pot(RC_SPIRIT_TEMPLE_MQ_STATUE_2F_EASTMOST_POT, RCQUEST_MQ, RCAREA_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(704, -1224), "MQ Statue Room 2F E Pot", RHT_POT_SPIRIT_TEMPLE, RG_DEKU_SEEDS_30, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_MQ_CENTRAL_CHAMBER_POT_5)); - locationTable[RC_SPIRIT_TEMPLE_MQ_SUN_BLOCKS_POT_1] = Location::Pot(RC_SPIRIT_TEMPLE_MQ_SUN_BLOCKS_POT_1, RCQUEST_MQ, RCAREA_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(-1276, 432), "MQ Sun Blocks Pot 1", RHT_POT_SPIRIT_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_MQ_SUN_BLOCKS_POT_1)); - locationTable[RC_SPIRIT_TEMPLE_MQ_SUN_BLOCKS_POT_2] = Location::Pot(RC_SPIRIT_TEMPLE_MQ_SUN_BLOCKS_POT_2, RCQUEST_MQ, RCAREA_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(-1635, -446), "MQ Sun Blocks Pot 2", RHT_POT_SPIRIT_TEMPLE, RG_DEKU_SEEDS_30, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_MQ_SUN_BLOCKS_POT_2)); - locationTable[RC_SPIRIT_TEMPLE_MQ_LONG_CLIMB_POT_1] = Location::Pot(RC_SPIRIT_TEMPLE_MQ_LONG_CLIMB_POT_1, RCQUEST_MQ, RCAREA_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(829, 250), "MQ Long Climb Pot 1", RHT_POT_SPIRIT_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_MQ_LONG_CLIMB_POT_1)); - locationTable[RC_SPIRIT_TEMPLE_MQ_LONG_CLIMB_POT_2] = Location::Pot(RC_SPIRIT_TEMPLE_MQ_LONG_CLIMB_POT_2, RCQUEST_MQ, RCAREA_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(531, 249), "MQ Long Climb Pot 2", RHT_POT_SPIRIT_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_MQ_LONG_CLIMB_POT_2)); - locationTable[RC_SPIRIT_TEMPLE_MQ_BIG_MIRROR_POT_1] = Location::Pot(RC_SPIRIT_TEMPLE_MQ_BIG_MIRROR_POT_1, RCQUEST_MQ, RCAREA_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(244, -893), "MQ Big Mirror Pot 1", RHT_POT_SPIRIT_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_MQ_BIG_MIRROR_POT_1)); - locationTable[RC_SPIRIT_TEMPLE_MQ_BIG_MIRROR_POT_2] = Location::Pot(RC_SPIRIT_TEMPLE_MQ_BIG_MIRROR_POT_2, RCQUEST_MQ, RCAREA_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(-122, -741), "MQ Big Mirror Pot 2", RHT_POT_SPIRIT_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_MQ_BIG_MIRROR_POT_2)); - locationTable[RC_SPIRIT_TEMPLE_MQ_BIG_MIRROR_POT_3] = Location::Pot(RC_SPIRIT_TEMPLE_MQ_BIG_MIRROR_POT_3, RCQUEST_MQ, RCAREA_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(250, -741), "MQ Big Mirror Pot 3", RHT_POT_SPIRIT_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_MQ_BIG_MIRROR_POT_3)); - locationTable[RC_SPIRIT_TEMPLE_MQ_BIG_MIRROR_POT_4] = Location::Pot(RC_SPIRIT_TEMPLE_MQ_BIG_MIRROR_POT_4, RCQUEST_MQ, RCAREA_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(-123, -892), "MQ Big Mirror Pot 4", RHT_POT_SPIRIT_TEMPLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_MQ_BIG_MIRROR_POT_4)); - locationTable[RC_SPIRIT_TEMPLE_MQ_BEFORE_MIRROR_POT_1] = Location::Pot(RC_SPIRIT_TEMPLE_MQ_BEFORE_MIRROR_POT_1, RCQUEST_MQ, RCAREA_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(781, -841), "MQ Before Mirror Pot 1", RHT_POT_SPIRIT_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_MQ_BEFORE_MIRROR_POT_1)); - locationTable[RC_SPIRIT_TEMPLE_MQ_BEFORE_MIRROR_POT_2] = Location::Pot(RC_SPIRIT_TEMPLE_MQ_BEFORE_MIRROR_POT_2, RCQUEST_MQ, RCAREA_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(587, -844), "MQ Before Mirror Pot 2", RHT_POT_SPIRIT_TEMPLE, RG_BOMBS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_MQ_BEFORE_MIRROR_POT_2)); - locationTable[RC_SPIRIT_TEMPLE_MQ_EARLY_ADULT_POT_1] = Location::Pot(RC_SPIRIT_TEMPLE_MQ_EARLY_ADULT_POT_1, RCQUEST_MQ, RCAREA_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(1204, -910), "MQ Early Adult Pot 1", RHT_POT_SPIRIT_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_MQ_EARLY_ADULT_POT_1)); - locationTable[RC_SPIRIT_TEMPLE_MQ_EARLY_ADULT_POT_2] = Location::Pot(RC_SPIRIT_TEMPLE_MQ_EARLY_ADULT_POT_2, RCQUEST_MQ, RCAREA_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(1204, -1028), "MQ Early Adult Pot 2", RHT_POT_SPIRIT_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_MQ_EARLY_ADULT_POT_2)); - locationTable[RC_WATER_TEMPLE_MQ_LOWER_TORCHES_POT_1] = Location::Pot(RC_WATER_TEMPLE_MQ_LOWER_TORCHES_POT_1, RCQUEST_MQ, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(1123, 62), "MQ Lower Torches Pot 1", RHT_POT_WATER_TEMPLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_MQ_LOWER_TORCHES_POT_1)); - locationTable[RC_WATER_TEMPLE_MQ_LOWER_TORCHES_POT_2] = Location::Pot(RC_WATER_TEMPLE_MQ_LOWER_TORCHES_POT_2, RCQUEST_MQ, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(1123, 293), "MQ Lower Torches Pot 2", RHT_POT_WATER_TEMPLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_MQ_LOWER_TORCHES_POT_2)); - locationTable[RC_WATER_TEMPLE_MQ_STORAGE_ROOM_A_POT_1] = Location::Pot(RC_WATER_TEMPLE_MQ_STORAGE_ROOM_A_POT_1, RCQUEST_MQ, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(1222, -617), "MQ Storage Room A Pot 1", RHT_POT_WATER_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_MQ_STORAGE_ROOM_A_POT_1)); - locationTable[RC_WATER_TEMPLE_MQ_STORAGE_ROOM_A_POT_2] = Location::Pot(RC_WATER_TEMPLE_MQ_STORAGE_ROOM_A_POT_2, RCQUEST_MQ, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(1122, -617), "MQ Storage Room A Pot 2", RHT_POT_WATER_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_MQ_STORAGE_ROOM_A_POT_2)); - locationTable[RC_WATER_TEMPLE_MQ_STORAGE_ROOM_A_POT_3] = Location::Pot(RC_WATER_TEMPLE_MQ_STORAGE_ROOM_A_POT_3, RCQUEST_MQ, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(1172, -617), "MQ Storage Room A Pot 3", RHT_POT_WATER_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_MQ_STORAGE_ROOM_A_POT_3)); - locationTable[RC_WATER_TEMPLE_MQ_GS_STORAGE_ROOM_POT_1] = Location::Pot(RC_WATER_TEMPLE_MQ_GS_STORAGE_ROOM_POT_1, RCQUEST_MQ, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(-989, 255), "MQ GS Storage Room Pot 1", RHT_POT_WATER_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_MQ_GS_STORAGE_ROOM_POT_1)); - locationTable[RC_WATER_TEMPLE_MQ_GS_STORAGE_ROOM_POT_2] = Location::Pot(RC_WATER_TEMPLE_MQ_GS_STORAGE_ROOM_POT_2, RCQUEST_MQ, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(-1026, 257), "MQ GS Storage Room Pot 2", RHT_POT_WATER_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_MQ_GS_STORAGE_ROOM_POT_2)); - locationTable[RC_WATER_TEMPLE_MQ_GS_STORAGE_ROOM_POT_3] = Location::Pot(RC_WATER_TEMPLE_MQ_GS_STORAGE_ROOM_POT_3, RCQUEST_MQ, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(-1062, 256), "MQ GS Storage Room Pot 3", RHT_POT_WATER_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_MQ_GS_STORAGE_ROOM_POT_3)); - locationTable[RC_WATER_TEMPLE_MQ_LIZALFOS_HALLWAY_WEST_POT] = Location::Pot(RC_WATER_TEMPLE_MQ_LIZALFOS_HALLWAY_WEST_POT, RCQUEST_MQ, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(512, 579), "MQ Lizalfos Hall W Pot", RHT_POT_WATER_TEMPLE, RG_RED_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_MQ_CENTRAL_GATE_POT_1)); - locationTable[RC_WATER_TEMPLE_MQ_LIZALFOS_HALLWAY_SOUTH_POT] = Location::Pot(RC_WATER_TEMPLE_MQ_LIZALFOS_HALLWAY_SOUTH_POT, RCQUEST_MQ, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(602, 1022), "MQ Lizalfos Hall S Pot", RHT_POT_WATER_TEMPLE, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_MQ_CENTRAL_GATE_POT_2)); - locationTable[RC_WATER_TEMPLE_MQ_LIZALFOS_HALLWAY_SE_POT] = Location::Pot(RC_WATER_TEMPLE_MQ_LIZALFOS_HALLWAY_SE_POT, RCQUEST_MQ, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(789, 947), "MQ Lizalfos Hall SE Pot", RHT_POT_WATER_TEMPLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_MQ_CENTRAL_GATE_POT_3)); - locationTable[RC_WATER_TEMPLE_MQ_LIZALFOS_CAGE_SOUTH_POT] = Location::Pot(RC_WATER_TEMPLE_MQ_LIZALFOS_CAGE_SOUTH_POT, RCQUEST_MQ, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(768, 565), "MQ Lizalfos Cage N Pot", RHT_POT_WATER_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_MQ_CENTRAL_GATE_POT_4)); - locationTable[RC_WATER_TEMPLE_MQ_LIZALFOS_CAGE_NORTH_POT] = Location::Pot(RC_WATER_TEMPLE_MQ_LIZALFOS_CAGE_NORTH_POT, RCQUEST_MQ, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(767, 517), "MQ Lizalfos Cage S Pot", RHT_POT_WATER_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_MQ_CENTRAL_GATE_POT_5)); - locationTable[RC_WATER_TEMPLE_MQ_STALFOS_PIT_MIDDLE_POT] = Location::Pot(RC_WATER_TEMPLE_MQ_STALFOS_PIT_MIDDLE_POT, RCQUEST_MQ, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(-3500, -751), "MQ Stalfos Pit Middle Pot", RHT_POT_WATER_TEMPLE, RG_DEKU_NUTS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_MQ_BEFORE_DARK_LINK_POT_3)); - locationTable[RC_WATER_TEMPLE_MQ_STALFOS_PIT_SOUTH_POT] = Location::Pot(RC_WATER_TEMPLE_MQ_STALFOS_PIT_SOUTH_POT, RCQUEST_MQ, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(-3500, -686), "MQ Stalfos Pit South Pot", RHT_POT_WATER_TEMPLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_MQ_BEFORE_DARK_LINK_POT_4)); - locationTable[RC_WATER_TEMPLE_MQ_STALFOS_PIT_NORTH_POT] = Location::Pot(RC_WATER_TEMPLE_MQ_STALFOS_PIT_NORTH_POT, RCQUEST_MQ, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(-3500, -810), "MQ Stalfos Pit North Pot", RHT_POT_WATER_TEMPLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_MQ_BEFORE_DARK_LINK_POT_5)); - locationTable[RC_WATER_TEMPLE_MQ_BEFORE_DARK_LINK_POT_1] = Location::Pot(RC_WATER_TEMPLE_MQ_BEFORE_DARK_LINK_POT_1, RCQUEST_MQ, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(-3188, -1628), "MQ Before Dark Link Pot 1", RHT_POT_WATER_TEMPLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_MQ_BEFORE_DARK_LINK_POT_1)); - locationTable[RC_WATER_TEMPLE_MQ_BEFORE_DARK_LINK_POT_2] = Location::Pot(RC_WATER_TEMPLE_MQ_BEFORE_DARK_LINK_POT_2, RCQUEST_MQ, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(-3056, -1626), "MQ Before Dark Link Pot 2", RHT_POT_WATER_TEMPLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_MQ_BEFORE_DARK_LINK_POT_2)); - locationTable[RC_WATER_TEMPLE_MQ_AFTER_DARK_LINK_POT_1] = Location::Pot(RC_WATER_TEMPLE_MQ_AFTER_DARK_LINK_POT_1, RCQUEST_MQ, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(-3072, -4024), "MQ After Dark Link Pot 1", RHT_POT_WATER_TEMPLE, RG_ARROWS_30, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_MQ_AFTER_DARK_LINK_POT_1)); - locationTable[RC_WATER_TEMPLE_MQ_AFTER_DARK_LINK_POT_2] = Location::Pot(RC_WATER_TEMPLE_MQ_AFTER_DARK_LINK_POT_2, RCQUEST_MQ, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(-3169, -4023), "MQ After Dark Link Pot 2", RHT_POT_WATER_TEMPLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_MQ_AFTER_DARK_LINK_POT_2)); - locationTable[RC_WATER_TEMPLE_MQ_RIVER_POT_1] = Location::Pot(RC_WATER_TEMPLE_MQ_RIVER_POT_1, RCQUEST_MQ, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(-2226, -2487), "MQ River Pot 1", RHT_POT_WATER_TEMPLE, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_MQ_RIVER_POT_1)); - locationTable[RC_WATER_TEMPLE_MQ_RIVER_POT_2] = Location::Pot(RC_WATER_TEMPLE_MQ_RIVER_POT_2, RCQUEST_MQ, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(-2184, -2456), "MQ River Pot 2", RHT_POT_WATER_TEMPLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_MQ_RIVER_POT_2)); - locationTable[RC_WATER_TEMPLE_MQ_BOSS_KEY_POT] = Location::Pot(RC_WATER_TEMPLE_MQ_BOSS_KEY_POT, RCQUEST_MQ, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(-1033, -1569), "MQ Boss Key Pot", RHT_POT_WATER_TEMPLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_MQ_BOSS_KEY_POT)); - locationTable[RC_WATER_TEMPLE_MQ_LOWEST_GS_POT_1] = Location::Pot(RC_WATER_TEMPLE_MQ_LOWEST_GS_POT_1, RCQUEST_MQ, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(-2314, 770), "MQ Lowest GS Pot 1", RHT_POT_WATER_TEMPLE, RG_BOMBS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_MQ_LOWEST_GS_POT_1)); - locationTable[RC_WATER_TEMPLE_MQ_LOWEST_GS_POT_2] = Location::Pot(RC_WATER_TEMPLE_MQ_LOWEST_GS_POT_2, RCQUEST_MQ, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(-2314, 808), "MQ Lowest GS Pot 2", RHT_POT_WATER_TEMPLE, RG_BOMBS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_MQ_LOWEST_GS_POT_2)); - locationTable[RC_WATER_TEMPLE_MQ_LOWEST_GS_POT_3] = Location::Pot(RC_WATER_TEMPLE_MQ_LOWEST_GS_POT_3, RCQUEST_MQ, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(-2313, 944), "MQ Lowest GS Pot 3", RHT_POT_WATER_TEMPLE, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_MQ_LOWEST_GS_POT_3)); - locationTable[RC_WATER_TEMPLE_MQ_LOWEST_GS_POT_4] = Location::Pot(RC_WATER_TEMPLE_MQ_LOWEST_GS_POT_4, RCQUEST_MQ, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(-2313, 905), "MQ Lowest GS Pot 4", RHT_POT_WATER_TEMPLE, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_MQ_LOWEST_GS_POT_4)); - locationTable[RC_WATER_TEMPLE_MQ_STORAGE_ROOM_B_POT_1] = Location::Pot(RC_WATER_TEMPLE_MQ_STORAGE_ROOM_B_POT_1, RCQUEST_MQ, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(-1417, -3025), "MQ Storage Room B Pot 1", RHT_POT_WATER_TEMPLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_MQ_STORAGE_ROOM_B_POT_1)); - locationTable[RC_WATER_TEMPLE_MQ_STORAGE_ROOM_B_POT_2] = Location::Pot(RC_WATER_TEMPLE_MQ_STORAGE_ROOM_B_POT_2, RCQUEST_MQ, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(-1150, -3031), "MQ Storage Room B Pot 2", RHT_POT_WATER_TEMPLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_MQ_STORAGE_ROOM_B_POT_2)); - locationTable[RC_WATER_TEMPLE_MQ_MINI_DODONGO_POT_1] = Location::Pot(RC_WATER_TEMPLE_MQ_MINI_DODONGO_POT_1, RCQUEST_MQ, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(28, -3817), "MQ Mini Dodongo Pot 1", RHT_POT_WATER_TEMPLE, RG_BOMBS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_MQ_MINI_DODONGO_POT_1)); - locationTable[RC_WATER_TEMPLE_MQ_MINI_DODONGO_POT_2] = Location::Pot(RC_WATER_TEMPLE_MQ_MINI_DODONGO_POT_2, RCQUEST_MQ, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(-28, -3817), "MQ Mini Dodongo Pot 2", RHT_POT_WATER_TEMPLE, RG_BOMBS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_MQ_MINI_DODONGO_POT_2)); - locationTable[RC_GERUDO_TRAINING_GROUND_MQ_LOBBY_LEFT_POT_1] = Location::Pot(RC_GERUDO_TRAINING_GROUND_MQ_LOBBY_LEFT_POT_1, RCQUEST_MQ, RCAREA_GERUDO_TRAINING_GROUND, SCENE_GERUDO_TRAINING_GROUND, TWO_ACTOR_PARAMS(-324, -72), "MQ Lobby Left Pot 1", RHT_POT_GERUDO_TRAINING_GROUND, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GERUDO_TRAINING_GROUND_MQ_LOBBY_LEFT_POT_1)); - locationTable[RC_GERUDO_TRAINING_GROUND_MQ_LOBBY_LEFT_POT_2] = Location::Pot(RC_GERUDO_TRAINING_GROUND_MQ_LOBBY_LEFT_POT_2, RCQUEST_MQ, RCAREA_GERUDO_TRAINING_GROUND, SCENE_GERUDO_TRAINING_GROUND, TWO_ACTOR_PARAMS(-324, -177), "MQ Lobby Left Pot 2", RHT_POT_GERUDO_TRAINING_GROUND, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GERUDO_TRAINING_GROUND_MQ_LOBBY_LEFT_POT_2)); - locationTable[RC_GERUDO_TRAINING_GROUND_MQ_LOBBY_RIGHT_POT_1] = Location::Pot(RC_GERUDO_TRAINING_GROUND_MQ_LOBBY_RIGHT_POT_1, RCQUEST_MQ, RCAREA_GERUDO_TRAINING_GROUND, SCENE_GERUDO_TRAINING_GROUND, TWO_ACTOR_PARAMS(199, -79), "MQ Lobby Right Pot 1", RHT_POT_GERUDO_TRAINING_GROUND, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GERUDO_TRAINING_GROUND_MQ_LOBBY_RIGHT_POT_1)); - locationTable[RC_GERUDO_TRAINING_GROUND_MQ_LOBBY_RIGHT_POT_2] = Location::Pot(RC_GERUDO_TRAINING_GROUND_MQ_LOBBY_RIGHT_POT_2, RCQUEST_MQ, RCAREA_GERUDO_TRAINING_GROUND, SCENE_GERUDO_TRAINING_GROUND, TWO_ACTOR_PARAMS(197, -179), "MQ Lobby Right Pot 2", RHT_POT_GERUDO_TRAINING_GROUND, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GERUDO_TRAINING_GROUND_MQ_LOBBY_RIGHT_POT_2)); + // Randomizer Check Randomizer Check Quest Area Scene ID Params Short Name Hint Text Key Vanilla Spoiler Collection Check + locationTable[RC_DODONGOS_CAVERN_LIZALFOS_POT_3] = Location::Pot(RC_DODONGOS_CAVERN_LIZALFOS_POT_3, RCQUEST_VANILLA, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(2673, -2060), "Lizalfos Pot 3", RHT_POT_DODONGOS_CAVERN, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_LIZALFOS_POT_3)); + locationTable[RC_DODONGOS_CAVERN_LIZALFOS_POT_2] = Location::Pot(RC_DODONGOS_CAVERN_LIZALFOS_POT_2, RCQUEST_VANILLA, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(3526, -2574), "Lizalfos Pot 2", RHT_POT_DODONGOS_CAVERN, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_LIZALFOS_POT_2)); + locationTable[RC_DODONGOS_CAVERN_LIZALFOS_POT_1] = Location::Pot(RC_DODONGOS_CAVERN_LIZALFOS_POT_1, RCQUEST_VANILLA, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(3579, -2574), "Lizalfos Pot 1", RHT_POT_DODONGOS_CAVERN, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_LIZALFOS_POT_1)); + locationTable[RC_DODONGOS_CAVERN_LIZALFOS_POT_4] = Location::Pot(RC_DODONGOS_CAVERN_LIZALFOS_POT_4, RCQUEST_VANILLA, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(2653, -2031), "Lizalfos Pot 4", RHT_POT_DODONGOS_CAVERN, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_LIZALFOS_POT_4)); + locationTable[RC_DODONGOS_CAVERN_SIDE_ROOM_POT_1] = Location::Pot(RC_DODONGOS_CAVERN_SIDE_ROOM_POT_1, RCQUEST_VANILLA, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(1708, -471), "Side Room Pot 1", RHT_POT_DODONGOS_CAVERN, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_SIDE_ROOM_POT_1)); + locationTable[RC_DODONGOS_CAVERN_SIDE_ROOM_POT_2] = Location::Pot(RC_DODONGOS_CAVERN_SIDE_ROOM_POT_2, RCQUEST_VANILLA, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(1746, -424), "Side Room Pot 2", RHT_POT_DODONGOS_CAVERN, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_SIDE_ROOM_POT_2)); + locationTable[RC_DODONGOS_CAVERN_SIDE_ROOM_POT_3] = Location::Pot(RC_DODONGOS_CAVERN_SIDE_ROOM_POT_3, RCQUEST_VANILLA, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(2573, -489), "Side Room Pot 3", RHT_POT_DODONGOS_CAVERN, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_SIDE_ROOM_POT_3)); + locationTable[RC_DODONGOS_CAVERN_SIDE_ROOM_POT_4] = Location::Pot(RC_DODONGOS_CAVERN_SIDE_ROOM_POT_4, RCQUEST_VANILLA, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(2622, -489), "Side Room Pot 4", RHT_POT_DODONGOS_CAVERN, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_SIDE_ROOM_POT_4)); + locationTable[RC_DODONGOS_CAVERN_SIDE_ROOM_POT_5] = Location::Pot(RC_DODONGOS_CAVERN_SIDE_ROOM_POT_5, RCQUEST_VANILLA, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(3507, -964), "Side Room Pot 5", RHT_POT_DODONGOS_CAVERN, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_SIDE_ROOM_POT_5)); + locationTable[RC_DODONGOS_CAVERN_SIDE_ROOM_POT_6] = Location::Pot(RC_DODONGOS_CAVERN_SIDE_ROOM_POT_6, RCQUEST_VANILLA, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(3617, -911), "Side Room Pot 6", RHT_POT_DODONGOS_CAVERN, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_SIDE_ROOM_POT_6)); + locationTable[RC_DODONGOS_CAVERN_TORCH_ROOM_POT_1] = Location::Pot(RC_DODONGOS_CAVERN_TORCH_ROOM_POT_1, RCQUEST_VANILLA, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(1846, -1879), "Torch Room Pot 1", RHT_POT_DODONGOS_CAVERN, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_TORCH_ROOM_POT_1)); + locationTable[RC_DODONGOS_CAVERN_TORCH_ROOM_POT_2] = Location::Pot(RC_DODONGOS_CAVERN_TORCH_ROOM_POT_2, RCQUEST_VANILLA, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(2050, -1964), "Torch Room Pot 2", RHT_POT_DODONGOS_CAVERN, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_TORCH_ROOM_POT_2)); + locationTable[RC_DODONGOS_CAVERN_TORCH_ROOM_POT_3] = Location::Pot(RC_DODONGOS_CAVERN_TORCH_ROOM_POT_3, RCQUEST_VANILLA, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(2281, -1799), "Torch Room Pot 3", RHT_POT_DODONGOS_CAVERN, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_TORCH_ROOM_POT_3)); + locationTable[RC_DODONGOS_CAVERN_TORCH_ROOM_POT_4] = Location::Pot(RC_DODONGOS_CAVERN_TORCH_ROOM_POT_4, RCQUEST_VANILLA, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(1836, -1239), "Torch Room Pot 4", RHT_POT_DODONGOS_CAVERN, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_TORCH_ROOM_POT_4)); + locationTable[RC_DODONGOS_CAVERN_STAIRCASE_POT_1] = Location::Pot(RC_DODONGOS_CAVERN_STAIRCASE_POT_1, RCQUEST_VANILLA, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(-2414, -1823), "Staircase Pot 1", RHT_POT_DODONGOS_CAVERN, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_STAIRCASE_POT_1)); + locationTable[RC_DODONGOS_CAVERN_STAIRCASE_POT_2] = Location::Pot(RC_DODONGOS_CAVERN_STAIRCASE_POT_2, RCQUEST_VANILLA, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(-2368, -1827), "Staircase Pot 2", RHT_POT_DODONGOS_CAVERN, RG_RED_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_STAIRCASE_POT_2)); + locationTable[RC_DODONGOS_CAVERN_STAIRCASE_POT_3] = Location::Pot(RC_DODONGOS_CAVERN_STAIRCASE_POT_3, RCQUEST_VANILLA, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(-1574, -1831), "Staircase Pot 3", RHT_POT_DODONGOS_CAVERN, RG_RED_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_STAIRCASE_POT_3)); + locationTable[RC_DODONGOS_CAVERN_STAIRCASE_POT_4] = Location::Pot(RC_DODONGOS_CAVERN_STAIRCASE_POT_4, RCQUEST_VANILLA, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(-1528, -1827), "Staircase Pot 4", RHT_POT_DODONGOS_CAVERN, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_STAIRCASE_POT_4)); + locationTable[RC_DODONGOS_CAVERN_SINGLE_EYE_POT_1] = Location::Pot(RC_DODONGOS_CAVERN_SINGLE_EYE_POT_1, RCQUEST_VANILLA, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(2704, -483), "Single Eye Pot 1", RHT_POT_DODONGOS_CAVERN, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_SINGLE_EYE_POT_1)); + locationTable[RC_DODONGOS_CAVERN_SINGLE_EYE_POT_2] = Location::Pot(RC_DODONGOS_CAVERN_SINGLE_EYE_POT_2, RCQUEST_VANILLA, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(3195, -155), "Single Eye Pot 2", RHT_POT_DODONGOS_CAVERN, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_SINGLE_EYE_POT_2)); + locationTable[RC_DODONGOS_CAVERN_BLADE_POT_1] = Location::Pot(RC_DODONGOS_CAVERN_BLADE_POT_1, RCQUEST_VANILLA, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(1656, -531), "Blade Pot 1", RHT_POT_DODONGOS_CAVERN, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_BLADE_POT_1)); + locationTable[RC_DODONGOS_CAVERN_BLADE_POT_2] = Location::Pot(RC_DODONGOS_CAVERN_BLADE_POT_2, RCQUEST_VANILLA, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(1831, -593), "Blade Pot 2", RHT_POT_DODONGOS_CAVERN, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_BLADE_POT_2)); + locationTable[RC_DODONGOS_CAVERN_DOUBLE_EYE_POT_1] = Location::Pot(RC_DODONGOS_CAVERN_DOUBLE_EYE_POT_1, RCQUEST_VANILLA, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(3329, -753), "Double Eye Pot 1", RHT_POT_DODONGOS_CAVERN, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_DOUBLE_EYE_POT_1)); + locationTable[RC_DODONGOS_CAVERN_DOUBLE_EYE_POT_2] = Location::Pot(RC_DODONGOS_CAVERN_DOUBLE_EYE_POT_2, RCQUEST_VANILLA, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(2705, -1086), "Double Eye Pot 2", RHT_POT_DODONGOS_CAVERN, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_DOUBLE_EYE_POT_2)); + locationTable[RC_DODONGOS_CAVERN_BACK_ROOM_POT_1] = Location::Pot(RC_DODONGOS_CAVERN_BACK_ROOM_POT_1, RCQUEST_VANILLA, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(1027, -3704), "Back Room Pot 1", RHT_POT_DODONGOS_CAVERN, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_BACK_ROOM_POT_1)); + locationTable[RC_DODONGOS_CAVERN_BACK_ROOM_POT_2] = Location::Pot(RC_DODONGOS_CAVERN_BACK_ROOM_POT_2, RCQUEST_VANILLA, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(966, -3704), "Back Room Pot 2", RHT_POT_DODONGOS_CAVERN, RG_DEKU_SEEDS_30, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_BACK_ROOM_POT_2)); + locationTable[RC_DODONGOS_CAVERN_BACK_ROOM_POT_3] = Location::Pot(RC_DODONGOS_CAVERN_BACK_ROOM_POT_3, RCQUEST_VANILLA, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(125, -3854), "Back Room Pot 3", RHT_POT_DODONGOS_CAVERN, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_BACK_ROOM_POT_3)); + locationTable[RC_DODONGOS_CAVERN_BACK_ROOM_POT_4] = Location::Pot(RC_DODONGOS_CAVERN_BACK_ROOM_POT_4, RCQUEST_VANILLA, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(78, -3835), "Back Room Pot 4", RHT_POT_DODONGOS_CAVERN, RG_BOMBS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_BACK_ROOM_POT_4)); + locationTable[RC_JABU_JABUS_BELLY_ABOVE_BIG_OCTO_POT_1] = Location::Pot(RC_JABU_JABUS_BELLY_ABOVE_BIG_OCTO_POT_1, RCQUEST_VANILLA, RCAREA_JABU_JABUS_BELLY, SCENE_JABU_JABU, TWO_ACTOR_PARAMS(-1295, -3612), "Above Big Octo Pot 1", RHT_POT_JABU_JABUS_BELLY, RG_DEKU_NUTS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_JABU_JABUS_BELLY_ABOVE_BIG_OCTO_POT_1)); + locationTable[RC_JABU_JABUS_BELLY_ABOVE_BIG_OCTO_POT_2] = Location::Pot(RC_JABU_JABUS_BELLY_ABOVE_BIG_OCTO_POT_2, RCQUEST_VANILLA, RCAREA_JABU_JABUS_BELLY, SCENE_JABU_JABU, TWO_ACTOR_PARAMS(-1355, -3612), "Above Big Octo Pot 2", RHT_POT_JABU_JABUS_BELLY, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_JABU_JABUS_BELLY_ABOVE_BIG_OCTO_POT_2)); + locationTable[RC_JABU_JABUS_BELLY_ABOVE_BIG_OCTO_POT_3] = Location::Pot(RC_JABU_JABUS_BELLY_ABOVE_BIG_OCTO_POT_3, RCQUEST_VANILLA, RCAREA_JABU_JABUS_BELLY, SCENE_JABU_JABU, TWO_ACTOR_PARAMS(-1422, -3612), "Above Big Octo Pot 3", RHT_POT_JABU_JABUS_BELLY, RG_DEKU_NUTS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_JABU_JABUS_BELLY_ABOVE_BIG_OCTO_POT_3)); + locationTable[RC_JABU_JABUS_BELLY_BARINADE_POT_1] = Location::Pot(RC_JABU_JABUS_BELLY_BARINADE_POT_1, RCQUEST_BOTH, RCAREA_JABU_JABUS_BELLY, SCENE_JABU_JABU_BOSS, TWO_ACTOR_PARAMS(-551, 33), "Barinade Pot 1", RHT_POT_JABU_JABUS_BELLY, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_JABU_JABUS_BELLY_BARINADE_POT_1)); + locationTable[RC_JABU_JABUS_BELLY_BARINADE_POT_2] = Location::Pot(RC_JABU_JABUS_BELLY_BARINADE_POT_2, RCQUEST_BOTH, RCAREA_JABU_JABUS_BELLY, SCENE_JABU_JABU_BOSS, TWO_ACTOR_PARAMS(551, 36), "Barinade Pot 2", RHT_POT_JABU_JABUS_BELLY, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_JABU_JABUS_BELLY_BARINADE_POT_2)); + locationTable[RC_JABU_JABUS_BELLY_BARINADE_POT_3] = Location::Pot(RC_JABU_JABUS_BELLY_BARINADE_POT_3, RCQUEST_BOTH, RCAREA_JABU_JABUS_BELLY, SCENE_JABU_JABU_BOSS, TWO_ACTOR_PARAMS(554, -493), "Barinade Pot 3", RHT_POT_JABU_JABUS_BELLY, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_JABU_JABUS_BELLY_BARINADE_POT_3)); + locationTable[RC_JABU_JABUS_BELLY_BARINADE_POT_4] = Location::Pot(RC_JABU_JABUS_BELLY_BARINADE_POT_4, RCQUEST_BOTH, RCAREA_JABU_JABUS_BELLY, SCENE_JABU_JABU_BOSS, TWO_ACTOR_PARAMS(-543, -496), "Barinade Pot 4", RHT_POT_JABU_JABUS_BELLY, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_JABU_JABUS_BELLY_BARINADE_POT_4)); + locationTable[RC_JABU_JABUS_BELLY_BARINADE_POT_5] = Location::Pot(RC_JABU_JABUS_BELLY_BARINADE_POT_5, RCQUEST_BOTH, RCAREA_JABU_JABUS_BELLY, SCENE_JABU_JABU_BOSS, TWO_ACTOR_PARAMS(-268, -786), "Barinade Pot 5", RHT_POT_JABU_JABUS_BELLY, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_JABU_JABUS_BELLY_BARINADE_POT_5)); + locationTable[RC_JABU_JABUS_BELLY_BARINADE_POT_6] = Location::Pot(RC_JABU_JABUS_BELLY_BARINADE_POT_6, RCQUEST_BOTH, RCAREA_JABU_JABUS_BELLY, SCENE_JABU_JABU_BOSS, TWO_ACTOR_PARAMS(279, -761), "Barinade Pot 6", RHT_POT_JABU_JABUS_BELLY, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_JABU_JABUS_BELLY_BARINADE_POT_6)); + locationTable[RC_JABU_JABUS_BELLY_BASEMENT_POT_1] = Location::Pot(RC_JABU_JABUS_BELLY_BASEMENT_POT_1, RCQUEST_VANILLA, RCAREA_JABU_JABUS_BELLY, SCENE_JABU_JABU, TWO_ACTOR_PARAMS(703, -2371), "Basement Pot 1", RHT_POT_JABU_JABUS_BELLY, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_JABU_JABUS_BELLY_BASEMENT_POT_1)); + locationTable[RC_JABU_JABUS_BELLY_BASEMENT_POT_2] = Location::Pot(RC_JABU_JABUS_BELLY_BASEMENT_POT_2, RCQUEST_VANILLA, RCAREA_JABU_JABUS_BELLY, SCENE_JABU_JABU, TWO_ACTOR_PARAMS(645, -2408), "Basement Pot 2", RHT_POT_JABU_JABUS_BELLY, RG_DEKU_SEEDS_30, SpoilerCollectionCheck::RandomizerInf(RAND_INF_JABU_JABUS_BELLY_BASEMENT_POT_2)); + locationTable[RC_JABU_JABUS_BELLY_BASEMENT_POT_3] = Location::Pot(RC_JABU_JABUS_BELLY_BASEMENT_POT_3, RCQUEST_VANILLA, RCAREA_JABU_JABUS_BELLY, SCENE_JABU_JABU, TWO_ACTOR_PARAMS(650, -2344), "Basement Pot 3", RHT_POT_JABU_JABUS_BELLY, RG_DEKU_NUTS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_JABU_JABUS_BELLY_BASEMENT_POT_3)); + locationTable[RC_JABU_JABUS_BELLY_TWO_OCTOROK_POT_1] = Location::Pot(RC_JABU_JABUS_BELLY_TWO_OCTOROK_POT_1, RCQUEST_VANILLA, RCAREA_JABU_JABUS_BELLY, SCENE_JABU_JABU, TWO_ACTOR_PARAMS(-1127, -2271), "Two Octorok Pot 1", RHT_POT_JABU_JABUS_BELLY, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_JABU_JABUS_BELLY_TWO_OCTOROK_POT_1)); + locationTable[RC_JABU_JABUS_BELLY_TWO_OCTOROK_POT_2] = Location::Pot(RC_JABU_JABUS_BELLY_TWO_OCTOROK_POT_2, RCQUEST_VANILLA, RCAREA_JABU_JABUS_BELLY, SCENE_JABU_JABU, TWO_ACTOR_PARAMS(-1178, -2272), "Two Octorok Pot 2", RHT_POT_JABU_JABUS_BELLY, RG_RED_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_JABU_JABUS_BELLY_TWO_OCTOROK_POT_2)); + locationTable[RC_JABU_JABUS_BELLY_TWO_OCTOROK_POT_3] = Location::Pot(RC_JABU_JABUS_BELLY_TWO_OCTOROK_POT_3, RCQUEST_VANILLA, RCAREA_JABU_JABUS_BELLY, SCENE_JABU_JABU, TWO_ACTOR_PARAMS(-1150, -2248), "Two Octorok Pot 3", RHT_POT_JABU_JABUS_BELLY, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_JABU_JABUS_BELLY_TWO_OCTOROK_POT_3)); + locationTable[RC_JABU_JABUS_BELLY_TWO_OCTOROK_POT_4] = Location::Pot(RC_JABU_JABUS_BELLY_TWO_OCTOROK_POT_4, RCQUEST_VANILLA, RCAREA_JABU_JABUS_BELLY, SCENE_JABU_JABU, TWO_ACTOR_PARAMS(-1131, -2221), "Two Octorok Pot 4", RHT_POT_JABU_JABUS_BELLY, RG_RED_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_JABU_JABUS_BELLY_TWO_OCTOROK_POT_4)); + locationTable[RC_JABU_JABUS_BELLY_TWO_OCTOROK_POT_5] = Location::Pot(RC_JABU_JABUS_BELLY_TWO_OCTOROK_POT_5, RCQUEST_VANILLA, RCAREA_JABU_JABUS_BELLY, SCENE_JABU_JABU, TWO_ACTOR_PARAMS(-1173, -2227), "Two Octorok Pot 5", RHT_POT_JABU_JABUS_BELLY, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_JABU_JABUS_BELLY_TWO_OCTOROK_POT_5)); + locationTable[RC_FOREST_TEMPLE_LOBBY_POT_1] = Location::Pot(RC_FOREST_TEMPLE_LOBBY_POT_1, RCQUEST_VANILLA, RCAREA_FOREST_TEMPLE, SCENE_FOREST_TEMPLE, TWO_ACTOR_PARAMS(720, -1037), "Lobby Pot 1", RHT_POT_FOREST_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FOREST_TEMPLE_LOBBY_POT_1)); + locationTable[RC_FOREST_TEMPLE_LOBBY_POT_2] = Location::Pot(RC_FOREST_TEMPLE_LOBBY_POT_2, RCQUEST_VANILLA, RCAREA_FOREST_TEMPLE, SCENE_FOREST_TEMPLE, TWO_ACTOR_PARAMS(675, -989), "Lobby Pot 2", RHT_POT_FOREST_TEMPLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FOREST_TEMPLE_LOBBY_POT_2)); + locationTable[RC_FOREST_TEMPLE_LOBBY_POT_3] = Location::Pot(RC_FOREST_TEMPLE_LOBBY_POT_3, RCQUEST_VANILLA, RCAREA_FOREST_TEMPLE, SCENE_FOREST_TEMPLE, TWO_ACTOR_PARAMS(630, -943), "Lobby Pot 3", RHT_POT_FOREST_TEMPLE, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FOREST_TEMPLE_LOBBY_POT_3)); + locationTable[RC_FOREST_TEMPLE_LOBBY_POT_4] = Location::Pot(RC_FOREST_TEMPLE_LOBBY_POT_4, RCQUEST_VANILLA, RCAREA_FOREST_TEMPLE, SCENE_FOREST_TEMPLE, TWO_ACTOR_PARAMS(-384, -937), "Lobby Pot 4", RHT_POT_FOREST_TEMPLE, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FOREST_TEMPLE_LOBBY_POT_4)); + locationTable[RC_FOREST_TEMPLE_LOBBY_POT_5] = Location::Pot(RC_FOREST_TEMPLE_LOBBY_POT_5, RCQUEST_VANILLA, RCAREA_FOREST_TEMPLE, SCENE_FOREST_TEMPLE, TWO_ACTOR_PARAMS(-429, -981), "Lobby Pot 5", RHT_POT_FOREST_TEMPLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FOREST_TEMPLE_LOBBY_POT_5)); + locationTable[RC_FOREST_TEMPLE_LOBBY_POT_6] = Location::Pot(RC_FOREST_TEMPLE_LOBBY_POT_6, RCQUEST_VANILLA, RCAREA_FOREST_TEMPLE, SCENE_FOREST_TEMPLE, TWO_ACTOR_PARAMS(-477, -1034), "Lobby Pot 6", RHT_POT_FOREST_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FOREST_TEMPLE_LOBBY_POT_6)); + locationTable[RC_FOREST_TEMPLE_LOWER_STALFOS_POT_1] = Location::Pot(RC_FOREST_TEMPLE_LOWER_STALFOS_POT_1, RCQUEST_VANILLA, RCAREA_FOREST_TEMPLE, SCENE_FOREST_TEMPLE, TWO_ACTOR_PARAMS(90, -3583), "Lower Stalfos Pot 1", RHT_POT_FOREST_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FOREST_TEMPLE_LOWER_STALFOS_POT_1)); + locationTable[RC_FOREST_TEMPLE_LOWER_STALFOS_POT_2] = Location::Pot(RC_FOREST_TEMPLE_LOWER_STALFOS_POT_2, RCQUEST_VANILLA, RCAREA_FOREST_TEMPLE, SCENE_FOREST_TEMPLE, TWO_ACTOR_PARAMS(142, -3583), "Lower Stalfos Pot 2", RHT_POT_FOREST_TEMPLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FOREST_TEMPLE_LOWER_STALFOS_POT_2)); + locationTable[RC_FOREST_TEMPLE_GREEN_POE_POT_1] = Location::Pot(RC_FOREST_TEMPLE_GREEN_POE_POT_1, RCQUEST_VANILLA, RCAREA_FOREST_TEMPLE, SCENE_FOREST_TEMPLE, TWO_ACTOR_PARAMS(1647, -1529), "Green Poe Pot 1", RHT_POT_FOREST_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FOREST_TEMPLE_GREEN_POE_POT_1)); + locationTable[RC_FOREST_TEMPLE_GREEN_POE_POT_2] = Location::Pot(RC_FOREST_TEMPLE_GREEN_POE_POT_2, RCQUEST_VANILLA, RCAREA_FOREST_TEMPLE, SCENE_FOREST_TEMPLE, TWO_ACTOR_PARAMS(1645, -1588), "Green Poe Pot 2", RHT_POT_FOREST_TEMPLE, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FOREST_TEMPLE_GREEN_POE_POT_2)); + locationTable[RC_FOREST_TEMPLE_UPPER_STALFOS_POT_1] = Location::Pot(RC_FOREST_TEMPLE_UPPER_STALFOS_POT_1, RCQUEST_VANILLA, RCAREA_FOREST_TEMPLE, SCENE_FOREST_TEMPLE, TWO_ACTOR_PARAMS(32, -3012), "Upper Stalfos Pot 1", RHT_POT_FOREST_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FOREST_TEMPLE_UPPER_STALFOS_POT_1)); + locationTable[RC_FOREST_TEMPLE_UPPER_STALFOS_POT_2] = Location::Pot(RC_FOREST_TEMPLE_UPPER_STALFOS_POT_2, RCQUEST_VANILLA, RCAREA_FOREST_TEMPLE, SCENE_FOREST_TEMPLE, TWO_ACTOR_PARAMS(202, -3012), "Upper Stalfos Pot 2", RHT_POT_FOREST_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FOREST_TEMPLE_UPPER_STALFOS_POT_2)); + locationTable[RC_FOREST_TEMPLE_UPPER_STALFOS_POT_3] = Location::Pot(RC_FOREST_TEMPLE_UPPER_STALFOS_POT_3, RCQUEST_VANILLA, RCAREA_FOREST_TEMPLE, SCENE_FOREST_TEMPLE, TWO_ACTOR_PARAMS(30, -3631), "Upper Stalfos Pot 3", RHT_POT_FOREST_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FOREST_TEMPLE_UPPER_STALFOS_POT_3)); + locationTable[RC_FOREST_TEMPLE_UPPER_STALFOS_POT_4] = Location::Pot(RC_FOREST_TEMPLE_UPPER_STALFOS_POT_4, RCQUEST_VANILLA, RCAREA_FOREST_TEMPLE, SCENE_FOREST_TEMPLE, TWO_ACTOR_PARAMS(206, -3631), "Upper Stalfos Pot 4", RHT_POT_FOREST_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FOREST_TEMPLE_UPPER_STALFOS_POT_4)); + locationTable[RC_FOREST_TEMPLE_BLUE_POE_POT_1] = Location::Pot(RC_FOREST_TEMPLE_BLUE_POE_POT_1, RCQUEST_VANILLA, RCAREA_FOREST_TEMPLE, SCENE_FOREST_TEMPLE, TWO_ACTOR_PARAMS(830, -3639), "Blue Poe Pot 1", RHT_POT_FOREST_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FOREST_TEMPLE_BLUE_POE_POT_1)); + locationTable[RC_FOREST_TEMPLE_BLUE_POE_POT_2] = Location::Pot(RC_FOREST_TEMPLE_BLUE_POE_POT_2, RCQUEST_VANILLA, RCAREA_FOREST_TEMPLE, SCENE_FOREST_TEMPLE, TWO_ACTOR_PARAMS(883, -3640), "Blue Poe Pot 2", RHT_POT_FOREST_TEMPLE, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FOREST_TEMPLE_BLUE_POE_POT_2)); + locationTable[RC_FOREST_TEMPLE_BLUE_POE_POT_3] = Location::Pot(RC_FOREST_TEMPLE_BLUE_POE_POT_3, RCQUEST_VANILLA, RCAREA_FOREST_TEMPLE, SCENE_FOREST_TEMPLE, TWO_ACTOR_PARAMS(941, -3640), "Blue Poe Pot 3", RHT_POT_FOREST_TEMPLE, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FOREST_TEMPLE_BLUE_POE_POT_3)); + locationTable[RC_FOREST_TEMPLE_FROZEN_EYE_POT_1] = Location::Pot(RC_FOREST_TEMPLE_FROZEN_EYE_POT_1, RCQUEST_VANILLA, RCAREA_FOREST_TEMPLE, SCENE_FOREST_TEMPLE, TWO_ACTOR_PARAMS(2312, -874), "Frozen Eye Pot 1", RHT_POT_FOREST_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FOREST_TEMPLE_FROZEN_EYE_POT_1)); + locationTable[RC_FOREST_TEMPLE_FROZEN_EYE_POT_2] = Location::Pot(RC_FOREST_TEMPLE_FROZEN_EYE_POT_2, RCQUEST_VANILLA, RCAREA_FOREST_TEMPLE, SCENE_FOREST_TEMPLE, TWO_ACTOR_PARAMS(2364, -873), "Frozen Eye Pot 2", RHT_POT_FOREST_TEMPLE, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FOREST_TEMPLE_FROZEN_EYE_POT_2)); + locationTable[RC_FIRE_TEMPLE_NEAR_BOSS_POT_1] = Location::Pot(RC_FIRE_TEMPLE_NEAR_BOSS_POT_1, RCQUEST_VANILLA, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(-1086, -714), "Near Boss Pot 1", RHT_POT_FIRE_TEMPLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_NEAR_BOSS_POT_1)); + locationTable[RC_FIRE_TEMPLE_NEAR_BOSS_POT_2] = Location::Pot(RC_FIRE_TEMPLE_NEAR_BOSS_POT_2, RCQUEST_VANILLA, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(-1138, -713), "Near Boss Pot 2", RHT_POT_FIRE_TEMPLE, RG_BOMBS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_NEAR_BOSS_POT_2)); + locationTable[RC_FIRE_TEMPLE_NEAR_BOSS_POT_3] = Location::Pot(RC_FIRE_TEMPLE_NEAR_BOSS_POT_3, RCQUEST_VANILLA, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(-1087, -765), "Near Boss Pot 3", RHT_POT_FIRE_TEMPLE, RG_BOMBS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_NEAR_BOSS_POT_3)); + locationTable[RC_FIRE_TEMPLE_NEAR_BOSS_POT_4] = Location::Pot(RC_FIRE_TEMPLE_NEAR_BOSS_POT_4, RCQUEST_VANILLA, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(-1139, -766), "Near Boss Pot 4", RHT_POT_FIRE_TEMPLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_NEAR_BOSS_POT_4)); + locationTable[RC_FIRE_TEMPLE_BIG_LAVA_POT_1] = Location::Pot(RC_FIRE_TEMPLE_BIG_LAVA_POT_1, RCQUEST_VANILLA, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(2226, -754), "Big Lava Pot 1", RHT_POT_FIRE_TEMPLE, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_BIG_LAVA_POT_1)); + locationTable[RC_FIRE_TEMPLE_BIG_LAVA_POT_2] = Location::Pot(RC_FIRE_TEMPLE_BIG_LAVA_POT_2, RCQUEST_VANILLA, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(2226, -809), "Big Lava Pot 2", RHT_POT_FIRE_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_BIG_LAVA_POT_2)); + locationTable[RC_FIRE_TEMPLE_BIG_LAVA_POT_3] = Location::Pot(RC_FIRE_TEMPLE_BIG_LAVA_POT_3, RCQUEST_VANILLA, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(2227, -862), "Big Lava Pot 3", RHT_POT_FIRE_TEMPLE, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_BIG_LAVA_POT_3)); + locationTable[RC_FIRE_TEMPLE_FLAME_MAZE_LEFT_POT_1] = Location::Pot(RC_FIRE_TEMPLE_FLAME_MAZE_LEFT_POT_1, RCQUEST_VANILLA, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(-2388, 953), "Flame Maze Left Pot 1", RHT_POT_FIRE_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_FLAME_MAZE_LEFT_POT_1)); + locationTable[RC_FIRE_TEMPLE_FLAME_MAZE_LEFT_POT_2] = Location::Pot(RC_FIRE_TEMPLE_FLAME_MAZE_LEFT_POT_2, RCQUEST_VANILLA, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(-2423, 920), "Flame Maze Left Pot 2", RHT_POT_FIRE_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_FLAME_MAZE_LEFT_POT_2)); + locationTable[RC_FIRE_TEMPLE_FLAME_MAZE_LEFT_POT_3] = Location::Pot(RC_FIRE_TEMPLE_FLAME_MAZE_LEFT_POT_3, RCQUEST_VANILLA, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(-2442, 715), "Flame Maze Left Pot 3", RHT_POT_FIRE_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_FLAME_MAZE_LEFT_POT_3)); + locationTable[RC_FIRE_TEMPLE_FLAME_MAZE_LEFT_POT_4] = Location::Pot(RC_FIRE_TEMPLE_FLAME_MAZE_LEFT_POT_4, RCQUEST_VANILLA, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(-2408, 680), "Flame Maze Left Pot 4", RHT_POT_FIRE_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_FLAME_MAZE_LEFT_POT_4)); + locationTable[RC_FIRE_TEMPLE_FLAME_MAZE_RIGHT_POT_1] = Location::Pot(RC_FIRE_TEMPLE_FLAME_MAZE_RIGHT_POT_1, RCQUEST_VANILLA, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(-2208, -168), "Flame Maze Right Pot 1", RHT_POT_FIRE_TEMPLE, RG_BOMBS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_FLAME_MAZE_RIGHT_POT_1)); + locationTable[RC_FIRE_TEMPLE_FLAME_MAZE_RIGHT_POT_2] = Location::Pot(RC_FIRE_TEMPLE_FLAME_MAZE_RIGHT_POT_2, RCQUEST_VANILLA, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(-2253, -167), "Flame Maze Right Pot 2", RHT_POT_FIRE_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_FLAME_MAZE_RIGHT_POT_2)); + locationTable[RC_FIRE_TEMPLE_FLAME_MAZE_RIGHT_POT_3] = Location::Pot(RC_FIRE_TEMPLE_FLAME_MAZE_RIGHT_POT_3, RCQUEST_VANILLA, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(-2657, -591), "Flame Maze Right Pot 3", RHT_POT_FIRE_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_FLAME_MAZE_RIGHT_POT_3)); + locationTable[RC_FIRE_TEMPLE_FLAME_MAZE_RIGHT_POT_4] = Location::Pot(RC_FIRE_TEMPLE_FLAME_MAZE_RIGHT_POT_4, RCQUEST_VANILLA, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(-2657, -635), "Flame Maze Right Pot 4", RHT_POT_FIRE_TEMPLE, RG_BOMBS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_FLAME_MAZE_RIGHT_POT_4)); + locationTable[RC_WATER_TEMPLE_MAIN_LEVEL_2_POT_1] = Location::Pot(RC_WATER_TEMPLE_MAIN_LEVEL_2_POT_1, RCQUEST_VANILLA, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(330, -198), "Main Level 2 Pot 1", RHT_POT_WATER_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_MAIN_LEVEL_2_POT_1)); + locationTable[RC_WATER_TEMPLE_MAIN_LEVEL_2_POT_2] = Location::Pot(RC_WATER_TEMPLE_MAIN_LEVEL_2_POT_2, RCQUEST_VANILLA, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(331, -168), "Main Level 2 Pot 2", RHT_POT_WATER_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_MAIN_LEVEL_2_POT_2)); + locationTable[RC_WATER_TEMPLE_MAIN_LEVEL_1_POT_1] = Location::Pot(RC_WATER_TEMPLE_MAIN_LEVEL_1_POT_1, RCQUEST_VANILLA, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(-241, -1193), "Main Level 1 Pot 1", RHT_POT_WATER_TEMPLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_MAIN_LEVEL_1_POT_1)); + locationTable[RC_WATER_TEMPLE_MAIN_LEVEL_1_POT_2] = Location::Pot(RC_WATER_TEMPLE_MAIN_LEVEL_1_POT_2, RCQUEST_VANILLA, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(-117, -1192), "Main Level 1 Pot 2", RHT_POT_WATER_TEMPLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_MAIN_LEVEL_1_POT_2)); + locationTable[RC_WATER_TEMPLE_TORCH_POT_1] = Location::Pot(RC_WATER_TEMPLE_TORCH_POT_1, RCQUEST_VANILLA, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(1123, 62), "Torch Pot 1", RHT_POT_WATER_TEMPLE, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_TORCH_POT_1)); + locationTable[RC_WATER_TEMPLE_TORCH_POT_2] = Location::Pot(RC_WATER_TEMPLE_TORCH_POT_2, RCQUEST_VANILLA, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(1123, 293), "Torch Pot 2", RHT_POT_WATER_TEMPLE, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_TORCH_POT_2)); + locationTable[RC_WATER_TEMPLE_NEAR_COMPASS_POT_1] = Location::Pot(RC_WATER_TEMPLE_NEAR_COMPASS_POT_1, RCQUEST_VANILLA, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(1222, -617), "Near Compass Pot 1", RHT_POT_WATER_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_NEAR_COMPASS_POT_1)); + locationTable[RC_WATER_TEMPLE_NEAR_COMPASS_POT_2] = Location::Pot(RC_WATER_TEMPLE_NEAR_COMPASS_POT_2, RCQUEST_VANILLA, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(1172, -617), "Near Compass Pot 2", RHT_POT_WATER_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_NEAR_COMPASS_POT_2)); + locationTable[RC_WATER_TEMPLE_NEAR_COMPASS_POT_3] = Location::Pot(RC_WATER_TEMPLE_NEAR_COMPASS_POT_3, RCQUEST_VANILLA, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(1122, -617), "Near Compass Pot 3", RHT_POT_WATER_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_NEAR_COMPASS_POT_3)); + locationTable[RC_WATER_TEMPLE_CENTRAL_BOW_POT_1] = Location::Pot(RC_WATER_TEMPLE_CENTRAL_BOW_POT_1, RCQUEST_VANILLA, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(688, 1008), "Central Bow Pot 1", RHT_POT_WATER_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_CENTRAL_BOW_POT_1)); + locationTable[RC_WATER_TEMPLE_CENTRAL_BOW_POT_2] = Location::Pot(RC_WATER_TEMPLE_CENTRAL_BOW_POT_2, RCQUEST_VANILLA, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(631, 1008), "Central Bow Pot 2", RHT_POT_WATER_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_CENTRAL_BOW_POT_2)); + locationTable[RC_WATER_TEMPLE_BEHIND_GATE_POT_1] = Location::Pot(RC_WATER_TEMPLE_BEHIND_GATE_POT_1, RCQUEST_VANILLA, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(-2313, 944), "Behind Gate Pot 1", RHT_POT_WATER_TEMPLE, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_BEHIND_GATE_POT_1)); + locationTable[RC_WATER_TEMPLE_BEHIND_GATE_POT_2] = Location::Pot(RC_WATER_TEMPLE_BEHIND_GATE_POT_2, RCQUEST_VANILLA, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(-2313, 905), "Behind Gate Pot 2", RHT_POT_WATER_TEMPLE, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_BEHIND_GATE_POT_2)); + locationTable[RC_WATER_TEMPLE_BEHIND_GATE_POT_3] = Location::Pot(RC_WATER_TEMPLE_BEHIND_GATE_POT_3, RCQUEST_VANILLA, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(-2314, 808), "Behind Gate Pot 3", RHT_POT_WATER_TEMPLE, RG_BOMBS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_BEHIND_GATE_POT_3)); + locationTable[RC_WATER_TEMPLE_BEHIND_GATE_POT_4] = Location::Pot(RC_WATER_TEMPLE_BEHIND_GATE_POT_4, RCQUEST_VANILLA, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(-2314, 770), "Behind Gate Pot 4", RHT_POT_WATER_TEMPLE, RG_BOMBS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_BEHIND_GATE_POT_4)); + locationTable[RC_WATER_TEMPLE_BASEMENT_BLOCK_PUZZLE_POT_1] = Location::Pot(RC_WATER_TEMPLE_BASEMENT_BLOCK_PUZZLE_POT_1, RCQUEST_VANILLA, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(-28, -3817), "Basement Block Puzzle Pot 1", RHT_POT_WATER_TEMPLE, RG_BOMBS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_BASEMENT_BLOCK_PUZZLE_POT_1)); + locationTable[RC_WATER_TEMPLE_BASEMENT_BLOCK_PUZZLE_POT_2] = Location::Pot(RC_WATER_TEMPLE_BASEMENT_BLOCK_PUZZLE_POT_2, RCQUEST_VANILLA, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(28, -3817), "Basement Block Puzzle Pot 2", RHT_POT_WATER_TEMPLE, RG_BOMBS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_BASEMENT_BLOCK_PUZZLE_POT_2)); + locationTable[RC_WATER_TEMPLE_RIVER_POT_1] = Location::Pot(RC_WATER_TEMPLE_RIVER_POT_1, RCQUEST_VANILLA, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(-2226, -2487), "River Pot 1", RHT_POT_WATER_TEMPLE, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_RIVER_POT_1)); + locationTable[RC_WATER_TEMPLE_RIVER_POT_2] = Location::Pot(RC_WATER_TEMPLE_RIVER_POT_2, RCQUEST_VANILLA, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(-2184, -2456), "River Pot 2", RHT_POT_WATER_TEMPLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_RIVER_POT_2)); + locationTable[RC_WATER_TEMPLE_LIKE_LIKE_POT_1] = Location::Pot(RC_WATER_TEMPLE_LIKE_LIKE_POT_1, RCQUEST_VANILLA, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(-3188, -1628), "Like Like Pot 1", RHT_POT_WATER_TEMPLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_LIKE_LIKE_POT_1)); + locationTable[RC_WATER_TEMPLE_LIKE_LIKE_POT_2] = Location::Pot(RC_WATER_TEMPLE_LIKE_LIKE_POT_2, RCQUEST_VANILLA, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(-3056, -1626), "Like Like Pot 2", RHT_POT_WATER_TEMPLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_LIKE_LIKE_POT_2)); + locationTable[RC_WATER_TEMPLE_BOSS_KEY_POT_1] = Location::Pot(RC_WATER_TEMPLE_BOSS_KEY_POT_1, RCQUEST_VANILLA, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(-1150, -3031), "Boss Key Pot 1", RHT_POT_WATER_TEMPLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_BOSS_KEY_POT_1)); + locationTable[RC_WATER_TEMPLE_BOSS_KEY_POT_2] = Location::Pot(RC_WATER_TEMPLE_BOSS_KEY_POT_2, RCQUEST_VANILLA, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(-1417, -3025), "Boss Key Pot 2", RHT_POT_WATER_TEMPLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_BOSS_KEY_POT_2)); + locationTable[RC_SHADOW_TEMPLE_NEAR_DEAD_HAND_POT_1] = Location::Pot(RC_SHADOW_TEMPLE_NEAR_DEAD_HAND_POT_1, RCQUEST_VANILLA, RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(-1806, -344), "Near Dead Hand Pot 1", RHT_POT_SHADOW_TEMPLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_NEAR_DEAD_HAND_POT_1)); + locationTable[RC_SHADOW_TEMPLE_WHISPERING_WALLS_POT_1] = Location::Pot(RC_SHADOW_TEMPLE_WHISPERING_WALLS_POT_1, RCQUEST_VANILLA, RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(-1721, 61), "Whispering Walls Pot 1", RHT_POT_SHADOW_TEMPLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_WHISPERING_WALLS_POT_1)); + locationTable[RC_SHADOW_TEMPLE_WHISPERING_WALLS_POT_2] = Location::Pot(RC_SHADOW_TEMPLE_WHISPERING_WALLS_POT_2, RCQUEST_VANILLA, RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(-1407, 61), "Whispering Walls Pot 2", RHT_POT_SHADOW_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_WHISPERING_WALLS_POT_2)); + locationTable[RC_SHADOW_TEMPLE_WHISPERING_WALLS_POT_3] = Location::Pot(RC_SHADOW_TEMPLE_WHISPERING_WALLS_POT_3, RCQUEST_VANILLA, RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(-1614, 61), "Whispering Walls Pot 3", RHT_POT_SHADOW_TEMPLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_WHISPERING_WALLS_POT_3)); + locationTable[RC_SHADOW_TEMPLE_WHISPERING_WALLS_POT_4] = Location::Pot(RC_SHADOW_TEMPLE_WHISPERING_WALLS_POT_4, RCQUEST_VANILLA, RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(-1055, -257), "Whispering Walls Pot 4", RHT_POT_SHADOW_TEMPLE, RG_DEKU_NUTS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_WHISPERING_WALLS_POT_4)); + locationTable[RC_SHADOW_TEMPLE_WHISPERING_WALLS_POT_5] = Location::Pot(RC_SHADOW_TEMPLE_WHISPERING_WALLS_POT_5, RCQUEST_VANILLA, RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(-1050, -130), "Whispering Walls Pot 5", RHT_POT_SHADOW_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_WHISPERING_WALLS_POT_5)); + locationTable[RC_SHADOW_TEMPLE_MAP_CHEST_POT_1] = Location::Pot(RC_SHADOW_TEMPLE_MAP_CHEST_POT_1, RCQUEST_VANILLA, RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(-665, -760), "Map Chest Pot 1", RHT_POT_SHADOW_TEMPLE, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_MAP_CHEST_POT_1)); + locationTable[RC_SHADOW_TEMPLE_MAP_CHEST_POT_2] = Location::Pot(RC_SHADOW_TEMPLE_MAP_CHEST_POT_2, RCQUEST_VANILLA, RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(-929, -748), "Map Chest Pot 2", RHT_POT_SHADOW_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_MAP_CHEST_POT_2)); + locationTable[RC_SHADOW_TEMPLE_FALLING_SPIKES_POT_1] = Location::Pot(RC_SHADOW_TEMPLE_FALLING_SPIKES_POT_1, RCQUEST_VANILLA, RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(614, 3579), "Falling Spikes Pot 1", RHT_POT_SHADOW_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_FALLING_SPIKES_POT_1)); + locationTable[RC_SHADOW_TEMPLE_FALLING_SPIKES_POT_2] = Location::Pot(RC_SHADOW_TEMPLE_FALLING_SPIKES_POT_2, RCQUEST_VANILLA, RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(798, 3574), "Falling Spikes Pot 2", RHT_POT_SHADOW_TEMPLE, RG_BOMBS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_FALLING_SPIKES_POT_2)); + locationTable[RC_SHADOW_TEMPLE_FALLING_SPIKES_POT_3] = Location::Pot(RC_SHADOW_TEMPLE_FALLING_SPIKES_POT_3, RCQUEST_VANILLA, RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(1173, 3707), "Falling Spikes Pot 3", RHT_POT_SHADOW_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_FALLING_SPIKES_POT_3)); + locationTable[RC_SHADOW_TEMPLE_FALLING_SPIKES_POT_4] = Location::Pot(RC_SHADOW_TEMPLE_FALLING_SPIKES_POT_4, RCQUEST_VANILLA, RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(1173, 3605), "Falling Spikes Pot 4", RHT_POT_SHADOW_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_FALLING_SPIKES_POT_4)); + locationTable[RC_SHADOW_TEMPLE_AFTER_WIND_POT_1] = Location::Pot(RC_SHADOW_TEMPLE_AFTER_WIND_POT_1, RCQUEST_VANILLA, RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(4222, -916), "After Wind Pot 1", RHT_POT_SHADOW_TEMPLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_AFTER_WIND_POT_1)); + locationTable[RC_SHADOW_TEMPLE_AFTER_WIND_POT_2] = Location::Pot(RC_SHADOW_TEMPLE_AFTER_WIND_POT_2, RCQUEST_VANILLA, RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(4549, -922), "After Wind Pot 2", RHT_POT_SHADOW_TEMPLE, RG_DEKU_NUTS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_AFTER_WIND_POT_2)); + locationTable[RC_SHADOW_TEMPLE_SPIKE_WALLS_POT_1] = Location::Pot(RC_SHADOW_TEMPLE_SPIKE_WALLS_POT_1, RCQUEST_VANILLA, RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(-4303, -2657), "Spike Walls Pot 1", RHT_POT_SHADOW_TEMPLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_SPIKE_WALLS_POT_1)); + locationTable[RC_SHADOW_TEMPLE_FLOORMASTER_POT_1] = Location::Pot(RC_SHADOW_TEMPLE_FLOORMASTER_POT_1, RCQUEST_VANILLA, RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(-4575, -811), "Floormaster Pot 1", RHT_POT_SHADOW_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_FLOORMASTER_POT_1)); + locationTable[RC_SHADOW_TEMPLE_FLOORMASTER_POT_2] = Location::Pot(RC_SHADOW_TEMPLE_FLOORMASTER_POT_2, RCQUEST_VANILLA, RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(-4036, -811), "Floormaster Pot 2", RHT_POT_SHADOW_TEMPLE, RG_ARROWS_30, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_FLOORMASTER_POT_2)); + locationTable[RC_SHADOW_TEMPLE_AFTER_BOAT_POT_1] = Location::Pot(RC_SHADOW_TEMPLE_AFTER_BOAT_POT_1, RCQUEST_VANILLA, RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(-2400, -1470), "After Boat Pot 1", RHT_POT_SHADOW_TEMPLE, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_AFTER_BOAT_POT_1)); + locationTable[RC_SHADOW_TEMPLE_AFTER_BOAT_POT_2] = Location::Pot(RC_SHADOW_TEMPLE_AFTER_BOAT_POT_2, RCQUEST_VANILLA, RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(-2230, -1470), "After Boat Pot 2", RHT_POT_SHADOW_TEMPLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_AFTER_BOAT_POT_2)); + locationTable[RC_SHADOW_TEMPLE_AFTER_BOAT_POT_3] = Location::Pot(RC_SHADOW_TEMPLE_AFTER_BOAT_POT_3, RCQUEST_VANILLA, RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(-2859, -497), "After Boat Pot 3", RHT_POT_SHADOW_TEMPLE, RG_ARROWS_30, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_AFTER_BOAT_POT_3)); + locationTable[RC_SHADOW_TEMPLE_AFTER_BOAT_POT_4] = Location::Pot(RC_SHADOW_TEMPLE_AFTER_BOAT_POT_4, RCQUEST_VANILLA, RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(-2624, -492), "After Boat Pot 4", RHT_POT_SHADOW_TEMPLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_AFTER_BOAT_POT_4)); + locationTable[RC_SPIRIT_TEMPLE_LOBBY_POT_1] = Location::Pot(RC_SPIRIT_TEMPLE_LOBBY_POT_1, RCQUEST_VANILLA, RCAREA_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(-181, 233), "Lobby Pot 1", RHT_POT_SPIRIT_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_LOBBY_POT_1)); + locationTable[RC_SPIRIT_TEMPLE_LOBBY_POT_2] = Location::Pot(RC_SPIRIT_TEMPLE_LOBBY_POT_2, RCQUEST_VANILLA, RCAREA_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(184, 231), "Lobby Pot 2", RHT_POT_SPIRIT_TEMPLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_LOBBY_POT_2)); + locationTable[RC_SPIRIT_TEMPLE_ANUBIS_POT_1] = Location::Pot(RC_SPIRIT_TEMPLE_ANUBIS_POT_1, RCQUEST_VANILLA, RCAREA_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(-975, -1751), "Anubis Pot 1", RHT_POT_SPIRIT_TEMPLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_ANUBIS_POT_1)); + locationTable[RC_SPIRIT_TEMPLE_ANUBIS_POT_2] = Location::Pot(RC_SPIRIT_TEMPLE_ANUBIS_POT_2, RCQUEST_VANILLA, RCAREA_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(-928, -1827), "Anubis Pot 2", RHT_POT_SPIRIT_TEMPLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_ANUBIS_POT_2)); + locationTable[RC_SPIRIT_TEMPLE_ANUBIS_POT_3] = Location::Pot(RC_SPIRIT_TEMPLE_ANUBIS_POT_3, RCQUEST_VANILLA, RCAREA_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(-1211, -1530), "Anubis Pot 3", RHT_POT_SPIRIT_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_ANUBIS_POT_3)); + locationTable[RC_SPIRIT_TEMPLE_ANUBIS_POT_4] = Location::Pot(RC_SPIRIT_TEMPLE_ANUBIS_POT_4, RCQUEST_VANILLA, RCAREA_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(-1055, -1680), "Anubis Pot 4", RHT_POT_SPIRIT_TEMPLE, RG_DEKU_SHIELD, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_ANUBIS_POT_4)); + locationTable[RC_SPIRIT_TEMPLE_CHILD_CLIMB_POT_1] = Location::Pot(RC_SPIRIT_TEMPLE_CHILD_CLIMB_POT_1, RCQUEST_VANILLA, RCAREA_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(-1101, -1305), "Child Climb Pot 1", RHT_POT_SPIRIT_TEMPLE, RG_DEKU_SEEDS_30, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_CHILD_CLIMB_POT_1)); + locationTable[RC_SPIRIT_TEMPLE_AFTER_SUN_BLOCK_POT_1] = Location::Pot(RC_SPIRIT_TEMPLE_AFTER_SUN_BLOCK_POT_1, RCQUEST_VANILLA, RCAREA_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(-1781, 830), "After Sun Block Pot 1", RHT_POT_SPIRIT_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_AFTER_SUN_BLOCK_POT_1)); + locationTable[RC_SPIRIT_TEMPLE_AFTER_SUN_BLOCK_POT_2] = Location::Pot(RC_SPIRIT_TEMPLE_AFTER_SUN_BLOCK_POT_2, RCQUEST_VANILLA, RCAREA_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(-1617, 830), "After Sun Block Pot 2", RHT_POT_SPIRIT_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_AFTER_SUN_BLOCK_POT_2)); + locationTable[RC_SPIRIT_TEMPLE_CENTRAL_CHAMBER_POT_1] = Location::Pot(RC_SPIRIT_TEMPLE_CENTRAL_CHAMBER_POT_1, RCQUEST_VANILLA, RCAREA_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(-600, -1213), "Central Chamber Pot 1", RHT_POT_SPIRIT_TEMPLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_CENTRAL_CHAMBER_POT_1)); + locationTable[RC_SPIRIT_TEMPLE_CENTRAL_CHAMBER_POT_2] = Location::Pot(RC_SPIRIT_TEMPLE_CENTRAL_CHAMBER_POT_2, RCQUEST_VANILLA, RCAREA_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(-564, -1180), "Central Chamber Pot 2", RHT_POT_SPIRIT_TEMPLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_CENTRAL_CHAMBER_POT_2)); + locationTable[RC_SPIRIT_TEMPLE_CENTRAL_CHAMBER_POT_3] = Location::Pot(RC_SPIRIT_TEMPLE_CENTRAL_CHAMBER_POT_3, RCQUEST_VANILLA, RCAREA_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(-526, -1213), "Central Chamber Pot 3", RHT_POT_SPIRIT_TEMPLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_CENTRAL_CHAMBER_POT_3)); + locationTable[RC_SPIRIT_TEMPLE_CENTRAL_CHAMBER_POT_4] = Location::Pot(RC_SPIRIT_TEMPLE_CENTRAL_CHAMBER_POT_4, RCQUEST_VANILLA, RCAREA_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(639, -1224), "Central Chamber Pot 4", RHT_POT_SPIRIT_TEMPLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_CENTRAL_CHAMBER_POT_4)); + locationTable[RC_SPIRIT_TEMPLE_CENTRAL_CHAMBER_POT_5] = Location::Pot(RC_SPIRIT_TEMPLE_CENTRAL_CHAMBER_POT_5, RCQUEST_VANILLA, RCAREA_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(671, -1179), "Central Chamber Pot 5", RHT_POT_SPIRIT_TEMPLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_CENTRAL_CHAMBER_POT_5)); + locationTable[RC_SPIRIT_TEMPLE_CENTRAL_CHAMBER_POT_6] = Location::Pot(RC_SPIRIT_TEMPLE_CENTRAL_CHAMBER_POT_6, RCQUEST_VANILLA, RCAREA_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(704, -1224), "Central Chamber Pot 6", RHT_POT_SPIRIT_TEMPLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_CENTRAL_CHAMBER_POT_6)); + locationTable[RC_SPIRIT_TEMPLE_BEAMOS_HALL_POT_1] = Location::Pot(RC_SPIRIT_TEMPLE_BEAMOS_HALL_POT_1, RCQUEST_VANILLA, RCAREA_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(819, -333), "Beamos Hall Pot 1", RHT_POT_SPIRIT_TEMPLE, RG_BOMBS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_BEAMOS_HALL_POT_1)); + locationTable[RC_GANONS_CASTLE_FOREST_TRIAL_POT_1] = Location::Pot(RC_GANONS_CASTLE_FOREST_TRIAL_POT_1, RCQUEST_VANILLA, RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(1725, 2336), "Forest Trial Pot 1", RHT_POT_GANONS_CASTLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_FOREST_TRIAL_POT_1)); + locationTable[RC_GANONS_CASTLE_FOREST_TRIAL_POT_2] = Location::Pot(RC_GANONS_CASTLE_FOREST_TRIAL_POT_2, RCQUEST_VANILLA, RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(1892, 2241), "Forest Trial Pot 2", RHT_POT_GANONS_CASTLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_FOREST_TRIAL_POT_2)); + locationTable[RC_GANONS_CASTLE_FIRE_TRIAL_POT_2] = Location::Pot(RC_GANONS_CASTLE_FIRE_TRIAL_POT_2, RCQUEST_VANILLA, RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(-1898, -3942), "Fire Trial Pot 2", RHT_POT_GANONS_CASTLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_FIRE_TRIAL_POT_2)); + locationTable[RC_GANONS_CASTLE_FIRE_TRIAL_POT_1] = Location::Pot(RC_GANONS_CASTLE_FIRE_TRIAL_POT_1, RCQUEST_VANILLA, RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(-2051, -3855), "Fire Trial Pot 1", RHT_POT_GANONS_CASTLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_FIRE_TRIAL_POT_1)); + locationTable[RC_GANONS_CASTLE_WATER_TRIAL_POT_1] = Location::Pot(RC_GANONS_CASTLE_WATER_TRIAL_POT_1, RCQUEST_VANILLA, RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(3558, -920), "Water Trial Pot 1", RHT_POT_GANONS_CASTLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_WATER_TRIAL_POT_1)); + locationTable[RC_GANONS_CASTLE_WATER_TRIAL_POT_2] = Location::Pot(RC_GANONS_CASTLE_WATER_TRIAL_POT_2, RCQUEST_VANILLA, RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(3558, -761), "Water Trial Pot 2", RHT_POT_GANONS_CASTLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_WATER_TRIAL_POT_2)); + locationTable[RC_GANONS_CASTLE_WATER_TRIAL_POT_3] = Location::Pot(RC_GANONS_CASTLE_WATER_TRIAL_POT_3, RCQUEST_VANILLA, RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(2822, -507), "Water Trial Pot 3", RHT_POT_GANONS_CASTLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_WATER_TRIAL_POT_3)); + locationTable[RC_GANONS_CASTLE_SHADOW_TRIAL_POT_1] = Location::Pot(RC_GANONS_CASTLE_SHADOW_TRIAL_POT_1, RCQUEST_VANILLA, RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(1234, -3418), "Shadow Trial Pot 1", RHT_POT_GANONS_CASTLE, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_SHADOW_TRIAL_POT_1)); + locationTable[RC_GANONS_CASTLE_SHADOW_TRIAL_POT_2] = Location::Pot(RC_GANONS_CASTLE_SHADOW_TRIAL_POT_2, RCQUEST_VANILLA, RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(1621, -3203), "Shadow Trial Pot 2", RHT_POT_GANONS_CASTLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_SHADOW_TRIAL_POT_2)); + locationTable[RC_GANONS_CASTLE_SHADOW_TRIAL_POT_3] = Location::Pot(RC_GANONS_CASTLE_SHADOW_TRIAL_POT_3, RCQUEST_VANILLA, RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(2067, -4592), "Shadow Trial Pot 3", RHT_POT_GANONS_CASTLE, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_SHADOW_TRIAL_POT_3)); + locationTable[RC_GANONS_CASTLE_SHADOW_TRIAL_POT_4] = Location::Pot(RC_GANONS_CASTLE_SHADOW_TRIAL_POT_4, RCQUEST_VANILLA, RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(2224, -4506), "Shadow Trial Pot 4", RHT_POT_GANONS_CASTLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_SHADOW_TRIAL_POT_4)); + locationTable[RC_GANONS_CASTLE_SPIRIT_TRIAL_POT_1] = Location::Pot(RC_GANONS_CASTLE_SPIRIT_TRIAL_POT_1, RCQUEST_VANILLA, RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(-1398, 1402), "Spirit Trial Pot 1", RHT_POT_GANONS_CASTLE, RG_DEKU_NUTS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_SPIRIT_TRIAL_POT_1)); + locationTable[RC_GANONS_CASTLE_SPIRIT_TRIAL_POT_2] = Location::Pot(RC_GANONS_CASTLE_SPIRIT_TRIAL_POT_2, RCQUEST_VANILLA, RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(-1237, 1494), "Spirit Trial Pot 2", RHT_POT_GANONS_CASTLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_SPIRIT_TRIAL_POT_2)); + locationTable[RC_GANONS_CASTLE_LIGHT_TRIAL_BOULDER_POT_1] = Location::Pot(RC_GANONS_CASTLE_LIGHT_TRIAL_BOULDER_POT_1, RCQUEST_VANILLA, RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(-2581, -839), "Light Trial Boulder Pot 1", RHT_POT_GANONS_CASTLE, RG_ARROWS_30, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_LIGHT_TRIAL_BOULDER_POT_1)); + locationTable[RC_GANONS_CASTLE_LIGHT_TRIAL_POT_1] = Location::Pot(RC_GANONS_CASTLE_LIGHT_TRIAL_POT_1, RCQUEST_VANILLA, RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(-3840, -923), "Light Trial Pot 1", RHT_POT_GANONS_CASTLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_LIGHT_TRIAL_POT_1)); + locationTable[RC_GANONS_CASTLE_LIGHT_TRIAL_POT_2] = Location::Pot(RC_GANONS_CASTLE_LIGHT_TRIAL_POT_2, RCQUEST_VANILLA, RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(-3840, -755), "Light Trial Pot 2", RHT_POT_GANONS_CASTLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_LIGHT_TRIAL_POT_2)); + locationTable[RC_GANONS_CASTLE_GANONS_TOWER_POT_1] = Location::Pot(RC_GANONS_CASTLE_GANONS_TOWER_POT_1, RCQUEST_BOTH, RCAREA_GANONS_CASTLE, SCENE_GANONS_TOWER, TWO_ACTOR_PARAMS(-422, -258), "Ganons Tower Pot 1", RHT_POT_GANONS_CASTLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_1)); + locationTable[RC_GANONS_CASTLE_GANONS_TOWER_POT_2] = Location::Pot(RC_GANONS_CASTLE_GANONS_TOWER_POT_2, RCQUEST_BOTH, RCAREA_GANONS_CASTLE, SCENE_GANONS_TOWER, TWO_ACTOR_PARAMS(-382, -300), "Ganons Tower Pot 2", RHT_POT_GANONS_CASTLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_2)); + locationTable[RC_GANONS_CASTLE_GANONS_TOWER_POT_3] = Location::Pot(RC_GANONS_CASTLE_GANONS_TOWER_POT_3, RCQUEST_BOTH, RCAREA_GANONS_CASTLE, SCENE_GANONS_TOWER, TWO_ACTOR_PARAMS(-342, -341), "Ganons Tower Pot 3", RHT_POT_GANONS_CASTLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_3)); + locationTable[RC_GANONS_CASTLE_GANONS_TOWER_POT_4] = Location::Pot(RC_GANONS_CASTLE_GANONS_TOWER_POT_4, RCQUEST_BOTH, RCAREA_GANONS_CASTLE, SCENE_GANONS_TOWER, TWO_ACTOR_PARAMS(-298, -383), "Ganons Tower Pot 4", RHT_POT_GANONS_CASTLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_4)); + locationTable[RC_GANONS_CASTLE_GANONS_TOWER_POT_5] = Location::Pot(RC_GANONS_CASTLE_GANONS_TOWER_POT_5, RCQUEST_BOTH, RCAREA_GANONS_CASTLE, SCENE_GANONS_TOWER, TWO_ACTOR_PARAMS(-257, -424), "Ganons Tower Pot 5", RHT_POT_GANONS_CASTLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_5)); + locationTable[RC_GANONS_CASTLE_GANONS_TOWER_POT_6] = Location::Pot(RC_GANONS_CASTLE_GANONS_TOWER_POT_6, RCQUEST_BOTH, RCAREA_GANONS_CASTLE, SCENE_GANONS_TOWER, TWO_ACTOR_PARAMS(-382, -259), "Ganons Tower Pot 6", RHT_POT_GANONS_CASTLE, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_6)); + locationTable[RC_GANONS_CASTLE_GANONS_TOWER_POT_7] = Location::Pot(RC_GANONS_CASTLE_GANONS_TOWER_POT_7, RCQUEST_BOTH, RCAREA_GANONS_CASTLE, SCENE_GANONS_TOWER, TWO_ACTOR_PARAMS(-342, -300), "Ganons Tower Pot 7", RHT_POT_GANONS_CASTLE, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_7)); + locationTable[RC_GANONS_CASTLE_GANONS_TOWER_POT_8] = Location::Pot(RC_GANONS_CASTLE_GANONS_TOWER_POT_8, RCQUEST_BOTH, RCAREA_GANONS_CASTLE, SCENE_GANONS_TOWER, TWO_ACTOR_PARAMS(-301, -341), "Ganons Tower Pot 8", RHT_POT_GANONS_CASTLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_8)); + locationTable[RC_GANONS_CASTLE_GANONS_TOWER_POT_9] = Location::Pot(RC_GANONS_CASTLE_GANONS_TOWER_POT_9, RCQUEST_BOTH, RCAREA_GANONS_CASTLE, SCENE_GANONS_TOWER, TWO_ACTOR_PARAMS(-258, -383), "Ganons Tower Pot 9", RHT_POT_GANONS_CASTLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_9)); + locationTable[RC_GANONS_CASTLE_GANONS_TOWER_POT_10] = Location::Pot(RC_GANONS_CASTLE_GANONS_TOWER_POT_10, RCQUEST_BOTH, RCAREA_GANONS_CASTLE, SCENE_GANONS_TOWER, TWO_ACTOR_PARAMS(418, -261), "Ganons Tower Pot 10", RHT_POT_GANONS_CASTLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_10)); + locationTable[RC_GANONS_CASTLE_GANONS_TOWER_POT_11] = Location::Pot(RC_GANONS_CASTLE_GANONS_TOWER_POT_11, RCQUEST_BOTH, RCAREA_GANONS_CASTLE, SCENE_GANONS_TOWER, TWO_ACTOR_PARAMS(377, -301), "Ganons Tower Pot 11", RHT_POT_GANONS_CASTLE, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_11)); + locationTable[RC_GANONS_CASTLE_GANONS_TOWER_POT_12] = Location::Pot(RC_GANONS_CASTLE_GANONS_TOWER_POT_12, RCQUEST_BOTH, RCAREA_GANONS_CASTLE, SCENE_GANONS_TOWER, TWO_ACTOR_PARAMS(338, -340), "Ganons Tower Pot 12", RHT_POT_GANONS_CASTLE, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_12)); + locationTable[RC_GANONS_CASTLE_GANONS_TOWER_POT_13] = Location::Pot(RC_GANONS_CASTLE_GANONS_TOWER_POT_13, RCQUEST_BOTH, RCAREA_GANONS_CASTLE, SCENE_GANONS_TOWER, TWO_ACTOR_PARAMS(300, -380), "Ganons Tower Pot 13", RHT_POT_GANONS_CASTLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_13)); + locationTable[RC_GANONS_CASTLE_GANONS_TOWER_POT_14] = Location::Pot(RC_GANONS_CASTLE_GANONS_TOWER_POT_14, RCQUEST_BOTH, RCAREA_GANONS_CASTLE, SCENE_GANONS_TOWER, TWO_ACTOR_PARAMS(260, -420), "Ganons Tower Pot 14", RHT_POT_GANONS_CASTLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_14)); + locationTable[RC_GANONS_CASTLE_GANONS_TOWER_POT_15] = Location::Pot(RC_GANONS_CASTLE_GANONS_TOWER_POT_15, RCQUEST_BOTH, RCAREA_GANONS_CASTLE, SCENE_GANONS_TOWER, TWO_ACTOR_PARAMS(378, -261), "Ganons Tower Pot 15", RHT_POT_GANONS_CASTLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_15)); + locationTable[RC_GANONS_CASTLE_GANONS_TOWER_POT_16] = Location::Pot(RC_GANONS_CASTLE_GANONS_TOWER_POT_16, RCQUEST_BOTH, RCAREA_GANONS_CASTLE, SCENE_GANONS_TOWER, TWO_ACTOR_PARAMS(337, -300), "Ganons Tower Pot 16", RHT_POT_GANONS_CASTLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_16)); + locationTable[RC_GANONS_CASTLE_GANONS_TOWER_POT_17] = Location::Pot(RC_GANONS_CASTLE_GANONS_TOWER_POT_17, RCQUEST_BOTH, RCAREA_GANONS_CASTLE, SCENE_GANONS_TOWER, TWO_ACTOR_PARAMS(299, -340), "Ganons Tower Pot 17", RHT_POT_GANONS_CASTLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_17)); + locationTable[RC_GANONS_CASTLE_GANONS_TOWER_POT_18] = Location::Pot(RC_GANONS_CASTLE_GANONS_TOWER_POT_18, RCQUEST_BOTH, RCAREA_GANONS_CASTLE, SCENE_GANONS_TOWER, TWO_ACTOR_PARAMS(260, -380), "Ganons Tower Pot 18", RHT_POT_GANONS_CASTLE, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_GANONS_TOWER_POT_18)); + locationTable[RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_1] = Location::Pot(RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_1, RCQUEST_VANILLA, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(-95, -673), "Basement Pot 1", RHT_POT_BOTTOM_OF_THE_WELL, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_1)); + locationTable[RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_2] = Location::Pot(RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_2, RCQUEST_VANILLA, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(75, -598), "Basement Pot 2", RHT_POT_BOTTOM_OF_THE_WELL, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_2)); + locationTable[RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_3] = Location::Pot(RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_3, RCQUEST_VANILLA, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(270, -1151), "Basement Pot 3", RHT_POT_BOTTOM_OF_THE_WELL, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_3)); + locationTable[RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_4] = Location::Pot(RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_4, RCQUEST_VANILLA, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(566, -1254), "Basement Pot 4", RHT_POT_BOTTOM_OF_THE_WELL, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_4)); + locationTable[RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_5] = Location::Pot(RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_5, RCQUEST_VANILLA, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(378, -1089), "Basement Pot 5", RHT_POT_BOTTOM_OF_THE_WELL, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_5)); + locationTable[RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_6] = Location::Pot(RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_6, RCQUEST_VANILLA, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(665, -1252), "Basement Pot 6", RHT_POT_BOTTOM_OF_THE_WELL, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_6)); + locationTable[RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_7] = Location::Pot(RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_7, RCQUEST_VANILLA, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(566, -1345), "Basement Pot 7", RHT_POT_BOTTOM_OF_THE_WELL, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_7)); + locationTable[RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_8] = Location::Pot(RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_8, RCQUEST_VANILLA, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(562, -1304), "Basement Pot 8", RHT_POT_BOTTOM_OF_THE_WELL, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_8)); + locationTable[RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_9] = Location::Pot(RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_9, RCQUEST_VANILLA, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(313, -1086), "Basement Pot 9", RHT_POT_BOTTOM_OF_THE_WELL, RG_DEKU_NUTS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_9)); + locationTable[RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_10] = Location::Pot(RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_10, RCQUEST_VANILLA, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(618, -1254), "Basement Pot 10", RHT_POT_BOTTOM_OF_THE_WELL, RG_DEKU_STICK_1, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_10)); + locationTable[RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_11] = Location::Pot(RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_11, RCQUEST_VANILLA, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(257, -1099), "Basement Pot 11", RHT_POT_BOTTOM_OF_THE_WELL, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_11)); + locationTable[RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_12] = Location::Pot(RC_BOTTOM_OF_THE_WELL_BASEMENT_POT_12, RCQUEST_VANILLA, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(296, -1206), "Basement Pot 12", RHT_POT_BOTTOM_OF_THE_WELL, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_BASEMENT_POT_12)); + locationTable[RC_BOTTOM_OF_THE_WELL_LEFT_SIDE_POT_1] = Location::Pot(RC_BOTTOM_OF_THE_WELL_LEFT_SIDE_POT_1, RCQUEST_VANILLA, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(-969, 55), "Left Side Pot 1", RHT_POT_BOTTOM_OF_THE_WELL, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_LEFT_SIDE_POT_1)); + locationTable[RC_BOTTOM_OF_THE_WELL_LEFT_SIDE_POT_2] = Location::Pot(RC_BOTTOM_OF_THE_WELL_LEFT_SIDE_POT_2, RCQUEST_VANILLA, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(-966, 9), "Left Side Pot 2", RHT_POT_BOTTOM_OF_THE_WELL, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_LEFT_SIDE_POT_2)); + locationTable[RC_BOTTOM_OF_THE_WELL_LEFT_SIDE_POT_3] = Location::Pot(RC_BOTTOM_OF_THE_WELL_LEFT_SIDE_POT_3, RCQUEST_VANILLA, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(-965, -32), "Left Side Pot 3", RHT_POT_BOTTOM_OF_THE_WELL, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_LEFT_SIDE_POT_3)); + locationTable[RC_BOTTOM_OF_THE_WELL_NEAR_ENTRANCE_POT_1] = Location::Pot(RC_BOTTOM_OF_THE_WELL_NEAR_ENTRANCE_POT_1, RCQUEST_VANILLA, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(-41, 389), "Near Entrance Pot 1", RHT_POT_BOTTOM_OF_THE_WELL, RG_DEKU_STICK_1, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_NEAR_ENTRANCE_POT_1)); + locationTable[RC_BOTTOM_OF_THE_WELL_NEAR_ENTRANCE_POT_2] = Location::Pot(RC_BOTTOM_OF_THE_WELL_NEAR_ENTRANCE_POT_2, RCQUEST_VANILLA, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(36, 389), "Near Entrance Pot 2", RHT_POT_BOTTOM_OF_THE_WELL, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_NEAR_ENTRANCE_POT_2)); + locationTable[RC_BOTTOM_OF_THE_WELL_FIRE_KEESE_POT_1] = Location::Pot(RC_BOTTOM_OF_THE_WELL_FIRE_KEESE_POT_1, RCQUEST_VANILLA, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(874, -1294), "Fire Keese Pot 1", RHT_POT_BOTTOM_OF_THE_WELL, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_FIRE_KEESE_POT_1)); + locationTable[RC_BOTTOM_OF_THE_WELL_UNDERWATER_POT] = Location::Pot(RC_BOTTOM_OF_THE_WELL_UNDERWATER_POT, RCQUEST_VANILLA, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(3, -1641), "Underwater Pot", RHT_POT_BOTTOM_OF_THE_WELL, RG_BOMBS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_UNDERWATER_POT)); + locationTable[RC_ICE_CAVERN_HALL_POT_1] = Location::Pot(RC_ICE_CAVERN_HALL_POT_1, RCQUEST_VANILLA, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(-206, 449), "Hall Pot 1", RHT_POT_ICE_CAVERN, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_HALL_POT_1)); + locationTable[RC_ICE_CAVERN_HALL_POT_2] = Location::Pot(RC_ICE_CAVERN_HALL_POT_2, RCQUEST_VANILLA, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(-203, 492), "Hall Pot 2", RHT_POT_ICE_CAVERN, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_HALL_POT_2)); + locationTable[RC_ICE_CAVERN_SPINNING_BLADE_POT_1] = Location::Pot(RC_ICE_CAVERN_SPINNING_BLADE_POT_1, RCQUEST_VANILLA, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(433, -732), "Spinning Blade Pot 1", RHT_POT_ICE_CAVERN, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_SPINNING_BLADE_POT_1)); + locationTable[RC_ICE_CAVERN_SPINNING_BLADE_POT_2] = Location::Pot(RC_ICE_CAVERN_SPINNING_BLADE_POT_2, RCQUEST_VANILLA, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(569, -175), "Spinning Blade Pot 2", RHT_POT_ICE_CAVERN, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_SPINNING_BLADE_POT_2)); + locationTable[RC_ICE_CAVERN_SPINNING_BLADE_POT_3] = Location::Pot(RC_ICE_CAVERN_SPINNING_BLADE_POT_3, RCQUEST_VANILLA, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(521, -131), "Spinning Blade Pot 3", RHT_POT_ICE_CAVERN, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_SPINNING_BLADE_POT_3)); + locationTable[RC_ICE_CAVERN_NEAR_END_POT_1] = Location::Pot(RC_ICE_CAVERN_NEAR_END_POT_1, RCQUEST_VANILLA, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(-1422, 586), "Near End Pot 1", RHT_POT_ICE_CAVERN, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_NEAR_END_POT_1)); + locationTable[RC_ICE_CAVERN_NEAR_END_POT_2] = Location::Pot(RC_ICE_CAVERN_NEAR_END_POT_2, RCQUEST_VANILLA, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(-1488, 676), "Near End Pot 2", RHT_POT_ICE_CAVERN, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_NEAR_END_POT_2)); + locationTable[RC_ICE_CAVERN_FROZEN_POT_1] = Location::Pot(RC_ICE_CAVERN_FROZEN_POT_1, RCQUEST_VANILLA, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(366, -2036), "Frozen Pot 1", RHT_POT_ICE_CAVERN, RG_PURPLE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_FROZEN_POT_1)); + + // MQ Dungeon Pots + // Randomizer Check Randomizer Check Quest Area Scene ID Params Short Name Hint Text Key Vanilla Spoiler Collection Check + locationTable[RC_DODONGOS_CAVERN_MQ_STAIRCASE_POT_1] = Location::Pot(RC_DODONGOS_CAVERN_MQ_STAIRCASE_POT_1, RCQUEST_MQ, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(-2391, -1804), "MQ Staircase Pot 1", RHT_POT_DODONGOS_CAVERN, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_MQ_STAIRCASE_POT_1)); + locationTable[RC_DODONGOS_CAVERN_MQ_STAIRCASE_POT_2] = Location::Pot(RC_DODONGOS_CAVERN_MQ_STAIRCASE_POT_2, RCQUEST_MQ, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(-2361, -1161), "MQ Staircase Pot 2", RHT_POT_DODONGOS_CAVERN, RG_RED_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_MQ_STAIRCASE_POT_2)); + locationTable[RC_DODONGOS_CAVERN_MQ_STAIRCASE_POT_3] = Location::Pot(RC_DODONGOS_CAVERN_MQ_STAIRCASE_POT_3, RCQUEST_MQ, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(-1525, -1800), "MQ Staircase Pot 3", RHT_POT_DODONGOS_CAVERN, RG_RED_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_MQ_STAIRCASE_POT_3)); + locationTable[RC_DODONGOS_CAVERN_MQ_STAIRCASE_POT_4] = Location::Pot(RC_DODONGOS_CAVERN_MQ_STAIRCASE_POT_4, RCQUEST_MQ, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(-1558, -1169), "MQ Staircase Pot 4", RHT_POT_DODONGOS_CAVERN, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_MQ_STAIRCASE_POT_4)); + locationTable[RC_DODONGOS_CAVERN_MQ_TORCH_PUZZLE_MIDDLE_POT] = Location::Pot(RC_DODONGOS_CAVERN_MQ_TORCH_PUZZLE_MIDDLE_POT, RCQUEST_MQ, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(1532, -1225), "MQ Torch Puzzle Middle Pot", RHT_POT_DODONGOS_CAVERN, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_MQ_BLOCK_ROOM_POT_2)); + locationTable[RC_DODONGOS_CAVERN_MQ_BIG_BLOCK_POT_1] = Location::Pot(RC_DODONGOS_CAVERN_MQ_BIG_BLOCK_POT_1, RCQUEST_MQ, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(3195, -155), "MQ Big Block Pot 1", RHT_POT_DODONGOS_CAVERN, RG_DEKU_SEEDS_30, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_MQ_SILVER_BLOCK_POT_1)); + locationTable[RC_DODONGOS_CAVERN_MQ_BIG_BLOCK_POT_2] = Location::Pot(RC_DODONGOS_CAVERN_MQ_BIG_BLOCK_POT_2, RCQUEST_MQ, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(2704, -483), "MQ Big Block Pot 2", RHT_POT_DODONGOS_CAVERN, RG_DEKU_SEEDS_30, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_MQ_SILVER_BLOCK_POT_2)); + locationTable[RC_DODONGOS_CAVERN_MQ_UPPER_LIZALFOS_POT_1] = Location::Pot(RC_DODONGOS_CAVERN_MQ_UPPER_LIZALFOS_POT_1, RCQUEST_MQ, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(3869, -811), "MQ Upper Lizalfos Pot 1", RHT_POT_DODONGOS_CAVERN, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_MQ_UPPER_LIZALFOS_POT_1)); + locationTable[RC_DODONGOS_CAVERN_MQ_UPPER_LIZALFOS_POT_2] = Location::Pot(RC_DODONGOS_CAVERN_MQ_UPPER_LIZALFOS_POT_2, RCQUEST_MQ, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(3867, -969), "MQ Upper Lizalfos Pot 2", RHT_POT_DODONGOS_CAVERN, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_MQ_UPPER_LIZALFOS_POT_2)); + locationTable[RC_DODONGOS_CAVERN_MQ_UPPER_LIZALFOS_POT_3] = Location::Pot(RC_DODONGOS_CAVERN_MQ_UPPER_LIZALFOS_POT_3, RCQUEST_MQ, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(4687, -1071), "MQ Upper Lizalfos Pot 3", RHT_POT_DODONGOS_CAVERN, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_MQ_UPPER_LIZALFOS_POT_3)); + locationTable[RC_DODONGOS_CAVERN_MQ_UPPER_LIZALFOS_POT_4] = Location::Pot(RC_DODONGOS_CAVERN_MQ_UPPER_LIZALFOS_POT_4, RCQUEST_MQ, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(4693, -1194), "MQ Upper Lizalfos Pot 4", RHT_POT_DODONGOS_CAVERN, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_MQ_UPPER_LIZALFOS_POT_4)); + locationTable[RC_DODONGOS_CAVERN_MQ_TWO_FLAMES_POT_1] = Location::Pot(RC_DODONGOS_CAVERN_MQ_TWO_FLAMES_POT_1, RCQUEST_MQ, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(3327, -805), "MQ Two Flames Pot 1", RHT_POT_DODONGOS_CAVERN, RG_DEKU_SEEDS_30, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_MQ_TWO_FLAMES_POT_1)); + locationTable[RC_DODONGOS_CAVERN_MQ_TWO_FLAMES_POT_2] = Location::Pot(RC_DODONGOS_CAVERN_MQ_TWO_FLAMES_POT_2, RCQUEST_MQ, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(3326, -753), "MQ Two Flames Pot 2", RHT_POT_DODONGOS_CAVERN, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_MQ_TWO_FLAMES_POT_2)); + locationTable[RC_DODONGOS_CAVERN_MQ_TORCH_PUZZLE_CORNER_POT] = Location::Pot(RC_DODONGOS_CAVERN_MQ_TORCH_PUZZLE_CORNER_POT, RCQUEST_MQ, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(1827, -587), "MQ Torch Puzzle Corner Pot", RHT_POT_DODONGOS_CAVERN, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_MQ_BLOCK_ROOM_POT_1)); + locationTable[RC_DODONGOS_CAVERN_MQ_RIGHT_SIDE_POT_1] = Location::Pot(RC_DODONGOS_CAVERN_MQ_RIGHT_SIDE_POT_1, RCQUEST_MQ, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(1727, -151), "MQ Right Side Pot 1", RHT_POT_DODONGOS_CAVERN, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_MQ_RIGHT_SIDE_POT_1)); + locationTable[RC_DODONGOS_CAVERN_MQ_RIGHT_SIDE_POT_2] = Location::Pot(RC_DODONGOS_CAVERN_MQ_RIGHT_SIDE_POT_2, RCQUEST_MQ, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(1815, -154), "MQ Right Side Pot 2", RHT_POT_DODONGOS_CAVERN, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_MQ_RIGHT_SIDE_POT_2)); + locationTable[RC_DODONGOS_CAVERN_MQ_RIGHT_SIDE_POT_3] = Location::Pot(RC_DODONGOS_CAVERN_MQ_RIGHT_SIDE_POT_3, RCQUEST_MQ, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(3442, -469), "MQ Right Side Pot 3", RHT_POT_DODONGOS_CAVERN, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_MQ_RIGHT_SIDE_POT_3)); + locationTable[RC_DODONGOS_CAVERN_MQ_RIGHT_SIDE_POT_4] = Location::Pot(RC_DODONGOS_CAVERN_MQ_RIGHT_SIDE_POT_4, RCQUEST_MQ, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(3682, -466), "MQ Right Side Pot 4", RHT_POT_DODONGOS_CAVERN, RG_DEKU_SEEDS_30, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_MQ_RIGHT_SIDE_POT_4)); + locationTable[RC_DODONGOS_CAVERN_MQ_POE_ROOM_POT_1] = Location::Pot(RC_DODONGOS_CAVERN_MQ_POE_ROOM_POT_1, RCQUEST_MQ, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(1844, -1867), "MQ Poe Room Pot 1", RHT_POT_DODONGOS_CAVERN, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_MQ_POE_ROOM_POT_1)); + locationTable[RC_DODONGOS_CAVERN_MQ_POE_ROOM_POT_2] = Location::Pot(RC_DODONGOS_CAVERN_MQ_POE_ROOM_POT_2, RCQUEST_MQ, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(2272, -2213), "MQ Poe Room Pot 2", RHT_POT_DODONGOS_CAVERN, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_MQ_POE_ROOM_POT_2)); + locationTable[RC_DODONGOS_CAVERN_MQ_POE_ROOM_POT_3] = Location::Pot(RC_DODONGOS_CAVERN_MQ_POE_ROOM_POT_3, RCQUEST_MQ, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(2240, -1369), "MQ Poe Room Pot 3", RHT_POT_DODONGOS_CAVERN, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_MQ_POE_ROOM_POT_3)); + locationTable[RC_DODONGOS_CAVERN_MQ_POE_ROOM_POT_4] = Location::Pot(RC_DODONGOS_CAVERN_MQ_POE_ROOM_POT_4, RCQUEST_MQ, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(1535, -1299), "MQ Poe Room Pot 4", RHT_POT_DODONGOS_CAVERN, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_MQ_POE_ROOM_POT_4)); + locationTable[RC_DODONGOS_CAVERN_MQ_BEFORE_BOSS_SW_POT] = Location::Pot(RC_DODONGOS_CAVERN_MQ_BEFORE_BOSS_SW_POT, RCQUEST_MQ, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(258, -3055), "MQ Before Boss SW Pot", RHT_POT_DODONGOS_CAVERN, RG_BOMBS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_MQ_BEFORE_BOSS_POT_1)); + locationTable[RC_DODONGOS_CAVERN_MQ_BEFORE_BOSS_NE_POT] = Location::Pot(RC_DODONGOS_CAVERN_MQ_BEFORE_BOSS_NE_POT, RCQUEST_MQ, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(-265, -2499), "MQ Before Boss NE Pot", RHT_POT_DODONGOS_CAVERN, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_MQ_BEFORE_BOSS_POT_2)); + locationTable[RC_DODONGOS_CAVERN_MQ_ARMOS_ROOM_SE_POT] = Location::Pot(RC_DODONGOS_CAVERN_MQ_ARMOS_ROOM_SE_POT, RCQUEST_MQ, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(1758, -3194), "MQ Armos Room SE Pot", RHT_POT_DODONGOS_CAVERN, RG_BOMBS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_MQ_ARMOS_POT_3)); + locationTable[RC_DODONGOS_CAVERN_MQ_ARMOS_ROOM_SW_POT] = Location::Pot(RC_DODONGOS_CAVERN_MQ_ARMOS_ROOM_SW_POT, RCQUEST_MQ, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(1223, -3197), "MQ Armos Room SW Pot", RHT_POT_DODONGOS_CAVERN, RG_BOMBS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_MQ_ARMOS_POT_4)); + locationTable[RC_DODONGOS_CAVERN_MQ_BACKROOM_POT_1] = Location::Pot(RC_DODONGOS_CAVERN_MQ_BACKROOM_POT_1, RCQUEST_MQ, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(1663, -4311), "MQ Backroom Pot 1", RHT_POT_DODONGOS_CAVERN, RG_BOMBS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_MQ_BACKROOM_POT_1)); + locationTable[RC_DODONGOS_CAVERN_MQ_BACKROOM_POT_2] = Location::Pot(RC_DODONGOS_CAVERN_MQ_BACKROOM_POT_2, RCQUEST_MQ, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(1648, -4694), "MQ Backroom Pot 2", RHT_POT_DODONGOS_CAVERN, RG_BOMBS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_MQ_BACKROOM_POT_2)); + locationTable[RC_DODONGOS_CAVERN_MQ_ARMOS_ROOM_NW_POT] = Location::Pot(RC_DODONGOS_CAVERN_MQ_ARMOS_ROOM_NW_POT, RCQUEST_MQ, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(1005, -3711), "MQ Armos Room NW Pot", RHT_POT_DODONGOS_CAVERN, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_MQ_ARMOS_POT_1)); + locationTable[RC_DODONGOS_CAVERN_MQ_ARMOS_ROOM_NE_POT] = Location::Pot(RC_DODONGOS_CAVERN_MQ_ARMOS_ROOM_NE_POT, RCQUEST_MQ, RCAREA_DODONGOS_CAVERN, SCENE_DODONGOS_CAVERN, TWO_ACTOR_PARAMS(1066, -3711), "MQ Armos Room NE Pot", RHT_POT_DODONGOS_CAVERN, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_DODONGOS_CAVERN_MQ_ARMOS_POT_2)); + locationTable[RC_JABU_JABUS_BELLY_MQ_ENTRANCE_POT_1] = Location::Pot(RC_JABU_JABUS_BELLY_MQ_ENTRANCE_POT_1, RCQUEST_MQ, RCAREA_JABU_JABUS_BELLY, SCENE_JABU_JABU, TWO_ACTOR_PARAMS(-183, -449), "MQ Entrance Pot 1", RHT_POT_JABU_JABUS_BELLY, RG_BOMBS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_JABU_JABUS_BELLY_MQ_ENTRANCE_POT_1)); + locationTable[RC_JABU_JABUS_BELLY_MQ_ENTRANCE_POT_2] = Location::Pot(RC_JABU_JABUS_BELLY_MQ_ENTRANCE_POT_2, RCQUEST_MQ, RCAREA_JABU_JABUS_BELLY, SCENE_JABU_JABU, TWO_ACTOR_PARAMS(202, -62), "MQ Entrance Pot 2", RHT_POT_JABU_JABUS_BELLY, RG_DEKU_NUTS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_JABU_JABUS_BELLY_MQ_ENTRANCE_POT_2)); + locationTable[RC_JABU_JABUS_BELLY_MQ_GEYSER_POT_1] = Location::Pot(RC_JABU_JABUS_BELLY_MQ_GEYSER_POT_1, RCQUEST_MQ, RCAREA_JABU_JABUS_BELLY, SCENE_JABU_JABU, TWO_ACTOR_PARAMS(-689, -1800), "MQ Geyser Pot 1", RHT_POT_JABU_JABUS_BELLY, RG_ARROWS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_JABU_JABUS_BELLY_MQ_GEYSER_POT_1)); + locationTable[RC_JABU_JABUS_BELLY_MQ_GEYSER_POT_2] = Location::Pot(RC_JABU_JABUS_BELLY_MQ_GEYSER_POT_2, RCQUEST_MQ, RCAREA_JABU_JABUS_BELLY, SCENE_JABU_JABU, TWO_ACTOR_PARAMS(-693, -1614), "MQ Geyser Pot 2", RHT_POT_JABU_JABUS_BELLY, RG_DEKU_NUTS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_JABU_JABUS_BELLY_MQ_GEYSER_POT_2)); + locationTable[RC_JABU_JABUS_BELLY_MQ_TIME_BLOCK_POT_1] = Location::Pot(RC_JABU_JABUS_BELLY_MQ_TIME_BLOCK_POT_1, RCQUEST_MQ, RCAREA_JABU_JABUS_BELLY, SCENE_JABU_JABU, TWO_ACTOR_PARAMS(697, -2318), "MQ Time Block Pot 1", RHT_POT_JABU_JABUS_BELLY, RG_BOMBS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_JABU_JABUS_BELLY_MQ_TIME_BLOCK_POT_1)); + locationTable[RC_JABU_JABUS_BELLY_MQ_TIME_BLOCK_POT_2] = Location::Pot(RC_JABU_JABUS_BELLY_MQ_TIME_BLOCK_POT_2, RCQUEST_MQ, RCAREA_JABU_JABUS_BELLY, SCENE_JABU_JABU, TWO_ACTOR_PARAMS(699, -2445), "MQ Time Block Pot 2", RHT_POT_JABU_JABUS_BELLY, RG_ARROWS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_JABU_JABUS_BELLY_MQ_TIME_BLOCK_POT_2)); + locationTable[RC_JABU_JABUS_BELLY_MQ_LIKE_LIKES_POT_1] = Location::Pot(RC_JABU_JABUS_BELLY_MQ_LIKE_LIKES_POT_1, RCQUEST_MQ, RCAREA_JABU_JABUS_BELLY, SCENE_JABU_JABU, TWO_ACTOR_PARAMS(612, -5932), "MQ Like Likes Pot 1", RHT_POT_JABU_JABUS_BELLY, RG_ARROWS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_JABU_JABUS_BELLY_MQ_LIKE_LIKES_POT_1)); + locationTable[RC_JABU_JABUS_BELLY_MQ_LIKE_LIKES_POT_2] = Location::Pot(RC_JABU_JABUS_BELLY_MQ_LIKE_LIKES_POT_2, RCQUEST_MQ, RCAREA_JABU_JABUS_BELLY, SCENE_JABU_JABU, TWO_ACTOR_PARAMS(718, -5929), "MQ Like Likes Pot 2", RHT_POT_JABU_JABUS_BELLY, RG_BOMBS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_JABU_JABUS_BELLY_MQ_LIKE_LIKES_POT_2)); + locationTable[RC_JABU_JABUS_BELLY_MQ_BEFORE_BOSS_POT_1] = Location::Pot(RC_JABU_JABUS_BELLY_MQ_BEFORE_BOSS_POT_1, RCQUEST_MQ, RCAREA_JABU_JABUS_BELLY, SCENE_JABU_JABU, TWO_ACTOR_PARAMS(1305, -2005), "MQ Before Boss Pot 1", RHT_POT_JABU_JABUS_BELLY, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_JABU_JABUS_BELLY_MQ_BEFORE_BOSS_POT_1)); + locationTable[RC_FOREST_TEMPLE_MQ_LOBBY_POT_1] = Location::Pot(RC_FOREST_TEMPLE_MQ_LOBBY_POT_1, RCQUEST_MQ, RCAREA_FOREST_TEMPLE, SCENE_FOREST_TEMPLE, TWO_ACTOR_PARAMS(675, -989), "MQ Lobby Pot 1", RHT_POT_FOREST_TEMPLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FOREST_TEMPLE_MQ_LOBBY_POT_1)); + locationTable[RC_FOREST_TEMPLE_MQ_LOBBY_POT_2] = Location::Pot(RC_FOREST_TEMPLE_MQ_LOBBY_POT_2, RCQUEST_MQ, RCAREA_FOREST_TEMPLE, SCENE_FOREST_TEMPLE, TWO_ACTOR_PARAMS(-429, -981), "MQ Lobby Pot 2", RHT_POT_FOREST_TEMPLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FOREST_TEMPLE_MQ_LOBBY_POT_2)); + locationTable[RC_FOREST_TEMPLE_MQ_LOBBY_POT_3] = Location::Pot(RC_FOREST_TEMPLE_MQ_LOBBY_POT_3, RCQUEST_MQ, RCAREA_FOREST_TEMPLE, SCENE_FOREST_TEMPLE, TWO_ACTOR_PARAMS(720, -1037), "MQ Lobby Pot 3", RHT_POT_FOREST_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FOREST_TEMPLE_MQ_LOBBY_POT_3)); + locationTable[RC_FOREST_TEMPLE_MQ_LOBBY_POT_4] = Location::Pot(RC_FOREST_TEMPLE_MQ_LOBBY_POT_4, RCQUEST_MQ, RCAREA_FOREST_TEMPLE, SCENE_FOREST_TEMPLE, TWO_ACTOR_PARAMS(-477, -1034), "MQ Lobby Pot 4", RHT_POT_FOREST_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FOREST_TEMPLE_MQ_LOBBY_POT_4)); + locationTable[RC_FOREST_TEMPLE_MQ_LOBBY_POT_5] = Location::Pot(RC_FOREST_TEMPLE_MQ_LOBBY_POT_5, RCQUEST_MQ, RCAREA_FOREST_TEMPLE, SCENE_FOREST_TEMPLE, TWO_ACTOR_PARAMS(630, -943), "MQ Lobby Pot 5", RHT_POT_FOREST_TEMPLE, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FOREST_TEMPLE_MQ_LOBBY_POT_5)); + locationTable[RC_FOREST_TEMPLE_MQ_LOBBY_POT_6] = Location::Pot(RC_FOREST_TEMPLE_MQ_LOBBY_POT_6, RCQUEST_MQ, RCAREA_FOREST_TEMPLE, SCENE_FOREST_TEMPLE, TWO_ACTOR_PARAMS(-384, -937), "MQ Lobby Pot 6", RHT_POT_FOREST_TEMPLE, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FOREST_TEMPLE_MQ_LOBBY_POT_6)); + locationTable[RC_FOREST_TEMPLE_MQ_WOLFOS_POT_1] = Location::Pot(RC_FOREST_TEMPLE_MQ_WOLFOS_POT_1, RCQUEST_MQ, RCAREA_FOREST_TEMPLE, SCENE_FOREST_TEMPLE, TWO_ACTOR_PARAMS(90, -3583), "MQ Wolfos Pot 1", RHT_POT_FOREST_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FOREST_TEMPLE_MQ_LOWER_STALFOS_POT_1)); + locationTable[RC_FOREST_TEMPLE_MQ_WOLFOS_POT_2] = Location::Pot(RC_FOREST_TEMPLE_MQ_WOLFOS_POT_2, RCQUEST_MQ, RCAREA_FOREST_TEMPLE, SCENE_FOREST_TEMPLE, TWO_ACTOR_PARAMS(142, -3583), "MQ Wolfos Pot 2", RHT_POT_FOREST_TEMPLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FOREST_TEMPLE_MQ_LOWER_STALFOS_POT_2)); + locationTable[RC_FOREST_TEMPLE_MQ_UPPER_STALFOS_POT_1] = Location::Pot(RC_FOREST_TEMPLE_MQ_UPPER_STALFOS_POT_1, RCQUEST_MQ, RCAREA_FOREST_TEMPLE, SCENE_FOREST_TEMPLE, TWO_ACTOR_PARAMS(206, -3631), "MQ Upper Stalfos Pot 1", RHT_POT_FOREST_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FOREST_TEMPLE_MQ_UPPER_STALFOS_POT_1)); + locationTable[RC_FOREST_TEMPLE_MQ_UPPER_STALFOS_POT_2] = Location::Pot(RC_FOREST_TEMPLE_MQ_UPPER_STALFOS_POT_2, RCQUEST_MQ, RCAREA_FOREST_TEMPLE, SCENE_FOREST_TEMPLE, TWO_ACTOR_PARAMS(32, -3012), "MQ Upper Stalfos Pot 2", RHT_POT_FOREST_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FOREST_TEMPLE_MQ_UPPER_STALFOS_POT_2)); + locationTable[RC_FOREST_TEMPLE_MQ_UPPER_STALFOS_POT_3] = Location::Pot(RC_FOREST_TEMPLE_MQ_UPPER_STALFOS_POT_3, RCQUEST_MQ, RCAREA_FOREST_TEMPLE, SCENE_FOREST_TEMPLE, TWO_ACTOR_PARAMS(30, -3631), "MQ Upper Stalfos Pot 3", RHT_POT_FOREST_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FOREST_TEMPLE_MQ_UPPER_STALFOS_POT_3)); + locationTable[RC_FOREST_TEMPLE_MQ_UPPER_STALFOS_POT_4] = Location::Pot(RC_FOREST_TEMPLE_MQ_UPPER_STALFOS_POT_4, RCQUEST_MQ, RCAREA_FOREST_TEMPLE, SCENE_FOREST_TEMPLE, TWO_ACTOR_PARAMS(202, -3012), "MQ Upper Stalfos Pot 4", RHT_POT_FOREST_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FOREST_TEMPLE_MQ_UPPER_STALFOS_POT_4)); + locationTable[RC_FOREST_TEMPLE_MQ_BLUE_POE_POT_1] = Location::Pot(RC_FOREST_TEMPLE_MQ_BLUE_POE_POT_1, RCQUEST_MQ, RCAREA_FOREST_TEMPLE, SCENE_FOREST_TEMPLE, TWO_ACTOR_PARAMS(830, -3639), "MQ Blue Poe Pot 1", RHT_POT_FOREST_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FOREST_TEMPLE_MQ_BLUE_POE_POT_1)); + locationTable[RC_FOREST_TEMPLE_MQ_BLUE_POE_POT_2] = Location::Pot(RC_FOREST_TEMPLE_MQ_BLUE_POE_POT_2, RCQUEST_MQ, RCAREA_FOREST_TEMPLE, SCENE_FOREST_TEMPLE, TWO_ACTOR_PARAMS(941, -3640), "MQ Blue Poe Pot 2", RHT_POT_FOREST_TEMPLE, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FOREST_TEMPLE_MQ_BLUE_POE_POT_2)); + locationTable[RC_FOREST_TEMPLE_MQ_BLUE_POE_POT_3] = Location::Pot(RC_FOREST_TEMPLE_MQ_BLUE_POE_POT_3, RCQUEST_MQ, RCAREA_FOREST_TEMPLE, SCENE_FOREST_TEMPLE, TWO_ACTOR_PARAMS(883, -3640), "MQ Blue Poe Pot 3", RHT_POT_FOREST_TEMPLE, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FOREST_TEMPLE_MQ_BLUE_POE_POT_3)); + locationTable[RC_FOREST_TEMPLE_MQ_GREEN_POE_POT_1] = Location::Pot(RC_FOREST_TEMPLE_MQ_GREEN_POE_POT_1, RCQUEST_MQ, RCAREA_FOREST_TEMPLE, SCENE_FOREST_TEMPLE, TWO_ACTOR_PARAMS(1647, -1529), "MQ Green Poe Pot 1", RHT_POT_FOREST_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FOREST_TEMPLE_MQ_GREEN_POE_POT_1)); + locationTable[RC_FOREST_TEMPLE_MQ_GREEN_POE_POT_2] = Location::Pot(RC_FOREST_TEMPLE_MQ_GREEN_POE_POT_2, RCQUEST_MQ, RCAREA_FOREST_TEMPLE, SCENE_FOREST_TEMPLE, TWO_ACTOR_PARAMS(1645, -1588), "MQ Green Poe Pot 2", RHT_POT_FOREST_TEMPLE, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FOREST_TEMPLE_MQ_GREEN_POE_POT_2)); + locationTable[RC_FOREST_TEMPLE_MQ_BASEMENT_POT_1] = Location::Pot(RC_FOREST_TEMPLE_MQ_BASEMENT_POT_1, RCQUEST_MQ, RCAREA_FOREST_TEMPLE, SCENE_FOREST_TEMPLE, TWO_ACTOR_PARAMS(-461, -1095), "MQ Basement Pot 1", RHT_POT_FOREST_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FOREST_TEMPLE_MQ_BASEMENT_POT_1)); + locationTable[RC_FOREST_TEMPLE_MQ_BASEMENT_POT_2] = Location::Pot(RC_FOREST_TEMPLE_MQ_BASEMENT_POT_2, RCQUEST_MQ, RCAREA_FOREST_TEMPLE, SCENE_FOREST_TEMPLE, TWO_ACTOR_PARAMS(-351, -979), "MQ Basement Pot 2", RHT_POT_FOREST_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FOREST_TEMPLE_MQ_BASEMENT_POT_2)); + locationTable[RC_FOREST_TEMPLE_MQ_BASEMENT_POT_3] = Location::Pot(RC_FOREST_TEMPLE_MQ_BASEMENT_POT_3, RCQUEST_MQ, RCAREA_FOREST_TEMPLE, SCENE_FOREST_TEMPLE, TWO_ACTOR_PARAMS(-387, -1018), "MQ Basement Pot 3", RHT_POT_FOREST_TEMPLE, RG_BOMBS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FOREST_TEMPLE_MQ_BASEMENT_POT_3)); + locationTable[RC_FOREST_TEMPLE_MQ_BASEMENT_POT_4] = Location::Pot(RC_FOREST_TEMPLE_MQ_BASEMENT_POT_4, RCQUEST_MQ, RCAREA_FOREST_TEMPLE, SCENE_FOREST_TEMPLE, TWO_ACTOR_PARAMS(-424, -1057), "MQ Basement Pot 4", RHT_POT_FOREST_TEMPLE, RG_ARROWS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FOREST_TEMPLE_MQ_BASEMENT_POT_4)); + locationTable[RC_GANONS_CASTLE_MQ_FOREST_TRIAL_POT_1] = Location::Pot(RC_GANONS_CASTLE_MQ_FOREST_TRIAL_POT_1, RCQUEST_MQ, RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(1873, 2252), "MQ Forest Trial Pot 1", RHT_POT_GANONS_CASTLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_MQ_FOREST_TRIAL_POT_1)); + locationTable[RC_GANONS_CASTLE_MQ_FOREST_TRIAL_POT_2] = Location::Pot(RC_GANONS_CASTLE_MQ_FOREST_TRIAL_POT_2, RCQUEST_MQ, RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(1726, 2326), "MQ Forest Trial Pot 2", RHT_POT_GANONS_CASTLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_MQ_FOREST_TRIAL_POT_2)); + locationTable[RC_GANONS_CASTLE_MQ_WATER_TRIAL_POT_1] = Location::Pot(RC_GANONS_CASTLE_MQ_WATER_TRIAL_POT_1, RCQUEST_MQ, RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(3544, -931), "MQ Water Trial Pot 1", RHT_POT_GANONS_CASTLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_MQ_WATER_TRIAL_POT_1)); + locationTable[RC_GANONS_CASTLE_MQ_WATER_TRIAL_POT_2] = Location::Pot(RC_GANONS_CASTLE_MQ_WATER_TRIAL_POT_2, RCQUEST_MQ, RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(3541, -755), "MQ Water Trial Pot 2", RHT_POT_GANONS_CASTLE, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_MQ_WATER_TRIAL_POT_2)); + locationTable[RC_GANONS_CASTLE_MQ_SHADOW_TRIAL_POT_1] = Location::Pot(RC_GANONS_CASTLE_MQ_SHADOW_TRIAL_POT_1, RCQUEST_MQ, RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(2073, -4592), "MQ Shadow Trial Pot 1", RHT_POT_GANONS_CASTLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_MQ_SHADOW_TRIAL_POT_1)); + locationTable[RC_GANONS_CASTLE_MQ_SHADOW_TRIAL_POT_2] = Location::Pot(RC_GANONS_CASTLE_MQ_SHADOW_TRIAL_POT_2, RCQUEST_MQ, RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(2217, -4516), "MQ Shadow Trial Pot 2", RHT_POT_GANONS_CASTLE, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_MQ_SHADOW_TRIAL_POT_2)); + locationTable[RC_GANONS_CASTLE_MQ_FIRE_TRIAL_POT_1] = Location::Pot(RC_GANONS_CASTLE_MQ_FIRE_TRIAL_POT_1, RCQUEST_MQ, RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(-1918, -3957), "MQ Fire Trial Pot 1", RHT_POT_GANONS_CASTLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_MQ_FIRE_TRIAL_POT_1)); + locationTable[RC_GANONS_CASTLE_MQ_FIRE_TRIAL_POT_2] = Location::Pot(RC_GANONS_CASTLE_MQ_FIRE_TRIAL_POT_2, RCQUEST_MQ, RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(-2052, -3888), "MQ Fire Trial Pot 2", RHT_POT_GANONS_CASTLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_MQ_FIRE_TRIAL_POT_2)); + locationTable[RC_GANONS_CASTLE_MQ_LIGHT_TRIAL_POT_1] = Location::Pot(RC_GANONS_CASTLE_MQ_LIGHT_TRIAL_POT_1, RCQUEST_MQ, RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(-3842, -759), "MQ Light Trial Pot 1", RHT_POT_GANONS_CASTLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_MQ_LIGHT_TRIAL_POT_1)); + locationTable[RC_GANONS_CASTLE_MQ_LIGHT_TRIAL_POT_2] = Location::Pot(RC_GANONS_CASTLE_MQ_LIGHT_TRIAL_POT_2, RCQUEST_MQ, RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(-3845, -933), "MQ Light Trial Pot 2", RHT_POT_GANONS_CASTLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_MQ_LIGHT_TRIAL_POT_2)); + locationTable[RC_GANONS_CASTLE_MQ_SPIRIT_TRIAL_POT_1] = Location::Pot(RC_GANONS_CASTLE_MQ_SPIRIT_TRIAL_POT_1, RCQUEST_MQ, RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(-1402, 1414), "MQ Spirit Trial Pot 1", RHT_POT_GANONS_CASTLE, RG_DEKU_NUTS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_MQ_SPIRIT_TRIAL_POT_1)); + locationTable[RC_GANONS_CASTLE_MQ_SPIRIT_TRIAL_POT_2] = Location::Pot(RC_GANONS_CASTLE_MQ_SPIRIT_TRIAL_POT_2, RCQUEST_MQ, RCAREA_GANONS_CASTLE, SCENE_INSIDE_GANONS_CASTLE, TWO_ACTOR_PARAMS(-1256, 1500), "MQ Spirit Trial Pot 2", RHT_POT_GANONS_CASTLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GANONS_CASTLE_MQ_SPIRIT_TRIAL_POT_2)); + locationTable[RC_SHADOW_TEMPLE_MQ_WHISPERING_WALLS_POT_1] = Location::Pot(RC_SHADOW_TEMPLE_MQ_WHISPERING_WALLS_POT_1, RCQUEST_MQ, RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(-1045, -130), "MQ Whispering Walls Pot 1", RHT_POT_SHADOW_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_MQ_WHISPERING_WALLS_POT_1)); + locationTable[RC_SHADOW_TEMPLE_MQ_WHISPERING_WALLS_POT_2] = Location::Pot(RC_SHADOW_TEMPLE_MQ_WHISPERING_WALLS_POT_2, RCQUEST_MQ, RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(-1045, -240), "MQ Whispering Walls Pot 2", RHT_POT_SHADOW_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_MQ_WHISPERING_WALLS_POT_2)); + locationTable[RC_SHADOW_TEMPLE_MQ_ENTRANCE_REDEAD_POT_1] = Location::Pot(RC_SHADOW_TEMPLE_MQ_ENTRANCE_REDEAD_POT_1, RCQUEST_MQ, RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(-657, -949), "MQ Entrance Redead Pot 1", RHT_POT_SHADOW_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_MQ_ENTRANCE_REDEAD_POT_1)); + locationTable[RC_SHADOW_TEMPLE_MQ_ENTRANCE_REDEAD_POT_2] = Location::Pot(RC_SHADOW_TEMPLE_MQ_ENTRANCE_REDEAD_POT_2, RCQUEST_MQ, RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(-713, -1016), "MQ Entrance Redead Pot 2", RHT_POT_SHADOW_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_MQ_ENTRANCE_REDEAD_POT_2)); + locationTable[RC_SHADOW_TEMPLE_MQ_LOWER_UMBRELLA_WEST_POT] = Location::Pot(RC_SHADOW_TEMPLE_MQ_LOWER_UMBRELLA_WEST_POT, RCQUEST_MQ, RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(614, 3579), "MQ Lower Umbrella W Pot", RHT_POT_SHADOW_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_MQ_FALLING_SPIKES_POT_1)); + locationTable[RC_SHADOW_TEMPLE_MQ_LOWER_UMBRELLA_EAST_POT] = Location::Pot(RC_SHADOW_TEMPLE_MQ_LOWER_UMBRELLA_EAST_POT, RCQUEST_MQ, RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(798, 3574), "MQ Lower Umbrella E Pot", RHT_POT_SHADOW_TEMPLE, RG_BOMBS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_MQ_FALLING_SPIKES_POT_2)); + locationTable[RC_SHADOW_TEMPLE_MQ_UPPER_UMBRELLA_SOUTH_POT] = Location::Pot(RC_SHADOW_TEMPLE_MQ_UPPER_UMBRELLA_SOUTH_POT, RCQUEST_MQ, RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(1173, 3707), "MQ Upper Umbrella S Pot", RHT_POT_SHADOW_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_MQ_FALLING_SPIKES_POT_3)); + locationTable[RC_SHADOW_TEMPLE_MQ_UPPER_UMBRELLA_NORTH_POT] = Location::Pot(RC_SHADOW_TEMPLE_MQ_UPPER_UMBRELLA_NORTH_POT, RCQUEST_MQ, RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(1173, 3605), "MQ Upper Umbrella N Pot", RHT_POT_SHADOW_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_MQ_FALLING_SPIKES_POT_4)); + locationTable[RC_SHADOW_TEMPLE_MQ_BEFORE_BOAT_POT_1] = Location::Pot(RC_SHADOW_TEMPLE_MQ_BEFORE_BOAT_POT_1, RCQUEST_MQ, RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(4222, -916), "MQ Before Boat Pot 1", RHT_POT_SHADOW_TEMPLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_MQ_BEFORE_BOAT_POT_1)); + locationTable[RC_SHADOW_TEMPLE_MQ_BEFORE_BOAT_POT_2] = Location::Pot(RC_SHADOW_TEMPLE_MQ_BEFORE_BOAT_POT_2, RCQUEST_MQ, RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(4549, -922), "MQ Before Boat Pot 2", RHT_POT_SHADOW_TEMPLE, RG_DEKU_NUTS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_MQ_BEFORE_BOAT_POT_2)); + locationTable[RC_SHADOW_TEMPLE_MQ_BEFORE_CHASM_WEST_POT] = Location::Pot(RC_SHADOW_TEMPLE_MQ_BEFORE_CHASM_WEST_POT, RCQUEST_MQ, RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(-2400, -1470), "MQ Before Chasm W Pot", RHT_POT_SHADOW_TEMPLE, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_MQ_AFTER_BOAT_POT_1)); + locationTable[RC_SHADOW_TEMPLE_MQ_BEFORE_CHASM_EAST_POT] = Location::Pot(RC_SHADOW_TEMPLE_MQ_BEFORE_CHASM_EAST_POT, RCQUEST_MQ, RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(-2230, -1470), "MQ Before Chasm E Pot", RHT_POT_SHADOW_TEMPLE, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_MQ_AFTER_BOAT_POT_2)); + locationTable[RC_SHADOW_TEMPLE_MQ_AFTER_CHASM_WEST_POT] = Location::Pot(RC_SHADOW_TEMPLE_MQ_AFTER_CHASM_WEST_POT, RCQUEST_MQ, RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(-2859, -497), "MQ After Chasm W Pot", RHT_POT_SHADOW_TEMPLE, RG_ARROWS_30, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_MQ_AFTER_BOAT_POT_3)); + locationTable[RC_SHADOW_TEMPLE_MQ_AFTER_CHASM_EAST_POT] = Location::Pot(RC_SHADOW_TEMPLE_MQ_AFTER_CHASM_EAST_POT, RCQUEST_MQ, RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(-2624, -492), "MQ After Chasm E Pot", RHT_POT_SHADOW_TEMPLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_MQ_AFTER_BOAT_POT_4)); + locationTable[RC_SHADOW_TEMPLE_MQ_SPIKE_BARICADE_POT] = Location::Pot(RC_SHADOW_TEMPLE_MQ_SPIKE_BARICADE_POT, RCQUEST_MQ, RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(-4303, -2657), "MQ Spike Baricade Pot", RHT_POT_SHADOW_TEMPLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_MQ_SPIKE_BARICADE_POT)); + locationTable[RC_SHADOW_TEMPLE_MQ_DEAD_HAND_POT_1] = Location::Pot(RC_SHADOW_TEMPLE_MQ_DEAD_HAND_POT_1, RCQUEST_MQ, RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(-4575, -811), "MQ Dead Hand Pot 1", RHT_POT_SHADOW_TEMPLE, RG_BOMBS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_MQ_DEAD_HAND_POT_1)); + locationTable[RC_SHADOW_TEMPLE_MQ_DEAD_HAND_POT_2] = Location::Pot(RC_SHADOW_TEMPLE_MQ_DEAD_HAND_POT_2, RCQUEST_MQ, RCAREA_SHADOW_TEMPLE, SCENE_SHADOW_TEMPLE, TWO_ACTOR_PARAMS(-4036, -811), "MQ Dead Hand Pot 2", RHT_POT_SHADOW_TEMPLE, RG_ARROWS_30, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SHADOW_TEMPLE_MQ_DEAD_HAND_POT_2)); + locationTable[RC_BOTTOM_OF_THE_WELL_MQ_INNER_LOBBY_POT_1] = Location::Pot(RC_BOTTOM_OF_THE_WELL_MQ_INNER_LOBBY_POT_1, RCQUEST_MQ, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(339, -377), "MQ Inner Lobby Pot 1", RHT_POT_BOTTOM_OF_THE_WELL, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_MQ_INNER_LOBBY_POT_1)); + locationTable[RC_BOTTOM_OF_THE_WELL_MQ_INNER_LOBBY_POT_2] = Location::Pot(RC_BOTTOM_OF_THE_WELL_MQ_INNER_LOBBY_POT_2, RCQUEST_MQ, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(416, -377), "MQ Inner Lobby Pot 2", RHT_POT_BOTTOM_OF_THE_WELL, RG_BOMBS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_MQ_INNER_LOBBY_POT_2)); + locationTable[RC_BOTTOM_OF_THE_WELL_MQ_INNER_LOBBY_POT_3] = Location::Pot(RC_BOTTOM_OF_THE_WELL_MQ_INNER_LOBBY_POT_3, RCQUEST_MQ, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(269, -376), "MQ Inner Lobby Pot 3", RHT_POT_BOTTOM_OF_THE_WELL, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_MQ_INNER_LOBBY_POT_3)); + locationTable[RC_BOTTOM_OF_THE_WELL_MQ_OUTER_LOBBY_POT] = Location::Pot(RC_BOTTOM_OF_THE_WELL_MQ_OUTER_LOBBY_POT, RCQUEST_MQ, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(421, -174), "MQ Outer Lobby Pot", RHT_POT_BOTTOM_OF_THE_WELL, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_MQ_OUTER_LOBBY_POT)); + locationTable[RC_BOTTOM_OF_THE_WELL_MQ_EAST_INNER_ROOM_POT_1] = Location::Pot(RC_BOTTOM_OF_THE_WELL_MQ_EAST_INNER_ROOM_POT_1, RCQUEST_MQ, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(288, -1240), "MQ East Inner Pot 1", RHT_POT_BOTTOM_OF_THE_WELL, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_MQ_SOUTH_KEY_POT_1)); + locationTable[RC_BOTTOM_OF_THE_WELL_MQ_EAST_INNER_ROOM_POT_2] = Location::Pot(RC_BOTTOM_OF_THE_WELL_MQ_EAST_INNER_ROOM_POT_2, RCQUEST_MQ, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(438, -1234), "MQ East Inner Pot 2", RHT_POT_BOTTOM_OF_THE_WELL, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_MQ_SOUTH_KEY_POT_2)); + locationTable[RC_BOTTOM_OF_THE_WELL_MQ_EAST_INNER_ROOM_POT_3] = Location::Pot(RC_BOTTOM_OF_THE_WELL_MQ_EAST_INNER_ROOM_POT_3, RCQUEST_MQ, RCAREA_BOTTOM_OF_THE_WELL, SCENE_BOTTOM_OF_THE_WELL, TWO_ACTOR_PARAMS(443, -1114), "MQ East Inner Pot 3", RHT_POT_BOTTOM_OF_THE_WELL, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_BOTTOM_OF_THE_WELL_MQ_SOUTH_KEY_POT_3)); + locationTable[RC_FIRE_TEMPLE_MQ_ENTRANCE_POT_1] = Location::Pot(RC_FIRE_TEMPLE_MQ_ENTRANCE_POT_1, RCQUEST_MQ, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(-357, 957), "MQ Entrance Pot 1", RHT_POT_FIRE_TEMPLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_MQ_ENTRANCE_POT_1)); + locationTable[RC_FIRE_TEMPLE_MQ_ENTRANCE_POT_2] = Location::Pot(RC_FIRE_TEMPLE_MQ_ENTRANCE_POT_2, RCQUEST_MQ, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(356, 959), "MQ Entrance Pot 2", RHT_POT_FIRE_TEMPLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_MQ_ENTRANCE_POT_2)); + locationTable[RC_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_1] = Location::Pot(RC_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_1, RCQUEST_MQ, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(187, -1449), "MQ Before Mini Boss Pot 1", RHT_POT_FIRE_TEMPLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_1)); + locationTable[RC_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_2] = Location::Pot(RC_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_2, RCQUEST_MQ, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(188, -1514), "MQ Before Mini Boss Pot 2", RHT_POT_FIRE_TEMPLE, RG_BOMBS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_2)); + locationTable[RC_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_3] = Location::Pot(RC_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_3, RCQUEST_MQ, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(487, -1450), "MQ Before Mini Boss Pot 3", RHT_POT_FIRE_TEMPLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_3)); + locationTable[RC_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_4] = Location::Pot(RC_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_4, RCQUEST_MQ, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(486, -1515), "MQ Before Mini Boss Pot 4", RHT_POT_FIRE_TEMPLE, RG_BOMBS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_4)); + locationTable[RC_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_5] = Location::Pot(RC_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_5, RCQUEST_MQ, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(38, -1179), "MQ Before Mini Boss Pot 5", RHT_POT_FIRE_TEMPLE, RG_BOMBS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_5)); + locationTable[RC_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_6] = Location::Pot(RC_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_6, RCQUEST_MQ, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(42, -1298), "MQ Before Mini Boss Pot 6", RHT_POT_FIRE_TEMPLE, RG_BOMBS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_6)); + locationTable[RC_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_7] = Location::Pot(RC_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_7, RCQUEST_MQ, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(520, -943), "MQ Before Mini Boss Pot 7", RHT_POT_FIRE_TEMPLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_7)); + locationTable[RC_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_8] = Location::Pot(RC_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_8, RCQUEST_MQ, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(35, -946), "MQ Before Mini Boss Pot 8", RHT_POT_FIRE_TEMPLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_MQ_BEFORE_MINI_BOSS_POT_8)); + locationTable[RC_FIRE_TEMPLE_MQ_OUTSIDE_BOSS_POT_1] = Location::Pot(RC_FIRE_TEMPLE_MQ_OUTSIDE_BOSS_POT_1, RCQUEST_MQ, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(-1426, -711), "MQ Outside Boss Pot 1", RHT_POT_FIRE_TEMPLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_MQ_OUTSIDE_BOSS_POT_1)); + locationTable[RC_FIRE_TEMPLE_MQ_OUTSIDE_BOSS_POT_2] = Location::Pot(RC_FIRE_TEMPLE_MQ_OUTSIDE_BOSS_POT_2, RCQUEST_MQ, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(-1425, -660), "MQ Outside Boss Pot 2", RHT_POT_FIRE_TEMPLE, RG_ARROWS_30, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_MQ_OUTSIDE_BOSS_POT_2)); + locationTable[RC_FIRE_TEMPLE_MQ_LAVA_ROOM_NORTH_POT] = Location::Pot(RC_FIRE_TEMPLE_MQ_LAVA_ROOM_NORTH_POT, RCQUEST_MQ, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(1646, -1260), "MQ Lava Room North Pot", RHT_POT_FIRE_TEMPLE, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_MQ_LAVA_POT_1)); + locationTable[RC_FIRE_TEMPLE_MQ_LAVA_ROOM_HIGH_POT] = Location::Pot(RC_FIRE_TEMPLE_MQ_LAVA_ROOM_HIGH_POT, RCQUEST_MQ, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(2226, -809), "MQ Lava Room High Pot", RHT_POT_FIRE_TEMPLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_MQ_LAVA_POT_2)); + locationTable[RC_FIRE_TEMPLE_MQ_LAVA_ROOM_SOUTH_POT] = Location::Pot(RC_FIRE_TEMPLE_MQ_LAVA_ROOM_SOUTH_POT, RCQUEST_MQ, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(1634, 1475), "MQ Lava Room South Pot", RHT_POT_FIRE_TEMPLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_MQ_LAVA_POT_3)); + locationTable[RC_FIRE_TEMPLE_MQ_LAVA_TORCH_POT_1] = Location::Pot(RC_FIRE_TEMPLE_MQ_LAVA_TORCH_POT_1, RCQUEST_MQ, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(845, -1591), "MQ Lava Torch Pot 1", RHT_POT_FIRE_TEMPLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_MQ_LAVA_TORCH_POT_1)); + locationTable[RC_FIRE_TEMPLE_MQ_LAVA_TORCH_POT_2] = Location::Pot(RC_FIRE_TEMPLE_MQ_LAVA_TORCH_POT_2, RCQUEST_MQ, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(901, -1593), "MQ Lava Torch Pot 2", RHT_POT_FIRE_TEMPLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_MQ_LAVA_TORCH_POT_2)); + locationTable[RC_FIRE_TEMPLE_MQ_ABOVE_LAVA_POT_1] = Location::Pot(RC_FIRE_TEMPLE_MQ_ABOVE_LAVA_POT_1, RCQUEST_MQ, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(1756, -155), "MQ Above Lava Pot 1", RHT_POT_FIRE_TEMPLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_MQ_ABOVE_LAVA_POT_1)); + locationTable[RC_FIRE_TEMPLE_MQ_ABOVE_LAVA_POT_2] = Location::Pot(RC_FIRE_TEMPLE_MQ_ABOVE_LAVA_POT_2, RCQUEST_MQ, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(1819, -82), "MQ Above Lava Pot 2", RHT_POT_FIRE_TEMPLE, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_MQ_ABOVE_LAVA_POT_2)); + locationTable[RC_FIRE_TEMPLE_MQ_ABOVE_LAVA_POT_3] = Location::Pot(RC_FIRE_TEMPLE_MQ_ABOVE_LAVA_POT_3, RCQUEST_MQ, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(1789, -122), "MQ Above Lava Pot 3", RHT_POT_FIRE_TEMPLE, RG_BOMBS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_MQ_ABOVE_LAVA_POT_3)); + locationTable[RC_FIRE_TEMPLE_MQ_FLAME_WALL_POT_1] = Location::Pot(RC_FIRE_TEMPLE_MQ_FLAME_WALL_POT_1, RCQUEST_MQ, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(1493, 386), "MQ Flame Wall Pot 1", RHT_POT_FIRE_TEMPLE, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_MQ_FLAME_WALL_POT_1)); + locationTable[RC_FIRE_TEMPLE_MQ_FLAME_WALL_POT_2] = Location::Pot(RC_FIRE_TEMPLE_MQ_FLAME_WALL_POT_2, RCQUEST_MQ, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(1445, 445), "MQ Flame Wall Pot 2", RHT_POT_FIRE_TEMPLE, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_MQ_FLAME_WALL_POT_2)); + locationTable[RC_FIRE_TEMPLE_MQ_PAST_FIRE_MAZE_SOUTH_POT] = Location::Pot(RC_FIRE_TEMPLE_MQ_PAST_FIRE_MAZE_SOUTH_POT, RCQUEST_MQ, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(-2217, -163), "MQ Past Fire Maze North Pot", RHT_POT_FIRE_TEMPLE, RG_BOMBS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_MQ_FIRE_MAZE_POT_1)); + locationTable[RC_FIRE_TEMPLE_MQ_PAST_FIRE_MAZE_NORTH_POT] = Location::Pot(RC_FIRE_TEMPLE_MQ_PAST_FIRE_MAZE_NORTH_POT, RCQUEST_MQ, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(-2657, -591), "MQ Past Fire Maze South Pot", RHT_POT_FIRE_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_MQ_FIRE_MAZE_POT_2)); + locationTable[RC_FIRE_TEMPLE_MQ_FIRE_MAZE_NORTHMOST_POT] = Location::Pot(RC_FIRE_TEMPLE_MQ_FIRE_MAZE_NORTHMOST_POT, RCQUEST_MQ, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(-1849, -1114), "MQ Fire Maze Northmost Pot", RHT_POT_FIRE_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_MQ_FIRE_MAZE_POT_3)); + locationTable[RC_FIRE_TEMPLE_MQ_FIRE_MAZE_NORTHWEST_POT] = Location::Pot(RC_FIRE_TEMPLE_MQ_FIRE_MAZE_NORTHWEST_POT, RCQUEST_MQ, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(-2110, -646), "MQ Fire Maze North West Pot", RHT_POT_FIRE_TEMPLE, RG_BOMBS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_MQ_FIRE_MAZE_POT_4)); + locationTable[RC_FIRE_TEMPLE_MQ_SOUTH_FIRE_MAZE_WEST_POT] = Location::Pot(RC_FIRE_TEMPLE_MQ_SOUTH_FIRE_MAZE_WEST_POT, RCQUEST_MQ, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(-2319, 838), "MQ South Fire Maze W Pot", RHT_POT_FIRE_TEMPLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_MQ_FIRE_MAZE_POT_5)); + locationTable[RC_FIRE_TEMPLE_MQ_SOUTH_FIRE_MAZE_EAST_POT] = Location::Pot(RC_FIRE_TEMPLE_MQ_SOUTH_FIRE_MAZE_EAST_POT, RCQUEST_MQ, RCAREA_FIRE_TEMPLE, SCENE_FIRE_TEMPLE, TWO_ACTOR_PARAMS(-2285, 803), "MQ South Fire Maze E Pot", RHT_POT_FIRE_TEMPLE, RG_BOMBS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_FIRE_TEMPLE_MQ_FIRE_MAZE_POT_6)); + locationTable[RC_ICE_CAVERN_MQ_ENTRANCE_POT] = Location::Pot(RC_ICE_CAVERN_MQ_ENTRANCE_POT, RCQUEST_MQ, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(248, 2287), "MQ Entrance Pot", RHT_POT_ICE_CAVERN, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_MQ_ENTRANCE_POT)); + locationTable[RC_ICE_CAVERN_MQ_FIRST_CRYSTAL_POT_1] = Location::Pot(RC_ICE_CAVERN_MQ_FIRST_CRYSTAL_POT_1, RCQUEST_MQ, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(51, 718), "MQ First Crystal Pot 1", RHT_POT_ICE_CAVERN, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_MQ_FIRST_CRYSTAL_POT_1)); + locationTable[RC_ICE_CAVERN_MQ_FIRST_CRYSTAL_POT_2] = Location::Pot(RC_ICE_CAVERN_MQ_FIRST_CRYSTAL_POT_2, RCQUEST_MQ, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(52, 768), "MQ First Crystal Pot 2", RHT_POT_ICE_CAVERN, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_MQ_FIRST_CRYSTAL_POT_2)); + locationTable[RC_ICE_CAVERN_MQ_EARLY_WOLFOS_POT_1] = Location::Pot(RC_ICE_CAVERN_MQ_EARLY_WOLFOS_POT_1, RCQUEST_MQ, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(433, -732), "MQ Early Wolfos Pot 1", RHT_POT_ICE_CAVERN, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_MQ_EARLY_WOLFOS_POT_1)); + locationTable[RC_ICE_CAVERN_MQ_EARLY_WOLFOS_POT_2] = Location::Pot(RC_ICE_CAVERN_MQ_EARLY_WOLFOS_POT_2, RCQUEST_MQ, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(569, -175), "MQ Early Wolfos Pot 2", RHT_POT_ICE_CAVERN, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_MQ_EARLY_WOLFOS_POT_2)); + locationTable[RC_ICE_CAVERN_MQ_EARLY_WOLFOS_POT_3] = Location::Pot(RC_ICE_CAVERN_MQ_EARLY_WOLFOS_POT_3, RCQUEST_MQ, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(521, -131), "MQ Early Wolfos Pot 3", RHT_POT_ICE_CAVERN, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_MQ_EARLY_WOLFOS_POT_3)); + locationTable[RC_ICE_CAVERN_MQ_EARLY_WOLFOS_POT_4] = Location::Pot(RC_ICE_CAVERN_MQ_EARLY_WOLFOS_POT_4, RCQUEST_MQ, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(138, -672), "MQ Early Wolfos Pot 4", RHT_POT_ICE_CAVERN, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_MQ_EARLY_WOLFOS_POT_4)); + locationTable[RC_ICE_CAVERN_MQ_PUSH_BLOCK_POT_1] = Location::Pot(RC_ICE_CAVERN_MQ_PUSH_BLOCK_POT_1, RCQUEST_MQ, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(-1352, 639), "MQ Push Block Pot 1", RHT_POT_ICE_CAVERN, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_MQ_PUSH_BLOCK_POT_1)); + locationTable[RC_ICE_CAVERN_MQ_PUSH_BLOCK_POT_2] = Location::Pot(RC_ICE_CAVERN_MQ_PUSH_BLOCK_POT_2, RCQUEST_MQ, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(-1396, 596), "MQ Push Block Pot 2", RHT_POT_ICE_CAVERN, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_MQ_PUSH_BLOCK_POT_2)); + locationTable[RC_ICE_CAVERN_MQ_COMPASS_POT_1] = Location::Pot(RC_ICE_CAVERN_MQ_COMPASS_POT_1, RCQUEST_MQ, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(902, -2720), "MQ Compass Pot 1", RHT_POT_ICE_CAVERN, RG_BOMBS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_MQ_COMPASS_POT_1)); + locationTable[RC_ICE_CAVERN_MQ_COMPASS_POT_2] = Location::Pot(RC_ICE_CAVERN_MQ_COMPASS_POT_2, RCQUEST_MQ, RCAREA_ICE_CAVERN, SCENE_ICE_CAVERN, TWO_ACTOR_PARAMS(451, -2726), "MQ Compass Pot 2", RHT_POT_ICE_CAVERN, RG_BOMBS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_ICE_CAVERN_MQ_COMPASS_POT_2)); + locationTable[RC_SPIRIT_TEMPLE_MQ_ENTRANCE_POT_1] = Location::Pot(RC_SPIRIT_TEMPLE_MQ_ENTRANCE_POT_1, RCQUEST_MQ, RCAREA_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(-255, 742), "MQ Entrance Pot 1", RHT_POT_SPIRIT_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_MQ_ENTRANCE_POT_1)); + locationTable[RC_SPIRIT_TEMPLE_MQ_ENTRANCE_POT_2] = Location::Pot(RC_SPIRIT_TEMPLE_MQ_ENTRANCE_POT_2, RCQUEST_MQ, RCAREA_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(306, 682), "MQ Entrance Pot 2", RHT_POT_SPIRIT_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_MQ_ENTRANCE_POT_2)); + locationTable[RC_SPIRIT_TEMPLE_MQ_ENTRANCE_POT_3] = Location::Pot(RC_SPIRIT_TEMPLE_MQ_ENTRANCE_POT_3, RCQUEST_MQ, RCAREA_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(-297, 687), "MQ Entrance Pot 3", RHT_POT_SPIRIT_TEMPLE, RG_BOMBS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_MQ_ENTRANCE_POT_3)); + locationTable[RC_SPIRIT_TEMPLE_MQ_ENTRANCE_POT_4] = Location::Pot(RC_SPIRIT_TEMPLE_MQ_ENTRANCE_POT_4, RCQUEST_MQ, RCAREA_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(260, 735), "MQ Entrance Pot 4", RHT_POT_SPIRIT_TEMPLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_MQ_ENTRANCE_POT_4)); + locationTable[RC_SPIRIT_TEMPLE_MQ_CHILD_SLUGMA_POT] = Location::Pot(RC_SPIRIT_TEMPLE_MQ_CHILD_SLUGMA_POT, RCQUEST_MQ, RCAREA_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(-894, -50), "MQ Child Slugma Pot", RHT_POT_SPIRIT_TEMPLE, RG_BOMBS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_MQ_CHILD_SLUGMA_POT)); + locationTable[RC_SPIRIT_TEMPLE_MQ_CHILD_GIBDO_POT_1] = Location::Pot(RC_SPIRIT_TEMPLE_MQ_CHILD_GIBDO_POT_1, RCQUEST_MQ, RCAREA_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(-382, -1256), "MQ Child Gibdo Pot 1", RHT_POT_SPIRIT_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_MQ_CHILD_GIBDO_POT_1)); + locationTable[RC_SPIRIT_TEMPLE_MQ_CHILD_GIBDO_POT_2] = Location::Pot(RC_SPIRIT_TEMPLE_MQ_CHILD_GIBDO_POT_2, RCQUEST_MQ, RCAREA_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(-381, -1207), "MQ Child Gibdo Pot 2", RHT_POT_SPIRIT_TEMPLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_MQ_CHILD_GIBDO_POT_2)); + locationTable[RC_SPIRIT_TEMPLE_MQ_CHILD_LIKE_LIKE_POT] = Location::Pot(RC_SPIRIT_TEMPLE_MQ_CHILD_LIKE_LIKE_POT, RCQUEST_MQ, RCAREA_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(-1035, -1240), "MQ Child Like Like Pot", RHT_POT_SPIRIT_TEMPLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_MQ_CHILD_LIKE_LIKE_POT)); + locationTable[RC_SPIRIT_TEMPLE_MQ_CHILD_STALFOS_POT_1] = Location::Pot(RC_SPIRIT_TEMPLE_MQ_CHILD_STALFOS_POT_1, RCQUEST_MQ, RCAREA_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(-1166, -1931), "MQ Child Stalfos Pot 1", RHT_POT_SPIRIT_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_MQ_CHILD_STALFOS_POT_1)); + locationTable[RC_SPIRIT_TEMPLE_MQ_CHILD_STALFOS_POT_2] = Location::Pot(RC_SPIRIT_TEMPLE_MQ_CHILD_STALFOS_POT_2, RCQUEST_MQ, RCAREA_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(-959, -1930), "MQ Child Stalfos Pot 2", RHT_POT_SPIRIT_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_MQ_CHILD_STALFOS_POT_2)); + locationTable[RC_SPIRIT_TEMPLE_MQ_CHILD_STALFOS_POT_3] = Location::Pot(RC_SPIRIT_TEMPLE_MQ_CHILD_STALFOS_POT_3, RCQUEST_MQ, RCAREA_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(-853, -1837), "MQ Child Stalfos Pot 3", RHT_POT_SPIRIT_TEMPLE, RG_DEKU_SEEDS_30, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_MQ_CHILD_STALFOS_POT_3)); + locationTable[RC_SPIRIT_TEMPLE_MQ_CHILD_STALFOS_POT_4] = Location::Pot(RC_SPIRIT_TEMPLE_MQ_CHILD_STALFOS_POT_4, RCQUEST_MQ, RCAREA_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(-1250, -1852), "MQ Child Stalfos Pot 4", RHT_POT_SPIRIT_TEMPLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_MQ_CHILD_STALFOS_POT_4)); + locationTable[RC_SPIRIT_TEMPLE_MQ_STATUE_2F_CENTER_EAST_POT] = Location::Pot(RC_SPIRIT_TEMPLE_MQ_STATUE_2F_CENTER_EAST_POT, RCQUEST_MQ, RCAREA_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(639, -1224), "MQ Statue Room 2F CE Pot", RHT_POT_SPIRIT_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_MQ_CENTRAL_CHAMBER_POT_1)); + locationTable[RC_SPIRIT_TEMPLE_MQ_STATUE_3F_EAST_POT] = Location::Pot(RC_SPIRIT_TEMPLE_MQ_STATUE_3F_EAST_POT, RCQUEST_MQ, RCAREA_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(-521, -1576), "MQ Statue Room 3F E Pot", RHT_POT_SPIRIT_TEMPLE, RG_ARROWS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_MQ_CENTRAL_CHAMBER_POT_2)); + locationTable[RC_SPIRIT_TEMPLE_MQ_STATUE_3F_WEST_POT] = Location::Pot(RC_SPIRIT_TEMPLE_MQ_STATUE_3F_WEST_POT, RCQUEST_MQ, RCAREA_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(-595, -1576), "MQ Statue Room 3F W Pot", RHT_POT_SPIRIT_TEMPLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_MQ_CENTRAL_CHAMBER_POT_3)); + locationTable[RC_SPIRIT_TEMPLE_MQ_STATUE_2F_WEST_POT] = Location::Pot(RC_SPIRIT_TEMPLE_MQ_STATUE_2F_WEST_POT, RCQUEST_MQ, RCAREA_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(-559, -1209), "MQ Statue Room 2F W Pot", RHT_POT_SPIRIT_TEMPLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_MQ_CENTRAL_CHAMBER_POT_4)); + locationTable[RC_SPIRIT_TEMPLE_MQ_STATUE_2F_EASTMOST_POT] = Location::Pot(RC_SPIRIT_TEMPLE_MQ_STATUE_2F_EASTMOST_POT, RCQUEST_MQ, RCAREA_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(704, -1224), "MQ Statue Room 2F E Pot", RHT_POT_SPIRIT_TEMPLE, RG_DEKU_SEEDS_30, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_MQ_CENTRAL_CHAMBER_POT_5)); + locationTable[RC_SPIRIT_TEMPLE_MQ_SUN_BLOCKS_POT_1] = Location::Pot(RC_SPIRIT_TEMPLE_MQ_SUN_BLOCKS_POT_1, RCQUEST_MQ, RCAREA_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(-1276, 432), "MQ Sun Blocks Pot 1", RHT_POT_SPIRIT_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_MQ_SUN_BLOCKS_POT_1)); + locationTable[RC_SPIRIT_TEMPLE_MQ_SUN_BLOCKS_POT_2] = Location::Pot(RC_SPIRIT_TEMPLE_MQ_SUN_BLOCKS_POT_2, RCQUEST_MQ, RCAREA_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(-1635, -446), "MQ Sun Blocks Pot 2", RHT_POT_SPIRIT_TEMPLE, RG_DEKU_SEEDS_30, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_MQ_SUN_BLOCKS_POT_2)); + locationTable[RC_SPIRIT_TEMPLE_MQ_LONG_CLIMB_POT_1] = Location::Pot(RC_SPIRIT_TEMPLE_MQ_LONG_CLIMB_POT_1, RCQUEST_MQ, RCAREA_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(829, 250), "MQ Long Climb Pot 1", RHT_POT_SPIRIT_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_MQ_LONG_CLIMB_POT_1)); + locationTable[RC_SPIRIT_TEMPLE_MQ_LONG_CLIMB_POT_2] = Location::Pot(RC_SPIRIT_TEMPLE_MQ_LONG_CLIMB_POT_2, RCQUEST_MQ, RCAREA_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(531, 249), "MQ Long Climb Pot 2", RHT_POT_SPIRIT_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_MQ_LONG_CLIMB_POT_2)); + locationTable[RC_SPIRIT_TEMPLE_MQ_BIG_MIRROR_POT_1] = Location::Pot(RC_SPIRIT_TEMPLE_MQ_BIG_MIRROR_POT_1, RCQUEST_MQ, RCAREA_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(244, -893), "MQ Big Mirror Pot 1", RHT_POT_SPIRIT_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_MQ_BIG_MIRROR_POT_1)); + locationTable[RC_SPIRIT_TEMPLE_MQ_BIG_MIRROR_POT_2] = Location::Pot(RC_SPIRIT_TEMPLE_MQ_BIG_MIRROR_POT_2, RCQUEST_MQ, RCAREA_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(-122, -741), "MQ Big Mirror Pot 2", RHT_POT_SPIRIT_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_MQ_BIG_MIRROR_POT_2)); + locationTable[RC_SPIRIT_TEMPLE_MQ_BIG_MIRROR_POT_3] = Location::Pot(RC_SPIRIT_TEMPLE_MQ_BIG_MIRROR_POT_3, RCQUEST_MQ, RCAREA_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(250, -741), "MQ Big Mirror Pot 3", RHT_POT_SPIRIT_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_MQ_BIG_MIRROR_POT_3)); + locationTable[RC_SPIRIT_TEMPLE_MQ_BIG_MIRROR_POT_4] = Location::Pot(RC_SPIRIT_TEMPLE_MQ_BIG_MIRROR_POT_4, RCQUEST_MQ, RCAREA_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(-123, -892), "MQ Big Mirror Pot 4", RHT_POT_SPIRIT_TEMPLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_MQ_BIG_MIRROR_POT_4)); + locationTable[RC_SPIRIT_TEMPLE_MQ_BEFORE_MIRROR_POT_1] = Location::Pot(RC_SPIRIT_TEMPLE_MQ_BEFORE_MIRROR_POT_1, RCQUEST_MQ, RCAREA_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(781, -841), "MQ Before Mirror Pot 1", RHT_POT_SPIRIT_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_MQ_BEFORE_MIRROR_POT_1)); + locationTable[RC_SPIRIT_TEMPLE_MQ_BEFORE_MIRROR_POT_2] = Location::Pot(RC_SPIRIT_TEMPLE_MQ_BEFORE_MIRROR_POT_2, RCQUEST_MQ, RCAREA_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(587, -844), "MQ Before Mirror Pot 2", RHT_POT_SPIRIT_TEMPLE, RG_BOMBS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_MQ_BEFORE_MIRROR_POT_2)); + locationTable[RC_SPIRIT_TEMPLE_MQ_EARLY_ADULT_POT_1] = Location::Pot(RC_SPIRIT_TEMPLE_MQ_EARLY_ADULT_POT_1, RCQUEST_MQ, RCAREA_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(1204, -910), "MQ Early Adult Pot 1", RHT_POT_SPIRIT_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_MQ_EARLY_ADULT_POT_1)); + locationTable[RC_SPIRIT_TEMPLE_MQ_EARLY_ADULT_POT_2] = Location::Pot(RC_SPIRIT_TEMPLE_MQ_EARLY_ADULT_POT_2, RCQUEST_MQ, RCAREA_SPIRIT_TEMPLE, SCENE_SPIRIT_TEMPLE, TWO_ACTOR_PARAMS(1204, -1028), "MQ Early Adult Pot 2", RHT_POT_SPIRIT_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_SPIRIT_TEMPLE_MQ_EARLY_ADULT_POT_2)); + locationTable[RC_WATER_TEMPLE_MQ_LOWER_TORCHES_POT_1] = Location::Pot(RC_WATER_TEMPLE_MQ_LOWER_TORCHES_POT_1, RCQUEST_MQ, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(1123, 62), "MQ Lower Torches Pot 1", RHT_POT_WATER_TEMPLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_MQ_LOWER_TORCHES_POT_1)); + locationTable[RC_WATER_TEMPLE_MQ_LOWER_TORCHES_POT_2] = Location::Pot(RC_WATER_TEMPLE_MQ_LOWER_TORCHES_POT_2, RCQUEST_MQ, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(1123, 293), "MQ Lower Torches Pot 2", RHT_POT_WATER_TEMPLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_MQ_LOWER_TORCHES_POT_2)); + locationTable[RC_WATER_TEMPLE_MQ_STORAGE_ROOM_A_POT_1] = Location::Pot(RC_WATER_TEMPLE_MQ_STORAGE_ROOM_A_POT_1, RCQUEST_MQ, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(1222, -617), "MQ Storage Room A Pot 1", RHT_POT_WATER_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_MQ_STORAGE_ROOM_A_POT_1)); + locationTable[RC_WATER_TEMPLE_MQ_STORAGE_ROOM_A_POT_2] = Location::Pot(RC_WATER_TEMPLE_MQ_STORAGE_ROOM_A_POT_2, RCQUEST_MQ, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(1122, -617), "MQ Storage Room A Pot 2", RHT_POT_WATER_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_MQ_STORAGE_ROOM_A_POT_2)); + locationTable[RC_WATER_TEMPLE_MQ_STORAGE_ROOM_A_POT_3] = Location::Pot(RC_WATER_TEMPLE_MQ_STORAGE_ROOM_A_POT_3, RCQUEST_MQ, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(1172, -617), "MQ Storage Room A Pot 3", RHT_POT_WATER_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_MQ_STORAGE_ROOM_A_POT_3)); + locationTable[RC_WATER_TEMPLE_MQ_GS_STORAGE_ROOM_POT_1] = Location::Pot(RC_WATER_TEMPLE_MQ_GS_STORAGE_ROOM_POT_1, RCQUEST_MQ, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(-989, 255), "MQ GS Storage Room Pot 1", RHT_POT_WATER_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_MQ_GS_STORAGE_ROOM_POT_1)); + locationTable[RC_WATER_TEMPLE_MQ_GS_STORAGE_ROOM_POT_2] = Location::Pot(RC_WATER_TEMPLE_MQ_GS_STORAGE_ROOM_POT_2, RCQUEST_MQ, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(-1026, 257), "MQ GS Storage Room Pot 2", RHT_POT_WATER_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_MQ_GS_STORAGE_ROOM_POT_2)); + locationTable[RC_WATER_TEMPLE_MQ_GS_STORAGE_ROOM_POT_3] = Location::Pot(RC_WATER_TEMPLE_MQ_GS_STORAGE_ROOM_POT_3, RCQUEST_MQ, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(-1062, 256), "MQ GS Storage Room Pot 3", RHT_POT_WATER_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_MQ_GS_STORAGE_ROOM_POT_3)); + locationTable[RC_WATER_TEMPLE_MQ_LIZALFOS_HALLWAY_WEST_POT] = Location::Pot(RC_WATER_TEMPLE_MQ_LIZALFOS_HALLWAY_WEST_POT, RCQUEST_MQ, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(512, 579), "MQ Lizalfos Hall W Pot", RHT_POT_WATER_TEMPLE, RG_RED_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_MQ_CENTRAL_GATE_POT_1)); + locationTable[RC_WATER_TEMPLE_MQ_LIZALFOS_HALLWAY_SOUTH_POT] = Location::Pot(RC_WATER_TEMPLE_MQ_LIZALFOS_HALLWAY_SOUTH_POT, RCQUEST_MQ, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(602, 1022), "MQ Lizalfos Hall S Pot", RHT_POT_WATER_TEMPLE, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_MQ_CENTRAL_GATE_POT_2)); + locationTable[RC_WATER_TEMPLE_MQ_LIZALFOS_HALLWAY_SE_POT] = Location::Pot(RC_WATER_TEMPLE_MQ_LIZALFOS_HALLWAY_SE_POT, RCQUEST_MQ, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(789, 947), "MQ Lizalfos Hall SE Pot", RHT_POT_WATER_TEMPLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_MQ_CENTRAL_GATE_POT_3)); + locationTable[RC_WATER_TEMPLE_MQ_LIZALFOS_CAGE_SOUTH_POT] = Location::Pot(RC_WATER_TEMPLE_MQ_LIZALFOS_CAGE_SOUTH_POT, RCQUEST_MQ, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(768, 565), "MQ Lizalfos Cage N Pot", RHT_POT_WATER_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_MQ_CENTRAL_GATE_POT_4)); + locationTable[RC_WATER_TEMPLE_MQ_LIZALFOS_CAGE_NORTH_POT] = Location::Pot(RC_WATER_TEMPLE_MQ_LIZALFOS_CAGE_NORTH_POT, RCQUEST_MQ, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(767, 517), "MQ Lizalfos Cage S Pot", RHT_POT_WATER_TEMPLE, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_MQ_CENTRAL_GATE_POT_5)); + locationTable[RC_WATER_TEMPLE_MQ_STALFOS_PIT_MIDDLE_POT] = Location::Pot(RC_WATER_TEMPLE_MQ_STALFOS_PIT_MIDDLE_POT, RCQUEST_MQ, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(-3500, -751), "MQ Stalfos Pit Middle Pot", RHT_POT_WATER_TEMPLE, RG_DEKU_NUTS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_MQ_BEFORE_DARK_LINK_POT_3)); + locationTable[RC_WATER_TEMPLE_MQ_STALFOS_PIT_SOUTH_POT] = Location::Pot(RC_WATER_TEMPLE_MQ_STALFOS_PIT_SOUTH_POT, RCQUEST_MQ, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(-3500, -686), "MQ Stalfos Pit South Pot", RHT_POT_WATER_TEMPLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_MQ_BEFORE_DARK_LINK_POT_4)); + locationTable[RC_WATER_TEMPLE_MQ_STALFOS_PIT_NORTH_POT] = Location::Pot(RC_WATER_TEMPLE_MQ_STALFOS_PIT_NORTH_POT, RCQUEST_MQ, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(-3500, -810), "MQ Stalfos Pit North Pot", RHT_POT_WATER_TEMPLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_MQ_BEFORE_DARK_LINK_POT_5)); + locationTable[RC_WATER_TEMPLE_MQ_BEFORE_DARK_LINK_POT_1] = Location::Pot(RC_WATER_TEMPLE_MQ_BEFORE_DARK_LINK_POT_1, RCQUEST_MQ, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(-3188, -1628), "MQ Before Dark Link Pot 1", RHT_POT_WATER_TEMPLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_MQ_BEFORE_DARK_LINK_POT_1)); + locationTable[RC_WATER_TEMPLE_MQ_BEFORE_DARK_LINK_POT_2] = Location::Pot(RC_WATER_TEMPLE_MQ_BEFORE_DARK_LINK_POT_2, RCQUEST_MQ, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(-3056, -1626), "MQ Before Dark Link Pot 2", RHT_POT_WATER_TEMPLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_MQ_BEFORE_DARK_LINK_POT_2)); + locationTable[RC_WATER_TEMPLE_MQ_AFTER_DARK_LINK_POT_1] = Location::Pot(RC_WATER_TEMPLE_MQ_AFTER_DARK_LINK_POT_1, RCQUEST_MQ, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(-3072, -4024), "MQ After Dark Link Pot 1", RHT_POT_WATER_TEMPLE, RG_ARROWS_30, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_MQ_AFTER_DARK_LINK_POT_1)); + locationTable[RC_WATER_TEMPLE_MQ_AFTER_DARK_LINK_POT_2] = Location::Pot(RC_WATER_TEMPLE_MQ_AFTER_DARK_LINK_POT_2, RCQUEST_MQ, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(-3169, -4023), "MQ After Dark Link Pot 2", RHT_POT_WATER_TEMPLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_MQ_AFTER_DARK_LINK_POT_2)); + locationTable[RC_WATER_TEMPLE_MQ_RIVER_POT_1] = Location::Pot(RC_WATER_TEMPLE_MQ_RIVER_POT_1, RCQUEST_MQ, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(-2226, -2487), "MQ River Pot 1", RHT_POT_WATER_TEMPLE, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_MQ_RIVER_POT_1)); + locationTable[RC_WATER_TEMPLE_MQ_RIVER_POT_2] = Location::Pot(RC_WATER_TEMPLE_MQ_RIVER_POT_2, RCQUEST_MQ, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(-2184, -2456), "MQ River Pot 2", RHT_POT_WATER_TEMPLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_MQ_RIVER_POT_2)); + locationTable[RC_WATER_TEMPLE_MQ_BOSS_KEY_POT] = Location::Pot(RC_WATER_TEMPLE_MQ_BOSS_KEY_POT, RCQUEST_MQ, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(-1033, -1569), "MQ Boss Key Pot", RHT_POT_WATER_TEMPLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_MQ_BOSS_KEY_POT)); + locationTable[RC_WATER_TEMPLE_MQ_LOWEST_GS_POT_1] = Location::Pot(RC_WATER_TEMPLE_MQ_LOWEST_GS_POT_1, RCQUEST_MQ, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(-2314, 770), "MQ Lowest GS Pot 1", RHT_POT_WATER_TEMPLE, RG_BOMBS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_MQ_LOWEST_GS_POT_1)); + locationTable[RC_WATER_TEMPLE_MQ_LOWEST_GS_POT_2] = Location::Pot(RC_WATER_TEMPLE_MQ_LOWEST_GS_POT_2, RCQUEST_MQ, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(-2314, 808), "MQ Lowest GS Pot 2", RHT_POT_WATER_TEMPLE, RG_BOMBS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_MQ_LOWEST_GS_POT_2)); + locationTable[RC_WATER_TEMPLE_MQ_LOWEST_GS_POT_3] = Location::Pot(RC_WATER_TEMPLE_MQ_LOWEST_GS_POT_3, RCQUEST_MQ, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(-2313, 944), "MQ Lowest GS Pot 3", RHT_POT_WATER_TEMPLE, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_MQ_LOWEST_GS_POT_3)); + locationTable[RC_WATER_TEMPLE_MQ_LOWEST_GS_POT_4] = Location::Pot(RC_WATER_TEMPLE_MQ_LOWEST_GS_POT_4, RCQUEST_MQ, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(-2313, 905), "MQ Lowest GS Pot 4", RHT_POT_WATER_TEMPLE, RG_ARROWS_10, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_MQ_LOWEST_GS_POT_4)); + locationTable[RC_WATER_TEMPLE_MQ_STORAGE_ROOM_B_POT_1] = Location::Pot(RC_WATER_TEMPLE_MQ_STORAGE_ROOM_B_POT_1, RCQUEST_MQ, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(-1417, -3025), "MQ Storage Room B Pot 1", RHT_POT_WATER_TEMPLE, RG_GREEN_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_MQ_STORAGE_ROOM_B_POT_1)); + locationTable[RC_WATER_TEMPLE_MQ_STORAGE_ROOM_B_POT_2] = Location::Pot(RC_WATER_TEMPLE_MQ_STORAGE_ROOM_B_POT_2, RCQUEST_MQ, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(-1150, -3031), "MQ Storage Room B Pot 2", RHT_POT_WATER_TEMPLE, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_MQ_STORAGE_ROOM_B_POT_2)); + locationTable[RC_WATER_TEMPLE_MQ_MINI_DODONGO_POT_1] = Location::Pot(RC_WATER_TEMPLE_MQ_MINI_DODONGO_POT_1, RCQUEST_MQ, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(28, -3817), "MQ Mini Dodongo Pot 1", RHT_POT_WATER_TEMPLE, RG_BOMBS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_MQ_MINI_DODONGO_POT_1)); + locationTable[RC_WATER_TEMPLE_MQ_MINI_DODONGO_POT_2] = Location::Pot(RC_WATER_TEMPLE_MQ_MINI_DODONGO_POT_2, RCQUEST_MQ, RCAREA_WATER_TEMPLE, SCENE_WATER_TEMPLE, TWO_ACTOR_PARAMS(-28, -3817), "MQ Mini Dodongo Pot 2", RHT_POT_WATER_TEMPLE, RG_BOMBS_5, SpoilerCollectionCheck::RandomizerInf(RAND_INF_WATER_TEMPLE_MQ_MINI_DODONGO_POT_2)); + locationTable[RC_GERUDO_TRAINING_GROUND_MQ_LOBBY_LEFT_POT_1] = Location::Pot(RC_GERUDO_TRAINING_GROUND_MQ_LOBBY_LEFT_POT_1, RCQUEST_MQ, RCAREA_GERUDO_TRAINING_GROUND, SCENE_GERUDO_TRAINING_GROUND, TWO_ACTOR_PARAMS(-324, -72), "MQ Lobby Left Pot 1", RHT_POT_GERUDO_TRAINING_GROUND, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GERUDO_TRAINING_GROUND_MQ_LOBBY_LEFT_POT_1)); + locationTable[RC_GERUDO_TRAINING_GROUND_MQ_LOBBY_LEFT_POT_2] = Location::Pot(RC_GERUDO_TRAINING_GROUND_MQ_LOBBY_LEFT_POT_2, RCQUEST_MQ, RCAREA_GERUDO_TRAINING_GROUND, SCENE_GERUDO_TRAINING_GROUND, TWO_ACTOR_PARAMS(-324, -177), "MQ Lobby Left Pot 2", RHT_POT_GERUDO_TRAINING_GROUND, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GERUDO_TRAINING_GROUND_MQ_LOBBY_LEFT_POT_2)); + locationTable[RC_GERUDO_TRAINING_GROUND_MQ_LOBBY_RIGHT_POT_1] = Location::Pot(RC_GERUDO_TRAINING_GROUND_MQ_LOBBY_RIGHT_POT_1, RCQUEST_MQ, RCAREA_GERUDO_TRAINING_GROUND, SCENE_GERUDO_TRAINING_GROUND, TWO_ACTOR_PARAMS(199, -79), "MQ Lobby Right Pot 1", RHT_POT_GERUDO_TRAINING_GROUND, RG_RECOVERY_HEART, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GERUDO_TRAINING_GROUND_MQ_LOBBY_RIGHT_POT_1)); + locationTable[RC_GERUDO_TRAINING_GROUND_MQ_LOBBY_RIGHT_POT_2] = Location::Pot(RC_GERUDO_TRAINING_GROUND_MQ_LOBBY_RIGHT_POT_2, RCQUEST_MQ, RCAREA_GERUDO_TRAINING_GROUND, SCENE_GERUDO_TRAINING_GROUND, TWO_ACTOR_PARAMS(197, -179), "MQ Lobby Right Pot 2", RHT_POT_GERUDO_TRAINING_GROUND, RG_BLUE_RUPEE, SpoilerCollectionCheck::RandomizerInf(RAND_INF_GERUDO_TRAINING_GROUND_MQ_LOBBY_RIGHT_POT_2)); // clang-format on } diff --git a/soh/soh/Enhancements/randomizer/context.cpp b/soh/soh/Enhancements/randomizer/context.cpp index 4127ab21a..fa755325e 100644 --- a/soh/soh/Enhancements/randomizer/context.cpp +++ b/soh/soh/Enhancements/randomizer/context.cpp @@ -180,6 +180,8 @@ void Context::GenerateLocationPool() { location.GetRandomizerCheck() == RC_HF_DEKU_SCRUB_GROTTO)) || (location.GetRCType() == RCTYPE_ADULT_TRADE && mOptions[RSK_SHUFFLE_ADULT_TRADE].Is(RO_GENERIC_OFF)) || (location.GetRCType() == RCTYPE_COW && mOptions[RSK_SHUFFLE_COWS].Is(RO_GENERIC_OFF)) || + (location.GetRandomizerCheck() == RC_LH_HYRULE_LOACH && + mOptions[RSK_FISHSANITY].IsNot(RO_FISHSANITY_HYRULE_LOACH)) || (location.GetRCType() == RCTYPE_FISH && !mFishsanity->GetFishLocationIncluded(&location)) || (location.GetRCType() == RCTYPE_POT && mOptions[RSK_SHUFFLE_POTS].Is(RO_SHUFFLE_POTS_OFF)) || (location.GetRCType() == RCTYPE_GRASS && mOptions[RSK_SHUFFLE_GRASS].Is(RO_SHUFFLE_GRASS_OFF)) || diff --git a/soh/soh/Enhancements/randomizer/fishsanity.cpp b/soh/soh/Enhancements/randomizer/fishsanity.cpp index 8d4435f9a..99636d1a4 100644 --- a/soh/soh/Enhancements/randomizer/fishsanity.cpp +++ b/soh/soh/Enhancements/randomizer/fishsanity.cpp @@ -74,13 +74,10 @@ Fishsanity::~Fishsanity() { bool Fishsanity::GetFishLocationIncluded(Rando::Location* loc, FishsanityOptionsSource optionsSource) { auto [mode, numFish, ageSplit] = GetOptions(optionsSource); - if (loc->GetRCType() != RCTYPE_FISH || mode == RO_FISHSANITY_OFF) { + if (loc->GetRCType() != RCTYPE_FISH || mode == RO_FISHSANITY_OFF || mode == RO_FISHSANITY_HYRULE_LOACH) { return false; } RandomizerCheck rc = loc->GetRandomizerCheck(); - if (mode == RO_FISHSANITY_HYRULE_LOACH && rc != RC_LH_HYRULE_LOACH) { - return false; - } // Are pond fish enabled, and is this a pond fish location? if (mode != RO_FISHSANITY_OVERWORLD && numFish > 0 && loc->GetScene() == SCENE_FISHING_POND && loc->GetActorID() == ACTOR_FISHING) { diff --git a/soh/soh/Enhancements/randomizer/hook_handlers.cpp b/soh/soh/Enhancements/randomizer/hook_handlers.cpp index a10e8b67f..bd267aebe 100644 --- a/soh/soh/Enhancements/randomizer/hook_handlers.cpp +++ b/soh/soh/Enhancements/randomizer/hook_handlers.cpp @@ -245,10 +245,6 @@ void RandomizerOnFlagSetHandler(int16_t flagType, int16_t flag) { Flags_SetRandomizerInf(RAND_INF_ZELDAS_LETTER); } - if (flagType == FLAG_EVENT_CHECK_INF && flag == EVENTCHKINF_OBTAINED_POCKET_EGG) { - Flags_SetRandomizerInf(RAND_INF_WEIRD_EGG); - } - RandomizerCheck rc = GetRandomizerCheckFromFlag(flagType, flag); if (rc == RC_UNKNOWN_CHECK) return; @@ -1765,10 +1761,6 @@ void RandomizerOnSceneInitHandler(int16_t sceneNum) { // Handle updated link spawn positions Entrance_OverrideSpawnScene(sceneNum, gPlayState->curSpawn); - - Entrance_OverrideWeatherState(); - // Need to reinitialize the environment after replacing the weather mode - Play_InitEnvironment(gPlayState, gPlayState->skyboxId); } // LACs & Prelude checks @@ -1807,6 +1799,13 @@ void RandomizerOnSceneInitHandler(int16_t sceneNum) { }); } +void RandomizerAfterSceneCommandsHandler(int16_t sceneNum) { + // ENTRTODO: Move all entrance rando handling to a dedicated file + if (RAND_GET_OPTION(RSK_SHUFFLE_ENTRANCES)) { + Entrance_OverrideWeatherState(); + } +} + void EnSi_DrawRandomizedItem(EnSi* enSi, PlayState* play) { GetItemEntry randoItem = enSi->sohGetItemEntry; if (CVarGetInteger(CVAR_RANDOMIZER_ENHANCEMENT("MysteriousShuffle"), 0)) { @@ -2362,6 +2361,7 @@ void RandomizerRegisterHooks() { static uint32_t onDialogMessageHook = 0; static uint32_t onVanillaBehaviorHook = 0; static uint32_t onSceneInitHook = 0; + static uint32_t afterSceneCommandsHook = 0; static uint32_t onActorInitHook = 0; static uint32_t onActorUpdateHook = 0; static uint32_t onPlayerUpdateHook = 0; @@ -2398,6 +2398,7 @@ void RandomizerRegisterHooks() { GameInteractor::Instance->UnregisterGameHook(onDialogMessageHook); GameInteractor::Instance->UnregisterGameHook(onVanillaBehaviorHook); GameInteractor::Instance->UnregisterGameHook(onSceneInitHook); + GameInteractor::Instance->UnregisterGameHook(afterSceneCommandsHook); GameInteractor::Instance->UnregisterGameHook(onActorInitHook); GameInteractor::Instance->UnregisterGameHook(onActorUpdateHook); GameInteractor::Instance->UnregisterGameHook(onPlayerUpdateHook); @@ -2430,6 +2431,7 @@ void RandomizerRegisterHooks() { onDialogMessageHook = 0; onVanillaBehaviorHook = 0; onSceneInitHook = 0; + afterSceneCommandsHook = 0; onActorInitHook = 0; onActorUpdateHook = 0; onPlayerUpdateHook = 0; @@ -2481,6 +2483,8 @@ void RandomizerRegisterHooks() { RandomizerOnVanillaBehaviorHandler); onSceneInitHook = GameInteractor::Instance->RegisterGameHook(RandomizerOnSceneInitHandler); + afterSceneCommandsHook = GameInteractor::Instance->RegisterGameHook( + RandomizerAfterSceneCommandsHandler); onActorInitHook = GameInteractor::Instance->RegisterGameHook(RandomizerOnActorInitHandler); onActorUpdateHook = diff --git a/soh/soh/Enhancements/randomizer/item_list.cpp b/soh/soh/Enhancements/randomizer/item_list.cpp index e8198737c..64d6a726c 100644 --- a/soh/soh/Enhancements/randomizer/item_list.cpp +++ b/soh/soh/Enhancements/randomizer/item_list.cpp @@ -354,7 +354,7 @@ void Rando::StaticData::InitItemTable() { itemTable[RG_BOMBCHU_BAG] = Item(RG_BOMBCHU_BAG, Text{ "Bombchu Bag", "Sac de Missiles Teigneux", "Krabbelminentasche" }, ITEMTYPE_ITEM, RG_BOMBCHU_BAG, true, LOGIC_BOMBCHUS, RHT_BOMBCHU_BAG, RG_BOMBCHU_BAG, OBJECT_GI_BOMB_2, GID_BOMBCHU, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_MAJOR, MOD_RANDOMIZER); itemTable[RG_BOMBCHU_BAG].SetCustomDrawFunc(Randomizer_DrawBombchuBag); - + itemTable[RG_QUIVER_INF] = Item(RG_QUIVER_INF, Text{ "Infinite Quiver", "Carquois Infini", "Unendlicher Köcher" }, ITEMTYPE_ITEM, RG_QUIVER_INF, true, LOGIC_PROGRESSIVE_BOW, RHT_QUIVER_INF, RG_QUIVER_INF, OBJECT_GI_ARROWCASE, GID_QUIVER_50, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); itemTable[RG_BOMB_BAG_INF] = Item(RG_BOMB_BAG_INF, Text{ "Infinite Bomb Bag", "Sac de Bombes Infini", "Unendliche Bombentasche" }, ITEMTYPE_ITEM, RG_BOMB_BAG_INF, true, LOGIC_PROGRESSIVE_BOMB_BAG, RHT_BOMB_BAG_INF, RG_BOMB_BAG_INF, OBJECT_GI_BOMBPOUCH, GID_BOMB_BAG_40, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); itemTable[RG_BULLET_BAG_INF] = Item(RG_BULLET_BAG_INF, Text{ "Infinite Bullet Bag", "Sac de Graines Infinis", "Unendliche Samentasche" }, ITEMTYPE_ITEM, RG_BULLET_BAG_INF, true, LOGIC_PROGRESSIVE_BULLET_BAG, RHT_BULLET_BAG_INF, RG_BULLET_BAG_INF, OBJECT_GI_DEKUPOUCH, GID_BULLET_BAG, TEXT_RANDOMIZER_CUSTOM_ITEM, 0x80, CHEST_ANIM_LONG, ITEM_CATEGORY_LESSER, MOD_RANDOMIZER); diff --git a/soh/soh/Enhancements/randomizer/location_access/dungeons/ganons_castle.cpp b/soh/soh/Enhancements/randomizer/location_access/dungeons/ganons_castle.cpp index ded6c8279..451225273 100644 --- a/soh/soh/Enhancements/randomizer/location_access/dungeons/ganons_castle.cpp +++ b/soh/soh/Enhancements/randomizer/location_access/dungeons/ganons_castle.cpp @@ -63,8 +63,8 @@ void RegionTable_Init_GanonsCastle() { }, { //Locations LOCATION(RC_GANONS_CASTLE_FOREST_TRIAL_CHEST, logic->CanKillEnemy(RE_WOLFOS)), - LOCATION(RC_GANONS_CASTLE_FOREST_TRIAL_POT_1, logic->CanBreakPots() && (logic->CanUse(RG_FIRE_ARROWS) || logic->CanUse(RG_DINS_FIRE))), - LOCATION(RC_GANONS_CASTLE_FOREST_TRIAL_POT_2, logic->CanBreakPots() && (logic->CanUse(RG_FIRE_ARROWS) || logic->CanUse(RG_DINS_FIRE))), + LOCATION(RC_GANONS_CASTLE_FOREST_TRIAL_POT_1, logic->CanBreakPots() && (logic->CanUse(RG_FIRE_ARROWS) || (logic->CanUse(RG_DINS_FIRE) && (logic->CanUse(RG_FAIRY_BOW) || logic->CanUse(RG_HOOKSHOT))))), + LOCATION(RC_GANONS_CASTLE_FOREST_TRIAL_POT_2, logic->CanBreakPots() && (logic->CanUse(RG_FIRE_ARROWS) || (logic->CanUse(RG_DINS_FIRE) && (logic->CanUse(RG_FAIRY_BOW) || logic->CanUse(RG_HOOKSHOT))))), }, {}); areaTable[RR_GANONS_CASTLE_FIRE_TRIAL] = Region("Ganon's Castle Fire Trial", "Ganon's Castle", {RA_GANONS_CASTLE}, NO_DAY_NIGHT_CYCLE, { diff --git a/soh/soh/Enhancements/randomizer/location_access/dungeons/water_temple.cpp b/soh/soh/Enhancements/randomizer/location_access/dungeons/water_temple.cpp index 0ae5ac289..05efed953 100644 --- a/soh/soh/Enhancements/randomizer/location_access/dungeons/water_temple.cpp +++ b/soh/soh/Enhancements/randomizer/location_access/dungeons/water_temple.cpp @@ -773,7 +773,7 @@ void RegionTable_Init_WaterTemple() { LOCATION(RC_WATER_TEMPLE_MQ_WHIRLPOOL_SUBMERGED_CRATE_4, logic->CanUse(RG_IRON_BOOTS) && logic->WaterTimer() >= 16 && logic->CanBreakCrates()), LOCATION(RC_WATER_TEMPLE_MQ_WHIRLPOOL_SUBMERGED_CRATE_5, logic->CanUse(RG_IRON_BOOTS) && logic->WaterTimer() >= 16 && logic->CanBreakCrates()), LOCATION(RC_WATER_TEMPLE_MQ_WHIRLPOOL_SUBMERGED_CRATE_6, logic->CanUse(RG_IRON_BOOTS) && logic->WaterTimer() >= 16 && logic->CanBreakCrates()), - + }, { //Exits diff --git a/soh/soh/Enhancements/randomizer/location_access/overworld/castle_grounds.cpp b/soh/soh/Enhancements/randomizer/location_access/overworld/castle_grounds.cpp index bdcdf9a4c..dbf467b0f 100644 --- a/soh/soh/Enhancements/randomizer/location_access/overworld/castle_grounds.cpp +++ b/soh/soh/Enhancements/randomizer/location_access/overworld/castle_grounds.cpp @@ -34,7 +34,7 @@ void RegionTable_Init_CastleGrounds() { }, { //Exits Entrance(RR_CASTLE_GROUNDS, []{return true;}), - Entrance(RR_HC_GARDEN, []{return logic->CanUse(RG_WEIRD_EGG) || !ctx->GetOption(RSK_SHUFFLE_WEIRD_EGG) || (ctx->GetTrickOption(RT_DAMAGE_BOOST_SIMPLE) && logic->HasExplosives() && logic->CanJumpslash());}), + Entrance(RR_HC_GARDEN, []{return logic->CanUse(RG_WEIRD_EGG) || (ctx->GetTrickOption(RT_DAMAGE_BOOST_SIMPLE) && logic->HasExplosives() && logic->CanJumpslash());}), Entrance(RR_HC_GREAT_FAIRY_FOUNTAIN, []{return logic->BlastOrSmash();}), Entrance(RR_HC_STORMS_GROTTO, []{return logic->CanOpenStormsGrotto();}), }); diff --git a/soh/soh/Enhancements/randomizer/logic.cpp b/soh/soh/Enhancements/randomizer/logic.cpp index 9fd460d93..0c4ed2e89 100644 --- a/soh/soh/Enhancements/randomizer/logic.cpp +++ b/soh/soh/Enhancements/randomizer/logic.cpp @@ -121,8 +121,6 @@ bool Logic::HasItem(RandomizerGet itemName) { case RG_STONE_OF_AGONY: case RG_GERUDO_MEMBERSHIP_CARD: return CheckQuestItem(RandoGetToQuestItem.at(itemName)); - case RG_RUTOS_LETTER: - return CheckEventChkInf(EVENTCHKINF_OBTAINED_RUTOS_LETTER); case RG_DOUBLE_DEFENSE: return GetSaveContext()->isDoubleDefenseAcquired; case RG_FISHING_POLE: @@ -171,6 +169,7 @@ bool Logic::HasItem(RandomizerGet itemName) { case RG_BACK_TOWER_KEY: case RG_HYLIA_LAB_KEY: case RG_FISHING_HOLE_KEY: + case RG_RUTOS_LETTER: return CheckRandoInf(RandoGetToRandInf.at(itemName)); // Boss Keys case RG_EPONA: @@ -1455,6 +1454,7 @@ std::map Logic::RandoGetToEquipFlag = { std::map Logic::RandoGetToRandInf = { { RG_ZELDAS_LETTER, RAND_INF_ZELDAS_LETTER }, { RG_WEIRD_EGG, RAND_INF_WEIRD_EGG }, + { RG_RUTOS_LETTER, RAND_INF_OBTAINED_RUTOS_LETTER }, { RG_GOHMA_SOUL, RAND_INF_GOHMA_SOUL }, { RG_KING_DODONGO_SOUL, RAND_INF_KING_DODONGO_SOUL }, { RG_BARINADE_SOUL, RAND_INF_BARINADE_SOUL }, @@ -1819,7 +1819,7 @@ void Logic::ApplyItemEffect(Item& item, bool state) { mSaveContext->inventory.items[slot] = itemId; } break; case RG_RUTOS_LETTER: - SetEventChkInf(EVENTCHKINF_OBTAINED_RUTOS_LETTER, state); + SetRandoInf(RAND_INF_OBTAINED_RUTOS_LETTER, state); break; case RG_GOHMA_SOUL: case RG_KING_DODONGO_SOUL: diff --git a/soh/soh/Enhancements/randomizer/option.cpp b/soh/soh/Enhancements/randomizer/option.cpp index 43fcc2f65..bec719d4b 100644 --- a/soh/soh/Enhancements/randomizer/option.cpp +++ b/soh/soh/Enhancements/randomizer/option.cpp @@ -368,7 +368,9 @@ void OptionGroup::Disable() { bool OptionGroup::RenderImGui() const { // NOLINT(*-no-recursion) ImGuiWindow* window = ImGui::GetCurrentWindow(); bool changed = false; - ImGui::BeginDisabled(mDisabled); + ImGui::BeginDisabled(mDisabled || CVarGetInteger(CVAR_SETTING("DisableChanges"), 0) || + CVarGetInteger(CVAR_GENERAL("RandoGenerating"), 0) || + CVarGetInteger(CVAR_GENERAL("OnFileSelectNameEntry"), 0)); if (mContainerType == WidgetContainerType::TABLE) { if (ImGui::BeginTable(mName.c_str(), static_cast(mSubGroups.size()), ImGuiTableFlags_BordersH | ImGuiTableFlags_BordersV)) { diff --git a/soh/soh/Enhancements/randomizer/randomizer.cpp b/soh/soh/Enhancements/randomizer/randomizer.cpp index 7a5f8dd69..f1ecd608c 100644 --- a/soh/soh/Enhancements/randomizer/randomizer.cpp +++ b/soh/soh/Enhancements/randomizer/randomizer.cpp @@ -3690,6 +3690,7 @@ void RandomizerSettingsWindow::DrawElement() { locationsTabOpen = false; tricksTabOpen = false; } + ImGui::EndDisabled(); UIWidgets::Spacer(0); UIWidgets::CVarCheckbox("Manual seed entry", CVAR_RANDOMIZER_SETTING("ManualSeedEntry"), @@ -3725,9 +3726,7 @@ void RandomizerSettingsWindow::DrawElement() { } UIWidgets::Spacer(0); - ImGui::BeginDisabled((CVarGetInteger(CVAR_RANDOMIZER_SETTING("DontGenerateSpoiler"), 0) && - gSaveContext.gameMode != GAMEMODE_FILE_SELECT) || - GameInteractor::IsSaveLoaded()); + ImGui::BeginDisabled((gSaveContext.gameMode != GAMEMODE_FILE_SELECT) || GameInteractor::IsSaveLoaded()); if (UIWidgets::Button("Generate Randomizer", UIWidgets::ButtonOptions().Size(ImVec2(250.f, 0.f)).Color(THEME_COLOR))) { ctx->SetSpoilerLoaded(false); @@ -3746,7 +3745,6 @@ void RandomizerSettingsWindow::DrawElement() { // ImGui::Text("Settings File: %s", presetfilepath.c_str()); UIWidgets::Separator(true, true, 0.f, 0.f); - ImGui::BeginDisabled(CVarGetInteger(CVAR_SETTING("DisableChanges"), 0)); ImGuiWindow* window = ImGui::GetCurrentWindow(); static ImVec2 cellPadding(8.0f, 8.0f); @@ -3762,8 +3760,6 @@ void RandomizerSettingsWindow::DrawElement() { ImGui::EndTabItem(); } - ImGui::BeginDisabled(CVarGetInteger(CVAR_RANDOMIZER_SETTING("LogicRules"), RO_LOGIC_GLITCHLESS) == - RO_LOGIC_VANILLA); if (ImGui::BeginTabItem("Items")) { ImGui::PushStyleVar(ImGuiStyleVar_CellPadding, cellPadding); ImGui::BeginDisabled(CVarGetInteger(CVAR_RANDOMIZER_SETTING("LogicRules"), RO_LOGIC_GLITCHLESS) == @@ -3775,23 +3771,23 @@ void RandomizerSettingsWindow::DrawElement() { ImGui::PopStyleVar(1); ImGui::EndTabItem(); } - ImGui::EndDisabled(); - ImGui::BeginDisabled(CVarGetInteger(CVAR_RANDOMIZER_SETTING("LogicRules"), RO_LOGIC_GLITCHLESS) == - RO_LOGIC_VANILLA); if (ImGui::BeginTabItem("Gameplay")) { + ImGui::BeginDisabled(CVarGetInteger(CVAR_RANDOMIZER_SETTING("LogicRules"), RO_LOGIC_GLITCHLESS) == + RO_LOGIC_VANILLA); ImGui::PushStyleVar(ImGuiStyleVar_CellPadding, cellPadding); if (mSettings->GetOptionGroup(RSG_GAMEPLAY_IMGUI_TABLE).RenderImGui()) { mNeedsUpdate = true; } + ImGui::EndDisabled(); ImGui::PopStyleVar(1); ImGui::EndTabItem(); } - ImGui::EndDisabled(); - ImGui::BeginDisabled(CVarGetInteger(CVAR_RANDOMIZER_SETTING("LogicRules"), RO_LOGIC_GLITCHLESS) == - RO_LOGIC_VANILLA); if (ImGui::BeginTabItem("Locations")) { + ImGui::BeginDisabled(CVarGetInteger(CVAR_SETTING("DisableChanges"), 0) || disableEditingRandoSettings || + CVarGetInteger(CVAR_RANDOMIZER_SETTING("LogicRules"), RO_LOGIC_GLITCHLESS) == + RO_LOGIC_VANILLA); ImGui::PushStyleVar(ImGuiStyleVar_CellPadding, cellPadding); if (!locationsTabOpen) { locationsTabOpen = true; @@ -3924,10 +3920,10 @@ void RandomizerSettingsWindow::DrawElement() { } ImGui::PopStyleVar(1); ImGui::EndTabItem(); + ImGui::EndDisabled(); } else { locationsTabOpen = false; } - ImGui::EndDisabled(); if (ImGui::BeginTabItem("Tricks/Glitches")) { if (!tricksTabOpen) { @@ -3975,8 +3971,9 @@ void RandomizerSettingsWindow::DrawElement() { ImGui::EndTable(); } - ImGui::BeginDisabled(CVarGetInteger(CVAR_RANDOMIZER_SETTING("LogicRules"), RO_LOGIC_GLITCHLESS) == - RO_LOGIC_VANILLA); + ImGui::BeginDisabled(CVarGetInteger(CVAR_SETTING("DisableChanges"), 0) || disableEditingRandoSettings || + CVarGetInteger(CVAR_RANDOMIZER_SETTING("LogicRules"), RO_LOGIC_GLITCHLESS) == + RO_LOGIC_VANILLA); // Tricks static std::unordered_map areaTreeDisabled{ @@ -4354,9 +4351,6 @@ void RandomizerSettingsWindow::DrawElement() { ImGui::EndTabBar(); } UIWidgets::PopStyleTabs(); - - ImGui::EndDisabled(); - ImGui::EndDisabled(); } void RandomizerSettingsWindow::UpdateElement() { diff --git a/soh/soh/Enhancements/randomizer/randomizer_check_tracker.cpp b/soh/soh/Enhancements/randomizer/randomizer_check_tracker.cpp index 93798fea5..6c670e447 100644 --- a/soh/soh/Enhancements/randomizer/randomizer_check_tracker.cpp +++ b/soh/soh/Enhancements/randomizer/randomizer_check_tracker.cpp @@ -1258,8 +1258,13 @@ void BeginFloatWindows(std::string UniqueName, bool& open, ImGuiWindowFlags flag windowFlags |= ImGuiWindowFlags_NoInputs | ImGuiWindowFlags_NoMove; } } - ImGui::PushStyleColor(ImGuiCol_WindowBg, ImVec4(Color_Background.r / 255.0f, Color_Background.g / 255.0f, - Color_Background.b / 255.0f, Color_Background.a / 255.0f)); + auto maybeParent = ImGui::GetCurrentWindow(); + ImGuiWindow* window = ImGui::FindWindowByName(UniqueName.c_str()); + if (window != NULL && window->DockTabIsVisible && window->ParentWindow != NULL && + std::string(window->ParentWindow->Name).compare(0, strlen("Main - Deck"), "Main - Deck") == 0) { + Color_Background.a = 255; + } + ImGui::PushStyleColor(ImGuiCol_WindowBg, VecFromRGBA8(Color_Background)); ImGui::PushStyleColor(ImGuiCol_Border, ImVec4(0, 0, 0, 0)); ImGui::PushStyleVar(ImGuiStyleVar_WindowRounding, 4.0f); ImGui::Begin(UniqueName.c_str(), &open, windowFlags); @@ -2075,11 +2080,13 @@ void CheckTrackerSettingsWindow::DrawElement() { .DefaultIndex(TRACKER_COMBO_BUTTON_L)); } } + ImGui::BeginDisabled(CVarGetInteger(CVAR_SETTING("DisableChanges"), 0)); UIWidgets::CVarCheckbox("Vanilla/MQ Dungeon Spoilers", CVAR_TRACKER_CHECK("MQSpoilers"), UIWidgets::CheckboxOptions() .Tooltip("If enabled, Vanilla/MQ dungeons will show on the tracker immediately. " "Otherwise, Vanilla/MQ dungeon locations must be unlocked.") .Color(THEME_COLOR)); + ImGui::EndDisabled(); if (UIWidgets::CVarCheckbox( "Hide unshuffled shop item checks", CVAR_TRACKER_CHECK("HideUnshuffledShopChecks"), UIWidgets::CheckboxOptions() @@ -2100,6 +2107,7 @@ void CheckTrackerSettingsWindow::DrawElement() { UIWidgets::CheckboxOptions() .Tooltip("If enabled, will show a check's logic when hovering over it.") .Color(THEME_COLOR)); + ImGui::BeginDisabled(CVarGetInteger(CVAR_SETTING("DisableChanges"), 0)); if (UIWidgets::CVarCheckbox("Enable Available Checks", CVAR_TRACKER_CHECK("EnableAvailableChecks"), UIWidgets::CheckboxOptions() .Tooltip("If enabled, will show the checks that are available to be collected " @@ -2108,6 +2116,7 @@ void CheckTrackerSettingsWindow::DrawElement() { enableAvailableChecks = CVarGetInteger(CVAR_TRACKER_CHECK("EnableAvailableChecks"), 0); RecalculateAvailableChecks(); } + ImGui::EndDisabled(); // Filtering settings UIWidgets::PaddedSeparator(); diff --git a/soh/soh/Enhancements/randomizer/randomizer_entrance_tracker.cpp b/soh/soh/Enhancements/randomizer/randomizer_entrance_tracker.cpp index f93172647..b71bae5b3 100644 --- a/soh/soh/Enhancements/randomizer/randomizer_entrance_tracker.cpp +++ b/soh/soh/Enhancements/randomizer/randomizer_entrance_tracker.cpp @@ -690,6 +690,7 @@ void EntranceTrackerSettingsWindow::DrawElement() { UIWidgets::CheckboxOptions() .Tooltip("Automatically scroll to the first available entrance in the current scene") .Color(THEME_COLOR)); + ImGui::BeginDisabled(CVarGetInteger(CVAR_SETTING("DisableChanges"), 0)); UIWidgets::CVarCheckbox("Highlight previous", CVAR_TRACKER_ENTRANCE("HighlightPrevious"), UIWidgets::CheckboxOptions() .Tooltip("Highlight the previous entrance that Link came from") @@ -698,6 +699,7 @@ void EntranceTrackerSettingsWindow::DrawElement() { UIWidgets::CheckboxOptions() .Tooltip("Highlight available entrances in the current scene") .Color(THEME_COLOR)); + ImGui::EndDisabled(); UIWidgets::CVarCheckbox("Hide undiscovered", CVAR_TRACKER_ENTRANCE("CollapseUndiscovered"), UIWidgets::CheckboxOptions() .Tooltip("Collapse undiscovered entrances towards the bottom of each group") @@ -724,6 +726,7 @@ void EntranceTrackerSettingsWindow::DrawElement() { UIWidgets::RadioButtonsOptions().Color(THEME_COLOR).Tooltip("Group entrances by their entrance type")); ImGui::Text("Spoiler Reveal"); + ImGui::BeginDisabled(CVarGetInteger(CVAR_SETTING("DisableChanges"), 0)); UIWidgets::CVarCheckbox( "Show Source", CVAR_TRACKER_ENTRANCE("ShowFrom"), UIWidgets::CheckboxOptions().Tooltip("Reveal the sourcefor undiscovered entrances").Color(THEME_COLOR)); @@ -731,7 +734,7 @@ void EntranceTrackerSettingsWindow::DrawElement() { UIWidgets::CheckboxOptions() .Tooltip("Reveal the destination for undiscovered entrances") .Color(THEME_COLOR)); - + ImGui::EndDisabled(); ImGui::EndTable(); } diff --git a/soh/soh/Enhancements/randomizer/randomizer_inf.h b/soh/soh/Enhancements/randomizer/randomizer_inf.h index 048fcc86c..b6cb4d1dd 100644 --- a/soh/soh/Enhancements/randomizer/randomizer_inf.h +++ b/soh/soh/Enhancements/randomizer/randomizer_inf.h @@ -1952,6 +1952,7 @@ typedef enum { RAND_INF_DEKU_TREE_QUEEN_GOHMA_GRASS_7, RAND_INF_DEKU_TREE_QUEEN_GOHMA_GRASS_8, // End Grass + RAND_INF_OBTAINED_RUTOS_LETTER, // If you add anything to this list, you need to update the size of randomizerInf in z64save.h to be // ceil(RAND_INF_MAX / 16) diff --git a/soh/soh/Enhancements/randomizer/randomizer_item_tracker.cpp b/soh/soh/Enhancements/randomizer/randomizer_item_tracker.cpp index b86da3c0c..9b7b1fd39 100644 --- a/soh/soh/Enhancements/randomizer/randomizer_item_tracker.cpp +++ b/soh/soh/Enhancements/randomizer/randomizer_item_tracker.cpp @@ -1162,8 +1162,10 @@ void BeginFloatingWindows(std::string UniqueName, ImGuiWindowFlags flags = 0) { } } auto color = VecFromRGBA8(CVarGetColor(CVAR_TRACKER_ITEM("BgColor.Value"), { 0, 0, 0, 0 })); + auto maybeParent = ImGui::GetCurrentWindow(); ImGuiWindow* window = ImGui::FindWindowByName(UniqueName.c_str()); - if (window != NULL && window->DockTabIsVisible) { + if (window != NULL && window->DockTabIsVisible && window->ParentWindow != NULL && + std::string(window->ParentWindow->Name).compare(0, strlen("Main - Deck"), "Main - Deck") == 0) { color.w = 1.0f; } ImGui::PushStyleColor(ImGuiCol_WindowBg, color); diff --git a/soh/soh/Enhancements/randomizer/settings.cpp b/soh/soh/Enhancements/randomizer/settings.cpp index 6f3553261..c5d0c23d8 100644 --- a/soh/soh/Enhancements/randomizer/settings.cpp +++ b/soh/soh/Enhancements/randomizer/settings.cpp @@ -215,7 +215,7 @@ void Settings::CreateOptions() { OPT_BOOL(RSK_SHUFFLE_GERUDO_MEMBERSHIP_CARD, "Shuffle Gerudo Membership Card", CVAR_RANDOMIZER_SETTING("ShuffleGerudoToken"), mOptionDescriptions[RSK_SHUFFLE_GERUDO_MEMBERSHIP_CARD]); OPT_U8(RSK_SHUFFLE_POTS, "Shuffle Pots", {"Off", "Dungeons", "Overworld", "All Pots"}, OptionCategory::Setting, CVAR_RANDOMIZER_SETTING("ShufflePots"), mOptionDescriptions[RSK_SHUFFLE_POTS], WidgetType::Combobox, RO_SHUFFLE_POTS_OFF); OPT_U8(RSK_SHUFFLE_GRASS, "Shuffle Grass", {"Off", "Dungeons", "Overworld", "All Grass/Bushes"}, OptionCategory::Setting, CVAR_RANDOMIZER_SETTING("ShuffleGrass"), mOptionDescriptions[RSK_SHUFFLE_GRASS], WidgetType::Combobox, RO_SHUFFLE_GRASS_OFF); - OPT_U8(RSK_SHUFFLE_CRATES, "Shuffle Crates", {"Off", "Dungeons", "Overworld", "All Crates"}, OptionCategory::Setting, CVAR_RANDOMIZER_SETTING("ShuffleCrates"), mOptionDescriptions[RSK_SHUFFLE_CRATES], WidgetType::Combobox, RO_SHUFFLE_CRATES_OFF); + OPT_U8(RSK_SHUFFLE_CRATES, "Shuffle Crates", {"Off", "Dungeons", "Overworld", "All Crates"}, OptionCategory::Setting, CVAR_RANDOMIZER_SETTING("ShuffleCrates"), mOptionDescriptions[RSK_SHUFFLE_CRATES], WidgetType::Combobox, RO_SHUFFLE_CRATES_OFF); OPT_BOOL(RSK_SHUFFLE_FISHING_POLE, "Shuffle Fishing Pole", CVAR_RANDOMIZER_SETTING("ShuffleFishingPole"), mOptionDescriptions[RSK_SHUFFLE_FISHING_POLE]); OPT_U8(RSK_SHUFFLE_MERCHANTS, "Shuffle Merchants", {"Off", "Bean Merchant Only", "All But Beans", "All"}, OptionCategory::Setting, CVAR_RANDOMIZER_SETTING("ShuffleMerchants"), mOptionDescriptions[RSK_SHUFFLE_MERCHANTS], WidgetType::Combobox, RO_SHUFFLE_MERCHANTS_OFF, IMFLAG_NONE); OPT_U8(RSK_MERCHANT_PRICES, "Merchant Prices", {"Vanilla", "Cheap Balanced", "Balanced", "Fixed", "Range", "Set By Wallet"}, OptionCategory::Setting, CVAR_RANDOMIZER_SETTING("MerchantPrices"), mOptionDescriptions[RSK_MERCHANT_PRICES], WidgetType::Combobox, RO_PRICE_VANILLA, false, IMFLAG_NONE); diff --git a/soh/soh/Network/CrowdControl/ShipOfHarkinian.cs b/soh/soh/Network/CrowdControl/ShipOfHarkinian.cs index b62b23bd8..b1617435c 100644 --- a/soh/soh/Network/CrowdControl/ShipOfHarkinian.cs +++ b/soh/soh/Network/CrowdControl/ShipOfHarkinian.cs @@ -36,7 +36,7 @@ public class ShipOfHarkinian : SimpleTCPPack new("Fire Keese", "spawn_fire_keese") { Category = "Spawn Enemies/Objects", Price = 15, Description = "Do not bring close to Deku Shields. Or do, we're not your parents." }, new("Wolfos", "spawn_wolfos") { Category = "Spawn Enemies/Objects", Price = 15, Description = "Awooooooo" }, new("Wallmaster", "spawn_wallmaster") { Category = "Spawn Enemies/Objects", Price = 30, Description = "Need a hand? Try it together with electrocuting Link." }, - + // Link Modifiers new("Take Half Damage", "take_half_damage") { Category = "Link Modifiers", Duration = 30, Price = 20, Description = "Halves the damage Link takes. Won't save the streamer if they're bad at the game though." }, new("Take Double Damage", "take_double_damage") { Category = "Link Modifiers", Duration = 30, Price = 30, Description = "Doubles the damage Link takes. Turns OoT into Dark Souls.. kinda." }, @@ -52,7 +52,7 @@ public class ShipOfHarkinian : SimpleTCPPack new("Disable Ledge Grabs", "no_ledge_grabs") { Category = "Link Modifiers", Duration = 30, Price = 15, Description = "Jump! Pull up-- Oh, woops." }, new("Random Wind", "random_wind") { Category = "Link Modifiers", Duration = 30, Price = 30, Description = "A wind blows, which changes to a random direction every 5 seconds." }, new("Random Bonks When Rolling", "random_bonks") { Category = "Link Modifiers", Duration = 60, Price = 15, Description = "Why do I keep bonking while there's nothing here!?" }, - + // Hurt or Heal Link new("Empty Heart", "empty_heart") { Category = "Hurt/Heal Link", Quantity = 20, Price = 10, Description = "Damage Link for however many hearts you choose." }, new("Fill Heart", "fill_heart") { Category = "Hurt/Heal Link", Quantity = 20, Price = 5, Description = "Heal Link for however many hearts you choose." }, @@ -63,7 +63,7 @@ public class ShipOfHarkinian : SimpleTCPPack new("Freeze Link", "freeze_link") { Category = "Hurt/Heal Link", Price = 20, Description = "FREEZE! Don't move!" }, new("Electrocute Link", "electrocute_link") { Category = "Hurt/Heal Link", Price = 20, Description = "Ganon used Thundershock!" }, new("Kill Link", "kill_link") { Category = "Hurt/Heal Link", Price = 150, Description = "Rest in RIP." }, - + // Give Items and Consumables new("Add Heart Container", "add_heart_container") { Category = "Give Items/Consumables", Price = 25, Description = "The limit is 20 heart containers." }, new("Fill Magic", "fill_magic") { Category = "Give Items/Consumables", Price = 20, Description = "Fills the entire magic bar. Abra-kadabra." }, @@ -76,7 +76,7 @@ public class ShipOfHarkinian : SimpleTCPPack new("Refill Slingshot Seeds", "refill_seeds") { Category = "Give Items/Consumables", Quantity = 30, Price = 1, Description = "Only works when the player already has a Slingshot." }, new("Refill Arrows", "refill_arrows") { Category = "Give Items/Consumables", Price = 1, Description = "Only works when the player already has a bow." }, new("Refill Bombchus", "refill_bombchus") { Category = "Give Items/Consumables", Quantity = 30, Price = 5, Description = "Only works when the player already had Bombchus before." }, - + // Take Items and Consumables new("Remove Heart Container", "remove_heart_container") { Category = "Take Items/Consumables", Price = 35, Description = "The limit is 1 heart. But you wouldn't go that far, would you?" }, new("Empty Magic", "empty_magic") { Category = "Take Items/Consumables", Price = 25, Description = "Empties the entire magic bar. They didn't need it anyway." }, @@ -89,25 +89,25 @@ public class ShipOfHarkinian : SimpleTCPPack new("Take Slingshot Seeds", "take_seeds") { Category = "Take Items/Consumables", Quantity = 30, Price = 2, Description = "Who even uses the Slingshot?" }, new("Take Arrows", "take_arrows") { Category = "Take Items/Consumables", Quantity = 30, Price = 2, Description = "*ploink*" }, new("Take Bombchus", "take_bombchus") { Category = "Take Items/Consumables", Quantity = 30, Price = 10, Description = "Hopefully they still have some regular bombs." }, - + // Link Size Modifiers new("Giant Lonk", "giant_link") { Category = "Change Link's Size", Duration = 30, Price = 20, Description = "Big Lonk equals big sword." }, new("Minish Link", "minish_link") { Category = "Change Link's Size", Duration = 30, Price = 20, Description = "They say size doesn't matter." }, new("Paper Link", "paper_link") { Category = "Change Link's Size", Duration = 30, Price = 20, Description = "We might not have a Zelda variant of Paper Mario, but this gets pretty close." }, new("Squished Link", "squished_link") { Category = "Change Link's Size", Duration = 30, Price = 20, Description = "Drop an anvil on Link, but the anvil is invisible." }, new("Invisible Link", "invisible_link") { Category = "Change Link's Size", Duration = 30, Price = 20, Description = "Now you see me, now you don't." }, - + // Generic Effects new("Random Bomb Fuse Timer", "random_bomb_timer") { Category = "Generic Effects", Duration = 60, Price = 5, Description = "Sets the timer for new bombs to either super short, super long or something inbetween (does not work for bombchus)." }, new("Set Time to Dawn", "set_time_to_dawn") { Category = "Generic Effects", Price = 25, Description = "Sets the time to early day. Might require an area reload to take effect." }, new("Set Time to Dusk", "set_time_to_dusk") { Category = "Generic Effects", Price = 25, Description = "Sets the time to early night. Might require an area reload to take effect." }, - + // Visual Effects new("No UI", "no_ui") { Category = "Visual Effects", Duration = 60, Price = 20, Description = "No need to see ammo counts. The cinematic experience." }, new("Rainstorm", "rainstorm") { Category = "Visual Effects", Duration = 30, Price = 5, Description = "Summon a rainstorm for a sad moment." }, new("Debug Mode", "debug_mode") { Category = "Visual Effects", Duration = 30, Price = 20, Description = "if (debug_mode) { ShowCollision(); }" }, new("Randomize Cosmetics", "random_cosmetics") { Category = "Visual Effects", Price = 30, Description = "Randomize most cosmetics options. Cosmetics changed by bidding wars are unaffected." }, - + // Controls new("No Z Button", "no_z_button") { Category = "Controls", Duration = 30, Price = 20, Description = "No sidehops, no backflips, no jump attacks, no camera adjustments." }, new("Reverse Controls", "reverse_controls") { Category = "Controls", Duration = 60, Price = 25, Description = "Just hold the controller upside down." }, @@ -115,7 +115,7 @@ public class ShipOfHarkinian : SimpleTCPPack new("Press Random Buttons", "press_random_buttons") { Category = "Controls", Duration = 30, Price = 25, Description = "Press random buttons on the controller for the duration. Maybe it'll help (spoiler: probably not)." }, new("Clear C-Buttons", "clear_cbuttons") { Category = "Controls", Price = 10, Description = "Clear the assigned items from the C-buttons." }, new("Clear D-pad", "clear_dpad") { Category = "Controls", Price = 10, Description = "Clear the assigned items from the D-pad." }, - + // Teleport Player new("Link's House", "tp_links_house") { Category = "Teleport Player", Price = 100, Description = "Teleport the player to Link's House. Welcome Home!" }, new("Minuet Destination", "tp_minuet") { Category = "Teleport Player", Price = 100, Description = "Teleport the player to Sacred Forest Meadow." }, @@ -124,7 +124,7 @@ public class ShipOfHarkinian : SimpleTCPPack new("Requiem Destination", "tp_requiem") { Category = "Teleport Player", Price = 100, Description = "Teleport the player to Desert Colossus." }, new("Nocturne Destination", "tp_nocturne") { Category = "Teleport Player", Price = 100, Description = "Teleport the player to the Raveyard." }, new("Prelude Destination", "tp_prelude") { Category = "Teleport Player", Price = 100, Description = "Teleport the player to the Temple of Time." }, - + // Tunic Color (Bidding War) new("Tunic Color", "tunic", ItemKind.BidWar) { @@ -139,7 +139,7 @@ public class ShipOfHarkinian : SimpleTCPPack new Parameter("Brown", "brown"), new Parameter("Black", "black")) }, - + // Navi Color (Bidding War) new("Navi Color", "navi", ItemKind.BidWar) { @@ -154,7 +154,7 @@ public class ShipOfHarkinian : SimpleTCPPack new Parameter("Brown", "brown"), new Parameter("Black", "black")) }, - + // Link's Hair Color (Bidding War) new("Link's Hair Color", "hair", ItemKind.BidWar) { diff --git a/soh/soh/Notification/Notification.cpp b/soh/soh/Notification/Notification.cpp index 4ba779e54..14873b068 100644 --- a/soh/soh/Notification/Notification.cpp +++ b/soh/soh/Notification/Notification.cpp @@ -61,7 +61,7 @@ void Window::Draw() { ImGuiWindowFlags_AlwaysAutoResize | ImGuiWindowFlags_NoNav | ImGuiWindowFlags_NoFocusOnAppearing | ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoDocking | ImGuiWindowFlags_NoTitleBar | ImGuiWindowFlags_NoScrollWithMouse | ImGuiWindowFlags_NoInputs | ImGuiWindowFlags_NoMove | - ImGuiWindowFlags_NoScrollbar); + ImGuiWindowFlags_NoScrollbar | ImGuiWindowFlags_NoSavedSettings); ImGui::SetWindowFontScale(CVarGetFloat(CVAR_SETTING("Notifications.Size"), 1.8f)); // Make this adjustable diff --git a/soh/soh/ShipInit.hpp b/soh/soh/ShipInit.hpp index b5351cdc0..2341a1024 100644 --- a/soh/soh/ShipInit.hpp +++ b/soh/soh/ShipInit.hpp @@ -28,34 +28,34 @@ struct ShipInit { /** * @brief Register a function to execute on boot and (optionally) in other situations - * + * * @param initFunc The function to execute * @param updatePaths Strings to specify additional situations in which to execute the function - * + * * ### Examples: - * + * * #### Execute function `bar` on boot - * + * * ```cpp * static RegisterShipInitFunc foo(bar); * ``` - * + * * #### Execute function `bar` on boot and when the CVar `baz` might have changed - * + * * ```cpp * static RegisterShipInitFunc foo(bar, { "baz" }); * ``` - * + * * #### Execute function `bar` on boot and when `IS_RANDO` might have changed - * + * * ```cpp * static RegisterShipInitFunc foo(bar, { "IS_RANDO" }); * ``` - * + * * ### Additional Information: - * - * To get a better sense of when your function will be executed - * you can look for `ShipInit::Init` calls throughout the codebase + * + * To get a better sense of when your function will be executed + * you can look for `ShipInit::Init` calls throughout the codebase */ struct RegisterShipInitFunc { RegisterShipInitFunc(std::function initFunc, const std::set& updatePaths = {}) { diff --git a/soh/soh/SohGui/Menu.cpp b/soh/soh/SohGui/Menu.cpp index a1321a6f6..87c362496 100644 --- a/soh/soh/SohGui/Menu.cpp +++ b/soh/soh/SohGui/Menu.cpp @@ -65,6 +65,8 @@ uint32_t GetVectorIndexOf(std::vector& vector, std::string value) { return std::distance(vector.begin(), std::find(vector.begin(), vector.end(), value)); } +static bool raceDisableActive = false; + void Menu::InsertSidebarSearch() { menuEntries["Settings"].sidebars.emplace("Search", searchSidebarEntry); uint32_t curIndex = 0; @@ -228,7 +230,7 @@ std::unordered_map& Menu::GetDisabledMap() { } void Menu::MenuDrawItem(WidgetInfo& widget, uint32_t width, UIWidgets::Colors menuThemeIndex) { - disabledTempTooltip = "This setting is disabled because: \n\n"; + disabledTempTooltip = "This setting is disabled because: \n"; disabledValue = false; disabledTooltip = " "; @@ -241,11 +243,16 @@ void Menu::MenuDrawItem(WidgetInfo& widget, uint32_t width, UIWidgets::Colors me if (!widget.activeDisables.empty()) { widget.options->disabled = true; for (auto option : widget.activeDisables) { - disabledTempTooltip += std::string("- ") + disabledMap.at(option).reason + std::string("\n"); + disabledTempTooltip += std::string("\n- ") + disabledMap.at(option).reason; } widget.options->disabledTooltip = disabledTempTooltip.c_str(); } } + if (widget.raceDisable && raceDisableActive) { + widget.options->disabled = true; + disabledTempTooltip += std::string("\n- Race Lockout Active"); + widget.options->disabledTooltip = disabledTempTooltip.c_str(); + } if (widget.sameLine) { ImGui::SameLine(); @@ -492,6 +499,8 @@ void Menu::DrawElement() { info.active = info.evaluation(info); } + raceDisableActive = CVarGetInteger(CVAR_SETTING("DisableChanges"), 0); + windowHeight = ImGui::GetMainViewport()->WorkSize.y; windowWidth = ImGui::GetMainViewport()->WorkSize.x; auto windowFlags = ImGuiWindowFlags_NoDecoration | ImGuiWindowFlags_NoMove | ImGuiWindowFlags_NoSavedSettings; diff --git a/soh/soh/SohGui/MenuTypes.h b/soh/soh/SohGui/MenuTypes.h index 162f80ac5..de78e8961 100644 --- a/soh/soh/SohGui/MenuTypes.h +++ b/soh/soh/SohGui/MenuTypes.h @@ -109,6 +109,7 @@ struct WidgetInfo { const char* windowName = ""; bool isHidden = false; bool sameLine = false; + bool raceDisable = true; WidgetInfo& CVar(const char* cVar_) { cVar = cVar_; @@ -191,6 +192,10 @@ struct WidgetInfo { customFunction = customFunction_; return *this; } + WidgetInfo& RaceDisable(bool disable) { + raceDisable = disable; + return *this; + } }; struct WidgetPath { diff --git a/soh/soh/SohGui/ResolutionEditor.cpp b/soh/soh/SohGui/ResolutionEditor.cpp index 298e2c470..d33a7b43c 100644 --- a/soh/soh/SohGui/ResolutionEditor.cpp +++ b/soh/soh/SohGui/ResolutionEditor.cpp @@ -371,29 +371,37 @@ void RegisterResolutionWidgets() { WidgetPath path = { "Settings", "Graphics", SECTION_COLUMN_2 }; // Resolution visualiser - mSohMenu->AddWidget(path, "Viewport dimensions: {} x {}", WIDGET_TEXT).PreFunc([](WidgetInfo& info) { - info.name = fmt::format("Viewport dimensions: {} x {}", gfx_current_game_window_viewport.width, - gfx_current_game_window_viewport.height); - }); - mSohMenu->AddWidget(path, "Internal resolution: {} x {}", WIDGET_TEXT).PreFunc([](WidgetInfo& info) { - info.name = - fmt::format("Internal resolution: {} x {}", gfx_current_dimensions.width, gfx_current_dimensions.height); - }); + mSohMenu->AddWidget(path, "Viewport dimensions: {} x {}", WIDGET_TEXT) + .RaceDisable(false) + .PreFunc([](WidgetInfo& info) { + info.name = fmt::format("Viewport dimensions: {} x {}", gfx_current_game_window_viewport.width, + gfx_current_game_window_viewport.height); + }); + mSohMenu->AddWidget(path, "Internal resolution: {} x {}", WIDGET_TEXT) + .RaceDisable(false) + .PreFunc([](WidgetInfo& info) { + info.name = fmt::format("Internal resolution: {} x {}", gfx_current_dimensions.width, + gfx_current_dimensions.height); + }); // Activator mSohMenu->AddWidget(path, "Enable advanced settings.", WIDGET_CVAR_CHECKBOX) - .CVar(CVAR_PREFIX_ADVANCED_RESOLUTION ".Enabled"); + .CVar(CVAR_PREFIX_ADVANCED_RESOLUTION ".Enabled") + .RaceDisable(false); // Error/Warning display mSohMenu ->AddWidget(path, ICON_FA_EXCLAMATION_TRIANGLE " Significant frame rate (FPS) drops may be occuring.", WIDGET_TEXT) + .RaceDisable(false) .PreFunc( [](WidgetInfo& info) { info.isHidden = !(!CVarGetInteger(CVAR_LOW_RES_MODE, 0) && IsDroppingFrames()); }) .Options(TextOptions().Color(Colors::Orange)); mSohMenu->AddWidget(path, ICON_FA_QUESTION_CIRCLE " \"N64 Mode\" is overriding these settings.", WIDGET_TEXT) + .RaceDisable(false) .PreFunc([](WidgetInfo& info) { info.isHidden = !CVarGetInteger(CVAR_LOW_RES_MODE, 0); }) .Options(TextOptions().Color(Colors::LightBlue)); mSohMenu->AddWidget(path, "Click to disable N64 mode", WIDGET_BUTTON) + .RaceDisable(false) .PreFunc([](WidgetInfo& info) { info.isHidden = !CVarGetInteger(CVAR_LOW_RES_MODE, 0); }) .Callback([](WidgetInfo& info) { CVarSetInteger(CVAR_LOW_RES_MODE, 0); @@ -401,17 +409,18 @@ void RegisterResolutionWidgets() { }); // Aspect Ratio - mSohMenu->AddWidget(path, "AspectSep", WIDGET_SEPARATOR).PreFunc([](WidgetInfo& info) { + mSohMenu->AddWidget(path, "AspectSep", WIDGET_SEPARATOR).RaceDisable(false).PreFunc([](WidgetInfo& info) { if (mSohMenu->GetDisabledMap().at(DISABLE_FOR_ADVANCED_RESOLUTION_OFF).active) { info.activeDisables.push_back(DISABLE_FOR_ADVANCED_RESOLUTION_OFF); } }); - mSohMenu->AddWidget(path, "Force aspect ratio:", WIDGET_TEXT).PreFunc([](WidgetInfo& info) { + mSohMenu->AddWidget(path, "Force aspect ratio:", WIDGET_TEXT).RaceDisable(false).PreFunc([](WidgetInfo& info) { if (mSohMenu->GetDisabledMap().at(DISABLE_FOR_ADVANCED_RESOLUTION_OFF).active) { info.activeDisables.push_back(DISABLE_FOR_ADVANCED_RESOLUTION_OFF); } }); mSohMenu->AddWidget(path, "(Select \"Off\" to disable.)", WIDGET_TEXT) + .RaceDisable(false) .PreFunc([](WidgetInfo& info) { if (mSohMenu->GetDisabledMap().at(DISABLE_FOR_ADVANCED_RESOLUTION_OFF).active) { info.activeDisables.push_back(DISABLE_FOR_ADVANCED_RESOLUTION_OFF); @@ -422,6 +431,7 @@ void RegisterResolutionWidgets() { // Presets mSohMenu->AddWidget(path, "Aspect Ratio", WIDGET_COMBOBOX) .ValuePointer(&item_aspectRatio) + .RaceDisable(false) .PreFunc([](WidgetInfo& info) { if (mSohMenu->GetDisabledMap().at(DISABLE_FOR_ADVANCED_RESOLUTION_OFF).active) { info.activeDisables.push_back(DISABLE_FOR_ADVANCED_RESOLUTION_OFF); @@ -443,44 +453,49 @@ void RegisterResolutionWidgets() { Ship::Context::GetInstance()->GetWindow()->GetGui()->SaveConsoleVariablesNextFrame(); }) .Options(ComboboxOptions().ComboMap(aspectRatioPresetLabels)); - mSohMenu->AddWidget(path, "AspectRatioCustom", WIDGET_CUSTOM).CustomFunction([](WidgetInfo& info) { - // Hide aspect ratio input fields if using one of the presets. - if (item_aspectRatio == default_aspectRatio && !showHorizontalResField) { - // Declare input interaction bools outside of IF statement to prevent Y field from disappearing. - const bool input_X = - UIWidgets::SliderFloat("X", &aspectRatioX, - UIWidgets::FloatSliderOptions({ { .disabled = disabled_everything } }) - .Min(0.1f) - .Max(32.0f) - .Step(0.001f) - .Format("%3f") - .Color(THEME_COLOR) - .LabelPosition(UIWidgets::LabelPositions::Near) - .ComponentAlignment(UIWidgets::ComponentAlignments::Right)); - const bool input_Y = - UIWidgets::SliderFloat("Y", &aspectRatioY, - UIWidgets::FloatSliderOptions({ { .disabled = disabled_everything } }) - .Min(0.1f) - .Max(24.0f) - .Step(0.001f) - .Format("%3f") - .Color(THEME_COLOR) - .LabelPosition(UIWidgets::LabelPositions::Near) - .ComponentAlignment(UIWidgets::ComponentAlignments::Right)); - if (input_X || input_Y) { - item_aspectRatio = default_aspectRatio; - update[UPDATE_aspectRatioX] = true; - update[UPDATE_aspectRatioY] = true; + mSohMenu->AddWidget(path, "AspectRatioCustom", WIDGET_CUSTOM) + .RaceDisable(false) + .CustomFunction([](WidgetInfo& info) { + // Hide aspect ratio input fields if using one of the presets. + if (item_aspectRatio == default_aspectRatio && !showHorizontalResField) { + // Declare input interaction bools outside of IF statement to prevent Y field from disappearing. + const bool input_X = + UIWidgets::SliderFloat("X", &aspectRatioX, + UIWidgets::FloatSliderOptions({ { .disabled = disabled_everything } }) + .Min(0.1f) + .Max(32.0f) + .Step(0.001f) + .Format("%3f") + .Color(THEME_COLOR) + .LabelPosition(UIWidgets::LabelPositions::Near) + .ComponentAlignment(UIWidgets::ComponentAlignments::Right)); + const bool input_Y = + UIWidgets::SliderFloat("Y", &aspectRatioY, + UIWidgets::FloatSliderOptions({ { .disabled = disabled_everything } }) + .Min(0.1f) + .Max(24.0f) + .Step(0.001f) + .Format("%3f") + .Color(THEME_COLOR) + .LabelPosition(UIWidgets::LabelPositions::Near) + .ComponentAlignment(UIWidgets::ComponentAlignments::Right)); + if (input_X || input_Y) { + item_aspectRatio = default_aspectRatio; + update[UPDATE_aspectRatioX] = true; + update[UPDATE_aspectRatioY] = true; + } + } else if (showHorizontalResField) { // Show calculated aspect ratio + if (item_aspectRatio) { + ImGui::Dummy({ 0, 2 }); + const float resolvedAspectRatio = + (float)gfx_current_dimensions.width / gfx_current_dimensions.height; + ImGui::Text("Aspect ratio: %.2f:1", resolvedAspectRatio); + } } - } else if (showHorizontalResField) { // Show calculated aspect ratio - if (item_aspectRatio) { - ImGui::Dummy({ 0, 2 }); - const float resolvedAspectRatio = (float)gfx_current_dimensions.width / gfx_current_dimensions.height; - ImGui::Text("Aspect ratio: %.2f:1", resolvedAspectRatio); - } - } - }); - mSohMenu->AddWidget(path, "MoreResolutionSettings", WIDGET_CUSTOM).CustomFunction(ResolutionCustomWidget); + }); + mSohMenu->AddWidget(path, "MoreResolutionSettings", WIDGET_CUSTOM) + .CustomFunction(ResolutionCustomWidget) + .RaceDisable(false); } void UpdateResolutionVars() { diff --git a/soh/soh/SohGui/SohGui.hpp b/soh/soh/SohGui/SohGui.hpp index b1d278e06..d9b7bb644 100644 --- a/soh/soh/SohGui/SohGui.hpp +++ b/soh/soh/SohGui/SohGui.hpp @@ -32,14 +32,15 @@ #include "SohModals.h" namespace SohGui { - void SetupHooks(); - void SetupGuiElements(); - void Draw(); - void Destroy(); - void RegisterPopup(std::string title, std::string message, std::string button1 = "OK", std::string button2 = "", std::function button1callback = nullptr, std::function button2callback = nullptr); - void ShowRandomizerSettingsMenu(); - UIWidgets::Colors GetMenuThemeColor(); -} +void SetupHooks(); +void SetupGuiElements(); +void Draw(); +void Destroy(); +void RegisterPopup(std::string title, std::string message, std::string button1 = "OK", std::string button2 = "", + std::function button1callback = nullptr, std::function button2callback = nullptr); +void ShowRandomizerSettingsMenu(); +UIWidgets::Colors GetMenuThemeColor(); +} // namespace SohGui #define THEME_COLOR SohGui::GetMenuThemeColor() diff --git a/soh/soh/SohGui/SohMenuDevTools.cpp b/soh/soh/SohGui/SohMenuDevTools.cpp index 0588ae508..91d456c95 100644 --- a/soh/soh/SohGui/SohMenuDevTools.cpp +++ b/soh/soh/SohGui/SohMenuDevTools.cpp @@ -93,6 +93,7 @@ void SohMenu::AddMenuDevTools() { AddSidebarEntry("Dev Tools", path.sidebarName, 1); AddWidget(path, "Popout Stats Window", WIDGET_WINDOW_BUTTON) .CVar(CVAR_WINDOW("SohStats")) + .RaceDisable(false) .WindowName("Stats##Soh") .Options(WindowButtonOptions().Tooltip("Enables the separate Stats Window.")); diff --git a/soh/soh/SohGui/SohMenuEnhancements.cpp b/soh/soh/SohGui/SohMenuEnhancements.cpp index 786183882..0b78892d4 100644 --- a/soh/soh/SohGui/SohMenuEnhancements.cpp +++ b/soh/soh/SohGui/SohMenuEnhancements.cpp @@ -85,6 +85,7 @@ void SohMenu::AddMenuEnhancements() { AddWidget(path, "Saving", WIDGET_SEPARATOR_TEXT); AddWidget(path, "Autosave", WIDGET_CVAR_CHECKBOX) .CVar(CVAR_ENHANCEMENT("Autosave")) + .RaceDisable(false) .Options(CheckboxOptions().Tooltip( "Save the game automatically on a 3 minute interval and when soft-resetting the game. The interval " "autosave will wait if the game is paused in any way (dialogue, pause screen up, cutscenes, " @@ -168,9 +169,11 @@ void SohMenu::AddMenuEnhancements() { AddWidget(path, "Controls", WIDGET_SEPARATOR_TEXT); AddWidget(path, "Answer Navi Prompt with L Button", WIDGET_CVAR_CHECKBOX) .CVar(CVAR_ENHANCEMENT("NaviOnL")) + .RaceDisable(false) .Options(CheckboxOptions().Tooltip("Speak to Navi with L but enter First-Person Camera with C-Up.")); AddWidget(path, "Don't Require Input for Credits Sequence", WIDGET_CVAR_CHECKBOX) .CVar(CVAR_ENHANCEMENT("NoInputForCredits")) + .RaceDisable(false) .Options(CheckboxOptions().Tooltip( "Removes the Input Requirement on Text boxes after defeating Ganon, allowing the Credits " "Sequence to continue to progress.")); @@ -202,14 +205,20 @@ void SohMenu::AddMenuEnhancements() { AddWidget(path, "Item Count Messages", WIDGET_SEPARATOR_TEXT); AddWidget(path, "Gold Skulltula Tokens", WIDGET_CVAR_CHECKBOX) - .CVar(CVAR_ENHANCEMENT("InjectItemCounts.GoldSkulltula")); - AddWidget(path, "Pieces of Heart", WIDGET_CVAR_CHECKBOX).CVar(CVAR_ENHANCEMENT("InjectItemCounts.HeartPiece")); - AddWidget(path, "Heart Containers", WIDGET_CVAR_CHECKBOX).CVar(CVAR_ENHANCEMENT("InjectItemCounts.HeartContainer")); + .CVar(CVAR_ENHANCEMENT("InjectItemCounts.GoldSkulltula")) + .RaceDisable(false); + AddWidget(path, "Pieces of Heart", WIDGET_CVAR_CHECKBOX) + .CVar(CVAR_ENHANCEMENT("InjectItemCounts.HeartPiece")) + .RaceDisable(false); + AddWidget(path, "Heart Containers", WIDGET_CVAR_CHECKBOX) + .CVar(CVAR_ENHANCEMENT("InjectItemCounts.HeartContainer")) + .RaceDisable(false); path.column = SECTION_COLUMN_3; AddWidget(path, "Misc", WIDGET_SEPARATOR_TEXT); AddWidget(path, "Disable Crit Wiggle", WIDGET_CVAR_CHECKBOX) .CVar(CVAR_ENHANCEMENT("DisableCritWiggle")) + .RaceDisable(false) .Options(CheckboxOptions().Tooltip("Disable Random Camera Wiggle at Low Health.")); AddWidget(path, "Better Owl", WIDGET_CVAR_CHECKBOX) .CVar(CVAR_ENHANCEMENT("BetterOwl")) @@ -430,27 +439,32 @@ void SohMenu::AddMenuEnhancements() { AddWidget(path, "Mods", WIDGET_SEPARATOR_TEXT); AddWidget(path, "Use Alternate Assets", WIDGET_CVAR_CHECKBOX) .CVar(CVAR_SETTING("AltAssets")) + .RaceDisable(false) .Options(CheckboxOptions().Tooltip( "Toggle between standard assets and alternate assets. Usually mods will indicate if " "this setting has to be used or not.")); AddWidget(path, "Disable Bomb Billboarding", WIDGET_CVAR_CHECKBOX) .CVar(CVAR_ENHANCEMENT("DisableBombBillboarding")) + .RaceDisable(false) .Options(CheckboxOptions().Tooltip( "Disables bombs always rotating to face the camera. To be used in conjunction with mods that want to " "replace bombs with 3D objects.")); AddWidget(path, "Disable Grotto Fixed Rotation", WIDGET_CVAR_CHECKBOX) .CVar(CVAR_ENHANCEMENT("DisableGrottoRotation")) + .RaceDisable(false) .Options(CheckboxOptions().Tooltip( "Disables Grottos rotating with the Camera. To be used in conjuction with mods that want to " "replace grottos with 3D objects.")); AddWidget(path, "Ingame Text Spacing: %d", WIDGET_CVAR_SLIDER_INT) .CVar(CVAR_ENHANCEMENT("TextSpacing")) + .RaceDisable(false) .Options(IntSliderOptions().Min(4).Max(6).DefaultValue(6).Tooltip( "Space between text characters (useful for HD font textures).")); AddWidget(path, "Models & Textures", WIDGET_SEPARATOR_TEXT); AddWidget(path, "Disable LOD", WIDGET_CVAR_CHECKBOX) .CVar(CVAR_ENHANCEMENT("DisableLOD")) + .RaceDisable(false) .Options(CheckboxOptions().Tooltip( "Turns off the Level of Detail setting, making models use their Higher-Poly variants at any distance.")); AddWidget(path, "Enemy Health Bars", WIDGET_CVAR_CHECKBOX) @@ -458,18 +472,22 @@ void SohMenu::AddMenuEnhancements() { .Options(CheckboxOptions().Tooltip("Renders a health bar for Enemies when Z-Targeted.")); AddWidget(path, "Enable 3D Dropped Items/Projectiles", WIDGET_CVAR_CHECKBOX) .CVar(CVAR_ENHANCEMENT("NewDrops")) + .RaceDisable(false) .Options(CheckboxOptions().Tooltip( "Replaces most 2D items and projectiles on the overworld with their equivalent 3D models.")); AddWidget(path, "Animated Link in Pause Menu", WIDGET_CVAR_CHECKBOX) .CVar(CVAR_ENHANCEMENT("PauseMenuAnimatedLink")) + .RaceDisable(false) .Options(CheckboxOptions().Tooltip("Turns the Static Image of Link in the Pause Menu's Equipment Subscreen " "into a model cycling through his idle animations.")); AddWidget(path, "Show Age-Dependent Equipment", WIDGET_CVAR_CHECKBOX) .CVar(CVAR_ENHANCEMENT("EquipmentAlwaysVisible")) + .RaceDisable(false) .Callback([](WidgetInfo& info) { UpdatePatchHand(); }) .Options(CheckboxOptions().Tooltip("Makes all equipment visible, regardless of age.")); AddWidget(path, "Scale Adult Equipment as Child", WIDGET_CVAR_CHECKBOX) .CVar(CVAR_ENHANCEMENT("ScaleAdultEquipmentAsChild")) + .RaceDisable(false) .PreFunc([](WidgetInfo& info) { info.isHidden = CVarGetInteger(CVAR_ENHANCEMENT("EquipmentAlwaysVisible"), 0) == 0; }) @@ -478,11 +496,14 @@ void SohMenu::AddMenuEnhancements() { "not work properly with some mods.")); AddWidget(path, "Show Gauntlets in First Person", WIDGET_CVAR_CHECKBOX) .CVar(CVAR_ENHANCEMENT("FirstPersonGauntlets")) + .RaceDisable(false) .Options(CheckboxOptions().Tooltip("Renders Gauntlets when using the Bow and Hookshot like in OoT3D.")); AddWidget(path, "Show Chains on Both Sides of Locked Doors", WIDGET_CVAR_CHECKBOX) - .CVar(CVAR_ENHANCEMENT("ShowDoorLocksOnBothSides")); + .CVar(CVAR_ENHANCEMENT("ShowDoorLocksOnBothSides")) + .RaceDisable(false); AddWidget(path, "Color Temple of Time's Medallions", WIDGET_CVAR_CHECKBOX) .CVar(CVAR_ENHANCEMENT("ToTMedallionsColors")) + .RaceDisable(false) .Callback([](WidgetInfo& info) { PatchToTMedallions(); }) .Options(CheckboxOptions().Tooltip( "When Medallions are collected, the Medallion imprints around the Master Sword Pedestal in the Temple " @@ -500,15 +521,18 @@ void SohMenu::AddMenuEnhancements() { "in Hot/Underwater conditions.")); AddWidget(path, "Remember Minimap State Between Areas", WIDGET_CVAR_CHECKBOX) .CVar(CVAR_ENHANCEMENT("RememberMapToggleState")) + .RaceDisable(false) .Options(CheckboxOptions().Tooltip( - "Preverse the minimap visibility state when going between areas rather than default it to \"on\" " + "Preserve the minimap visibility state when going between areas rather than default it to \"on\" " "when going through loading zones.")); AddWidget(path, "Visual Stone of Agony", WIDGET_CVAR_CHECKBOX) .CVar(CVAR_ENHANCEMENT("VisualAgony")) + .RaceDisable(false) .Options(CheckboxOptions().Tooltip( "Displays an icon and plays a sound when Stone of Agony should be activated, for those without rumble.")); AddWidget(path, "Disable HUD Heart Animations", WIDGET_CVAR_CHECKBOX) .CVar(CVAR_ENHANCEMENT("NoHUDHeartAnimation")) + .RaceDisable(false) .Options(CheckboxOptions().Tooltip("Disables the Beating Animation of the Hearts on the HUD.")); AddWidget(path, "Glitch Line-up Tick", WIDGET_CVAR_CHECKBOX) .CVar(CVAR_ENHANCEMENT("DrawLineupTick")) @@ -517,26 +541,32 @@ void SohMenu::AddMenuEnhancements() { "UI based line-ups do not work outside of 4:3")); AddWidget(path, "Disable Black Bar Letterboxes", WIDGET_CVAR_CHECKBOX) .CVar(CVAR_ENHANCEMENT("DisableBlackBars")) + .RaceDisable(false) .Options(CheckboxOptions().Tooltip( "Disables Black Bar Letterboxes during cutscenes and Z-Targeting. NOTE: There may be minor visual " "glitches that were covered up by the black bars. Please disable this setting before reporting a bug.")); AddWidget(path, "Dynamic Wallet Icon", WIDGET_CVAR_CHECKBOX) .CVar(CVAR_ENHANCEMENT("DynamicWalletIcon")) + .RaceDisable(false) .Options(CheckboxOptions().Tooltip( "Changes the Rupee in the Wallet icon to match the wallet size you currently have.")); AddWidget(path, "Always Show Dungeon Entrances", WIDGET_CVAR_CHECKBOX) .CVar(CVAR_ENHANCEMENT("AlwaysShowDungeonMinimapIcon")) + .RaceDisable(false) .Options(CheckboxOptions().Tooltip("Always shows dungeon entrance icons on the Minimap.")); AddWidget(path, "More Info in File Select", WIDGET_CVAR_CHECKBOX) .CVar(CVAR_ENHANCEMENT("FileSelectMoreInfo")) + .RaceDisable(false) .Options(CheckboxOptions().Tooltip( "Shows what items you have collected in the File Select screen, like in N64 Randomizer.")); AddWidget(path, "Better Ammo Rendering in Pause Menu", WIDGET_CVAR_CHECKBOX) .CVar(CVAR_ENHANCEMENT("BetterAmmoRendering")) + .RaceDisable(false) .Options(CheckboxOptions().Tooltip( "Ammo counts in the pause menu will work correctly regardless of the position of items in the Inventory.")); AddWidget(path, "Enable Passage of Time on File Select", WIDGET_CVAR_CHECKBOX) .CVar(CVAR_ENHANCEMENT("TimeFlowFileSelect")) + .RaceDisable(false) .Options(CheckboxOptions().Tooltip("The skybox in the background of the File Select screen will go through the " "day and night cycle over time.")); @@ -544,14 +574,17 @@ void SohMenu::AddMenuEnhancements() { AddWidget(path, "Misc.", WIDGET_SEPARATOR_TEXT); AddWidget(path, "N64 Mode", WIDGET_CVAR_CHECKBOX) .CVar(CVAR_LOW_RES_MODE) + .RaceDisable(false) .Options(CheckboxOptions().Tooltip( "Sets the aspect ratio to 4:3 and lowers resolution to 240p, the N64's native resolution.")); AddWidget(path, "Remove Spin Attack Darkness", WIDGET_CVAR_CHECKBOX) .CVar(CVAR_ENHANCEMENT("RemoveSpinAttackDarkness")) + .RaceDisable(false) .Options(CheckboxOptions().Tooltip("Remove the Darkness that appears when charging a Spin Attack.")); - AddWidget(path, "Draw Distance", WIDGET_SEPARATOR_TEXT); + AddWidget(path, "Draw Distance", WIDGET_SEPARATOR_TEXT).RaceDisable(false); AddWidget(path, "Increase Actor Draw Distance: %dx", WIDGET_CVAR_SLIDER_INT) .CVar(CVAR_ENHANCEMENT("DisableDrawDistance")) + .RaceDisable(false) .Callback([](WidgetInfo& info) { if (CVarGetInteger(CVAR_ENHANCEMENT("DisableDrawDistance"), 1) <= 1) { CVarSetInteger(CVAR_ENHANCEMENT("DisableKokiriDrawDistance"), 0); @@ -561,6 +594,7 @@ void SohMenu::AddMenuEnhancements() { "Increases the range in which Actors/Objects are drawn.")); AddWidget(path, "Kokiri Draw Distance", WIDGET_CVAR_CHECKBOX) .CVar(CVAR_ENHANCEMENT("DisableKokiriDrawDistance")) + .RaceDisable(false) .PreFunc( [](WidgetInfo& info) { info.isHidden = CVarGetInteger(CVAR_ENHANCEMENT("DisableDrawDistance"), 1) <= 1; }) .Options(CheckboxOptions().Tooltip( @@ -860,7 +894,7 @@ void SohMenu::AddMenuEnhancements() { [](WidgetInfo& info) { info.isHidden = CVarGetInteger(CVAR_ENHANCEMENT("CrouchStabHammerFix"), 0) == 0; }) .Options(CheckboxOptions().Tooltip("Make crouch stabbing always do the same damage as a regular slash.")); AddWidget(path, "Fix Broken Giant's Knife Bug", WIDGET_CVAR_CHECKBOX) - .CVar(CVAR_ENHANCEMENT("FixGrokenGiantsKnife")) + .CVar(CVAR_ENHANCEMENT("FixBrokenGiantsKnife")) .PreFunc([](WidgetInfo& info) { info.options->disabled = IS_RANDO && GameInteractor::IsSaveLoaded(true); info.options->disabledTooltip = "This setting is forcefully enabled when you are playing a Randomizer."; @@ -896,22 +930,27 @@ void SohMenu::AddMenuEnhancements() { AddWidget(path, "Graphical Fixes", WIDGET_SEPARATOR_TEXT); AddWidget(path, "Fix L&R Pause Menu", WIDGET_CVAR_CHECKBOX) .CVar(CVAR_ENHANCEMENT("FixMenuLR")) + .RaceDisable(false) .Options(CheckboxOptions().Tooltip("Makes the L and R buttons in the pause menu the same color.")); AddWidget(path, "Fix Dungeon Entrances", WIDGET_CVAR_CHECKBOX) .CVar(CVAR_ENHANCEMENT("FixDungeonMinimapIcon")) + .RaceDisable(false) .Options(CheckboxOptions().Tooltip( "Removes the Dungeon Entrance icon on the top-left corner of the screen when no dungeon is present on the " "current map.")); AddWidget(path, "Fix Two-Handed Idle Animations", WIDGET_CVAR_CHECKBOX) .CVar(CVAR_ENHANCEMENT("TwoHandedIdle")) + .RaceDisable(false) .Options(CheckboxOptions().Tooltip( "Re-Enables the two-handed idle animation, a seemingly finished animation that was disabled on accident " "in the original game.")); AddWidget(path, "Fix Navi Text HUD Position", WIDGET_CVAR_CHECKBOX) .CVar(CVAR_ENHANCEMENT("NaviTextFix")) + .RaceDisable(false) .Options(CheckboxOptions().Tooltip("Correctly centers the Navi text prompt on the HUD's C-Up button.")); AddWidget(path, "Fix Gerudo Warrior's Clothing Colors", WIDGET_CVAR_CHECKBOX) .CVar(CVAR_ENHANCEMENT("GerudoWarriorClothingFix")) + .RaceDisable(false) .Options(CheckboxOptions().Tooltip( "Prevent the Gerudo Warrior's clothes changing color when changing Link's tunic or " "using bombs in front of her.")); @@ -922,15 +961,18 @@ void SohMenu::AddMenuEnhancements() { "Fixes authentic out of bounds texture reads, instead loading textures with the correct size.")); AddWidget(path, "Fix Link's Eyes Open while Sleeping", WIDGET_CVAR_CHECKBOX) .CVar(CVAR_ENHANCEMENT("FixEyesOpenWhileSleeping")) + .RaceDisable(false) .Options(CheckboxOptions().Tooltip( "Fixes Link's eyes being open in the opening cutscene when he is supposed to be sleeping.")); AddWidget(path, "Fix Hand Holding Hammer", WIDGET_CVAR_CHECKBOX) .CVar(CVAR_ENHANCEMENT("FixHammerHand")) + .RaceDisable(false) .Callback([](WidgetInfo& info) { UpdatePatchHand(); }) .Options(CheckboxOptions().Tooltip( "Fixes Adult Link having a backwards Left hand when holding the Megaton Hammer.")); AddWidget(path, "Fix Vanishing Paths", WIDGET_CVAR_COMBOBOX) .CVar(CVAR_ENHANCEMENT("SceneSpecificDirtPathFix")) + .RaceDisable(false) .Callback([](WidgetInfo& info) { if (gPlayState != NULL) { UpdateDirtPathFixState(gPlayState->sceneNum); @@ -948,6 +990,7 @@ void SohMenu::AddMenuEnhancements() { AddWidget(path, "Audio Fixes", WIDGET_SEPARATOR_TEXT); AddWidget(path, "Fix Missing Jingle after 5 Silver Rupees", WIDGET_CVAR_CHECKBOX) .CVar(CVAR_ENHANCEMENT("SilverRupeeJingleExtend")) + .RaceDisable(false) .Options(CheckboxOptions().Tooltip( "Adds 5 higher pitches for the Silver Rupee Jingle for the rooms with more than 5 Silver Rupees. " "Only relevant for playthroughs involving Master Quest Dungeons.")); @@ -955,10 +998,12 @@ void SohMenu::AddMenuEnhancements() { AddWidget(path, "Desync Fixes", WIDGET_SEPARATOR_TEXT); AddWidget(path, "Fix Darunia Dancing too Fast", WIDGET_CVAR_CHECKBOX) .CVar(CVAR_ENHANCEMENT("FixDaruniaDanceSpeed")) + .RaceDisable(false) .Options(CheckboxOptions().Tooltip( "Fixes Darunia's dancing speed so he dances to the beat of Saria's Song, like in the Original Game.")); AddWidget(path, "Fix Credits Timing (PAL)", WIDGET_CVAR_CHECKBOX) .CVar(CVAR_ENHANCEMENT("CreditsFix")) + .RaceDisable(false) .Options(CheckboxOptions().Tooltip( "Extend certain credits scenes so the music lines up properly with the visuals. (PAL only)")); @@ -966,6 +1011,7 @@ void SohMenu::AddMenuEnhancements() { AddWidget(path, "Graphical Restorations", WIDGET_SEPARATOR_TEXT); AddWidget(path, "Red Ganon Blood", WIDGET_CVAR_CHECKBOX) .CVar(CVAR_ENHANCEMENT("RedGanonBlood")) + .RaceDisable(false) .Options( CheckboxOptions().Tooltip("Restore the original red blood from NTSC 1.0/1.1. Disable for Green blood.")); AddWidget(path, "Restore Old Gold Skulltula Cutscene", WIDGET_CVAR_CHECKBOX) @@ -974,6 +1020,7 @@ void SohMenu::AddMenuEnhancements() { "Restore pre-release behavior where defeating a Gold Skulltula will play a cutscene showing it die.")); AddWidget(path, "Pulsate Boss Icon", WIDGET_CVAR_CHECKBOX) .CVar(CVAR_ENHANCEMENT("PulsateBossIcon")) + .RaceDisable(false) .Options(CheckboxOptions().Tooltip( "Restores an unfinished feature to pulsate the boss room icon when you are in the boss room.")); @@ -1657,6 +1704,7 @@ void SohMenu::AddMenuEnhancements() { path.column = SECTION_COLUMN_1; AddWidget(path, "Popout Cosmetics Editor Window", WIDGET_WINDOW_BUTTON) .CVar(CVAR_WINDOW("CosmeticsEditor")) + .RaceDisable(false) .WindowName("Cosmetics Editor") .Options(WindowButtonOptions().Tooltip("Enables the separate Cosmetics Editor Window.")); @@ -1665,6 +1713,7 @@ void SohMenu::AddMenuEnhancements() { AddSidebarEntry("Enhancements", path.sidebarName, 1); AddWidget(path, "Popout Audio Editor Window", WIDGET_WINDOW_BUTTON) .CVar(CVAR_WINDOW("AudioEditor")) + .RaceDisable(false) .WindowName("Audio Editor") .Options(WindowButtonOptions().Tooltip("Enables the separate Audio Editor Window.")); @@ -1673,6 +1722,7 @@ void SohMenu::AddMenuEnhancements() { AddSidebarEntry("Enhancements", path.sidebarName, 2); AddWidget(path, "Popout Gameplay Stats Window", WIDGET_WINDOW_BUTTON) .CVar(CVAR_WINDOW("GameplayStats")) + .RaceDisable(false) .WindowName("Gameplay Stats") .Options(WindowButtonOptions().Tooltip("Enables the separate Gameplay Stats Window.")); @@ -1681,6 +1731,7 @@ void SohMenu::AddMenuEnhancements() { AddSidebarEntry("Enhancements", path.sidebarName, 1); AddWidget(path, "Popout Time Splits Window", WIDGET_WINDOW_BUTTON) .CVar(CVAR_WINDOW("TimeSplits")) + .RaceDisable(false) .WindowName("Time Splits") .Options(WindowButtonOptions().Tooltip("Enables the separate Time Splits Window.")); @@ -1689,19 +1740,23 @@ void SohMenu::AddMenuEnhancements() { AddSidebarEntry("Enhancements", path.sidebarName, 3); AddWidget(path, "Toggle Timers Window", WIDGET_WINDOW_BUTTON) .CVar(CVAR_WINDOW("TimeDisplayEnabled")) + .RaceDisable(false) .WindowName("Additional Timers") .Options(WindowButtonOptions().Tooltip("Enables the separate Additional Timers Window.")); AddWidget(path, "Font Scale: %.2fx", WIDGET_CVAR_SLIDER_FLOAT) .CVar(CVAR_TIME_DISPLAY("FontScale")) + .RaceDisable(false) .Callback([](WidgetInfo& info) { TimeDisplayInitSettings(); }) .Options(FloatSliderOptions().Min(1.0f).Max(5.0f).DefaultValue(1.0f).Format("%.2fx")); AddWidget(path, "Hide Background", WIDGET_CVAR_CHECKBOX) .CVar(CVAR_TIME_DISPLAY("ShowWindowBG")) + .RaceDisable(false) .Callback([](WidgetInfo& info) { TimeDisplayInitSettings(); }); for (auto& timer : timeDisplayList) { - AddWidget(path, timer.timeLabel, WIDGET_CVAR_CHECKBOX).CVar(timer.timeEnable).Callback([](WidgetInfo& info) { - TimeDisplayUpdateDisplayOptions(); - }); + AddWidget(path, timer.timeLabel, WIDGET_CVAR_CHECKBOX) + .RaceDisable(false) + .CVar(timer.timeEnable) + .Callback([](WidgetInfo& info) { TimeDisplayUpdateDisplayOptions(); }); } } diff --git a/soh/soh/SohGui/SohMenuNetwork.cpp b/soh/soh/SohGui/SohMenuNetwork.cpp index 1c67ce28d..637c78285 100644 --- a/soh/soh/SohGui/SohMenuNetwork.cpp +++ b/soh/soh/SohGui/SohMenuNetwork.cpp @@ -39,7 +39,7 @@ void SohMenu::AddMenuNetwork() { }) .Options(ButtonOptions().Tooltip("https://github.com/HarbourMasters/sail")); AddWidget(path, "Host & Port", WIDGET_CUSTOM).CustomFunction([](WidgetInfo& info) { - ImGui::BeginDisabled(Sail::Instance->isEnabled); + ImGui::BeginDisabled(Sail::Instance->isEnabled || CVarGetInteger(CVAR_SETTING("DisableChanges"), 0)); ImGui::Text("%s", info.name.c_str()); CVarInputString("##HostSail", CVAR_REMOTE_SAIL("Host"), InputOptions() @@ -111,7 +111,7 @@ void SohMenu::AddMenuNetwork() { }) .Options(ButtonOptions().Tooltip("https://crowdcontrol.live")); AddWidget(path, "Host & Port", WIDGET_CUSTOM).CustomFunction([](WidgetInfo& info) { - ImGui::BeginDisabled(CrowdControl::Instance->isEnabled); + ImGui::BeginDisabled(CrowdControl::Instance->isEnabled || CVarGetInteger(CVAR_SETTING("DisableChanges"), 0)); ImGui::Text("%s", info.name.c_str()); CVarInputString("##HostCrowdControl", CVAR_REMOTE_CROWD_CONTROL("Host"), InputOptions() diff --git a/soh/soh/SohGui/SohMenuRandomizer.cpp b/soh/soh/SohGui/SohMenuRandomizer.cpp index 9c95431e8..8f4e6e43b 100644 --- a/soh/soh/SohGui/SohMenuRandomizer.cpp +++ b/soh/soh/SohGui/SohMenuRandomizer.cpp @@ -29,6 +29,7 @@ void SohMenu::AddMenuRandomizer() { .DefaultValue(true)); AddWidget(path, "Random Rupee Names", WIDGET_CVAR_CHECKBOX) .CVar(CVAR_RANDOMIZER_ENHANCEMENT("RandomizeRupeeNames")) + .RaceDisable(false) .Options(CheckboxOptions() .Tooltip("When obtaining Rupees, randomize what the Rupee is called in the textbox.") .DefaultValue(true)); @@ -60,6 +61,7 @@ void SohMenu::AddMenuRandomizer() { .DefaultValue(true)); AddWidget(path, "Quest Item Fanfares", WIDGET_CVAR_CHECKBOX) .CVar(CVAR_RANDOMIZER_ENHANCEMENT("QuestItemFanfares")) + .RaceDisable(false) .Options(CheckboxOptions().Tooltip( "Play unique fanfares when obtaining quest items (medallions/stones/songs). Note that these " "fanfares can be longer than usual.")); @@ -71,6 +73,7 @@ void SohMenu::AddMenuRandomizer() { "so you never know what you're getting.")); AddWidget(path, "Simpler Boss Soul Models", WIDGET_CVAR_CHECKBOX) .CVar(CVAR_RANDOMIZER_ENHANCEMENT("SimplerBossSoulModels")) + .RaceDisable(false) .Options(CheckboxOptions().Tooltip( "When shuffling boss souls, they'll appear as a simpler model instead of showing the boss' models." "This might make boss souls more distinguishable from a distance, and can help with performance.")); @@ -93,6 +96,7 @@ void SohMenu::AddMenuRandomizer() { AddSidebarEntry("Randomizer", path.sidebarName, 1); AddWidget(path, "Popout Plandomizer Window", WIDGET_WINDOW_BUTTON) .CVar(CVAR_WINDOW("PlandomizerEditor")) + .RaceDisable(false) .WindowName("Plandomizer Editor") .Options(WindowButtonOptions().Tooltip("Enables the separate Randomizer Settings Window.")); @@ -103,12 +107,14 @@ void SohMenu::AddMenuRandomizer() { AddWidget(path, "Item Tracker", WIDGET_SEPARATOR_TEXT); AddWidget(path, "Toggle Item Tracker", WIDGET_WINDOW_BUTTON) .CVar(CVAR_WINDOW("ItemTracker")) + .RaceDisable(false) .WindowName("Item Tracker") .Options(WindowButtonOptions().Tooltip("Toggles the Item Tracker.").EmbedWindow(false)); AddWidget(path, "Item Tracker Settings", WIDGET_SEPARATOR_TEXT); AddWidget(path, "Popout Item Tracker Settings", WIDGET_WINDOW_BUTTON) .CVar(CVAR_WINDOW("ItemTrackerSettings")) + .RaceDisable(false) .WindowName("Item Tracker Settings") .Options(WindowButtonOptions().Tooltip("Enables the separate Item Tracker Settings Window.")); @@ -119,12 +125,14 @@ void SohMenu::AddMenuRandomizer() { AddWidget(path, "Entrance Tracker", WIDGET_SEPARATOR_TEXT); AddWidget(path, "Toggle Entrance Tracker", WIDGET_WINDOW_BUTTON) .CVar(CVAR_WINDOW("EntranceTracker")) + .RaceDisable(false) .WindowName("Entrance Tracker") .Options(WindowButtonOptions().Tooltip("Toggles the Entrance Tracker.").EmbedWindow(false)); AddWidget(path, "Entrance Tracker Settings", WIDGET_SEPARATOR_TEXT); AddWidget(path, "Popout Entrance Tracker Settings", WIDGET_WINDOW_BUTTON) .CVar(CVAR_WINDOW("EntranceTrackerSettings")) + .RaceDisable(false) .WindowName("Entrance Tracker Settings") .Options(WindowButtonOptions().Tooltip("Enables the separate Entrance Tracker Settings Window.")); @@ -135,12 +143,14 @@ void SohMenu::AddMenuRandomizer() { AddWidget(path, "Check Tracker", WIDGET_SEPARATOR_TEXT); AddWidget(path, "Toggle Check Tracker", WIDGET_WINDOW_BUTTON) .CVar(CVAR_WINDOW("CheckTracker")) + .RaceDisable(false) .WindowName("Check Tracker") .Options(WindowButtonOptions().Tooltip("Toggles the Check Tracker.").EmbedWindow(false)); AddWidget(path, "Check Tracker Settings", WIDGET_SEPARATOR_TEXT); AddWidget(path, "Popout Check Tracker Settings", WIDGET_WINDOW_BUTTON) .CVar(CVAR_WINDOW("CheckTrackerSettings")) + .RaceDisable(false) .WindowName("Check Tracker Settings") .Options(WindowButtonOptions().Tooltip("Enables the separate Check Tracker Settings Window.")); } diff --git a/soh/soh/SohGui/SohMenuSettings.cpp b/soh/soh/SohGui/SohMenuSettings.cpp index 2b1f77799..909c647bd 100644 --- a/soh/soh/SohGui/SohMenuSettings.cpp +++ b/soh/soh/SohGui/SohMenuSettings.cpp @@ -95,6 +95,7 @@ void SohMenu::AddMenuSettings() { AddWidget(path, "Menu Settings", WIDGET_SEPARATOR_TEXT); AddWidget(path, "Menu Theme", WIDGET_CVAR_COMBOBOX) .CVar(CVAR_SETTING("Menu.Theme")) + .RaceDisable(false) .Options(ComboboxOptions() .Tooltip("Changes the Theme of the Menu Widgets.") .ComboMap(menuThemeOptions) @@ -102,18 +103,21 @@ void SohMenu::AddMenuSettings() { #if not defined(__SWITCH__) and not defined(__WIIU__) AddWidget(path, "Menu Controller Navigation", WIDGET_CVAR_CHECKBOX) .CVar(CVAR_IMGUI_CONTROLLER_NAV) + .RaceDisable(false) .Options(CheckboxOptions().Tooltip( "Allows controller navigation of the port menu (Settings, Enhancements,...)\nCAUTION: " "This will disable game inputs while the menu is visible.\n\nD-pad to move between " "items, A to select, B to move up in scope.")); AddWidget(path, "Menu Background Opacity", WIDGET_CVAR_SLIDER_FLOAT) .CVar(CVAR_SETTING("Menu.BackgroundOpacity")) + .RaceDisable(false) .Options(FloatSliderOptions().DefaultValue(0.85f).IsPercentage().Tooltip( "Sets the opacity of the background of the port menu.")); AddWidget(path, "General Settings", WIDGET_SEPARATOR_TEXT); AddWidget(path, "Cursor Always Visible", WIDGET_CVAR_CHECKBOX) .CVar(CVAR_SETTING("CursorVisibility")) + .RaceDisable(false) .Callback([](WidgetInfo& info) { Ship::Context::GetInstance()->GetWindow()->SetForceCursorVisibility( CVarGetInteger(CVAR_SETTING("CursorVisibility"), 0)); @@ -122,6 +126,7 @@ void SohMenu::AddMenuSettings() { #endif AddWidget(path, "Search In Sidebar", WIDGET_CVAR_CHECKBOX) .CVar(CVAR_SETTING("Menu.SidebarSearch")) + .RaceDisable(false) .Callback([](WidgetInfo& info) { if (CVarGetInteger(CVAR_SETTING("Menu.SidebarSearch"), 0)) { mSohMenu->InsertSidebarSearch(); @@ -133,13 +138,16 @@ void SohMenu::AddMenuSettings() { "Displays the Search menu as a sidebar entry in Settings instead of in the header.")); AddWidget(path, "Search Input Autofocus", WIDGET_CVAR_CHECKBOX) .CVar(CVAR_SETTING("Menu.SearchAutofocus")) + .RaceDisable(false) .Options(CheckboxOptions().Tooltip( "Search input box gets autofocus when visible. Does not affect using other widgets.")); AddWidget(path, "Alt Assets Tab hotkey", WIDGET_CVAR_CHECKBOX) .CVar(CVAR_SETTING("Mods.AlternateAssetsHotkey")) + .RaceDisable(false) .Options( CheckboxOptions().Tooltip("Allows pressing the Tab key to toggle alternate assets").DefaultValue(true)); AddWidget(path, "Open App Files Folder", WIDGET_BUTTON) + .RaceDisable(false) .Callback([](WidgetInfo& info) { std::string filesPath = Ship::Context::GetInstance()->GetAppDirectoryPath(); SDL_OpenURL(std::string("file:///" + std::filesystem::absolute(filesPath).string()).c_str()); @@ -149,6 +157,7 @@ void SohMenu::AddMenuSettings() { AddWidget(path, "Boot", WIDGET_SEPARATOR_TEXT); AddWidget(path, "Boot Sequence", WIDGET_CVAR_COMBOBOX) .CVar(CVAR_SETTING("BootSequence")) + .RaceDisable(false) .Options(ComboboxOptions() .DefaultIndex(BOOTSEQUENCE_DEFAULT) .LabelPosition(LabelPositions::Far) @@ -160,9 +169,12 @@ void SohMenu::AddMenuSettings() { "File Select: Skip to file select menu")); AddWidget(path, "Languages", WIDGET_SEPARATOR_TEXT); - AddWidget(path, "Translate Title Screen", WIDGET_CVAR_CHECKBOX).CVar(CVAR_SETTING("TitleScreenTranslation")); + AddWidget(path, "Translate Title Screen", WIDGET_CVAR_CHECKBOX) + .CVar(CVAR_SETTING("TitleScreenTranslation")) + .RaceDisable(false); AddWidget(path, "Language", WIDGET_CVAR_COMBOBOX) .CVar(CVAR_SETTING("Languages")) + .RaceDisable(false) .PreFunc([](WidgetInfo& info) { auto options = std::static_pointer_cast(info.options); SohMenu::UpdateLanguageMap(options->comboMap); @@ -176,14 +188,17 @@ void SohMenu::AddMenuSettings() { #if defined(_WIN32) || defined(__APPLE__) AddWidget(path, "Text to Speech", WIDGET_CVAR_CHECKBOX) .CVar(CVAR_SETTING("A11yTTS")) + .RaceDisable(false) .Options(CheckboxOptions().Tooltip("Enables text to speech for in game dialog")); #endif AddWidget(path, "Disable Idle Camera Re-Centering", WIDGET_CVAR_CHECKBOX) .CVar(CVAR_SETTING("A11yDisableIdleCam")) + .RaceDisable(false) .Options(CheckboxOptions().Tooltip("Disables the automatic re-centering of the camera when idle.")); AddWidget(path, "EXPERIMENTAL", WIDGET_SEPARATOR_TEXT).Options(TextOptions().Color(Colors::Orange)); AddWidget(path, "ImGui Menu Scaling", WIDGET_CVAR_COMBOBOX) .CVar(CVAR_SETTING("ImGuiScale")) + .RaceDisable(false) .Options(ComboboxOptions() .ComboMap(imguiScaleOptions) .Tooltip("Changes the scaling of the ImGui menu elements.") @@ -214,9 +229,11 @@ void SohMenu::AddMenuSettings() { AddWidget(path, "Master Volume: %d %%", WIDGET_CVAR_SLIDER_INT) .CVar(CVAR_SETTING("Volume.Master")) + .RaceDisable(false) .Options(IntSliderOptions().Min(0).Max(100).DefaultValue(40).ShowButtons(true).Format("")); AddWidget(path, "Main Music Volume: %d %%", WIDGET_CVAR_SLIDER_INT) .CVar(CVAR_SETTING("Volume.MainMusic")) + .RaceDisable(false) .Options(IntSliderOptions().Min(0).Max(100).DefaultValue(100).ShowButtons(true).Format("")) .Callback([](WidgetInfo& info) { Audio_SetGameVolume(SEQ_PLAYER_BGM_MAIN, @@ -224,6 +241,7 @@ void SohMenu::AddMenuSettings() { }); AddWidget(path, "Sub Music Volume: %d %%", WIDGET_CVAR_SLIDER_INT) .CVar(CVAR_SETTING("Volume.SubMusic")) + .RaceDisable(false) .Options(IntSliderOptions().Min(0).Max(100).DefaultValue(100).ShowButtons(true).Format("")) .Callback([](WidgetInfo& info) { Audio_SetGameVolume(SEQ_PLAYER_BGM_SUB, @@ -231,6 +249,7 @@ void SohMenu::AddMenuSettings() { }); AddWidget(path, "Fanfare Volume: %d %%", WIDGET_CVAR_SLIDER_INT) .CVar(CVAR_SETTING("Volume.Fanfare")) + .RaceDisable(false) .Options(IntSliderOptions().Min(0).Max(100).DefaultValue(100).ShowButtons(true).Format("")) .Callback([](WidgetInfo& info) { Audio_SetGameVolume(SEQ_PLAYER_FANFARE, @@ -238,11 +257,12 @@ void SohMenu::AddMenuSettings() { }); AddWidget(path, "Sound Effects Volume: %d %%", WIDGET_CVAR_SLIDER_INT) .CVar(CVAR_SETTING("Volume.SFX")) + .RaceDisable(false) .Options(IntSliderOptions().Min(0).Max(100).DefaultValue(100).ShowButtons(true).Format("")) .Callback([](WidgetInfo& info) { Audio_SetGameVolume(SEQ_PLAYER_SFX, ((float)CVarGetInteger(CVAR_SETTING("Volume.SFX"), 100) / 100.0f)); }); - AddWidget(path, "Audio API (Needs reload)", WIDGET_AUDIO_BACKEND); + AddWidget(path, "Audio API (Needs reload)", WIDGET_AUDIO_BACKEND).RaceDisable(false); // Graphics Settings static int32_t maxFps = 360; @@ -253,10 +273,12 @@ void SohMenu::AddMenuSettings() { AddSidebarEntry("Settings", "Graphics", 3); AddWidget(path, "Graphics Options", WIDGET_SEPARATOR_TEXT); AddWidget(path, "Toggle Fullscreen", WIDGET_BUTTON) + .RaceDisable(false) .Callback([](WidgetInfo& info) { Ship::Context::GetInstance()->GetWindow()->ToggleFullscreen(); }) .Options(ButtonOptions().Tooltip("Toggles Fullscreen On/Off.")); AddWidget(path, "Internal Resolution", WIDGET_CVAR_SLIDER_FLOAT) .CVar(CVAR_INTERNAL_RESOLUTION) + .RaceDisable(false) .Callback([](WidgetInfo& info) { Ship::Context::GetInstance()->GetWindow()->SetResolutionMultiplier( CVarGetFloat(CVAR_INTERNAL_RESOLUTION, 1)); @@ -281,6 +303,7 @@ void SohMenu::AddMenuSettings() { #ifndef __WIIU__ AddWidget(path, "Anti-aliasing (MSAA)", WIDGET_CVAR_SLIDER_INT) .CVar(CVAR_MSAA_VALUE) + .RaceDisable(false) .Callback([](WidgetInfo& info) { Ship::Context::GetInstance()->GetWindow()->SetMsaaLevel(CVarGetInteger(CVAR_MSAA_VALUE, 1)); }) @@ -297,6 +320,7 @@ void SohMenu::AddMenuSettings() { const char* fpsFormat = fps == 20 ? "Original (%d)" : "%d"; AddWidget(path, "Current FPS", WIDGET_CVAR_SLIDER_INT) .CVar(CVAR_SETTING("InterpolationFPS")) + .RaceDisable(false) .Callback([](WidgetInfo& info) { auto options = std::static_pointer_cast(info.options); int32_t defaultValue = options->defaultValue; @@ -313,28 +337,33 @@ void SohMenu::AddMenuSettings() { .Options(IntSliderOptions().Tooltip(tooltip).Min(20).Max(maxFps).DefaultValue(20).Format(fpsFormat)); AddWidget(path, "Match Refresh Rate", WIDGET_CVAR_CHECKBOX) .CVar(CVAR_SETTING("MatchRefreshRate")) + .RaceDisable(false) .Options(CheckboxOptions().Tooltip("Matches interpolation value to the refresh rate of your display.")); - AddWidget(path, "Renderer API (Needs reload)", WIDGET_VIDEO_BACKEND); + AddWidget(path, "Renderer API (Needs reload)", WIDGET_VIDEO_BACKEND).RaceDisable(false); AddWidget(path, "Enable Vsync", WIDGET_CVAR_CHECKBOX) .CVar(CVAR_VSYNC_ENABLED) + .RaceDisable(false) .PreFunc([](WidgetInfo& info) { info.isHidden = mSohMenu->disabledMap.at(DISABLE_FOR_NO_VSYNC).active; }) .Options(CheckboxOptions() .Tooltip("Removes tearing, but clamps your max FPS to your displays refresh rate.") .DefaultValue(true)); AddWidget(path, "Windowed Fullscreen", WIDGET_CVAR_CHECKBOX) .CVar(CVAR_SDL_WINDOWED_FULLSCREEN) + .RaceDisable(false) .PreFunc([](WidgetInfo& info) { info.isHidden = mSohMenu->disabledMap.at(DISABLE_FOR_NO_WINDOWED_FULLSCREEN).active; }) .Options(CheckboxOptions().Tooltip("Enables Windowed Fullscreen Mode.")); AddWidget(path, "Allow multi-windows", WIDGET_CVAR_CHECKBOX) .CVar(CVAR_ENABLE_MULTI_VIEWPORTS) + .RaceDisable(false) .PreFunc( [](WidgetInfo& info) { info.isHidden = mSohMenu->disabledMap.at(DISABLE_FOR_NO_MULTI_VIEWPORT).active; }) .Options(CheckboxOptions().Tooltip( "Allows multiple windows to be opened at once. Requires a reload to take effect.")); AddWidget(path, "Texture Filter (Needs reload)", WIDGET_CVAR_COMBOBOX) .CVar(CVAR_TEXTURE_FILTER) + .RaceDisable(false) .Options(ComboboxOptions().Tooltip("Sets the applied Texture Filtering.").ComboMap(textureFilteringMap)); path.column = SECTION_COLUMN_2; @@ -347,6 +376,7 @@ void SohMenu::AddMenuSettings() { AddWidget(path, "Controller Bindings", WIDGET_SEPARATOR_TEXT); AddWidget(path, "Popout Bindings Window", WIDGET_WINDOW_BUTTON) .CVar(CVAR_WINDOW("ControllerConfiguration")) + .RaceDisable(false) .WindowName("Configure Controller") .Options(WindowButtonOptions().Tooltip("Enables the separate Bindings Window.")); @@ -356,12 +386,14 @@ void SohMenu::AddMenuSettings() { AddWidget(path, "Input Viewer", WIDGET_SEPARATOR_TEXT); AddWidget(path, "Toggle Input Viewer", WIDGET_WINDOW_BUTTON) .CVar(CVAR_WINDOW("InputViewer")) + .RaceDisable(false) .WindowName("Input Viewer") .Options(WindowButtonOptions().Tooltip("Toggles the Input Viewer.").EmbedWindow(false)); AddWidget(path, "Input Viewer Settings", WIDGET_SEPARATOR_TEXT); AddWidget(path, "Popout Input Viewer Settings", WIDGET_WINDOW_BUTTON) .CVar(CVAR_WINDOW("InputViewerSettings")) + .RaceDisable(false) .WindowName("Input Viewer Settings") .Options(WindowButtonOptions().Tooltip("Enables the separate Input Viewer Settings Window.")); @@ -371,12 +403,14 @@ void SohMenu::AddMenuSettings() { AddSidebarEntry("Settings", path.sidebarName, 3); AddWidget(path, "Position", WIDGET_CVAR_COMBOBOX) .CVar(CVAR_SETTING("Notifications.Position")) + .RaceDisable(false) .Options(ComboboxOptions() .Tooltip("Which corner of the screen notifications appear in.") .ComboMap(notificationPosition) .DefaultIndex(3)); AddWidget(path, "Duration (seconds):", WIDGET_CVAR_SLIDER_FLOAT) .CVar(CVAR_SETTING("Notifications.Duration")) + .RaceDisable(false) .Options(FloatSliderOptions() .Tooltip("How long notifications are displayed for.") .Format("%.1f") @@ -386,12 +420,14 @@ void SohMenu::AddMenuSettings() { .DefaultValue(10.0f)); AddWidget(path, "Background Opacity", WIDGET_CVAR_SLIDER_FLOAT) .CVar(CVAR_SETTING("Notifications.BgOpacity")) + .RaceDisable(false) .Options(FloatSliderOptions() .Tooltip("How opaque the background of notifications is.") .DefaultValue(0.5f) .IsPercentage()); AddWidget(path, "Size:", WIDGET_CVAR_SLIDER_FLOAT) .CVar(CVAR_SETTING("Notifications.Size")) + .RaceDisable(false) .Options(FloatSliderOptions() .Tooltip("How large notifications are.") .Format("%.1f") @@ -400,6 +436,7 @@ void SohMenu::AddMenuSettings() { .Max(5.0f) .DefaultValue(1.8f)); AddWidget(path, "Test Notification", WIDGET_BUTTON) + .RaceDisable(false) .Callback([](WidgetInfo& info) { Notification::Emit({ .itemIcon = "__OTR__textures/icon_item_24_static/gQuestIconGoldSkulltulaTex", diff --git a/soh/soh/SohGui/UIWidgets.hpp b/soh/soh/SohGui/UIWidgets.hpp index 46efce63a..2382bb7f6 100644 --- a/soh/soh/SohGui/UIWidgets.hpp +++ b/soh/soh/SohGui/UIWidgets.hpp @@ -14,903 +14,905 @@ namespace UIWidgets { - using SectionFunc = void(*)(); +using SectionFunc = void (*)(); - struct TextFilters { - static int FilterNumbers(ImGuiInputTextCallbackData* data) { - if (data->EventChar < 256 && strchr("1234567890", (char)data->EventChar)) { - return 0; - } - return 1; +struct TextFilters { + static int FilterNumbers(ImGuiInputTextCallbackData* data) { + if (data->EventChar < 256 && strchr("1234567890", (char)data->EventChar)) { + return 0; } - - static int FilterAlphaNum(ImGuiInputTextCallbackData* data) { - const char* alphanum = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWYZ0123456789"; - if (data->EventChar < 256 && strchr(alphanum, (char)data->EventChar)) { - return 0; - } - return 1; - } - }; - - std::string WrappedText(const char* text, unsigned int charactersPerLine = 80); - std::string WrappedText(const std::string& text, unsigned int charactersPerLine = 80); - void PaddedSeparator(bool padTop = true, bool padBottom = true, float extraVerticalTopPadding = 0.0f, float extraVerticalBottomPadding = 0.0f); - void Tooltip(const char* text); - - typedef enum ColorPickerModifiers { - ColorPickerResetButton = 1, - ColorPickerRandomButton = 2, - ColorPickerRainbowCheck = 4, - ColorPickerLockCheck = 8, - } ColorPickerModifiers; - - // mostly in order for colors usable by the menu without custom text color - enum Colors { - Red, - DarkRed, - Orange, - Green, - DarkGreen, - LightBlue, - Blue, - DarkBlue, - Indigo, - Violet, - Purple, - Brown, - Gray, - DarkGray, - // not suitable for menu theme use - Pink, - Yellow, - Cyan, - Black, - LightGray, - White, - NoColor - }; - - enum InputTypes { - String, - Scalar - }; - - const std::unordered_map ColorValues = { - { Colors::Pink, ImVec4(0.87f, 0.3f, 0.87f, 1.0f) }, - { Colors::Red, ImVec4(0.55f, 0.0f, 0.0f, 1.0f) }, - { Colors::DarkRed, ImVec4(0.3f, 0.0f, 0.0f, 1.0f) }, - { Colors::Orange, ImVec4(0.85f, 0.55f, 0.0f, 1.0f) }, - { Colors::Yellow, ImVec4(0.95f, 0.95f, 0.0f, 1.0f) }, - { Colors::Green, ImVec4(0.0f, 0.55f, 0.0f, 1.0f) }, - { Colors::DarkGreen, ImVec4(0.0f, 0.3f, 0.0f, 1.0f) }, - { Colors::Cyan, ImVec4(0.0f, 0.9f, 0.9f, 1.0f) }, - { Colors::LightBlue, ImVec4(0.0f, 0.24f, 0.8f, 1.0f) }, - { Colors::Blue, ImVec4(0.08f, 0.03f, 0.65f, 1.0f) }, - { Colors::DarkBlue, ImVec4(0.03f, 0.0f, 0.5f, 1.0f) }, - { Colors::Indigo, ImVec4(0.35f, 0.0f, 0.87f, 1.0f) }, - { Colors::Violet, ImVec4(0.5f, 0.0f, 0.9f, 1.0f) }, - { Colors::Purple, ImVec4(0.31f, 0.0f, 0.67f, 1.0f) }, - { Colors::Brown, ImVec4(0.37f, 0.18f, 0.0f, 1.0f) }, - { Colors::LightGray, ImVec4(0.75f, 0.75f, 0.75f, 1.0f) }, - { Colors::Gray, ImVec4(0.45f, 0.45f, 0.45f, 1.0f) }, - { Colors::DarkGray, ImVec4(0.15f, 0.15f, 0.15f, 1.0f) }, - { Colors::Black, ImVec4(0.0f, 0.0f, 0.0f, 1.0f)}, - { Colors::White, ImVec4(1.0f, 1.0f, 1.0f, 1.0f) }, - { Colors::NoColor, ImVec4(0.0f, 0.0f, 0.0f, 0.0f)}, - }; - - namespace Sizes { - const ImVec2 Inline = ImVec2(0.0f, 0.0f); - const ImVec2 Fill = ImVec2(-1.0f, 0.0f); + return 1; } - enum LabelPositions { - Near, - Far, - Above, - None, - Within, - }; + static int FilterAlphaNum(ImGuiInputTextCallbackData* data) { + const char* alphanum = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWYZ0123456789"; + if (data->EventChar < 256 && strchr(alphanum, (char)data->EventChar)) { + return 0; + } + return 1; + } +}; - enum ComponentAlignments { - Left, - Right, - }; +std::string WrappedText(const char* text, unsigned int charactersPerLine = 80); +std::string WrappedText(const std::string& text, unsigned int charactersPerLine = 80); +void PaddedSeparator(bool padTop = true, bool padBottom = true, float extraVerticalTopPadding = 0.0f, + float extraVerticalBottomPadding = 0.0f); +void Tooltip(const char* text); - struct WidgetOptions{ - const char* tooltip = ""; - bool disabled = false; - const char* disabledTooltip = ""; +typedef enum ColorPickerModifiers { + ColorPickerResetButton = 1, + ColorPickerRandomButton = 2, + ColorPickerRainbowCheck = 4, + ColorPickerLockCheck = 8, +} ColorPickerModifiers; - WidgetOptions& Tooltip(const char* tooltip_) { - tooltip = tooltip_; - return *this; - } - WidgetOptions& Disabled(bool disabled_) { - disabled = disabled_; - return *this; - } - WidgetOptions& DisabledTooltip(const char* disabledTooltip_) { - disabledTooltip = disabledTooltip_; - return *this; - } - }; +// mostly in order for colors usable by the menu without custom text color +enum Colors { + Red, + DarkRed, + Orange, + Green, + DarkGreen, + LightBlue, + Blue, + DarkBlue, + Indigo, + Violet, + Purple, + Brown, + Gray, + DarkGray, + // not suitable for menu theme use + Pink, + Yellow, + Cyan, + Black, + LightGray, + White, + NoColor +}; - struct TextOptions : WidgetOptions { - Colors color = Colors::NoColor; +enum InputTypes { String, Scalar }; - TextOptions& Color(Colors color_) { - color = color_; - return *this; - } - }; +const std::unordered_map ColorValues = { + { Colors::Pink, ImVec4(0.87f, 0.3f, 0.87f, 1.0f) }, { Colors::Red, ImVec4(0.55f, 0.0f, 0.0f, 1.0f) }, + { Colors::DarkRed, ImVec4(0.3f, 0.0f, 0.0f, 1.0f) }, { Colors::Orange, ImVec4(0.85f, 0.55f, 0.0f, 1.0f) }, + { Colors::Yellow, ImVec4(0.95f, 0.95f, 0.0f, 1.0f) }, { Colors::Green, ImVec4(0.0f, 0.55f, 0.0f, 1.0f) }, + { Colors::DarkGreen, ImVec4(0.0f, 0.3f, 0.0f, 1.0f) }, { Colors::Cyan, ImVec4(0.0f, 0.9f, 0.9f, 1.0f) }, + { Colors::LightBlue, ImVec4(0.0f, 0.24f, 0.8f, 1.0f) }, { Colors::Blue, ImVec4(0.08f, 0.03f, 0.65f, 1.0f) }, + { Colors::DarkBlue, ImVec4(0.03f, 0.0f, 0.5f, 1.0f) }, { Colors::Indigo, ImVec4(0.35f, 0.0f, 0.87f, 1.0f) }, + { Colors::Violet, ImVec4(0.5f, 0.0f, 0.9f, 1.0f) }, { Colors::Purple, ImVec4(0.31f, 0.0f, 0.67f, 1.0f) }, + { Colors::Brown, ImVec4(0.37f, 0.18f, 0.0f, 1.0f) }, { Colors::LightGray, ImVec4(0.75f, 0.75f, 0.75f, 1.0f) }, + { Colors::Gray, ImVec4(0.45f, 0.45f, 0.45f, 1.0f) }, { Colors::DarkGray, ImVec4(0.15f, 0.15f, 0.15f, 1.0f) }, + { Colors::Black, ImVec4(0.0f, 0.0f, 0.0f, 1.0f) }, { Colors::White, ImVec4(1.0f, 1.0f, 1.0f, 1.0f) }, + { Colors::NoColor, ImVec4(0.0f, 0.0f, 0.0f, 0.0f) }, +}; - struct ButtonOptions : WidgetOptions { - ImVec2 size = Sizes::Fill; - ImVec2 padding = ImVec2(10.0f, 8.0f); - Colors color = Colors::Gray; +namespace Sizes { +const ImVec2 Inline = ImVec2(0.0f, 0.0f); +const ImVec2 Fill = ImVec2(-1.0f, 0.0f); +} // namespace Sizes - ButtonOptions& Size(ImVec2 size_) { - size = size_; - return *this; - } - ButtonOptions& Padding(ImVec2 padding_) { - padding = padding_; - return *this; - } - ButtonOptions& Tooltip(const char* tooltip_) { - WidgetOptions::tooltip = tooltip_; - return *this; - } - ButtonOptions& Color(Colors color_) { - color = color_; - return *this; - } - }; +enum LabelPositions { + Near, + Far, + Above, + None, + Within, +}; - struct WindowButtonOptions : WidgetOptions { - ImVec2 size = Sizes::Inline; - ImVec2 padding = ImVec2(10.0f, 8.0f); - Colors color = Colors::Gray; - bool showButton = true; - bool embedWindow = true; +enum ComponentAlignments { + Left, + Right, +}; - WindowButtonOptions& Size(ImVec2 size_) { - size = size_; - return *this; - } - WindowButtonOptions& Padding(ImVec2 padding_) { - padding = padding_; - return *this; - } - WindowButtonOptions& Tooltip(const char* tooltip_) { - WidgetOptions::tooltip = tooltip_; - return *this; - } - WindowButtonOptions& Color(Colors color_) { - color = color_; - return *this; - } - WindowButtonOptions& ShowButton(bool showButton_) { - showButton = showButton_; - return *this; - } - WindowButtonOptions& EmbedWindow(bool embedWindow_) { - embedWindow = embedWindow_; - return *this; - } - }; +struct WidgetOptions { + const char* tooltip = ""; + bool disabled = false; + const char* disabledTooltip = ""; - struct CheckboxOptions : WidgetOptions { - bool defaultValue = false; // Only applicable to CVarCheckbox - ComponentAlignments alignment = ComponentAlignments::Left; - LabelPositions labelPosition = LabelPositions::Near; - Colors color = Colors::LightBlue; + WidgetOptions& Tooltip(const char* tooltip_) { + tooltip = tooltip_; + return *this; + } + WidgetOptions& Disabled(bool disabled_) { + disabled = disabled_; + return *this; + } + WidgetOptions& DisabledTooltip(const char* disabledTooltip_) { + disabledTooltip = disabledTooltip_; + return *this; + } +}; - CheckboxOptions& DefaultValue(bool defaultValue_) { - defaultValue = defaultValue_; - return *this; - } - CheckboxOptions& ComponentAlignment(ComponentAlignments alignment_) { - alignment = alignment_; - return *this; - } - CheckboxOptions& LabelPosition(LabelPositions labelPosition_) { - labelPosition = labelPosition_; - return *this; - } - CheckboxOptions& Tooltip(const char* tooltip_) { - WidgetOptions::tooltip = tooltip_; - return *this; - } - CheckboxOptions& Color(Colors color_) { - color = color_; - return *this; - } - CheckboxOptions& DisabledTooltip(const char* disabledTooltip_) { - WidgetOptions::disabledTooltip = disabledTooltip_; - return *this; - } - }; +struct TextOptions : WidgetOptions { + Colors color = Colors::NoColor; - struct ComboboxOptions : WidgetOptions { - std::unordered_map comboMap = {}; - uint32_t defaultIndex = 0; // Only applicable to CVarCombobox - ComponentAlignments alignment = ComponentAlignments::Left; - LabelPositions labelPosition = LabelPositions::Above; - ImGuiComboFlags flags = 0; - Colors color = Colors::LightBlue; + TextOptions& Color(Colors color_) { + color = color_; + return *this; + } +}; - ComboboxOptions& ComboMap(std::unordered_map comboMap_) { - comboMap = comboMap_; - return *this; - } - ComboboxOptions& DefaultIndex(uint32_t defaultIndex_) { - defaultIndex = defaultIndex_; - return *this; - } - ComboboxOptions& ComponentAlignment(ComponentAlignments alignment_) { - alignment = alignment_; - return *this; - } - ComboboxOptions& LabelPosition(LabelPositions labelPosition_) { - labelPosition = labelPosition_; - return *this; - } - ComboboxOptions& Tooltip(const char* tooltip_) { - WidgetOptions::tooltip = tooltip_; - return *this; - } - ComboboxOptions& Color(Colors color_) { - color = color_; - return *this; - } - }; +struct ButtonOptions : WidgetOptions { + ImVec2 size = Sizes::Fill; + ImVec2 padding = ImVec2(10.0f, 8.0f); + Colors color = Colors::Gray; - struct IntSliderOptions : WidgetOptions { - bool showButtons = true; - const char* format = "%d"; - int32_t step = 1; - int32_t min = 1; - int32_t max = 10; - int32_t defaultValue = 1; - bool clamp = true; - ComponentAlignments alignment = ComponentAlignments::Left; - LabelPositions labelPosition = LabelPositions::Above; - Colors color = Colors::Gray; - ImGuiSliderFlags flags = 0; - ImVec2 size = {0,0}; + ButtonOptions& Size(ImVec2 size_) { + size = size_; + return *this; + } + ButtonOptions& Padding(ImVec2 padding_) { + padding = padding_; + return *this; + } + ButtonOptions& Tooltip(const char* tooltip_) { + WidgetOptions::tooltip = tooltip_; + return *this; + } + ButtonOptions& Color(Colors color_) { + color = color_; + return *this; + } +}; - IntSliderOptions& ShowButtons(bool showButtons_) { - showButtons = showButtons_; - return *this; - } - IntSliderOptions& Format(const char* format_) { - format = format_; - return *this; - } - IntSliderOptions& Step(int32_t step_) { - step = step_; - return *this; - } - IntSliderOptions& Min(int32_t min_) { - min = min_; - return *this; - } - IntSliderOptions& Max(int32_t max_) { - max = max_; - return *this; - } - IntSliderOptions& DefaultValue(int32_t defaultValue_) { - defaultValue = defaultValue_; - return *this; - } - IntSliderOptions& ComponentAlignment(ComponentAlignments alignment_) { - alignment = alignment_; - return *this; - } - IntSliderOptions& LabelPosition(LabelPositions labelPosition_) { - labelPosition = labelPosition_; - return *this; - } - IntSliderOptions& Tooltip(const char* tooltip_) { - WidgetOptions::tooltip = tooltip_; - return *this; - } - IntSliderOptions& Color(Colors color_) { - color = color_; - return *this; - } - IntSliderOptions& Size(ImVec2 size_) { - size = size_; - return *this; - } - IntSliderOptions& Clamp(bool clamp_) { - clamp = clamp_; - return *this; - } - }; +struct WindowButtonOptions : WidgetOptions { + ImVec2 size = Sizes::Inline; + ImVec2 padding = ImVec2(10.0f, 8.0f); + Colors color = Colors::Gray; + bool showButton = true; + bool embedWindow = true; - struct FloatSliderOptions : WidgetOptions { - bool showButtons = true; - const char* format = "%f"; - float step = 0.01f; - float min = 0.01f; - float max = 10.0f; - float defaultValue = 1.0f; - bool clamp = true; - bool isPercentage = false; // Multiplies visual value by 100 - ComponentAlignments alignment = ComponentAlignments::Left; - LabelPositions labelPosition = LabelPositions::Above; - Colors color = Colors::Gray; - ImGuiSliderFlags flags = 0; - ImVec2 size = {0,0}; + WindowButtonOptions& Size(ImVec2 size_) { + size = size_; + return *this; + } + WindowButtonOptions& Padding(ImVec2 padding_) { + padding = padding_; + return *this; + } + WindowButtonOptions& Tooltip(const char* tooltip_) { + WidgetOptions::tooltip = tooltip_; + return *this; + } + WindowButtonOptions& Color(Colors color_) { + color = color_; + return *this; + } + WindowButtonOptions& ShowButton(bool showButton_) { + showButton = showButton_; + return *this; + } + WindowButtonOptions& EmbedWindow(bool embedWindow_) { + embedWindow = embedWindow_; + return *this; + } +}; - FloatSliderOptions& ShowButtons(bool showButtons_) { - showButtons = showButtons_; - return *this; - } - FloatSliderOptions& Format(const char* format_) { - format = format_; - return *this; - } - FloatSliderOptions& Step(float step_) { - step = step_; - return *this; - } - FloatSliderOptions& Min(float min_) { - min = min_; - return *this; - } - FloatSliderOptions& Max(float max_) { - max = max_; - return *this; - } - FloatSliderOptions& DefaultValue(float defaultValue_) { - defaultValue = defaultValue_; - return *this; - } - FloatSliderOptions& ComponentAlignment(ComponentAlignments alignment_) { - alignment = alignment_; - return *this; - } - FloatSliderOptions& LabelPosition(LabelPositions labelPosition_) { - labelPosition = labelPosition_; - return *this; - } - FloatSliderOptions& IsPercentage(bool isPercentage_ = true) { - isPercentage = isPercentage_; - format = "%.0f%%"; - min = 0.0f; - max = 1.0f; - return *this; - } - FloatSliderOptions& Tooltip(const char* tooltip_) { - WidgetOptions::tooltip = tooltip_; - return *this; - } - FloatSliderOptions& Color(Colors color_) { - color = color_; - return *this; - } - FloatSliderOptions& Size(ImVec2 size_) { - size = size_; - return *this; - } - FloatSliderOptions& Clamp(bool clamp_) { - clamp = clamp_; - return *this; - } - }; +struct CheckboxOptions : WidgetOptions { + bool defaultValue = false; // Only applicable to CVarCheckbox + ComponentAlignments alignment = ComponentAlignments::Left; + LabelPositions labelPosition = LabelPositions::Near; + Colors color = Colors::LightBlue; - struct RadioButtonsOptions : WidgetOptions { - std::unordered_map buttonMap; - Colors color = Colors::LightBlue; - - RadioButtonsOptions& ButtonMap(std::unordered_map buttonMap_) { - buttonMap = buttonMap_; - return *this; + CheckboxOptions& DefaultValue(bool defaultValue_) { + defaultValue = defaultValue_; + return *this; + } + CheckboxOptions& ComponentAlignment(ComponentAlignments alignment_) { + alignment = alignment_; + return *this; + } + CheckboxOptions& LabelPosition(LabelPositions labelPosition_) { + labelPosition = labelPosition_; + return *this; + } + CheckboxOptions& Tooltip(const char* tooltip_) { + WidgetOptions::tooltip = tooltip_; + return *this; + } + CheckboxOptions& Color(Colors color_) { + color = color_; + return *this; + } + CheckboxOptions& DisabledTooltip(const char* disabledTooltip_) { + WidgetOptions::disabledTooltip = disabledTooltip_; + return *this; + } +}; + +struct ComboboxOptions : WidgetOptions { + std::unordered_map comboMap = {}; + uint32_t defaultIndex = 0; // Only applicable to CVarCombobox + ComponentAlignments alignment = ComponentAlignments::Left; + LabelPositions labelPosition = LabelPositions::Above; + ImGuiComboFlags flags = 0; + Colors color = Colors::LightBlue; + + ComboboxOptions& ComboMap(std::unordered_map comboMap_) { + comboMap = comboMap_; + return *this; + } + ComboboxOptions& DefaultIndex(uint32_t defaultIndex_) { + defaultIndex = defaultIndex_; + return *this; + } + ComboboxOptions& ComponentAlignment(ComponentAlignments alignment_) { + alignment = alignment_; + return *this; + } + ComboboxOptions& LabelPosition(LabelPositions labelPosition_) { + labelPosition = labelPosition_; + return *this; + } + ComboboxOptions& Tooltip(const char* tooltip_) { + WidgetOptions::tooltip = tooltip_; + return *this; + } + ComboboxOptions& Color(Colors color_) { + color = color_; + return *this; + } +}; + +struct IntSliderOptions : WidgetOptions { + bool showButtons = true; + const char* format = "%d"; + int32_t step = 1; + int32_t min = 1; + int32_t max = 10; + int32_t defaultValue = 1; + bool clamp = true; + ComponentAlignments alignment = ComponentAlignments::Left; + LabelPositions labelPosition = LabelPositions::Above; + Colors color = Colors::Gray; + ImGuiSliderFlags flags = 0; + ImVec2 size = { 0, 0 }; + + IntSliderOptions& ShowButtons(bool showButtons_) { + showButtons = showButtons_; + return *this; + } + IntSliderOptions& Format(const char* format_) { + format = format_; + return *this; + } + IntSliderOptions& Step(int32_t step_) { + step = step_; + return *this; + } + IntSliderOptions& Min(int32_t min_) { + min = min_; + return *this; + } + IntSliderOptions& Max(int32_t max_) { + max = max_; + return *this; + } + IntSliderOptions& DefaultValue(int32_t defaultValue_) { + defaultValue = defaultValue_; + return *this; + } + IntSliderOptions& ComponentAlignment(ComponentAlignments alignment_) { + alignment = alignment_; + return *this; + } + IntSliderOptions& LabelPosition(LabelPositions labelPosition_) { + labelPosition = labelPosition_; + return *this; + } + IntSliderOptions& Tooltip(const char* tooltip_) { + WidgetOptions::tooltip = tooltip_; + return *this; + } + IntSliderOptions& Color(Colors color_) { + color = color_; + return *this; + } + IntSliderOptions& Size(ImVec2 size_) { + size = size_; + return *this; + } + IntSliderOptions& Clamp(bool clamp_) { + clamp = clamp_; + return *this; + } +}; + +struct FloatSliderOptions : WidgetOptions { + bool showButtons = true; + const char* format = "%f"; + float step = 0.01f; + float min = 0.01f; + float max = 10.0f; + float defaultValue = 1.0f; + bool clamp = true; + bool isPercentage = false; // Multiplies visual value by 100 + ComponentAlignments alignment = ComponentAlignments::Left; + LabelPositions labelPosition = LabelPositions::Above; + Colors color = Colors::Gray; + ImGuiSliderFlags flags = 0; + ImVec2 size = { 0, 0 }; + + FloatSliderOptions& ShowButtons(bool showButtons_) { + showButtons = showButtons_; + return *this; + } + FloatSliderOptions& Format(const char* format_) { + format = format_; + return *this; + } + FloatSliderOptions& Step(float step_) { + step = step_; + return *this; + } + FloatSliderOptions& Min(float min_) { + min = min_; + return *this; + } + FloatSliderOptions& Max(float max_) { + max = max_; + return *this; + } + FloatSliderOptions& DefaultValue(float defaultValue_) { + defaultValue = defaultValue_; + return *this; + } + FloatSliderOptions& ComponentAlignment(ComponentAlignments alignment_) { + alignment = alignment_; + return *this; + } + FloatSliderOptions& LabelPosition(LabelPositions labelPosition_) { + labelPosition = labelPosition_; + return *this; + } + FloatSliderOptions& IsPercentage(bool isPercentage_ = true) { + isPercentage = isPercentage_; + format = "%.0f%%"; + min = 0.0f; + max = 1.0f; + return *this; + } + FloatSliderOptions& Tooltip(const char* tooltip_) { + WidgetOptions::tooltip = tooltip_; + return *this; + } + FloatSliderOptions& Color(Colors color_) { + color = color_; + return *this; + } + FloatSliderOptions& Size(ImVec2 size_) { + size = size_; + return *this; + } + FloatSliderOptions& Clamp(bool clamp_) { + clamp = clamp_; + return *this; + } +}; + +struct RadioButtonsOptions : WidgetOptions { + std::unordered_map buttonMap; + Colors color = Colors::LightBlue; + + RadioButtonsOptions& ButtonMap(std::unordered_map buttonMap_) { + buttonMap = buttonMap_; + return *this; + } + RadioButtonsOptions& Tooltip(const char* tooltip_) { + WidgetOptions::tooltip = tooltip_; + return *this; + } + RadioButtonsOptions& Color(Colors color_) { + color = color_; + return *this; + } +}; + +struct InputOptions : WidgetOptions { + ComponentAlignments alignment = ComponentAlignments::Left; + LabelPositions labelPosition = LabelPositions::Above; + Colors color = Colors::Gray; + ImVec2 size = { 0, 0 }; + std::string placeholder = ""; + InputTypes type = InputTypes::String; + std::string defaultValue = ""; + bool secret = false; + ImGuiInputFlags addedFlags = 0; + + InputOptions& Tooltip(const char* tooltip_) { + WidgetOptions::tooltip = tooltip_; + return *this; + } + InputOptions& Color(Colors color_) { + color = color_; + return *this; + } + InputOptions& Size(ImVec2 size_) { + size = size_; + return *this; + } + + InputOptions& LabelPosition(LabelPositions labelPosition_) { + labelPosition = labelPosition_; + return *this; + } + + InputOptions& PlaceholderText(std::string&& placeholder_) { + placeholder = std::move(placeholder_); + return *this; + } + + InputOptions& PlaceholderText(std::string& placeholder_) { + placeholder = placeholder_; + return *this; + } + + InputOptions& InputType(InputTypes type_) { + type = type_; + return *this; + } + + InputOptions& DefaultValue(std::string defaultValue_) { + defaultValue = defaultValue_; + return *this; + } + + InputOptions& IsSecret(bool secret_ = false) { + secret = secret_; + return *this; + } +}; + +void PushStyleMenu(const ImVec4& color); +void PushStyleMenu(Colors color = Colors::LightBlue); +void PopStyleMenu(); +bool BeginMenu(const char* label, Colors color = Colors::LightBlue); + +void PushStyleMenuItem(const ImVec4& color); +void PushStyleMenuItem(Colors color = Colors::LightBlue); +void PopStyleMenuItem(); +bool MenuItem(const char* label, const char* shortcut = NULL, Colors color = Colors::LightBlue); + +void PushStyleButton(const ImVec4& color, ImVec2 padding = ImVec2(10.0f, 8.0f)); +void PushStyleButton(Colors color = Colors::Gray, ImVec2 padding = ImVec2(10.0f, 8.0f)); +void PopStyleButton(); +bool Button(const char* label, const ButtonOptions& options = {}); +bool WindowButton(const char* label, const char* cvarName, std::shared_ptr windowPtr, + const WindowButtonOptions& options = {}); + +void PushStyleCheckbox(const ImVec4& color); +void PushStyleCheckbox(Colors color = Colors::LightBlue); +void PopStyleCheckbox(); +void RenderText(ImVec2 pos, const char* text, const char* text_end, bool hide_text_after_hash); +bool Checkbox(const char* label, bool* v, const CheckboxOptions& options = {}); +bool CVarCheckbox(const char* label, const char* cvarName, const CheckboxOptions& options = {}); + +void PushStyleCombobox(const ImVec4& color); +void PushStyleCombobox(Colors color = Colors::LightBlue); +void PopStyleCombobox(); + +void PushStyleTabs(const ImVec4& color); +void PushStyleTabs(Colors color = Colors::LightBlue); +void PopStyleTabs(); + +void PushStyleInput(const ImVec4& color); +void PushStyleInput(Colors color = Colors::LightBlue); +void PopStyleInput(); + +void PushStyleHeader(const ImVec4& color); +void PushStyleHeader(Colors color = Colors::LightBlue); +void PopStyleHeader(); + +void Spacer(float height = 0.0f); +void Separator(bool padTop = true, bool padBottom = true, float extraVerticalTopPadding = 0.0f, + float extraVerticalBottomPadding = 0.0f); + +float CalcComboWidth(const char* preview_value, ImGuiComboFlags flags); + +template +bool Combobox(const char* label, T* value, const std::unordered_map& comboMap, + const ComboboxOptions& options = {}) { + bool dirty = false; + float startX = ImGui::GetCursorPosX(); + std::string invisibleLabelStr = "##" + std::string(label); + const char* invisibleLabel = invisibleLabelStr.c_str(); + ImGui::PushID(label); + ImGui::BeginGroup(); + ImGui::BeginDisabled(options.disabled); + PushStyleCombobox(options.color); + + const char* longest; + size_t length = 0; + for (auto& [index, string] : comboMap) { + size_t len = strlen(string); + if (len > length) { + longest = string; + length = len; } - RadioButtonsOptions& Tooltip(const char* tooltip_) { - WidgetOptions::tooltip = tooltip_; - return *this; - } - RadioButtonsOptions& Color(Colors color_) { - color = color_; - return *this; - } - }; + } + float comboWidth = CalcComboWidth(longest, options.flags); - struct InputOptions : WidgetOptions { - ComponentAlignments alignment = ComponentAlignments::Left; - LabelPositions labelPosition = LabelPositions::Above; - Colors color = Colors::Gray; - ImVec2 size = {0,0}; - std::string placeholder = ""; - InputTypes type = InputTypes::String; - std::string defaultValue = ""; - bool secret = false; - ImGuiInputFlags addedFlags = 0; - - InputOptions& Tooltip(const char* tooltip_) { - WidgetOptions::tooltip = tooltip_; - return *this; - } - InputOptions& Color(Colors color_) { - color = color_; - return *this; - } - InputOptions& Size(ImVec2 size_) { - size = size_; - return *this; - } - - InputOptions& LabelPosition(LabelPositions labelPosition_) { - labelPosition = labelPosition_; - return *this; - } - - InputOptions& PlaceholderText(std::string&& placeholder_) { - placeholder = std::move(placeholder_); - return *this; - } - - InputOptions& PlaceholderText(std::string& placeholder_) { - placeholder = placeholder_; - return *this; - } - - InputOptions& InputType(InputTypes type_) { - type = type_; - return *this; - } - - InputOptions& DefaultValue(std::string defaultValue_) { - defaultValue = defaultValue_; - return *this; - } - - InputOptions& IsSecret(bool secret_ = false) { - secret = secret_; - return *this; - } - }; - - void PushStyleMenu(const ImVec4& color); - void PushStyleMenu(Colors color = Colors::LightBlue); - void PopStyleMenu(); - bool BeginMenu(const char* label, Colors color = Colors::LightBlue); - - void PushStyleMenuItem(const ImVec4& color); - void PushStyleMenuItem(Colors color = Colors::LightBlue); - void PopStyleMenuItem(); - bool MenuItem(const char* label, const char* shortcut = NULL, Colors color = Colors::LightBlue); - - void PushStyleButton(const ImVec4& color, ImVec2 padding = ImVec2(10.0f, 8.0f)); - void PushStyleButton(Colors color = Colors::Gray, ImVec2 padding = ImVec2(10.0f, 8.0f)); - void PopStyleButton(); - bool Button(const char* label, const ButtonOptions& options = {}); - bool WindowButton(const char* label, const char* cvarName, std::shared_ptr windowPtr, const WindowButtonOptions& options = {}); - - void PushStyleCheckbox(const ImVec4& color); - void PushStyleCheckbox(Colors color = Colors::LightBlue); - void PopStyleCheckbox(); - void RenderText(ImVec2 pos, const char* text, const char* text_end, bool hide_text_after_hash); - bool Checkbox(const char* label, bool* v, const CheckboxOptions& options = {}); - bool CVarCheckbox(const char* label, const char* cvarName, const CheckboxOptions& options = {}); - - void PushStyleCombobox(const ImVec4& color); - void PushStyleCombobox(Colors color = Colors::LightBlue); - void PopStyleCombobox(); - - void PushStyleTabs(const ImVec4& color); - void PushStyleTabs(Colors color = Colors::LightBlue); - void PopStyleTabs(); - - void PushStyleInput(const ImVec4& color); - void PushStyleInput(Colors color = Colors::LightBlue); - void PopStyleInput(); - - void PushStyleHeader(const ImVec4& color); - void PushStyleHeader(Colors color = Colors::LightBlue); - void PopStyleHeader(); - - void Spacer(float height = 0.0f); - void Separator(bool padTop = true, bool padBottom = true, float extraVerticalTopPadding = 0.0f, - float extraVerticalBottomPadding = 0.0f); - - float CalcComboWidth(const char* preview_value, ImGuiComboFlags flags); - - template - bool Combobox(const char* label, T* value, const std::unordered_map& comboMap, const ComboboxOptions& options = {}) { - bool dirty = false; - float startX = ImGui::GetCursorPosX(); - std::string invisibleLabelStr = "##" + std::string(label); - const char* invisibleLabel = invisibleLabelStr.c_str(); - ImGui::PushID(label); - ImGui::BeginGroup(); - ImGui::BeginDisabled(options.disabled); - PushStyleCombobox(options.color); - - const char* longest; - size_t length = 0; - for (auto& [index, string] : comboMap) { - size_t len = strlen(string); - if (len > length) { - longest = string; - length = len; + ImGui::AlignTextToFramePadding(); + if (options.labelPosition != LabelPositions::None) { + if (options.alignment == ComponentAlignments::Right) { + ImGui::Text("%s", label); + if (options.labelPosition == LabelPositions::Above) { + ImGui::NewLine(); + ImGui::SameLine(ImGui::GetContentRegionAvail().x - comboWidth); + } else if (options.labelPosition == LabelPositions::Near) { + ImGui::SameLine(); + } else if (options.labelPosition == LabelPositions::Far) { + ImGui::SameLine(ImGui::GetContentRegionAvail().x - comboWidth); } - } - float comboWidth = CalcComboWidth(longest, options.flags); - - ImGui::AlignTextToFramePadding(); - if (options.labelPosition != LabelPositions::None) { - if (options.alignment == ComponentAlignments::Right) { + } else if (options.alignment == ComponentAlignments::Left) { + if (options.labelPosition == LabelPositions::Above) { ImGui::Text("%s", label); - if (options.labelPosition == LabelPositions::Above) { - ImGui::NewLine(); - ImGui::SameLine(ImGui::GetContentRegionAvail().x - comboWidth); - } else if (options.labelPosition == LabelPositions::Near) { - ImGui::SameLine(); - } else if (options.labelPosition == LabelPositions::Far) { - ImGui::SameLine(ImGui::GetContentRegionAvail().x - comboWidth); - } - } else if (options.alignment == ComponentAlignments::Left) { - if (options.labelPosition == LabelPositions::Above) { - ImGui::Text("%s", label); - } } } - - ImGui::SetNextItemWidth(comboWidth); - if (ImGui::BeginCombo(invisibleLabel, comboMap.at(*value), options.flags)) { - ImGui::PushStyleVar(ImGuiStyleVar_ItemSpacing, ImVec2(10.0f, 10.0f)); - for (const auto& pair : comboMap) { - if (strlen(pair.second) > 1) { - if (ImGui::Selectable(pair.second, pair.first == *value)) { - *value = pair.first; - dirty = true; - } - } - } - ImGui::PopStyleVar(); - ImGui::EndCombo(); - } - - if (options.labelPosition != LabelPositions::None) { - if (options.alignment == ComponentAlignments::Left) { - if (options.labelPosition == LabelPositions::Near) { - ImGui::SameLine(); - ImGui::Text("%s", label); - } else if (options.labelPosition == LabelPositions::Far) { - float width = ImGui::CalcTextSize(comboMap.at(*value)).x + ImGui::GetStyle().FramePadding.x * 2; - ImGui::SameLine(ImGui::GetContentRegionAvail().x - width); - ImGui::Text("%s", label); - } - } - } - PopStyleCombobox(); - ImGui::EndDisabled(); - ImGui::EndGroup(); - if (options.disabled && ImGui::IsItemHovered(ImGuiHoveredFlags_AllowWhenDisabled) && !Ship_IsCStringEmpty(options.disabledTooltip)) { - ImGui::SetTooltip("%s", WrappedText(options.disabledTooltip).c_str()); - } else if (ImGui::IsItemHovered(ImGuiHoveredFlags_AllowWhenDisabled) && !Ship_IsCStringEmpty(options.tooltip)) { - ImGui::SetTooltip("%s", WrappedText(options.tooltip).c_str()); - } - ImGui::PopID(); - return dirty; } - template - bool Combobox(const char* label, T* value, const std::vector& comboVector, const ComboboxOptions& options = {}) { - bool dirty = false; - size_t currentValueIndex = static_cast(*value); - std::string invisibleLabelStr = "##" + std::string(label); - const char* invisibleLabel = invisibleLabelStr.c_str(); - ImGui::PushID(label); - ImGui::BeginGroup(); - ImGui::BeginDisabled(options.disabled); - PushStyleCombobox(options.color); - - const char* longest; - int length = 0; - for (auto& string : comboVector) { - int len = strlen(string); - if (len > length) { - longest = string; - length = len; + ImGui::SetNextItemWidth(comboWidth); + if (ImGui::BeginCombo(invisibleLabel, comboMap.at(*value), options.flags)) { + ImGui::PushStyleVar(ImGuiStyleVar_ItemSpacing, ImVec2(10.0f, 10.0f)); + for (const auto& pair : comboMap) { + if (strlen(pair.second) > 1) { + if (ImGui::Selectable(pair.second, pair.first == *value)) { + *value = pair.first; + dirty = true; + } } } - float comboWidth = CalcComboWidth(longest, options.flags); + ImGui::PopStyleVar(); + ImGui::EndCombo(); + } - ImGui::AlignTextToFramePadding(); - if (options.labelPosition != LabelPositions::None) { - if (options.alignment == ComponentAlignments::Right) { + if (options.labelPosition != LabelPositions::None) { + if (options.alignment == ComponentAlignments::Left) { + if (options.labelPosition == LabelPositions::Near) { + ImGui::SameLine(); ImGui::Text("%s", label); - if (options.labelPosition == LabelPositions::Above) { - ImGui::NewLine(); - ImGui::SameLine(ImGui::GetContentRegionAvail().x - comboWidth); - } else if (options.labelPosition == LabelPositions::Near) { - ImGui::SameLine(); - } else if (options.labelPosition == LabelPositions::Far) { - ImGui::SameLine(ImGui::GetContentRegionAvail().x - comboWidth); - } - } else if (options.alignment == ComponentAlignments::Left) { - if (options.labelPosition == LabelPositions::Above) { - ImGui::Text("%s", label); - } - } - } - - ImGui::SetNextItemWidth(comboWidth); - if (ImGui::BeginCombo(invisibleLabel, comboVector.at(currentValueIndex), options.flags)) { - ImGui::PushStyleVar(ImGuiStyleVar_ItemSpacing, ImVec2(10.0f, 10.0f)); - for (size_t i = 0; i < comboVector.size(); ++i) { - auto newValue = static_cast(i); - if (strlen(comboVector.at(i)) > 1) { - if (ImGui::Selectable(comboVector.at(i), newValue == *value)) { - *value = newValue; - dirty = true; - } - } - } - ImGui::PopStyleVar(); - ImGui::EndCombo(); - } - - if (options.labelPosition != LabelPositions::None) { - if (options.alignment == ComponentAlignments::Left) { - if (options.labelPosition == LabelPositions::Near) { - ImGui::SameLine(); - ImGui::Text("%s", label); - } else if (options.labelPosition == LabelPositions::Far) { - float width = ImGui::CalcTextSize(comboVector.at(*value)).x + ImGui::GetStyle().FramePadding.x * 2; - ImGui::SameLine(ImGui::GetContentRegionAvail().x - width); - ImGui::Text("%s", label); - } - } - } - - PopStyleCombobox(); - ImGui::EndDisabled(); - ImGui::EndGroup(); - if (options.disabled && ImGui::IsItemHovered(ImGuiHoveredFlags_AllowWhenDisabled) && !Ship_IsCStringEmpty(options.disabledTooltip)) { - ImGui::SetTooltip("%s", WrappedText(options.disabledTooltip).c_str()); - } else if (ImGui::IsItemHovered(ImGuiHoveredFlags_AllowWhenDisabled) && !Ship_IsCStringEmpty(options.tooltip)) { - ImGui::SetTooltip("%s", WrappedText(options.tooltip).c_str()); - } - ImGui::PopID(); - return dirty; - } - - template - bool Combobox(const char* label, T* value, const std::vector& comboVector, const ComboboxOptions& options = {}) { - bool dirty = false; - size_t currentValueIndex = static_cast(*value); - std::string invisibleLabelStr = "##" + std::string(label); - const char* invisibleLabel = invisibleLabelStr.c_str(); - ImGui::PushID(label); - ImGui::BeginGroup(); - ImGui::BeginDisabled(options.disabled); - PushStyleCombobox(options.color); - - const char* longest; - int length = 0; - for (auto& string : comboVector) { - int len = string.length(); - if (len > length) { - longest = string.c_str(); - length = len; - } - } - float comboWidth = CalcComboWidth(longest, options.flags); - - ImGui::AlignTextToFramePadding(); - if (options.labelPosition != LabelPositions::None) { - if (options.alignment == ComponentAlignments::Right) { + } else if (options.labelPosition == LabelPositions::Far) { + float width = ImGui::CalcTextSize(comboMap.at(*value)).x + ImGui::GetStyle().FramePadding.x * 2; + ImGui::SameLine(ImGui::GetContentRegionAvail().x - width); ImGui::Text("%s", label); - if (options.labelPosition == LabelPositions::Above) { - ImGui::NewLine(); - ImGui::SameLine(ImGui::GetContentRegionAvail().x - comboWidth); - } else if (options.labelPosition == LabelPositions::Near) { - ImGui::SameLine(); - } else if (options.labelPosition == LabelPositions::Far) { - ImGui::SameLine(ImGui::GetContentRegionAvail().x - comboWidth); - } - } else if (options.alignment == ComponentAlignments::Left) { - if (options.labelPosition == LabelPositions::Above) { - ImGui::Text("%s", label); - } } } - - ImGui::SetNextItemWidth(comboWidth); - if (ImGui::BeginCombo(invisibleLabel, comboVector.at(currentValueIndex).c_str(), options.flags)) { - ImGui::PushStyleVar(ImGuiStyleVar_ItemSpacing, ImVec2(10.0f, 10.0f)); - for (size_t i = 0; i < comboVector.size(); ++i) { - auto newValue = static_cast(i); - if (comboVector.at(i).length() > 1) { - if (ImGui::Selectable(comboVector.at(i).c_str(), newValue == *value)) { - *value = newValue; - dirty = true; - } - } - } - ImGui::PopStyleVar(); - ImGui::EndCombo(); - } - - if (options.labelPosition != LabelPositions::None) { - if (options.alignment == ComponentAlignments::Left) { - if (options.labelPosition == LabelPositions::Near) { - ImGui::SameLine(); - ImGui::Text("%s", label); - } else if (options.labelPosition == LabelPositions::Far) { - float width = ImGui::CalcTextSize(comboVector.at(*value).c_str()).x + ImGui::GetStyle().FramePadding.x * 2; - ImGui::SameLine(ImGui::GetContentRegionAvail().x - width); - ImGui::Text("%s", label); - } - } - } - - PopStyleCombobox(); - ImGui::EndDisabled(); - ImGui::EndGroup(); - if (options.disabled && ImGui::IsItemHovered(ImGuiHoveredFlags_AllowWhenDisabled) && !Ship_IsCStringEmpty(options.disabledTooltip)) { - ImGui::SetTooltip("%s", WrappedText(options.disabledTooltip).c_str()); - } else if (ImGui::IsItemHovered(ImGuiHoveredFlags_AllowWhenDisabled) && !Ship_IsCStringEmpty(options.tooltip)) { - ImGui::SetTooltip("%s", WrappedText(options.tooltip).c_str()); - } - ImGui::PopID(); - return dirty; } - - template - bool Combobox(const char* label, T* value, const char* (&comboArray)[N], const ComboboxOptions& options = {}) { - bool dirty = false; - size_t currentValueIndex = static_cast(*value); - if (currentValueIndex >= N) { - currentValueIndex = 0; - } - std::string invisibleLabelStr = "##" + std::string(label); - const char* invisibleLabel = invisibleLabelStr.c_str(); - ImGui::PushID(label); - ImGui::BeginGroup(); - ImGui::BeginDisabled(options.disabled); - PushStyleCombobox(options.color); - - const char* longest; - size_t length = 0; - for (size_t i = 0; i < N; i++) { - size_t len = strlen(comboArray[i]); - if (len > length) { - longest = comboArray[i]; - length = len; - } - } - float comboWidth = CalcComboWidth(longest, options.flags); - - ImGui::AlignTextToFramePadding(); - if (options.labelPosition != LabelPositions::None) { - if (options.alignment == ComponentAlignments::Right) { - ImGui::Text("%s", label); - if (options.labelPosition == LabelPositions::Above) { - ImGui::NewLine(); - ImGui::SameLine(ImGui::GetContentRegionAvail().x - comboWidth); - } else if (options.labelPosition == LabelPositions::Near) { - ImGui::SameLine(); - } else if (options.labelPosition == LabelPositions::Far) { - ImGui::SameLine(ImGui::GetContentRegionAvail().x - comboWidth); - } - } else if (options.alignment == ComponentAlignments::Left) { - if (options.labelPosition == LabelPositions::Above) { - ImGui::Text("%s", label); - } - } - } - - ImGui::SetNextItemWidth(comboWidth); - if (ImGui::BeginCombo(invisibleLabel, comboArray[currentValueIndex], options.flags)) { - ImGui::PushStyleVar(ImGuiStyleVar_ItemSpacing, ImVec2(10.0f, 10.0f)); - for (size_t i = 0; i < N; ++i) { - auto newValue = static_cast(i); - if (strlen(comboArray[i]) > 1) { - if (ImGui::Selectable(comboArray[i], newValue == *value)) { - *value = newValue; - dirty = true; - } - } - } - ImGui::PopStyleVar(); - ImGui::EndCombo(); - } - - if (options.labelPosition != LabelPositions::None) { - if (options.alignment == ComponentAlignments::Left) { - if (options.labelPosition == LabelPositions::Near) { - ImGui::SameLine(); - ImGui::Text("%s", label); - } else if (options.labelPosition == LabelPositions::Far) { - float width = ImGui::CalcTextSize(comboArray[*value]).x + ImGui::GetStyle().FramePadding.x * 2; - ImGui::SameLine(ImGui::GetContentRegionAvail().x - width); - ImGui::Text("%s", label); - } - } - } - PopStyleCombobox(); - ImGui::EndDisabled(); - ImGui::EndGroup(); - if (options.disabled && ImGui::IsItemHovered(ImGuiHoveredFlags_AllowWhenDisabled) && !Ship_IsCStringEmpty(options.disabledTooltip)) { - ImGui::SetTooltip("%s", WrappedText(options.disabledTooltip).c_str()); - } else if (ImGui::IsItemHovered(ImGuiHoveredFlags_AllowWhenDisabled) && !Ship_IsCStringEmpty(options.tooltip)) { - ImGui::SetTooltip("%s", WrappedText(options.tooltip).c_str()); - } - ImGui::PopID(); - return dirty; + PopStyleCombobox(); + ImGui::EndDisabled(); + ImGui::EndGroup(); + if (options.disabled && ImGui::IsItemHovered(ImGuiHoveredFlags_AllowWhenDisabled) && + !Ship_IsCStringEmpty(options.disabledTooltip)) { + ImGui::SetTooltip("%s", WrappedText(options.disabledTooltip).c_str()); + } else if (ImGui::IsItemHovered(ImGuiHoveredFlags_AllowWhenDisabled) && !Ship_IsCStringEmpty(options.tooltip)) { + ImGui::SetTooltip("%s", WrappedText(options.tooltip).c_str()); } - - template - bool CVarCombobox(const char* label, const char* cvarName, const std::unordered_map& comboMap, const ComboboxOptions& options = {}) { - bool dirty = false; - int32_t value = CVarGetInteger(cvarName, options.defaultIndex); - if (Combobox(label, &value, comboMap, options)) { - CVarSetInteger(cvarName, value); - Ship::Context::GetInstance()->GetWindow()->GetGui()->SaveConsoleVariablesNextFrame(); - ShipInit::Init(cvarName); - dirty = true; - } - return dirty; - } - - template - bool CVarCombobox(const char* label, const char* cvarName, const std::vector& comboVector, const ComboboxOptions& options = {}) { - bool dirty = false; - int32_t value = CVarGetInteger(cvarName, options.defaultIndex); - if (Combobox(label, &value, comboVector, options)) { - CVarSetInteger(cvarName, value); - Ship::Context::GetInstance()->GetWindow()->GetGui()->SaveConsoleVariablesNextFrame(); - ShipInit::Init(cvarName); - dirty = true; - } - return dirty; - } - - template - bool CVarCombobox(const char* label, const char* cvarName, const char* (&comboArray)[N], const ComboboxOptions& options = {}) { - bool dirty = false; - int32_t value = CVarGetInteger(cvarName, options.defaultIndex); - if (Combobox(label, &value, comboArray, options)) { - CVarSetInteger(cvarName, value); - Ship::Context::GetInstance()->GetWindow()->GetGui()->SaveConsoleVariablesNextFrame(); - ShipInit::Init(cvarName); - dirty = true; - } - return dirty; - } - - void PushStyleSlider(Colors color = Colors::LightBlue); - void PopStyleSlider(); - bool SliderInt(const char* label, int32_t* value, const IntSliderOptions& options = {}); - bool CVarSliderInt(const char* label, const char* cvarName, const IntSliderOptions& options = {}); - bool SliderFloat(const char* label, float* value, const FloatSliderOptions& options = {}); - bool CVarSliderFloat(const char* label, const char* cvarName, const FloatSliderOptions& options = {}); - bool InputString(const char* label, std::string* value, const InputOptions& options = {}); - bool CVarInputString(const char* label, const char* cvarName, const InputOptions& options = {}); - bool InputInt(const char* label, int32_t* value, const InputOptions& options = {}); - bool CVarInputInt(const char* label, const char* cvarName, const InputOptions& options = {}); - bool CVarColorPicker(const char* label, const char* cvarName, Color_RGBA8 defaultColor, bool hasAlpha = false, uint8_t modifiers = 0, UIWidgets::Colors themeColor = UIWidgets::Colors::LightBlue); - bool RadioButton(const char* label, bool active); - bool CVarRadioButton(const char* text, const char* cvarName, int32_t id, const RadioButtonsOptions& options); - bool StateButton(const char* str_id, const char* label, ImVec2 size, UIWidgets::ButtonOptions options, ImGuiButtonFlags flags = ImGuiButtonFlags_None); - void DrawFlagArray32(const std::string& name, uint32_t& flags, Colors color = Colors::LightBlue); - void DrawFlagArray16(const std::string& name, uint16_t& flags, Colors color = Colors::LightBlue); - void DrawFlagArray8(const std::string& name, uint8_t& flags, Colors color = Colors::LightBlue); - void DrawFlagArray8Mask(const std::string& name, uint8_t& flags, Colors color = Colors::LightBlue); - - void InsertHelpHoverText(const std::string& text); - void InsertHelpHoverText(const char* text); + ImGui::PopID(); + return dirty; } + +template +bool Combobox(const char* label, T* value, const std::vector& comboVector, + const ComboboxOptions& options = {}) { + bool dirty = false; + size_t currentValueIndex = static_cast(*value); + std::string invisibleLabelStr = "##" + std::string(label); + const char* invisibleLabel = invisibleLabelStr.c_str(); + ImGui::PushID(label); + ImGui::BeginGroup(); + ImGui::BeginDisabled(options.disabled); + PushStyleCombobox(options.color); + + const char* longest; + int length = 0; + for (auto& string : comboVector) { + int len = strlen(string); + if (len > length) { + longest = string; + length = len; + } + } + float comboWidth = CalcComboWidth(longest, options.flags); + + ImGui::AlignTextToFramePadding(); + if (options.labelPosition != LabelPositions::None) { + if (options.alignment == ComponentAlignments::Right) { + ImGui::Text("%s", label); + if (options.labelPosition == LabelPositions::Above) { + ImGui::NewLine(); + ImGui::SameLine(ImGui::GetContentRegionAvail().x - comboWidth); + } else if (options.labelPosition == LabelPositions::Near) { + ImGui::SameLine(); + } else if (options.labelPosition == LabelPositions::Far) { + ImGui::SameLine(ImGui::GetContentRegionAvail().x - comboWidth); + } + } else if (options.alignment == ComponentAlignments::Left) { + if (options.labelPosition == LabelPositions::Above) { + ImGui::Text("%s", label); + } + } + } + + ImGui::SetNextItemWidth(comboWidth); + if (ImGui::BeginCombo(invisibleLabel, comboVector.at(currentValueIndex), options.flags)) { + ImGui::PushStyleVar(ImGuiStyleVar_ItemSpacing, ImVec2(10.0f, 10.0f)); + for (size_t i = 0; i < comboVector.size(); ++i) { + auto newValue = static_cast(i); + if (strlen(comboVector.at(i)) > 1) { + if (ImGui::Selectable(comboVector.at(i), newValue == *value)) { + *value = newValue; + dirty = true; + } + } + } + ImGui::PopStyleVar(); + ImGui::EndCombo(); + } + + if (options.labelPosition != LabelPositions::None) { + if (options.alignment == ComponentAlignments::Left) { + if (options.labelPosition == LabelPositions::Near) { + ImGui::SameLine(); + ImGui::Text("%s", label); + } else if (options.labelPosition == LabelPositions::Far) { + float width = ImGui::CalcTextSize(comboVector.at(*value)).x + ImGui::GetStyle().FramePadding.x * 2; + ImGui::SameLine(ImGui::GetContentRegionAvail().x - width); + ImGui::Text("%s", label); + } + } + } + + PopStyleCombobox(); + ImGui::EndDisabled(); + ImGui::EndGroup(); + if (options.disabled && ImGui::IsItemHovered(ImGuiHoveredFlags_AllowWhenDisabled) && + !Ship_IsCStringEmpty(options.disabledTooltip)) { + ImGui::SetTooltip("%s", WrappedText(options.disabledTooltip).c_str()); + } else if (ImGui::IsItemHovered(ImGuiHoveredFlags_AllowWhenDisabled) && !Ship_IsCStringEmpty(options.tooltip)) { + ImGui::SetTooltip("%s", WrappedText(options.tooltip).c_str()); + } + ImGui::PopID(); + return dirty; +} + +template +bool Combobox(const char* label, T* value, const std::vector& comboVector, + const ComboboxOptions& options = {}) { + bool dirty = false; + size_t currentValueIndex = static_cast(*value); + std::string invisibleLabelStr = "##" + std::string(label); + const char* invisibleLabel = invisibleLabelStr.c_str(); + ImGui::PushID(label); + ImGui::BeginGroup(); + ImGui::BeginDisabled(options.disabled); + PushStyleCombobox(options.color); + + const char* longest; + int length = 0; + for (auto& string : comboVector) { + int len = string.length(); + if (len > length) { + longest = string.c_str(); + length = len; + } + } + float comboWidth = CalcComboWidth(longest, options.flags); + + ImGui::AlignTextToFramePadding(); + if (options.labelPosition != LabelPositions::None) { + if (options.alignment == ComponentAlignments::Right) { + ImGui::Text("%s", label); + if (options.labelPosition == LabelPositions::Above) { + ImGui::NewLine(); + ImGui::SameLine(ImGui::GetContentRegionAvail().x - comboWidth); + } else if (options.labelPosition == LabelPositions::Near) { + ImGui::SameLine(); + } else if (options.labelPosition == LabelPositions::Far) { + ImGui::SameLine(ImGui::GetContentRegionAvail().x - comboWidth); + } + } else if (options.alignment == ComponentAlignments::Left) { + if (options.labelPosition == LabelPositions::Above) { + ImGui::Text("%s", label); + } + } + } + + ImGui::SetNextItemWidth(comboWidth); + if (ImGui::BeginCombo(invisibleLabel, comboVector.at(currentValueIndex).c_str(), options.flags)) { + ImGui::PushStyleVar(ImGuiStyleVar_ItemSpacing, ImVec2(10.0f, 10.0f)); + for (size_t i = 0; i < comboVector.size(); ++i) { + auto newValue = static_cast(i); + if (comboVector.at(i).length() > 1) { + if (ImGui::Selectable(comboVector.at(i).c_str(), newValue == *value)) { + *value = newValue; + dirty = true; + } + } + } + ImGui::PopStyleVar(); + ImGui::EndCombo(); + } + + if (options.labelPosition != LabelPositions::None) { + if (options.alignment == ComponentAlignments::Left) { + if (options.labelPosition == LabelPositions::Near) { + ImGui::SameLine(); + ImGui::Text("%s", label); + } else if (options.labelPosition == LabelPositions::Far) { + float width = + ImGui::CalcTextSize(comboVector.at(*value).c_str()).x + ImGui::GetStyle().FramePadding.x * 2; + ImGui::SameLine(ImGui::GetContentRegionAvail().x - width); + ImGui::Text("%s", label); + } + } + } + + PopStyleCombobox(); + ImGui::EndDisabled(); + ImGui::EndGroup(); + if (options.disabled && ImGui::IsItemHovered(ImGuiHoveredFlags_AllowWhenDisabled) && + !Ship_IsCStringEmpty(options.disabledTooltip)) { + ImGui::SetTooltip("%s", WrappedText(options.disabledTooltip).c_str()); + } else if (ImGui::IsItemHovered(ImGuiHoveredFlags_AllowWhenDisabled) && !Ship_IsCStringEmpty(options.tooltip)) { + ImGui::SetTooltip("%s", WrappedText(options.tooltip).c_str()); + } + ImGui::PopID(); + return dirty; +} + +template +bool Combobox(const char* label, T* value, const char* (&comboArray)[N], const ComboboxOptions& options = {}) { + bool dirty = false; + size_t currentValueIndex = static_cast(*value); + if (currentValueIndex >= N) { + currentValueIndex = 0; + } + std::string invisibleLabelStr = "##" + std::string(label); + const char* invisibleLabel = invisibleLabelStr.c_str(); + ImGui::PushID(label); + ImGui::BeginGroup(); + ImGui::BeginDisabled(options.disabled); + PushStyleCombobox(options.color); + + const char* longest; + size_t length = 0; + for (size_t i = 0; i < N; i++) { + size_t len = strlen(comboArray[i]); + if (len > length) { + longest = comboArray[i]; + length = len; + } + } + float comboWidth = CalcComboWidth(longest, options.flags); + + ImGui::AlignTextToFramePadding(); + if (options.labelPosition != LabelPositions::None) { + if (options.alignment == ComponentAlignments::Right) { + ImGui::Text("%s", label); + if (options.labelPosition == LabelPositions::Above) { + ImGui::NewLine(); + ImGui::SameLine(ImGui::GetContentRegionAvail().x - comboWidth); + } else if (options.labelPosition == LabelPositions::Near) { + ImGui::SameLine(); + } else if (options.labelPosition == LabelPositions::Far) { + ImGui::SameLine(ImGui::GetContentRegionAvail().x - comboWidth); + } + } else if (options.alignment == ComponentAlignments::Left) { + if (options.labelPosition == LabelPositions::Above) { + ImGui::Text("%s", label); + } + } + } + + ImGui::SetNextItemWidth(comboWidth); + if (ImGui::BeginCombo(invisibleLabel, comboArray[currentValueIndex], options.flags)) { + ImGui::PushStyleVar(ImGuiStyleVar_ItemSpacing, ImVec2(10.0f, 10.0f)); + for (size_t i = 0; i < N; ++i) { + auto newValue = static_cast(i); + if (strlen(comboArray[i]) > 1) { + if (ImGui::Selectable(comboArray[i], newValue == *value)) { + *value = newValue; + dirty = true; + } + } + } + ImGui::PopStyleVar(); + ImGui::EndCombo(); + } + + if (options.labelPosition != LabelPositions::None) { + if (options.alignment == ComponentAlignments::Left) { + if (options.labelPosition == LabelPositions::Near) { + ImGui::SameLine(); + ImGui::Text("%s", label); + } else if (options.labelPosition == LabelPositions::Far) { + float width = ImGui::CalcTextSize(comboArray[*value]).x + ImGui::GetStyle().FramePadding.x * 2; + ImGui::SameLine(ImGui::GetContentRegionAvail().x - width); + ImGui::Text("%s", label); + } + } + } + PopStyleCombobox(); + ImGui::EndDisabled(); + ImGui::EndGroup(); + if (options.disabled && ImGui::IsItemHovered(ImGuiHoveredFlags_AllowWhenDisabled) && + !Ship_IsCStringEmpty(options.disabledTooltip)) { + ImGui::SetTooltip("%s", WrappedText(options.disabledTooltip).c_str()); + } else if (ImGui::IsItemHovered(ImGuiHoveredFlags_AllowWhenDisabled) && !Ship_IsCStringEmpty(options.tooltip)) { + ImGui::SetTooltip("%s", WrappedText(options.tooltip).c_str()); + } + ImGui::PopID(); + return dirty; +} + +template +bool CVarCombobox(const char* label, const char* cvarName, const std::unordered_map& comboMap, + const ComboboxOptions& options = {}) { + bool dirty = false; + int32_t value = CVarGetInteger(cvarName, options.defaultIndex); + if (Combobox(label, &value, comboMap, options)) { + CVarSetInteger(cvarName, value); + Ship::Context::GetInstance()->GetWindow()->GetGui()->SaveConsoleVariablesNextFrame(); + ShipInit::Init(cvarName); + dirty = true; + } + return dirty; +} + +template +bool CVarCombobox(const char* label, const char* cvarName, const std::vector& comboVector, + const ComboboxOptions& options = {}) { + bool dirty = false; + int32_t value = CVarGetInteger(cvarName, options.defaultIndex); + if (Combobox(label, &value, comboVector, options)) { + CVarSetInteger(cvarName, value); + Ship::Context::GetInstance()->GetWindow()->GetGui()->SaveConsoleVariablesNextFrame(); + ShipInit::Init(cvarName); + dirty = true; + } + return dirty; +} + +template +bool CVarCombobox(const char* label, const char* cvarName, const char* (&comboArray)[N], + const ComboboxOptions& options = {}) { + bool dirty = false; + int32_t value = CVarGetInteger(cvarName, options.defaultIndex); + if (Combobox(label, &value, comboArray, options)) { + CVarSetInteger(cvarName, value); + Ship::Context::GetInstance()->GetWindow()->GetGui()->SaveConsoleVariablesNextFrame(); + ShipInit::Init(cvarName); + dirty = true; + } + return dirty; +} + +void PushStyleSlider(Colors color = Colors::LightBlue); +void PopStyleSlider(); +bool SliderInt(const char* label, int32_t* value, const IntSliderOptions& options = {}); +bool CVarSliderInt(const char* label, const char* cvarName, const IntSliderOptions& options = {}); +bool SliderFloat(const char* label, float* value, const FloatSliderOptions& options = {}); +bool CVarSliderFloat(const char* label, const char* cvarName, const FloatSliderOptions& options = {}); +bool InputString(const char* label, std::string* value, const InputOptions& options = {}); +bool CVarInputString(const char* label, const char* cvarName, const InputOptions& options = {}); +bool InputInt(const char* label, int32_t* value, const InputOptions& options = {}); +bool CVarInputInt(const char* label, const char* cvarName, const InputOptions& options = {}); +bool CVarColorPicker(const char* label, const char* cvarName, Color_RGBA8 defaultColor, bool hasAlpha = false, + uint8_t modifiers = 0, UIWidgets::Colors themeColor = UIWidgets::Colors::LightBlue); +bool RadioButton(const char* label, bool active); +bool CVarRadioButton(const char* text, const char* cvarName, int32_t id, const RadioButtonsOptions& options); +bool StateButton(const char* str_id, const char* label, ImVec2 size, UIWidgets::ButtonOptions options, + ImGuiButtonFlags flags = ImGuiButtonFlags_None); +void DrawFlagArray32(const std::string& name, uint32_t& flags, Colors color = Colors::LightBlue); +void DrawFlagArray16(const std::string& name, uint16_t& flags, Colors color = Colors::LightBlue); +void DrawFlagArray8(const std::string& name, uint8_t& flags, Colors color = Colors::LightBlue); +void DrawFlagArray8Mask(const std::string& name, uint8_t& flags, Colors color = Colors::LightBlue); + +void InsertHelpHoverText(const std::string& text); +void InsertHelpHoverText(const char* text); +} // namespace UIWidgets ImVec4 GetRandomValue(); Color_RGBA8 RGBA8FromVec(ImVec4 vec); diff --git a/soh/soh/z_play_otr.cpp b/soh/soh/z_play_otr.cpp index 54f4b0016..23e61261c 100644 --- a/soh/soh/z_play_otr.cpp +++ b/soh/soh/z_play_otr.cpp @@ -3,7 +3,7 @@ #include #include "soh/resource/type/Scene.h" #include -#include "soh/Enhancements/game-interactor/GameInteractor.h" +#include "soh/Enhancements/game-interactor/GameInteractor_Hooks.h" #include "global.h" #include "vt.h" #include @@ -59,7 +59,7 @@ extern "C" void OTRPlay_SpawnScene(PlayState* play, s32 sceneId, s32 spawn) { osSyncPrintf("ROOM SIZE=%fK\n", roomSize / 1024.0f); - GameInteractor::Instance->ExecuteHooks(play->sceneNum); + GameInteractor_ExecuteOnSceneInit(play->sceneNum); SPDLOG_INFO("Scene Init - sceneNum: {0:#x}, entranceIndex: {1:#x}", play->sceneNum, gSaveContext.entranceIndex); } @@ -79,6 +79,7 @@ void OTRPlay_InitScene(PlayState* play, s32 spawn) { YREG(15) = 0; gSaveContext.worldMapArea = 0; OTRScene_ExecuteCommands(play, (SOH::Scene*)play->sceneSegment); + GameInteractor_ExecuteAfterSceneCommands(play->sceneNum); Play_InitEnvironment(play, play->skyboxId); /* auto data = static_cast(Ship::Context::GetInstance() ->GetResourceManager() diff --git a/soh/src/code/z_parameter.c b/soh/src/code/z_parameter.c index facbbfd81..4ead0d268 100644 --- a/soh/src/code/z_parameter.c +++ b/soh/src/code/z_parameter.c @@ -2411,6 +2411,9 @@ u8 Item_Give(PlayState* play, u8 item) { } } } else { + if (item == ITEM_LETTER_RUTO) { + Flags_SetRandomizerInf(RAND_INF_OBTAINED_RUTOS_LETTER); + } for (i = 0; i < 4; i++) { if (gSaveContext.inventory.items[temp + i] == ITEM_NONE) { gSaveContext.inventory.items[temp + i] = item; @@ -2434,6 +2437,9 @@ u8 Item_Give(PlayState* play, u8 item) { } } else { Flags_SetRandomizerInf(item - ITEM_WEIRD_EGG + RAND_INF_CHILD_TRADES_HAS_WEIRD_EGG); + if (item == ITEM_WEIRD_EGG) { + Flags_SetRandomizerInf(RAND_INF_WEIRD_EGG); + } } } diff --git a/soh/src/overlays/actors/ovl_Fishing/z_fishing.c b/soh/src/overlays/actors/ovl_Fishing/z_fishing.c index 94d7e15ca..4d42de65f 100644 --- a/soh/src/overlays/actors/ovl_Fishing/z_fishing.c +++ b/soh/src/overlays/actors/ovl_Fishing/z_fishing.c @@ -5170,7 +5170,7 @@ void Fishing_HandleOwnerDialog(Fishing* this, PlayState* play) { if (Actor_HasParent(&this->actor, play)) { this->stateAndTimer = 24; } else { - if (!GameInteractor_Should(VB_GIVE_RANDO_GLITCH_FISHING_PRIZE, false, &this)) { + if (!GameInteractor_Should(VB_GIVE_RANDO_GLITCH_FISHING_PRIZE, false, this)) { Actor_OfferGetItem(&this->actor, play, GI_SCALE_GOLDEN, 2000.0f, 1000.0f); } } diff --git a/soh/src/overlays/actors/ovl_player_actor/z_player.c b/soh/src/overlays/actors/ovl_player_actor/z_player.c index ddee9d0af..6638893f5 100644 --- a/soh/src/overlays/actors/ovl_player_actor/z_player.c +++ b/soh/src/overlays/actors/ovl_player_actor/z_player.c @@ -12773,9 +12773,8 @@ s16 func_8084ABD8(PlayState* play, Player* this, s32 arg2, s16 arg3) { if (!CVarGetInteger(CVAR_SETTING("MoveInFirstPerson"), 0)) { temp2 += sControlInput->rel.stick_y * 240.0f * invertYAxisMulti * yAxisMulti; } - if (CVarGetInteger(CVAR_SETTING("Controls.RightStickAim"), 0) && - fabsf(sControlInput->cur.right_stick_y) > 15.0f) { - temp2 += sControlInput->cur.right_stick_y * 240.0f * invertYAxisMulti * yAxisMulti; + if (CVarGetInteger(CVAR_SETTING("Controls.RightStickAim"), 0)) { + temp2 += sControlInput->rel.right_stick_y * 240.0f * invertYAxisMulti * yAxisMulti; } if (fabsf(sControlInput->cur.gyro_x) > 0.01f) { temp2 += (-sControlInput->cur.gyro_x) * 750.0f; @@ -12792,9 +12791,8 @@ s16 func_8084ABD8(PlayState* play, Player* this, s32 arg2, s16 arg3) { if (!CVarGetInteger(CVAR_SETTING("MoveInFirstPerson"), 0)) { temp2 += sControlInput->rel.stick_x * -16.0f * invertXAxisMulti * xAxisMulti; } - if (CVarGetInteger(CVAR_SETTING("Controls.RightStickAim"), 0) && - fabsf(sControlInput->cur.right_stick_x) > 15.0f) { - temp2 += sControlInput->cur.right_stick_x * -16.0f * invertXAxisMulti * xAxisMulti; + if (CVarGetInteger(CVAR_SETTING("Controls.RightStickAim"), 0)) { + temp2 += sControlInput->rel.right_stick_x * -16.0f * invertXAxisMulti * xAxisMulti; } if (fabsf(sControlInput->cur.gyro_y) > 0.01f) { temp2 += (sControlInput->cur.gyro_y) * 750.0f * invertXAxisMulti; @@ -12810,10 +12808,9 @@ s16 func_8084ABD8(PlayState* play, Player* this, s32 arg2, s16 arg3) { (s32)((1.0f - Math_CosS(sControlInput->rel.stick_y * 200)) * 1500.0f) * invertYAxisMulti * yAxisMulti; } - if (CVarGetInteger(CVAR_SETTING("Controls.RightStickAim"), 0) && - fabsf(sControlInput->cur.right_stick_y) > 15.0f) { - temp3 += ((sControlInput->cur.right_stick_y >= 0) ? 1 : -1) * - (s32)((1.0f - Math_CosS(sControlInput->cur.right_stick_y * 200)) * 1500.0f) * invertYAxisMulti * + if (CVarGetInteger(CVAR_SETTING("Controls.RightStickAim"), 0)) { + temp3 += ((sControlInput->rel.right_stick_y >= 0) ? 1 : -1) * + (s32)((1.0f - Math_CosS(sControlInput->rel.right_stick_y * 200)) * 1500.0f) * invertYAxisMulti * yAxisMulti; } if (fabsf(sControlInput->cur.gyro_x) > 0.01f) { @@ -12831,10 +12828,9 @@ s16 func_8084ABD8(PlayState* play, Player* this, s32 arg2, s16 arg3) { (s32)((1.0f - Math_CosS(sControlInput->rel.stick_x * 200)) * -1500.0f) * invertXAxisMulti * xAxisMulti; } - if (CVarGetInteger(CVAR_SETTING("Controls.RightStickAim"), 0) && - fabsf(sControlInput->cur.right_stick_x) > 15.0f) { - temp3 += ((sControlInput->cur.right_stick_x >= 0) ? 1 : -1) * - (s32)((1.0f - Math_CosS(sControlInput->cur.right_stick_x * 200)) * -1500.0f) * invertXAxisMulti * + if (CVarGetInteger(CVAR_SETTING("Controls.RightStickAim"), 0)) { + temp3 += ((sControlInput->rel.right_stick_x >= 0) ? 1 : -1) * + (s32)((1.0f - Math_CosS(sControlInput->rel.right_stick_x * 200)) * -1500.0f) * invertXAxisMulti * xAxisMulti; } if (fabsf(sControlInput->cur.gyro_y) > 0.01f) {