MAX_MQ_DUNGEON_COUNT (#6353)

Co-authored-by: ganesh1828
This commit is contained in:
Philip Dubé 2026-03-16 19:01:33 +00:00 committed by GitHub
parent 7899b6a048
commit 45449623bb
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 16 additions and 10 deletions

View file

@ -155,7 +155,7 @@ void BuildMapMessage(uint16_t* textId, bool* loadFromMessageTable) {
msg.Replace("[[name]]", name);
if (ctx->GetOption(RSK_MQ_DUNGEON_RANDOM).Is(RO_MQ_DUNGEONS_NONE) ||
(ctx->GetOption(RSK_MQ_DUNGEON_RANDOM).Is(RO_MQ_DUNGEONS_SET_NUMBER) &&
ctx->GetOption(RSK_MQ_DUNGEON_COUNT).Is(12))) {
ctx->GetOption(RSK_MQ_DUNGEON_COUNT).Is(MAX_MQ_DUNGEON_COUNT))) {
msg.Replace("[[typeHint]]", "");
} else if (ResourceMgr_IsSceneMasterQuest(sceneNum)) {
msg.Replace("[[typeHint]]", Rando::StaticData::hintTextTable[RHT_DUNGEON_MASTERFUL].GetHintMessage());

View file

@ -5,6 +5,7 @@
#include "randomizerEnums.h"
#define MAX_TRICK_NAME_SIZE 50
#define MAX_MQ_DUNGEON_COUNT 12
#define TWO_ACTOR_PARAMS(a, b) ((((a)&0xFFFF) << 16) | ((b)&0xFFFF))

View file

@ -115,7 +115,8 @@ void RandomizerCheckObjects::UpdateImGuiVisibility() {
location.GetQuest() == RCQUEST_MQ &&
((CVarGetInteger(CVAR_RANDOMIZER_SETTING("MQDungeons"), RO_MQ_DUNGEONS_NONE) ==
RO_MQ_DUNGEONS_SET_NUMBER &&
(CVarGetInteger(CVAR_RANDOMIZER_SETTING("MQDungeonCount"), 12) > 0) || // at least one MQ dungeon
(CVarGetInteger(CVAR_RANDOMIZER_SETTING("MQDungeonCount"), MAX_MQ_DUNGEON_COUNT) >
0) || // at least one MQ dungeon
CVarGetInteger(CVAR_RANDOMIZER_SETTING("MQDungeons"), RO_MQ_DUNGEONS_NONE) ==
RO_MQ_DUNGEONS_RANDOM_NUMBER ||
CVarGetInteger(CVAR_RANDOMIZER_SETTING("MQDungeons"), RO_MQ_DUNGEONS_NONE) ==
@ -123,7 +124,8 @@ void RandomizerCheckObjects::UpdateImGuiVisibility() {
location.GetQuest() == RCQUEST_VANILLA &&
(CVarGetInteger(CVAR_RANDOMIZER_SETTING("MQDungeons"), RO_MQ_DUNGEONS_NONE) !=
RO_MQ_DUNGEONS_SET_NUMBER ||
CVarGetInteger(CVAR_RANDOMIZER_SETTING("MQDungeonCount"), 12) < 12) // at least one vanilla dungeon
CVarGetInteger(CVAR_RANDOMIZER_SETTING("MQDungeonCount"), MAX_MQ_DUNGEON_COUNT) <
MAX_MQ_DUNGEON_COUNT) // at least one vanilla dungeon
) &&
(location.GetRCType() != RCTYPE_SHOP ||
!(ctx->GetOption(RSK_SHOPSANITY).Is(RO_SHOPSANITY_OFF) ||

View file

@ -566,7 +566,7 @@ void CheckTrackerLoadGame(int32_t fileNum) {
static_cast<RandomizerSettingKey>(RSK_MQ_DEKU_TREE + (i - RCAREA_DEKU_TREE))) != RO_MQ_SET_RANDOM) ||
(OTRGlobals::Instance->gRandomizer->GetRandoSettingValue(RSK_MQ_DUNGEON_RANDOM) ==
RO_MQ_DUNGEONS_SET_NUMBER &&
(OTRGlobals::Instance->gRandomizer->GetRandoSettingValue(RSK_MQ_DUNGEON_COUNT) == 12 ||
(OTRGlobals::Instance->gRandomizer->GetRandoSettingValue(RSK_MQ_DUNGEON_COUNT) == MAX_MQ_DUNGEON_COUNT ||
OTRGlobals::Instance->gRandomizer->GetRandoSettingValue(RSK_MQ_DUNGEON_COUNT) == 0)))) {
SetAreaSpoiled(static_cast<RandomizerCheckArea>(i));
}
@ -596,7 +596,7 @@ void CheckTrackerLoadGame(int32_t fileNum) {
(OTRGlobals::Instance->gRandomizer->GetRandoSettingValue(RSK_MQ_DUNGEON_RANDOM) ==
RO_MQ_DUNGEONS_RANDOM_NUMBER ||
(OTRGlobals::Instance->gRandomizer->GetRandoSettingValue(RSK_MQ_DUNGEON_RANDOM) == RO_MQ_DUNGEONS_SET_NUMBER &&
OTRGlobals::Instance->gRandomizer->GetRandoSettingValue(RSK_MQ_DUNGEON_COUNT) < 12));
OTRGlobals::Instance->gRandomizer->GetRandoSettingValue(RSK_MQ_DUNGEON_COUNT) < MAX_MQ_DUNGEON_COUNT));
initialized = true;
UpdateAllOrdering();
UpdateInventoryChecks();

View file

@ -519,7 +519,7 @@ void Settings::CreateOptions() {
mOptions[RSK_MQ_GANONS_CASTLE].Hide();
}
});
OPT_U8(RSK_MQ_DUNGEON_COUNT, "MQ Dungeon Count", {NumOpts(0, 12)}, OptionCategory::Setting, CVAR_RANDOMIZER_SETTING("MQDungeonCount"), "", WIDGET_CVAR_SLIDER_INT, 12, true, nullptr, IMFLAG_NONE);
OPT_U8(RSK_MQ_DUNGEON_COUNT, "MQ Dungeon Count", {NumOpts(0, MAX_MQ_DUNGEON_COUNT)}, OptionCategory::Setting, CVAR_RANDOMIZER_SETTING("MQDungeonCount"), "", WIDGET_CVAR_SLIDER_INT, MAX_MQ_DUNGEON_COUNT, true, nullptr, IMFLAG_NONE);
OPT_BOOL(RSK_MQ_DUNGEON_SET, "Set Dungeon Quests", {"Off", "On"}, OptionCategory::Setting, CVAR_RANDOMIZER_SETTING("MQDungeonsSelection"), mOptionDescriptions[RSK_MQ_DUNGEON_SET], WIDGET_CVAR_CHECKBOX, false, false, nullptr, IMFLAG_NONE);
OPT_CALLBACK(RSK_MQ_DUNGEON_SET, {
// Controls whether or not to show the selectors for individual dungeons.
@ -3063,7 +3063,7 @@ void Context::FinalizeSettings(const std::set<RandomizerCheck>& excludedLocation
// If we only have MQ, set all dungeons to MQ
if (OTRGlobals::Instance->HasMasterQuest() && !OTRGlobals::Instance->HasOriginal()) {
mOptions[RSK_MQ_DUNGEON_RANDOM].Set(RO_MQ_DUNGEONS_SET_NUMBER);
mOptions[RSK_MQ_DUNGEON_COUNT].Set(12);
mOptions[RSK_MQ_DUNGEON_COUNT].Set(MAX_MQ_DUNGEON_COUNT);
mOptions[RSK_MQ_DUNGEON_SET].Set(RO_GENERIC_OFF);
}
@ -3204,9 +3204,12 @@ void Context::FinalizeSettings(const std::set<RandomizerCheck>& excludedLocation
}
// otherwise, every dungeon is possible
} else {
// if the count is fixed to 12, we know everything is MQ, so can skip some setps and do not set Known
if (mOptions[RSK_MQ_DUNGEON_RANDOM].Is(RO_MQ_DUNGEONS_SET_NUMBER) && mqCount == 12) {
randMQOption = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 };
// if count is MAX_MQ_DUNGEON_COUNT, we know everything is MQ, so can skip some setps and not set Known
if (mOptions[RSK_MQ_DUNGEON_RANDOM].Is(RO_MQ_DUNGEONS_SET_NUMBER) && mqCount == MAX_MQ_DUNGEON_COUNT) {
randMQOption.resize(MAX_MQ_DUNGEON_COUNT);
for (int i = 0; i < MAX_MQ_DUNGEON_COUNT; i++) {
randMQOption[i] = i;
}
for (auto dungeon : dungeons) {
mOptions[dungeon->GetMQSetting()].Set(RO_MQ_SET_MQ);
}