diff --git a/enemize/src/graph/dungeons.rs b/enemize/src/graph/dungeons.rs index 5d5bfbc..4d25b9a 100644 --- a/enemize/src/graph/dungeons.rs +++ b/enemize/src/graph/dungeons.rs @@ -142,3 +142,923 @@ lazy_static! { keys }; } + +#[derive(Clone, Copy, Eq, PartialEq, Hash)] +#[repr(u16)] +pub enum Room { + Ganon = 0, + HyruleCastleNorthCorridor, + HyruleCastleSwitchRoom, + HoulihanRoom, + TurtleRockCrystalRollerRoom, + EmptyCloneRoom0x05, + SwampPalaceArrghus, + TowerOfHeraMoldorm, + CaveHealingFairy, + PalaceOfDarkness0x09, + PalaceOfDarknessStalfossTrapRoom, + PalaceOfDarknessTurtleRoom, + GanonsTowerEntranceRoom, + GanonsTowerAgahnim2, + IcePalaceEntranceRoom, + EmptyCloneRoom0x0F, + GanonEvacuationRoute, + HyruleCastleBombableStockRoom, + Sanctuary, + TurtleRockHokkuBokkuKeyRoom2, + TurtleRockBigKeyRoom, + TurtleRock0x15, + SwampPalaceSwimmingTreadmill, + TowerOfHeraMoldormFallRoom, + Cave0x18BigFairyDropEntrance, + PalaceOfDarknessDarkMaze, + PalaceOfDarknessBigChestRoom, + PalaceOfDarknessMimicsMovingWallRoom, + GanonsTowerIceArmos, + GanonsTowerFinalHallway, + IcePalaceBombFloorBariRoom, + IcePalacePengatorBigKeyRoom, + AgahnimsTowerAgahnim, + HyruleCastleKeyRatRoom, + HyruleCastleSewerTextTriggerRoom, + TurtleRockWestExitToBalcony, + TurtleRockDoubleHokkuBokkuBigChestRoom, + EmptyCloneRoom0x25, + SwampPalaceStatueRoom, + TowerOfHeraBigChest, + SwampPalaceEntranceRoom, + SkullWoodsMothula, + PalaceOfDarknessBigHubRoom, + PalaceOfDarknessMapChestFairyRoom, + CaveHookshotCaveBackdoor, + EmptyCloneRoom0x2D, + IcePalaceCompassRoom, + CaveKakarikoWellHP, + AgahnimsTowerMaidenSacrificeChamber, + TowerOfHeraHardhatBeetleRoom, + HyruleCastleSewerKeyChestRoom, + DesertPalaceLanmolas, + SwampPalacePushBlockPuzzlePreBigKeyRoom, + SwampPalaceBigKeyBsRoom, + SwampPalaceBigChestRoom, + SwampPalaceMapChestWaterFillRoom, + SwampPalaceKeyPotRoom, + SkullWoodsGibdoKeyMothulaHoleRoom, + PalaceOfDarknessBombableFloorRoom, + PalaceOfDarknessSpikeBlockConveyorRoom, + CaveHookshotCave, + GanonsTowerTorchRoom2, + IcePalaceStalfosKnightConveyorHellway, + IcePalaceMapChestRoom, + AgahnimsTowerFinalBridgeRoom, + HyruleCastleFirstDarkRoom, + HyruleCastle6RopesRoom, + DesertPalaceTorchPuzzleMovingWallRoom, + ThievesTownBigChestRoom, + ThievesTownJailCellsRoom, + SwampPalaceCompassChestRoom, + EmptyCloneRoom0x47, + EmptyCloneRoom0x48, + SkullWoodsGibdoTorchPuzzleRoom, + PalaceOfDarknessEntranceRoom, + PalaceOfDarknessWarpsSouthMimicRoom, + GanonsTowerMiniHelmasaurConveyorRoom, + GanonsTowerMoldormRoom, + IcePalaceBombJumpRoom, + IcePalaceCloneRoomFairyRoom, + HyruleCastleWestCorridor, + HyruleCastleThroneRoom, + HyruleCastleEastCorridor, + DesertPalacePopos2BeamosHellwayRoom, + SwampPalaceUpstairsPitsRoom, + CastleSecretEntranceUncleRoom, + SkullWoodsKeyPotTrapRoom, + SkullWoodsBigKeyRoom, + SkullWoodsBigChestRoom, + SkullWoodsFinalSectionEntranceRoom, + PalaceOfDarknessHelmasaurKing, + GanonsTowerSpikePitRoom, + GanonsTowerGanonBallZ, + GanonsTowerGauntlet123, + IcePalaceLonelyFirebar, + IcePalaceHiddenChestSpikeFloorRoom, + HyruleCastleWestEntranceRoom, + HyruleCastleMainEntranceRoom, + HyruleCastleEastEntranceRoom, + DesertPalaceFinalSectionEntranceRoom, + ThievesTownWestAtticRoom, + ThievesTownEastAtticRoom, + SwampPalaceHiddenChestHiddenDoorRoom, + SkullWoodsCompassChestRoom, + SkullWoodsKeyChestTrapRoom, + EmptyCloneRoom0x69, + PalaceOfDarknessRupeeRoom, + GanonsTowerMimicsRoom, + GanonsTowerLanmolasRoom, + GanonsTowerGauntlet45, + IcePalacePengatorsRoom, + EmptyCloneRoom0x6F, + HyruleCastleSmallCorridorToJailCells, + HyruleCastleBoomerangChestRoom, + HyruleCastleMapChestRoom, + DesertPalaceBigChestRoom, + DesertPalaceMapChestRoom, + DesertPalaceBigKeyChestRoom, + SwampPalaceWaterDrainRoom, + TowerOfHeraEntranceRoom, + EmptyCloneRoom0x78, + EmptyCloneRoom0x79, + EmptyCloneRoom0x7A, + GanonsTowerMisc, + GanonsTowerEastSideCollapsingBridgeExplodingWallRoom, + GanonsTowerWinderWarpMazeRoom, + IcePalaceHiddenChestBombableFloorRoom, + IcePalaceBigSpikeTrapsRoom, + HyruleCastleJailCellRoom, + HyruleCastleNextToChasmRoom, + HyruleCastleBasementChasmRoom, + DesertPalaceWestEntranceRoom, + DesertPalaceMainEntranceRoom, + DesertPalaceEastEntranceRoom, + EmptyCloneRoom0x86, + TowerOfHeraTileRoom, + EmptyCloneRoom0x88, + EasternPalaceFairyRoom, + EmptyCloneRoom0x8A, + GanonsTowerBlockPuzzleSpikeSkipMapChestRoom, + GanonsTowerEastAndWestDownstairsBigChestRoom, + GanonsTowerTileTorchPuzzleRoom, + IcePalaceBlobsWithTetrisBarrier, + EmptyCloneRoom0x8F, + MiseryMireVitreous, + MiseryMireFinalSwitchRoom, + MiseryMireDarkBombWallSwitchesRoom, + MiseryMireDarkCaneFLoorSwitchPuzzleRoom, + EmptyCloneRoom0x94, + GanonsTowerFinalCollapsingBridgeRoom, + GanonsTowerTorches1Room, + MiseryMireTorchPuzzleMovingWallRoom, + MiseryMireEntranceRoom, + EasternPalaceEyegoreKeyRoom, + EmptyCloneRoom0x9A, + GanonsTowerManySpikesWarpMazeRoom, + GanonsTowerInvisibleFloorMazeRoom, + GanonsTowerCompassChestInvisibleFloorRoom, + IcePalaceBigChestRoom, + IcePalaceIceFloorPotsKeyAndSwitch, + MiseryMirePreVitreousRoom, + MiseryMireFishRoom, + MiseryMireBridgeKeyChestRoom, + MiseryMireEmptyLConnectingRoom, + TurtleRockTrinexx, + GanonsTowerWizzrobesRooms, + GanonsTowerMoldormFallRoom, + TowerOfHeraFairyRoom, + EasternPalaceStalfosSpawnRoom, + EasternPalaceBigChestRoom, + EasternPalaceMapChestRoom, + ThievesTownMovingSpikesKeyPotRoom, + ThievesTownBlindTheThief, + EmptyCloneRoom0xAD, + IcePalaceIceTRoom, + IcePalaceIceBridgeRoom, + AgahnimsTowerCircleOfPots, + MiseryMireHourglassRoom, + MiseryMireSlugRoom, + MiseryMireSpikeKeyChestRoom, + TurtleRockPreTrinexxRoom, + TurtleRockDarkMaze, + TurtleRockChainChompsRoom, + TurtleRockMapChestKeyChestRollerRoom, + EasternPalaceBigKeyRoom, + EasternPalaceLobbyCannonballsRoom, + EasternPalaceDarkAntifairyKeyPotRoom, + ThievesTownHellway, + ThievesTownConveyorToilet, + EmptyCloneRoom0xBD, + IcePalaceBlockPuzzleRoom, + IcePalaceCloneRoomSwitchRoom, + AgahnimsTowerDarkBridgeRoom, + MiseryMireCompassChestTileRoom, + MiseryMireBigHubRoom, + MiseryMireBigChestRoom, + TurtleRockFinalCrystalSwitchPuzzleRoom, + TurtleRockLaserBridge, + TurtleRockSomariaHub, + TurtleRockTorchPuzzle, + EasternPalaceArmosKnights, + EasternPalaceEntranceRoom, + UnknownRoom, + ThievesTownNorthWestEntranceRoom, + ThievesTownNorthEastEntranceRoom, + EmptyCloneRoom0xCD, + IcePalaceHoleToKholdstareRoom, + EmptyCloneRoom0xCF, + AgahnimsTowerDarkMaze, + MiseryMireConveyorSlugBigKeyRoom, + MiseryMireWizzrobesRoom, + EmptyCloneRoom0xD3, + EmptyCloneRoom0xD4, + TurtleRockLaserKeyRoom, + TurtleRockEntranceRoom, + EmptyCloneRoom0xD7, + EasternPalacePreArmosKnightsRoom, + EasternPalaceCannonballRoom, + EasternPalacePotSwitchRoom, + ThievesTownSouthWestEntranceRoom, + ThievesTownSouthEastEntranceRoom, + EmptyCloneRoom0xDD, + IcePalaceKholdstare, + CaveBackwardsDeathMountainTopFloor, + AgahnimsTowerEntranceRoom, + CaveLostWoodsHP, + CaveLumberjacksTreeHP, + CaveMagicBat, + CaveLostOldManHouse, + CaveLostOldManHouseBack, + Cave0xE6, + Cave0xE7, + CaveSuperBunnyTop, + EmptyCloneRoom0xE9, + CaveSpectacleRockHP, + CaveBumperCaveTop, + EmptyCloneRoom0xEC, + Cave0xED, + CaveSpiralCave, + CaveCrystalSwitch5ChestsRoom, + CaveLostOldManStartingCaveBottom, + CaveLostOldManStartingCaveTop, + HouseOldWomanNextDoor, + HouseOldWomanSahasrahlasWifeMaybe, + HouseAngryBrothersWest, + HouseAngryBrothersEast, + EmptyCloneRoom0xF6, + EmptyCloneRoom0xF7, + CaveSuperBunnyBottom, + CaveSpectacleRockExit, + CaveSpectacleRockPrizeEntrance, + CaveBumperCaveBottom, + EmptyCloneRoom0xFC, + Cave0xFD, + CaveSpiralCaveExit, + CaveParadoxCaveMiddleEntrance, + ShopInLostWoods0x100, + ScaredLadyHouses, + SickKid, + InnBushHouse, + LinksHouse, + ShabadooHouse, + ChestGameBombHouse, + LibraryBombFarmRoom, + ChickenHouse, + WitchHut, + Aginah, + Dam, + MimicCave, + CaveOutsideMiseryMire, + Cave0x10E, + Shop0x10F, + Shop0x110, + ArcherGame, + CaveShop0x112, + KingsTomb, + WishingWellCave0x114, + WishingWellBigFairy, + FatFairy, + SpikeCave, + Shop0x118, + BlindsHouse, + Mutant, + MirrorCaveGroveAndTomb, + BombShop, + BlindsBasement, + HypeCave, + Shop0x11F, + IceRodCave, + SmithHouse, + FortuneTellers, + MiniMoldormCave, + UnknownCaveBonkCave, + Cave0x125, + CheckerBoardCave, + HammerPegCave, +} + +use Room::*; + +lazy_static! { + pub static ref ROOM_NAMES: HashMap = { + + let names = [ + (Ganon, "Ganon"), + (HyruleCastleNorthCorridor, "Hyrule Castle (North Corridor)"), + (HyruleCastleSwitchRoom, "Hyrule Castle (Switch Room)"), + (HoulihanRoom, "Houlihan Room"), + (TurtleRockCrystalRollerRoom, "Turtle Rock (Crystal Roller Room)"), + (EmptyCloneRoom0x05, "Empty Clone Room"), + (SwampPalaceArrghus, "Swamp Palace (Arrghus[Boss])"), + (TowerOfHeraMoldorm, "Tower of Hera (Moldorm[Boss])"), + (CaveHealingFairy, "Cave (Healing Fairy)"), + (PalaceOfDarkness0x09, "Palace of Darkness"), + (PalaceOfDarknessStalfossTrapRoom, "Palace of Darkness (Stalfoss Trap Room)"), + (PalaceOfDarknessTurtleRoom, "Palace of Darkness (Turtle Room)"), + (GanonsTowerEntranceRoom, "Ganon's Tower (Entrance Room)"), + (GanonsTowerAgahnim2, "Ganaon's Tower (Agahnim2[Boss])"), + (IcePalaceEntranceRoom, "Ice Palace (Entrance Room)"), + (EmptyCloneRoom0x0F, "Empty Clone Room"), + (GanonEvacuationRoute, "Ganon Evacuation Route"), + (HyruleCastleBombableStockRoom, "Hyrule Castle (Bombable Stock Room)"), + (Sanctuary, "Sanctuary"), + (TurtleRockHokkuBokkuKeyRoom2, "Turtle Rock (Hokku-Bokku Key Room 2)"), + (TurtleRockBigKeyRoom, "Turtle Rock (Big Key Room)"), + (TurtleRock0x15, "Turtle Rock"), + (SwampPalaceSwimmingTreadmill, "Swamp Palace (Swimming Treadmill)"), + (TowerOfHeraMoldormFallRoom, "Tower of Hera (Moldorm Fall Room)"), + (Cave0x18BigFairyDropEntrance, "Big Fairy Drop Entrance Cave"), + (PalaceOfDarknessDarkMaze, "Palace of Darkness (Dark Maze)"), + (PalaceOfDarknessBigChestRoom, "Palace of Darkness (Big Chest Room)"), + (PalaceOfDarknessMimicsMovingWallRoom, "Palace of Darkness (Mimics / Moving Wall Room"), + (GanonsTowerIceArmos, "Ganon's Tower (Ice Armos)"), + (GanonsTowerFinalHallway, "Ganon's Tower (Final Hallway)"), + (IcePalaceBombFloorBariRoom, "Ice Palace (Bomb Floor / Bari Room)"), + (IcePalacePengatorBigKeyRoom, "Ice Palace (Pengator / Big Key Room)"), + (AgahnimsTowerAgahnim, "Agahnim's Tower (Agahnim[Boss])"), + (HyruleCastleKeyRatRoom, "Hyrule Castle (Key Rat Room)"), + (HyruleCastleSewerTextTriggerRoom, "Hyrule Castle (Sewer Text Trigger Room)"), + (TurtleRockWestExitToBalcony, "Turtle Rock (West Exit to Balcony)"), + (TurtleRockDoubleHokkuBokkuBigChestRoom, "Turtle Rock (Double Hokku-Bokku / Big Chest Room)"), + (EmptyCloneRoom0x25, "Empty Clone Room"), + (SwampPalaceStatueRoom, "Swamp Palace (Statue Room)"), + (TowerOfHeraBigChest, "Tower of Hera (Big Chest)"), + (SwampPalaceEntranceRoom, "Swamp Palace (Entrance Room)"), + (SkullWoodsMothula, "Skull Woods (Mothula[Boss])"), + (PalaceOfDarknessBigHubRoom, "Palace of Darkness (Big Hub Room)"), + (PalaceOfDarknessMapChestFairyRoom, "Palace of Darkness (Map Chest / Fairy Room)"), + (CaveHookshotCaveBackdoor, "Hookshot Cave Backdoor (Big Fairy)"), + (EmptyCloneRoom0x2D, "Empty Clone Room"), + (IcePalaceCompassRoom, "Ice Palace (Compass Room)"), + (CaveKakarikoWellHP, "Kakariko Well HP"), + (AgahnimsTowerMaidenSacrificeChamber, "Agahnim's Tower (Maiden Sacrifice Chamber)"), + (TowerOfHeraHardhatBeetleRoom, "Tower of Hera (Hardhat Beetles Room)"), + (HyruleCastleSewerKeyChestRoom, "Hyrule Castle (Sewer Key Chest Room)"), + (DesertPalaceLanmolas, "Desert Palace (Lanmolas[Boss])"), + (SwampPalacePushBlockPuzzlePreBigKeyRoom, "Swamp Palace (Push Block Puzzle / Pre-Big-Key Room"), + (SwampPalaceBigKeyBsRoom, "Swamp Palace (Big Key / BS Room)"), + (SwampPalaceBigChestRoom, "Swamp Palace (Big Chest Room)"), + (SwampPalaceMapChestWaterFillRoom, "Swamp Palace (Map Chest / Water Fill Room)"), + (SwampPalaceKeyPotRoom, "Swamp Palace (Key Pot Room)"), + (SkullWoodsGibdoKeyMothulaHoleRoom, "Skull Woods (Gibdo Key / Mothula Hole Room)"), + (PalaceOfDarknessBombableFloorRoom, "Palace of Darkness (Bombable Floor Room)"), + (PalaceOfDarknessSpikeBlockConveyorRoom, "Palace of Darkness (Spike Block / Conveyor Room)"), + (CaveHookshotCave, "Hookshot Cave"), + (GanonsTowerTorchRoom2, "Ganon's Tower (Torch Room 2)"), + (IcePalaceStalfosKnightConveyorHellway, "Ice Palace (Stalfos Knight / Conveyor Hellway)"), + (IcePalaceMapChestRoom, "Ice Palace (Map Chest Room)"), + (AgahnimsTowerFinalBridgeRoom, "Agahnim's Tower (Final Bridge Room)"), + (HyruleCastleFirstDarkRoom, "Hyrule Castle (First Dark Room)"), + (HyruleCastle6RopesRoom, "Hyrule Castle (6 Ropes Room)"), + (DesertPalaceTorchPuzzleMovingWallRoom, "Desert Palace (Torch Puzzle / Moving Wall Room)"), + (ThievesTownBigChestRoom, "Thieves' Town (Big Chest Room)"), + (ThievesTownJailCellsRoom, "Thieves' Town (Jail Cells Room)"), + (SwampPalaceCompassChestRoom, "Swamp Palace (Compass Chest Room)"), + (EmptyCloneRoom0x47, "Empty Clone Room"), + (EmptyCloneRoom0x48, "Empty Clone Room"), + (SkullWoodsGibdoTorchPuzzleRoom, "Skull Woods (Gibdo Torch Puzzle Room)"), + (PalaceOfDarknessEntranceRoom, "Palace of Darkness (Entrance Room)"), + (PalaceOfDarknessWarpsSouthMimicRoom, "Palace of Darkness (Warps / South Mimic Room)"), + (GanonsTowerMiniHelmasaurConveyorRoom, "Ganon's Tower (Mini-Helmasaur Conveyor Room)"), + (GanonsTowerMoldormRoom, "Ganon's Tower (Moldorm Room)"), + (IcePalaceBombJumpRoom, "Ice Palace (Bomb Jump Room)"), + (IcePalaceCloneRoomFairyRoom, "Ice Palace Clone Room (Fairy Room)"), + (HyruleCastleWestCorridor, "Hyrule Castle (West Corridor)"), + (HyruleCastleThroneRoom, "Hyrule Castle (Throne Room)"), + (HyruleCastleEastCorridor, "Hyrule Castle (East Corridor)"), + (DesertPalacePopos2BeamosHellwayRoom, "Desert Palace (Popos 2 / Beamos Hellway Room)"), + (SwampPalaceUpstairsPitsRoom, "Swamp Palace (Upstairs Pits Room)"), + (CastleSecretEntranceUncleRoom, "Castle Secret Entrance / Uncle Room"), + (SkullWoodsKeyPotTrapRoom, "Skull Woods (Key Pot / Trap Room)"), + (SkullWoodsBigKeyRoom, "Skull Woods (Big Key Room)"), + (SkullWoodsBigChestRoom, "Skull Woods (Big Chest Room)"), + (SkullWoodsFinalSectionEntranceRoom, "Skull Woods (Final Section Entrance Room)"), + (PalaceOfDarknessHelmasaurKing, "Palace of Darkness (Helmasaur King[Boss])"), + (GanonsTowerSpikePitRoom, "Ganon's Tower (Spike Pit Room)"), + (GanonsTowerGanonBallZ, "Ganon's Tower (Ganon-Ball Z)"), + (GanonsTowerGauntlet123, "Ganon's Tower (Gauntlet 1/2/3)"), + (IcePalaceLonelyFirebar, "Ice Palace (Lonely Firebar)"), + (IcePalaceHiddenChestSpikeFloorRoom, "Ice Palace (Hidden Chest / Spike Floor Room)"), + (HyruleCastleWestEntranceRoom, "Hyrule Castle (West Entrance Room)"), + (HyruleCastleMainEntranceRoom, "Hyrule Castle (Main Entrance Room)"), + (HyruleCastleEastEntranceRoom, "Hyrule Castle (East Entrance Room)"), + (DesertPalaceFinalSectionEntranceRoom, "Desert Palace (Final Section Entrance Room)"), + (ThievesTownWestAtticRoom, "Thieves' Town (West Attic Room)"), + (ThievesTownEastAtticRoom, "Thieves' Town (East Attic Room)"), + (SwampPalaceHiddenChestHiddenDoorRoom, "Swamp Palace (Hidden Chest / Hidden Door Room)"), + (SkullWoodsCompassChestRoom, "Skull Woods (Compass Chest Room)"), + (SkullWoodsKeyChestTrapRoom, "Skull Woods (Key Chest / Trap Room)"), + (EmptyCloneRoom0x69, "Empty Clone Room"), + (PalaceOfDarknessRupeeRoom, "Palace of Darkness (Rupee Room)"), + (GanonsTowerMimicsRoom, "Ganon's Tower (Mimics Room)"), + (GanonsTowerLanmolasRoom, "Ganon's Tower (Lanmolas Room"), + (GanonsTowerGauntlet45, "Ganon's Tower (Gauntlet 4/5)"), + (IcePalacePengatorsRoom, "Ice Palace (Pengators Room)"), + (EmptyCloneRoom0x6F, "Empty Clone Room"), + (HyruleCastleSmallCorridorToJailCells, "Hyrule Castle (Small Corridor to Jail Cells"), + (HyruleCastleBoomerangChestRoom, "Hyrule Castle (Boomerang Chest Room)"), + (HyruleCastleMapChestRoom, "Hyrule Castle (Map Chest Room)"), + (DesertPalaceBigChestRoom, "Desert Palace (Big Chest Room)"), + (DesertPalaceMapChestRoom, "Desert Palace (Map Chest Room)"), + (DesertPalaceBigKeyChestRoom, "Desert Palace (Big Key Chest Room)"), + (SwampPalaceWaterDrainRoom, "Swamp Palace (Water Drain Room)"), + (TowerOfHeraEntranceRoom, "Tower of Hera (Entrance Room)"), + (EmptyCloneRoom0x78, "Empty Clone Room"), + (EmptyCloneRoom0x79, "Empty Clone Room"), + (EmptyCloneRoom0x7A, "Empty Clone Room"), + (GanonsTowerMisc, "Ganon's Tower (Sideways Conveyors / 4 Chest 4 Shooter / Square Pit"), + (GanonsTowerEastSideCollapsingBridgeExplodingWallRoom, "Ganon's Tower (East Side Collapsing Bridge / Exploding Wall Room)"), + (GanonsTowerWinderWarpMazeRoom, "Ganon's Tower (Winder / Warp Maze Room)"), + (IcePalaceHiddenChestBombableFloorRoom, "Ice Palace (Hidden Chest / Bombable Floor Room)"), + (IcePalaceBigSpikeTrapsRoom, "Ice Palace (Big Spike Traps Room)"), + (HyruleCastleJailCellRoom, "Hyrule Castle (Jail Cell Room)"), + (HyruleCastleNextToChasmRoom, "Hyrule Castle (Next to Chasm Room)"), + (HyruleCastleBasementChasmRoom, "Hyrule Castle (Basement Chasm Room)"), + (DesertPalaceWestEntranceRoom, "Desert Palace (West Entrance Room)"), + (DesertPalaceMainEntranceRoom, "Desert Palace (Main Entrance Room)"), + (DesertPalaceEastEntranceRoom, "Desert Palace (East Entrance Room)"), + (EmptyCloneRoom0x86, "Empty Clone Room"), + (TowerOfHeraTileRoom, "Tower of Hera (Tile Room)"), + (EmptyCloneRoom0x88, "Empty Clone Room"), + (EasternPalaceFairyRoom, "Eastern Palace (Fairy Room)"), + (EmptyCloneRoom0x8A, "Empty Clone Room"), + (GanonsTowerBlockPuzzleSpikeSkipMapChestRoom, "Ganon's Tower (Block Puzzle / Spike Skip / Map Chest Room)"), + (GanonsTowerEastAndWestDownstairsBigChestRoom, "Ganon's Tower (East and West Downstairs / Big Chest Room)"), + (GanonsTowerTileTorchPuzzleRoom, "Ganon's Tower (Tile / Torch Puzzle Room)"), + (IcePalaceBlobsWithTetrisBarrier, "Ice Palace (Blobs with Tetris Barrier)"), + (EmptyCloneRoom0x8F, "Empty Clone Room"), + (MiseryMireVitreous, "Misery Mire (Vitreous[Boss])"), + (MiseryMireFinalSwitchRoom, "Misery Mire (Final Switch Room)"), + (MiseryMireDarkBombWallSwitchesRoom, "Misery Mire (Dark Bomb Wall / Switches Room)"), + (MiseryMireDarkCaneFLoorSwitchPuzzleRoom, "Misery Mire (Dark Cane FLoor Switch Puzzle Room)"), + (EmptyCloneRoom0x94, "Empty Clone Room"), + (GanonsTowerFinalCollapsingBridgeRoom, "Ganon's Tower (Final Collapsing Bridge Room)"), + (GanonsTowerTorches1Room, "Ganon's Tower (Torches 1 Room)"), + (MiseryMireTorchPuzzleMovingWallRoom, "Misery Mire (Torch Puzzle / Moving Wall Room)"), + (MiseryMireEntranceRoom, "Misery Mire (Entrance Room)"), + (EasternPalaceEyegoreKeyRoom, "Eastern Palace (Eyegore Key Room)"), + (EmptyCloneRoom0x9A, "Empty Clone Room"), + (GanonsTowerManySpikesWarpMazeRoom, "Ganon's Tower (Many Spikes / Warp Maze Room)"), + (GanonsTowerInvisibleFloorMazeRoom, "Ganon's Tower (Invisible Floor Maze Room)"), + (GanonsTowerCompassChestInvisibleFloorRoom, "Ganon's Tower (Compass Chest / Invisible Floor Room)"), + (IcePalaceBigChestRoom, "Ice Palace (Big Chest Room)"), + (IcePalaceIceFloorPotsKeyAndSwitch, "Ice Palace (Room with ice floor, key, and 4 wall rats)"), + (MiseryMirePreVitreousRoom, "Misery Mire (Pre-Vitreous Room)"), + (MiseryMireFishRoom, "Misery Mire (Fish Room)"), + (MiseryMireBridgeKeyChestRoom, "Misery Mire (Bridge Key Chest Room)"), + (MiseryMireEmptyLConnectingRoom, "Misery Mire (Empty 'L' Connecting Room)"), + (TurtleRockTrinexx, "Turtle Rock (Trinexx[Boss])"), + (GanonsTowerWizzrobesRooms, "Ganon's Tower (Wizzrobes Rooms)"), + (GanonsTowerMoldormFallRoom, "Ganon's Tower (Moldorm Fall Room)"), + (TowerOfHeraFairyRoom, "Tower of Hera (Fairy Room)"), + (EasternPalaceStalfosSpawnRoom, "Eastern Palace (Staflos Spawn Room)"), + (EasternPalaceBigChestRoom, "Eastern Palace (Big Chest Room)"), + (EasternPalaceMapChestRoom, "Eastern Palace (Map Chest Room)"), + (ThievesTownMovingSpikesKeyPotRoom, "Thieves' Town (Moving Spikes / Key Pot Room)"), + (ThievesTownBlindTheThief, "Thieves' Town (Blind the Thief[Boss])"), + (EmptyCloneRoom0xAD, "Empty Clone Room"), + (IcePalaceIceTRoom, "Ice Palace (Ice T Room)"), + (IcePalaceIceBridgeRoom, "Ice Palace (Ice Bridge Room)"), + (AgahnimsTowerCircleOfPots, "Agahnim's Tower (Circle of Pots)"), + (MiseryMireHourglassRoom, "Misery Mire (Hourglass Room)"), + (MiseryMireSlugRoom, "Misery Mire (Slug Room)"), + (MiseryMireSpikeKeyChestRoom, "Misery Mire (Spike Key Chest Room)"), + (TurtleRockPreTrinexxRoom, "Turtle Rock (Pre-Trinexx Room)"), + (TurtleRockDarkMaze, "Turtle Rock (Dark Maze)"), + (TurtleRockChainChompsRoom, "Turtle Rock (Chain Chomps Room)"), + (TurtleRockMapChestKeyChestRollerRoom, "Turtle Rock (Map Chest / Key Chest / Roller Room)"), + (EasternPalaceBigKeyRoom, "Eastern Palace (Big Key Room)"), + (EasternPalaceLobbyCannonballsRoom, "Eastern Palace (Lobby Cannonballs Room)"), + (EasternPalaceDarkAntifairyKeyPotRoom, "Eastern Palace (Dark Antifairy / Key Pot Room)"), + (ThievesTownHellway, "Thieves' Town (Hellway)"), + (ThievesTownConveyorToilet, "Thieves' Town (Conveyor Toilet)"), + (EmptyCloneRoom0xBD, "Empty Clone Room"), + (IcePalaceBlockPuzzleRoom, "Ice Palace (Block Puzzle Room)"), + (IcePalaceCloneRoomSwitchRoom, "Ice Palace Clone Room (Switch Room)"), + (AgahnimsTowerDarkBridgeRoom, "Agahnim's Tower (Dark Bridge Room)"), + (MiseryMireCompassChestTileRoom, "Misery Mire (Compass Chest / Tile Room)"), + (MiseryMireBigHubRoom, "Misery Mire (Big Hub Room)"), + (MiseryMireBigChestRoom, "Misery Mire (Big Chest Room)"), + (TurtleRockFinalCrystalSwitchPuzzleRoom, "Turtle Rock (Final Crystal Switch Puzzle Room)"), + (TurtleRockLaserBridge, "Turtle Rock (Laser Bridge)"), + (TurtleRockSomariaHub, "Turtle Rock (Somaria Hub Room)"), + (TurtleRockTorchPuzzle, "Turtle Rock (Torch Puzzle)"), + (EasternPalaceArmosKnights, "Eastern Palace (Armos Knights[Boss])"), + (EasternPalaceEntranceRoom, "Eastern Palace (Entrance Room)"), + (UnknownRoom, "Unused Room??"), + (ThievesTownNorthWestEntranceRoom, "Thieves' Town (North West Entrance Room)"), + (ThievesTownNorthEastEntranceRoom, "Thieves' Town (North East Entrance Room)"), + (EmptyCloneRoom0xCD, "Empty Clone Room"), + (IcePalaceHoleToKholdstareRoom, "Ice Palace (Hole to Kholdstare Room)"), + (EmptyCloneRoom0xCF, "Empty Clone Room"), + (AgahnimsTowerDarkMaze, "Agahnim's Tower (Dark Maze)"), + (MiseryMireConveyorSlugBigKeyRoom, "Misery Mire (Conveyor Slug / Big Key Room)"), + (MiseryMireWizzrobesRoom, "Misery Mire (Wizzrobes Room)"), + (EmptyCloneRoom0xD3, "Empty Clone Room"), + (EmptyCloneRoom0xD4, "Empty Clone Room"), + (TurtleRockLaserKeyRoom, "Turtle Rock (Laser Key Room)"), + (TurtleRockEntranceRoom, "Turtle Rock (Entrance Room)"), + (EmptyCloneRoom0xD7, "Empty Clone Room"), + (EasternPalacePreArmosKnightsRoom, "Eastern Palace (Pre-Armos-Knights Room)"), + (EasternPalaceCannonballRoom, "Eastern Palace (Cannonball Room)"), + (EasternPalacePotSwitchRoom, "Eastern Palace (Pot Switch Room)"), + (ThievesTownSouthWestEntranceRoom, "Thieves' Town (South West Entrance Room)"), + (ThievesTownSouthEastEntranceRoom, "Thieves Town (South East Entrance Room)"), + (EmptyCloneRoom0xDD, "Empty Clone Room"), + (IcePalaceKholdstare, "Ice Palace (Kholdstare[Boss])"), + (CaveBackwardsDeathMountainTopFloor, "Death Mountain Exit (Top)"), + (AgahnimsTowerEntranceRoom, "Agahnim's Tower (Entrance Room)"), + (CaveLostWoodsHP, "Cave (Lost Woods HP)"), + (CaveLumberjacksTreeHP, "Cave (Lumberjacks' Tree HP)"), + (CaveMagicBat, "Cave (Magic Bat)"), + (CaveLostOldManHouse, "Cave (Lost Old Man's House)"), + (CaveLostOldManHouseBack, "Cave (Lost Old Man's House Back)"), + (Cave0xE6, "Cave (Bunch of Keese)"), + (Cave0xE7, "Cave (Bunch of Keese 2)"), + (CaveSuperBunnyTop, "Cave (Super Bunny Top)"), + (EmptyCloneRoom0xE9, "Empty Clone Room"), + (CaveSpectacleRockHP, "Cave (Inside Spectacle Rock HP)"), + (CaveBumperCaveTop, "Cave (Bumper Cave Top)"), + (EmptyCloneRoom0xEC, "Empty Clone Room"), + (Cave0xED, "Cave (??)"), + (CaveSpiralCave, "Cave (Spiral Cave)"), + (CaveCrystalSwitch5ChestsRoom, "Cave (Crystal Switch / 5 Chests Room)"), + (CaveLostOldManStartingCaveBottom, "Cave (Lost Old Man Starting Cave Bottom)"), + (CaveLostOldManStartingCaveTop, "Cave (Lost Old Man Starting Cave Top)"), + (HouseOldWomanNextDoor, "House (Old Woman Next Door)"), + (HouseOldWomanSahasrahlasWifeMaybe, "House (Old Woman / Sahasrahla's Wife?)"), + (HouseAngryBrothersWest, "House (Angry Brothers West)"), + (HouseAngryBrothersEast, "House (Angry Brothers East)"), + (EmptyCloneRoom0xF6, "Empty Clone Room"), + (EmptyCloneRoom0xF7, "Empty Clone Room"), + (CaveSuperBunnyBottom, "Cave (Super Bunny Bottom)"), + (CaveSpectacleRockExit, "Cave (Spectacle Rock Exit)"), + (CaveSpectacleRockPrizeEntrance, "Cave (Spectacle Rock Prize Entrance)"), + (CaveBumperCaveBottom, "Cave (Bumper Cave Bottom)"), + (EmptyCloneRoom0xFC, "Empty Clone Room"), + (Cave0xFD, "Cave (Death Mountain)"), + (CaveSpiralCaveExit, "Cave (Spiral Cave Exit)"), + (CaveParadoxCaveMiddleEntrance, "Cave (Paradox Cave 'Middle' Entrance)"), + (ShopInLostWoods0x100, "Shop in Lost Woods"), + (ScaredLadyHouses, "Scared Ladies' Houses"), + (SickKid, "Sick Kid"), + (InnBushHouse, "Inn / BushHouse"), + (LinksHouse, "Link's House"), + (ShabadooHouse, "Sahasrahla's House"), + (ChestGameBombHouse, "Chest Game / Outcast Village Bomb House"), + (LibraryBombFarmRoom, "Library / Bomb Farm Room"), + (ChickenHouse, "Chicken House"), + (WitchHut, "Witch Hut"), + (Aginah, "Aginah's Cave"), + (Dam, "Dam"), + (MimicCave, "Mimic Cave"), + (CaveOutsideMiseryMire, "Cave Outside Misery Mire"), + (Cave0x10E, "Cave0x10E"), + (Shop0x10F, "Shop0x10F"), + (Shop0x110, "Shop0x110"), + (ArcherGame, "Archery Game"), + (CaveShop0x112, "CaveShop0x112"), + (KingsTomb, "King's Tomb"), + (WishingWellCave0x114, "Wishing Well / Cave 0x114"), + (WishingWellBigFairy, "Wishing Well / BigFairy"), + (FatFairy, "Fat Fairy"), + (SpikeCave, "Spike Cave"), + (Shop0x118, "Shop0x118"), + (BlindsHouse, "Blind's House"), + (Mutant, "Mutant Hut"), + (MirrorCaveGroveAndTomb, "Mirror Caves (South of Grove / Graveyard Ledge)"), + (BombShop, "Bomb Shop"), + (BlindsBasement, "Blind's Basement"), + (HypeCave, "Hype Cave"), + (Shop0x11F, "Shop0x11F"), + (IceRodCave, "Ice Rod Cave"), + (SmithHouse, "Smiths' House"), + (FortuneTellers, "Fortune Tellers"), + (MiniMoldormCave, "Mini-Moldorm Cave"), + (UnknownCaveBonkCave, "Unknown Cave / BonkCave"), + (Cave0x125, "Cave0x125"), + (CheckerBoardCave, "Checker Board Cave"), + (HammerPegCave, "Hammer Peg Cave"), + ]; + + HashMap::from_iter(names.into_iter()) + }; +} + +pub const NEED_KILLABLE_ROOMS: [Room; 39] = [ + EasternPalaceBigKeyRoom, // For anti-fairy circle around pot switch + PalaceOfDarknessTurtleRoom, + PalaceOfDarknessMimicsMovingWallRoom, + PalaceOfDarknessWarpsSouthMimicRoom, + TurtleRockCrystalRollerRoom, // Greed room has a kill-all section + TurtleRockDoubleHokkuBokkuBigChestRoom, + TurtleRockChainChompsRoom, + SwampPalaceEntranceRoom, + IcePalaceEntranceRoom, // Not normally required to backtrack, except in doors intensity 3 + IcePalaceCompassRoom, + IcePalaceStalfosKnightConveyorHellway, + IcePalacePengatorsRoom, + TowerOfHeraHardhatBeetleRoom, + TowerOfHeraTileRoom, + ThievesTownBigChestRoom, // For trap room north of big chest + ThievesTownJailCellsRoom, // For room with stairs and big lift block + DesertPalacePopos2BeamosHellwayRoom, + DesertPalaceBigKeyChestRoom, + DesertPalaceEastEntranceRoom, + GanonsTowerTorchRoom2, + GanonsTowerGauntlet123, + GanonsTowerMimicsRoom, + GanonsTowerGauntlet45, + GanonsTowerMisc, + GanonsTowerWinderWarpMazeRoom, + GanonsTowerTileTorchPuzzleRoom, + GanonsTowerTorches1Room, + GanonsTowerWizzrobesRooms, + HyruleCastleBoomerangChestRoom, + EasternPalaceStalfosSpawnRoom, + EasternPalacePreArmosKnightsRoom, + AgahnimsTowerCircleOfPots, + AgahnimsTowerDarkBridgeRoom, // Not normally required to go backwards, except in basic/crossed doors, or doing glitch shenanigans. + AgahnimsTowerEntranceRoom, + MiseryMireSlugRoom, + MiseryMireWizzrobesRoom, + CaveCrystalSwitch5ChestsRoom, + MimicCave, + MiniMoldormCave, +]; + +// All the rooms that require special handling. + +/// These rooms need to be locked to GFX ID 28. +pub const FREEZOR_ROOMS: [Room; 5] = [ + IcePalaceEntranceRoom, + IcePalaceHiddenChestBombableFloorRoom, + IcePalaceBlobsWithTetrisBarrier, + IcePalaceBigChestRoom, + IcePalaceBlockPuzzleRoom, +]; + +/// These rooms need to be locked to GFX ID 17. +pub const WATER_ROOMS: [Room; 33] = [ + GanonsTowerEntranceRoom, + GanonsTowerAgahnim2, + SwampPalaceSwimmingTreadmill, + GanonsTowerIceArmos, + GanonsTowerFinalHallway, + SwampPalaceEntranceRoom, + SwampPalacePushBlockPuzzlePreBigKeyRoom, + SwampPalaceBigChestRoom, + SwampPalaceKeyPotRoom, + GanonsTowerTorchRoom2, + SwampPalaceCompassChestRoom, + GanonsTowerMiniHelmasaurConveyorRoom, + GanonsTowerMoldormRoom, + GanonsTowerSpikePitRoom, + GanonsTowerGanonBallZ, + GanonsTowerGauntlet123, + SwampPalaceHiddenChestHiddenDoorRoom, + GanonsTowerMimicsRoom, + GanonsTowerLanmolasRoom, + GanonsTowerGauntlet45, + GanonsTowerMisc, + GanonsTowerEastSideCollapsingBridgeExplodingWallRoom, + GanonsTowerWinderWarpMazeRoom, + GanonsTowerBlockPuzzleSpikeSkipMapChestRoom, + GanonsTowerEastAndWestDownstairsBigChestRoom, + GanonsTowerTileTorchPuzzleRoom, + GanonsTowerFinalCollapsingBridgeRoom, + GanonsTowerTorches1Room, + GanonsTowerManySpikesWarpMazeRoom, + GanonsTowerInvisibleFloorMazeRoom, + GanonsTowerCompassChestInvisibleFloorRoom, + GanonsTowerWizzrobesRooms, + GanonsTowerMoldormFallRoom, +]; + +pub const SHADOW_ROOMS: [Room; 2] = [ + IcePalaceStalfosKnightConveyorHellway, + IcePalaceIceFloorPotsKeyAndSwitch, +]; + +pub const WALL_MASTER_ROOMS: [Room; 5] = [ + SkullWoodsGibdoKeyMothulaHoleRoom, + SkullWoodsGibdoTorchPuzzleRoom, + SkullWoodsKeyPotTrapRoom, + SkullWoodsKeyChestTrapRoom, + GanonsTowerTileTorchPuzzleRoom, +]; + +pub const BUMPER_CRYSTAL_LASER_ROOMS: [Room; 42] = [ + TurtleRockCrystalRollerRoom, + PalaceOfDarknessTurtleRoom, + TurtleRockHokkuBokkuKeyRoom2, + TowerOfHeraMoldormFallRoom, + PalaceOfDarknessMimicsMovingWallRoom, + IcePalaceBombFloorBariRoom, + PalaceOfDarknessBigHubRoom, + PalaceOfDarknessMapChestFairyRoom, + TowerOfHeraHardhatBeetleRoom, + GanonsTowerTorchRoom2, + AgahnimsTowerFinalBridgeRoom, + ThievesTownBigChestRoom, + PalaceOfDarknessEntranceRoom, + GanonsTowerMiniHelmasaurConveyorRoom, + SkullWoodsBigChestRoom, + SkullWoodsFinalSectionEntranceRoom, + GanonsTowerSpikePitRoom, + SkullWoodsCompassChestRoom, + SkullWoodsKeyChestTrapRoom, + GanonsTowerMimicsRoom, + TowerOfHeraEntranceRoom, + IcePalaceHiddenChestBombableFloorRoom, + TowerOfHeraTileRoom, + GanonsTowerBlockPuzzleSpikeSkipMapChestRoom, + MiseryMireFinalSwitchRoom, + MiseryMireDarkBombWallSwitchesRoom, + GanonsTowerTorches1Room, + GanonsTowerManySpikesWarpMazeRoom, + GanonsTowerCompassChestInvisibleFloorRoom, + MiseryMireFishRoom, + GanonsTowerWizzrobesRooms, + ThievesTownMovingSpikesKeyPotRoom, + TurtleRockChainChompsRoom, + IcePalaceCloneRoomSwitchRoom, + MiseryMireCompassChestTileRoom, + MiseryMireBigChestRoom, + TurtleRockFinalCrystalSwitchPuzzleRoom, + TurtleRockLaserBridge, + TurtleRockLaserKeyRoom, + TurtleRockEntranceRoom, + CaveBumperCaveTop, + CaveCrystalSwitch5ChestsRoom, +]; + +pub const PULL_SWITCH_ROOMS: [Room; 4] = [ + HyruleCastleSwitchRoom, + SkullWoodsBigChestRoom, + ThievesTownWestAtticRoom, + Dam, +]; + +pub const TONGUE_ROOMS: [Room; 7] = [ + TurtleRockCrystalRollerRoom, + TurtleRockWestExitToBalcony, + SwampPalaceBigKeyBsRoom, + SwampPalaceMapChestWaterFillRoom, + IcePalaceMapChestRoom, + SwampPalaceWaterDrainRoom, + IcePalaceHoleToKholdstareRoom, +]; + +pub const NO_STATUE_ROOMS: [Room; 12] = [ + SwampPalaceSwimmingTreadmill, + SwampPalaceStatueRoom, + SwampPalaceEntranceRoom, + PalaceOfDarknessMapChestFairyRoom, + SwampPalacePushBlockPuzzlePreBigKeyRoom, + SwampPalaceBigChestRoom, + SwampPalaceCompassChestRoom, + SkullWoodsBigKeyRoom, + SwampPalaceWaterDrainRoom, + MiseryMireHourglassRoom, + MiseryMireBigHubRoom, + AgahnimsTowerDarkMaze, +]; + +pub const MOVING_CANNONS_ROOMS: [Room; 2] = [ + GanonsTowerGanonBallZ, + DesertPalaceBigKeyChestRoom, +]; + +pub const CANNON_ROOMS: [Room; 3] = [ + EasternPalaceLobbyCannonballsRoom, + EasternPalaceCannonballRoom, + MimicCave, // ??? +]; + +/// These rooms have no enemies to randomize, or are special bosses that can't be switched out. +pub const DONT_RANDOMIZE_ROOMS: [Room; 8] = [ + Ganon, + HyruleCastleNorthCorridor, + HoulihanRoom, + GanonsTowerAgahnim2, + TurtleRockBigKeyRoom, + AgahnimsTowerAgahnim, + AgahnimsTowerMaidenSacrificeChamber, + IcePalaceBigSpikeTrapsRoom, // Anything else would be too easy? +]; + +pub const NO_SPECIAL_ENEMIES_IN_STANDARD_MODE_ROOMS: [Room; 21] = [ + HyruleCastleNorthCorridor, + HyruleCastleSwitchRoom, + HyruleCastleBombableStockRoom, + HyruleCastleKeyRatRoom, + HyruleCastleSewerTextTriggerRoom, + HyruleCastleSewerKeyChestRoom, + HyruleCastleFirstDarkRoom, + HyruleCastle6RopesRoom, + HyruleCastleWestCorridor, + HyruleCastleThroneRoom, + HyruleCastleEastCorridor, + CastleSecretEntranceUncleRoom, + HyruleCastleWestEntranceRoom, + HyruleCastleMainEntranceRoom, + HyruleCastleEastEntranceRoom, + HyruleCastleSmallCorridorToJailCells, + HyruleCastleBoomerangChestRoom, + HyruleCastleMapChestRoom, + HyruleCastleJailCellRoom, + HyruleCastleNextToChasmRoom, + HyruleCastleBasementChasmRoom, +]; + +pub const BOSS_ROOMS: [Room; 16] = [ + Ganon, + SwampPalaceArrghus, + TowerOfHeraMoldorm, + GanonsTowerAgahnim2, + GanonsTowerIceArmos, + AgahnimsTowerAgahnim, + SkullWoodsMothula, + DesertPalaceLanmolas, + GanonsTowerMoldormRoom, + PalaceOfDarknessHelmasaurKing, + GanonsTowerLanmolasRoom, + MiseryMireVitreous, + TurtleRockTrinexx, + ThievesTownBlindTheThief, + EasternPalaceArmosKnights, + IcePalaceKholdstare, +]; + +pub const DONT_USE_IMMOVABLE_ENEMIES: [Room; 57] = [ + PalaceOfDarknessTurtleRoom, // for single terrorpin in L shaped section + SwampPalaceSwimmingTreadmill, + PalaceOfDarknessDarkMaze, // top placement will probably block maze + IcePalaceBombFloorBariRoom, // TODO: test + SwampPalaceStatueRoom, + TowerOfHeraBigChest, // TODO: test, top left placement before stairs up + SwampPalaceBigChestRoom, // bottom left waterbug + IcePalaceMapChestRoom, // spikes block stuff + HyruleCastle6RopesRoom, // only if two of them stack, but why chance it? + AgahnimsTowerFinalBridgeRoom, // spikes are bad here + SwampPalaceCompassChestRoom, + SkullWoodsGibdoTorchPuzzleRoom, + PalaceOfDarknessWarpsSouthMimicRoom, + IcePalaceBombJumpRoom, // for the zols in the small next room + CastleSecretEntranceUncleRoom, // TODO: test + SkullWoodsBigKeyRoom, + IcePalaceHiddenChestSpikeFloorRoom, // TODO: would this cause problems in OHKO since you can't hookshot across if middle mob is beamos, etc? + ThievesTownEastAtticRoom, // only if both bottom rats + PalaceOfDarknessRupeeRoom, // only if two terrorpins next to each other (but can happen twice) + DesertPalaceMapChestRoom, // only if both antlions in hallway to the south of chest + SwampPalaceWaterDrainRoom, // would need 3 mobs to be impassible to possibly softlock... + GanonsTowerWinderWarpMazeRoom, // very low chance + IcePalaceBigSpikeTrapsRoom, // TODO: what happens to beamos over a pit? + DesertPalaceWestEntranceRoom, // TODO: test + DesertPalaceMainEntranceRoom, // TODO: test + DesertPalaceEastEntranceRoom, // TODO: test + GanonsTowerEastAndWestDownstairsBigChestRoom, // TODO: test, probably safe? + GanonsTowerTileTorchPuzzleRoom, // TODO: test + MiseryMireDarkBombWallSwitchesRoom, // TODO: test + GanonsTowerFinalCollapsingBridgeRoom, // TODO: test, probably safe because of conveyor belts + MiseryMireEntranceRoom, + GanonsTowerManySpikesWarpMazeRoom, // TODO: test, middle spike covers warp, are we randomizing those? + GanonsTowerInvisibleFloorMazeRoom, // TODO: test + GanonsTowerCompassChestInvisibleFloorRoom, // TODO: test + IcePalaceBigChestRoom, // Big spikes will block + MiseryMirePreVitreousRoom, // TODO: test + EasternPalaceMapChestRoom, // TODO: test + IcePalaceIceBridgeRoom, + MiseryMireSpikeKeyChestRoom, // TODO: test lower stalfos blocking door + EasternPalaceDarkAntifairyKeyPotRoom, // TODO: test lower stalfos blocking door + ThievesTownHellway, // TODO: test, but should be ok + ThievesTownConveyorToilet, // TODO: test + TurtleRockSomariaHub, // technically a door is blocked off, but who would ever go there? (Door rando would) + ThievesTownNorthWestEntranceRoom, + IcePalaceHoleToKholdstareRoom, // spikes block stuff + AgahnimsTowerDarkMaze, // TODO: test + MiseryMireWizzrobesRoom, + TurtleRockLaserKeyRoom, + EasternPalacePreArmosKnightsRoom, + ThievesTownSouthEastEntranceRoom, // TODO: test + CaveBackwardsDeathMountainTopFloor, + CaveLostOldManHouse, + Cave0xE7, + CaveSpiralCave, + CaveSpectacleRockExit, // TODO: test, probably can get past + Cave0xFD, + MimicCave, +]; + +pub const DONT_USE_FLYING_ENEMIES: [Room; 2] = [ + MiseryMireWizzrobesRoom, + MimicCave, +];