diff --git a/soh/soh/Enhancements/randomizer/entrance.cpp b/soh/soh/Enhancements/randomizer/entrance.cpp index df7dfb99f..502124dfb 100644 --- a/soh/soh/Enhancements/randomizer/entrance.cpp +++ b/soh/soh/Enhancements/randomizer/entrance.cpp @@ -360,7 +360,14 @@ static bool AreEntrancesCompatible(Entrance* entrance, Entrance* target, std::ve entrance->GetParentRegion()->scene != SCENE_GREAT_FAIRYS_FOUNTAIN_MAGIC && entrance->GetParentRegion()->scene != SCENE_GREAT_FAIRYS_FOUNTAIN_SPELLS && - entrance->GetParentRegion()->scene == target->GetConnectedRegion()->scene) { + ( + entrance->GetParentRegion()->scene == target->GetConnectedRegion()->scene || + + // prevent SCENE_HYRULE_CASTLE & SCENE_OUTSIDE_GANONS_CASTLE from connecting to eachother + (entrance->GetParentRegion()->scene == SCENE_HYRULE_CASTLE && target->GetConnectedRegion()->scene == SCENE_OUTSIDE_GANONS_CASTLE) || + (entrance->GetParentRegion()->scene == SCENE_OUTSIDE_GANONS_CASTLE && target->GetConnectedRegion()->scene == SCENE_HYRULE_CASTLE) + ) + ) { auto message = "Entrance " + entrance->GetName() + " attempted to connect with own scene target " + target->to_string() + ". Connection failed.\n"; SPDLOG_DEBUG(message); diff --git a/soh/soh/Enhancements/randomizer/location_access.cpp b/soh/soh/Enhancements/randomizer/location_access.cpp index c7f04828a..c981ed21c 100644 --- a/soh/soh/Enhancements/randomizer/location_access.cpp +++ b/soh/soh/Enhancements/randomizer/location_access.cpp @@ -332,7 +332,13 @@ bool Region::TimePass() { case SCENE_DEATH_MOUNTAIN_CRATER: case SCENE_ID_MAX: return false; + + // Time does pass in the fishing pond but it's + // extremely slow (more than 2 IRL seconds per in-game minute) + // maybe in the future there could be a trick to count it case SCENE_FISHING_POND: + return false; + case SCENE_HYRULE_FIELD: case SCENE_KAKARIKO_VILLAGE: case SCENE_ZORAS_RIVER: @@ -343,6 +349,7 @@ bool Region::TimePass() { case SCENE_DEATH_MOUNTAIN_TRAIL: case SCENE_LON_LON_RANCH: return true; + case SCENE_TEST01: case SCENE_BESITU: case SCENE_DEPTH_TEST: diff --git a/soh/soh/Enhancements/randomizer/location_access/overworld/castle_grounds.cpp b/soh/soh/Enhancements/randomizer/location_access/overworld/castle_grounds.cpp index 553680e1a..a620e8036 100644 --- a/soh/soh/Enhancements/randomizer/location_access/overworld/castle_grounds.cpp +++ b/soh/soh/Enhancements/randomizer/location_access/overworld/castle_grounds.cpp @@ -7,7 +7,9 @@ void RegionTable_Init_CastleGrounds() { // clang-format off //With multi-area support {RA_CASTLE_GROUNDS} is not strictly required anymore, as any interior here could inherit both //{RA_HYRULE_CASTLE} and {RA_OUTSIDE_GANONS_CASTLE}, but a setting to merge the latter 2 into the former may be preferred - areaTable[RR_CASTLE_GROUNDS] = Region("Castle Grounds", SCENE_ID_MAX, {RA_CASTLE_GROUNDS}, {}, {}, { + // + //Temporarily uses SCENE_OUTSIDE_GANONS_CASTLE to avoid self connection between ages + areaTable[RR_CASTLE_GROUNDS] = Region("Castle Grounds", SCENE_OUTSIDE_GANONS_CASTLE, {RA_CASTLE_GROUNDS}, {}, {}, { //Exits Entrance(RR_THE_MARKET, []{return true;}), Entrance(RR_HYRULE_CASTLE_GROUNDS, []{return logic->IsChild;}),