diff --git a/DoorShuffle.py b/DoorShuffle.py index 734dc50d..235ffc95 100644 --- a/DoorShuffle.py +++ b/DoorShuffle.py @@ -1807,7 +1807,7 @@ def find_inaccessible_regions(world, player): if world.mode[player] != 'inverted': start_regions = ['Links House', 'Sanctuary'] else: - start_regions = ['Inverted Links House', 'Inverted Dark Sanctuary'] + start_regions = ['Links House', 'Dark Sanctuary Hint'] regs = convert_regions(start_regions, world, player) all_regions = set([r for r in world.regions if r.player == player and r.type is not RegionType.Dungeon]) visited_regions = set() @@ -1815,7 +1815,7 @@ def find_inaccessible_regions(world, player): while len(queue) > 0: next_region = queue.popleft() visited_regions.add(next_region) - if next_region.name == 'Inverted Dark Sanctuary': # special spawn point in cave + if next_region.name == 'Dark Sanctuary Hint': # special spawn point in cave for ent in next_region.entrances: parent = ent.parent_region if parent and parent.type is not RegionType.Dungeon and parent not in queue and parent not in visited_regions: @@ -1841,7 +1841,7 @@ def find_accessible_entrances(world, player, builder): elif world.mode[player] != 'inverted': start_regions = ['Links House', 'Sanctuary'] else: - start_regions = ['Inverted Links House', 'Inverted Dark Sanctuary'] + start_regions = ['Links House', 'Dark Sanctuary Hint'] regs = convert_regions(start_regions, world, player) visited_regions = set() visited_entrances = [] diff --git a/EntranceShuffle.py b/EntranceShuffle.py index 49548c90..623f2c8a 100644 --- a/EntranceShuffle.py +++ b/EntranceShuffle.py @@ -18,6 +18,8 @@ def link_entrances(world, player): # setup mandatory connections for exitname, regionname in mandatory_connections: connect_simple(world, exitname, regionname, player) + for exitname, regionname in open_mandatory_connections: + connect_simple(world, exitname, regionname, player) connect_custom(world, player) @@ -1092,6 +1094,8 @@ def link_inverted_entrances(world, player): unbias_some_entrances(Dungeon_Exits, Cave_Exits, Old_Man_House, Cave_Three_Exits) # setup mandatory connections + for exitname, regionname in mandatory_connections: + connect_simple(world, exitname, regionname, player) for exitname, regionname in inverted_mandatory_connections: connect_simple(world, exitname, regionname, player) @@ -1129,12 +1133,12 @@ def link_inverted_entrances(world, player): lw_entrances.append('Hyrule Castle Entrance (South)') if not world.shuffle_ganon: - connect_two_way(world, 'Inverted Ganons Tower', 'Inverted Ganons Tower Exit', player) + connect_two_way(world, 'Agahnims Tower', 'Ganons Tower Exit', player) hc_ledge_entrances = ['Hyrule Castle Entrance (West)', 'Hyrule Castle Entrance (East)'] else: - lw_entrances.append('Inverted Ganons Tower') - dungeon_exits.append('Inverted Ganons Tower Exit') - hc_ledge_entrances = ['Hyrule Castle Entrance (West)', 'Hyrule Castle Entrance (East)', 'Inverted Ganons Tower'] + lw_entrances.append('Agahnims Tower') + dungeon_exits.append('Ganons Tower Exit') + hc_ledge_entrances = ['Hyrule Castle Entrance (West)', 'Hyrule Castle Entrance (East)', 'Agahnims Tower'] # shuffle aga door first. If it's on HC ledge, remaining HC ledge door must be must-exit all_entrances_aga = lw_entrances + dw_entrances @@ -1156,8 +1160,8 @@ def link_inverted_entrances(world, player): elif aga_door in dw_entrances: dw_entrances.remove(aga_door) - connect_two_way(world, aga_door, 'Inverted Agahnims Tower Exit', player) - dungeon_exits.remove('Inverted Agahnims Tower Exit') + connect_two_way(world, aga_door, 'Agahnims Tower Exit', player) + dungeon_exits.remove('Agahnims Tower Exit') connect_mandatory_exits(world, lw_entrances, dungeon_exits, lw_dungeon_entrances_must_exit, player) @@ -1198,7 +1202,7 @@ def link_inverted_entrances(world, player): # place links house links_house_doors = [i for i in bomb_shop_doors + blacksmith_doors if i not in Inverted_Dark_Sanctuary_Doors + Isolated_LH_Doors] links_house = random.choice(list(links_house_doors)) - connect_two_way(world, links_house, 'Inverted Links House Exit', player) + connect_two_way(world, links_house, 'Links House Exit', player) if links_house in bomb_shop_doors: bomb_shop_doors.remove(links_house) if links_house in blacksmith_doors: @@ -1211,8 +1215,8 @@ def link_inverted_entrances(world, player): sanc_door = random.choice(sanc_doors) bomb_shop_doors.remove(sanc_door) - connect_entrance(world, sanc_door, 'Inverted Dark Sanctuary', player) - world.get_entrance('Inverted Dark Sanctuary Exit', player).connect(world.get_entrance(sanc_door, player).parent_region) + connect_entrance(world, sanc_door, 'Dark Sanctuary Hint', player) + world.get_entrance('Dark Sanctuary Hint Exit', player).connect(world.get_entrance(sanc_door, player).parent_region) lw_dm_entrances = ['Paradox Cave (Bottom)', 'Paradox Cave (Middle)', 'Paradox Cave (Top)', 'Old Man House (Bottom)', 'Fairy Ascension Cave (Bottom)', 'Fairy Ascension Cave (Top)', 'Spiral Cave (Bottom)', 'Old Man Cave (East)', @@ -1250,7 +1254,7 @@ def link_inverted_entrances(world, player): bomb_shop_doors = [door for door in bomb_shop_doors[:]] random.shuffle(bomb_shop_doors) bomb_shop = bomb_shop_doors.pop() - connect_entrance(world, bomb_shop, 'Inverted Big Bomb Shop', player) + connect_entrance(world, bomb_shop, 'Links House', player) single_doors.extend(bomb_shop_doors) # tavern back door cannot be shuffled yet @@ -1275,7 +1279,7 @@ def link_inverted_entrances(world, player): # place links house links_house_doors = [i for i in lw_entrances + dw_entrances + lw_must_exits if i not in Inverted_Dark_Sanctuary_Doors + Isolated_LH_Doors] links_house = random.choice(list(links_house_doors)) - connect_two_way(world, links_house, 'Inverted Links House Exit', player) + connect_two_way(world, links_house, 'Links House Exit', player) if links_house in lw_entrances: lw_entrances.remove(links_house) elif links_house in dw_entrances: @@ -1287,8 +1291,8 @@ def link_inverted_entrances(world, player): sanc_doors = [door for door in Inverted_Dark_Sanctuary_Doors if door in dw_entrances] sanc_door = random.choice(sanc_doors) dw_entrances.remove(sanc_door) - connect_entrance(world, sanc_door, 'Inverted Dark Sanctuary', player) - world.get_entrance('Inverted Dark Sanctuary Exit', player).connect(world.get_entrance(sanc_door, player).parent_region) + connect_entrance(world, sanc_door, 'Dark Sanctuary Hint', player) + world.get_entrance('Dark Sanctuary Hint Exit', player).connect(world.get_entrance(sanc_door, player).parent_region) # tavern back door cannot be shuffled yet connect_doors(world, ['Tavern North'], ['Tavern'], player) @@ -1323,7 +1327,7 @@ def link_inverted_entrances(world, player): bomb_shop_doors = [door for door in bomb_shop_doors if door in all_entrances] random.shuffle(bomb_shop_doors) bomb_shop = bomb_shop_doors.pop() - connect_entrance(world, bomb_shop, 'Inverted Big Bomb Shop', player) + connect_entrance(world, bomb_shop, 'Links House', player) if bomb_shop in lw_entrances: lw_entrances.remove(bomb_shop) if bomb_shop in dw_entrances: @@ -1349,7 +1353,7 @@ def link_inverted_entrances(world, player): lw_entrances = list(Inverted_LW_Entrances + Inverted_LW_Dungeon_Entrances + Inverted_LW_Single_Cave_Doors) dw_entrances = list(Inverted_DW_Entrances + Inverted_DW_Dungeon_Entrances + Inverted_DW_Single_Cave_Doors + Inverted_Old_Man_Entrances) lw_must_exits = list(Inverted_LW_Dungeon_Entrances_Must_Exit + Inverted_LW_Entrances_Must_Exit) - old_man_entrances = list(Inverted_Old_Man_Entrances + Old_Man_Entrances + ['Inverted Agahnims Tower', 'Tower of Hera']) + old_man_entrances = list(Inverted_Old_Man_Entrances + Old_Man_Entrances + ['Ganons Tower', 'Tower of Hera']) caves = list(Cave_Exits + Dungeon_Exits + Cave_Three_Exits) # don't need to consider three exit caves, have one exit caves to avoid parity issues bomb_shop_doors = list(Inverted_Bomb_Shop_Single_Cave_Doors + Inverted_Bomb_Shop_Multi_Cave_Doors) blacksmith_doors = list(Inverted_Blacksmith_Single_Cave_Doors + Inverted_Blacksmith_Multi_Cave_Doors) @@ -1372,12 +1376,12 @@ def link_inverted_entrances(world, player): if not world.shuffle_ganon: - connect_two_way(world, 'Inverted Ganons Tower', 'Inverted Ganons Tower Exit', player) + connect_two_way(world, 'Agahnims Tower', 'Ganons Tower Exit', player) hc_ledge_entrances = ['Hyrule Castle Entrance (West)', 'Hyrule Castle Entrance (East)'] else: - lw_entrances.append('Inverted Ganons Tower') - caves.append('Inverted Ganons Tower Exit') - hc_ledge_entrances = ['Hyrule Castle Entrance (West)', 'Hyrule Castle Entrance (East)', 'Inverted Ganons Tower'] + lw_entrances.append('Agahnims Tower') + caves.append('Ganons Tower Exit') + hc_ledge_entrances = ['Hyrule Castle Entrance (West)', 'Hyrule Castle Entrance (East)', 'Agahnims Tower'] # shuffle aga door first. if it's on hc ledge, then one other hc ledge door has to be must_exit all_entrances_aga = lw_entrances + dw_entrances @@ -1399,13 +1403,13 @@ def link_inverted_entrances(world, player): elif aga_door in dw_entrances: dw_entrances.remove(aga_door) - connect_two_way(world, aga_door, 'Inverted Agahnims Tower Exit', player) - caves.remove('Inverted Agahnims Tower Exit') + connect_two_way(world, aga_door, 'Agahnims Tower Exit', player) + caves.remove('Agahnims Tower Exit') # place links house links_house_doors = [i for i in lw_entrances + dw_entrances + lw_must_exits if i not in Inverted_Dark_Sanctuary_Doors + Isolated_LH_Doors] links_house = random.choice(list(links_house_doors)) - connect_two_way(world, links_house, 'Inverted Links House Exit', player) + connect_two_way(world, links_house, 'Links House Exit', player) if links_house in lw_entrances: lw_entrances.remove(links_house) if links_house in dw_entrances: @@ -1417,8 +1421,8 @@ def link_inverted_entrances(world, player): sanc_doors = [door for door in Inverted_Dark_Sanctuary_Doors if door in dw_entrances] sanc_door = random.choice(sanc_doors) dw_entrances.remove(sanc_door) - connect_entrance(world, sanc_door, 'Inverted Dark Sanctuary', player) - world.get_entrance('Inverted Dark Sanctuary Exit', player).connect(world.get_entrance(sanc_door, player).parent_region) + connect_entrance(world, sanc_door, 'Dark Sanctuary Hint', player) + world.get_entrance('Dark Sanctuary Hint Exit', player).connect(world.get_entrance(sanc_door, player).parent_region) # place old man house # no dw must exits in inverted, but we randomize whether cave is in light or dark world @@ -1467,7 +1471,7 @@ def link_inverted_entrances(world, player): bomb_shop_doors = [door for door in bomb_shop_doors if door in all_entrances] random.shuffle(bomb_shop_doors) bomb_shop = bomb_shop_doors.pop() - connect_entrance(world, bomb_shop, 'Inverted Big Bomb Shop', player) + connect_entrance(world, bomb_shop, 'Links House', player) if bomb_shop in lw_entrances: lw_entrances.remove(bomb_shop) if bomb_shop in dw_entrances: @@ -1499,7 +1503,7 @@ def link_inverted_entrances(world, player): entrances = list(Inverted_LW_Entrances + Inverted_LW_Dungeon_Entrances + Inverted_LW_Single_Cave_Doors + Inverted_Old_Man_Entrances + Inverted_DW_Entrances + Inverted_DW_Dungeon_Entrances + Inverted_DW_Single_Cave_Doors) must_exits = list(Inverted_LW_Entrances_Must_Exit + Inverted_LW_Dungeon_Entrances_Must_Exit) - old_man_entrances = list(Inverted_Old_Man_Entrances + Old_Man_Entrances + ['Inverted Agahnims Tower', 'Tower of Hera']) + old_man_entrances = list(Inverted_Old_Man_Entrances + Old_Man_Entrances + ['Ganons Tower', 'Tower of Hera']) caves = list(Cave_Exits + Dungeon_Exits + Cave_Three_Exits + Old_Man_House) # don't need to consider three exit caves, have one exit caves to avoid parity issues bomb_shop_doors = list(Inverted_Bomb_Shop_Single_Cave_Doors + Inverted_Bomb_Shop_Multi_Cave_Doors) blacksmith_doors = list(Inverted_Blacksmith_Single_Cave_Doors + Inverted_Blacksmith_Multi_Cave_Doors) @@ -1517,12 +1521,12 @@ def link_inverted_entrances(world, player): entrances.append('Hyrule Castle Entrance (South)') if not world.shuffle_ganon: - connect_two_way(world, 'Inverted Ganons Tower', 'Inverted Ganons Tower Exit', player) + connect_two_way(world, 'Agahnims Tower', 'Ganons Tower Exit', player) hc_ledge_entrances = ['Hyrule Castle Entrance (West)', 'Hyrule Castle Entrance (East)'] else: - entrances.append('Inverted Ganons Tower') - caves.append('Inverted Ganons Tower Exit') - hc_ledge_entrances = ['Hyrule Castle Entrance (West)', 'Hyrule Castle Entrance (East)', 'Inverted Ganons Tower'] + entrances.append('Agahnims Tower') + caves.append('anons Tower Exit') + hc_ledge_entrances = ['Hyrule Castle Entrance (West)', 'Hyrule Castle Entrance (East)', 'Agahnims Tower'] # shuffle aga door. if it's on hc ledge, then one other hc ledge door has to be must_exit aga_door = random.choice(list(entrances)) @@ -1536,14 +1540,14 @@ def link_inverted_entrances(world, player): must_exits.append(hc_ledge_must_exit) entrances.remove(aga_door) - connect_two_way(world, aga_door, 'Inverted Agahnims Tower Exit', player) - caves.remove('Inverted Agahnims Tower Exit') + connect_two_way(world, aga_door, 'Agahnims Tower Exit', player) + caves.remove('Agahnims Tower Exit') # place links house links_house_doors = [i for i in entrances + must_exits if i not in Inverted_Dark_Sanctuary_Doors + Isolated_LH_Doors] links_house = random.choice(list(links_house_doors)) - connect_two_way(world, links_house, 'Inverted Links House Exit', player) + connect_two_way(world, links_house, 'Links House Exit', player) if links_house in entrances: entrances.remove(links_house) elif links_house in must_exits: @@ -1553,8 +1557,8 @@ def link_inverted_entrances(world, player): sanc_doors = [door for door in Inverted_Dark_Sanctuary_Doors if door in entrances] sanc_door = random.choice(sanc_doors) entrances.remove(sanc_door) - connect_entrance(world, sanc_door, 'Inverted Dark Sanctuary', player) - world.get_entrance('Inverted Dark Sanctuary Exit', player).connect(world.get_entrance(sanc_door, player).parent_region) + connect_entrance(world, sanc_door, 'Dark Sanctuary Hint', player) + world.get_entrance('Dark Sanctuary Hint Exit', player).connect(world.get_entrance(sanc_door, player).parent_region) # tavern back door cannot be shuffled yet connect_doors(world, ['Tavern North'], ['Tavern'], player) @@ -1586,7 +1590,7 @@ def link_inverted_entrances(world, player): bomb_shop_doors = [door for door in bomb_shop_doors if door in entrances] random.shuffle(bomb_shop_doors) bomb_shop = bomb_shop_doors.pop() - connect_entrance(world, bomb_shop, 'Inverted Big Bomb Shop', player) + connect_entrance(world, bomb_shop, 'Links House', player) entrances.remove(bomb_shop) # place the old man cave's entrance somewhere @@ -1630,7 +1634,7 @@ def link_inverted_entrances(world, player): random.shuffle(doors) - old_man_entrances = list(Inverted_Old_Man_Entrances + Old_Man_Entrances) + ['Tower of Hera', 'Inverted Agahnims Tower'] + old_man_entrances = list(Inverted_Old_Man_Entrances + Old_Man_Entrances) + ['Tower of Hera', 'Ganons Tower'] caves = Cave_Exits + Dungeon_Exits + Cave_Three_Exits + ['Old Man House Exit (Bottom)', 'Old Man House Exit (Top)', 'Skull Woods First Section Exit', 'Skull Woods Second Section Exit (East)', 'Skull Woods Second Section Exit (West)', 'Kakariko Well Exit', 'Bat Cave Exit', 'North Fairy Cave Exit', 'Lost Woods Hideout Exit', 'Lumberjack Tree Exit', 'Sanctuary Exit'] @@ -1652,15 +1656,15 @@ def link_inverted_entrances(world, player): caves.append('Hyrule Castle Secret Entrance Exit') if not world.shuffle_ganon: - connect_two_way(world, 'Inverted Ganons Tower', 'Inverted Ganons Tower Exit', player) + connect_two_way(world, 'Agahnims Tower', 'Ganons Tower Exit', player) connect_two_way(world, 'Inverted Pyramid Entrance', 'Pyramid Exit', player) connect_entrance(world, 'Inverted Pyramid Hole', 'Pyramid', player) else: - entrances.append('Inverted Ganons Tower') - caves.extend(['Inverted Ganons Tower Exit', 'Pyramid Exit']) + entrances.append('Agahnims Tower') + caves.extend(['Ganons Tower Exit', 'Pyramid Exit']) hole_entrances.append('Inverted Pyramid Hole') hole_targets.append('Pyramid') - doors.extend(['Inverted Ganons Tower', 'Inverted Pyramid Entrance']) + doors.extend(['Agahnims Tower', 'Inverted Pyramid Entrance']) random.shuffle(hole_entrances) random.shuffle(hole_targets) @@ -1676,7 +1680,7 @@ def link_inverted_entrances(world, player): # place links house and dark sanc links_house_doors = [i for i in entrances + entrances_must_exits if i not in Inverted_Dark_Sanctuary_Doors + Isolated_LH_Doors] links_house = random.choice(list(links_house_doors)) - connect_two_way(world, links_house, 'Inverted Links House Exit', player) + connect_two_way(world, links_house, 'Links House Exit', player) if links_house in entrances: entrances.remove(links_house) elif links_house in entrances_must_exits: @@ -1687,8 +1691,8 @@ def link_inverted_entrances(world, player): sanc_door = random.choice(sanc_doors) entrances.remove(sanc_door) doors.remove(sanc_door) - connect_entrance(world, sanc_door, 'Inverted Dark Sanctuary', player) - world.get_entrance('Inverted Dark Sanctuary Exit', player).connect(world.get_entrance(sanc_door, player).parent_region) + connect_entrance(world, sanc_door, 'Dark Sanctuary Hint', player) + world.get_entrance('Dark Sanctuary Hint Exit', player).connect(world.get_entrance(sanc_door, player).parent_region) # now let's deal with mandatory reachable stuff def extract_reachable_exit(cavelist): @@ -1743,7 +1747,7 @@ def link_inverted_entrances(world, player): bomb_shop_doors = [door for door in bomb_shop_doors if door in doors] random.shuffle(bomb_shop_doors) bomb_shop = bomb_shop_doors.pop() - connect_entrance(world, bomb_shop, 'Inverted Big Bomb Shop', player) + connect_entrance(world, bomb_shop, 'Links House', player) doors.remove(bomb_shop) # handle remaining caves @@ -1773,7 +1777,7 @@ def link_inverted_entrances(world, player): world.ganon_at_pyramid[player] = False # check for Ganon's Tower location - if world.get_entrance('Inverted Ganons Tower', player).connected_region.name != 'GT Lobby': + if world.get_entrance('Agahnims Tower', player).connected_region.name != 'GT Lobby': world.ganonstower_vanilla[player] = False @@ -1960,7 +1964,7 @@ def connect_mandatory_exits(world, entrances, caves, must_be_exits, player): for entrance in invalid_connections: if world.get_entrance(entrance, player).connected_region == world.get_region('Agahnims Tower Portal', player): for exit in invalid_connections[entrance]: - invalid_connections[exit] = invalid_connections[exit].union({'Inverted Ganons Tower', 'Hyrule Castle Entrance (West)', 'Hyrule Castle Entrance (East)'}) + invalid_connections[exit] = invalid_connections[exit].union({'Agahnims Tower', 'Hyrule Castle Entrance (West)', 'Hyrule Castle Entrance (East)'}) break used_caves = [] @@ -2081,8 +2085,8 @@ def simple_shuffle_dungeons(world, player): dungeon_entrances.append('Ganons Tower') dungeon_exits.append('Ganons Tower Exit') else: - dungeon_entrances.append('Inverted Agahnims Tower') - dungeon_exits.append('Inverted Agahnims Tower Exit') + dungeon_entrances.append('Ganons Tower') + dungeon_exits.append('Agahnims Tower Exit') # shuffle up single entrance dungeons connect_random(world, dungeon_entrances, dungeon_exits, player, True) @@ -2164,15 +2168,15 @@ def simple_shuffle_dungeons(world, player): connect_two_way(world, 'Hyrule Castle Entrance (South)', 'Hyrule Castle Exit (South)', player) connect_two_way(world, 'Hyrule Castle Entrance (East)', 'Hyrule Castle Exit (East)', player) connect_two_way(world, 'Hyrule Castle Entrance (West)', 'Hyrule Castle Exit (West)', player) - connect_two_way(world, 'Inverted Ganons Tower', 'Inverted Ganons Tower Exit', player) + connect_two_way(world, 'Agahnims Tower', 'Ganons Tower Exit', player) elif hc_target == 'Desert': connect_two_way(world, 'Desert Palace Entrance (South)', 'Hyrule Castle Exit (South)', player) connect_two_way(world, 'Desert Palace Entrance (East)', 'Hyrule Castle Exit (East)', player) connect_two_way(world, 'Desert Palace Entrance (West)', 'Hyrule Castle Exit (West)', player) - connect_two_way(world, 'Desert Palace Entrance (North)', 'Inverted Ganons Tower Exit', player) + connect_two_way(world, 'Desert Palace Entrance (North)', 'Ganons Tower Exit', player) elif hc_target == 'Turtle Rock': connect_two_way(world, 'Turtle Rock', 'Hyrule Castle Exit (South)', player) - connect_two_way(world, 'Turtle Rock Isolated Ledge Entrance', 'Inverted Ganons Tower Exit', player) + connect_two_way(world, 'Turtle Rock Isolated Ledge Entrance', 'Ganons Tower Exit', player) connect_two_way(world, 'Dark Death Mountain Ledge (West)', 'Hyrule Castle Exit (West)', player) connect_two_way(world, 'Dark Death Mountain Ledge (East)', 'Hyrule Castle Exit (East)', player) @@ -2180,7 +2184,7 @@ def simple_shuffle_dungeons(world, player): connect_two_way(world, 'Hyrule Castle Entrance (South)', 'Desert Palace Exit (South)', player) connect_two_way(world, 'Hyrule Castle Entrance (East)', 'Desert Palace Exit (East)', player) connect_two_way(world, 'Hyrule Castle Entrance (West)', 'Desert Palace Exit (West)', player) - connect_two_way(world, 'Inverted Ganons Tower', 'Desert Palace Exit (North)', player) + connect_two_way(world, 'Agahnims Tower', 'Desert Palace Exit (North)', player) elif dp_target == 'Desert': connect_two_way(world, 'Desert Palace Entrance (South)', 'Desert Palace Exit (South)', player) connect_two_way(world, 'Desert Palace Entrance (East)', 'Desert Palace Exit (East)', player) @@ -2196,7 +2200,7 @@ def simple_shuffle_dungeons(world, player): connect_two_way(world, 'Hyrule Castle Entrance (South)', 'Turtle Rock Exit (Front)', player) connect_two_way(world, 'Hyrule Castle Entrance (East)', 'Turtle Rock Ledge Exit (East)', player) connect_two_way(world, 'Hyrule Castle Entrance (West)', 'Turtle Rock Ledge Exit (West)', player) - connect_two_way(world, 'Inverted Ganons Tower', 'Turtle Rock Isolated Ledge Exit', player) + connect_two_way(world, 'Agahnims Tower', 'Turtle Rock Isolated Ledge Exit', player) elif tr_target == 'Desert': connect_two_way(world, 'Desert Palace Entrance (South)', 'Turtle Rock Exit (Front)', player) connect_two_way(world, 'Desert Palace Entrance (North)', 'Turtle Rock Ledge Exit (East)', player) @@ -2621,7 +2625,7 @@ Inverted_DW_Dungeon_Entrances = ['Thieves Town', 'Dark Death Mountain Ledge (West)', 'Dark Death Mountain Ledge (East)', 'Turtle Rock Isolated Ledge Entrance', - 'Inverted Agahnims Tower'] + 'Ganons Tower'] Inverted_LW_Dungeon_Entrances_Must_Exit = ['Desert Palace Entrance (East)'] @@ -2635,7 +2639,7 @@ Inverted_Dungeon_Exits_Base = [['Desert Palace Exit (South)', 'Desert Palace Exi 'Misery Mire Exit', 'Palace of Darkness Exit', 'Swamp Palace Exit', - 'Inverted Agahnims Tower Exit', + 'Agahnims Tower Exit', ['Turtle Rock Ledge Exit (East)', 'Turtle Rock Exit (Front)', 'Turtle Rock Ledge Exit (West)', 'Turtle Rock Isolated Ledge Exit']] @@ -2698,7 +2702,7 @@ Inverted_Bomb_Shop_Multi_Cave_Doors = ['Hyrule Castle Entrance (South)', 'Superbunny Cave (Top)', 'Superbunny Cave (Bottom)', 'Hookshot Cave', - 'Inverted Agahnims Tower', + 'Ganons Tower', 'Desert Palace Entrance (South)', 'Tower of Hera', 'Two Brothers House (West)', @@ -2718,17 +2722,17 @@ Inverted_Bomb_Shop_Multi_Cave_Doors = ['Hyrule Castle Entrance (South)', 'Palace of Darkness', 'Hyrule Castle Entrance (West)', 'Hyrule Castle Entrance (East)', - 'Inverted Ganons Tower', + 'Agahnims Tower', 'Desert Palace Entrance (West)', 'Desert Palace Entrance (North)'] Inverted_Blacksmith_Multi_Cave_Doors = Blacksmith_Multi_Cave_Doors # same as non-inverted -Inverted_LW_Single_Cave_Doors = LW_Single_Cave_Doors + ['Inverted Big Bomb Shop'] +Inverted_LW_Single_Cave_Doors = LW_Single_Cave_Doors + ['Links House'] Inverted_DW_Single_Cave_Doors = ['Bonk Fairy (Dark)', - 'Inverted Dark Sanctuary', - 'Inverted Links House', + 'Dark Sanctuary Hint', + 'Big Bomb Shop', 'Dark Lake Hylia Fairy', 'C-Shaped House', 'Bumper Cave (Top)', @@ -2777,7 +2781,7 @@ Inverted_Bomb_Shop_Single_Cave_Doors = ['Waterfall of Wishing', 'Chest Game', 'Dark World Hammer Peg Cave', 'Red Shield Shop', - 'Inverted Dark Sanctuary', + 'Dark Sanctuary Hint', 'Fortune Teller (Dark)', 'Dark World Shop', 'Dark World Lumberjack Shop', @@ -2791,8 +2795,8 @@ Inverted_Bomb_Shop_Single_Cave_Doors = ['Waterfall of Wishing', 'Bumper Cave (Top)', 'Mimic Cave', 'Dark Lake Hylia Shop', - 'Inverted Links House', - 'Inverted Big Bomb Shop'] + 'Links House', + 'Big Bomb Shop'] Inverted_Blacksmith_Single_Cave_Doors = ['Blinds Hideout', 'Lake Hylia Fairy', @@ -2824,7 +2828,7 @@ Inverted_Blacksmith_Single_Cave_Doors = ['Blinds Hideout', 'Lumberjack House', 'Lake Hylia Fortune Teller', 'Kakariko Gamble Game', - 'Inverted Big Bomb Shop'] + 'Links House'] Inverted_Single_Cave_Targets = ['Blinds Hideout', 'Bonk Fairy (Light)', @@ -2893,7 +2897,7 @@ Inverted_Single_Cave_Targets = ['Blinds Hideout', 'Dam'] # in inverted we put dark sanctuary in west dark world for now -Inverted_Dark_Sanctuary_Doors = ['Inverted Dark Sanctuary', +Inverted_Dark_Sanctuary_Doors = ['Dark Sanctuary Hint', 'Fortune Teller (Dark)', 'Brewery', 'C-Shaped House', @@ -2929,17 +2933,15 @@ Inverted_Must_Exit_Invalid_Connections = defaultdict(set, { 'Death Mountain Return Cave (West)': {'Bumper Cave (Top)'}, 'Desert Palace Entrance (North)': {'Desert Palace Entrance (West)'}, 'Desert Palace Entrance (West)': {'Desert Palace Entrance (North)'}, - 'Inverted Ganons Tower': {'Hyrule Castle Entrance (West)', 'Hyrule Castle Entrance (East)'}, - 'Hyrule Castle Entrance (West)': {'Hyrule Castle Entrance (East)', 'Inverted Ganons Tower'}, - 'Hyrule Castle Entrance (East)': {'Hyrule Castle Entrance (West)', 'Inverted Ganons Tower'}, + 'Agahnims Tower': {'Hyrule Castle Entrance (West)', 'Hyrule Castle Entrance (East)'}, + 'Hyrule Castle Entrance (West)': {'Hyrule Castle Entrance (East)', 'Agahnims Tower'}, + 'Hyrule Castle Entrance (East)': {'Hyrule Castle Entrance (West)', 'Agahnims Tower'}, }) # these are connections that cannot be shuffled and always exist. They link together separate parts of the world we need to divide into regions mandatory_connections = [('Links House S&Q', 'Links House'), - ('Sanctuary S&Q', 'Sanctuary'), ('Old Man S&Q', 'Old Man House'), - ('Other World S&Q', 'Pyramid Area'), ('Flute Away', 'Flute Sky'), @@ -2967,167 +2969,12 @@ mandatory_connections = [('Links House S&Q', 'Links House'), ('Ganon Drop', 'Bottom of Pyramid') ] -inverted_mandatory_connections = [('Links House S&Q', 'Inverted Links House'), - ('Sanctuary S&Q', 'Inverted Dark Sanctuary'), - ('Old Man S&Q', 'Old Man House'), - ('Other World S&Q', 'Hyrule Castle Ledge'), - ('Lake Hylia Central Island Pier', 'Lake Hylia Central Island'), - ('Lake Hylia Island Pier', 'Lake Hylia Island'), - ('Lake Hylia Warp', 'Northeast Light World'), - ('Northeast Light World Warp', 'Light World'), - ('Zoras River', 'Zoras River'), - ('Waterfall of Wishing Cave', 'Waterfall of Wishing Cave'), - ('Northeast Light World Return', 'Northeast Light World'), - ('Kings Grave Outer Rocks', 'Kings Grave Area'), - ('Kings Grave Inner Rocks', 'Light World'), - ('Kakariko Well (top to bottom)', 'Kakariko Well (bottom)'), - ('Master Sword Meadow', 'Master Sword Meadow'), - ('Hobo Bridge', 'Hobo Bridge'), - ('Bat Cave Drop Ledge', 'Bat Cave Drop Ledge'), - ('Bat Cave Door', 'Bat Cave (left)'), - ('Lost Woods Hideout (top to bottom)', 'Lost Woods Hideout (bottom)'), - ('Lumberjack Tree (top to bottom)', 'Lumberjack Tree (bottom)'), - ('Desert Palace Stairs', 'Desert Palace Stairs'), - ('Desert Palace Stairs Drop', 'Light World'), - ('Desert Palace Entrance (North) Rocks', 'Desert Palace Entrance (North) Spot'), - ('Desert Ledge Return Rocks', 'Desert Ledge'), - ('Sewer Drop', 'Sewers Rat Path'), - ('Death Mountain Entrance Rock', 'Death Mountain Entrance'), - ('Death Mountain Entrance Drop', 'Light World'), - ('Spectacle Rock Cave Drop', 'Spectacle Rock Cave (Bottom)'), - ('Spectacle Rock Cave Peak Drop', 'Spectacle Rock Cave (Bottom)'), - ('Death Mountain Return Ledge Drop', 'Light World'), - ('Old Man Cave Dropdown', 'Old Man Cave'), - ('Old Man House Front to Back', 'Old Man House Back'), - ('Old Man House Back to Front', 'Old Man House'), - ('Broken Bridge (West)', 'East Death Mountain (Bottom)'), - ('Broken Bridge (East)', 'Death Mountain'), - ('East Death Mountain Drop', 'East Death Mountain (Bottom)'), - ('Spiral Cave Ledge Access', 'Spiral Cave Ledge'), - ('Spiral Cave Ledge Drop', 'East Death Mountain (Bottom)'), - ('Spiral Cave (top to bottom)', 'Spiral Cave (Bottom)'), - ('East Death Mountain (Top)', 'East Death Mountain (Top)'), - ('Death Mountain (Top)', 'Death Mountain (Top)'), - ('Death Mountain Drop', 'Death Mountain'), - ('Dark Lake Hylia Drop (East)', 'Dark Lake Hylia'), - ('Dark Lake Hylia Drop (South)', 'Dark Lake Hylia'), - ('Dark Lake Hylia Teleporter', 'Dark Lake Hylia'), - ('Dark Lake Hylia Ledge Pier', 'Dark Lake Hylia Ledge'), - ('Dark Lake Hylia Ledge Drop', 'Dark Lake Hylia'), - ('Ice Palace Missing Wall', 'Dark Lake Hylia Central Island'), - ('Dark Lake Hylia Shallows', 'Dark Lake Hylia'), - ('East Dark World Pier', 'East Dark World'), - ('South Dark World Bridge', 'South Dark World'), - ('East Dark World Bridge', 'East Dark World'), - ('Village of Outcasts Heavy Rock', 'West Dark World'), - ('Village of Outcasts Drop', 'South Dark World'), - ('Village of Outcasts Eastern Rocks', 'Hammer Peg Area'), - ('Village of Outcasts Pegs', 'Dark Grassy Lawn'), - ('Peg Area Rocks', 'West Dark World'), - ('Grassy Lawn Pegs', 'West Dark World'), - ('East Dark World River Pier', 'Northeast Dark World'), - ('West Dark World Gap', 'West Dark World'), - ('East Dark World Broken Bridge Pass', 'East Dark World'), - ('Northeast Dark World Broken Bridge Pass', 'Northeast Dark World'), - ('Catfish Exit Rock', 'Northeast Dark World'), - ('Catfish Entrance Rock', 'Catfish'), - ('Bumper Cave Entrance Rock', 'Bumper Cave Entrance'), - ('Bumper Cave Entrance Drop', 'West Dark World'), - ('Bumper Cave Ledge Drop', 'West Dark World'), - ('Skull Woods Forest', 'Skull Woods Forest'), - ('Paradox Cave Push Block Reverse', 'Paradox Cave Chest Area'), - ('Paradox Cave Push Block', 'Paradox Cave Front'), - ('Paradox Cave Bomb Jump', 'Paradox Cave'), - ('Paradox Cave Drop', 'Paradox Cave Chest Area'), - ('Light World Death Mountain Shop', 'Light World Death Mountain Shop'), - ('Fairy Ascension Rocks', 'Fairy Ascension Plateau'), - ('Fairy Ascension Drop', 'East Death Mountain (Bottom)'), - ('Fairy Ascension Ledge Drop', 'Fairy Ascension Plateau'), - ('Fairy Ascension Ledge Access', 'Fairy Ascension Ledge'), - ('Fairy Ascension Cave Climb', 'Fairy Ascension Cave (Top)'), - ('Fairy Ascension Cave Pots', 'Fairy Ascension Cave (Bottom)'), - ('Fairy Ascension Cave Drop', 'Fairy Ascension Cave (Drop)'), - ('Dark Death Mountain Drop (East)', 'Dark Death Mountain (East Bottom)'), - ('Ganon Drop', 'Bottom of Pyramid'), - ('Pyramid Drop', 'East Dark World'), - ('Post Aga Teleporter', 'Light World'), - ('Secret Passage Inner Bushes', 'Light World'), - ('Secret Passage Outer Bushes', 'Hyrule Castle Secret Entrance Area'), - ('Potion Shop Inner Bushes', 'Light World'), - ('Potion Shop Outer Bushes', 'Potion Shop Area'), - ('Potion Shop Inner Rock', 'Northeast Light World'), - ('Potion Shop Outer Rock', 'Potion Shop Area'), - ('Potion Shop River Drop', 'River'), - ('Graveyard Cave Inner Bushes', 'Light World'), - ('Graveyard Cave Outer Bushes', 'Graveyard Cave Area'), - ('Graveyard Cave Mirror Spot', 'West Dark World'), - ('Light World River Drop', 'River'), - ('Light World Pier', 'Light World'), - ('Potion Shop Pier', 'Potion Shop Area'), - ('Hyrule Castle Ledge Courtyard Drop', 'Light World'), - ('Mimic Cave Ledge Access', 'Mimic Cave Ledge'), - ('Mimic Cave Ledge Drop', 'East Death Mountain (Bottom)'), - ('Turtle Rock Tail Drop', 'Turtle Rock (Top)'), - ('Turtle Rock Drop', 'Dark Death Mountain'), - ('Superbunny Cave Climb', 'Superbunny Cave (Top)'), - ('Desert Ledge Drop', 'Light World'), - ('Floating Island Drop', 'Dark Death Mountain'), - ('Dark Lake Hylia Central Island Teleporter', 'Lake Hylia Central Island'), - ('Dark Desert Teleporter', 'Light World'), - ('East Dark World Teleporter', 'Light World'), - ('South Dark World Teleporter', 'Light World'), - ('West Dark World Teleporter', 'Light World'), - ('Dark Death Mountain Teleporter (West)', 'Death Mountain'), - ('Dark Death Mountain Teleporter (East)', 'East Death Mountain (Top)'), - ('Dark Death Mountain Teleporter (East Bottom)', 'East Death Mountain (Bottom)'), - ('Mire Mirror Spot', 'Dark Desert'), - ('Dark Desert Drop', 'Dark Desert'), - ('Desert Palace Stairs Mirror Spot', 'Dark Desert'), - ('Desert Palace North Mirror Spot', 'Dark Desert'), - ('Maze Race Mirror Spot', 'West Dark World'), - ('Lake Hylia Central Island Mirror Spot', 'Dark Lake Hylia Central Island'), - ('Hammer Peg Area Mirror Spot', 'Hammer Peg Area'), - ('Bumper Cave Ledge Mirror Spot', 'Bumper Cave Ledge'), - ('Bumper Cave Entrance Mirror Spot', 'Bumper Cave Entrance'), - ('Death Mountain Mirror Spot', 'Dark Death Mountain'), - ('East Death Mountain Mirror Spot (Top)', 'Dark Death Mountain'), - ('East Death Mountain Mirror Spot (Bottom)', 'Dark Death Mountain (East Bottom)'), - ('Death Mountain (Top) Mirror Spot', 'Dark Death Mountain'), - ('Dark Death Mountain Ledge Mirror Spot (East)', 'Dark Death Mountain Ledge'), - ('Dark Death Mountain Ledge Mirror Spot (West)', 'Dark Death Mountain Ledge'), - ('Floating Island Mirror Spot', 'Death Mountain Floating Island (Dark World)'), - ('Laser Bridge Mirror Spot', 'Dark Death Mountain Isolated Ledge'), - ('East Dark World Mirror Spot', 'East Dark World'), - ('West Dark World Mirror Spot', 'West Dark World'), - ('South Dark World Mirror Spot', 'South Dark World'), - ('Potion Shop Mirror Spot', 'Northeast Dark World'), - ('Catfish Mirror Spot', 'Catfish'), - ('Shopping Mall Mirror Spot', 'Dark Lake Hylia Ledge'), - ('Skull Woods Mirror Spot', 'Skull Woods Forest (West)'), - ('DDM Flute', 'The Sky'), - ('DDM Landing', 'Dark Death Mountain'), - ('NEDW Flute', 'The Sky'), - ('NEDW Landing', 'Northeast Dark World'), - ('WDW Flute', 'The Sky'), - ('WDW Landing', 'West Dark World'), - ('SDW Flute', 'The Sky'), - ('SDW Landing', 'South Dark World'), - ('EDW Flute', 'The Sky'), - ('EDW Landing', 'East Dark World'), - ('DLHL Flute', 'The Sky'), - ('DLHL Landing', 'Dark Lake Hylia Ledge'), - ('DD Flute', 'The Sky'), - ('DD Landing', 'Dark Desert Ledge'), - ('EDDM Flute', 'The Sky'), - ('Dark Grassy Lawn Flute', 'The Sky'), - ('Hammer Peg Area Flute', 'The Sky'), - ('Chris Houlihan Room Exit', 'Pyramid Ledge'), - ('Bush Covered Lawn Inner Bushes', 'Light World'), - ('Bush Covered Lawn Outer Bushes', 'Bush Covered Lawn'), - ('Bush Covered Lawn Mirror Spot', 'Dark Grassy Lawn'), - ('Bomb Hut Inner Bushes', 'Light World'), - ('Bomb Hut Outer Bushes', 'Bomb Hut Area'), - ('Bomb Hut Mirror Spot', 'West Dark World')] +open_mandatory_connections = [('Sanctuary S&Q', 'Sanctuary'), + ('Other World S&Q', 'Pyramid Area') + ] + +inverted_mandatory_connections = [('Sanctuary S&Q', 'Dark Sanctuary Hint'), + ('Other World S&Q', 'Hyrule Castle Ledge')] # non-shuffled entrance links default_connections = [('Waterfall of Wishing', 'Waterfall of Wishing'), @@ -3289,7 +3136,7 @@ inverted_default_connections = [('Waterfall of Wishing', 'Waterfall of Wishing' ('Lumberjack House', 'Lumberjack House'), ('Hyrule Castle Secret Entrance Drop', 'Hyrule Castle Secret Entrance'), ('Hyrule Castle Secret Entrance Stairs', 'Hyrule Castle Secret Entrance'), - ('Hyrule Castle Secret Entrance Exit', 'Light World'), + ('Hyrule Castle Secret Entrance Exit', 'Hyrule Castle Courtyard Northeast'), ('Bonk Fairy (Light)', 'Bonk Fairy (Light)'), ('Lake Hylia Fairy', 'Lake Hylia Healer Fairy'), ('Lake Hylia Fortune Teller', 'Lake Hylia Fortune Teller'), @@ -3304,19 +3151,19 @@ inverted_default_connections = [('Waterfall of Wishing', 'Waterfall of Wishing' ('Capacity Upgrade', 'Capacity Upgrade'), ('Kakariko Well Drop', 'Kakariko Well (top)'), ('Kakariko Well Cave', 'Kakariko Well (bottom)'), - ('Kakariko Well Exit', 'Light World'), + ('Kakariko Well Exit', 'Kakariko Area'), ('Blacksmiths Hut', 'Blacksmiths Hut'), ('Bat Cave Drop', 'Bat Cave (right)'), ('Bat Cave Cave', 'Bat Cave (left)'), - ('Bat Cave Exit', 'Light World'), + ('Bat Cave Exit', 'Blacksmith Area'), ('Sick Kids House', 'Sick Kids House'), ('Elder House (East)', 'Elder House'), ('Elder House (West)', 'Elder House'), - ('Elder House Exit (East)', 'Light World'), - ('Elder House Exit (West)', 'Light World'), + ('Elder House Exit (East)', 'Kakariko Area'), + ('Elder House Exit (West)', 'Kakariko Area'), ('North Fairy Cave Drop', 'North Fairy Cave'), ('North Fairy Cave', 'North Fairy Cave'), - ('North Fairy Cave Exit', 'Light World'), + ('North Fairy Cave Exit', 'River Bend Area'), ('Lost Woods Gamble', 'Lost Woods Gamble'), ('Fortune Teller (Light)', 'Fortune Teller (Light)'), ('Snitch Lady (East)', 'Snitch Lady (East)'), @@ -3327,10 +3174,10 @@ inverted_default_connections = [('Waterfall of Wishing', 'Waterfall of Wishing' ('Kakariko Shop', 'Kakariko Shop'), ('Lost Woods Hideout Drop', 'Lost Woods Hideout (top)'), ('Lost Woods Hideout Stump', 'Lost Woods Hideout (bottom)'), - ('Lost Woods Hideout Exit', 'Light World'), + ('Lost Woods Hideout Exit', 'Lost Woods East Area'), ('Lumberjack Tree Tree', 'Lumberjack Tree (top)'), ('Lumberjack Tree Cave', 'Lumberjack Tree (bottom)'), - ('Lumberjack Tree Exit', 'Light World'), + ('Lumberjack Tree Exit', 'Lumberjack Area'), ('Cave 45', 'Cave 45'), ('Graveyard Cave', 'Graveyard Cave'), ('Checkerboard Cave', 'Checkerboard Cave'), @@ -3346,11 +3193,11 @@ inverted_default_connections = [('Waterfall of Wishing', 'Waterfall of Wishing' ('Potion Shop', 'Potion Shop'), ('Two Brothers House (East)', 'Two Brothers House'), ('Two Brothers House (West)', 'Two Brothers House'), - ('Two Brothers House Exit (East)', 'Light World'), + ('Two Brothers House Exit (East)', 'Kakariko Suburb Area'), ('Two Brothers House Exit (West)', 'Maze Race Ledge'), ('Sanctuary', 'Sanctuary Portal'), ('Sanctuary Grave', 'Sewer Drop'), - ('Sanctuary Exit', 'Light World'), + ('Sanctuary Exit', 'Sanctuary Area'), ('Old Man House (Bottom)', 'Old Man House'), ('Old Man House Exit (Bottom)', 'Death Mountain'), ('Old Man House (Top)', 'Old Man House Back'), @@ -3358,15 +3205,15 @@ inverted_default_connections = [('Waterfall of Wishing', 'Waterfall of Wishing' ('Spectacle Rock Cave Peak', 'Spectacle Rock Cave (Peak)'), ('Spectacle Rock Cave (Bottom)', 'Spectacle Rock Cave (Bottom)'), ('Spectacle Rock Cave', 'Spectacle Rock Cave (Top)'), - ('Spectacle Rock Cave Exit', 'Death Mountain'), - ('Spectacle Rock Cave Exit (Top)', 'Death Mountain'), - ('Spectacle Rock Cave Exit (Peak)', 'Death Mountain'), + ('Spectacle Rock Cave Exit', 'West Death Mountain (Bottom)'), + ('Spectacle Rock Cave Exit (Top)', 'West Death Mountain (Top)'), + ('Spectacle Rock Cave Exit (Peak)', 'West Death Mountain (Top)'), ('Paradox Cave (Bottom)', 'Paradox Cave Front'), ('Paradox Cave (Middle)', 'Paradox Cave'), ('Paradox Cave (Top)', 'Paradox Cave'), ('Paradox Cave Exit (Bottom)', 'East Death Mountain (Bottom)'), ('Paradox Cave Exit (Middle)', 'East Death Mountain (Bottom)'), - ('Paradox Cave Exit (Top)', 'East Death Mountain (Top)'), + ('Paradox Cave Exit (Top)', 'East Death Mountain (Top East)'), ('Hookshot Fairy', 'Hookshot Fairy'), ('Fairy Ascension Cave (Bottom)', 'Fairy Ascension Cave (Bottom)'), ('Fairy Ascension Cave (Top)', 'Fairy Ascension Cave (Top)'), @@ -3404,32 +3251,31 @@ inverted_default_connections = [('Waterfall of Wishing', 'Waterfall of Wishing' ('Superbunny Cave (Top)', 'Superbunny Cave (Top)'), ('Cave Shop (Dark Death Mountain)', 'Cave Shop (Dark Death Mountain)'), ('Superbunny Cave (Bottom)', 'Superbunny Cave (Bottom)'), - ('Superbunny Cave Exit (Bottom)', 'Dark Death Mountain (East Bottom)'), + ('Superbunny Cave Exit (Bottom)', 'East Dark Death Mountain (Bottom)'), ('Hookshot Cave Exit (North)', 'Death Mountain Floating Island (Dark World)'), ('Hookshot Cave Back Entrance', 'Hookshot Cave'), ('Mimic Cave', 'Mimic Cave'), ('Inverted Pyramid Hole', 'Pyramid'), - ('Inverted Links House', 'Inverted Links House'), - ('Inverted Links House Exit', 'South Dark World'), - ('Inverted Big Bomb Shop', 'Inverted Big Bomb Shop'), - ('Inverted Dark Sanctuary', 'Inverted Dark Sanctuary'), - ('Inverted Dark Sanctuary Exit', 'West Dark World'), + ('Links House', 'Links House'), + ('Links House Exit', 'South Dark World'), + ('Dark Sanctuary Hint', 'Dark Sanctuary Hint'), + ('Dark Sanctuary Hint Exit', 'Dark Chapel Area'), ('Old Man Cave (West)', 'Bumper Cave'), ('Old Man Cave (East)', 'Death Mountain Return Cave'), - ('Old Man Cave Exit (West)', 'West Dark World'), - ('Old Man Cave Exit (East)', 'Dark Death Mountain'), + ('Old Man Cave Exit (West)', 'Bumper Cave Entrance'), + ('Old Man Cave Exit (East)', 'West Dark Death Mountain (Bottom)'), ('Dark Death Mountain Fairy', 'Old Man Cave'), ('Bumper Cave (Bottom)', 'Old Man Cave Ledge'), ('Bumper Cave (Top)', 'Dark Death Mountain Healer Fairy'), ('Bumper Cave Exit (Top)', 'Death Mountain Return Ledge'), - ('Bumper Cave Exit (Bottom)', 'Light World'), + ('Bumper Cave Exit (Bottom)', 'Mountain Entry Entrance'), ('Death Mountain Return Cave (West)', 'Bumper Cave'), ('Death Mountain Return Cave (East)', 'Death Mountain Return Cave'), - ('Death Mountain Return Cave Exit (West)', 'Death Mountain'), - ('Death Mountain Return Cave Exit (East)', 'Death Mountain'), + ('Death Mountain Return Cave Exit (West)', 'West Death Mountain (Bottom)'), + ('Death Mountain Return Cave Exit (East)', 'West Death Mountain (Bottom)'), ('Hookshot Cave Exit (South)', 'Dark Death Mountain'), - ('Superbunny Cave Exit (Top)', 'Dark Death Mountain'), - ('Pyramid Exit', 'Light World'), + ('Superbunny Cave Exit (Top)', 'East Dark Death Mountain (Top)'), + ('Pyramid Exit', 'Hyrule Castle Courtyard'), ('Inverted Pyramid Entrance', 'Bottom of Pyramid')] # non shuffled dungeons @@ -3538,10 +3384,10 @@ inverted_default_dungeon_connections = [('Desert Palace Entrance (South)', 'Dese ('Dark Death Mountain Ledge (East)', 'Turtle Rock Chest Portal'), ('Turtle Rock Isolated Ledge Exit', 'Dark Death Mountain Isolated Ledge'), ('Turtle Rock Isolated Ledge Entrance', 'Turtle Rock Eye Bridge Portal'), - ('Inverted Ganons Tower', 'Ganons Tower Portal'), - ('Inverted Ganons Tower Exit', 'Hyrule Castle Ledge'), - ('Inverted Agahnims Tower', 'Agahnims Tower Portal'), - ('Inverted Agahnims Tower Exit', 'Dark Death Mountain'), + ('Ganons Tower', 'Ganons Tower Portal'), + ('Ganons Tower Exit', 'Hyrule Castle Ledge'), + ('Agahnims Tower', 'Agahnims Tower Portal'), + ('Agahnims Tower Exit', 'Dark Death Mountain'), ('Turtle Rock Exit (Front)', 'Dark Death Mountain'), ('Ice Palace Exit', 'Dark Lake Hylia') ] @@ -3567,7 +3413,6 @@ indirect_connections = { # ToDo somehow merge this with creation of the locations door_addresses = {'Links House': (0x00, (0x0104, 0x2c, 0x0506, 0x0a9a, 0x0832, 0x0ae8, 0x08b8, 0x0b07, 0x08bf, 0x06, 0xfe, 0x0816, 0x0000)), - 'Inverted Big Bomb Shop': (0x00, (0x0104, 0x2c, 0x0506, 0x0a9a, 0x0832, 0x0ae8, 0x08b8, 0x0b07, 0x08bf, 0x06, 0xfe, 0x0816, 0x0000)), 'Desert Palace Entrance (South)': (0x08, (0x0084, 0x30, 0x0314, 0x0c56, 0x00a6, 0x0ca8, 0x0128, 0x0cc3, 0x0133, 0x0a, 0xfa, 0x0000, 0x0000)), 'Desert Palace Entrance (West)': (0x0A, (0x0083, 0x30, 0x0280, 0x0c46, 0x0003, 0x0c98, 0x0088, 0x0cb3, 0x0090, 0x0a, 0xfd, 0x0000, 0x0000)), 'Desert Palace Entrance (North)': (0x0B, (0x0063, 0x30, 0x0016, 0x0c00, 0x00a2, 0x0c28, 0x0128, 0x0c6d, 0x012f, 0x00, 0x0e, 0x0000, 0x0000)), @@ -3579,7 +3424,6 @@ door_addresses = {'Links House': (0x00, (0x0104, 0x2c 'Hyrule Castle Entrance (East)': (0x04, (0x0062, 0x1b, 0x004a, 0x0600, 0x0856, 0x0604, 0x08c8, 0x066d, 0x08d3, 0x00, 0xfa, 0x0000, 0x8158)), 'Inverted Pyramid Entrance': (0x35, (0x0010, 0x1b, 0x0418, 0x0679, 0x06b4, 0x06c6, 0x0728, 0x06e6, 0x0733, 0x07, 0xf9, 0x0000, 0x0000)), 'Agahnims Tower': (0x23, (0x00e0, 0x1b, 0x0032, 0x0600, 0x0784, 0x0634, 0x07f8, 0x066d, 0x0803, 0x00, 0x0a, 0x0000, 0x82be)), - 'Inverted Ganons Tower': (0x23, (0x00e0, 0x1b, 0x0032, 0x0600, 0x0784, 0x0634, 0x07f8, 0x066d, 0x0803, 0x00, 0x0a, 0x0000, 0x82be)), 'Thieves Town': (0x33, (0x00db, 0x58, 0x0b2e, 0x075a, 0x0176, 0x07a8, 0x01f8, 0x07c7, 0x0203, 0x06, 0xfa, 0x0000, 0x0000)), 'Skull Woods First Section Door': (0x29, (0x0058, 0x40, 0x0f4c, 0x01f6, 0x0262, 0x0248, 0x02e8, 0x0263, 0x02ef, 0x0a, 0xfe, 0x0000, 0x0000)), 'Skull Woods Second Section Door (East)': (0x28, (0x0057, 0x40, 0x0eb8, 0x01e6, 0x01c2, 0x0238, 0x0248, 0x0253, 0x024f, 0x0a, 0xfe, 0x0000, 0x0000)), @@ -3627,7 +3471,6 @@ door_addresses = {'Links House': (0x00, (0x0104, 0x2c 'Hookshot Cave': (0x39, (0x003c, 0x45, 0x04da, 0x00a3, 0x0cd6, 0x0107, 0x0d48, 0x0112, 0x0d53, 0x0b, 0xfa, 0x0000, 0x0000)), 'Hookshot Cave Back Entrance': (0x3A, (0x002c, 0x45, 0x004c, 0x0000, 0x0c56, 0x0038, 0x0cc8, 0x006f, 0x0cd3, 0x00, 0x0a, 0x0000, 0x0000)), 'Ganons Tower': (0x36, (0x000c, 0x43, 0x0052, 0x0000, 0x0884, 0x0028, 0x08f8, 0x006f, 0x0903, 0x00, 0xfc, 0x0000, 0x0000)), - 'Inverted Agahnims Tower': (0x36, (0x000c, 0x43, 0x0052, 0x0000, 0x0884, 0x0028, 0x08f8, 0x006f, 0x0903, 0x00, 0xfc, 0x0000, 0x0000)), 'Pyramid Entrance': (0x35, (0x0010, 0x5b, 0x0b0e, 0x075a, 0x0674, 0x07a8, 0x06e8, 0x07c7, 0x06f3, 0x06, 0xfa, 0x0000, 0x0000)), 'Skull Woods First Section Hole (West)': ([0xDB84D, 0xDB84E], None), 'Skull Woods First Section Hole (East)': ([0xDB84F, 0xDB850], None), @@ -3694,7 +3537,6 @@ door_addresses = {'Links House': (0x00, (0x0104, 0x2c 'Dark World Hammer Peg Cave': (0x7E, (0x0127, 0x62, 0x0894, 0x091e, 0x0492, 0x09a6, 0x0508, 0x098b, 0x050f, 0x00, 0x00, 0x0000, 0x0000)), 'Red Shield Shop': (0x74, (0x0110, 0x5a, 0x079a, 0x06e8, 0x04d6, 0x0738, 0x0548, 0x0755, 0x0553, 0x08, 0xf8, 0x0AA8, 0x0000)), 'Dark Sanctuary Hint': (0x59, (0x0112, 0x53, 0x001e, 0x0400, 0x06e2, 0x0446, 0x0758, 0x046d, 0x075f, 0x00, 0x00, 0x0000, 0x0000)), - 'Inverted Dark Sanctuary': (0x59, (0x0112, 0x53, 0x001e, 0x0400, 0x06e2, 0x0446, 0x0758, 0x046d, 0x075f, 0x00, 0x00, 0x0000, 0x0000)), 'Fortune Teller (Dark)': (0x65, (0x0122, 0x51, 0x0610, 0x04b4, 0x027e, 0x0507, 0x02f8, 0x0523, 0x0303, 0x0a, 0xf6, 0x091E, 0x0000)), 'Dark World Shop': (0x5F, (0x010f, 0x58, 0x1058, 0x0814, 0x02be, 0x0868, 0x0338, 0x0883, 0x0343, 0x0a, 0xf6, 0x0000, 0x0000)), 'Dark World Lumberjack Shop': (0x56, (0x010f, 0x42, 0x041c, 0x0074, 0x04e2, 0x00c7, 0x0558, 0x00e3, 0x055f, 0x0a, 0xf6, 0x0000, 0x0000)), @@ -3708,7 +3550,6 @@ door_addresses = {'Links House': (0x00, (0x0104, 0x2c 'Dark Death Mountain Fairy': (0x6F, (0x0115, 0x43, 0x1400, 0x0294, 0x0600, 0x02e8, 0x0678, 0x0303, 0x0685, 0x0a, 0xf6, 0x0000, 0x0000)), 'Mimic Cave': (0x4E, (0x010c, 0x05, 0x07e0, 0x0103, 0x0d00, 0x0156, 0x0d78, 0x0172, 0x0d7d, 0x0b, 0xf5, 0x0000, 0x0000)), 'Big Bomb Shop': (0x52, (0x011c, 0x6c, 0x0506, 0x0a9a, 0x0832, 0x0ae7, 0x08b8, 0x0b07, 0x08bf, 0x06, 0xfa, 0x0816, 0x0000)), - 'Inverted Links House': (0x52, (0x011c, 0x6c, 0x0506, 0x0a9a, 0x0832, 0x0ae7, 0x08b8, 0x0b07, 0x08bf, 0x06, 0xfa, 0x0816, 0x0000)), 'Dark Lake Hylia Shop': (0x73, (0x010f, 0x75, 0x0380, 0x0c6a, 0x0a00, 0x0cb8, 0x0a58, 0x0cd7, 0x0a85, 0x06, 0xfa, 0x0000, 0x0000)), 'Lumberjack House': (0x75, (0x011f, 0x02, 0x049c, 0x0088, 0x04e6, 0x00d8, 0x0558, 0x00f7, 0x0563, 0x08, 0xf8, 0x07AA, 0x0000)), 'Lake Hylia Fortune Teller': (0x72, (0x0122, 0x35, 0x0380, 0x0c6a, 0x0a00, 0x0cb8, 0x0a58, 0x0cd7, 0x0a85, 0x06, 0xfa, 0x0000, 0x0000)), @@ -3719,7 +3560,6 @@ door_addresses = {'Links House': (0x00, (0x0104, 0x2c # value = entrance # # | (entrance #, exit #) exit_ids = {'Links House Exit': (0x01, 0x00), - 'Inverted Links House Exit': (0x01, 0x00), 'Chris Houlihan Room Exit': (None, 0x3D), 'Desert Palace Exit (South)': (0x09, 0x0A), 'Desert Palace Exit (West)': (0x0B, 0x0C), @@ -3731,7 +3571,6 @@ exit_ids = {'Links House Exit': (0x01, 0x00), 'Hyrule Castle Exit (West)': (0x03, 0x02), 'Hyrule Castle Exit (East)': (0x05, 0x04), 'Agahnims Tower Exit': (0x24, 0x25), - 'Inverted Agahnims Tower Exit': (0x24, 0x25), 'Thieves Town Exit': (0x34, 0x35), 'Skull Woods First Section Exit': (0x2A, 0x2B), 'Skull Woods Second Section Exit (East)': (0x29, 0x2A), @@ -3779,7 +3618,6 @@ exit_ids = {'Links House Exit': (0x01, 0x00), 'Hookshot Cave Exit (South)': (0x3A, 0x3B), 'Hookshot Cave Exit (North)': (0x3B, 0x3C), 'Ganons Tower Exit': (0x37, 0x38), - 'Inverted Ganons Tower Exit': (0x37, 0x38), 'Pyramid Exit': (0x36, 0x37), 'Waterfall of Wishing': 0x5C, 'Dam': 0x4E, @@ -3831,7 +3669,6 @@ exit_ids = {'Links House Exit': (0x01, 0x00), 'East Dark World Hint': 0x69, 'Palace of Darkness Hint': 0x68, 'Big Bomb Shop': 0x53, - 'Inverted Big Bomb Shop': 0x53, 'Village of Outcasts Shop': 0x60, 'Dark Lake Hylia Shop': 0x60, 'Dark World Lumberjack Shop': 0x60, @@ -3845,7 +3682,6 @@ exit_ids = {'Links House Exit': (0x01, 0x00), 'Dark World Hammer Peg Cave': 0x83, 'Red Shield Shop': 0x57, 'Dark Sanctuary Hint': 0x5A, - 'Inverted Dark Sanctuary': 0x5A, 'Fortune Teller (Dark)': 0x66, 'Archery Game': 0x59, 'Mire Shed': 0x5F, diff --git a/OverworldGlitchRules.py b/OverworldGlitchRules.py index 919af7ea..ea6b90ce 100644 --- a/OverworldGlitchRules.py +++ b/OverworldGlitchRules.py @@ -119,7 +119,7 @@ def get_non_mandatory_exits(inverted): if inverted: yield 'Desert Palace Entrance (North)' yield 'Desert Palace Entrance (West)' - yield 'Inverted Ganons Tower' + yield 'Agahnims Tower' yield 'Hyrule Castle Entrance (West)' yield 'Hyrule Castle Entrance (East)' else: diff --git a/OverworldShuffle.py b/OverworldShuffle.py index ceace042..fc069e6b 100644 --- a/OverworldShuffle.py +++ b/OverworldShuffle.py @@ -310,179 +310,191 @@ mandatory_connections = [ # Whirlpool Connections ('Bomber Corner Whirlpool', 'Qirn Jump Water'), # Intra-tile OW Connections - ('Lost Woods Bush (West)', 'Lost Woods East Area'), - ('Lost Woods Bush (East)', 'Lost Woods West Area'), + ('Lost Woods Bush (West)', 'Lost Woods East Area'), #pearl + ('Lost Woods Bush (East)', 'Lost Woods West Area'), #pearl ('West Death Mountain Drop', 'West Death Mountain (Bottom)'), ('Spectacle Rock Drop', 'West Death Mountain (Top)'), - ('Spectacle Rock Leave', 'West Death Mountain (Top)'), - ('Spectacle Rock Approach', 'Spectacle Rock Ledge'), - ('DM Hammer Bridge (West)', 'East Death Mountain (Top West)'), - ('DM Hammer Bridge (East)', 'East Death Mountain (Top East)'), - ('Floating Island Bridge (West)', 'East Death Mountain (Top East)'), - ('Floating Island Bridge (East)', 'Death Mountain Floating Island'), + ('Spectacle Rock Leave', 'West Death Mountain (Top)'), #inverted only + ('Spectacle Rock Approach', 'Spectacle Rock Ledge'), #inverted only + ('DM Hammer Bridge (West)', 'East Death Mountain (Top West)'), #hammer + ('DM Hammer Bridge (East)', 'East Death Mountain (Top East)'), #hammer + ('Floating Island Bridge (West)', 'East Death Mountain (Top East)'), #inverted only + ('Floating Island Bridge (East)', 'Death Mountain Floating Island'), #inverted only ('East Death Mountain Spiral Ledge Drop', 'Spiral Cave Ledge'), - ('East Death Mountain Fairy Ledge Drop', 'Fairy Ascension Ledge'), - ('East Death Mountain Mimic Ledge Drop', 'Mimic Cave Ledge'), ('Spiral Ledge Drop', 'East Death Mountain (Bottom)'), - ('Mimic Ledge Drop', 'East Death Mountain (Bottom)'), + ('East Death Mountain Fairy Ledge Drop', 'Fairy Ascension Ledge'), ('Fairy Ascension Ledge Drop', 'Fairy Ascension Plateau'), + ('East Death Mountain Mimic Ledge Drop', 'Mimic Cave Ledge'), #inverted only + ('Mimic Ledge Drop', 'East Death Mountain (Bottom)'), #inverted only ('Fairy Ascension Plateau Ledge Drop', 'East Death Mountain (Bottom)'), - ('Fairy Ascension Rocks (North)', 'East Death Mountain (Bottom)'), - ('Fairy Ascension Rocks (South)', 'Fairy Ascension Plateau'), - ('DM Broken Bridge (West)', 'East Death Mountain (Bottom)'), - ('DM Broken Bridge (East)', 'East Death Mountain (Bottom Left)'), - ('TR Pegs Ledge Entry', 'Death Mountain TR Pegs Ledge'), + ('Fairy Ascension Rocks (North)', 'East Death Mountain (Bottom)'), #mitts + ('Fairy Ascension Rocks (South)', 'Fairy Ascension Plateau'), #mitts + ('DM Broken Bridge (West)', 'East Death Mountain (Bottom)'), #hookshot + ('DM Broken Bridge (East)', 'East Death Mountain (Bottom Left)'), #hookshot + ('TR Pegs Ledge Entry', 'Death Mountain TR Pegs Ledge'), #mitts + ('TR Pegs Ledge Leave', 'Death Mountain TR Pegs'), #mitts ('TR Pegs Ledge Drop', 'Death Mountain TR Pegs'), - ('Death Mountain Entrance Rock', 'Death Mountain Entrance'), + ('Death Mountain Entrance Rock', 'Death Mountain Entrance'), #glove ('Death Mountain Entrance Drop', 'Mountain Entry Area'), ('Death Mountain Return Drop', 'Mountain Entry Area'), ('Zora Waterfall Landing', 'Zora Waterfall Area'), - ('Zora Waterfall Water Drop', 'Zora Waterfall Water'), - ('Zora Waterfall Water Entry', 'Zora Waterfall Water'), - ('Waterfall of Wishing Cave Entry', 'Waterfall of Wishing Cave'), + ('Zora Waterfall Water Drop', 'Zora Waterfall Water'), #flippers + ('Zora Waterfall Water Entry', 'Zora Waterfall Water'), #flippers + ('Waterfall of Wishing Cave Entry', 'Waterfall of Wishing Cave'), #flippers ('Bonk Rock Ledge Drop', 'Sanctuary Area'), ('Graveyard Ledge Drop', 'Graveyard Area'), - ('Graveyard Ladder (Top)', 'Graveyard Area'), - ('Graveyard Ladder (Bottom)', 'Graveyard Ledge'), - ('Kings Grave Outer Rocks', 'Kings Grave Area'), - ('Kings Grave Inner Rocks', 'Graveyard Area'), - ('River Bend Water Drop', 'River Bend Water'), - ('River Bend East Water Drop', 'River Bend Water'), + ('Graveyard Ladder (Top)', 'Graveyard Area'), #inverted only + ('Graveyard Ladder (Bottom)', 'Graveyard Ledge'), #inverted only + ('Kings Grave Outer Rocks', 'Kings Grave Area'), #mitts + ('Kings Grave Inner Rocks', 'Graveyard Area'), #mitts + ('River Bend Water Drop', 'River Bend Water'), #flippers + ('River Bend East Water Drop', 'River Bend Water'), #flippers ('River Bend West Pier', 'River Bend Area'), ('River Bend East Pier', 'River Bend East Bank'), - ('Potion Shop Water Drop', 'Potion Shop Water'), - ('Potion Shop Northeast Water Drop', 'Potion Shop Water'), - ('Potion Shop Rock (South)', 'Potion Shop Northeast'), - ('Potion Shop Rock (North)', 'Potion Shop Area'), - ('Zora Approach Water Drop', 'Zora Approach Water'), - ('Kakariko Southwest Bush (North)', 'Kakariko Southwest'), - ('Kakariko Southwest Bush (South)', 'Kakariko Area'), - ('Kakariko Yard Bush (South)', 'Kakariko Grass Yard'), - ('Kakariko Yard Bush (North)', 'Kakariko Area'), - ('Hyrule Castle Courtyard Bush (North)', 'Hyrule Castle Courtyard'), - ('Hyrule Castle Courtyard Bush (South)', 'Hyrule Castle Courtyard Northeast'), - ('Hyrule Castle Main Gate (South)', 'Hyrule Castle Courtyard'), - ('Hyrule Castle Main Gate (North)', 'Hyrule Castle Area'), + ('Potion Shop Water Drop', 'Potion Shop Water'), #flippers + ('Potion Shop Northeast Water Drop', 'Potion Shop Water'), #flippers + ('Potion Shop Rock (South)', 'Potion Shop Northeast'), #glove + ('Potion Shop Rock (North)', 'Potion Shop Area'), #glove + ('Zora Approach Water Drop', 'Zora Approach Water'), #flippers + ('Zora Approach Rocks (West)', 'Zora Approach Ledge'), #mitts/boots + ('Zora Approach Rocks (East)', 'Zora Approach Area'), #mitts/boots + ('Zora Approach Bottom Ledge Drop', 'Zora Approach Ledge'), + ('Zora Approach Ledge Drop', 'Zora Approach Area'), + ('Kakariko Southwest Bush (North)', 'Kakariko Southwest'), #pearl + ('Kakariko Southwest Bush (South)', 'Kakariko Area'), #pearl + ('Kakariko Yard Bush (South)', 'Kakariko Grass Yard'), #pearl + ('Kakariko Yard Bush (North)', 'Kakariko Area'), #pearl + ('Hyrule Castle Courtyard Bush (North)', 'Hyrule Castle Courtyard'), #pearl + ('Hyrule Castle Courtyard Bush (South)', 'Hyrule Castle Courtyard Northeast'), #pearl + ('Hyrule Castle Main Gate (South)', 'Hyrule Castle Courtyard'), #aga+mirror + ('Hyrule Castle Main Gate (North)', 'Hyrule Castle Area'), #aga+mirror ('Hyrule Castle Ledge Drop', 'Hyrule Castle Area'), ('Hyrule Castle Ledge Courtyard Drop', 'Hyrule Castle Courtyard'), - ('Hyrule Castle Inner East Rock', 'Hyrule Castle East Entry'), - ('Hyrule Castle Outer East Rock', 'Hyrule Castle Area'), - ('Wooden Bridge Bush (South)', 'Wooden Bridge Northeast'), - ('Wooden Bridge Bush (North)', 'Wooden Bridge Area'), - ('Wooden Bridge Water Drop', 'Wooden Bridge Water'), - ('Wooden Bridge Northeast Water Drop', 'Wooden Bridge Water'), - ('Bat Cave Ledge Peg', 'Bat Cave Ledge'), - ('Maze Race Game', 'Maze Race Prize'), + ('Hyrule Castle Inner East Rock', 'Hyrule Castle East Entry'), #glove + ('Hyrule Castle Outer East Rock', 'Hyrule Castle Area'), #glove + ('Wooden Bridge Bush (South)', 'Wooden Bridge Northeast'), #pearl + ('Wooden Bridge Bush (North)', 'Wooden Bridge Area'), #pearl + ('Wooden Bridge Water Drop', 'Wooden Bridge Water'), #flippers + ('Wooden Bridge Northeast Water Drop', 'Wooden Bridge Water'), #flippers + ('Bat Cave Ledge Peg', 'Bat Cave Ledge'), #hammer + ('Maze Race Game', 'Maze Race Prize'), #pearl ('Maze Race Ledge Drop', 'Maze Race Area'), - ('Desert Palace Statue Move', 'Desert Palace Stairs'), + ('Desert Palace Statue Move', 'Desert Palace Stairs'), #book ('Desert Ledge Drop', 'Desert Area'), - ('Desert Ledge Outer Rocks', 'Desert Palace Entrance (North) Spot'), - ('Desert Ledge Inner Rocks', 'Desert Ledge'), + ('Desert Ledge Outer Rocks', 'Desert Palace Entrance (North) Spot'), #glove + ('Desert Ledge Inner Rocks', 'Desert Ledge'), #glove ('Checkerboard Ledge Drop', 'Desert Area'), - ('Checkerboard Ledge Approach', 'Desert Checkerboard Ledge'), - ('Checkerboard Ledge Leave', 'Desert Area'), + ('Checkerboard Ledge Approach', 'Desert Checkerboard Ledge'), #inverted only + ('Checkerboard Ledge Leave', 'Desert Area'), #inverted only ('Desert Mouth Drop', 'Desert Area'), ('Desert Teleporter Drop', 'Desert Area'), ('Bombos Tablet Drop', 'Desert Area'), - ('Flute Boy Bush (North)', 'Flute Boy Approach Area'), - ('Flute Boy Bush (South)', 'Flute Boy Bush Entry'), + ('Flute Boy Bush (North)', 'Flute Boy Approach Area'), #pearl + ('Flute Boy Bush (South)', 'Flute Boy Bush Entry'), #pearl ('Cave 45 Ledge Drop', 'Flute Boy Approach Area'), - ('Cave 45 Inverted Leave', 'Flute Boy Approach Area'), - ('Cave 45 Inverted Approach', 'Cave 45 Ledge'), - ('C Whirlpool Water Entry', 'C Whirlpool Water'), + ('Cave 45 Inverted Leave', 'Flute Boy Approach Area'), #inverted only + ('Cave 45 Inverted Approach', 'Cave 45 Ledge'), #inverted only + ('C Whirlpool Water Entry', 'C Whirlpool Water'), #flippers ('C Whirlpool Landing', 'C Whirlpool Area'), - ('C Whirlpool Rock (Bottom)', 'C Whirlpool Outer Area'), - ('C Whirlpool Rock (Top)', 'C Whirlpool Area'), - ('Statues Water Entry', 'Statues Water'), + ('C Whirlpool Rock (Bottom)', 'C Whirlpool Outer Area'), #glove + ('C Whirlpool Rock (Top)', 'C Whirlpool Area'), #glove + ('Statues Water Entry', 'Statues Water'), #flippers ('Statues Landing', 'Statues Area'), - ('Lake Hylia Water Drop', 'Lake Hylia Water'), - ('Lake Hylia South Water Drop', 'Lake Hylia Water'), - ('Lake Hylia Northeast Water Drop', 'Lake Hylia Water'), - ('Lake Hylia Central Water Drop', 'Lake Hylia Water'), - ('Lake Hylia Island Water Drop', 'Lake Hylia Water'), + ('Lake Hylia Water Drop', 'Lake Hylia Water'), #flippers + ('Lake Hylia South Water Drop', 'Lake Hylia Water'), #flippers + ('Lake Hylia Northeast Water Drop', 'Lake Hylia Water'), #flippers + ('Lake Hylia Central Water Drop', 'Lake Hylia Water'), #flippers + ('Lake Hylia Island Water Drop', 'Lake Hylia Water'), #flippers ('Lake Hylia Central Island Pier', 'Lake Hylia Central Island'), - ('Lake Hylia Island Pier', 'Lake Hylia Island'), + ('Lake Hylia Island Pier', 'Lake Hylia Island'), #inverted only ('Lake Hylia West Pier', 'Lake Hylia Area'), ('Lake Hylia East Pier', 'Lake Hylia Northeast Bank'), ('Desert Pass Ledge Drop', 'Desert Pass Area'), - ('Desert Pass Ladder (North)', 'Desert Pass Area'), - ('Desert Pass Ladder (South)', 'Desert Pass Ledge'), - ('Desert Pass Rocks (North)', 'Desert Pass Southeast'), - ('Desert Pass Rocks (South)', 'Desert Pass Area'), - ('Octoballoon Water Drop', 'Octoballoon Water'), - ('Octoballoon Waterfall Water Drop', 'Octoballoon Water'), + ('Desert Pass Ladder (North)', 'Desert Pass Area'), #inverted only + ('Desert Pass Ladder (South)', 'Desert Pass Ledge'), #inverted only + ('Desert Pass Rocks (North)', 'Desert Pass Southeast'), #glove + ('Desert Pass Rocks (South)', 'Desert Pass Area'), #glove + ('Octoballoon Water Drop', 'Octoballoon Water'), #flippers + ('Octoballoon Waterfall Water Drop', 'Octoballoon Water'), #flippers ('Octoballoon Pier', 'Octoballoon Area'), - ('Skull Woods Bush Rock (West)', 'Skull Woods Forest'), - ('Skull Woods Bush Rock (East)', 'Skull Woods Portal Entry'), - ('Skull Woods Forgotten Bush (West)', 'Skull Woods Forgotten Path (Northeast)'), - ('Skull Woods Forgotten Bush (East)', 'Skull Woods Forgotten Path (Southwest)'), + ('Skull Woods Bush Rock (West)', 'Skull Woods Forest'), #glove + ('Skull Woods Bush Rock (East)', 'Skull Woods Portal Entry'), #glove + ('Skull Woods Forgotten Bush (West)', 'Skull Woods Forgotten Path (Northeast)'), #pearl + ('Skull Woods Forgotten Bush (East)', 'Skull Woods Forgotten Path (Southwest)'), #pearl ('Dark Death Mountain Drop (West)', 'West Dark Death Mountain (Bottom)'), - ('Dark Death Mountain Ladder (North)', 'West Dark Death Mountain (Bottom)'), - ('Dark Death Mountain Ladder (South)', 'West Dark Death Mountain (Top)'), + ('Dark Death Mountain Ladder (North)', 'West Dark Death Mountain (Bottom)'), #inverted only + ('Dark Death Mountain Ladder (South)', 'West Dark Death Mountain (Top)'), #inverted only ('GT Entry Approach', 'GT Approach'), ('GT Entry Leave', 'West Dark Death Mountain (Top)'), ('Floating Island Drop', 'East Dark Death Mountain (Top)'), ('Dark Death Mountain Drop (East)', 'East Dark Death Mountain (Bottom)'), ('Turtle Rock Ledge Drop', 'Turtle Rock Area'), - ('Turtle Rock Tail Ledge Drop', 'Turtle Rock Ledge'), - ('Bumper Cave Entrance Rock', 'Bumper Cave Entrance'), + ('Turtle Rock Tail Ledge Drop', 'Turtle Rock Ledge'), #inverted only + ('Bumper Cave Entrance Rock', 'Bumper Cave Entrance'), #glove ('Bumper Cave Ledge Drop', 'Bumper Cave Area'), ('Bumper Cave Entrance Drop', 'Bumper Cave Area'), - ('Skull Woods Pass Bush Row (West)', 'Skull Woods Pass East Top Area'), - ('Skull Woods Pass Bush Row (East)', 'Skull Woods Pass West Area'), - ('Skull Woods Pass Rock (Top)', 'Skull Woods Pass East Bottom Area'), - ('Skull Woods Pass Rock (Bottom)', 'Skull Woods Pass East Top Area'), - ('Qirn Jump Water Drop', 'Qirn Jump Water'), - ('Qirn Jump East Water Drop', 'Qirn Jump Water'), + ('Skull Woods Pass Bush Row (West)', 'Skull Woods Pass East Top Area'), #pearl + ('Skull Woods Pass Bush Row (East)', 'Skull Woods Pass West Area'), #pearl + ('Skull Woods Pass Rock (Top)', 'Skull Woods Pass East Bottom Area'), #mitts + ('Skull Woods Pass Rock (Bottom)', 'Skull Woods Pass East Top Area'), #mitts + ('Qirn Jump Water Drop', 'Qirn Jump Water'), #flippers + ('Qirn Jump East Water Drop', 'Qirn Jump Water'), #flippers ('Qirn Jump Pier', 'Qirn Jump East Bank'), - ('Dark Witch Water Drop', 'Dark Witch Water'), - ('Dark Witch Northeast Water Drop', 'Dark Witch Water'), - ('Dark Witch Rock (North)', 'Dark Witch Area'), - ('Dark Witch Rock (South)', 'Dark Witch Northeast'), - ('Catfish Approach Water Drop', 'Catfish Approach Water'), - ('Village of Outcasts Pegs', 'Dark Grassy Lawn'), - ('Grassy Lawn Pegs', 'Village of Outcasts Area'), + ('Dark Witch Water Drop', 'Dark Witch Water'), #flippers + ('Dark Witch Northeast Water Drop', 'Dark Witch Water'), #flippers + ('Dark Witch Rock (North)', 'Dark Witch Area'), #glove + ('Dark Witch Rock (South)', 'Dark Witch Northeast'), #glove + ('Catfish Approach Rocks (West)', 'Catfish Approach Ledge'), #mitts/boots + ('Catfish Approach Rocks (East)', 'Catfish Approach Area'), #mitts/boots + ('Catfish Approach Bottom Ledge Drop', 'Catfish Approach Ledge'), + ('Catfish Approach Ledge Drop', 'Catfish Approach Area'), + ('Catfish Approach Water Drop', 'Catfish Approach Water'), #flippers + ('Village of Outcasts Pegs', 'Dark Grassy Lawn'), #hammer + ('Grassy Lawn Pegs', 'Village of Outcasts Area'), #hammer ('Shield Shop Fence (Outer) Ledge Drop', 'Shield Shop Fence'), ('Shield Shop Fence (Inner) Ledge Drop', 'Shield Shop Area'), - ('Pyramid Exit Ledge Drop', 'Pyramid Area'), - ('Broken Bridge Hammer Rock (South)', 'Broken Bridge Northeast'), - ('Broken Bridge Hammer Rock (North)', 'Broken Bridge Area'), - ('Broken Bridge Hookshot Gap', 'Broken Bridge West'), - ('Broken Bridge Water Drop', 'Broken Bridge Water'), - ('Broken Bridge Northeast Water Drop', 'Broken Bridge Water'), - ('Broken Bridge West Water Drop', 'Broken Bridge Water'), - ('Peg Area Rocks (West)', 'Hammer Peg Area'), - ('Peg Area Rocks (East)', 'Hammer Peg Entry'), - ('Dig Game To Ledge Drop', 'Dig Game Ledge'), + ('Pyramid Exit Ledge Drop', 'Pyramid Area'), #hammer(inverted) + ('Broken Bridge Hammer Rock (South)', 'Broken Bridge Northeast'), #hammer/glove + ('Broken Bridge Hammer Rock (North)', 'Broken Bridge Area'), #hammer/glove + ('Broken Bridge Hookshot Gap', 'Broken Bridge West'), #hookshot + ('Broken Bridge Water Drop', 'Broken Bridge Water'), #flippers + ('Broken Bridge Northeast Water Drop', 'Broken Bridge Water'), #flippers + ('Broken Bridge West Water Drop', 'Broken Bridge Water'), #flippers + ('Peg Area Rocks (West)', 'Hammer Peg Area'), #mitts + ('Peg Area Rocks (East)', 'Hammer Peg Entry'), #mitts + ('Dig Game To Ledge Drop', 'Dig Game Ledge'), #mitts ('Dig Game Ledge Drop', 'Dig Game Area'), ('Frog Ledge Drop', 'Archery Game Area'), - ('Archery Game Rock', 'Frog Area'), - ('Hammer Bridge Pegs (North)', 'Hammer Bridge South Area'), - ('Hammer Bridge Pegs (South)', 'Hammer Bridge North Area'), - ('Hammer Bridge Water Drop', 'Hammer Bridge Water'), + ('Frog Rock (Inner)', 'Frog Area'), #mitts + ('Frog Rock (Outer)', 'Frog Prison'), #mitts + ('Archery Game Rock (North)', 'Archery Game Area'), #mitts + ('Archery Game Rock (South)', 'Frog Area'), #mitts + ('Hammer Bridge Pegs (North)', 'Hammer Bridge South Area'), #hammer + ('Hammer Bridge Pegs (South)', 'Hammer Bridge North Area'), #hammer + ('Hammer Bridge Water Drop', 'Hammer Bridge Water'), #flippers ('Hammer Bridge Pier', 'Hammer Bridge North Area'), ('Misery Mire Teleporter Ledge Drop', 'Misery Mire Area'), - ('Stumpy Approach Bush (North)', 'Stumpy Approach Area'), - ('Stumpy Approach Bush (South)', 'Stumpy Approach Bush Entry'), - ('Dark C Whirlpool Water Entry', 'Dark C Whirlpool Water'), + ('Stumpy Approach Bush (North)', 'Stumpy Approach Area'), #pearl + ('Stumpy Approach Bush (South)', 'Stumpy Approach Bush Entry'), #pearl + ('Dark C Whirlpool Water Entry', 'Dark C Whirlpool Water'), #flippers ('Dark C Whirlpool Landing', 'Dark C Whirlpool Area'), - ('Dark C Whirlpool Rock (Bottom)', 'Dark C Whirlpool Outer Area'), - ('Dark C Whirlpool Rock (Top)', 'Dark C Whirlpool Area'), - ('Hype Cave Water Entry', 'Hype Cave Water'), + ('Dark C Whirlpool Rock (Bottom)', 'Dark C Whirlpool Outer Area'), #glove + ('Dark C Whirlpool Rock (Top)', 'Dark C Whirlpool Area'), #glove + ('Hype Cave Water Entry', 'Hype Cave Water'), #flippers ('Hype Cave Landing', 'Hype Cave Area'), - ('Ice Lake Water Drop', 'Ice Lake Water'), - ('Ice Lake Northeast Water Drop', 'Ice Lake Water'), - ('Ice Lake Southwest Water Drop', 'Ice Lake Water'), - ('Ice Lake Southeast Water Drop', 'Ice Lake Water'), - ('Ice Lake Moat Water Drop', 'Ice Lake Water'), + ('Ice Lake Water Drop', 'Ice Lake Water'), #flippers + ('Ice Lake Northeast Water Drop', 'Ice Lake Water'), #flippers + ('Ice Lake Southwest Water Drop', 'Ice Lake Water'), #flippers + ('Ice Lake Southeast Water Drop', 'Ice Lake Water'), #flippers + ('Ice Lake Moat Water Entry', 'Ice Lake Water'), #flippers ('Ice Lake Northeast Pier', 'Ice Lake Northeast Bank'), - ('Ice Palace Approach', 'Ice Palace Area'), - ('Ice Palace Leave', 'Ice Lake Moat'), - ('Bomber Corner Water Drop', 'Bomber Corner Water'), - ('Bomber Corner Waterfall Water Drop', 'Bomber Corner Water'), + ('Ice Palace Approach', 'Ice Palace Area'), #inverted only + ('Ice Palace Leave', 'Ice Lake Moat'), #inverted only + ('Bomber Corner Water Drop', 'Bomber Corner Water'), #flippers + ('Bomber Corner Waterfall Water Drop', 'Bomber Corner Water'), #flippers ('Bomber Corner Pier', 'Bomber Corner Area'), - + # OWG Connections ('Sand Dunes Ledge Drop', 'Sand Dunes Area'), ('Stone Bridge East Ledge Drop', 'Stone Bridge Area'), @@ -567,15 +579,28 @@ mandatory_connections = [ # Whirlpool Connections ('Lost Woods East (Forgotten) Mirror Spot', 'Lost Woods East Area'), ('Lost Woods West (Forgotten) Mirror Spot', 'Lost Woods West Area'), ('Lumberjack Mirror Spot', 'Lumberjack Area'), + ('Spectacle Rock Mirror Spot', 'Spectacle Rock Ledge'), + ('West Death Mountain (Top) Mirror Spot', 'West Death Mountain (Top)'), + ('East Death Mountain (Top West) Mirror Spot', 'East Death Mountain (Top West)'), + ('East Death Mountain (Top East) Mirror Spot', 'East Death Mountain (Top East)'), + ('Spiral Cave Mirror Spot', 'Spiral Cave Ledge'), + ('Mimic Cave Mirror Spot', 'Mimic Cave Ledge'), + ('Isolated Ledge Mirror Spot', 'Fairy Ascension Ledge'), + ('Fairy Ascension Mirror Spot', 'Fairy Ascension Plateau'), + ('Death Mountain Bridge Mirror Spot', 'East Death Mountain (Bottom Left)'), + ('Floating Island Mirror Spot', 'Death Mountain Floating Island'), + ('TR Pegs Area Mirror Spot', 'Death Mountain TR Pegs'), ('Mountain Entry Mirror Spot', 'Mountain Entry Area'), ('Mountain Entry Entrance Mirror Spot', 'Death Mountain Entrance'), ('Mountain Entry Ledge Mirror Spot', 'Death Mountain Return Ledge'), + ('Zora Waterfall Mirror Spot', 'Zora Waterfall Area'), ('Lost Woods Pass West Mirror Spot', 'Lost Woods Pass West Area'), ('Lost Woods Pass East Top Mirror Spot', 'Lost Woods Pass East Top Area'), - ('Lost Woods East Bottom Mirror Spot', 'Lost Woods Pass East Bottom Area'), + ('Lost Woods Pass East Bottom Mirror Spot', 'Lost Woods Pass East Bottom Area'), ('Kakariko Fortune Mirror Spot', 'Kakariko Fortune Area'), ('Kakariko Pond Mirror Spot', 'Kakariko Pond Area'), ('Forgotton Forest Mirror Spot', 'Forgotten Forest Area'), + ('Forgotton Forest Fence Mirror Spot', 'Forgotten Forest Area'), ('Bonk Rock Ledge Mirror Spot', 'Bonk Rock Ledge'), ('Graveyard Ledge Mirror Spot', 'Graveyard Ledge'), ('Kings Grave Mirror Spot', 'Kings Grave Area'), @@ -584,12 +609,9 @@ mandatory_connections = [ # Whirlpool Connections ('Potion Shop Mirror Spot', 'Potion Shop Area'), ('Potion Shop Northeast Mirror Spot', 'Potion Shop Northeast'), ('Zora Approach Mirror Spot', 'Zora Approach Area'), - ('Zora Waterfall Mirror Spot', 'Zora Waterfall Area'), + ('Zora Approach Ledge Mirror Spot', 'Zora Approach Ledge'), ('Kakariko Mirror Spot', 'Kakariko Area'), ('Kakariko Grass Mirror Spot', 'Kakariko Area'), - ('Blacksmith Mirror Spot', 'Blacksmith Area'), - ('Blacksmith Entry Mirror Spot', 'Blacksmith Area'), - ('Bat Cave Ledge Mirror Spot', 'Bat Cave Ledge'), ('HC Ledge Mirror Spot', 'Hyrule Castle Ledge'), ('HC Courtyard Mirror Spot', 'Hyrule Castle Courtyard'), ('HC Area Mirror Spot', 'Hyrule Castle Area'), @@ -598,29 +620,34 @@ mandatory_connections = [ # Whirlpool Connections ('Wooden Bridge Mirror Spot', 'Wooden Bridge Area'), ('Wooden Bridge Northeast Mirror Spot', 'Wooden Bridge Area'), ('Wooden Bridge West Mirror Spot', 'Wooden Bridge Area'), - ('Sand Dunes Mirror Spot', 'Sand Dunes Area'), ('Eastern Palace Mirror Spot', 'Eastern Palace Area'), - ('Eastern Nook Mirror Spot', 'Eastern Nook Area'), + ('Blacksmith Mirror Spot', 'Blacksmith Area'), + ('Blacksmith Entry Mirror Spot', 'Blacksmith Area'), + ('Bat Cave Ledge Mirror Spot', 'Bat Cave Ledge'), + ('Sand Dunes Mirror Spot', 'Sand Dunes Area'), ('Maze Race Mirror Spot', 'Maze Race Ledge'), ('Maze Race Ledge Mirror Spot', 'Maze Race Ledge'), ('Kakariko Suburb Mirror Spot', 'Kakariko Suburb Area'), ('Kakariko Suburb South Mirror Spot', 'Kakariko Suburb Area'), ('Flute Boy Mirror Spot', 'Flute Boy Area'), ('Flute Boy Pass Mirror Spot', 'Flute Boy Pass'), - ('Cave 45 Mirror Spot', 'Cave 45 Ledge'), - ('C Whirlpool Mirror Spot', 'C Whirlpool Area'), - ('C Whirlpool Outer Mirror Spot', 'C Whirlpool Outer Area'), ('Central Bonk Rocks Mirror Spot', 'Central Bonk Rocks Area'), ('Links House Mirror Spot', 'Links House Area'), ('Stone Bridge Mirror Spot', 'Stone Bridge Area'), ('Stone Bridge South Mirror Spot', 'Stone Bridge Area'), ('Hobo Mirror Spot', 'Stone Bridge Water'), ('Tree Line Mirror Spot', 'Tree Line Area'), + ('Eastern Nook Mirror Spot', 'Eastern Nook Area'), + ('Desert Mirror Spot', 'Desert Area'), ('Desert Ledge Mirror Spot', 'Desert Ledge'), ('Checkerboard Mirror Spot', 'Desert Checkerboard Ledge'), ('DP Stairs Mirror Spot', 'Desert Palace Stairs'), ('DP Entrance (North) Mirror Spot', 'Desert Palace Entrance (North) Spot'), ('Bombos Tablet Ledge Mirror Spot', 'Bombos Tablet Ledge'), + ('Flute Boy Entry Mirror Spot', 'Flute Boy Bush Entry'), + ('Cave 45 Mirror Spot', 'Cave 45 Ledge'), + ('C Whirlpool Mirror Spot', 'C Whirlpool Area'), + ('C Whirlpool Outer Mirror Spot', 'C Whirlpool Outer Area'), ('Desert Pass Ledge Mirror Spot', 'Desert Pass Ledge'), ('Desert Pass Mirror Spot', 'Desert Pass Area'), ('Dam Mirror Spot', 'Dam Area'), @@ -635,19 +662,101 @@ mandatory_connections = [ # Whirlpool Connections ('Lake Hylia Water Mirror Spot', 'Lake Hylia Water'), ('Octoballoon Mirror Spot', 'Octoballoon Area'), ('Ice Cave Mirror Spot', 'Ice Cave Area'), - ('Spectacle Rock Mirror Spot', 'Spectacle Rock Ledge'), - ('West Death Mountain (Top) Mirror Spot', 'West Death Mountain (Top)'), - ('East Death Mountain (Top West) Mirror Spot', 'East Death Mountain (Top West)'), - ('East Death Mountain (Top East) Mirror Spot', 'East Death Mountain (Top East)'), - ('Spiral Cave Mirror Spot', 'Spiral Cave Ledge'), - ('Mimic Cave Mirror Spot', 'Mimic Cave Ledge'), - ('Isolated Ledge Mirror Spot', 'Fairy Ascension Ledge'), - ('Fairy Ascension Mirror Spot', 'Fairy Ascension Plateau'), - ('Death Mountain Bridge Mirror Spot', 'East Death Mountain (Bottom Left)'), - ('Floating Island Mirror Spot', 'Death Mountain Floating Island'), - ('TR Pegs Area Mirror Spot', 'Death Mountain TR Pegs') - #TODO: Inverted Mirror Spots + #Inverted Mirror Connections + ('Skull Woods Back Mirror Spot', 'Skull Woods Forest (West)'), + ('Skull Woods Forgotten (West) Mirror Spot', 'Skull Woods Forgotten Path (Southwest)'), + ('Skull Woods Forgotten (East) Mirror Spot', 'Skull Woods Forgotten Path (Northeast)'), + ('Skull Woods Portal Entry Mirror Spot', 'Skull Woods Portal Entry'), + ('Skull Woods Forgotten (Middle) Mirror Spot', 'Skull Woods Forgotten Path (Northeast)'), + ('Skull Woods Front Mirror Spot', 'Skull Woods Forest'), + ('Dark Lumberjack Mirror Spot', 'Dark Lumberjack Area'), + ('West Dark Death Mountain (Top) Mirror Spot', 'West Dark Death Mountain (Top)'), + ('Bubble Boy Mirror Spot', 'West Dark Death Mountain (Bottom)'), + ('West Dark Death Mountain (Bottom) Mirror Spot', 'West Dark Death Mountain (Bottom)'), + ('East Dark Death Mountain (Top West) Mirror Spot', 'East Dark Death Mountain (Top)'), + ('East Dark Death Mountain (Top East) Mirror Spot', 'East Dark Death Mountain (Top)'), + ('TR Ledge (West) Mirror Spot', 'Dark Death Mountain Ledge'), + ('TR Ledge (East) Mirror Spot', 'Dark Death Mountain Ledge'), + ('TR Isolated Mirror Spot', 'Dark Death Mountain Isolated Ledge'), + ('East Dark Death Mountain (Bottom Plateau) Mirror Spot', 'East Dark Death Mountain (Bottom)'), + ('East Dark Death Mountain (Bottom Left) Mirror Spot', 'East Dark Death Mountain (Bottom Left)'), + ('East Dark Death Mountain (Bottom) Mirror Spot', 'East Dark Death Mountain (Bottom)'), + ('Dark Floating Island Mirror Spot', 'Dark Death Mountain Floating Island'), + ('Turtle Rock Mirror Spot', 'Turtle Rock Area'), + ('Turtle Rock Ledge Mirror Spot', 'Turtle Rock Ledge'), + ('Bumper Cave Area Mirror Spot', 'Bumper Cave Area'), + ('Bumper Cave Entry Mirror Spot', 'Bumper Cave Entrance'), + ('Bumper Cave Ledge Mirror Spot', 'Bumper Cave Ledge'), + ('Catfish Mirror Spot', 'Catfish Area'), + ('Skull Woods Pass West Mirror Spot', 'Skull Woods Pass West Area'), + ('Skull Woods Pass East Top Mirror Spot', 'Skull Woods Pass East Top Area'), + ('Skull Woods Pass East Bottom Mirror Spot', 'Skull Woods Pass East Bottom Area'), + ('Outcast Fortune Mirror Spot', 'Dark Fortune Area'), + ('Outcast Pond Mirror Spot', 'Outcast Pond Area'), + ('Dark Chapel Mirror Spot', 'Dark Chapel Area'), + ('Dark Chapel Ledge Mirror Spot', 'Dark Chapel Area'), + ('Dark Graveyard Mirror Spot', 'Dark Graveyard Area'), + ('Dark Graveyard Ledge Mirror Spot', 'Dark Graveyard Area'), + ('Dark Graveyard Grave Mirror Spot', 'Dark Graveyard Area'), + ('Qirn Jump Mirror Spot', 'Qirn Jump Area'), + ('Qirn Jump East Mirror Spot', 'Qirn Jump East Bank'), + ('Dark Witch Mirror Spot', 'Dark Witch Area'), + ('Dark Witch Northeast Mirror Spot', 'Dark Witch Northeast'), + ('Catfish Approach Mirror Spot', 'Catfish Approach Area'), + ('Catfish Approach Ledge Mirror Spot', 'Catfish Approach Ledge'), + ('Village of Outcasts Mirror Spot', 'Village of Outcasts Area'), + ('Village of Outcasts Southwest Mirror Spot', 'Village of Outcasts Area'), + ('Hammer House Mirror Spot', 'Dark Grassy Lawn'), + ('Shield Shop Mirror Spot', 'Shield Shop Area'), + ('Pyramid Mirror Spot', 'Pyramid Area'), + ('Pyramid Pass Mirror Spot', 'Pyramid Pass'), + ('Pyramid Courtyard Mirror Spot', 'Pyramid Area'), + ('Pyramid Uncle Mirror Spot', 'Pyramid Area'), + ('Pyramid From Ledge Mirror Spot', 'Pyramid Area'), + ('Pyramid Entry Mirror Spot', 'Pyramid Area'), + ('Broken Bridge West Mirror Spot', 'Broken Bridge West'), + ('Broken Bridge East Mirror Spot', 'Broken Bridge Area'), + ('Broken Bridge Northeast Mirror Spot', 'Broken Bridge Northeast'), + ('Palace of Darkness Mirror Spot', 'Palace of Darkness Area'), + ('Hammer Pegs Mirror Spot', 'Hammer Peg Area'), + ('Hammer Pegs Entry Mirror Spot', 'Hammer Peg Entry'), + ('Dark Dunes Mirror Spot', 'Dark Dunes Area'), + ('Dig Game Mirror Spot', 'Dig Game Area'), + ('Dig Game Ledge Mirror Spot', 'Dig Game Ledge'), + ('Frog Mirror Spot', 'Frog Area'), + ('Frog Prison Mirror Spot', 'Frog Prison'), + ('Archery Game Mirror Spot', 'Archery Game Area'), + ('Stumpy Mirror Spot', 'Stumpy Area'), + ('Stumpy Pass Mirror Spot', 'Stumpy Pass'), + ('Dark Bonk Rocks Mirror Spot', 'Dark Bonk Rocks Area'), + ('Big Bomb Shop Mirror Spot', 'Big Bomb Shop Area'), + ('Hammer Bridge North Mirror Spot', 'Hammer Bridge North Area'), + ('Hammer Bridge South Mirror Spot', 'Hammer Bridge South Area'), + ('Dark Hobo Mirror Spot', 'Hammer Bridge Water'), + ('Dark Tree Line Mirror Spot', 'Dark Tree Line Area'), + ('Darkness Nook Mirror Spot', 'Palace of Darkness Nook Area'), + ('Misery Mire Mirror Spot', 'Misery Mire Area'), + ('Misery Mire Ledge Mirror Spot', 'Misery Mire Area'), + ('Misery Mire Blocked Mirror Spot', 'Misery Mire Area'), + ('Misery Mire Main Mirror Spot', 'Misery Mire Area'), + ('Stumpy Approach Mirror Spot', 'Stumpy Approach Area'), + ('Stumpy Bush Entry Mirror Spot', 'Stumpy Approach Bush Entry'), + ('Dark C Whirlpool Mirror Spot', 'Dark C Whirlpool Area'), + ('Dark C Whirlpool Outer Mirror Spot', 'Dark C Whirlpool Outer Area'), + ('Hype Cave Mirror Spot', 'Hype Cave Area'), + ('Ice Lake Mirror Spot', 'Ice Lake Area'), + ('Ice Lake Southwest Mirror Spot', 'Ice Lake Ledge (West)'), + ('Ice Lake Southeast Mirror Spot', 'Ice Lake Ledge (East)'), + ('Ice Lake Northeast Mirror Spot', 'Ice Lake Northeast Bank'), + ('Ice Palace Mirror Spot', 'Ice Palace Area'), + ('Shopping Mall Mirror Spot', 'Shopping Mall Area'), + ('Swmap Nook Mirror Spot', 'Swamp Nook Area'), + ('Swamp Nook Southeast Mirror Spot', 'Swamp Nook Area'), + ('Swamp Nook Pegs Mirror Spot', 'Swamp Nook Area'), + ('Swamp Mirror Spot', 'Swamp Area'), + ('Dark South Pass Mirror Spot', 'Dark South Pass Area'), + ('Bomber Corner Mirror Spot', 'Bomber Corner Area') ] standard_connections = [('Hyrule Castle SW', 'Central Bonk Rocks NW'), @@ -658,14 +767,14 @@ standard_connections = [('Hyrule Castle SW', 'Central Bonk Rocks NW'), ] open_connections = [('Flute Spot 1', 'West Death Mountain (Bottom)'), - ('Flute Spot 2', 'Potion Shop Area'), - ('Flute Spot 3', 'Kakariko Area'), - ('Flute Spot 4', 'Links House Area'), - ('Flute Spot 5', 'Eastern Nook Area'), - ('Flute Spot 6', 'Desert Palace Teleporter Ledge'), - ('Flute Spot 7', 'Dam Area'), - ('Flute Spot 8', 'Octoballoon Area') - ] + ('Flute Spot 2', 'Potion Shop Area'), + ('Flute Spot 3', 'Kakariko Area'), + ('Flute Spot 4', 'Links House Area'), + ('Flute Spot 5', 'Eastern Nook Area'), + ('Flute Spot 6', 'Desert Palace Teleporter Ledge'), + ('Flute Spot 7', 'Dam Area'), + ('Flute Spot 8', 'Octoballoon Area') + ] inverted_connections = [('Flute Spot 1', 'West Dark Death Mountain (Bottom)'), ('Flute Spot 2', 'Dark Witch Area'), diff --git a/Regions.py b/Regions.py index a62dd829..4c469958 100644 --- a/Regions.py +++ b/Regions.py @@ -9,124 +9,125 @@ def create_regions(world, player): create_menu_region(player, 'Flute Sky', None, ['Flute Spot 1', 'Flute Spot 2', 'Flute Spot 3', 'Flute Spot 4', 'Flute Spot 5', 'Flute Spot 6', 'Flute Spot 7', 'Flute Spot 8']), create_lw_region(player, 'Master Sword Meadow', ['Master Sword Pedestal'], ['Master Sword Meadow SC']), - create_lw_region(player, 'Lost Woods West Area', None, ['Lost Woods Bush (West)', 'Lost Woods NW', 'Lost Woods SW', 'Lost Woods SC']), - create_lw_region(player, 'Lost Woods East Area', ['Mushroom'], ['Lost Woods Bush (East)', 'Lost Woods Gamble', 'Lost Woods Hideout Drop', 'Lost Woods Hideout Stump', 'Lost Woods SE', 'Lost Woods EN']), - create_lw_region(player, 'Lumberjack Area', None, ['Lumberjack Tree Tree', 'Lumberjack Tree Cave', 'Lumberjack House', 'Lumberjack WN', 'Lumberjack SW']), - create_lw_region(player, 'West Death Mountain (Top)', ['Ether Tablet'], ['Tower of Hera', 'Spectacle Rock Approach', 'West Death Mountain Drop', 'West Death Mountain EN']), - create_lw_region(player, 'Spectacle Rock Ledge', ['Spectacle Rock'], ['Spectacle Rock Leave', 'Spectacle Rock Drop']), - create_lw_region(player, 'West Death Mountain (Bottom)', None, ['Old Man Cave (East)', 'Old Man House (Bottom)', 'Old Man House (Top)', 'Death Mountain Return Cave (East)', 'Spectacle Rock Cave', 'Spectacle Rock Cave Peak', 'Spectacle Rock Cave (Bottom)', 'West Death Mountain Teleporter', 'West Death Mountain ES']), - create_lw_region(player, 'East Death Mountain (Top West)', None, ['DM Hammer Bridge (West)', 'East Death Mountain WN']), - create_lw_region(player, 'East Death Mountain (Top East)', None, ['Paradox Cave (Top)', 'DM Hammer Bridge (East)', 'Floating Island Bridge (East)', 'East Death Mountain Spiral Ledge Drop', 'East Death Mountain Fairy Ledge Drop', 'East Death Mountain Mimic Ledge Drop', 'East Death Mountain EN']), - create_lw_region(player, 'Spiral Cave Ledge', None, ['Spiral Cave', 'Spiral Ledge Drop']), - create_lw_region(player, 'Mimic Cave Ledge', None, ['Mimic Cave', 'Mimic Ledge Drop']), - create_lw_region(player, 'Fairy Ascension Ledge', None, ['Fairy Ascension Ledge Drop', 'Fairy Ascension Cave (Top)']), - create_lw_region(player, 'Fairy Ascension Plateau', None, ['Fairy Ascension Rocks (North)', 'Fairy Ascension Plateau Ledge Drop', 'Fairy Ascension Cave (Bottom)']), - create_lw_region(player, 'East Death Mountain (Bottom Left)', None, ['DM Broken Bridge (West)', 'East Death Mountain WS']), - create_lw_region(player, 'East Death Mountain (Bottom)', None, ['DM Broken Bridge (East)', 'Paradox Cave (Bottom)', 'Paradox Cave (Middle)', 'Hookshot Fairy', 'Spiral Cave (Bottom)', 'Fairy Ascension Rocks (South)', 'East Death Mountain Teleporter']), - create_lw_region(player, 'Death Mountain Floating Island', ['Floating Island'], ['Floating Island Bridge (West)']), - create_lw_region(player, 'Death Mountain TR Pegs', None, ['Death Mountain TR Pegs WN', 'TR Pegs Ledge Entry']), - create_lw_region(player, 'Death Mountain TR Pegs Ledge', None, ['TR Pegs Ledge Drop', 'TR Pegs Teleporter']), - create_lw_region(player, 'Mountain Entry Area', None, ['Death Mountain Entrance Rock', 'Mountain Entry NW', 'Mountain Entry SE']), - create_lw_region(player, 'Death Mountain Entrance', None, ['Old Man Cave (West)', 'Death Mountain Entrance Drop']), - create_lw_region(player, 'Death Mountain Return Ledge', None, ['Death Mountain Return Cave (West)', 'Death Mountain Return Drop']), - create_lw_region(player, 'Zora Waterfall Area', None, ['Zora Waterfall Water Entry', 'Zora Waterfall SE', 'Zora Waterfall NE']), + create_lw_region(player, 'Lost Woods West Area', None, ['Lost Woods Bush (West)', 'Skull Woods Back Mirror Spot', 'Skull Woods Forgotten (West) Mirror Spot', 'Skull Woods Forgotten (East) Mirror Spot', 'Skull Woods Portal Entry Mirror Spot', 'Lost Woods NW', 'Lost Woods SW', 'Lost Woods SC']), + create_lw_region(player, 'Lost Woods East Area', ['Mushroom'], ['Lost Woods Bush (East)', 'Lost Woods Gamble', 'Lost Woods Hideout Drop', 'Lost Woods Hideout Stump', 'Skull Woods Forgotten (Middle) Mirror Spot', 'Skull Woods Front Mirror Spot', 'Lost Woods SE', 'Lost Woods EN']), + create_lw_region(player, 'Lumberjack Area', None, ['Lumberjack Tree Tree', 'Lumberjack Tree Cave', 'Lumberjack House', 'Dark Lumberjack Mirror Spot', 'Lumberjack WN', 'Lumberjack SW']), + create_lw_region(player, 'West Death Mountain (Top)', ['Ether Tablet'], ['Spectacle Rock Approach', 'West Death Mountain Drop', 'Tower of Hera', 'West Dark Death Mountain (Top) Mirror Spot', 'West Death Mountain EN']), + create_lw_region(player, 'Spectacle Rock Ledge', ['Spectacle Rock'], ['Spectacle Rock Leave', 'Spectacle Rock Drop', 'Bubble Boy Mirror Spot']), + create_lw_region(player, 'West Death Mountain (Bottom)', None, ['Old Man Cave (East)', 'Old Man House (Bottom)', 'Old Man House (Top)', 'Death Mountain Return Cave (East)', 'Spectacle Rock Cave', 'Spectacle Rock Cave Peak', 'Spectacle Rock Cave (Bottom)', 'West Dark Death Mountain (Bottom) Mirror Spot', 'West Death Mountain Teleporter', 'West Death Mountain ES']), + create_lw_region(player, 'East Death Mountain (Top West)', None, ['DM Hammer Bridge (West)', 'East Dark Death Mountain (Top West) Mirror Spot', 'East Death Mountain WN']), + create_lw_region(player, 'East Death Mountain (Top East)', None, ['DM Hammer Bridge (East)', 'Floating Island Bridge (East)', 'East Death Mountain Spiral Ledge Drop', 'East Death Mountain Fairy Ledge Drop', 'East Death Mountain Mimic Ledge Drop', 'Paradox Cave (Top)', 'East Dark Death Mountain (Top East) Mirror Spot', 'East Death Mountain EN']), + create_lw_region(player, 'Spiral Cave Ledge', None, ['Spiral Ledge Drop', 'Spiral Cave', 'TR Ledge (West) Mirror Spot']), + create_lw_region(player, 'Mimic Cave Ledge', None, ['Mimic Ledge Drop', 'Mimic Cave', 'TR Ledge (East) Mirror Spot']), + create_lw_region(player, 'Fairy Ascension Ledge', None, ['Fairy Ascension Ledge Drop', 'Fairy Ascension Cave (Top)', 'TR Isolated Mirror Spot']), + create_lw_region(player, 'Fairy Ascension Plateau', None, ['Fairy Ascension Rocks (North)', 'Fairy Ascension Plateau Ledge Drop', 'Fairy Ascension Cave (Bottom)', 'East Dark Death Mountain (Bottom Plateau) Mirror Spot']), + create_lw_region(player, 'East Death Mountain (Bottom Left)', None, ['DM Broken Bridge (West)', 'East Dark Death Mountain (Bottom Left) Mirror Spot', 'East Death Mountain WS']), + create_lw_region(player, 'East Death Mountain (Bottom)', None, ['DM Broken Bridge (East)', 'Paradox Cave (Bottom)', 'Paradox Cave (Middle)', 'Hookshot Fairy', 'Spiral Cave (Bottom)', 'Fairy Ascension Rocks (South)', 'East Dark Death Mountain (Bottom) Mirror Spot', 'East Death Mountain Teleporter']), + create_lw_region(player, 'Death Mountain Floating Island', ['Floating Island'], ['Floating Island Bridge (West)', 'Dark Floating Island Mirror Spot']), + create_lw_region(player, 'Death Mountain TR Pegs', None, ['TR Pegs Ledge Entry', 'Turtle Rock Mirror Spot', 'Death Mountain TR Pegs WN']), + create_lw_region(player, 'Death Mountain TR Pegs Ledge', None, ['TR Pegs Ledge Leave', 'TR Pegs Ledge Drop', 'Turtle Rock Ledge Mirror Spot', 'TR Pegs Teleporter']), + create_lw_region(player, 'Mountain Entry Area', None, ['Death Mountain Entrance Rock', 'Bumper Cave Area Mirror Spot', 'Mountain Entry NW', 'Mountain Entry SE']), + create_lw_region(player, 'Death Mountain Entrance', None, ['Death Mountain Entrance Drop', 'Old Man Cave (West)', 'Bumper Cave Entry Mirror Spot']), + create_lw_region(player, 'Death Mountain Return Ledge', None, ['Death Mountain Return Drop', 'Death Mountain Return Cave (West)', 'Bumper Cave Ledge Mirror Spot']), + create_lw_region(player, 'Zora Waterfall Area', None, ['Zora Waterfall Water Entry', 'Catfish Mirror Spot', 'Zora Waterfall SE', 'Zora Waterfall NE']), create_lw_region(player, 'Zora Waterfall Water', None, ['Waterfall of Wishing Cave Entry', 'Zora Waterfall Landing', 'Zora Whirlpool']), - create_lw_region(player, 'Waterfall of Wishing Cave', None, ['Waterfall of Wishing', 'Zora Waterfall Water Drop']), + create_lw_region(player, 'Waterfall of Wishing Cave', None, ['Zora Waterfall Water Drop', 'Waterfall of Wishing']), create_lw_region(player, 'Zoras Domain', ['King Zora', 'Zora\'s Ledge'], ['Zoras Domain SW']), - create_lw_region(player, 'Lost Woods Pass West Area', None, ['Lost Woods Pass NW', 'Lost Woods Pass SW']), - create_lw_region(player, 'Lost Woods Pass East Top Area', None, ['Kakariko Teleporter (Hammer)', 'Lost Woods Pass NE']), - create_lw_region(player, 'Lost Woods Pass East Bottom Area', None, ['Kakariko Teleporter (Rock)', 'Lost Woods Pass SE']), - create_lw_region(player, 'Kakariko Fortune Area', None, ['Fortune Teller (Light)', 'Kakariko Fortune NE', 'Kakariko Fortune EN', 'Kakariko Fortune ES', 'Kakariko Fortune SC']), - create_lw_region(player, 'Kakariko Pond Area', None, ['Kakariko Pond NE', 'Kakariko Pond WN', 'Kakariko Pond WS', 'Kakariko Pond SW', 'Kakariko Pond SE', 'Kakariko Pond EN', 'Kakariko Pond ES', 'Kakariko Pond Whirlpool']), - create_lw_region(player, 'Sanctuary Area', None, ['Sanctuary', 'Sanctuary WS', 'Sanctuary EC']), - create_lw_region(player, 'Bonk Rock Ledge', None, ['Bonk Rock Cave', 'Bonk Rock Ledge Drop', 'Sanctuary WN']), - create_lw_region(player, 'Graveyard Area', None, ['Sanctuary Grave', 'Kings Grave Outer Rocks', 'Graveyard Ladder (Bottom)', 'Graveyard WC', 'Graveyard EC']), - create_lw_region(player, 'Graveyard Ledge', None, ['Graveyard Cave', 'Graveyard Ledge Drop', 'Graveyard Ladder (Top)']), - create_lw_region(player, 'Kings Grave Area', None, ['Kings Grave', 'Kings Grave Inner Rocks']), - create_lw_region(player, 'River Bend Area', None, ['North Fairy Cave', 'North Fairy Cave Drop', 'River Bend Water Drop', 'River Bend WC', 'River Bend SW']), - create_lw_region(player, 'River Bend East Bank', None, ['River Bend East Water Drop', 'River Bend SE', 'River Bend EC', 'River Bend ES']), + create_lw_region(player, 'Lost Woods Pass West Area', None, ['Skull Woods Pass West Mirror Spot', 'Lost Woods Pass NW', 'Lost Woods Pass SW']), + create_lw_region(player, 'Lost Woods Pass East Top Area', None, ['Skull Woods Pass East Top Mirror Spot', 'Kakariko Teleporter (Hammer)', 'Lost Woods Pass NE']), + create_lw_region(player, 'Lost Woods Pass East Bottom Area', None, ['Skull Woods Pass East Bottom Mirror Spot', 'Kakariko Teleporter (Rock)', 'Lost Woods Pass SE']), + create_lw_region(player, 'Kakariko Fortune Area', None, ['Fortune Teller (Light)', 'Outcast Fortune Mirror Spot', 'Kakariko Fortune NE', 'Kakariko Fortune EN', 'Kakariko Fortune ES', 'Kakariko Fortune SC']), + create_lw_region(player, 'Kakariko Pond Area', None, ['Outcast Pond Mirror Spot', 'Kakariko Pond NE', 'Kakariko Pond WN', 'Kakariko Pond WS', 'Kakariko Pond SW', 'Kakariko Pond SE', 'Kakariko Pond EN', 'Kakariko Pond ES', 'Kakariko Pond Whirlpool']), + create_lw_region(player, 'Sanctuary Area', None, ['Sanctuary', 'Dark Chapel Mirror Spot', 'Sanctuary WS', 'Sanctuary EC']), + create_lw_region(player, 'Bonk Rock Ledge', None, ['Bonk Rock Cave', 'Bonk Rock Ledge Drop', 'Dark Chapel Ledge Mirror Spot', 'Sanctuary WN']), + create_lw_region(player, 'Graveyard Area', None, ['Sanctuary Grave', 'Kings Grave Outer Rocks', 'Graveyard Ladder (Bottom)', 'Dark Graveyard Mirror Spot', 'Graveyard WC', 'Graveyard EC']), + create_lw_region(player, 'Graveyard Ledge', None, ['Graveyard Ledge Drop', 'Graveyard Ladder (Top)', 'Graveyard Cave', 'Dark Graveyard Ledge Mirror Spot']), + create_lw_region(player, 'Kings Grave Area', None, ['Kings Grave Inner Rocks', 'Kings Grave', 'Dark Graveyard Grave Mirror Spot']), + create_lw_region(player, 'River Bend Area', None, ['North Fairy Cave Drop', 'River Bend Water Drop', 'North Fairy Cave', 'Qirn Jump Mirror Spot', 'River Bend WC', 'River Bend SW']), + create_lw_region(player, 'River Bend East Bank', None, ['River Bend East Water Drop', 'Qirn Jump East Mirror Spot', 'River Bend SE', 'River Bend EC', 'River Bend ES']), create_lw_region(player, 'River Bend Water', None, ['River Bend West Pier', 'River Bend East Pier', 'River Bend EN', 'River Bend SC', 'River Bend Whirlpool']), - create_lw_region(player, 'Potion Shop Area', None, ['Potion Shop', 'Potion Shop Water Drop', 'Potion Shop Rock (South)', 'Potion Shop WC', 'Potion Shop WS']), - create_lw_region(player, 'Potion Shop Northeast', None, ['Potion Shop Northeast Water Drop', 'Potion Shop Rock (North)', 'Potion Shop EC']), + create_lw_region(player, 'Potion Shop Area', None, ['Potion Shop Water Drop', 'Potion Shop Rock (South)', 'Potion Shop', 'Dark Witch Mirror Spot', 'Potion Shop WC', 'Potion Shop WS']), + create_lw_region(player, 'Potion Shop Northeast', None, ['Potion Shop Northeast Water Drop', 'Potion Shop Rock (North)', 'Dark Witch Northeast Mirror Spot', 'Potion Shop EC']), create_lw_region(player, 'Potion Shop Water', None, ['Potion Shop WN', 'Potion Shop EN']), - create_lw_region(player, 'Zora Approach Area', None, ['Zora Approach Water Drop', 'Zora Approach WC', 'Zora Approach NE']), + create_lw_region(player, 'Zora Approach Area', None, ['Zora Approach Rocks (West)', 'Zora Approach Bottom Ledge Drop', 'Zora Approach Water Drop', 'Catfish Approach Mirror Spot', 'Zora Approach WC']), + create_lw_region(player, 'Zora Approach Ledge', None, ['Zora Approach Rocks (East)', 'Zora Approach Ledge Drop', 'Catfish Approach Ledge Mirror Spot', 'Zora Approach NE']), create_lw_region(player, 'Zora Approach Water', None, ['Zora Approach WN']), create_lw_region(player, 'Kakariko Area', ['Bottle Merchant'], ['Kakariko Southwest Bush (North)', 'Kakariko Yard Bush (South)', 'Kakariko Well Drop', 'Kakariko Well Cave', 'Blinds Hideout', 'Elder House (West)', 'Elder House (East)', 'Snitch Lady (West)', 'Snitch Lady (East)', 'Chicken House', 'Sick Kids House', - 'Kakariko Shop', 'Tavern (Front)', 'Tavern North', 'Kakariko NW', 'Kakariko NC', 'Kakariko NE', 'Kakariko ES', 'Kakariko SE']), - create_lw_region(player, 'Kakariko Southwest', None, ['Kakariko Southwest Bush (South)', 'Light World Bomb Hut']), - create_lw_region(player, 'Kakariko Grass Yard', None, ['Kakariko Yard Bush (North)', 'Bush Covered House']), - create_lw_region(player, 'Forgotten Forest Area', None, ['Forgotten Forest NW', 'Forgotten Forest NE', 'Forgotten Forest ES']), - create_lw_region(player, 'Hyrule Castle Area', None, ['Hyrule Castle Secret Entrance Drop', 'Top of Pyramid', 'Hyrule Castle Main Gate (South)', 'Hyrule Castle Inner East Rock', 'Hyrule Castle WN', 'Hyrule Castle SW', 'Hyrule Castle SE']), - create_lw_region(player, 'Hyrule Castle Courtyard', None, ['Hyrule Castle Courtyard Bush (South)', 'Inverted Pyramid Entrance', 'Hyrule Castle Entrance (South)', 'Hyrule Castle Main Gate (North)', 'Top of Pyramid (Inner)']), - create_lw_region(player, 'Hyrule Castle Courtyard Northeast', None, ['Hyrule Castle Secret Entrance Stairs', 'Hyrule Castle Courtyard Bush (North)']), - create_lw_region(player, 'Hyrule Castle Ledge', None, ['Hyrule Castle Entrance (West)', 'Agahnims Tower', 'Inverted Ganons Tower', 'Hyrule Castle Entrance (East)', 'Inverted Pyramid Hole', 'Hyrule Castle Ledge Drop', 'Hyrule Castle Ledge Courtyard Drop']), - create_lw_region(player, 'Hyrule Castle East Entry', None, ['Hyrule Castle Outer East Rock', 'Hyrule Castle ES']), - create_lw_region(player, 'Wooden Bridge Area', None, ['Wooden Bridge Bush (South)', 'Wooden Bridge Water Drop', 'Wooden Bridge NW', 'Wooden Bridge SW']), - create_lw_region(player, 'Wooden Bridge Northeast', None, ['Wooden Bridge Bush (North)', 'Wooden Bridge Northeast Water Drop', 'Wooden Bridge NE']), + 'Kakariko Shop', 'Tavern (Front)', 'Tavern North', 'Village of Outcasts Mirror Spot', 'Kakariko NW', 'Kakariko NC', 'Kakariko NE', 'Kakariko ES', 'Kakariko SE']), + create_lw_region(player, 'Kakariko Southwest', None, ['Kakariko Southwest Bush (South)', 'Light World Bomb Hut', 'Village of Outcasts Southwest Mirror Spot']), + create_lw_region(player, 'Kakariko Grass Yard', None, ['Kakariko Yard Bush (North)', 'Bush Covered House', 'Hammer House Mirror Spot']), + create_lw_region(player, 'Forgotten Forest Area', None, ['Shield Shop Mirror Spot', 'Forgotten Forest NW', 'Forgotten Forest NE', 'Forgotten Forest ES']), + create_lw_region(player, 'Hyrule Castle Area', None, ['Hyrule Castle Secret Entrance Drop', 'Hyrule Castle Main Gate (South)', 'Hyrule Castle Inner East Rock', 'Top of Pyramid', 'Pyramid Mirror Spot', 'Pyramid Pass Mirror Spot', 'Hyrule Castle WN', 'Hyrule Castle SW', 'Hyrule Castle SE']), + create_lw_region(player, 'Hyrule Castle Courtyard', None, ['Hyrule Castle Courtyard Bush (South)', 'Hyrule Castle Main Gate (North)', 'Inverted Pyramid Entrance', 'Hyrule Castle Entrance (South)', 'Pyramid Courtyard Mirror Spot', 'Top of Pyramid (Inner)']), + create_lw_region(player, 'Hyrule Castle Courtyard Northeast', None, ['Hyrule Castle Courtyard Bush (North)', 'Hyrule Castle Secret Entrance Stairs', 'Pyramid Uncle Mirror Spot']), + create_lw_region(player, 'Hyrule Castle Ledge', None, ['Hyrule Castle Ledge Drop', 'Hyrule Castle Ledge Courtyard Drop', 'Hyrule Castle Entrance (West)', 'Agahnims Tower', 'Hyrule Castle Entrance (East)', 'Inverted Pyramid Hole', 'Pyramid From Ledge Mirror Spot']), + create_lw_region(player, 'Hyrule Castle East Entry', None, ['Hyrule Castle Outer East Rock', 'Pyramid Entry Mirror Spot', 'Hyrule Castle ES']), + create_lw_region(player, 'Wooden Bridge Area', None, ['Wooden Bridge Bush (South)', 'Wooden Bridge Water Drop', 'Broken Bridge West Mirror Spot', 'Broken Bridge East Mirror Spot', 'Wooden Bridge NW', 'Wooden Bridge SW']), + create_lw_region(player, 'Wooden Bridge Northeast', None, ['Wooden Bridge Bush (North)', 'Wooden Bridge Northeast Water Drop', 'Broken Bridge Northeast Mirror Spot', 'Wooden Bridge NE']), create_lw_region(player, 'Wooden Bridge Water', None, ['Wooden Bridge NC']), - create_lw_region(player, 'Eastern Palace Area', None, ['Sahasrahlas Hut', 'Eastern Palace', 'Eastern Palace SW', 'Eastern Palace SE']), + create_lw_region(player, 'Eastern Palace Area', None, ['Sahasrahlas Hut', 'Eastern Palace', 'Palace of Darkness Mirror Spot', 'Eastern Palace SW', 'Eastern Palace SE']), create_lw_region(player, 'Eastern Cliff', None, ['Sand Dunes Ledge Drop', 'Stone Bridge East Ledge Drop', 'Tree Line Ledge Drop', 'Eastern Palace Ledge Drop']), - create_lw_region(player, 'Blacksmith Area', None, ['Blacksmiths Hut', 'Bat Cave Cave', 'Bat Cave Ledge Peg', 'Blacksmith WS']), + create_lw_region(player, 'Blacksmith Area', None, ['Blacksmiths Hut', 'Bat Cave Cave', 'Bat Cave Ledge Peg', 'Hammer Pegs Mirror Spot', 'Hammer Pegs Entry Mirror Spot', 'Blacksmith WS']), create_lw_region(player, 'Bat Cave Ledge', None, ['Bat Cave Drop']), - create_lw_region(player, 'Sand Dunes Area', None, ['Sand Dunes NW', 'Sand Dunes WN', 'Sand Dunes SC']), - create_lw_region(player, 'Maze Race Area', None, ['Maze Race ES']), - create_lw_region(player, 'Maze Race Ledge', None, ['Two Brothers House (West)', 'Maze Race Game']), + create_lw_region(player, 'Sand Dunes Area', None, ['Dark Dunes Mirror Spot', 'Sand Dunes NW', 'Sand Dunes WN', 'Sand Dunes SC']), + create_lw_region(player, 'Maze Race Area', None, ['Dig Game Mirror Spot', 'Maze Race ES']), + create_lw_region(player, 'Maze Race Ledge', None, ['Two Brothers House (West)', 'Maze Race Game', 'Dig Game Ledge Mirror Spot']), create_lw_region(player, 'Maze Race Prize', ['Maze Race'], ['Maze Race Ledge Drop']), #this is a separate region to make OWG item get possible without allowing the Entrance access - create_lw_region(player, 'Kakariko Suburb Area', None, ['Library', 'Two Brothers House (East)', 'Kakariko Gamble Game', 'Kakariko Suburb NE', 'Kakariko Suburb WS', 'Kakariko Suburb ES']), - create_lw_region(player, 'Flute Boy Area', ['Flute Spot'], ['Flute Boy SC']), - create_lw_region(player, 'Flute Boy Pass', None, ['Flute Boy WS', 'Flute Boy SW']), - create_lw_region(player, 'Central Bonk Rocks Area', None, ['Bonk Fairy (Light)', 'Central Bonk Rocks NW', 'Central Bonk Rocks SW', 'Central Bonk Rocks EN', 'Central Bonk Rocks EC', 'Central Bonk Rocks ES']), - create_lw_region(player, 'Links House Area', None, ['Links House', 'Links House NE', 'Links House WN', 'Links House WC', 'Links House WS', 'Links House SC', 'Links House ES', 'Flute Away']), - create_lw_region(player, 'Stone Bridge Area', None, ['Stone Bridge NC', 'Stone Bridge EN', 'Stone Bridge WS', 'Stone Bridge SC']), - create_lw_region(player, 'Stone Bridge Water', None, ['Stone Bridge WC', 'Stone Bridge EC']), + create_lw_region(player, 'Kakariko Suburb Area', None, ['Library', 'Two Brothers House (East)', 'Kakariko Gamble Game', 'Frog Mirror Spot', 'Frog Prison Mirror Spot', 'Archery Game Mirror Spot', 'Kakariko Suburb NE', 'Kakariko Suburb WS', 'Kakariko Suburb ES']), + create_lw_region(player, 'Flute Boy Area', ['Flute Spot'], ['Stumpy Mirror Spot', 'Flute Boy SC']), + create_lw_region(player, 'Flute Boy Pass', None, ['Stumpy Pass Mirror Spot', 'Flute Boy WS', 'Flute Boy SW']), + create_lw_region(player, 'Central Bonk Rocks Area', None, ['Bonk Fairy (Light)', 'Dark Bonk Rocks Mirror Spot', 'Central Bonk Rocks NW', 'Central Bonk Rocks SW', 'Central Bonk Rocks EN', 'Central Bonk Rocks EC', 'Central Bonk Rocks ES']), + create_lw_region(player, 'Links House Area', None, ['Links House', 'Big Bomb Shop Mirror Spot', 'Links House NE', 'Links House WN', 'Links House WC', 'Links House WS', 'Links House SC', 'Links House ES', 'Flute Away']), + create_lw_region(player, 'Stone Bridge Area', None, ['Hammer Bridge North Mirror Spot', 'Hammer Bridge South Mirror Spot', 'Stone Bridge NC', 'Stone Bridge EN', 'Stone Bridge WS', 'Stone Bridge SC']), + create_lw_region(player, 'Stone Bridge Water', None, ['Dark Hobo Mirror Spot', 'Stone Bridge WC', 'Stone Bridge EC']), create_lw_region(player, 'Hobo Bridge', ['Hobo'], ['Hobo EC']), create_lw_region(player, 'Central Cliffs', None, ['Central Bonk Rocks Cliff Ledge Drop', 'Links House Cliff Ledge Drop', 'Stone Bridge Cliff Ledge Drop', 'Lake Hylia Area Cliff Ledge Drop', 'Lake Hylia Island FAWT Ledge Drop', 'Stone Bridge EC Cliff Water Drop', 'Tree Line WC Cliff Water Drop', 'C Whirlpool Outer Cliff Ledge Drop', 'C Whirlpool Cliff Ledge Drop', 'South Teleporter Cliff Ledge Drop', 'Statues Cliff Ledge Drop']), - create_lw_region(player, 'Tree Line Area', None, ['Lake Hylia Fairy', 'Tree Line WN', 'Tree Line NW', 'Tree Line SE']), + create_lw_region(player, 'Tree Line Area', None, ['Lake Hylia Fairy', 'Dark Tree Line Mirror Spot', 'Tree Line WN', 'Tree Line NW', 'Tree Line SE']), create_lw_region(player, 'Tree Line Water', None, ['Tree Line WC', 'Tree Line SC']), - create_lw_region(player, 'Eastern Nook Area', None, ['Long Fairy Cave', 'East Hyrule Teleporter', 'Eastern Nook NE']), - create_lw_region(player, 'Desert Area', None, ['Aginahs Cave', 'Desert Palace Statue Move', 'Checkerboard Ledge Approach', 'Desert ES']), - create_lw_region(player, 'Desert Ledge', ['Desert Ledge'], ['Desert Palace Entrance (West)', 'Desert Ledge Outer Rocks', 'Desert Ledge Drop']), - create_lw_region(player, 'Desert Palace Entrance (North) Spot', None, ['Desert Palace Entrance (North)', 'Desert Ledge Inner Rocks']), - create_lw_region(player, 'Desert Checkerboard Ledge', None, ['Checkerboard Cave', 'Checkerboard Ledge Leave', 'Checkerboard Ledge Drop']), - create_lw_region(player, 'Desert Palace Stairs', None, ['Desert Palace Entrance (South)']), - create_lw_region(player, 'Desert Palace Mouth', None, ['Desert Palace Entrance (East)', 'Desert Mouth Drop']), + create_lw_region(player, 'Eastern Nook Area', None, ['Long Fairy Cave', 'Darkness Nook Mirror Spot', 'East Hyrule Teleporter', 'Eastern Nook NE']), + create_lw_region(player, 'Desert Area', None, ['Desert Palace Statue Move', 'Checkerboard Ledge Approach', 'Aginahs Cave', 'Misery Mire Mirror Spot', 'Desert ES']), + create_lw_region(player, 'Desert Ledge', ['Desert Ledge'], ['Desert Ledge Outer Rocks', 'Desert Ledge Drop', 'Desert Palace Entrance (West)', 'Misery Mire Ledge Mirror Spot']), + create_lw_region(player, 'Desert Palace Entrance (North) Spot', None, ['Desert Ledge Inner Rocks', 'Desert Palace Entrance (North)', 'Misery Mire Blocked Mirror Spot']), + create_lw_region(player, 'Desert Checkerboard Ledge', None, ['Checkerboard Ledge Leave', 'Checkerboard Ledge Drop', 'Checkerboard Cave']), + create_lw_region(player, 'Desert Palace Stairs', None, ['Desert Palace Entrance (South)', 'Misery Mire Main Mirror Spot']), + create_lw_region(player, 'Desert Palace Mouth', None, ['Desert Mouth Drop', 'Desert Palace Entrance (East)']), create_lw_region(player, 'Desert Palace Teleporter Ledge', None, ['Desert Teleporter Drop', 'Desert Teleporter']), create_lw_region(player, 'Desert Northeast Cliffs', None, ['Desert Boss Cliff Ledge Drop', 'Checkerboard Cliff Ledge Drop', 'Suburb Cliff Ledge Drop', 'Cave 45 Cliff Ledge Drop', 'Desert C Whirlpool Cliff Ledge Drop', 'Desert Pass Cliff Ledge Drop', 'Desert Pass Southeast Cliff Ledge Drop', 'Dam Cliff Ledge Drop']), create_lw_region(player, 'Bombos Tablet Ledge', ['Bombos Tablet'], ['Bombos Tablet Drop', 'Desert EC']), - create_lw_region(player, 'Flute Boy Approach Area', None, ['Flute Boy Bush (South)', 'Cave 45 Inverted Approach', 'Flute Boy Approach NW', 'Flute Boy Approach EC']), - create_lw_region(player, 'Flute Boy Bush Entry', None, ['Flute Boy Bush (North)', 'Flute Boy Approach NC']), - create_lw_region(player, 'Cave 45 Ledge', None, ['Cave 45', 'Cave 45 Inverted Leave', 'Cave 45 Ledge Drop']), - create_lw_region(player, 'C Whirlpool Area', None, ['C Whirlpool Rock (Bottom)', 'C Whirlpool Water Entry', 'South Hyrule Teleporter', 'C Whirlpool EN', 'C Whirlpool ES', 'C Whirlpool SC']), - create_lw_region(player, 'C Whirlpool Water', None, ['C Whirlpool Landing', 'C Whirlpool EC', 'C Whirlpool']), - create_lw_region(player, 'C Whirlpool Outer Area', None, ['C Whirlpool Rock (Top)', 'C Whirlpool WC', 'C Whirlpool NW']), - create_lw_region(player, 'Statues Area', None, ['Light Hype Fairy', 'Statues Water Entry', 'Statues NC', 'Statues WN', 'Statues WS', 'Statues SC']), + create_lw_region(player, 'Flute Boy Approach Area', None, ['Flute Boy Bush (South)', 'Cave 45 Inverted Approach', 'Stumpy Approach Mirror Spot', 'Flute Boy Approach NW', 'Flute Boy Approach EC']), + create_lw_region(player, 'Flute Boy Bush Entry', None, ['Flute Boy Bush (North)', 'Stumpy Bush Entry Mirror Spot', 'Flute Boy Approach NC']), + create_lw_region(player, 'Cave 45 Ledge', None, ['Cave 45 Inverted Leave', 'Cave 45 Ledge Drop', 'Cave 45']), + create_lw_region(player, 'C Whirlpool Area', None, ['C Whirlpool Rock (Bottom)', 'C Whirlpool Water Entry', 'Dark C Whirlpool Mirror Spot', 'South Hyrule Teleporter', 'C Whirlpool EN', 'C Whirlpool ES', 'C Whirlpool SC']), + create_lw_region(player, 'C Whirlpool Water', None, ['C Whirlpool Landing', 'C Whirlpool', 'C Whirlpool EC']), + create_lw_region(player, 'C Whirlpool Outer Area', None, ['C Whirlpool Rock (Top)', 'Dark C Whirlpool Outer Mirror Spot', 'C Whirlpool WC', 'C Whirlpool NW']), + create_lw_region(player, 'Statues Area', None, ['Statues Water Entry', 'Light Hype Fairy', 'Hype Cave Mirror Spot', 'Statues NC', 'Statues WN', 'Statues WS', 'Statues SC']), create_lw_region(player, 'Statues Water', None, ['Statues Landing', 'Statues WC']), - create_lw_region(player, 'Lake Hylia Area', None, ['Lake Hylia Fortune Teller', 'Cave Shop (Lake Hylia)', 'Lake Hylia Water Drop', 'Lake Hylia NW']), - create_lw_region(player, 'Lake Hylia South Shore', None, ['Mini Moldorm Cave', 'Lake Hylia South Water Drop', 'Lake Hylia WS', 'Lake Hylia ES']), - create_lw_region(player, 'Lake Hylia Northeast Bank', None, ['Lake Hylia Northeast Water Drop', 'Lake Hylia NE']), - create_lw_region(player, 'Lake Hylia Central Island', None, ['Capacity Upgrade', 'Lake Hylia Central Water Drop', 'Lake Hylia Teleporter']), + create_lw_region(player, 'Lake Hylia Area', None, ['Lake Hylia Water Drop', 'Lake Hylia Fortune Teller', 'Cave Shop (Lake Hylia)', 'Ice Lake Mirror Spot', 'Lake Hylia NW']), + create_lw_region(player, 'Lake Hylia South Shore', None, ['Lake Hylia South Water Drop', 'Mini Moldorm Cave', 'Ice Lake Southwest Mirror Spot', 'Ice Lake Southeast Mirror Spot', 'Lake Hylia WS', 'Lake Hylia ES']), + create_lw_region(player, 'Lake Hylia Northeast Bank', None, ['Lake Hylia Northeast Water Drop', 'Ice Lake Northeast Mirror Spot', 'Lake Hylia NE']), + create_lw_region(player, 'Lake Hylia Central Island', None, ['Lake Hylia Central Water Drop', 'Capacity Upgrade', 'Ice Palace Mirror Spot', 'Lake Hylia Teleporter']), create_lw_region(player, 'Lake Hylia Island', ['Lake Hylia Island'], ['Lake Hylia Island Water Drop']), create_lw_region(player, 'Lake Hylia Water', None, ['Lake Hylia Central Island Pier', 'Lake Hylia Island Pier', 'Lake Hylia West Pier', 'Lake Hylia East Pier', 'Lake Hylia NC', 'Lake Hylia EC', 'Lake Hylia Whirlpool']), - create_lw_region(player, 'Ice Cave Area', None, ['Ice Rod Cave', 'Good Bee Cave', '20 Rupee Cave', 'Ice Cave SE', 'Ice Cave SW']), - create_lw_region(player, 'Desert Pass Area', ['Purple Chest'], ['Desert Fairy', '50 Rupee Cave', 'Desert Pass Ladder (South)', 'Desert Pass WS', 'Desert Pass EC', 'Desert Pass Rocks (North)']), - create_lw_region(player, 'Desert Pass Southeast', None, ['Desert Pass Rocks (South)', 'Desert Pass ES']), - create_lw_region(player, 'Desert Pass Ledge', None, ['Desert Pass Ladder (North)', 'Desert Pass Ledge Drop', 'Desert Pass WC']), - create_lw_region(player, 'Dam Area', ['Sunken Treasure'], ['Dam', 'Dam WC', 'Dam WS', 'Dam NC', 'Dam EC']), - create_lw_region(player, 'South Pass Area', None, ['South Pass WC', 'South Pass NC', 'South Pass ES']), - create_lw_region(player, 'Octoballoon Area', None, ['Octoballoon Water Drop', 'Octoballoon WS', 'Octoballoon NE']), + create_lw_region(player, 'Ice Cave Area', None, ['Ice Rod Cave', 'Good Bee Cave', '20 Rupee Cave', 'Shopping Mall Mirror Spot', 'Ice Cave SE', 'Ice Cave SW']), + create_lw_region(player, 'Desert Pass Area', ['Purple Chest'], ['Desert Pass Ladder (South)', 'Desert Fairy', '50 Rupee Cave', 'Swmap Nook Mirror Spot', 'Desert Pass WS', 'Desert Pass EC', 'Desert Pass Rocks (North)']), + create_lw_region(player, 'Desert Pass Southeast', None, ['Desert Pass Rocks (South)', 'Swamp Nook Southeast Mirror Spot', 'Desert Pass ES']), + create_lw_region(player, 'Desert Pass Ledge', None, ['Desert Pass Ladder (North)', 'Desert Pass Ledge Drop', 'Swamp Nook Pegs Mirror Spot', 'Desert Pass WC']), + create_lw_region(player, 'Dam Area', ['Sunken Treasure'], ['Dam', 'Swamp Mirror Spot', 'Dam WC', 'Dam WS', 'Dam NC', 'Dam EC']), + create_lw_region(player, 'South Pass Area', None, ['Dark South Pass Mirror Spot', 'South Pass WC', 'South Pass NC', 'South Pass ES']), + create_lw_region(player, 'Octoballoon Area', None, ['Octoballoon Water Drop', 'Bomber Corner Mirror Spot', 'Octoballoon WS', 'Octoballoon NE']), create_lw_region(player, 'Octoballoon Water', None, ['Octoballoon Pier', 'Octoballoon WC', 'Octoballoon Whirlpool']), create_lw_region(player, 'Octoballoon Water Ledge', None, ['Octoballoon Waterfall Water Drop', 'Octoballoon NW']), - create_dw_region(player, 'Skull Woods Forest', None, ['Skull Woods First Section Hole (East)', 'Skull Woods First Section Hole (West)', 'Skull Woods First Section Hole (North)', - 'Skull Woods First Section Door', 'Skull Woods Second Section Door (East)', 'Skull Woods Bush Rock (East)', 'Lost Woods East Mirror Spot', 'Skull Woods SE']), + create_dw_region(player, 'Skull Woods Forest', None, ['Skull Woods Bush Rock (East)', 'Skull Woods First Section Hole (East)', 'Skull Woods First Section Hole (West)', 'Skull Woods First Section Hole (North)', + 'Skull Woods First Section Door', 'Skull Woods Second Section Door (East)', 'Lost Woods East Mirror Spot', 'Skull Woods SE']), create_dw_region(player, 'Skull Woods Portal Entry', None, ['Skull Woods Bush Rock (West)', 'Lost Woods Entry Mirror Spot', 'Skull Woods SC']), create_dw_region(player, 'Skull Woods Forest (West)', None, ['Skull Woods Second Section Hole', 'Skull Woods Second Section Door (West)', 'Skull Woods Final Section', 'Lost Woods Pedestal Mirror Spot']), create_dw_region(player, 'Skull Woods Forgotten Path (Southwest)', None, ['Skull Woods Forgotten Bush (West)', 'Lost Woods Southwest Mirror Spot', 'Skull Woods SW']), create_dw_region(player, 'Skull Woods Forgotten Path (Northeast)', None, ['Skull Woods Forgotten Bush (East)', 'Lost Woods East (Forgotten) Mirror Spot', 'Lost Woods West (Forgotten) Mirror Spot', 'Skull Woods EN']), create_dw_region(player, 'Dark Lumberjack Area', None, ['Dark World Lumberjack Shop', 'Lumberjack Mirror Spot', 'Dark Lumberjack WN', 'Dark Lumberjack SW']), create_dw_region(player, 'West Dark Death Mountain (Top)', None, ['Dark Death Mountain Drop (West)', 'GT Entry Approach', 'Dark Death Mountain Ladder (North)', 'West Death Mountain (Top) Mirror Spot', 'West Dark Death Mountain EN']), - create_dw_region(player, 'GT Approach', None, ['GT Entry Leave', 'Ganons Tower', 'Inverted Agahnims Tower']), + create_dw_region(player, 'GT Approach', None, ['GT Entry Leave', 'Ganons Tower']), create_dw_region(player, 'West Dark Death Mountain (Bottom)', None, ['Dark Death Mountain Ladder (South)', 'Spike Cave', 'Dark Death Mountain Fairy', 'Dark Death Mountain Teleporter (West)', 'Spectacle Rock Mirror Spot', 'West Dark Death Mountain ES']), create_dw_region(player, 'East Dark Death Mountain (Top)', None, ['Dark Death Mountain Drop (East)', 'Superbunny Cave (Top)', 'Hookshot Cave', 'East Death Mountain (Top West) Mirror Spot', 'East Death Mountain (Top East) Mirror Spot', 'East Dark Death Mountain WN', 'East Dark Death Mountain EN']), create_dw_region(player, 'East Dark Death Mountain (Bottom)', None, ['Superbunny Cave (Bottom)', 'Cave Shop (Dark Death Mountain)', 'Dark Death Mountain Teleporter (East)', 'Fairy Ascension Mirror Spot']), @@ -137,30 +138,31 @@ def create_regions(world, player): create_dw_region(player, 'Turtle Rock Area', None, ['Turtle Rock Tail Ledge Drop', 'Turtle Rock', 'TR Pegs Area Mirror Spot', 'Turtle Rock WN']), create_dw_region(player, 'Turtle Rock Ledge', None, ['Turtle Rock Ledge Drop', 'Turtle Rock Teleporter']), create_dw_region(player, 'Bumper Cave Area', None, ['Bumper Cave Entrance Rock', 'Mountain Entry Mirror Spot', 'Bumper Cave NW', 'Bumper Cave SE']), - create_dw_region(player, 'Bumper Cave Entrance', None, ['Bumper Cave (Bottom)', 'Mountain Entry Entrance Mirror Spot', 'Bumper Cave Ledge Drop']), - create_dw_region(player, 'Bumper Cave Ledge', ['Bumper Cave Ledge'], ['Bumper Cave (Top)', 'Mountain Entry Ledge Mirror Spot', 'Bumper Cave Entrance Drop']), + create_dw_region(player, 'Bumper Cave Entrance', None, ['Bumper Cave Ledge Drop', 'Bumper Cave (Bottom)', 'Mountain Entry Entrance Mirror Spot']), + create_dw_region(player, 'Bumper Cave Ledge', ['Bumper Cave Ledge'], ['Bumper Cave Entrance Drop', 'Bumper Cave (Top)', 'Mountain Entry Ledge Mirror Spot']), create_dw_region(player, 'Catfish Area', ['Catfish'], ['Zora Waterfall Mirror Spot', 'Catfish SE']), create_dw_region(player, 'Skull Woods Pass West Area', None, ['Skull Woods Pass Bush Row (West)', 'Lost Woods Pass West Mirror Spot', 'Skull Woods Pass NW', 'Skull Woods Pass SW']), create_dw_region(player, 'Skull Woods Pass East Top Area', None, ['Skull Woods Pass Bush Row (East)', 'Skull Woods Pass Rock (Top)', 'West Dark World Teleporter (Hammer)', 'West Dark World Teleporter (Rock)', 'Lost Woods Pass East Top Mirror Spot', 'Skull Woods Pass NE']), - create_dw_region(player, 'Skull Woods Pass East Bottom Area', None, ['Skull Woods Pass Rock (Bottom)', 'Lost Woods East Bottom Mirror Spot', 'Skull Woods Pass SE']), + create_dw_region(player, 'Skull Woods Pass East Bottom Area', None, ['Skull Woods Pass Rock (Bottom)', 'Lost Woods Pass East Bottom Mirror Spot', 'Skull Woods Pass SE']), create_dw_region(player, 'Dark Fortune Area', None, ['Fortune Teller (Dark)', 'Kakariko Fortune Mirror Spot', 'Dark Fortune NE', 'Dark Fortune EN', 'Dark Fortune ES', 'Dark Fortune SC']), create_dw_region(player, 'Outcast Pond Area', None, ['Kakariko Pond Mirror Spot', 'Outcast Pond NE', 'Outcast Pond WN', 'Outcast Pond WS', 'Outcast Pond SW', 'Outcast Pond SE', 'Outcast Pond EN', 'Outcast Pond ES']), create_dw_region(player, 'Dark Chapel Area', None, ['Dark Sanctuary Hint', 'Bonk Rock Ledge Mirror Spot', 'Dark Chapel WN', 'Dark Chapel WS', 'Dark Chapel EC']), create_dw_region(player, 'Dark Graveyard Area', None, ['Graveyard Ledge Mirror Spot', 'Kings Grave Mirror Spot', 'Dark Graveyard WC', 'Dark Graveyard ES']), create_dw_region(player, 'Qirn Jump Area', None, ['Qirn Jump Water Drop', 'River Bend Mirror Spot', 'Qirn Jump WC', 'Qirn Jump SW']), create_dw_region(player, 'Qirn Jump East Bank', None, ['Qirn Jump East Water Drop', 'River Bend East Mirror Spot', 'Qirn Jump SE', 'Qirn Jump EC', 'Qirn Jump ES']), - create_dw_region(player, 'Qirn Jump Water', None, ['Qirn Jump Pier', 'Qirn Jump EN', 'Qirn Jump SC', 'Qirn Jump Whirlpool']), - create_dw_region(player, 'Dark Witch Area', None, ['Dark World Potion Shop', 'Dark Witch Water Drop', 'Potion Shop Mirror Spot', 'Dark Witch Rock (South)', 'Dark Witch WC', 'Dark Witch WS']), + create_dw_region(player, 'Qirn Jump Water', None, ['Qirn Jump Pier', 'Qirn Jump Whirlpool', 'Qirn Jump EN', 'Qirn Jump SC']), + create_dw_region(player, 'Dark Witch Area', None, ['Dark Witch Water Drop', 'Dark Witch Rock (South)', 'Dark World Potion Shop', 'Potion Shop Mirror Spot', 'Dark Witch WC', 'Dark Witch WS']), create_dw_region(player, 'Dark Witch Northeast', None, ['Dark Witch Northeast Water Drop', 'Dark Witch Rock (North)', 'Potion Shop Northeast Mirror Spot', 'Dark Witch EC']), create_dw_region(player, 'Dark Witch Water', None, ['Dark Witch WN', 'Dark Witch EN']), - create_dw_region(player, 'Catfish Approach Area', None, ['Catfish Approach Water Drop', 'Zora Approach Mirror Spot', 'Catfish Approach WC', 'Catfish Approach NE']), + create_dw_region(player, 'Catfish Approach Area', None, ['Catfish Approach Rocks (West)', 'Catfish Approach Bottom Ledge Drop', 'Catfish Approach Water Drop', 'Zora Approach Mirror Spot', 'Catfish Approach WC']), + create_dw_region(player, 'Catfish Approach Ledge', None, ['Catfish Approach Rocks (East)', 'Catfish Approach Ledge Drop', 'Zora Approach Ledge Mirror Spot', 'Catfish Approach NE']), create_dw_region(player, 'Catfish Approach Water', None, ['Catfish Approach WN']), - create_dw_region(player, 'Village of Outcasts Area', None, ['Chest Game', 'Thieves Town', 'C-Shaped House', 'Brewery', 'Village of Outcasts Pegs', 'Kakariko Mirror Spot', 'Village of Outcasts NW', 'Village of Outcasts NC', 'Village of Outcasts NE', 'Village of Outcasts ES', 'Village of Outcasts SE']), - create_dw_region(player, 'Dark Grassy Lawn', None, ['Dark World Shop', 'Kakariko Grass Mirror Spot', 'Grassy Lawn Pegs']), + create_dw_region(player, 'Village of Outcasts Area', None, ['Village of Outcasts Pegs', 'Chest Game', 'Thieves Town', 'C-Shaped House', 'Brewery', 'Kakariko Mirror Spot', 'Village of Outcasts NW', 'Village of Outcasts NC', 'Village of Outcasts NE', 'Village of Outcasts ES', 'Village of Outcasts SE']), + create_dw_region(player, 'Dark Grassy Lawn', None, ['Grassy Lawn Pegs', 'Dark World Shop', 'Kakariko Grass Mirror Spot']), create_dw_region(player, 'Shield Shop Area', None, ['Shield Shop Fence (Outer) Ledge Drop', 'Forgotton Forest Mirror Spot', 'Shield Shop NW', 'Shield Shop NE']), create_dw_region(player, 'Shield Shop Fence', None, ['Shield Shop Fence (Inner) Ledge Drop', 'Red Shield Shop', 'Forgotton Forest Fence Mirror Spot']), create_dw_region(player, 'Pyramid Area', ['Pyramid'], ['Pyramid Fairy', 'Pyramid Hole', 'HC Ledge Mirror Spot', 'HC Courtyard Mirror Spot', 'HC Area Mirror Spot', 'HC East Entry Mirror Spot', 'Pyramid ES']), - create_dw_region(player, 'Pyramid Exit Ledge', None, ['Pyramid Entrance', 'Pyramid Exit Ledge Drop']), + create_dw_region(player, 'Pyramid Exit Ledge', None, ['Pyramid Exit Ledge Drop', 'Pyramid Entrance']), create_dw_region(player, 'Pyramid Pass', None, ['Post Aga Inverted Teleporter', 'HC Area South Mirror Spot', 'Pyramid SW', 'Pyramid SE']), create_dw_region(player, 'Broken Bridge Area', None, ['Broken Bridge Hammer Rock (South)', 'Broken Bridge Water Drop', 'Wooden Bridge Mirror Spot', 'Broken Bridge SW']), create_dw_region(player, 'Broken Bridge Northeast', None, ['Broken Bridge Hammer Rock (North)', 'Broken Bridge Hookshot Gap', 'Broken Bridge Northeast Water Drop', 'Wooden Bridge Northeast Mirror Spot', 'Broken Bridge NE']), @@ -169,12 +171,13 @@ def create_regions(world, player): create_dw_region(player, 'Palace of Darkness Area', None, ['Palace of Darkness Hint', 'Palace of Darkness', 'Eastern Palace Mirror Spot', 'Palace of Darkness SW', 'Palace of Darkness SE']), create_dw_region(player, 'Darkness Cliff', None, ['Dark Dunes Ledge Drop', 'Hammer Bridge North Ledge Drop', 'Dark Tree Line Ledge Drop', 'Palace of Darkness Ledge Drop']), create_dw_region(player, 'Hammer Peg Entry', None, ['Peg Area Rocks (West)', 'Blacksmith Entry Mirror Spot', 'Hammer Pegs WS']), - create_dw_region(player, 'Hammer Peg Area', ['Dark Blacksmith Ruins'], ['Dark World Hammer Peg Cave', 'Blacksmith Mirror Spot', 'Bat Cave Ledge Mirror Spot', 'Peg Area Rocks (East)']), + create_dw_region(player, 'Hammer Peg Area', ['Dark Blacksmith Ruins'], ['Peg Area Rocks (East)', 'Dark World Hammer Peg Cave', 'Blacksmith Mirror Spot', 'Bat Cave Ledge Mirror Spot']), create_dw_region(player, 'Dark Dunes Area', None, ['Sand Dunes Mirror Spot', 'Dark Dunes NW', 'Dark Dunes WN', 'Dark Dunes SC']), create_dw_region(player, 'Dig Game Area', ['Digging Game'], ['Dig Game To Ledge Drop', 'Maze Race Mirror Spot', 'Dig Game ES']), - create_dw_region(player, 'Dig Game Ledge', None, ['Maze Race Ledge Mirror Spot', 'Dig Game Ledge Drop', 'Dig Game EC']), - create_dw_region(player, 'Frog Area', ['Frog'], ['Frog Ledge Drop', 'Kakariko Suburb Mirror Spot', 'Frog NE']), - create_dw_region(player, 'Archery Game Area', None, ['Archery Game', 'Archery Game Rock', 'Kakariko Suburb South Mirror Spot', 'Frog WC', 'Frog WS', 'Frog ES']), + create_dw_region(player, 'Dig Game Ledge', None, ['Dig Game Ledge Drop', 'Maze Race Ledge Mirror Spot', 'Dig Game EC']), + create_dw_region(player, 'Frog Area', None, ['Frog Ledge Drop', 'Frog Rock (Outer)', 'Archery Game Rock (North)', 'Kakariko Suburb Mirror Spot', 'Frog NE']), + create_dw_region(player, 'Frog Prison', ['Frog'], ['Frog Rock (Inner)']), + create_dw_region(player, 'Archery Game Area', None, ['Archery Game Rock (South)', 'Archery Game', 'Kakariko Suburb South Mirror Spot', 'Frog WC', 'Frog WS', 'Frog ES']), create_dw_region(player, 'Stumpy Area', ['Stumpy'], ['Flute Boy Mirror Spot', 'Stumpy SC']), create_dw_region(player, 'Stumpy Pass', None, ['Flute Boy Pass Mirror Spot', 'Stumpy WS', 'Stumpy SW']), create_dw_region(player, 'Dark Bonk Rocks Area', None, ['Bonk Fairy (Dark)', 'Central Bonk Rocks Mirror Spot', 'Dark Bonk Rocks NW', 'Dark Bonk Rocks SW', 'Dark Bonk Rocks EN', 'Dark Bonk Rocks EC', 'Dark Bonk Rocks ES']), @@ -187,7 +190,7 @@ def create_regions(world, player): create_dw_region(player, 'Dark Tree Line Area', None, ['Dark Lake Hylia Fairy', 'Tree Line Mirror Spot', 'Dark Tree Line WN', 'Dark Tree Line NW', 'Dark Tree Line SE']), create_dw_region(player, 'Dark Tree Line Water', None, ['Dark Tree Line WC', 'Dark Tree Line SC']), create_dw_region(player, 'Palace of Darkness Nook Area', None, ['East Dark World Hint', 'East Dark World Teleporter', 'Eastern Nook Mirror Spot', 'Palace of Darkness Nook NE']), - create_dw_region(player, 'Misery Mire Area', None, ['Mire Shed', 'Misery Mire', 'Dark Desert Fairy', 'Dark Desert Hint', 'Desert Ledge Mirror Spot', 'Checkerboard Mirror Spot', 'DP Stairs Mirror Spot', 'DP Entrance (North) Mirror Spot']), + create_dw_region(player, 'Misery Mire Area', None, ['Mire Shed', 'Misery Mire', 'Dark Desert Fairy', 'Dark Desert Hint', 'Desert Mirror Spot', 'Desert Ledge Mirror Spot', 'Checkerboard Mirror Spot', 'DP Stairs Mirror Spot', 'DP Entrance (North) Mirror Spot']), create_dw_region(player, 'Misery Mire Teleporter Ledge', None, ['Misery Mire Teleporter Ledge Drop', 'Misery Mire Teleporter']), create_dw_region(player, 'Mire Northeast Cliffs', None, ['Mire Cliff Ledge Drop', 'Archery Game Cliff Ledge Drop', 'Stumpy Approach Cliff Ledge Drop', 'Mire C Whirlpool Cliff Ledge Drop', 'Swamp Nook Cliff Ledge Drop', 'Swamp Cliff Ledge Drop', 'Bombos Tablet Ledge Mirror Spot']), create_dw_region(player, 'Stumpy Approach Area', None, ['Stumpy Approach Bush (South)', 'Cave 45 Mirror Spot', 'Stumpy Approach NW', 'Stumpy Approach EC']), @@ -195,16 +198,16 @@ def create_regions(world, player): create_dw_region(player, 'Dark C Whirlpool Area', None, ['Dark C Whirlpool Rock (Bottom)', 'South Dark World Teleporter', 'C Whirlpool Mirror Spot', 'Dark C Whirlpool Water Entry', 'Dark C Whirlpool EN', 'Dark C Whirlpool ES', 'Dark C Whirlpool SC']), create_dw_region(player, 'Dark C Whirlpool Water', None, ['Dark C Whirlpool Landing', 'Dark C Whirlpool EC']), create_dw_region(player, 'Dark C Whirlpool Outer Area', None, ['Dark C Whirlpool Rock (Top)', 'C Whirlpool Outer Mirror Spot', 'Dark C Whirlpool WC', 'Dark C Whirlpool NW']), - create_dw_region(player, 'Hype Cave Area', None, ['Hype Cave', 'Statues Mirror Spot', 'Hype Cave Water Entry', 'Hype Cave NC', 'Hype Cave WN', 'Hype Cave WS', 'Hype Cave SC']), + create_dw_region(player, 'Hype Cave Area', None, ['Hype Cave Water Entry', 'Hype Cave', 'Statues Mirror Spot', 'Hype Cave NC', 'Hype Cave WN', 'Hype Cave WS', 'Hype Cave SC']), create_dw_region(player, 'Hype Cave Water', None, ['Hype Cave Landing', 'Hype Cave WC']), - create_dw_region(player, 'Ice Lake Area', None, ['Dark Lake Hylia Shop', 'Ice Lake Water Drop', 'Lake Hylia Mirror Spot', 'Ice Lake NW']), + create_dw_region(player, 'Ice Lake Area', None, ['Ice Lake Water Drop', 'Dark Lake Hylia Shop', 'Lake Hylia Mirror Spot', 'Ice Lake NW']), create_dw_region(player, 'Ice Lake Northeast Bank', None, ['Ice Lake Northeast Water Drop', 'Lake Hylia Northeast Mirror Spot', 'Ice Lake NE']), create_dw_region(player, 'Ice Lake Ledge (West)', None, ['Ice Lake Southwest Water Drop', 'South Shore Mirror Spot', 'Ice Lake WS']), create_dw_region(player, 'Ice Lake Ledge (East)', None, ['Ice Lake Southeast Water Drop', 'South Shore East Mirror Spot', 'Ice Lake ES']), create_dw_region(player, 'Ice Lake Water', None, ['Ice Lake Northeast Pier', 'Lake Hylia Island Mirror Spot', 'Ice Lake NC', 'Ice Lake EC']), - create_dw_region(player, 'Ice Lake Moat', None, ['Ice Lake Moat Water Drop', 'Ice Lake Northeast Pier Bomb Jump', 'Ice Palace Approach', 'Lake Hylia Water Mirror Spot']), + create_dw_region(player, 'Ice Lake Moat', None, ['Ice Lake Moat Water Entry', 'Ice Lake Northeast Pier Bomb Jump', 'Ice Palace Approach', 'Lake Hylia Water Mirror Spot']), create_dw_region(player, 'Ice Palace Area', None, ['Ice Palace Leave', 'Ice Palace', 'Ice Palace Teleporter', 'Lake Hylia Central Island Mirror Spot']), - create_dw_region(player, 'Shopping Mall Area', None, ['Dark Lake Hylia Ledge Fairy', 'Dark Lake Hylia Ledge Hint', 'Dark Lake Hylia Ledge Spike Cave', 'Ice Cave Mirror Spot', 'Shopping Mall SE', 'Shopping Mall SW']), + create_dw_region(player, 'Shopping Mall Area', None, ['Dark Lake Hylia Ledge Fairy', 'Dark Lake Hylia Ledge Hint', 'Dark Lake Hylia Ledge Spike Cave', 'Ice Cave Mirror Spot', 'Shopping Mall SW', 'Shopping Mall SE']), create_dw_region(player, 'Swamp Nook Area', None, ['Desert Pass Ledge Mirror Spot', 'Desert Pass Mirror Spot', 'Swamp Nook EC', 'Swamp Nook ES']), create_dw_region(player, 'Swamp Area', None, ['Swamp Palace', 'Dam Mirror Spot', 'Swamp WC', 'Swamp WS', 'Swamp NC', 'Swamp EC']), create_dw_region(player, 'Dark South Pass Area', None, ['South Pass Mirror Spot', 'Dark South Pass WC', 'Dark South Pass NC', 'Dark South Pass ES']), @@ -343,7 +346,7 @@ def create_dungeon_regions(world, player): create_dungeon_region(player, 'Desert East Portal', 'Desert Palace', None, ['Desert Palace Exit (East)', 'Enter Desert (East)']), create_dungeon_region(player, 'Desert Back Portal', 'Desert Palace', None, ['Desert Palace Exit (North)', 'Enter Desert (North)']), create_dungeon_region(player, 'Hera Portal', 'Tower of Hera', None, ['Tower of Hera Exit', 'Enter Hera']), - create_dungeon_region(player, 'Agahnims Tower Portal', 'Castle Tower', None, [inv_flag and 'Inverted Agahnims Tower Exit' or 'Agahnims Tower Exit', 'Enter Agahnims Tower']), + create_dungeon_region(player, 'Agahnims Tower Portal', 'Castle Tower', None, ['Agahnims Tower Exit', 'Enter Agahnims Tower']), create_dungeon_region(player, 'Palace of Darkness Portal', 'Palace of Darkness', None, ['Palace of Darkness Exit', 'Enter Palace of Darkness']), create_dungeon_region(player, 'Swamp Portal', 'Swamp Palace', None, ['Swamp Palace Exit', 'Enter Swamp']), create_dungeon_region(player, 'Skull 1 Portal', 'Skull Woods', None, ['Skull Woods First Section Exit', 'Enter Skull Woods 1']), @@ -357,7 +360,7 @@ def create_dungeon_regions(world, player): create_dungeon_region(player, 'Turtle Rock Lazy Eyes Portal', 'Turtle Rock', None, ['Turtle Rock Ledge Exit (West)', 'Enter Turtle Rock (Lazy Eyes)']), create_dungeon_region(player, 'Turtle Rock Chest Portal', 'Turtle Rock', None, ['Turtle Rock Ledge Exit (East)', 'Enter Turtle Rock (Chest)']), create_dungeon_region(player, 'Turtle Rock Eye Bridge Portal', 'Turtle Rock', None, ['Turtle Rock Isolated Ledge Exit', 'Enter Turtle Rock (Laser Bridge)']), - create_dungeon_region(player, 'Ganons Tower Portal', "Ganon's Tower", None, [inv_flag and 'Inverted Ganons Tower Exit' or 'Ganons Tower Exit', 'Enter Ganons Tower']), + create_dungeon_region(player, 'Ganons Tower Portal', "Ganon's Tower", None, ['Ganons Tower Exit', 'Enter Ganons Tower']), create_dungeon_region(player, 'Hyrule Castle Lobby', 'Hyrule Castle', None, ['Hyrule Castle Lobby W', 'Hyrule Castle Lobby E', 'Hyrule Castle Lobby WN', 'Hyrule Castle Lobby North Stairs', 'Hyrule Castle Lobby S']), diff --git a/Rom.py b/Rom.py index 3a406528..5458fd98 100644 --- a/Rom.py +++ b/Rom.py @@ -1892,7 +1892,7 @@ def write_strings(rom, world, player, team): entrances_to_hint.update(InconvenientDungeonEntrances) if world.shuffle_ganon: if world.mode[player] == 'inverted': - entrances_to_hint.update({'Inverted Ganons Tower': 'The sealed castle door'}) + entrances_to_hint.update({'Agahnims Tower': 'The sealed castle door'}) else: entrances_to_hint.update({'Ganons Tower': 'Ganon\'s Tower'}) if world.shuffle[player] in ['simple', 'restricted', 'restricted_legacy']: @@ -1925,19 +1925,14 @@ def write_strings(rom, world, player, team): entrances_to_hint.update(ConnectorEntrances) entrances_to_hint.update(DungeonEntrances) if world.mode[player] == 'inverted': - entrances_to_hint.update({'Inverted Agahnims Tower': 'The dark mountain tower'}) + entrances_to_hint.update({'Ganons Tower': 'The dark mountain tower'}) else: entrances_to_hint.update({'Agahnims Tower': 'The sealed castle door'}) elif world.shuffle[player] == 'restricted': entrances_to_hint.update(ConnectorEntrances) entrances_to_hint.update(OtherEntrances) - if world.mode[player] == 'inverted': - entrances_to_hint.update({'Inverted Dark Sanctuary': 'The dark sanctuary cave'}) - entrances_to_hint.update({'Inverted Big Bomb Shop': 'The old hero\'s dark home'}) - entrances_to_hint.update({'Inverted Links House': 'The old hero\'s light home'}) - else: - entrances_to_hint.update({'Dark Sanctuary Hint': 'The dark sanctuary cave'}) - entrances_to_hint.update({'Big Bomb Shop': 'The old bomb shop'}) + entrances_to_hint.update({'Dark Sanctuary Hint': 'The dark sanctuary cave'}) + entrances_to_hint.update({'Big Bomb Shop': 'The old bomb shop'}) if world.shuffle[player] in ['insanity', 'madness_legacy', 'insanity_legacy']: entrances_to_hint.update(InsanityEntrances) if world.shuffle_ganon: @@ -2383,7 +2378,7 @@ def set_inverted_mode(world, player, rom): rom.write_bytes(snes_to_pc(0x06B2AB), [0xF0, 0xE1, 0x05]) def patch_shuffled_dark_sanc(world, rom, player): - dark_sanc = world.get_region('Inverted Dark Sanctuary', player) + dark_sanc = world.get_region('Dark Sanctuary Hint', player) dark_sanc_entrance = str([i for i in dark_sanc.entrances if i.parent_region.name != 'Menu'][0].name) room_id, ow_area, vram_loc, scroll_y, scroll_x, link_y, link_x, camera_y, camera_x, unknown_1, unknown_2, door_1, door_2 = door_addresses[dark_sanc_entrance][1] door_index = door_addresses[str(dark_sanc_entrance)][0] diff --git a/Rules.py b/Rules.py index 2399b3d4..825e1e3d 100644 --- a/Rules.py +++ b/Rules.py @@ -18,16 +18,19 @@ def set_rules(world, player): return global_rules(world, player) - if world.mode[player] != 'inverted': - default_rules(world, player) + default_rules(world, player) - if world.mode[player] == 'open': - open_rules(world, player) - elif world.mode[player] == 'standard': + if world.mode[player] != 'inverted': + ow_open_rules(world, player) + else: + ow_inverted_rules(world, player) + + ow_bunny_rules(world, player) + + if world.mode[player] == 'standard': standard_rules(world, player) - elif world.mode[player] == 'inverted': + elif world.mode[player] == 'open' or world.mode[player] == 'inverted': open_rules(world, player) - inverted_rules(world, player) else: raise NotImplementedError('Not implemented yet') @@ -712,112 +715,57 @@ def default_rules(world, player): set_rule(world.get_entrance('Superbunny Cave Exit (Bottom)', player), lambda state: False) # Cannot get to bottom exit from top. Just exists for shuffling # Item Access - set_rule(world.get_location('Potion Shop', player), lambda state: state.has('Mushroom', player)) set_rule(world.get_location('Zora\'s Ledge', player), lambda state: state.has('Flippers', player)) + set_rule(world.get_location('Potion Shop', player), lambda state: state.has('Mushroom', player)) set_rule(world.get_location('Flute Spot', player), lambda state: state.has('Shovel', player)) set_rule(world.get_location('Bombos Tablet', player), lambda state: state.has('Book of Mudora', player) and state.has_beam_sword(player)) - set_rule(world.get_location('Frog', player), lambda state: state.can_lift_heavy_rocks(player)) # will get automatic moon pearl requirement - add_bunny_rule(world.get_location('Mushroom', player), player) - add_bunny_rule(world.get_location('Zora\'s Ledge', player), player) - add_bunny_rule(world.get_location('Maze Race', player), player) - add_bunny_rule(world.get_location('Flute Spot', player), player) - add_bunny_rule(world.get_location('Frog', player), player) - add_bunny_rule(world.get_location('Catfish', player), player) + set_rule(world.get_location('Frog', player), lambda state: state.can_reach('Blacksmith', 'Location', player)) # Entrance Access set_rule(world.get_entrance('Lumberjack Tree Tree', player), lambda state: state.has_Boots(player) and state.has('Beat Agahnim 1', player)) set_rule(world.get_entrance('Bonk Rock Cave', player), lambda state: state.has_Boots(player)) set_rule(world.get_entrance('Sanctuary Grave', player), lambda state: state.can_lift_rocks(player)) set_rule(world.get_entrance('Kings Grave', player), lambda state: state.has_Boots(player)) - set_rule(world.get_entrance('Waterfall of Wishing', player), lambda state: state.has('Flippers', player)) # can be fake flippered into, but is in weird state inside that might prevent you from doing things. Can be improved in future Todo - set_rule(world.get_entrance('Agahnims Tower', player), lambda state: state.has('Cape', player) or state.has_beam_sword(player)) - set_rule(world.get_entrance('Inverted Pyramid Hole', player), lambda state: state.has('Beat Agahnim 2', player) or world.open_pyramid[player]) - add_rule(world.get_entrance('Inverted Pyramid Hole', player), lambda state: state.world.mode[player] == 'inverted') - set_rule(world.get_entrance('Inverted Pyramid Entrance', player), lambda state: state.world.mode[player] == 'inverted') set_rule(world.get_entrance('Bonk Fairy (Light)', player), lambda state: state.has_Boots(player)) set_rule(world.get_entrance('Checkerboard Cave', player), lambda state: state.can_lift_rocks(player)) set_rule(world.get_entrance('50 Rupee Cave', player), lambda state: state.can_lift_rocks(player)) set_rule(world.get_entrance('20 Rupee Cave', player), lambda state: state.can_lift_rocks(player)) set_rule(world.get_entrance('Skull Woods Final Section', player), lambda state: state.has('Fire Rod', player)) + set_rule(world.get_entrance('Hookshot Cave', player), lambda state: state.can_lift_rocks(player)) + set_rule(world.get_entrance('Turtle Rock', player), lambda state: state.has_sword(player) and state.has_turtle_rock_medallion(player) and state.can_reach('Turtle Rock Ledge', 'Region', player)) # sword required to cast magic (!) set_rule(world.get_entrance('Dark World Hammer Peg Cave', player), lambda state: state.has('Hammer', player)) - set_rule(world.get_entrance('Pyramid Hole', player), lambda state: state.has('Beat Agahnim 2', player) or world.open_pyramid[player]) - add_rule(world.get_entrance('Pyramid Hole', player), lambda state: state.world.mode[player] != 'inverted') - set_rule(world.get_entrance('Pyramid Entrance', player), lambda state: state.world.mode[player] != 'inverted') set_rule(world.get_entrance('Bonk Fairy (Dark)', player), lambda state: state.has_Boots(player)) set_rule(world.get_entrance('Misery Mire', player), lambda state: state.has_sword(player) and state.has_misery_mire_medallion(player)) # sword required to cast magic (!) set_rule(world.get_entrance('Dark Lake Hylia Ledge Spike Cave', player), lambda state: state.can_lift_rocks(player)) - set_rule(world.get_entrance('Hookshot Cave', player), lambda state: state.can_lift_rocks(player)) - set_rule(world.get_entrance('Turtle Rock', player), lambda state: state.has_sword(player) and state.has_turtle_rock_medallion(player) and state.can_reach('Turtle Rock Ledge', 'Region', player)) # sword required to cast magic (!) - add_bunny_rule(world.get_entrance('Lost Woods Hideout Drop', player), player) - add_bunny_rule(world.get_entrance('Lumberjack Tree Tree', player), player) - add_bunny_rule(world.get_entrance('Waterfall of Wishing', player), player) - add_bunny_rule(world.get_entrance('Bonk Rock Cave', player), player) - add_bunny_rule(world.get_entrance('Sanctuary Grave', player), player) - add_bunny_rule(world.get_entrance('Kings Grave', player), player) - add_bunny_rule(world.get_entrance('North Fairy Cave Drop', player), player) - add_bunny_rule(world.get_entrance('Hyrule Castle Secret Entrance Drop', player), player) - add_bunny_rule(world.get_entrance('Agahnims Tower', player), player) - add_rule(world.get_entrance('Agahnims Tower', player), lambda state: state.has('Beat Agahnim 1', player), 'or') # barrier gets removed after killing agahnim, relevant for entrance shuffle - add_rule(world.get_entrance('Agahnims Tower', player), lambda state: state.world.mode[player] != 'inverted') - add_bunny_rule(world.get_entrance('Bonk Fairy (Light)', player), player) - add_bunny_rule(world.get_entrance('Checkerboard Cave', player), player) - add_bunny_rule(world.get_entrance('50 Rupee Cave', player), player) - add_bunny_rule(world.get_entrance('20 Rupee Cave', player), player) - add_bunny_rule(world.get_entrance('Skull Woods First Section Hole (North)', player), player) # bunny cannot lift bush - add_bunny_rule(world.get_entrance('Skull Woods Second Section Hole', player), player) # bunny cannot lift bush - add_bunny_rule(world.get_entrance('Skull Woods Final Section', player), player) # bunny cannot use fire rod - add_bunny_rule(world.get_entrance('Thieves Town', player), player) # bunny cannot pull - add_bunny_rule(world.get_entrance('Brewery', player), player) # bomb required - add_bunny_rule(world.get_entrance('Dark World Hammer Peg Cave', player), player) - add_bunny_rule(world.get_entrance('Bonk Fairy (Dark)', player), player) - add_bunny_rule(world.get_entrance('Hype Cave', player), player) # bomb required - add_bunny_rule(world.get_entrance('Palace of Darkness', player), player) # kiki needs pearl - add_bunny_rule(world.get_entrance('Misery Mire', player), player) - add_bunny_rule(world.get_entrance('Dark Lake Hylia Ledge Fairy', player), player) # bomb required - add_bunny_rule(world.get_entrance('Dark Lake Hylia Ledge Spike Cave', player), player) - add_bunny_rule(world.get_entrance('Hookshot Cave', player), player) - add_bunny_rule(world.get_entrance('Turtle Rock', player), player) - + # Region Access - set_rule(world.get_entrance('Death Mountain Entrance Rock', player), lambda state: state.can_lift_rocks(player)) - set_rule(world.get_entrance('Graveyard Ladder (Top)', player), lambda state: state.has_Pearl(player) and state.world.mode[player] == 'inverted') - set_rule(world.get_entrance('Graveyard Ladder (Bottom)', player), lambda state: state.has_Pearl(player) and state.world.mode[player] == 'inverted') - set_rule(world.get_entrance('Kings Grave Outer Rocks', player), lambda state: state.can_lift_heavy_rocks(player)) - set_rule(world.get_entrance('Kings Grave Inner Rocks', player), lambda state: state.can_lift_heavy_rocks(player)) - set_rule(world.get_entrance('Potion Shop Rock (South)', player), lambda state: state.can_lift_rocks(player)) - set_rule(world.get_entrance('Potion Shop Rock (North)', player), lambda state: state.can_lift_rocks(player)) - set_rule(world.get_entrance('Bat Cave Ledge Peg', player), lambda state: state.has('Hammer', player)) - set_rule(world.get_entrance('Hyrule Castle Main Gate (South)', player), lambda state: state.has_Mirror(player)) - set_rule(world.get_entrance('Hyrule Castle Main Gate (North)', player), lambda state: state.has_Mirror(player)) - set_rule(world.get_entrance('Hyrule Castle Inner East Rock', player), lambda state: state.can_lift_rocks(player)) - set_rule(world.get_entrance('Hyrule Castle Outer East Rock', player), lambda state: state.can_lift_rocks(player)) - set_rule(world.get_entrance('Cave 45 Inverted Approach', player), lambda state: state.world.mode[player] == 'inverted') - set_rule(world.get_entrance('Cave 45 Inverted Leave', player), lambda state: state.world.mode[player] == 'inverted') - set_rule(world.get_entrance('C Whirlpool Rock (Bottom)', player), lambda state: state.can_lift_rocks(player)) - set_rule(world.get_entrance('C Whirlpool Rock (Top)', player), lambda state: state.can_lift_rocks(player)) - set_rule(world.get_entrance('Lake Hylia Island Pier', player), lambda state: state.world.mode[player] == 'inverted') - set_rule(world.get_entrance('Desert Palace Statue Move', player), lambda state: state.has('Book of Mudora', player)) - set_rule(world.get_entrance('Checkerboard Ledge Approach', player), lambda state: state.world.mode[player] == 'inverted') - set_rule(world.get_entrance('Checkerboard Ledge Leave', player), lambda state: state.world.mode[player] == 'inverted') - set_rule(world.get_entrance('Desert Ledge Outer Rocks', player), lambda state: state.can_lift_rocks(player)) - set_rule(world.get_entrance('Desert Ledge Inner Rocks', player), lambda state: state.can_lift_rocks(player)) - set_rule(world.get_entrance('Desert Pass Rocks (North)', player), lambda state: state.can_lift_rocks(player)) - set_rule(world.get_entrance('Desert Pass Rocks (South)', player), lambda state: state.can_lift_rocks(player)) - set_rule(world.get_entrance('Desert Pass Ladder (North)', player), lambda state: state.world.mode[player] == 'inverted') - set_rule(world.get_entrance('Desert Pass Ladder (South)', player), lambda state: state.world.mode[player] == 'inverted') - set_rule(world.get_entrance('Spectacle Rock Approach', player), lambda state: state.world.mode[player] == 'inverted') - set_rule(world.get_entrance('Spectacle Rock Leave', player), lambda state: state.world.mode[player] == 'inverted') set_rule(world.get_entrance('DM Hammer Bridge (West)', player), lambda state: state.has('Hammer', player)) set_rule(world.get_entrance('DM Hammer Bridge (East)', player), lambda state: state.has('Hammer', player)) - set_rule(world.get_entrance('Floating Island Bridge (West)', player), lambda state: state.world.mode[player] == 'inverted') - set_rule(world.get_entrance('Floating Island Bridge (East)', player), lambda state: state.world.mode[player] == 'inverted') - set_rule(world.get_entrance('East Death Mountain Mimic Ledge Drop', player), lambda state: state.world.mode[player] == 'inverted') - set_rule(world.get_entrance('Mimic Ledge Drop', player), lambda state: state.world.mode[player] == 'inverted') set_rule(world.get_entrance('DM Broken Bridge (West)', player), lambda state: state.has('Hookshot', player)) set_rule(world.get_entrance('DM Broken Bridge (East)', player), lambda state: state.has('Hookshot', player)) set_rule(world.get_entrance('Fairy Ascension Rocks (North)', player), lambda state: state.can_lift_heavy_rocks(player)) set_rule(world.get_entrance('Fairy Ascension Rocks (South)', player), lambda state: state.can_lift_heavy_rocks(player)) set_rule(world.get_entrance('TR Pegs Ledge Entry', player), lambda state: state.can_lift_heavy_rocks(player)) + set_rule(world.get_entrance('TR Pegs Ledge Leave', player), lambda state: state.can_lift_heavy_rocks(player)) + set_rule(world.get_entrance('Death Mountain Entrance Rock', player), lambda state: state.can_lift_rocks(player)) + set_rule(world.get_entrance('Kings Grave Outer Rocks', player), lambda state: state.can_lift_heavy_rocks(player)) + set_rule(world.get_entrance('Kings Grave Inner Rocks', player), lambda state: state.can_lift_heavy_rocks(player)) + set_rule(world.get_entrance('Potion Shop Rock (South)', player), lambda state: state.can_lift_rocks(player)) + set_rule(world.get_entrance('Potion Shop Rock (North)', player), lambda state: state.can_lift_rocks(player)) + set_rule(world.get_entrance('Zora Approach Rocks (West)', player), lambda state: state.can_lift_heavy_rocks(player) or state.has_Boots(player)) + set_rule(world.get_entrance('Zora Approach Rocks (East)', player), lambda state: state.can_lift_heavy_rocks(player) or state.has_Boots(player)) + set_rule(world.get_entrance('Hyrule Castle Main Gate (South)', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Hyrule Castle Main Gate (North)', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Hyrule Castle Inner East Rock', player), lambda state: state.can_lift_rocks(player)) + set_rule(world.get_entrance('Hyrule Castle Outer East Rock', player), lambda state: state.can_lift_rocks(player)) + set_rule(world.get_entrance('Bat Cave Ledge Peg', player), lambda state: state.has('Hammer', player)) + set_rule(world.get_entrance('Desert Palace Statue Move', player), lambda state: state.has('Book of Mudora', player)) + set_rule(world.get_entrance('Desert Ledge Outer Rocks', player), lambda state: state.can_lift_rocks(player)) + set_rule(world.get_entrance('Desert Ledge Inner Rocks', player), lambda state: state.can_lift_rocks(player)) + set_rule(world.get_entrance('C Whirlpool Rock (Bottom)', player), lambda state: state.can_lift_rocks(player)) + set_rule(world.get_entrance('C Whirlpool Rock (Top)', player), lambda state: state.can_lift_rocks(player)) + set_rule(world.get_entrance('Desert Pass Rocks (North)', player), lambda state: state.can_lift_rocks(player)) + set_rule(world.get_entrance('Desert Pass Rocks (South)', player), lambda state: state.can_lift_rocks(player)) set_rule(world.get_entrance('Skull Woods Bush Rock (West)', player), lambda state: state.can_lift_rocks(player)) set_rule(world.get_entrance('Skull Woods Bush Rock (East)', player), lambda state: state.can_lift_rocks(player)) set_rule(world.get_entrance('Bumper Cave Entrance Rock', player), lambda state: state.can_lift_rocks(player)) @@ -825,105 +773,52 @@ def default_rules(world, player): set_rule(world.get_entrance('Skull Woods Pass Rock (Bottom)', player), lambda state: state.can_lift_heavy_rocks(player)) set_rule(world.get_entrance('Dark Witch Rock (North)', player), lambda state: state.can_lift_rocks(player)) set_rule(world.get_entrance('Dark Witch Rock (South)', player), lambda state: state.can_lift_rocks(player)) + set_rule(world.get_entrance('Catfish Approach Rocks (West)', player), lambda state: state.can_lift_heavy_rocks(player) or state.has_Boots(player)) + set_rule(world.get_entrance('Catfish Approach Rocks (East)', player), lambda state: state.can_lift_heavy_rocks(player) or state.has_Boots(player)) + set_rule(world.get_entrance('Village of Outcasts Pegs', player), lambda state: state.has('Hammer', player)) + set_rule(world.get_entrance('Grassy Lawn Pegs', player), lambda state: state.has('Hammer', player)) set_rule(world.get_entrance('Broken Bridge Hammer Rock (South)', player), lambda state: state.can_lift_rocks(player) or state.has('Hammer', player)) set_rule(world.get_entrance('Broken Bridge Hammer Rock (North)', player), lambda state: state.can_lift_rocks(player) or state.has('Hammer', player)) set_rule(world.get_entrance('Broken Bridge Hookshot Gap', player), lambda state: state.has('Hookshot', player)) - set_rule(world.get_entrance('Village of Outcasts Pegs', player), lambda state: state.has('Hammer', player)) - set_rule(world.get_entrance('Grassy Lawn Pegs', player), lambda state: state.has('Hammer', player)) set_rule(world.get_entrance('Peg Area Rocks (West)', player), lambda state: state.can_lift_heavy_rocks(player)) set_rule(world.get_entrance('Peg Area Rocks (East)', player), lambda state: state.can_lift_heavy_rocks(player)) set_rule(world.get_entrance('Dig Game To Ledge Drop', player), lambda state: state.can_lift_heavy_rocks(player)) - set_rule(world.get_entrance('Archery Game Rock', player), lambda state: state.can_lift_heavy_rocks(player)) + set_rule(world.get_entrance('Frog Rock (Inner)', player), lambda state: state.can_lift_heavy_rocks(player)) + set_rule(world.get_entrance('Frog Rock (Outer)', player), lambda state: state.can_lift_heavy_rocks(player)) + set_rule(world.get_entrance('Archery Game Rock (North)', player), lambda state: state.can_lift_heavy_rocks(player)) + set_rule(world.get_entrance('Archery Game Rock (South)', player), lambda state: state.can_lift_heavy_rocks(player)) set_rule(world.get_entrance('Hammer Bridge Pegs (North)', player), lambda state: state.has('Hammer', player)) set_rule(world.get_entrance('Hammer Bridge Pegs (South)', player), lambda state: state.has('Hammer', player)) set_rule(world.get_entrance('Dark C Whirlpool Rock (Bottom)', player), lambda state: state.can_lift_rocks(player)) set_rule(world.get_entrance('Dark C Whirlpool Rock (Top)', player), lambda state: state.can_lift_rocks(player)) - set_rule(world.get_entrance('Ice Palace Approach', player), lambda state: state.world.mode[player] == 'inverted') - set_rule(world.get_entrance('Ice Palace Leave', player), lambda state: state.world.mode[player] == 'inverted') - set_rule(world.get_entrance('Dark Death Mountain Ladder (North)', player), lambda state: state.world.mode[player] == 'inverted') - set_rule(world.get_entrance('Dark Death Mountain Ladder (South)', player), lambda state: state.world.mode[player] == 'inverted') - set_rule(world.get_entrance('Turtle Rock Tail Ledge Drop', player), lambda state: state.world.mode[player] == 'inverted') - add_bunny_rule(world.get_entrance('Lost Woods Bush (West)', player), player) - add_bunny_rule(world.get_entrance('Lost Woods Bush (East)', player), player) - add_bunny_rule(world.get_entrance('Death Mountain Entrance Rock', player), player) - add_bunny_rule(world.get_entrance('Kings Grave Outer Rocks', player), player) - add_bunny_rule(world.get_entrance('Kings Grave Inner Rocks', player), player) - add_bunny_rule(world.get_entrance('Potion Shop Rock (South)', player), player) - add_bunny_rule(world.get_entrance('Potion Shop Rock (North)', player), player) - add_bunny_rule(world.get_entrance('Kakariko Southwest Bush (North)', player), player) - add_bunny_rule(world.get_entrance('Kakariko Southwest Bush (South)', player), player) - add_bunny_rule(world.get_entrance('Kakariko Yard Bush (North)', player), player) - add_bunny_rule(world.get_entrance('Kakariko Yard Bush (South)', player), player) - add_bunny_rule(world.get_entrance('Bat Cave Ledge Peg', player), player) - add_bunny_rule(world.get_entrance('Hyrule Castle Courtyard Bush (North)', player), player) - add_bunny_rule(world.get_entrance('Hyrule Castle Courtyard Bush (South)', player), player) - add_bunny_rule(world.get_entrance('Hyrule Castle Inner East Rock', player), player) - add_bunny_rule(world.get_entrance('Hyrule Castle Outer East Rock', player), player) - add_bunny_rule(world.get_entrance('Wooden Bridge Bush (North)', player), player) - add_bunny_rule(world.get_entrance('Wooden Bridge Bush (South)', player), player) - add_bunny_rule(world.get_entrance('Flute Boy Bush (North)', player), player) - add_bunny_rule(world.get_entrance('Flute Boy Bush (South)', player), player) - add_bunny_rule(world.get_entrance('C Whirlpool Rock (Bottom)', player), player) - add_bunny_rule(world.get_entrance('C Whirlpool Rock (Top)', player), player) - add_bunny_rule(world.get_entrance('Desert Ledge Outer Rocks', player), player) - add_bunny_rule(world.get_entrance('Desert Ledge Inner Rocks', player), player) - add_bunny_rule(world.get_entrance('Desert Pass Rocks (North)', player), player) - add_bunny_rule(world.get_entrance('Desert Pass Rocks (South)', player), player) - add_bunny_rule(world.get_entrance('DM Hammer Bridge (West)', player), player) - add_bunny_rule(world.get_entrance('DM Hammer Bridge (East)', player), player) - add_bunny_rule(world.get_entrance('DM Broken Bridge (West)', player), player) - add_bunny_rule(world.get_entrance('DM Broken Bridge (East)', player), player) - add_bunny_rule(world.get_entrance('Fairy Ascension Rocks (North)', player), player) - add_bunny_rule(world.get_entrance('Fairy Ascension Rocks (South)', player), player) - add_bunny_rule(world.get_entrance('TR Pegs Ledge Entry', player), player) - add_bunny_rule(world.get_entrance('Skull Woods Bush Rock (West)', player), player) - add_bunny_rule(world.get_entrance('Skull Woods Bush Rock (East)', player), player) - add_bunny_rule(world.get_entrance('Skull Woods Forgotten Bush (West)', player), player) - add_bunny_rule(world.get_entrance('Skull Woods Forgotten Bush (East)', player), player) - add_bunny_rule(world.get_entrance('Skull Woods Second Section Hole', player), player) - add_bunny_rule(world.get_entrance('Bumper Cave Entrance Rock', player), player) - add_bunny_rule(world.get_entrance('Skull Woods Pass Bush Row (West)', player), player) - add_bunny_rule(world.get_entrance('Skull Woods Pass Bush Row (East)', player), player) - add_bunny_rule(world.get_entrance('Skull Woods Pass Rock (Top)', player), player) - add_bunny_rule(world.get_entrance('Skull Woods Pass Rock (Bottom)', player), player) - add_bunny_rule(world.get_entrance('Dark Witch Rock (North)', player), player) - add_bunny_rule(world.get_entrance('Dark Witch Rock (South)', player), player) - add_bunny_rule(world.get_entrance('Broken Bridge Hammer Rock (South)', player), player) - add_bunny_rule(world.get_entrance('Broken Bridge Hammer Rock (North)', player), player) - add_bunny_rule(world.get_entrance('Broken Bridge Hookshot Gap', player), player) - add_bunny_rule(world.get_entrance('Village of Outcasts Pegs', player), player) - add_bunny_rule(world.get_entrance('Grassy Lawn Pegs', player), player) - add_bunny_rule(world.get_entrance('Peg Area Rocks (West)', player), player) - add_bunny_rule(world.get_entrance('Peg Area Rocks (East)', player), player) - add_bunny_rule(world.get_entrance('Dig Game To Ledge Drop', player), player) - add_bunny_rule(world.get_entrance('Archery Game Rock', player), player) - add_bunny_rule(world.get_entrance('Stumpy Approach Bush (North)', player), player) - add_bunny_rule(world.get_entrance('Stumpy Approach Bush (South)', player), player) - add_bunny_rule(world.get_entrance('Dark C Whirlpool Rock (Bottom)', player), player) - add_bunny_rule(world.get_entrance('Dark C Whirlpool Rock (Top)', player), player) - add_bunny_rule(world.get_entrance('Hammer Bridge Pegs (North)', player), player) - add_bunny_rule(world.get_entrance('Hammer Bridge Pegs (South)', player), player) set_rule(world.get_entrance('Flute Away', player), lambda state: state.can_flute(player)) set_rule(world.get_entrance('Zora Waterfall Water Drop', player), lambda state: state.has('Flippers', player)) set_rule(world.get_entrance('Zora Waterfall Water Entry', player), lambda state: state.has('Flippers', player)) + set_rule(world.get_entrance('Waterfall of Wishing Cave Entry', player), lambda state: state.has('Flippers', player)) + set_rule(world.get_entrance('River Bend Water Drop', player), lambda state: state.has('Flippers', player)) + set_rule(world.get_entrance('River Bend East Water Drop', player), lambda state: state.has('Flippers', player)) + set_rule(world.get_entrance('Potion Shop Water Drop', player), lambda state: state.has('Flippers', player)) + set_rule(world.get_entrance('Potion Shop Northeast Water Drop', player), lambda state: state.has('Flippers', player)) + set_rule(world.get_entrance('Zora Approach Water Drop', player), lambda state: state.has('Flippers', player)) set_rule(world.get_entrance('Wooden Bridge Water Drop', player), lambda state: state.has('Flippers', player)) set_rule(world.get_entrance('Wooden Bridge Northeast Water Drop', player), lambda state: state.has('Flippers', player)) set_rule(world.get_entrance('C Whirlpool Water Entry', player), lambda state: state.has('Flippers', player)) set_rule(world.get_entrance('Statues Water Entry', player), lambda state: state.has('Flippers', player)) set_rule(world.get_entrance('Lake Hylia Water Drop', player), lambda state: state.has('Flippers', player)) + set_rule(world.get_entrance('Lake Hylia South Water Drop', player), lambda state: state.has('Flippers', player)) set_rule(world.get_entrance('Lake Hylia Northeast Water Drop', player), lambda state: state.has('Flippers', player)) set_rule(world.get_entrance('Lake Hylia Central Water Drop', player), lambda state: state.has('Flippers', player)) set_rule(world.get_entrance('Lake Hylia Island Water Drop', player), lambda state: state.has('Flippers', player)) set_rule(world.get_entrance('Ice Cave SW', player), lambda state: state.has('Flippers', player)) set_rule(world.get_entrance('Octoballoon Water Drop', player), lambda state: state.has('Flippers', player)) set_rule(world.get_entrance('Octoballoon Waterfall Water Drop', player), lambda state: state.has('Flippers', player)) - set_rule(world.get_entrance('Catfish Approach Water Drop', player), lambda state: state.has('Flippers', player)) - set_rule(world.get_entrance('Dark Witch Water Drop', player), lambda state: state.has('Flippers', player)) - set_rule(world.get_entrance('Dark Witch Northeast Water Drop', player), lambda state: state.has('Flippers', player)) set_rule(world.get_entrance('Qirn Jump Water Drop', player), lambda state: state.has('Flippers', player)) set_rule(world.get_entrance('Qirn Jump East Water Drop', player), lambda state: state.has('Flippers', player)) + set_rule(world.get_entrance('Dark Witch Water Drop', player), lambda state: state.has('Flippers', player)) + set_rule(world.get_entrance('Dark Witch Northeast Water Drop', player), lambda state: state.has('Flippers', player)) + set_rule(world.get_entrance('Catfish Approach Water Drop', player), lambda state: state.has('Flippers', player)) set_rule(world.get_entrance('Broken Bridge Water Drop', player), lambda state: state.has('Flippers', player)) set_rule(world.get_entrance('Broken Bridge Northeast Water Drop', player), lambda state: state.has('Flippers', player)) set_rule(world.get_entrance('Broken Bridge West Water Drop', player), lambda state: state.has('Flippers', player)) @@ -937,89 +832,32 @@ def default_rules(world, player): set_rule(world.get_entrance('Shopping Mall SW', player), lambda state: state.has('Flippers', player)) set_rule(world.get_entrance('Bomber Corner Water Drop', player), lambda state: state.has('Flippers', player)) set_rule(world.get_entrance('Bomber Corner Waterfall Water Drop', player), lambda state: state.has('Flippers', player)) - add_bunny_rule(world.get_entrance('Zora Approach Water Drop', player), player) - add_bunny_rule(world.get_entrance('Potion Shop Water Drop', player), player) - add_bunny_rule(world.get_entrance('Potion Shop Northeast Water Drop', player), player) - add_bunny_rule(world.get_entrance('River Bend Water Drop', player), player) - add_bunny_rule(world.get_entrance('River Bend East Water Drop', player), player) - add_bunny_rule(world.get_entrance('Wooden Bridge Water Drop', player), player) - add_bunny_rule(world.get_entrance('Wooden Bridge Northeast Water Drop', player), player) - add_bunny_rule(world.get_entrance('C Whirlpool Water Entry', player), player) - add_bunny_rule(world.get_entrance('Statues Water Entry', player), player) - add_bunny_rule(world.get_entrance('Lake Hylia Water Drop', player), player) - add_bunny_rule(world.get_entrance('Lake Hylia South Water Drop', player), player) - add_bunny_rule(world.get_entrance('Lake Hylia Northeast Water Drop', player), player) - add_bunny_rule(world.get_entrance('Lake Hylia Central Water Drop', player), player) - add_bunny_rule(world.get_entrance('Lake Hylia Island Water Drop', player), player) - add_bunny_rule(world.get_entrance('Ice Cave SW', player), player) - add_bunny_rule(world.get_entrance('Octoballoon Water Drop', player), player) - add_bunny_rule(world.get_entrance('Octoballoon Waterfall Water Drop', player), player) - add_bunny_rule(world.get_entrance('Catfish Approach Water Drop', player), player) - add_bunny_rule(world.get_entrance('Dark Witch Water Drop', player), player) - add_bunny_rule(world.get_entrance('Dark Witch Northeast Water Drop', player), player) - add_bunny_rule(world.get_entrance('Qirn Jump Water Drop', player), player) - add_bunny_rule(world.get_entrance('Qirn Jump East Water Drop', player), player) - add_bunny_rule(world.get_entrance('Broken Bridge Water Drop', player), player) - add_bunny_rule(world.get_entrance('Broken Bridge Northeast Water Drop', player), player) - add_bunny_rule(world.get_entrance('Broken Bridge West Water Drop', player), player) - add_bunny_rule(world.get_entrance('Hammer Bridge Water Drop', player), player) - add_bunny_rule(world.get_entrance('Dark C Whirlpool Water Entry', player), player) - add_bunny_rule(world.get_entrance('Hype Cave Water Entry', player), player) - add_bunny_rule(world.get_entrance('Ice Lake Water Drop', player), player) - add_bunny_rule(world.get_entrance('Ice Lake Northeast Water Drop', player), player) - add_bunny_rule(world.get_entrance('Ice Lake Southwest Water Drop', player), player) - add_bunny_rule(world.get_entrance('Ice Lake Southeast Water Drop', player), player) - add_bunny_rule(world.get_entrance('Shopping Mall SW', player), player) - add_bunny_rule(world.get_entrance('Bomber Corner Water Drop', player), player) - add_bunny_rule(world.get_entrance('Bomber Corner Waterfall Water Drop', player), player) - if world.mode[player] != 'inverted': - set_rule(world.get_entrance('Kakariko Teleporter (Hammer)', player), lambda state: state.has('Hammer', player) and state.can_lift_rocks(player) and state.has_Pearl(player)) # bunny cannot lift bushes - set_rule(world.get_entrance('Kakariko Teleporter (Rock)', player), lambda state: state.can_lift_heavy_rocks(player) and state.has_Pearl(player)) # bunny cannot lift bushes - set_rule(world.get_entrance('Top of Pyramid', player), lambda state: state.has('Beat Agahnim 1', player)) - set_rule(world.get_entrance('Top of Pyramid (Inner)', player), lambda state: state.has('Beat Agahnim 1', player)) - set_rule(world.get_entrance('East Hyrule Teleporter', player), lambda state: state.has('Hammer', player) and state.can_lift_rocks(player) and state.has_Pearl(player)) # bunny cannot use hammer - set_rule(world.get_entrance('South Hyrule Teleporter', player), lambda state: state.has('Hammer', player) and state.can_lift_rocks(player) and state.has_Pearl(player)) # bunny cannot use hammer - set_rule(world.get_entrance('South Teleporter Cliff Ledge Drop', player), lambda state: state.can_lift_rocks(player) and state.has_Pearl(player)) # OWG only, can bomb clip out - set_rule(world.get_entrance('Desert Teleporter', player), lambda state: state.can_lift_heavy_rocks(player)) - set_rule(world.get_entrance('Lake Hylia Teleporter', player), lambda state: state.can_lift_heavy_rocks(player)) - set_rule(world.get_entrance('East Death Mountain Teleporter', player), lambda state: state.can_lift_heavy_rocks(player)) - set_rule(world.get_entrance('TR Pegs Teleporter', player), lambda state: state.has('Hammer', player)) + if world.swords[player] == 'swordless': + swordless_rules(world, player) - set_rule(world.get_entrance('West Dark World Teleporter (Hammer)', player), lambda state: False) - set_rule(world.get_entrance('West Dark World Teleporter (Rock)', player), lambda state: False) - set_rule(world.get_entrance('Post Aga Inverted Teleporter', player), lambda state: False) - set_rule(world.get_entrance('East Dark World Teleporter', player), lambda state: False) - set_rule(world.get_entrance('South Dark World Teleporter', player), lambda state: False) - set_rule(world.get_entrance('South Teleporter Cliff Ledge Drop', player), lambda state: False) - set_rule(world.get_entrance('Misery Mire Teleporter', player), lambda state: False) - set_rule(world.get_entrance('Ice Palace Teleporter', player), lambda state: False) - set_rule(world.get_entrance('Dark Death Mountain Teleporter (West)', player), lambda state: False) - set_rule(world.get_entrance('Dark Death Mountain Teleporter (East)', player), lambda state: False) - set_rule(world.get_entrance('Turtle Rock Teleporter', player), lambda state: False) - else: - set_rule(world.get_entrance('Kakariko Teleporter (Hammer)', player), lambda state: False) - set_rule(world.get_entrance('Kakariko Teleporter (Rock)', player), lambda state: False) - set_rule(world.get_entrance('Top of Pyramid', player), lambda state: False) - set_rule(world.get_entrance('Top of Pyramid (Inner)', player), lambda state: False) - set_rule(world.get_entrance('East Hyrule Teleporter', player), lambda state: False) - set_rule(world.get_entrance('South Hyrule Teleporter', player), lambda state: False) - set_rule(world.get_entrance('South Teleporter Cliff Ledge Drop', player), lambda state: False) - set_rule(world.get_entrance('Desert Teleporter', player), lambda state: False) - set_rule(world.get_entrance('Lake Hylia Teleporter', player), lambda state: False) - set_rule(world.get_entrance('East Death Mountain Teleporter', player), lambda state: False) - set_rule(world.get_entrance('TR Pegs Teleporter', player), lambda state: False) - set_rule(world.get_entrance('West Dark World Teleporter (Hammer)', player), lambda state: state.has('Hammer', player) and state.has_Pearl(player)) - set_rule(world.get_entrance('West Dark World Teleporter (Rock)', player), lambda state: state.can_lift_heavy_rocks(player) and state.has_Pearl(player)) # bunny cannot lift bushes - set_rule(world.get_entrance('Post Aga Inverted Teleporter', player), lambda state: state.has('Beat Agahnim 1', player)) - set_rule(world.get_entrance('East Dark World Teleporter', player), lambda state: state.has('Hammer', player) and state.can_lift_rocks(player) and state.has_Pearl(player)) - set_rule(world.get_entrance('South Dark World Teleporter', player), lambda state: state.has('Hammer', player) and state.can_lift_rocks(player) and state.has_Pearl(player)) - set_rule(world.get_entrance('South Teleporter Cliff Ledge Drop', player), lambda state: state.can_lift_rocks(player) and state.has_Pearl(player)) - set_rule(world.get_entrance('Misery Mire Teleporter', player), lambda state: state.can_lift_heavy_rocks(player)) - set_rule(world.get_entrance('Ice Palace Teleporter', player), lambda state: state.can_lift_heavy_rocks(player)) - set_rule(world.get_entrance('Dark Death Mountain Teleporter (East)', player), lambda state: state.can_lift_heavy_rocks(player)) - set_rule(world.get_entrance('Turtle Rock Teleporter', player), lambda state: state.has('Hammer', player) and state.has_Pearl(player)) +def ow_open_rules(world, player): + set_rule(world.get_entrance('Spectacle Rock Approach', player), lambda state: False) + set_rule(world.get_entrance('Spectacle Rock Leave', player), lambda state: False) + set_rule(world.get_entrance('Floating Island Bridge (West)', player), lambda state: False) + set_rule(world.get_entrance('Floating Island Bridge (East)', player), lambda state: False) + set_rule(world.get_entrance('East Death Mountain Mimic Ledge Drop', player), lambda state: False) + set_rule(world.get_entrance('Mimic Ledge Drop', player), lambda state: False) + set_rule(world.get_entrance('Graveyard Ladder (Top)', player), lambda state: False) + set_rule(world.get_entrance('Graveyard Ladder (Bottom)', player), lambda state: False) + set_rule(world.get_entrance('Checkerboard Ledge Approach', player), lambda state: False) + set_rule(world.get_entrance('Checkerboard Ledge Leave', player), lambda state: False) + set_rule(world.get_entrance('Cave 45 Inverted Approach', player), lambda state: False) + set_rule(world.get_entrance('Cave 45 Inverted Leave', player), lambda state: False) + set_rule(world.get_entrance('Lake Hylia Island Pier', player), lambda state: False) + set_rule(world.get_entrance('Desert Pass Ladder (North)', player), lambda state: False) + set_rule(world.get_entrance('Desert Pass Ladder (South)', player), lambda state: False) + set_rule(world.get_entrance('Dark Death Mountain Ladder (North)', player), lambda state: False) + set_rule(world.get_entrance('Dark Death Mountain Ladder (South)', player), lambda state: False) + set_rule(world.get_entrance('Turtle Rock Tail Ledge Drop', player), lambda state: False) + set_rule(world.get_entrance('Ice Palace Approach', player), lambda state: False) + set_rule(world.get_entrance('Ice Palace Leave', player), lambda state: False) set_rule(world.get_entrance('Lost Woods East Mirror Spot', player), lambda state: state.has_Mirror(player)) set_rule(world.get_entrance('Lost Woods Entry Mirror Spot', player), lambda state: state.has_Mirror(player)) @@ -1028,76 +866,6 @@ def default_rules(world, player): set_rule(world.get_entrance('Lost Woods East (Forgotten) Mirror Spot', player), lambda state: state.has_Mirror(player)) set_rule(world.get_entrance('Lost Woods West (Forgotten) Mirror Spot', player), lambda state: state.has_Mirror(player)) set_rule(world.get_entrance('Lumberjack Mirror Spot', player), lambda state: state.has_Mirror(player)) - set_rule(world.get_entrance('Mountain Entry Mirror Spot', player), lambda state: state.has_Mirror(player)) - set_rule(world.get_entrance('Mountain Entry Ledge Mirror Spot', player), lambda state: state.has_Mirror(player)) - set_rule(world.get_entrance('Mountain Entry Entrance Mirror Spot', player), lambda state: state.has_Mirror(player)) - set_rule(world.get_entrance('Lost Woods Pass West Mirror Spot', player), lambda state: state.has_Mirror(player)) - set_rule(world.get_entrance('Lost Woods Pass East Top Mirror Spot', player), lambda state: state.has_Mirror(player)) - set_rule(world.get_entrance('Lost Woods East Bottom Mirror Spot', player), lambda state: state.has_Mirror(player)) - set_rule(world.get_entrance('Kakariko Fortune Mirror Spot', player), lambda state: state.has_Mirror(player)) - set_rule(world.get_entrance('Kakariko Pond Mirror Spot', player), lambda state: state.has_Mirror(player)) - set_rule(world.get_entrance('Forgotton Forest Mirror Spot', player), lambda state: state.has_Mirror(player)) - set_rule(world.get_entrance('Forgotton Forest Fence Mirror Spot', player), lambda state: state.has_Mirror(player)) - set_rule(world.get_entrance('Bonk Rock Ledge Mirror Spot', player), lambda state: state.has_Mirror(player)) - set_rule(world.get_entrance('Graveyard Ledge Mirror Spot', player), lambda state: state.has_Pearl(player) and state.has_Mirror(player)) - set_rule(world.get_entrance('Kings Grave Mirror Spot', player), lambda state: state.has_Pearl(player) and state.has_Mirror(player)) - set_rule(world.get_entrance('River Bend Mirror Spot', player), lambda state: state.has_Mirror(player)) - set_rule(world.get_entrance('River Bend East Mirror Spot', player), lambda state: state.has_Mirror(player)) - set_rule(world.get_entrance('Potion Shop Mirror Spot', player), lambda state: state.has_Mirror(player)) - set_rule(world.get_entrance('Potion Shop Northeast Mirror Spot', player), lambda state: state.has_Mirror(player)) - set_rule(world.get_entrance('Zora Waterfall Mirror Spot', player), lambda state: state.has_Mirror(player)) - set_rule(world.get_entrance('Zora Approach Mirror Spot', player), lambda state: state.has_Mirror(player)) - set_rule(world.get_entrance('Kakariko Mirror Spot', player), lambda state: state.has_Mirror(player)) - set_rule(world.get_entrance('Kakariko Grass Mirror Spot', player), lambda state: state.has_Mirror(player)) - set_rule(world.get_entrance('Blacksmith Mirror Spot', player), lambda state: state.has_Mirror(player)) - set_rule(world.get_entrance('Blacksmith Entry Mirror Spot', player), lambda state: state.has_Mirror(player)) - set_rule(world.get_entrance('Bat Cave Ledge Mirror Spot', player), lambda state: state.has_Mirror(player)) - set_rule(world.get_entrance('HC Area Mirror Spot', player), lambda state: state.has_Mirror(player)) - set_rule(world.get_entrance('HC Ledge Mirror Spot', player), lambda state: state.has_Mirror(player)) - set_rule(world.get_entrance('HC Courtyard Mirror Spot', player), lambda state: state.has_Mirror(player)) - set_rule(world.get_entrance('HC East Entry Mirror Spot', player), lambda state: state.has_Mirror(player)) - set_rule(world.get_entrance('HC Area South Mirror Spot', player), lambda state: state.has_Mirror(player)) - set_rule(world.get_entrance('Wooden Bridge Mirror Spot', player), lambda state: state.has_Mirror(player)) - set_rule(world.get_entrance('Wooden Bridge Northeast Mirror Spot', player), lambda state: state.has_Mirror(player)) - set_rule(world.get_entrance('Wooden Bridge West Mirror Spot', player), lambda state: state.has_Mirror(player)) - set_rule(world.get_entrance('Sand Dunes Mirror Spot', player), lambda state: state.has_Mirror(player)) - set_rule(world.get_entrance('Eastern Palace Mirror Spot', player), lambda state: state.has_Mirror(player)) - set_rule(world.get_entrance('Eastern Nook Mirror Spot', player), lambda state: state.has_Mirror(player)) - set_rule(world.get_entrance('Maze Race Mirror Spot', player), lambda state: state.has_Mirror(player)) - set_rule(world.get_entrance('Maze Race Ledge Mirror Spot', player), lambda state: state.has_Mirror(player)) - set_rule(world.get_entrance('Kakariko Suburb Mirror Spot', player), lambda state: state.has_Mirror(player)) - set_rule(world.get_entrance('Kakariko Suburb South Mirror Spot', player), lambda state: state.has_Mirror(player)) - set_rule(world.get_entrance('Flute Boy Mirror Spot', player), lambda state: state.has_Mirror(player)) - set_rule(world.get_entrance('Flute Boy Pass Mirror Spot', player), lambda state: state.has_Mirror(player)) - set_rule(world.get_entrance('Cave 45 Mirror Spot', player), lambda state: state.has_Mirror(player)) - set_rule(world.get_entrance('Flute Boy Entry Mirror Spot', player), lambda state: state.has_Mirror(player)) - set_rule(world.get_entrance('C Whirlpool Mirror Spot', player), lambda state: state.has_Mirror(player)) - set_rule(world.get_entrance('C Whirlpool Outer Mirror Spot', player), lambda state: state.has_Mirror(player)) - set_rule(world.get_entrance('Central Bonk Rocks Mirror Spot', player), lambda state: state.has_Mirror(player)) - set_rule(world.get_entrance('Links House Mirror Spot', player), lambda state: state.has_Mirror(player)) - set_rule(world.get_entrance('Stone Bridge Mirror Spot', player), lambda state: state.has_Mirror(player)) - set_rule(world.get_entrance('Stone Bridge South Mirror Spot', player), lambda state: state.has_Mirror(player)) - set_rule(world.get_entrance('Hobo Mirror Spot', player), lambda state: state.has_Mirror(player) and state.has_Pearl(player) and state.has('Flippers', player)) - set_rule(world.get_entrance('Tree Line Mirror Spot', player), lambda state: state.has_Mirror(player)) - set_rule(world.get_entrance('Checkerboard Mirror Spot', player), lambda state: state.has_Mirror(player)) - set_rule(world.get_entrance('Desert Ledge Mirror Spot', player), lambda state: state.has_Mirror(player)) - set_rule(world.get_entrance('DP Stairs Mirror Spot', player), lambda state: state.has_Mirror(player)) - set_rule(world.get_entrance('DP Entrance (North) Mirror Spot', player), lambda state: state.has_Mirror(player)) - set_rule(world.get_entrance('Bombos Tablet Ledge Mirror Spot', player), lambda state: state.has_Mirror(player)) - set_rule(world.get_entrance('Desert Pass Ledge Mirror Spot', player), lambda state: state.has_Mirror(player)) - set_rule(world.get_entrance('Desert Pass Mirror Spot', player), lambda state: state.has_Mirror(player)) - set_rule(world.get_entrance('Dam Mirror Spot', player), lambda state: state.has_Mirror(player)) - set_rule(world.get_entrance('Statues Mirror Spot', player), lambda state: state.has_Mirror(player)) - set_rule(world.get_entrance('South Pass Mirror Spot', player), lambda state: state.has_Mirror(player)) - set_rule(world.get_entrance('Lake Hylia Mirror Spot', player), lambda state: state.has_Mirror(player)) - set_rule(world.get_entrance('Lake Hylia Northeast Mirror Spot', player), lambda state: state.has_Mirror(player)) - set_rule(world.get_entrance('Lake Hylia Island Mirror Spot', player), lambda state: state.has_Mirror(player) and state.has_Pearl(player) and state.has('Flippers', player)) - set_rule(world.get_entrance('Lake Hylia Central Island Mirror Spot', player), lambda state: state.has_Mirror(player)) - set_rule(world.get_entrance('Lake Hylia Water Mirror Spot', player), lambda state: state.has_Mirror(player)), - set_rule(world.get_entrance('South Shore Mirror Spot', player), lambda state: state.has_Mirror(player)) - set_rule(world.get_entrance('South Shore East Mirror Spot', player), lambda state: state.has_Mirror(player)) - set_rule(world.get_entrance('Octoballoon Mirror Spot', player), lambda state: state.has_Mirror(player)) - set_rule(world.get_entrance('Ice Cave Mirror Spot', player), lambda state: state.has_Mirror(player)) set_rule(world.get_entrance('West Death Mountain (Top) Mirror Spot', player), lambda state: state.has_Mirror(player)) set_rule(world.get_entrance('Spectacle Rock Mirror Spot', player), lambda state: state.has_Mirror(player)) set_rule(world.get_entrance('East Death Mountain (Top West) Mirror Spot', player), lambda state: state.has_Mirror(player)) @@ -1109,17 +877,424 @@ def default_rules(world, player): set_rule(world.get_entrance('Death Mountain Bridge Mirror Spot', player), lambda state: state.has_Mirror(player)) set_rule(world.get_entrance('Floating Island Mirror Spot', player), lambda state: state.has_Mirror(player)) set_rule(world.get_entrance('TR Pegs Area Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Mountain Entry Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Mountain Entry Ledge Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Mountain Entry Entrance Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Zora Waterfall Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Lost Woods Pass West Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Lost Woods Pass East Top Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Lost Woods Pass East Bottom Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Kakariko Fortune Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Kakariko Pond Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Bonk Rock Ledge Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Graveyard Ledge Mirror Spot', player), lambda state: state.has_Pearl(player) and state.has_Mirror(player)) + set_rule(world.get_entrance('Kings Grave Mirror Spot', player), lambda state: state.has_Pearl(player) and state.has_Mirror(player)) + set_rule(world.get_entrance('River Bend Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('River Bend East Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Potion Shop Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Potion Shop Northeast Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Zora Approach Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Zora Approach Ledge Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Kakariko Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Kakariko Grass Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Forgotton Forest Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Forgotton Forest Fence Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('HC Area Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('HC Ledge Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('HC Courtyard Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('HC East Entry Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('HC Area South Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Wooden Bridge Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Wooden Bridge Northeast Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Wooden Bridge West Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Eastern Palace Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Blacksmith Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Blacksmith Entry Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Bat Cave Ledge Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Sand Dunes Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Maze Race Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Maze Race Ledge Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Kakariko Suburb Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Kakariko Suburb South Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Flute Boy Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Flute Boy Pass Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Central Bonk Rocks Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Links House Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Stone Bridge Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Stone Bridge South Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Hobo Mirror Spot', player), lambda state: state.has_Mirror(player) and state.has_Pearl(player) and state.has('Flippers', player)) + set_rule(world.get_entrance('Tree Line Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Eastern Nook Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Checkerboard Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Desert Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Desert Ledge Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('DP Stairs Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('DP Entrance (North) Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Bombos Tablet Ledge Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Cave 45 Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Flute Boy Entry Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('C Whirlpool Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('C Whirlpool Outer Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Statues Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Lake Hylia Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Lake Hylia Northeast Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Lake Hylia Island Mirror Spot', player), lambda state: state.has_Mirror(player) and state.has_Pearl(player) and state.has('Flippers', player)) + set_rule(world.get_entrance('Lake Hylia Central Island Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Lake Hylia Water Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('South Shore Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('South Shore East Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Ice Cave Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Desert Pass Ledge Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Desert Pass Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Dam Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('South Pass Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Octoballoon Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Skull Woods Back Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Skull Woods Forgotten (West) Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Skull Woods Forgotten (East) Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Skull Woods Portal Entry Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Skull Woods Forgotten (Middle) Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Skull Woods Front Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Dark Lumberjack Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('West Dark Death Mountain (Top) Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Bubble Boy Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('West Dark Death Mountain (Bottom) Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('East Dark Death Mountain (Top West) Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('East Dark Death Mountain (Top East) Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('TR Ledge (West) Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('TR Ledge (East) Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('TR Isolated Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('East Dark Death Mountain (Bottom Plateau) Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('East Dark Death Mountain (Bottom Left) Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('East Dark Death Mountain (Bottom) Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Dark Floating Island Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Turtle Rock Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Turtle Rock Ledge Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Bumper Cave Area Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Bumper Cave Entry Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Bumper Cave Ledge Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Catfish Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Skull Woods Pass West Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Skull Woods Pass East Top Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Skull Woods Pass East Bottom Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Outcast Fortune Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Outcast Pond Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Dark Chapel Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Dark Chapel Ledge Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Dark Graveyard Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Dark Graveyard Ledge Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Dark Graveyard Grave Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Qirn Jump Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Qirn Jump East Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Dark Witch Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Dark Witch Northeast Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Catfish Approach Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Catfish Approach Ledge Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Village of Outcasts Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Village of Outcasts Southwest Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Hammer House Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Shield Shop Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Pyramid Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Pyramid Pass Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Pyramid Courtyard Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Pyramid Uncle Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Pyramid From Ledge Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Pyramid Entry Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Broken Bridge West Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Broken Bridge East Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Broken Bridge Northeast Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Palace of Darkness Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Hammer Pegs Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Hammer Pegs Entry Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Dark Dunes Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Dig Game Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Dig Game Ledge Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Frog Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Frog Prison Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Archery Game Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Stumpy Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Stumpy Pass Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Dark Bonk Rocks Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Big Bomb Shop Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Hammer Bridge North Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Hammer Bridge South Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Dark Hobo Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Dark Tree Line Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Darkness Nook Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Misery Mire Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Misery Mire Ledge Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Misery Mire Blocked Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Misery Mire Main Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Stumpy Approach Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Stumpy Bush Entry Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Dark C Whirlpool Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Dark C Whirlpool Outer Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Hype Cave Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Ice Lake Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Ice Lake Southwest Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Ice Lake Southeast Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Ice Lake Northeast Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Ice Palace Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Shopping Mall Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Swmap Nook Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Swamp Nook Southeast Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Swamp Nook Pegs Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Swamp Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Dark South Pass Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Bomber Corner Mirror Spot', player), lambda state: False) + + set_rule(world.get_entrance('Kakariko Teleporter (Hammer)', player), lambda state: state.has('Hammer', player) and state.can_lift_rocks(player) and state.has_Pearl(player)) # bunny cannot lift bushes + set_rule(world.get_entrance('Kakariko Teleporter (Rock)', player), lambda state: state.can_lift_heavy_rocks(player) and state.has_Pearl(player)) # bunny cannot lift bushes + set_rule(world.get_entrance('Top of Pyramid', player), lambda state: state.has('Beat Agahnim 1', player)) + set_rule(world.get_entrance('Top of Pyramid (Inner)', player), lambda state: state.has('Beat Agahnim 1', player)) + set_rule(world.get_entrance('East Hyrule Teleporter', player), lambda state: state.has('Hammer', player) and state.can_lift_rocks(player) and state.has_Pearl(player)) # bunny cannot use hammer + set_rule(world.get_entrance('South Hyrule Teleporter', player), lambda state: state.has('Hammer', player) and state.can_lift_rocks(player) and state.has_Pearl(player)) # bunny cannot use hammer + set_rule(world.get_entrance('South Teleporter Cliff Ledge Drop', player), lambda state: state.can_lift_rocks(player) and state.has_Pearl(player)) # OWG only, can bomb clip out + set_rule(world.get_entrance('Desert Teleporter', player), lambda state: state.can_lift_heavy_rocks(player)) + set_rule(world.get_entrance('Lake Hylia Teleporter', player), lambda state: state.can_lift_heavy_rocks(player)) + set_rule(world.get_entrance('East Death Mountain Teleporter', player), lambda state: state.can_lift_heavy_rocks(player)) + set_rule(world.get_entrance('TR Pegs Teleporter', player), lambda state: state.has('Hammer', player)) + set_rule(world.get_entrance('West Dark World Teleporter (Hammer)', player), lambda state: False) + set_rule(world.get_entrance('West Dark World Teleporter (Rock)', player), lambda state: False) + set_rule(world.get_entrance('Post Aga Inverted Teleporter', player), lambda state: False) + set_rule(world.get_entrance('East Dark World Teleporter', player), lambda state: False) + set_rule(world.get_entrance('South Dark World Teleporter', player), lambda state: False) + set_rule(world.get_entrance('South Teleporter Cliff Ledge Drop', player), lambda state: False) + set_rule(world.get_entrance('Misery Mire Teleporter', player), lambda state: False) + set_rule(world.get_entrance('Ice Palace Teleporter', player), lambda state: False) + set_rule(world.get_entrance('Dark Death Mountain Teleporter (West)', player), lambda state: False) + set_rule(world.get_entrance('Dark Death Mountain Teleporter (East)', player), lambda state: False) + set_rule(world.get_entrance('Turtle Rock Teleporter', player), lambda state: False) + + set_rule(world.get_entrance('Inverted Pyramid Hole', player), lambda state: False) + add_rule(world.get_entrance('Inverted Pyramid Hole', player), lambda state: False) + set_rule(world.get_entrance('Inverted Pyramid Entrance', player), lambda state: False) set_rule(world.get_entrance('Pyramid Hole', player), lambda state: state.has('Beat Agahnim 2', player) or world.open_pyramid[player]) - - if world.swords[player] == 'swordless': - swordless_rules(world, player) - - set_rule(world.get_entrance('GT Entry Approach', player), lambda state: state.has_crystals(world.crystals_needed_for_gt[player], player) or state.world.mode[player] == 'inverted') - set_rule(world.get_entrance('GT Entry Leave', player), lambda state: state.has_crystals(world.crystals_needed_for_gt[player], player) or state.world.mode[player] == 'inverted' or state.world.shuffle[player] in ('restricted', 'full', 'crossed', 'insanity')) + set_rule(world.get_entrance('Agahnims Tower', player), lambda state: state.has('Cape', player) or state.has_beam_sword(player) or state.has('Beat Agahnim 1', player)) # barrier gets removed after killing agahnim, relevant for entrance shuffle + set_rule(world.get_entrance('GT Entry Approach', player), lambda state: state.has_crystals(world.crystals_needed_for_gt[player], player)) + set_rule(world.get_entrance('GT Entry Leave', player), lambda state: state.has_crystals(world.crystals_needed_for_gt[player], player) or state.world.shuffle[player] in ('restricted', 'full', 'crossed', 'insanity')) -def inverted_rules(world, player): +def ow_inverted_rules(world, player): + set_rule(world.get_entrance('Graveyard Ladder (Top)', player), lambda state: state.has_Pearl(player)) + set_rule(world.get_entrance('Graveyard Ladder (Bottom)', player), lambda state: state.has_Pearl(player)) + set_rule(world.get_entrance('Pyramid Exit Ledge Drop', player), lambda state: state.has('Hammer', player)) + + set_rule(world.get_entrance('Lost Woods East Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Lost Woods Entry Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Lost Woods Pedestal Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Lost Woods Southwest Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Lost Woods East (Forgotten) Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Lost Woods West (Forgotten) Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Lumberjack Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('West Death Mountain (Top) Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Spectacle Rock Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('East Death Mountain (Top West) Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('East Death Mountain (Top East) Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Mimic Cave Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Spiral Cave Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Fairy Ascension Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Isolated Ledge Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Death Mountain Bridge Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Floating Island Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('TR Pegs Area Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Mountain Entry Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Mountain Entry Ledge Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Mountain Entry Entrance Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Zora Waterfall Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Lost Woods Pass West Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Lost Woods Pass East Top Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Lost Woods Pass East Bottom Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Kakariko Fortune Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Kakariko Pond Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Bonk Rock Ledge Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Graveyard Ledge Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Kings Grave Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('River Bend Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('River Bend East Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Potion Shop Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Potion Shop Northeast Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Zora Approach Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Zora Approach Ledge Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Kakariko Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Kakariko Grass Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Forgotton Forest Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Forgotton Forest Fence Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('HC Area Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('HC Ledge Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('HC Courtyard Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('HC East Entry Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('HC Area South Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Wooden Bridge Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Wooden Bridge Northeast Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Wooden Bridge West Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Eastern Palace Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Blacksmith Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Blacksmith Entry Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Bat Cave Ledge Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Sand Dunes Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Maze Race Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Maze Race Ledge Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Kakariko Suburb Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Kakariko Suburb South Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Flute Boy Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Flute Boy Pass Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Central Bonk Rocks Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Links House Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Stone Bridge Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Stone Bridge South Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Hobo Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Tree Line Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Eastern Nook Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Checkerboard Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Desert Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Desert Ledge Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('DP Stairs Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('DP Entrance (North) Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Bombos Tablet Ledge Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Cave 45 Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Flute Boy Entry Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('C Whirlpool Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('C Whirlpool Outer Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Statues Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Lake Hylia Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Lake Hylia Northeast Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Lake Hylia Island Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Lake Hylia Central Island Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Lake Hylia Water Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('South Shore Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('South Shore East Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Ice Cave Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Desert Pass Ledge Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Desert Pass Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Dam Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('South Pass Mirror Spot', player), lambda state: False) + set_rule(world.get_entrance('Octoballoon Mirror Spot', player), lambda state: False) + + set_rule(world.get_entrance('Skull Woods Back Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Skull Woods Forgotten (West) Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Skull Woods Forgotten (East) Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Skull Woods Portal Entry Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Skull Woods Forgotten (Middle) Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Skull Woods Front Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Dark Lumberjack Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('West Dark Death Mountain (Top) Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Bubble Boy Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('West Dark Death Mountain (Bottom) Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('East Dark Death Mountain (Top West) Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('East Dark Death Mountain (Top East) Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('TR Ledge (West) Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('TR Ledge (East) Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('TR Isolated Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('East Dark Death Mountain (Bottom Plateau) Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('East Dark Death Mountain (Bottom Left) Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('East Dark Death Mountain (Bottom) Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Dark Floating Island Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Turtle Rock Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Turtle Rock Ledge Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Bumper Cave Area Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Bumper Cave Entry Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Bumper Cave Ledge Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Catfish Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Skull Woods Pass West Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Skull Woods Pass East Top Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Skull Woods Pass East Bottom Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Outcast Fortune Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Outcast Pond Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Dark Chapel Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Dark Chapel Ledge Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Dark Graveyard Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Dark Graveyard Ledge Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Dark Graveyard Grave Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Qirn Jump Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Qirn Jump East Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Dark Witch Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Dark Witch Northeast Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Catfish Approach Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Catfish Approach Ledge Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Village of Outcasts Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Village of Outcasts Southwest Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Hammer House Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Shield Shop Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Pyramid Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Pyramid Pass Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Pyramid Courtyard Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Pyramid Uncle Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Pyramid From Ledge Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Pyramid Entry Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Broken Bridge West Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Broken Bridge East Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Broken Bridge Northeast Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Palace of Darkness Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Hammer Pegs Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Hammer Pegs Entry Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Dark Dunes Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Dig Game Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Dig Game Ledge Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Frog Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Frog Prison Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Archery Game Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Stumpy Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Stumpy Pass Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Dark Bonk Rocks Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Big Bomb Shop Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Hammer Bridge North Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Hammer Bridge South Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Dark Hobo Mirror Spot', player), lambda state: state.has_Mirror(player) and state.has_Pearl(player) and state.has('Flippers', player)) + set_rule(world.get_entrance('Dark Tree Line Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Darkness Nook Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Misery Mire Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Misery Mire Ledge Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Misery Mire Blocked Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Misery Mire Main Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Stumpy Approach Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Stumpy Bush Entry Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Dark C Whirlpool Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Dark C Whirlpool Outer Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Hype Cave Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Ice Lake Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Ice Lake Southwest Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Ice Lake Southeast Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Ice Lake Northeast Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Ice Palace Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Shopping Mall Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Swmap Nook Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Swamp Nook Southeast Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Swamp Nook Pegs Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Swamp Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Dark South Pass Mirror Spot', player), lambda state: state.has_Mirror(player)) + set_rule(world.get_entrance('Bomber Corner Mirror Spot', player), lambda state: state.has_Mirror(player)) + + set_rule(world.get_entrance('Kakariko Teleporter (Hammer)', player), lambda state: False) + set_rule(world.get_entrance('Kakariko Teleporter (Rock)', player), lambda state: False) + set_rule(world.get_entrance('Top of Pyramid', player), lambda state: False) + set_rule(world.get_entrance('Top of Pyramid (Inner)', player), lambda state: False) + set_rule(world.get_entrance('East Hyrule Teleporter', player), lambda state: False) + set_rule(world.get_entrance('South Hyrule Teleporter', player), lambda state: False) + set_rule(world.get_entrance('South Teleporter Cliff Ledge Drop', player), lambda state: False) + set_rule(world.get_entrance('Desert Teleporter', player), lambda state: False) + set_rule(world.get_entrance('Lake Hylia Teleporter', player), lambda state: False) + set_rule(world.get_entrance('East Death Mountain Teleporter', player), lambda state: False) + set_rule(world.get_entrance('TR Pegs Teleporter', player), lambda state: False) + set_rule(world.get_entrance('West Dark World Teleporter (Hammer)', player), lambda state: state.has('Hammer', player) and state.has_Pearl(player)) + set_rule(world.get_entrance('West Dark World Teleporter (Rock)', player), lambda state: state.can_lift_heavy_rocks(player) and state.has_Pearl(player)) # bunny cannot lift bushes + set_rule(world.get_entrance('Post Aga Inverted Teleporter', player), lambda state: state.has('Beat Agahnim 1', player)) + set_rule(world.get_entrance('East Dark World Teleporter', player), lambda state: state.has('Hammer', player) and state.can_lift_rocks(player) and state.has_Pearl(player)) + set_rule(world.get_entrance('South Dark World Teleporter', player), lambda state: state.has('Hammer', player) and state.can_lift_rocks(player) and state.has_Pearl(player)) + set_rule(world.get_entrance('South Teleporter Cliff Ledge Drop', player), lambda state: state.can_lift_rocks(player) and state.has_Pearl(player)) + set_rule(world.get_entrance('Misery Mire Teleporter', player), lambda state: state.can_lift_heavy_rocks(player)) + set_rule(world.get_entrance('Ice Palace Teleporter', player), lambda state: state.can_lift_heavy_rocks(player)) + set_rule(world.get_entrance('Dark Death Mountain Teleporter (East)', player), lambda state: state.can_lift_heavy_rocks(player)) + set_rule(world.get_entrance('Turtle Rock Teleporter', player), lambda state: state.has('Hammer', player) and state.has_Pearl(player)) + + set_rule(world.get_entrance('Inverted Pyramid Hole', player), lambda state: state.has('Beat Agahnim 2', player) or world.open_pyramid[player]) + add_rule(world.get_entrance('Pyramid Hole', player), lambda state: False) + set_rule(world.get_entrance('Pyramid Entrance', player), lambda state: False) + set_rule(world.get_entrance('Agahnims Tower', player), lambda state: state.has_crystals(world.crystals_needed_for_gt[player], player)) + + +def old_inverted_rules(world, player): # s&q regions. link's house entrance is set to true so the filler knows the chest inside can always be reached # overworld requirements @@ -1266,48 +1441,150 @@ def inverted_rules(world, player): if world.swords[player] == 'swordless': swordless_rules(world, player) - set_rule(world.get_entrance('Inverted Ganons Tower', player), lambda state: state.has_crystals(world.crystals_needed_for_gt[player], player)) + set_rule(world.get_entrance('Ganons Tower', player), lambda state: state.has_crystals(world.crystals_needed_for_gt[player], player)) -def no_glitches_rules(world, player): - set_rule(world.get_entrance('Waterfall of Wishing Cave Entry', player), lambda state: state.has('Flippers', player)) - set_rule(world.get_entrance('River Bend Water Drop', player), lambda state: state.has('Flippers', player)) - set_rule(world.get_entrance('River Bend East Water Drop', player), lambda state: state.has('Flippers', player)) - set_rule(world.get_entrance('Potion Shop Water Drop', player), lambda state: state.has('Flippers', player)) - set_rule(world.get_entrance('Potion Shop Northeast Water Drop', player), lambda state: state.has('Flippers', player)) - set_rule(world.get_entrance('Zora Approach Water Drop', player), lambda state: state.has('Flippers', player)) - set_rule(world.get_entrance('C Whirlpool Water Entry', player), lambda state: state.has('Flippers', player)) - set_rule(world.get_entrance('Statues Water Entry', player), lambda state: state.has('Flippers', player)) - set_rule(world.get_entrance('Lake Hylia South Water Drop', player), lambda state: state.has('Flippers', player)) - set_rule(world.get_entrance('Octoballoon Water Drop', player), lambda state: state.has('Flippers', player)) - set_rule(world.get_entrance('Qirn Jump Water Drop', player), lambda state: state.has_Pearl(player) and state.has('Flippers', player)) - set_rule(world.get_entrance('Qirn Jump East Water Drop', player), lambda state: state.has_Pearl(player) and state.has('Flippers', player)) - set_rule(world.get_entrance('Dark Witch Water Drop', player), lambda state: state.has_Pearl(player) and state.has('Flippers', player)) - set_rule(world.get_entrance('Dark Witch Northeast Water Drop', player), lambda state: state.has_Pearl(player) and state.has('Flippers', player)) - set_rule(world.get_entrance('Catfish Approach Water Drop', player), lambda state: state.has_Pearl(player) and state.has('Flippers', player)) - set_rule(world.get_entrance('Dark C Whirlpool Water Entry', player), lambda state: state.has_Pearl(player) and state.has('Flippers', player)) - set_rule(world.get_entrance('Hype Cave Water Entry', player), lambda state: state.has_Pearl(player) and state.has('Flippers', player)) - set_rule(world.get_entrance('Ice Lake Southeast Water Drop', player), lambda state: state.has_Pearl(player) and state.has('Flippers', player)) - set_rule(world.get_entrance('Bomber Corner Water Drop', player), lambda state: state.has_Pearl(player) and state.has('Flippers', player)) +def ow_bunny_rules(world, player): + add_bunny_rule(world.get_location('Mushroom', player), player) + add_bunny_rule(world.get_location('Zora\'s Ledge', player), player) + add_bunny_rule(world.get_location('Maze Race', player), player) + add_bunny_rule(world.get_location('Flute Spot', player), player) + add_bunny_rule(world.get_location('Catfish', player), player) + + add_bunny_rule(world.get_entrance('Lost Woods Hideout Drop', player), player) + add_bunny_rule(world.get_entrance('Lumberjack Tree Tree', player), player) + add_bunny_rule(world.get_entrance('Waterfall of Wishing', player), player) + add_bunny_rule(world.get_entrance('Bonk Rock Cave', player), player) + add_bunny_rule(world.get_entrance('Sanctuary Grave', player), player) + add_bunny_rule(world.get_entrance('Kings Grave', player), player) + add_bunny_rule(world.get_entrance('North Fairy Cave Drop', player), player) + add_bunny_rule(world.get_entrance('Hyrule Castle Secret Entrance Drop', player), player) + add_bunny_rule(world.get_entrance('Bonk Fairy (Light)', player), player) + add_bunny_rule(world.get_entrance('Checkerboard Cave', player), player) + add_bunny_rule(world.get_entrance('50 Rupee Cave', player), player) + add_bunny_rule(world.get_entrance('20 Rupee Cave', player), player) + add_bunny_rule(world.get_entrance('Skull Woods First Section Hole (North)', player), player) # bunny cannot lift bush + add_bunny_rule(world.get_entrance('Skull Woods Second Section Hole', player), player) # bunny cannot lift bush + add_bunny_rule(world.get_entrance('Skull Woods Final Section', player), player) # bunny cannot use fire rod + add_bunny_rule(world.get_entrance('Hookshot Cave', player), player) + add_bunny_rule(world.get_entrance('Turtle Rock', player), player) + add_bunny_rule(world.get_entrance('Thieves Town', player), player) # bunny cannot pull + add_bunny_rule(world.get_entrance('Brewery', player), player) # bomb required + add_bunny_rule(world.get_entrance('Palace of Darkness', player), player) # kiki needs pearl + add_bunny_rule(world.get_entrance('Dark World Hammer Peg Cave', player), player) + add_bunny_rule(world.get_entrance('Bonk Fairy (Dark)', player), player) + add_bunny_rule(world.get_entrance('Misery Mire', player), player) + add_bunny_rule(world.get_entrance('Hype Cave', player), player) # bomb required + add_bunny_rule(world.get_entrance('Dark Lake Hylia Ledge Fairy', player), player) # bomb required + add_bunny_rule(world.get_entrance('Dark Lake Hylia Ledge Spike Cave', player), player) + + add_bunny_rule(world.get_entrance('Lost Woods Bush (West)', player), player) + add_bunny_rule(world.get_entrance('Lost Woods Bush (East)', player), player) + add_bunny_rule(world.get_entrance('DM Hammer Bridge (West)', player), player) + add_bunny_rule(world.get_entrance('DM Hammer Bridge (East)', player), player) + add_bunny_rule(world.get_entrance('Fairy Ascension Rocks (North)', player), player) + add_bunny_rule(world.get_entrance('Fairy Ascension Rocks (South)', player), player) + add_bunny_rule(world.get_entrance('DM Broken Bridge (West)', player), player) + add_bunny_rule(world.get_entrance('DM Broken Bridge (East)', player), player) + add_bunny_rule(world.get_entrance('TR Pegs Ledge Entry', player), player) + add_bunny_rule(world.get_entrance('Death Mountain Entrance Rock', player), player) + add_bunny_rule(world.get_entrance('Kings Grave Outer Rocks', player), player) + add_bunny_rule(world.get_entrance('Kings Grave Inner Rocks', player), player) + add_bunny_rule(world.get_entrance('Potion Shop Rock (South)', player), player) + add_bunny_rule(world.get_entrance('Potion Shop Rock (North)', player), player) + add_bunny_rule(world.get_entrance('Zora Approach Rocks (West)', player), player) + add_bunny_rule(world.get_entrance('Zora Approach Rocks (East)', player), player) + add_bunny_rule(world.get_entrance('Kakariko Southwest Bush (North)', player), player) + add_bunny_rule(world.get_entrance('Kakariko Southwest Bush (South)', player), player) + add_bunny_rule(world.get_entrance('Kakariko Yard Bush (North)', player), player) + add_bunny_rule(world.get_entrance('Kakariko Yard Bush (South)', player), player) + add_bunny_rule(world.get_entrance('Hyrule Castle Courtyard Bush (North)', player), player) + add_bunny_rule(world.get_entrance('Hyrule Castle Courtyard Bush (South)', player), player) + add_bunny_rule(world.get_entrance('Hyrule Castle Inner East Rock', player), player) + add_bunny_rule(world.get_entrance('Hyrule Castle Outer East Rock', player), player) + add_bunny_rule(world.get_entrance('Wooden Bridge Bush (North)', player), player) + add_bunny_rule(world.get_entrance('Wooden Bridge Bush (South)', player), player) + add_bunny_rule(world.get_entrance('Bat Cave Ledge Peg', player), player) + add_bunny_rule(world.get_entrance('Desert Ledge Outer Rocks', player), player) + add_bunny_rule(world.get_entrance('Desert Ledge Inner Rocks', player), player) + add_bunny_rule(world.get_entrance('Flute Boy Bush (North)', player), player) + add_bunny_rule(world.get_entrance('Flute Boy Bush (South)', player), player) + add_bunny_rule(world.get_entrance('C Whirlpool Rock (Bottom)', player), player) + add_bunny_rule(world.get_entrance('C Whirlpool Rock (Top)', player), player) + add_bunny_rule(world.get_entrance('Desert Pass Rocks (North)', player), player) + add_bunny_rule(world.get_entrance('Desert Pass Rocks (South)', player), player) + add_bunny_rule(world.get_entrance('Skull Woods Bush Rock (West)', player), player) + add_bunny_rule(world.get_entrance('Skull Woods Bush Rock (East)', player), player) + add_bunny_rule(world.get_entrance('Skull Woods Forgotten Bush (West)', player), player) + add_bunny_rule(world.get_entrance('Skull Woods Forgotten Bush (East)', player), player) + add_bunny_rule(world.get_entrance('Skull Woods Second Section Hole', player), player) + add_bunny_rule(world.get_entrance('Bumper Cave Entrance Rock', player), player) + add_bunny_rule(world.get_entrance('Skull Woods Pass Bush Row (West)', player), player) + add_bunny_rule(world.get_entrance('Skull Woods Pass Bush Row (East)', player), player) + add_bunny_rule(world.get_entrance('Skull Woods Pass Rock (Top)', player), player) + add_bunny_rule(world.get_entrance('Skull Woods Pass Rock (Bottom)', player), player) + add_bunny_rule(world.get_entrance('Dark Witch Rock (North)', player), player) + add_bunny_rule(world.get_entrance('Dark Witch Rock (South)', player), player) + add_bunny_rule(world.get_entrance('Catfish Approach Rocks (West)', player), player) + add_bunny_rule(world.get_entrance('Catfish Approach Rocks (East)', player), player) + add_bunny_rule(world.get_entrance('Village of Outcasts Pegs', player), player) + add_bunny_rule(world.get_entrance('Grassy Lawn Pegs', player), player) + add_bunny_rule(world.get_entrance('Broken Bridge Hammer Rock (South)', player), player) + add_bunny_rule(world.get_entrance('Broken Bridge Hammer Rock (North)', player), player) + add_bunny_rule(world.get_entrance('Broken Bridge Hookshot Gap', player), player) + add_bunny_rule(world.get_entrance('Peg Area Rocks (West)', player), player) + add_bunny_rule(world.get_entrance('Peg Area Rocks (East)', player), player) + add_bunny_rule(world.get_entrance('Dig Game To Ledge Drop', player), player) + add_bunny_rule(world.get_entrance('Frog Rock (Inner)', player), player) + add_bunny_rule(world.get_entrance('Frog Rock (Outer)', player), player) + add_bunny_rule(world.get_entrance('Archery Game Rock (North)', player), player) + add_bunny_rule(world.get_entrance('Archery Game Rock (South)', player), player) + add_bunny_rule(world.get_entrance('Hammer Bridge Pegs (North)', player), player) + add_bunny_rule(world.get_entrance('Hammer Bridge Pegs (South)', player), player) + add_bunny_rule(world.get_entrance('Stumpy Approach Bush (North)', player), player) + add_bunny_rule(world.get_entrance('Stumpy Approach Bush (South)', player), player) + add_bunny_rule(world.get_entrance('Dark C Whirlpool Rock (Bottom)', player), player) + add_bunny_rule(world.get_entrance('Dark C Whirlpool Rock (Top)', player), player) + + add_bunny_rule(world.get_entrance('Zora Waterfall Water Drop', player), player) + add_bunny_rule(world.get_entrance('Zora Waterfall Water Entry', player), player) add_bunny_rule(world.get_entrance('Waterfall of Wishing Cave Entry', player), player) add_bunny_rule(world.get_entrance('River Bend Water Drop', player), player) add_bunny_rule(world.get_entrance('River Bend East Water Drop', player), player) add_bunny_rule(world.get_entrance('Potion Shop Water Drop', player), player) add_bunny_rule(world.get_entrance('Potion Shop Northeast Water Drop', player), player) add_bunny_rule(world.get_entrance('Zora Approach Water Drop', player), player) + add_bunny_rule(world.get_entrance('Wooden Bridge Water Drop', player), player) + add_bunny_rule(world.get_entrance('Wooden Bridge Northeast Water Drop', player), player) add_bunny_rule(world.get_entrance('C Whirlpool Water Entry', player), player) add_bunny_rule(world.get_entrance('Statues Water Entry', player), player) + add_bunny_rule(world.get_entrance('Lake Hylia Water Drop', player), player) add_bunny_rule(world.get_entrance('Lake Hylia South Water Drop', player), player) + add_bunny_rule(world.get_entrance('Lake Hylia Northeast Water Drop', player), player) + add_bunny_rule(world.get_entrance('Lake Hylia Central Water Drop', player), player) + add_bunny_rule(world.get_entrance('Lake Hylia Island Water Drop', player), player) + add_bunny_rule(world.get_entrance('Ice Cave SW', player), player) add_bunny_rule(world.get_entrance('Octoballoon Water Drop', player), player) + add_bunny_rule(world.get_entrance('Octoballoon Waterfall Water Drop', player), player) add_bunny_rule(world.get_entrance('Qirn Jump Water Drop', player), player) add_bunny_rule(world.get_entrance('Qirn Jump East Water Drop', player), player) add_bunny_rule(world.get_entrance('Dark Witch Water Drop', player), player) add_bunny_rule(world.get_entrance('Dark Witch Northeast Water Drop', player), player) add_bunny_rule(world.get_entrance('Catfish Approach Water Drop', player), player) + add_bunny_rule(world.get_entrance('Broken Bridge Water Drop', player), player) + add_bunny_rule(world.get_entrance('Broken Bridge Northeast Water Drop', player), player) + add_bunny_rule(world.get_entrance('Broken Bridge West Water Drop', player), player) + add_bunny_rule(world.get_entrance('Hammer Bridge Water Drop', player), player) add_bunny_rule(world.get_entrance('Dark C Whirlpool Water Entry', player), player) add_bunny_rule(world.get_entrance('Hype Cave Water Entry', player), player) + add_bunny_rule(world.get_entrance('Ice Lake Water Drop', player), player) + add_bunny_rule(world.get_entrance('Ice Lake Northeast Water Drop', player), player) + add_bunny_rule(world.get_entrance('Ice Lake Southwest Water Drop', player), player) add_bunny_rule(world.get_entrance('Ice Lake Southeast Water Drop', player), player) + add_bunny_rule(world.get_entrance('Shopping Mall SW', player), player) add_bunny_rule(world.get_entrance('Bomber Corner Water Drop', player), player) + add_bunny_rule(world.get_entrance('Bomber Corner Waterfall Water Drop', player), player) +def no_glitches_rules(world, player): # todo: move some dungeon rules to no glictes logic - see these for examples # add_rule(world.get_entrance('Ganons Tower (Hookshot Room)', player), lambda state: state.has('Hookshot', player) or state.has_Boots(player)) # add_rule(world.get_entrance('Ganons Tower (Double Switch Room)', player), lambda state: state.has('Hookshot', player)) @@ -1320,7 +1597,7 @@ def no_glitches_rules(world, player): def fake_flipper_rules(world, player): - set_rule(world.get_entrance('Waterfall of Wishing Cave Entry', player), lambda state: state.has('Flippers', player) or (state.has_Pearl(player) and state.can_reach('C Whirlpool Area', player))) + set_rule(world.get_entrance('Waterfall of Wishing Cave Entry', player), lambda state: state.has('Flippers', player) or (state.has_Pearl(player) and state.can_reach('Lake Hylia Water', player))) set_rule(world.get_entrance('River Bend Water Drop', player), lambda state: True) set_rule(world.get_entrance('River Bend East Water Drop', player), lambda state: True) set_rule(world.get_entrance('Potion Shop Water Drop', player), lambda state: True) @@ -1330,15 +1607,15 @@ def fake_flipper_rules(world, player): set_rule(world.get_entrance('Statues Water Entry', player), lambda state: True) set_rule(world.get_entrance('Lake Hylia South Water Drop', player), lambda state: True) set_rule(world.get_entrance('Octoballoon Water Drop', player), lambda state: True) - set_rule(world.get_entrance('Qirn Jump Water Drop', player), lambda state: state.has_Pearl(player)) - set_rule(world.get_entrance('Qirn Jump East Water Drop', player), lambda state: state.has_Pearl(player)) - set_rule(world.get_entrance('Dark Witch Water Drop', player), lambda state: state.has_Pearl(player)) - set_rule(world.get_entrance('Dark Witch Northeast Water Drop', player), lambda state: state.has_Pearl(player)) - set_rule(world.get_entrance('Catfish Approach Water Drop', player), lambda state: state.has_Pearl(player)) - set_rule(world.get_entrance('Dark C Whirlpool Water Entry', player), lambda state: state.has_Pearl(player)) - set_rule(world.get_entrance('Hype Cave Water Entry', player), lambda state: state.has_Pearl(player)) - set_rule(world.get_entrance('Ice Lake Southeast Water Drop', player), lambda state: state.has_Pearl(player)) - set_rule(world.get_entrance('Bomber Corner Water Drop', player), lambda state: state.has_Pearl(player)) + set_rule(world.get_entrance('Qirn Jump Water Drop', player), lambda state: True) + set_rule(world.get_entrance('Qirn Jump East Water Drop', player), lambda state: True) + set_rule(world.get_entrance('Dark Witch Water Drop', player), lambda state: True) + set_rule(world.get_entrance('Dark Witch Northeast Water Drop', player), lambda state: True) + set_rule(world.get_entrance('Catfish Approach Water Drop', player), lambda state: True) + set_rule(world.get_entrance('Dark C Whirlpool Water Entry', player), lambda state: True) + set_rule(world.get_entrance('Hype Cave Water Entry', player), lambda state: True) + set_rule(world.get_entrance('Ice Lake Southeast Water Drop', player), lambda state: True) + set_rule(world.get_entrance('Bomber Corner Water Drop', player), lambda state: True) add_bunny_rule(world.get_entrance('Waterfall of Wishing Cave Entry', player), player) add_bunny_rule(world.get_entrance('River Bend Water Drop', player), player) add_bunny_rule(world.get_entrance('River Bend East Water Drop', player), player) @@ -1455,27 +1732,22 @@ def open_rules(world, player): def swordless_rules(world, player): - set_rule(world.get_entrance('Tower Altar NW', player), lambda state: True) set_rule(world.get_entrance('Skull Vines NW', player), lambda state: True) set_rule(world.get_entrance('Ice Lobby WS', player), lambda state: state.has('Fire Rod', player) or state.has('Bombos', player)) set_rule(world.get_location('Ice Palace - Freezor Chest', player), lambda state: state.has('Fire Rod', player) or state.has('Bombos', player)) set_rule(world.get_location('Ether Tablet', player), lambda state: state.has('Book of Mudora', player) and state.has('Hammer', player)) + set_rule(world.get_location('Bombos Tablet', player), lambda state: state.has('Book of Mudora', player) and state.has('Hammer', player)) set_rule(world.get_location('Ganon', player), lambda state: state.has('Hammer', player) and state.has_fire_source(player) and state.has('Silver Arrows', player) and state.can_shoot_arrows(player) and state.has_crystals(world.crystals_needed_for_ganon[player], player)) set_rule(world.get_entrance('Ganon Drop', player), lambda state: state.has('Hammer', player)) # need to damage ganon to get tiles to drop - + if world.mode[player] != 'inverted': set_rule(world.get_entrance('Agahnims Tower', player), lambda state: state.has('Cape', player) or state.has('Hammer', player) or state.has('Beat Agahnim 1', player)) # barrier gets removed after killing agahnim, relevant for entrance shuffle - set_rule(world.get_entrance('Turtle Rock', player), lambda state: state.has_Pearl(player) and state.has_turtle_rock_medallion(player) and state.can_reach('Turtle Rock Ledge', 'Region', player)) # sword not required to use medallion for opening in swordless (!) - set_rule(world.get_entrance('Misery Mire', player), lambda state: state.has_Pearl(player) and state.has_misery_mire_medallion(player)) # sword not required to use medallion for opening in swordless (!) - set_rule(world.get_location('Bombos Tablet', player), lambda state: state.has('Book of Mudora', player) and state.has('Hammer', player) and state.has_Mirror(player)) - else: - # only need ddm access for aga tower in inverted - set_rule(world.get_entrance('Turtle Rock', player), lambda state: state.has_turtle_rock_medallion(player) and state.can_reach('Turtle Rock (Top)', 'Region', player)) # sword not required to use medallion for opening in swordless (!) - set_rule(world.get_entrance('Misery Mire', player), lambda state: state.has_misery_mire_medallion(player)) # sword not required to use medallion for opening in swordless (!) - set_rule(world.get_location('Bombos Tablet', player), lambda state: state.has('Book of Mudora', player) and state.has('Hammer', player)) + set_rule(world.get_entrance('Turtle Rock', player), lambda state: state.has_turtle_rock_medallion(player) and state.can_reach('Turtle Rock Ledge', 'Region', player)) # sword not required to use medallion for opening in swordless (!) + add_bunny_rule(world.get_entrance('Turtle Rock', player), player) + add_bunny_rule(world.get_entrance('Misery Mire', player), player) std_kill_rooms = { 'Hyrule Dungeon Armory Main': ['Hyrule Dungeon Armory S', 'Hyrule Dungeon Armory ES'], # One green guard @@ -1518,8 +1790,8 @@ def add_connection(parent_name, target_name, entrance_name, world, player): def standard_rules(world, player): add_connection('Menu', 'Hyrule Castle Secret Entrance', 'Uncle S&Q', world, player) world.get_entrance('Uncle S&Q', player).hide_path = True - set_rule(world.get_entrance('Links House S&Q', player), lambda state: state.can_reach('Sanctuary', 'Region', player)) - set_rule(world.get_entrance('Sanctuary S&Q', player), lambda state: state.can_reach('Sanctuary', 'Region', player)) + set_rule(world.get_entrance('Links House S&Q', player), lambda state: state.can_reach('Sanctuary', 'Region', player) and state.has('Zelda Delivered', player)) + set_rule(world.get_entrance('Sanctuary S&Q', player), lambda state: state.can_reach('Sanctuary', 'Region', player) and state.has('Zelda Delivered', player)) # these are because of rails if world.shuffle[player] != 'vanilla': # where ever these happen to be @@ -1574,8 +1846,8 @@ def standard_rules(world, player): add_rule(world.get_entrance('Central Bonk Rocks SW', player), lambda state: state.has('Zelda Delivered', player)) add_rule(world.get_entrance('Hyrule Castle WN', player), lambda state: state.has('Zelda Delivered', player)) add_rule(world.get_entrance('Hyrule Castle ES', player), lambda state: state.has('Zelda Delivered', player)) - set_rule(world.get_entrance('Hyrule Castle Main Gate (South)', player), lambda state: state.has('Zelda Delivered', player)) - set_rule(world.get_entrance('Hyrule Castle Main Gate (North)', player), lambda state: state.has('Zelda Delivered', player)) + add_rule(world.get_entrance('Hyrule Castle Main Gate (South)', player), lambda state: state.has('Zelda Delivered', player)) + add_rule(world.get_entrance('Hyrule Castle Main Gate (North)', player), lambda state: state.has('Zelda Delivered', player)) def find_rules_for_zelda_delivery(world, player): @@ -1842,7 +2114,7 @@ def set_big_bomb_rules(world, player): #add_rule(world.get_entrance('Pyramid Fairy', player), lambda state: (state.can_lift_heavy_rocks(player) and state.has('Flippers', player) and state.can_flute(player) and state.has('Hammer', player) and state.has('Hookshot', player) and state.has_Pearl(player) and state.has_Mirror(player))) def set_inverted_big_bomb_rules(world, player): - bombshop_entrance = world.get_region('Inverted Big Bomb Shop', player).entrances[0] + bombshop_entrance = world.get_region('Links House', player).entrances[0] Normal_LW_entrances = ['Blinds Hideout', 'Bonk Fairy (Light)', 'Lake Hylia Fairy', @@ -1887,10 +2159,10 @@ def set_inverted_big_bomb_rules(world, player): 'Hyrule Castle Secret Entrance Stairs', 'Hyrule Castle Entrance (West)', 'Hyrule Castle Entrance (East)', - 'Inverted Ganons Tower', + 'Ganons Tower', 'Cave 45', 'Checkerboard Cave', - 'Inverted Big Bomb Shop'] + 'Links House'] Isolated_LW_entrances = ['Old Man Cave (East)', 'Old Man House (Bottom)', 'Old Man House (Top)', @@ -1918,7 +2190,7 @@ def set_inverted_big_bomb_rules(world, player): 'C-Shaped House', 'Chest Game', 'Dark World Hammer Peg Cave', - 'Inverted Dark Sanctuary', + 'Dark Sanctuary Hint', 'Fortune Teller (Dark)', 'Dark World Lumberjack Shop', 'Thieves Town', @@ -1927,7 +2199,7 @@ def set_inverted_big_bomb_rules(world, player): Southern_DW_entrances = ['Hype Cave', 'Bonk Fairy (Dark)', 'Archery Game', - 'Inverted Links House', + 'Big Bomb Shop', 'Dark Lake Hylia Shop', 'Swamp Palace'] Isolated_DW_entrances = ['Spike Cave', @@ -1944,7 +2216,7 @@ def set_inverted_big_bomb_rules(world, player): 'Hookshot Cave', 'Turtle Rock Isolated Ledge Entrance', 'Hookshot Cave Back Entrance', - 'Inverted Agahnims Tower'] + 'Agahnims Tower'] LW_walkable_entrances = ['Dark Lake Hylia Ledge Fairy', 'Dark Lake Hylia Ledge Spike Cave', 'Dark Lake Hylia Ledge Hint', @@ -1961,7 +2233,7 @@ def set_inverted_big_bomb_rules(world, player): 'Spectacle Rock Cave (Bottom)'] set_rule(world.get_entrance('Pyramid Fairy', player), - lambda state: state.can_reach('East Dark World', 'Region', player) and state.can_reach('Inverted Big Bomb Shop', 'Region', player) and state.has('Crystal 5', player) and state.has('Crystal 6', player)) + lambda state: state.can_reach('East Dark World', 'Region', player) and state.can_reach('Links House', 'Region', player) and state.has('Crystal 5', player) and state.has('Crystal 6', player)) # Key for below abbreviations: # P = pearl