mirror of
https://github.com/HarbourMasters/Shipwright.git
synced 2024-11-29 04:42:18 -05:00
handle random mq dungeon count better (#3036)
Co-authored-by: briaguya <briaguya@alice>
This commit is contained in:
parent
a05d8131ec
commit
def7a15354
@ -402,6 +402,15 @@ static void WriteSettings(const bool printAll = false) {
|
|||||||
// 3drando doesn't have a "skip child zelda" setting, manually add it to the spoilerfile
|
// 3drando doesn't have a "skip child zelda" setting, manually add it to the spoilerfile
|
||||||
jsonData["settings"]["Skip Child Zelda"] = Settings::skipChildZelda;
|
jsonData["settings"]["Skip Child Zelda"] = Settings::skipChildZelda;
|
||||||
|
|
||||||
|
// 3drando uses an MQ dungeon count of 13 to mean random, manually add that to the spoilerfile as a bool
|
||||||
|
if (Settings::MQDungeonCount.GetSelectedOptionIndex() == 0) {
|
||||||
|
jsonData["settings"]["World Settings:MQ Dungeons"] = "None";
|
||||||
|
} else if (Settings::MQDungeonCount.GetSelectedOptionIndex() == 13) {
|
||||||
|
jsonData["settings"]["World Settings:MQ Dungeons"] = "Random Number";
|
||||||
|
} else {
|
||||||
|
jsonData["settings"]["World Settings:MQ Dungeons"] = "Set Number";
|
||||||
|
}
|
||||||
|
|
||||||
// spoilerLog.RootElement()->InsertEndChild(parentNode);
|
// spoilerLog.RootElement()->InsertEndChild(parentNode);
|
||||||
|
|
||||||
// for (const uint32_t key : allLocations) {
|
// for (const uint32_t key : allLocations) {
|
||||||
|
@ -348,6 +348,7 @@ std::unordered_map<std::string, RandomizerSettingKey> SpoilerfileSettingNameToEn
|
|||||||
{ "Timesaver Settings:Complete Mask Quest", RSK_COMPLETE_MASK_QUEST },
|
{ "Timesaver Settings:Complete Mask Quest", RSK_COMPLETE_MASK_QUEST },
|
||||||
{ "Timesaver Settings:Skip Scarecrow's Song", RSK_SKIP_SCARECROWS_SONG },
|
{ "Timesaver Settings:Skip Scarecrow's Song", RSK_SKIP_SCARECROWS_SONG },
|
||||||
{ "Timesaver Settings:Enable Glitch-Useful Cutscenes", RSK_ENABLE_GLITCH_CUTSCENES },
|
{ "Timesaver Settings:Enable Glitch-Useful Cutscenes", RSK_ENABLE_GLITCH_CUTSCENES },
|
||||||
|
{ "World Settings:MQ Dungeons", RSK_RANDOM_MQ_DUNGEONS },
|
||||||
{ "World Settings:MQ Dungeon Count", RSK_MQ_DUNGEON_COUNT }
|
{ "World Settings:MQ Dungeon Count", RSK_MQ_DUNGEON_COUNT }
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -1032,6 +1033,15 @@ void Randomizer::ParseRandomizerSettingsFile(const char* spoilerFileName) {
|
|||||||
gSaveContext.randoSettings[index].value = RO_GANON_BOSS_KEY_KAK_TOKENS;
|
gSaveContext.randoSettings[index].value = RO_GANON_BOSS_KEY_KAK_TOKENS;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case RSK_RANDOM_MQ_DUNGEONS:
|
||||||
|
if (it.value() == "None") {
|
||||||
|
gSaveContext.randoSettings[index].value = RO_MQ_DUNGEONS_NONE;
|
||||||
|
} else if (it.value() == "Random Number") {
|
||||||
|
gSaveContext.randoSettings[index].value = RO_MQ_DUNGEONS_RANDOM_NUMBER;
|
||||||
|
} else if (it.value() == "Set Number") {
|
||||||
|
gSaveContext.randoSettings[index].value = RO_MQ_DUNGEONS_SET_NUMBER;
|
||||||
|
}
|
||||||
|
break;
|
||||||
case RSK_SKIP_CHILD_ZELDA:
|
case RSK_SKIP_CHILD_ZELDA:
|
||||||
gSaveContext.randoSettings[index].value = it.value();
|
gSaveContext.randoSettings[index].value = it.value();
|
||||||
break;
|
break;
|
||||||
@ -5409,7 +5419,10 @@ CustomMessage Randomizer::GetMapGetItemMessageWithHint(GetItemEntry itemEntry) {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this->masterQuestDungeons.empty() || this->masterQuestDungeons.size() >= 12) {
|
if (this->randoSettings[RSK_RANDOM_MQ_DUNGEONS] == RO_MQ_DUNGEONS_NONE ||
|
||||||
|
(this->randoSettings[RSK_RANDOM_MQ_DUNGEONS] == RO_MQ_DUNGEONS_SET_NUMBER &&
|
||||||
|
this->randoSettings[RSK_MQ_DUNGEON_COUNT] == 12)
|
||||||
|
) {
|
||||||
messageEntry.Replace("{{typeHint}}", "");
|
messageEntry.Replace("{{typeHint}}", "");
|
||||||
} else if (ResourceMgr_IsSceneMasterQuest(sceneNum)) {
|
} else if (ResourceMgr_IsSceneMasterQuest(sceneNum)) {
|
||||||
messageEntry.Replace("{{typeHint}}", mapGetItemHints[0][1], mapGetItemHints[1][1], mapGetItemHints[2][1]);
|
messageEntry.Replace("{{typeHint}}", mapGetItemHints[0][1], mapGetItemHints[1][1], mapGetItemHints[2][1]);
|
||||||
|
@ -567,10 +567,10 @@ void InitializeChecks() {
|
|||||||
areasSpoiled |= (1 << rcObj.rcArea);
|
areasSpoiled |= (1 << rcObj.rcArea);
|
||||||
}
|
}
|
||||||
|
|
||||||
showVOrMQ = (OTRGlobals::Instance->gRandomizer->GetRandoSettingValue(RSK_MQ_DUNGEON_COUNT) > 0);
|
showVOrMQ = (OTRGlobals::Instance->gRandomizer->GetRandoSettingValue(RSK_RANDOM_MQ_DUNGEONS) == RO_MQ_DUNGEONS_RANDOM_NUMBER ||
|
||||||
//Bug: the above will spoil that everything is vanilla if the random count rolled 0.
|
(OTRGlobals::Instance->gRandomizer->GetRandoSettingValue(RSK_RANDOM_MQ_DUNGEONS) == RO_MQ_DUNGEONS_SET_NUMBER &&
|
||||||
// Should use the below instead, but the setting isn't currently saved to the savefile
|
OTRGlobals::Instance->gRandomizer->GetRandoSettingValue(RSK_MQ_DUNGEON_COUNT) < 12)
|
||||||
//showVOrMQ = (OTRGlobals::Instance->gRandomizer->GetRandoSettingValue(RSK_RANDOM_MQ_DUNGEONS) != RO_GENERIC_OFF);
|
);
|
||||||
|
|
||||||
UpdateChecks();
|
UpdateChecks();
|
||||||
UpdateInventoryChecks();
|
UpdateInventoryChecks();
|
||||||
|
Loading…
Reference in New Issue
Block a user