@@ -155,7 +155,7 @@ void BuildMapMessage(uint16_t* textId, bool* loadFromMessageTable) {
|
|||||||
msg.Replace("[[name]]", name);
|
msg.Replace("[[name]]", name);
|
||||||
if (ctx->GetOption(RSK_MQ_DUNGEON_RANDOM).Is(RO_MQ_DUNGEONS_NONE) ||
|
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_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]]", "");
|
msg.Replace("[[typeHint]]", "");
|
||||||
} else if (ResourceMgr_IsSceneMasterQuest(sceneNum)) {
|
} else if (ResourceMgr_IsSceneMasterQuest(sceneNum)) {
|
||||||
msg.Replace("[[typeHint]]", Rando::StaticData::hintTextTable[RHT_DUNGEON_MASTERFUL].GetHintMessage());
|
msg.Replace("[[typeHint]]", Rando::StaticData::hintTextTable[RHT_DUNGEON_MASTERFUL].GetHintMessage());
|
||||||
|
|||||||
@@ -5,6 +5,7 @@
|
|||||||
#include "randomizerEnums.h"
|
#include "randomizerEnums.h"
|
||||||
|
|
||||||
#define MAX_TRICK_NAME_SIZE 50
|
#define MAX_TRICK_NAME_SIZE 50
|
||||||
|
#define MAX_MQ_DUNGEON_COUNT 12
|
||||||
|
|
||||||
#define TWO_ACTOR_PARAMS(a, b) ((((a)&0xFFFF) << 16) | ((b)&0xFFFF))
|
#define TWO_ACTOR_PARAMS(a, b) ((((a)&0xFFFF) << 16) | ((b)&0xFFFF))
|
||||||
|
|
||||||
|
|||||||
@@ -115,7 +115,8 @@ void RandomizerCheckObjects::UpdateImGuiVisibility() {
|
|||||||
location.GetQuest() == RCQUEST_MQ &&
|
location.GetQuest() == RCQUEST_MQ &&
|
||||||
((CVarGetInteger(CVAR_RANDOMIZER_SETTING("MQDungeons"), RO_MQ_DUNGEONS_NONE) ==
|
((CVarGetInteger(CVAR_RANDOMIZER_SETTING("MQDungeons"), RO_MQ_DUNGEONS_NONE) ==
|
||||||
RO_MQ_DUNGEONS_SET_NUMBER &&
|
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) ==
|
CVarGetInteger(CVAR_RANDOMIZER_SETTING("MQDungeons"), RO_MQ_DUNGEONS_NONE) ==
|
||||||
RO_MQ_DUNGEONS_RANDOM_NUMBER ||
|
RO_MQ_DUNGEONS_RANDOM_NUMBER ||
|
||||||
CVarGetInteger(CVAR_RANDOMIZER_SETTING("MQDungeons"), RO_MQ_DUNGEONS_NONE) ==
|
CVarGetInteger(CVAR_RANDOMIZER_SETTING("MQDungeons"), RO_MQ_DUNGEONS_NONE) ==
|
||||||
@@ -123,7 +124,8 @@ void RandomizerCheckObjects::UpdateImGuiVisibility() {
|
|||||||
location.GetQuest() == RCQUEST_VANILLA &&
|
location.GetQuest() == RCQUEST_VANILLA &&
|
||||||
(CVarGetInteger(CVAR_RANDOMIZER_SETTING("MQDungeons"), RO_MQ_DUNGEONS_NONE) !=
|
(CVarGetInteger(CVAR_RANDOMIZER_SETTING("MQDungeons"), RO_MQ_DUNGEONS_NONE) !=
|
||||||
RO_MQ_DUNGEONS_SET_NUMBER ||
|
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 ||
|
(location.GetRCType() != RCTYPE_SHOP ||
|
||||||
!(ctx->GetOption(RSK_SHOPSANITY).Is(RO_SHOPSANITY_OFF) ||
|
!(ctx->GetOption(RSK_SHOPSANITY).Is(RO_SHOPSANITY_OFF) ||
|
||||||
|
|||||||
@@ -566,7 +566,7 @@ void CheckTrackerLoadGame(int32_t fileNum) {
|
|||||||
static_cast<RandomizerSettingKey>(RSK_MQ_DEKU_TREE + (i - RCAREA_DEKU_TREE))) != RO_MQ_SET_RANDOM) ||
|
static_cast<RandomizerSettingKey>(RSK_MQ_DEKU_TREE + (i - RCAREA_DEKU_TREE))) != RO_MQ_SET_RANDOM) ||
|
||||||
(OTRGlobals::Instance->gRandomizer->GetRandoSettingValue(RSK_MQ_DUNGEON_RANDOM) ==
|
(OTRGlobals::Instance->gRandomizer->GetRandoSettingValue(RSK_MQ_DUNGEON_RANDOM) ==
|
||||||
RO_MQ_DUNGEONS_SET_NUMBER &&
|
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)))) {
|
OTRGlobals::Instance->gRandomizer->GetRandoSettingValue(RSK_MQ_DUNGEON_COUNT) == 0)))) {
|
||||||
SetAreaSpoiled(static_cast<RandomizerCheckArea>(i));
|
SetAreaSpoiled(static_cast<RandomizerCheckArea>(i));
|
||||||
}
|
}
|
||||||
@@ -596,7 +596,7 @@ void CheckTrackerLoadGame(int32_t fileNum) {
|
|||||||
(OTRGlobals::Instance->gRandomizer->GetRandoSettingValue(RSK_MQ_DUNGEON_RANDOM) ==
|
(OTRGlobals::Instance->gRandomizer->GetRandoSettingValue(RSK_MQ_DUNGEON_RANDOM) ==
|
||||||
RO_MQ_DUNGEONS_RANDOM_NUMBER ||
|
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_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;
|
initialized = true;
|
||||||
UpdateAllOrdering();
|
UpdateAllOrdering();
|
||||||
UpdateInventoryChecks();
|
UpdateInventoryChecks();
|
||||||
|
|||||||
@@ -519,7 +519,7 @@ void Settings::CreateOptions() {
|
|||||||
mOptions[RSK_MQ_GANONS_CASTLE].Hide();
|
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_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, {
|
OPT_CALLBACK(RSK_MQ_DUNGEON_SET, {
|
||||||
// Controls whether or not to show the selectors for individual dungeons.
|
// 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 we only have MQ, set all dungeons to MQ
|
||||||
if (OTRGlobals::Instance->HasMasterQuest() && !OTRGlobals::Instance->HasOriginal()) {
|
if (OTRGlobals::Instance->HasMasterQuest() && !OTRGlobals::Instance->HasOriginal()) {
|
||||||
mOptions[RSK_MQ_DUNGEON_RANDOM].Set(RO_MQ_DUNGEONS_SET_NUMBER);
|
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);
|
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
|
// otherwise, every dungeon is possible
|
||||||
} else {
|
} else {
|
||||||
// if the count is fixed to 12, we know everything is MQ, so can skip some setps and do not set Known
|
// 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 == 12) {
|
if (mOptions[RSK_MQ_DUNGEON_RANDOM].Is(RO_MQ_DUNGEONS_SET_NUMBER) && mqCount == MAX_MQ_DUNGEON_COUNT) {
|
||||||
randMQOption = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 };
|
randMQOption.resize(MAX_MQ_DUNGEON_COUNT);
|
||||||
|
for (int i = 0; i < MAX_MQ_DUNGEON_COUNT; i++) {
|
||||||
|
randMQOption[i] = i;
|
||||||
|
}
|
||||||
for (auto dungeon : dungeons) {
|
for (auto dungeon : dungeons) {
|
||||||
mOptions[dungeon->GetMQSetting()].Set(RO_MQ_SET_MQ);
|
mOptions[dungeon->GetMQSetting()].Set(RO_MQ_SET_MQ);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user