From 5442f05a7903e58f5bf600cd6552273282f0cfc8 Mon Sep 17 00:00:00 2001 From: compiling <8335770+compiling@users.noreply.github.com> Date: Mon, 2 Nov 2020 11:22:03 +1100 Subject: [PATCH] Update find_accessible_entrances to work with lobby shuffle --- DoorShuffle.py | 12 ++++++------ DungeonGenerator.py | 16 ++++++++++++++++ 2 files changed, 22 insertions(+), 6 deletions(-) diff --git a/DoorShuffle.py b/DoorShuffle.py index 2f664af1..d222a71d 100644 --- a/DoorShuffle.py +++ b/DoorShuffle.py @@ -12,7 +12,7 @@ from Dungeons import dungeon_regions, region_starts, standard_starts, split_regi from Dungeons import dungeon_bigs, dungeon_keys, dungeon_hints from Items import ItemFactory from RoomData import DoorKind, PairedDoor -from DungeonGenerator import ExplorationState, convert_regions, generate_dungeon, pre_validate, determine_required_paths +from DungeonGenerator import ExplorationState, convert_regions, generate_dungeon, pre_validate, determine_required_paths, drop_entrances from DungeonGenerator import create_dungeon_builders, split_dungeon_builder, simple_dungeon_builder, default_dungeon_entrances from DungeonGenerator import dungeon_portals, dungeon_drops from KeyDoorShuffle import analyze_dungeon, validate_vanilla_key_logic, build_key_layout, validate_key_layout @@ -1570,12 +1570,12 @@ def find_inaccessible_regions(world, player): def find_accessible_entrances(world, player, builder): - # todo: lobby shuffle - if world.mode[player] == 'standard' and builder.name == 'Hyrule Castle': - return ['Hyrule Castle Lobby'] - entrances = default_dungeon_entrances[builder.name] + entrances = [region.name for region in (portal.door.entrance.parent_region for portal in world.dungeon_portals[player]) if region.dungeon.name == builder.name] + entrances.extend(drop_entrances[builder.name]) - if world.mode[player] != 'inverted': + if world.mode[player] == 'standard' and builder.name == 'Hyrule Castle': + start_regions = ['Hyrule Castle Courtyard'] + elif world.mode[player] != 'inverted': start_regions = ['Links House', 'Sanctuary'] else: start_regions = ['Inverted Links House', 'Inverted Dark Sanctuary'] diff --git a/DungeonGenerator.py b/DungeonGenerator.py index 187ab41d..47cc9a79 100644 --- a/DungeonGenerator.py +++ b/DungeonGenerator.py @@ -3795,6 +3795,22 @@ default_dungeon_entrances = { 'Ganons Tower': ['GT Lobby'] } +drop_entrances = { + 'Hyrule Castle': ['Sewers Rat Path'], + 'Eastern Palace': [], + 'Desert Palace': [], + 'Tower of Hera': [], + 'Agahnims Tower': [], + 'Palace of Darkness': [], + 'Swamp Palace': [], + 'Skull Woods': ['Skull Pinball', 'Skull Left Drop', 'Skull Pot Circle', 'Skull Back Drop'], + 'Thieves Town': [], + 'Ice Palace': [], + 'Misery Mire': [], + 'Turtle Rock': [], + 'Ganons Tower': [] +} + # todo: calculate these for ER - the multi entrance dungeons anyway dungeon_dead_end_allowance = {