This commit is contained in:
Pepper0ni 2025-04-12 23:31:39 +01:00
commit 2c95403c0f
2 changed files with 25 additions and 19 deletions

View file

@ -215,15 +215,18 @@ bool SpiritExplosiveLogic(){
}
bool SpiritSharedStatueRoom(const RandomizerRegion region, ConditionFn condition, bool anyAge) {
return areaTable[region].SpiritShared(condition, []{return logic->HasExplosives();}, []{return true;}, 5, 3, SpiritExplosiveLogic(), anyAge);
return areaTable[region].SpiritShared(
condition, [] { return logic->HasExplosives(); }, [] { return true; }, 5, 3, SpiritExplosiveLogic(), anyAge);
}
bool MQSpiritSharedStatueRoom(const RandomizerRegion region, ConditionFn condition, bool anyAge) {
return areaTable[region].SpiritShared(condition, []{return true;}, []{return true;}, 7, 0, 0, anyAge);
return areaTable[region].SpiritShared(
condition, [] { return true; }, [] { return true; }, 7, 0, 0, anyAge);
}
bool MQSpiritSharedBrokenWallRoom(const RandomizerRegion region, ConditionFn condition, bool anyAge) {
return areaTable[region].SpiritShared(condition, []{return true;}, []{return true;}, 7, 7, 6, anyAge);
return areaTable[region].SpiritShared(
condition, [] { return true; }, [] { return true; }, 7, 7, 6, anyAge);
}
bool BeanPlanted(const RandomizerRegion region) {

View file

@ -234,7 +234,8 @@ class Region {
/*
* This logic covers checks that exist in the shared areas of Spirit from a glitchless standpoint.
* This code will fail if any glitch allows Adult to go in the Child spirit door first or vice versa as it relies on specific ages
* This code will fail if any glitch allows Adult to go in the Child spirit door first or vice versa as it relies on
specific ages
* There are 4 possibilities for passing a check, but first I have to talk about parallel universes.
@ -254,9 +255,11 @@ class Region {
* technical reasons as otherwise the code will never run
*/
bool SpiritShared(ConditionFn condition, ConditionFn childAccess, ConditionFn adultAccess, uint8_t adultKeys, uint8_t childKeys, uint8_t eitherKeys, bool anyAge = false){
bool SpiritShared(ConditionFn condition, ConditionFn childAccess, ConditionFn adultAccess, uint8_t adultKeys,
uint8_t childKeys, uint8_t eitherKeys, bool anyAge = false) {
// If we have all of the keys, we know that access is Certain Access
if (ctx->GetDungeon(Rando::SPIRIT_TEMPLE)->IsMQ() ? logic->SmallKeys(RR_SPIRIT_TEMPLE, 7) : logic->SmallKeys(RR_SPIRIT_TEMPLE, 5)) {
if (ctx->GetDungeon(Rando::SPIRIT_TEMPLE)->IsMQ() ? logic->SmallKeys(RR_SPIRIT_TEMPLE, 7)
: logic->SmallKeys(RR_SPIRIT_TEMPLE, 5)) {
if (anyAge) {
return Here(condition);
}