diff --git a/DoorShuffle.py b/DoorShuffle.py index 29c4fb5c..817cfbb3 100644 --- a/DoorShuffle.py +++ b/DoorShuffle.py @@ -9,6 +9,7 @@ from functools import reduce from BaseClasses import RegionType, Door, DoorType, Direction, Sector, Polarity, CrystalBarrier from Dungeons import hyrule_castle_regions, eastern_regions, desert_regions, hera_regions, tower_regions, pod_regions from Dungeons import dungeon_regions, region_starts, split_region_starts, dungeon_keys, dungeon_bigs, flexible_starts +from Dungeons import drop_entrances from RoomData import DoorKind, PairedDoor from DungeonGenerator import ExplorationState, convert_regions, generate_dungeon @@ -287,6 +288,7 @@ def within_dungeon(world, player): for key, sector_list, entrance_list in dungeon_sectors: origin_list = list(entrance_list) find_enabled_origins(sector_list, enabled_entrances, origin_list) + remove_drop_origins(origin_list) ds = generate_dungeon(sector_list, origin_list, world, player) find_new_entrances(ds, connections, potentials, enabled_entrances) ds.name = key @@ -342,6 +344,10 @@ def find_enabled_origins(sectors, enabled, entrance_list): entrance_list.append(region.name) +def remove_drop_origins(entrance_list): + entrance_list[:] = [x for x in entrance_list if x not in drop_entrances] + + def find_new_entrances(sector, connections, potentials, enabled): for region in sector.regions: if region.name in connections.keys() and connections[region.name] in potentials.keys(): @@ -2007,7 +2013,7 @@ default_door_connections = [ ('Mire Minibridge NE', 'Mire Right Bridge SE'), ('Mire BK Door Room EN', 'Mire Ledgehop WN'), ('Mire BK Door Room N', 'Mire Left Bridge S'), - ('Mire Spikes SW', 'Mire Crystal Dead End NE'), + ('Mire Spikes SW', 'Mire Crystal Dead End NW'), ('Mire Ledgehop NW', 'Mire Bent Bridge SW'), ('Mire Bent Bridge W', 'Mire Over Bridge E'), ('Mire Over Bridge W', 'Mire Fishbone E'), diff --git a/Doors.py b/Doors.py index 2552039d..11f3f3b2 100644 --- a/Doors.py +++ b/Doors.py @@ -431,7 +431,7 @@ def create_doors(world, player): create_door(player, 'Swamp Big Key Ledge WN', Nrml).dir(We, 0x35, Top, High).pos(1), create_door(player, 'Swamp West Shallows ES', Nrml).dir(Ea, 0x34, Bot, High).pos(1), create_door(player, 'Swamp West Shallows Push Blocks', Lgcl), - create_door(player, 'Swamp West Block Path Up Stairs', Sprl).dir(Up, 0x34, 0, HTH).ss(Z, 0x1b, 0x6c, False, True), + create_door(player, 'Swamp West Block Path Up Stairs', Sprl).dir(Up, 0x34, 0, HTH).ss(Z, 0x1b, 0x6c), create_door(player, 'Swamp West Block Path Drop Down', Lgcl), create_door(player, 'Swamp West Ledge Drop Down', Lgcl), create_door(player, 'Swamp West Ledge Hook Path', Lgcl), @@ -440,7 +440,7 @@ def create_doors(world, player): create_door(player, 'Swamp Barrier EN', Nrml).dir(Ea, 0x34, Top, High).pos(0), create_door(player, 'Swamp Barrier - Orange', Lgcl), create_door(player, 'Swamp Barrier Ledge Hook Path', Lgcl), - create_door(player, 'Swamp Attic Down Stairs', Sprl).dir(Dn, 0x54, 0, HTH).ss(Z, 0x12, 0x80, False, True), + create_door(player, 'Swamp Attic Down Stairs', Sprl).dir(Dn, 0x54, 0, HTH).ss(Z, 0x12, 0x80), create_door(player, 'Swamp Attic Left Pit', Hole), create_door(player, 'Swamp Attic Right Pit', Hole), create_door(player, 'Swamp Push Statue S', Nrml).dir(So, 0x26, Mid, High).small_key().pos(0), @@ -721,7 +721,7 @@ def create_doors(world, player): create_door(player, 'Mire Falling Bridge WN', Intr).dir(We, 0xc3, Top, High).pos(1), create_door(player, 'Mire Map Spike Side EN', Intr).dir(Ea, 0xc3, Top, High).no_exit().pos(1), create_door(player, 'Mire Map Spot WN', Nrml).dir(We, 0xc3, Top, High).small_key().pos(0), - create_door(player, 'Mire Crystal Dead End NE', Nrml).dir(No, 0xc3, Right, High).pos(4), + create_door(player, 'Mire Crystal Dead End NW', Nrml).dir(No, 0xc3, Left, High).pos(4), create_door(player, 'Mire Map Spike Side Drop Down', Lgcl), create_door(player, 'Mire Map Spike Side Blue Barrier', Lgcl), create_door(player, 'Mire Map Spot Blue Barrier', Lgcl), diff --git a/Dungeons.py b/Dungeons.py index 3bfdcbd1..4b7771d2 100644 --- a/Dungeons.py +++ b/Dungeons.py @@ -347,6 +347,10 @@ flexible_starts = { 'Skull Woods': ['Skull Left Drop', 'Skull Pinball'] } +drop_entrances = [ + 'Sewers Rat Path', 'Skull Pinball', 'Skull Left Drop', 'Skull Back Drop' # Pot circle is unique +] + dungeon_keys = { 'Hyrule Castle': 'Small Key (Escape)', 'Eastern Palace': 'Small Key (Eastern Palace)', diff --git a/Regions.py b/Regions.py index ddf43b76..d0bc1b66 100644 --- a/Regions.py +++ b/Regions.py @@ -534,7 +534,7 @@ def create_regions(world, player): create_dungeon_region(player, 'Mire Falling Bridge', 'Misery Mire', ['Misery Mire - Big Chest'], ['Mire Falling Bridge WS', 'Mire Falling Bridge W', 'Mire Falling Bridge WN']), create_dungeon_region(player, 'Mire Map Spike Side', 'Misery Mire', None, ['Mire Map Spike Side EN', 'Mire Map Spike Side Drop Down', 'Mire Map Spike Side Blue Barrier']), create_dungeon_region(player, 'Mire Map Spot', 'Misery Mire', ['Misery Mire - Map Chest'], ['Mire Map Spot WN', 'Mire Map Spot Blue Barrier']), - create_dungeon_region(player, 'Mire Crystal Dead End', 'Misery Mire', None, ['Mire Crystal Dead End Left Barrier', 'Mire Crystal Dead End Right Barrier', 'Mire Crystal Dead End NE']), + create_dungeon_region(player, 'Mire Crystal Dead End', 'Misery Mire', None, ['Mire Crystal Dead End Left Barrier', 'Mire Crystal Dead End Right Barrier', 'Mire Crystal Dead End NW']), create_dungeon_region(player, 'Mire Hidden Shooters', 'Misery Mire', None, ['Mire Hidden Shooters SE', 'Mire Hidden Shooters WS', 'Mire Hidden Shooters ES', 'Mire Hidden Shooters NE']), create_dungeon_region(player, 'Mire Cross', 'Misery Mire', None, ['Mire Cross ES', 'Mire Cross SW']), create_dungeon_region(player, 'Mire Minibridge', 'Misery Mire', None, ['Mire Minibridge SE', 'Mire Minibridge NE']),