Decouple GBK from LACS (#5838)

Triforce Pieces can now be tokens for bridge or ganon's soul. & can be tokens for multiple rewards

Wincon can now be arbitrary conditions

Ganon's Soul (removed from existing boss soul options) can now be arbitrary conditions

Co-authored-by: Pepper0ni <93387759+Pepper0ni@users.noreply.github.com>
This commit is contained in:
Philip Dubé
2026-07-04 20:04:09 +00:00
committed by GitHub
parent 618b7694b1
commit 015440fdff
55 changed files with 1379 additions and 663 deletions
@@ -1633,23 +1633,23 @@ void LoadSettings() {
}
switch (OTRGlobals::Instance->gRandomizer->GetRandoSettingValue(RSK_GANONS_BOSS_KEY)) {
case RO_GANON_BOSS_KEY_LACS_STONES:
Rando::Context::GetInstance()->LACSCondition(RO_LACS_STONES);
case RO_GANON_BOSS_KEY_STONES:
Rando::Context::GetInstance()->GBKCondition(RO_CHECK_TRIGGER_STONES);
break;
case RO_GANON_BOSS_KEY_LACS_MEDALLIONS:
Rando::Context::GetInstance()->LACSCondition(RO_LACS_MEDALLIONS);
case RO_GANON_BOSS_KEY_MEDALLIONS:
Rando::Context::GetInstance()->GBKCondition(RO_CHECK_TRIGGER_MEDALLIONS);
break;
case RO_GANON_BOSS_KEY_LACS_REWARDS:
Rando::Context::GetInstance()->LACSCondition(RO_LACS_REWARDS);
case RO_GANON_BOSS_KEY_REWARDS:
Rando::Context::GetInstance()->GBKCondition(RO_CHECK_TRIGGER_REWARDS);
break;
case RO_GANON_BOSS_KEY_LACS_DUNGEONS:
Rando::Context::GetInstance()->LACSCondition(RO_LACS_DUNGEONS);
case RO_GANON_BOSS_KEY_DUNGEONS:
Rando::Context::GetInstance()->GBKCondition(RO_CHECK_TRIGGER_DUNGEONS);
break;
case RO_GANON_BOSS_KEY_LACS_TOKENS:
Rando::Context::GetInstance()->LACSCondition(RO_LACS_TOKENS);
case RO_GANON_BOSS_KEY_TOKENS:
Rando::Context::GetInstance()->GBKCondition(RO_CHECK_TRIGGER_TOKENS);
break;
default:
Rando::Context::GetInstance()->LACSCondition(RO_LACS_VANILLA);
Rando::Context::GetInstance()->GBKCondition(RO_CHECK_TRIGGER_NONE);
break;
}
}
@@ -1672,7 +1672,7 @@ bool IsCheckShuffled(RandomizerCheck rc) {
(showShops &&
OTRGlobals::Instance->gRandomizer->IdentifyShopItem(loc->GetScene(), loc->GetActorParams() + 1)
.enGirlAShopItem == 50)) &&
(rc != RC_TRIFORCE_COMPLETED) && (rc != RC_GANON) &&
(rc != RC_WINCON) && (rc != RC_GANON) &&
(loc->GetRCType() != RCTYPE_SCRUB || showScrubs ||
(showMajorScrubs && (rc == RC_LW_DEKU_SCRUB_NEAR_BRIDGE || // The 3 scrubs that are always randomized
rc == RC_HF_DEKU_SCRUB_GROTTO || rc == RC_LW_DEKU_SCRUB_GROTTO_FRONT))) &&