remove bombchu edge case

This commit is contained in:
Pepper0ni 2025-06-29 22:36:55 +01:00
commit d17bd06683
2 changed files with 11 additions and 15 deletions

View file

@ -116,15 +116,13 @@ enum class EntranceType;
} // namespace Rando } // namespace Rando
struct SpiritLogicData { struct SpiritLogicData {
uint8_t childKeys; // the number of keys that guarantees Child can reach this region // the minimum number of keys that guarantees Child can reach this region
// The number of keys that guarantees Child can reach this region if they have reverse access uint8_t childKeys;
// 9 means MQ broken wall room, as the first child lock can only be opened by Child // The minimum number of keys that guarantees Child can reach this region if they have reverse access
// without opening the lock to Statue room, guaranteeing access with 6 keys if you can hit a switch
uint8_t childRevKeys; uint8_t childRevKeys;
// the number of keys that guarantees Adult can reach this region // the minimum number of keys that guarantees Adult can reach this region
// if it is 9, that means the bombchu edge case is to be checked.
uint8_t adultKeys; uint8_t adultKeys;
// the number of keys that guarantees Adult can reach this region with reverse entry // the minimum number of keys that guarantees Adult can reach this region with reverse entry
uint8_t adultRevKeys; uint8_t adultRevKeys;
// The area access condition to reach this region as Child, from the first lock, // The area access condition to reach this region as Child, from the first lock,
// including the minimum number of keys for ambiguous access // including the minimum number of keys for ambiguous access

View file

@ -2386,9 +2386,7 @@ bool Logic::SpiritSunOnFloorToStatue() {
} }
bool Logic::SpiritExplosiveKeyLogic() { bool Logic::SpiritExplosiveKeyLogic() {
return SmallKeys(RR_SPIRIT_TEMPLE, HasExplosives() ? 1 return SmallKeys(RR_SPIRIT_TEMPLE, HasExplosives() ? 1 : 2);
: ctx->GetOption(RSK_BOMBCHU_BAG) && BombchuRefill() ? 2
: 3);
} }
bool Logic::SpiritWestToSkull() { bool Logic::SpiritWestToSkull() {
@ -2410,7 +2408,6 @@ bool Logic::SpiritEastToSwitch() {
(CanUse(RG_ZELDAS_LULLABY) && CanUse(RG_HOOKSHOT)); (CanUse(RG_ZELDAS_LULLABY) && CanUse(RG_HOOKSHOT));
} }
// Combines crossing the ledge directly and the jump from the hand // Combines crossing the ledge directly and the jump from the hand
bool Logic::MQSpiritWestToPots() { bool Logic::MQSpiritWestToPots() {
return (IsAdult && ctx->GetTrickOption(RT_SPIRIT_STATUE_JUMP)) || CanUse(RG_HOVER_BOOTS) || CanUse(RG_SONG_OF_TIME); return (IsAdult && ctx->GetTrickOption(RT_SPIRIT_STATUE_JUMP)) || CanUse(RG_HOVER_BOOTS) || CanUse(RG_SONG_OF_TIME);
@ -2428,9 +2425,9 @@ bool Logic::MQSpiritStatueSouthDoor() {
bool Logic::MQSpirit4KeyColossus() { bool Logic::MQSpirit4KeyColossus() {
// !QUANTUM LOGIC! // !QUANTUM LOGIC!
// We only need 4 keys and the ability to reach both hands for adult to logically be able to drop down onto Desert Colossus // We only need 4 keys and the ability to reach both hands for adult to logically be able to drop down onto Desert
// This is because there are only 3 keys that can be wasted without opening up either this lock to East hand, or the West Hand lock through Sun Block Room // Colossus This is because there are only 3 keys that can be wasted without opening up either this lock to East
// and both directions allow you to drop onto colossus // hand, or the West Hand lock through Sun Block Room and both directions allow you to drop onto colossus
// logic->CanKillEnemy(RE_FLOORMASTER) is implied // logic->CanKillEnemy(RE_FLOORMASTER) is implied
return CanAvoidEnemy(RE_BEAMOS, true, 4) && CanUse(RG_SONG_OF_TIME) && return CanAvoidEnemy(RE_BEAMOS, true, 4) && CanUse(RG_SONG_OF_TIME) &&
CanJumpslash() && /*(str0 || SunlightArrows) &&*/ CanJumpslash() && /*(str0 || SunlightArrows) &&*/
@ -2440,7 +2437,8 @@ bool Logic::MQSpirit4KeyColossus() {
bool Logic::MQSpirit4KeyWestHand() { bool Logic::MQSpirit4KeyWestHand() {
// !QUANTUM LOGIC! // !QUANTUM LOGIC!
// Continuing from MQSpirit4KeyColossus, if we also have a longshot, we can go from the East hand to the West hand, meaning we always have access to East Hand // Continuing from MQSpirit4KeyColossus, if we also have a longshot, we can go from the East hand to the West hand,
// meaning we always have access to East Hand
return CanUse(RG_LONGSHOT) && MQSpirit4KeyColossus(); return CanUse(RG_LONGSHOT) && MQSpirit4KeyColossus();
} }
// This version of the function handles Shared Access for child, based on what adult could do if they existed // This version of the function handles Shared Access for child, based on what adult could do if they existed