From 4239cea3d529ee83cabec793b8442b857c697137 Mon Sep 17 00:00:00 2001 From: gymnast86 Date: Sun, 21 Jun 2026 15:59:39 -0700 Subject: [PATCH] Fix arbiters grounds sometimes not being listed as a required dungeon --- .../data/world/overworld/Snowpeak Province.yaml | 2 ++ src/dusk/randomizer/generator/logic/area.cpp | 2 +- src/dusk/randomizer/generator/logic/world.cpp | 16 ++++++++-------- 3 files changed, 11 insertions(+), 9 deletions(-) diff --git a/src/dusk/randomizer/generator/data/world/overworld/Snowpeak Province.yaml b/src/dusk/randomizer/generator/data/world/overworld/Snowpeak Province.yaml index c2efddc69e..e0bcc777b8 100644 --- a/src/dusk/randomizer/generator/data/world/overworld/Snowpeak Province.yaml +++ b/src/dusk/randomizer/generator/data/world/overworld/Snowpeak Province.yaml @@ -102,12 +102,14 @@ Snowpeak Summit Lower: Nothing - Name: Snowpeak Ruins East Door Interior + Region: Snowpeak Ruins Can Transform: Never Exits: Snowpeak Ruins East Door Exterior: Can_Open_Doors Snowpeak Ruins Entrance: Nothing - Name: Snowpeak Ruins West Door Interior + Region: Snowpeak Ruins Can Transform: Never Exits: Snowpeak Ruins West Door Exterior: Can_Open_Doors diff --git a/src/dusk/randomizer/generator/logic/area.cpp b/src/dusk/randomizer/generator/logic/area.cpp index 5d06c8c6bf..96f173f7a1 100644 --- a/src/dusk/randomizer/generator/logic/area.cpp +++ b/src/dusk/randomizer/generator/logic/area.cpp @@ -250,7 +250,7 @@ namespace randomizer::logic::area this->AddHintRegion(region); LOG_TO_DEBUG("Assigned \"" + region + "\" as hint region to \"" + this->GetName() + "\""); - // Also assign any loactions in this area to the dungeon if there are any dungeon regions + // Also assign any locations in this area to the dungeon if there are any dungeon regions if (dungeons.contains(region)) { auto locAccs = this->GetLocations(); diff --git a/src/dusk/randomizer/generator/logic/world.cpp b/src/dusk/randomizer/generator/logic/world.cpp index 05bbc48eff..73a795085c 100644 --- a/src/dusk/randomizer/generator/logic/world.cpp +++ b/src/dusk/randomizer/generator/logic/world.cpp @@ -728,22 +728,22 @@ namespace randomizer::logic::world for (auto& [areaName, area] : this->_areaTable) { area->AssignHintRegionsAndDungeonLocations(); + } + for (auto& [areaName, area] : this->_areaTable) + { // Also assign dungeons their starting entrance for (const auto& exit : area->GetExits()) { auto parentRegions = exit->GetParentArea()->GetHintRegions(); auto connectedRegions = exit->GetConnectedArea()->GetHintRegions(); - if (!parentRegions.contains("None")) + for (auto& [dungeonName, dungeon] : this->_dungeons) { - for (auto& [dungeonName, dungeon] : this->_dungeons) + // If this exit leads into a dungeon and its parent area is not part of the dungeon + // then this is the entrance that leads into the dungeon + if (connectedRegions.contains(dungeonName) && !parentRegions.contains(dungeonName)) { - // If this exit leads into a dungeon and its parent area is not part of the dungeon - // then this is the entrance that leads into the dungeon - if (connectedRegions.contains(dungeonName) && !parentRegions.contains(dungeonName)) - { - dungeon->AddStartingEntrance(exit); - } + dungeon->AddStartingEntrance(exit); } } }