Enforce mask select properly on completed (#6326)

This commit is contained in:
Pepper0ni
2026-03-05 22:07:06 +00:00
committed by GitHub
parent 92a1d260da
commit 6deff6d749
2 changed files with 11 additions and 2 deletions

View File

@@ -843,6 +843,12 @@ void SohMenu::AddMenuEnhancements() {
.Options(CheckboxOptions().Tooltip("Turns Bunny Hood Invisible while still maintaining its effects."));
AddWidget(path, "Mask Select in Inventory", WIDGET_CVAR_CHECKBOX)
.CVar(CVAR_ENHANCEMENT("MaskSelect"))
.PreFunc([](WidgetInfo& info) {
info.options->disabled =
OTRGlobals::Instance->gRandoContext->GetOption(RSK_MASK_QUEST).IsNot(RO_MASK_QUEST_VANILLA);
info.options->disabledTooltip =
"This setting is forcefully enabled when Mask Quest is Completed from the start or Shuffled";
})
.Options(CheckboxOptions().Tooltip(
"After completing the mask trading sub-quest, press A and any direction on the mask "
"slot to change masks."));

View File

@@ -322,7 +322,9 @@ void KaleidoScope_HandleItemCycleExtras(PlayState* play, u8 slot, bool canCycle,
bool CanMaskSelect() {
if (IS_RANDO) {
return (CVarGetInteger(CVAR_ENHANCEMENT("MaskSelect"), 0) && Flags_GetRandomizerInf(RAND_INF_ZELDAS_LETTER) &&
return ((CVarGetInteger(CVAR_ENHANCEMENT("MaskSelect"), 0) ||
Randomizer_GetSettingValue(RSK_MASK_QUEST) != RO_MASK_QUEST_VANILLA) &&
Flags_GetRandomizerInf(RAND_INF_ZELDAS_LETTER) &&
Flags_GetInfTable(INFTABLE_SHOWED_ZELDAS_LETTER_TO_GATE_GUARD)) ||
Randomizer_GetSettingValue(RSK_MASK_QUEST) == RO_MASK_QUEST_SHUFFLE;
}
@@ -332,7 +334,8 @@ bool CanMaskSelect() {
// * zelda's letter check: Flags_GetEventChkInf(EVENTCHKINF_OBTAINED_ZELDAS_LETTER)
// * kak gate check: Flags_GetInfTable(INFTABLE_SHOWED_ZELDAS_LETTER_TO_GATE_GUARD)
// and the mask quest is complete: Flags_GetEventChkInf(EVENTCHKINF_PAID_BACK_BUNNY_HOOD_FEE)
return CVarGetInteger(CVAR_ENHANCEMENT("MaskSelect"), 0) &&
return (CVarGetInteger(CVAR_ENHANCEMENT("MaskSelect"), 0) ||
Randomizer_GetSettingValue(RSK_MASK_QUEST) != RO_MASK_QUEST_VANILLA) &&
Flags_GetEventChkInf(EVENTCHKINF_PAID_BACK_BUNNY_HOOD_FEE) &&
Flags_GetEventChkInf(EVENTCHKINF_OBTAINED_ZELDAS_LETTER) &&
Flags_GetInfTable(INFTABLE_SHOWED_ZELDAS_LETTER_TO_GATE_GUARD);