summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPhilip Dubé <159546+serprex@users.noreply.github.com>2026-11-01 20:58:28 +0000
committerGitHub <noreply@github.com>2026-11-01 20:58:28 +0000
commitd4bf6528a3bb242bc5d862e4f1ab2b6d385c157b (patch)
tree04f56c50ca324c68df49916bcd665d30f6a9aaac
parent2827fc2a0f56a9cdc18a87adf8c1bb7e91315f41 (diff)
parenta28c6969232eb087e2a1f8e89ac2c65cac3be937 (diff)
Merge pull request #7479 from HarbourMasters/develop-deweyHEADdevelop
Dewey -> Develop, fixes build failure due to macos-14 runner being removed
-rw-r--r--.github/workflows/generate-builds.yml2
-rw-r--r--soh/SHIPOFHARKINIAN.manifest2
-rw-r--r--soh/soh/Enhancements/randomizer/Traps.cpp4
-rw-r--r--soh/soh/Enhancements/randomizer/location_access/overworld/gerudo_valley.cpp3
-rw-r--r--soh/soh/SaveManager.cpp16
5 files changed, 19 insertions, 8 deletions
diff --git a/.github/workflows/generate-builds.yml b/.github/workflows/generate-builds.yml
index d030e62b7..40c43a050 100644
--- a/.github/workflows/generate-builds.yml
+++ b/.github/workflows/generate-builds.yml
@@ -45,7 +45,7 @@ jobs:
build-macos:
needs: generate-soh-otr
- runs-on: macos-14
+ runs-on: macos-15
steps:
- name: Git Checkout
uses: actions/checkout@v7
diff --git a/soh/SHIPOFHARKINIAN.manifest b/soh/SHIPOFHARKINIAN.manifest
index 6f47a937f..e35907d3b 100644
--- a/soh/SHIPOFHARKINIAN.manifest
+++ b/soh/SHIPOFHARKINIAN.manifest
@@ -32,6 +32,8 @@
<asmv3:windowsSettings>
<dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true/pm</dpiAware> <!-- legacy -->
<dpiAwareness xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">permonitorv2,permonitor</dpiAwareness> <!-- falls back to pm if pmv2 is not available -->
+ <!-- narrow file APIs take utf-8 like our paths do, so accented folder names work (Windows 10 1903+) -->
+ <activeCodePage xmlns="http://schemas.microsoft.com/SMI/2019/WindowsSettings">UTF-8</activeCodePage>
</asmv3:windowsSettings>
</asmv3:application>
</assembly>
diff --git a/soh/soh/Enhancements/randomizer/Traps.cpp b/soh/soh/Enhancements/randomizer/Traps.cpp
index d83deed21..431e58188 100644
--- a/soh/soh/Enhancements/randomizer/Traps.cpp
+++ b/soh/soh/Enhancements/randomizer/Traps.cpp
@@ -369,8 +369,8 @@ static void InitTrickNames() {
trickNameTable[RG_PROGRESSIVE_STRENGTH] = {
{ Text{ "Power Glove", "Gant de Puissance (prog.)", "Krafthandschuh (prog.)" },
Text{ "a ", "un ", "einen " } }, // "Guanteletes progresivos"
- { Text{ "Power Bracelet", "Bracelet de Force (prog.)", "Kraftarmband (prog.)" },
- Text{ "a ", "un ", "ein " } }, // "Brasaletes progresivos"
+ { Text{ "Darunia's Bracelet", "Bracelet de Darunia (prog.)", "Darunias Armband (prog.)" },
+ Text{ "", "le ", "" } }, // "Brasaletes progresivos"
{ Text{ "Magic Bracelet", "Bracelet Magique (prog.)", "Magiearmband (prog.)" },
Text{ "a ", "un ", "ein " } }, // "Manoplas progresivas"
};
diff --git a/soh/soh/Enhancements/randomizer/location_access/overworld/gerudo_valley.cpp b/soh/soh/Enhancements/randomizer/location_access/overworld/gerudo_valley.cpp
index 703404310..f3c809993 100644
--- a/soh/soh/Enhancements/randomizer/location_access/overworld/gerudo_valley.cpp
+++ b/soh/soh/Enhancements/randomizer/location_access/overworld/gerudo_valley.cpp
@@ -63,7 +63,8 @@ void RegionTable_Init_GerudoValley() {
}, {
//Exits
ENTRANCE(RR_GV_UPPER_STREAM_WATER, true),
- ENTRANCE(RR_GV_WATERFALL_ALCOVE, (logic->CanUse(RG_LONGSHOT) && (logic->HasItem(RG_CLIMB) || ctx->GetTrickOption(RT_HOOKSHOT_LADDERS))) || logic->BeanPlanted(LOGIC_PLANT_GERUDO_VALLEY_BEAN)),
+ ENTRANCE(RR_GV_WATERFALL_ALCOVE, (logic->CanUse(RG_LONGSHOT) && (logic->HasItem(RG_CLIMB) || ctx->GetTrickOption(RT_HOOKSHOT_LADDERS))) ||
+ (logic->IsAdult && logic->BeanPlanted(LOGIC_PLANT_GERUDO_VALLEY_BEAN))),
});
areaTable[RR_GV_UPPER_STREAM_WATER] = Region("GV Upper Stream Water", SCENE_GERUDO_VALLEY, {}, {}, {
diff --git a/soh/soh/SaveManager.cpp b/soh/soh/SaveManager.cpp
index 26b395d4a..cd8ec85de 100644
--- a/soh/soh/SaveManager.cpp
+++ b/soh/soh/SaveManager.cpp
@@ -707,8 +707,10 @@ void SaveManager::StartupCheckAndInitMeta(int fileNum) {
}
fileMetaInfo[fileNum].equipment = baseBlock["inventory"]["equipment"];
fileMetaInfo[fileNum].upgrades = baseBlock["inventory"]["upgrades"];
- fileMetaInfo[fileNum].isMagicAcquired = baseBlock["isMagicAcquired"];
- fileMetaInfo[fileNum].isDoubleMagicAcquired = baseBlock["isDoubleMagicAcquired"];
+ // saves before 5.1.0 called these magicAcquired and doubleMagic
+ fileMetaInfo[fileNum].isMagicAcquired = baseBlock.value("isMagicAcquired", baseBlock.value("magicAcquired", 0));
+ fileMetaInfo[fileNum].isDoubleMagicAcquired =
+ baseBlock.value("isDoubleMagicAcquired", baseBlock.value("doubleMagic", 0));
fileMetaInfo[fileNum].rupees = baseBlock["rupees"];
fileMetaInfo[fileNum].gsTokens = baseBlock["inventory"]["gsTokens"];
// base version 1 and 2 called this doubleDefense
@@ -725,7 +727,8 @@ void SaveManager::StartupCheckAndInitMeta(int fileNum) {
fileMetaInfo[fileNum].health = baseBlock["health"];
// isMasterQuest arrived in base version 2
- bool isMasterQuest = baseBlock.value("isMasterQuest", false);
+ // older saves store this as a number rather than a bool
+ bool isMasterQuest = baseBlock.value("isMasterQuest", 0) != 0;
fileMetaInfo[fileNum].requiresOriginal = !isMasterQuest;
fileMetaInfo[fileNum].requiresMasterQuest = isMasterQuest;
@@ -758,7 +761,12 @@ void SaveManager::StartupCheckAndInitMeta(int fileNum) {
fileMetaInfo[fileNum].requiresOriginal = randoBlock["masterQuestDungeonCount"] < 12;
}
- nlohmann::json& statsBlock = sections["sohStats"]["data"];
+ // sohStats didn't exist in older saves
+ nlohmann::json statsBlock = nlohmann::json::object();
+ if (sections.contains("sohStats") && sections["sohStats"].contains("data") &&
+ sections["sohStats"]["data"].is_object()) {
+ statsBlock = sections["sohStats"]["data"];
+ }
fileMetaInfo[fileNum].buildVersionMajor = statsBlock.value("buildVersionMajor", 0);
fileMetaInfo[fileNum].buildVersionMinor = statsBlock.value("buildVersionMinor", 0);
fileMetaInfo[fileNum].buildVersionPatch = statsBlock.value("buildVersionPatch", 0);