diff --git a/soh/soh/Enhancements/randomizer/logic.cpp b/soh/soh/Enhancements/randomizer/logic.cpp index 43ff3ce56..a567cd789 100644 --- a/soh/soh/Enhancements/randomizer/logic.cpp +++ b/soh/soh/Enhancements/randomizer/logic.cpp @@ -2104,30 +2104,16 @@ namespace Rando { } } - std::unordered_map SceneToDungeon = { - { SceneID::SCENE_DEKU_TREE, DungeonKey::DEKU_TREE }, - { SceneID::SCENE_DODONGOS_CAVERN, DungeonKey::DODONGOS_CAVERN }, - { SceneID::SCENE_JABU_JABU, DungeonKey::JABU_JABUS_BELLY }, - { SceneID::SCENE_FOREST_TEMPLE, DungeonKey::FOREST_TEMPLE }, - { SceneID::SCENE_FIRE_TEMPLE, DungeonKey::FIRE_TEMPLE }, - { SceneID::SCENE_WATER_TEMPLE, DungeonKey::WATER_TEMPLE }, - { SceneID::SCENE_SPIRIT_TEMPLE, DungeonKey::SPIRIT_TEMPLE }, - { SceneID::SCENE_SHADOW_TEMPLE, DungeonKey::SHADOW_TEMPLE }, - { SceneID::SCENE_BOTTOM_OF_THE_WELL, DungeonKey::BOTTOM_OF_THE_WELL }, - { SceneID::SCENE_ICE_CAVERN, DungeonKey::ICE_CAVERN }, - { SceneID::SCENE_GERUDO_TRAINING_GROUND, DungeonKey::GERUDO_TRAINING_GROUND }, - { SceneID::SCENE_INSIDE_GANONS_CASTLE, DungeonKey::GANONS_CASTLE }, - }; - // Get the swch bit positions for the dungeon const std::vector& GetDungeonSmallKeyDoors(SceneID sceneId) { static const std::vector emptyVector; - auto foundDungeon = SceneToDungeon.find(static_cast(sceneId)); - if (foundDungeon == SceneToDungeon.end()) { + + auto dungeonInfo = Rando::Context::GetInstance()->GetDungeons()->GetDungeonFromScene(sceneId); + if (dungeonInfo == nullptr) { return emptyVector; } - bool masterQuest = Rando::Context::GetInstance()->GetDungeon(foundDungeon->second)->IsMQ(); + bool masterQuest = dungeonInfo->IsMQ(); // Create a unique key for the dungeon and master quest uint8_t key = sceneId | (masterQuest << 7);