[Bugfix] Older saves cannot be read (#7434)

This commit is contained in:
C
2026-10-21 19:07:36 -04:00
committed by GitHub
parent f0599f96f8
commit 4451710b71
+12 -4
View File
@@ -705,8 +705,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
@@ -723,7 +725,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;
@@ -756,7 +759,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);