From e1f2369f13f444aa443e99671f0be5f52f7d5a6c Mon Sep 17 00:00:00 2001 From: KrisDavie Date: Mon, 4 Dec 2023 19:43:13 +0100 Subject: [PATCH] Refactor OWG rules to use lists rather than generators --- OverworldGlitchRules.py | 467 +++++++++++++++++++++------------------- Rules.py | 16 +- 2 files changed, 259 insertions(+), 224 deletions(-) diff --git a/OverworldGlitchRules.py b/OverworldGlitchRules.py index 890e8420..ba44ba25 100644 --- a/OverworldGlitchRules.py +++ b/OverworldGlitchRules.py @@ -4,261 +4,296 @@ Helper functions to deliver entrance/exit/region sets to OWG rules. from BaseClasses import Entrance +# Cave regions that superbunny can get through - but only with a sword. +sword_required_superbunny_mirror_regions = ["Spiral Cave (Top)"] -def get_sword_required_superbunny_mirror_regions(): - """ - Cave regions that superbunny can get through - but only with a sword. - """ - yield 'Spiral Cave (Top)' +# Cave regions that superbunny can get through - but only with boots. +boots_required_superbunny_mirror_regions = ["Two Brothers House"] -def get_boots_required_superbunny_mirror_regions(): - """ - Cave regions that superbunny can get through - but only with boots. - """ - yield 'Two Brothers House' +# Cave locations that superbunny can access - but only with boots. +boots_required_superbunny_mirror_locations = [ + "Sahasrahla's Hut - Left", + "Sahasrahla's Hut - Middle", + "Sahasrahla's Hut - Right", +] -def get_boots_required_superbunny_mirror_locations(): - """ - Cave locations that superbunny can access - but only with boots. - """ - yield 'Sahasrahla\'s Hut - Left' - yield 'Sahasrahla\'s Hut - Middle' - yield 'Sahasrahla\'s Hut - Right' +# Entrances that can't be superbunny-mirrored into. +invalid_mirror_bunny_entrances = [ + "Skull Woods Final Section", + "Hype Cave", + "Bonk Fairy (Dark)", + "Thieves Town", + "Hammer Peg Cave", + "Brewery", + "Hookshot Cave", + "Dark Lake Hylia Ledge Fairy", + "Dark Lake Hylia Ledge Spike Cave", + "Palace of Darkness", + "Misery Mire", + "Turtle Rock", + "Bonk Rock Cave", + "Bonk Fairy (Light)", + "50 Rupee Cave", + "20 Rupee Cave", + "Checkerboard Cave", + "Light Hype Fairy", + "Waterfall of Wishing", + "Light World Bomb Hut", + "Mini Moldorm Cave", + "Ice Rod Cave", + "Sanctuary Grave", + "Kings Grave", + "Sanctuary Grave", + "Hyrule Castle Secret Entrance Drop", + "Skull Woods Second Section Hole", + "Skull Woods First Section Hole (North)", +] + +# Interior locations that can be accessed with superbunny state. +superbunny_accessible_locations = [ + "Waterfall of Wishing - Left", + "Waterfall of Wishing - Right", + "King's Tomb", + "Floodgate", + "Floodgate Chest", + "Cave 45", + "Bonk Rock Cave", + "Brewery", + "C-Shaped House", + "Chest Game", + "Mire Shed - Left", + "Mire Shed - Right", + "Secret Passage", + "Ice Rod Cave", + "Pyramid Fairy - Left", + "Pyramid Fairy - Right", + "Superbunny Cave - Top", + "Superbunny Cave - Bottom", + "Blind's Hideout - Left", + "Blind's Hideout - Right", + "Blind's Hideout - Far Left", + "Blind's Hideout - Far Right", + "Kakariko Well - Left", + "Kakariko Well - Middle", + "Kakariko Well - Right", + "Kakariko Well - Bottom", + "Kakariko Tavern", + "Library", + "Spiral Cave", +] + boots_required_superbunny_mirror_locations -def get_invalid_mirror_bunny_entrances(): - """ - Entrances that can't be superbunny-mirrored into. - """ - yield 'Skull Woods Final Section' - yield 'Hype Cave' - yield 'Bonk Fairy (Dark)' - yield 'Thieves Town' - yield 'Hammer Peg Cave' - yield 'Brewery' - yield 'Hookshot Cave' - yield 'Dark Lake Hylia Ledge Fairy' - yield 'Dark Lake Hylia Ledge Spike Cave' - yield 'Palace of Darkness' - yield 'Misery Mire' - yield 'Turtle Rock' - yield 'Bonk Rock Cave' - yield 'Bonk Fairy (Light)' - yield '50 Rupee Cave' - yield '20 Rupee Cave' - yield 'Checkerboard Cave' - yield 'Light Hype Fairy' - yield 'Waterfall of Wishing' - yield 'Light World Bomb Hut' - yield 'Mini Moldorm Cave' - yield 'Ice Rod Cave' - yield 'Sanctuary Grave' - yield 'Kings Grave' - yield 'Sanctuary Grave' - yield 'Hyrule Castle Secret Entrance Drop' - yield 'Skull Woods Second Section Hole' - yield 'Skull Woods First Section Hole (North)' +# Entrances that can be reached with full equipment using overworld glitches and don't need to be an exit. +# The following are still be mandatory exits: +# Open: +# Turtle Rock Isolated Ledge Entrance +# Skull Woods Second Section Door (West) (or Skull Woods Final Section) +# Inverted: +# Two Brothers House (West) +# Desert Palace Entrance (East) -def get_superbunny_accessible_locations(): - """ - Interior locations that can be accessed with superbunny state. - """ +non_mandatory_exits = [ + "Bumper Cave (Top)", + "Death Mountain Return Cave (West)", + "Hookshot Cave Back Entrance", +] - yield 'Waterfall of Wishing - Left' - yield 'Waterfall of Wishing - Right' - yield 'King\'s Tomb' - yield 'Floodgate' - yield 'Floodgate Chest' - yield 'Cave 45' - yield 'Bonk Rock Cave' - yield 'Brewery' - yield 'C-Shaped House' - yield 'Chest Game' - yield 'Mire Shed - Left' - yield 'Mire Shed - Right' - yield 'Secret Passage' - yield 'Ice Rod Cave' - yield 'Pyramid Fairy - Left' - yield 'Pyramid Fairy - Right' - yield 'Superbunny Cave - Top' - yield 'Superbunny Cave - Bottom' - yield 'Blind\'s Hideout - Left' - yield 'Blind\'s Hideout - Right' - yield 'Blind\'s Hideout - Far Left' - yield 'Blind\'s Hideout - Far Right' - yield 'Kakariko Well - Left' - yield 'Kakariko Well - Middle' - yield 'Kakariko Well - Right' - yield 'Kakariko Well - Bottom' - yield 'Kakariko Tavern' - yield 'Library' - yield 'Spiral Cave' - for location in get_boots_required_superbunny_mirror_locations(): - yield location +inverted_non_mandatory_exits = [ + "Desert Palace Entrance (North)", + "Desert Palace Entrance (West)", + "Agahnims Tower", + "Hyrule Castle Entrance (West)", + "Hyrule Castle Entrance (East)", +] + non_mandatory_exits + +open_non_mandatory_exits_ = [ + "Dark Death Mountain Ledge (West)", + "Dark Death Mountain Ledge (East)", + "Mimic Cave", + "Desert Palace Entrance (East)", +] + non_mandatory_exits -def get_non_mandatory_exits(inverted): - """ - Entrances that can be reached with full equipment using overworld glitches and don't need to be an exit. - The following are still be mandatory exits: +# Special Light World region exits that require boots clips. - Open: - Turtle Rock Isolated Ledge Entrance - Skull Woods Second Section Door (West) (or Skull Woods Final Section) +inverted_boots_clip_exits_lw = [ + ("Light World DMA Clip Spot", "Light World", "West Death Mountain (Bottom)"), + ("Hera Ascent", "West Death Mountain (Bottom)", "West Death Mountain (Top)"), + ("Death Mountain Return Ledge Clip Spot", "Light World", "Death Mountain Return Ledge"), + ("Death Mountain Entrance Clip Spot", "Light World", "Death Mountain Entrance"), + ("Death Mountain Glitched Bridge", "West Death Mountain (Bottom)", "East Death Mountain (Top)"), + ("Zora Descent Clip Spot", "East Death Mountain (Top)", "Zoras Domain"), + ("Desert Northern Cliffs", "Light World", "Desert Northern Cliffs"), + ("Desert Ledge Dropdown", "Desert Northern Cliffs", "Desert Ledge"), + ("Desert Palace Entrance Dropdown", "Desert Northern Cliffs", "Desert Palace Entrance (North) Spot"), + ("Lake Hylia Island Clip Spot", "Light World", "Lake Hylia Island"), + ("Death Mountain Descent", "West Death Mountain (Bottom)", "Light World"), + ("Kings Grave Clip Spot", "West Death Mountain (Bottom)", "Kings Grave Area"), + ("Maze Race Clip Spot", "Light World", "Maze Race Ledge"), +] - Inverted: - Two Brothers House (West) - Desert Palace Entrance (East) - """ +open_boots_clip_exits_lw = [ + ("Graveyard Ledge Clip Spot", "West Death Mountain (Bottom)", "Graveyard Ledge"), + ("Desert Ledge (Northeast) Dropdown", "Desert Northern Cliffs", "Desert Checkerboard Ledge"), + ("Spectacle Rock Clip Spot", "West Death Mountain (Top)", "Spectacle Rock"), + ("Bombos Tablet Clip Spot", "Light World", "Bombos Tablet Ledge"), + ("Floating Island Clip Spot", "East Death Mountain (Top)", "Death Mountain Floating Island"), + ("Cave 45 Clip Spot", "Light World", "Cave 45 Ledge"), +] + inverted_boots_clip_exits_lw - yield 'Bumper Cave (Top)' - yield 'Death Mountain Return Cave (West)' - yield 'Hookshot Cave Back Entrance' +# Special Dark World region exits that require boots clips. +boots_clip_exits_dw = [ + ("Dark World DMA Clip Spot", "West Dark World", "West Dark Death Mountain (Bottom)"), + ("Bumper Cave Ledge Clip Spot", "West Dark World", "Bumper Cave Ledge"), + ("Bumper Cave Entrance Clip Spot", "West Dark World", "Bumper Cave Entrance"), + ("Catfish Descent", "Dark Death Mountain (Top)", "Catfish Area"), + ("Hammer Pegs River Clip Spot", "East Dark World", "Hammer Peg Area"), + ("Dark Lake Hylia Ledge Clip Spot", "East Dark World", "Southeast Dark World"), + ("Dark Desert Cliffs Clip Spot", "South Dark World", "Dark Desert"), + ("DW Floating Island Clip Spot", "East Dark Death Mountain (Bottom)", "Dark Death Mountain Floating Island"), +] - if inverted: - yield 'Desert Palace Entrance (North)' - yield 'Desert Palace Entrance (West)' - yield 'Agahnims Tower' - yield 'Hyrule Castle Entrance (West)' - yield 'Hyrule Castle Entrance (East)' - else: - yield 'Dark Death Mountain Ledge (West)' - yield 'Dark Death Mountain Ledge (East)' - yield 'Mimic Cave' - yield 'Desert Palace Entrance (East)' +open_boots_clip_exits_dw = [ + ("Dark Death Mountain Descent", "West Dark Death Mountain (Bottom)", "West Dark World"), + ("Ganons Tower Ascent", "West Dark Death Mountain (Bottom)", "Dark Death Mountain (Top)"), + ("Dark Death Mountain Glitched Bridge", "West Dark Death Mountain (Bottom)", "Dark Death Mountain (Top)"), + ("Turtle Rock (Top) Clip Spot", "Dark Death Mountain (Top)", "Turtle Rock (Top)"), +] + boots_clip_exits_dw + +inverted_boots_clip_exits_dw = [ + ("Dark Desert Teleporter Clip Spot", "Dark Desert", "Dark Desert Ledge") +] + boots_clip_exits_dw -def get_boots_clip_exits_lw(inverted = False): - """ - Special Light World region exits that require boots clips. - """ - - yield ('Bat Cave River Clip Spot', 'Light World', 'Bat Cave Ledge') - yield ('Light World DMA Clip Spot', 'Light World', 'West Death Mountain (Bottom)') - yield ('Hera Ascent', 'West Death Mountain (Bottom)', 'West Death Mountain (Top)') - yield ('Death Mountain Return Ledge Clip Spot', 'Light World', 'Death Mountain Return Ledge') - yield ('Death Mountain Entrance Clip Spot', 'Light World', 'Death Mountain Entrance') - yield ('Death Mountain Glitched Bridge', 'West Death Mountain (Bottom)', 'East Death Mountain (Top)') - yield ('Zora Descent Clip Spot', 'East Death Mountain (Top)', 'Zoras Domain') - yield ('Desert Northern Cliffs', 'Light World', 'Desert Northern Cliffs') - yield ('Desert Ledge Dropdown', 'Desert Northern Cliffs', 'Desert Ledge') - yield ('Desert Palace Entrance Dropdown', 'Desert Northern Cliffs', 'Desert Palace Entrance (North) Spot') - yield ('Lake Hylia Island Clip Spot', 'Light World', 'Lake Hylia Island') - yield ('Death Mountain Descent', 'West Death Mountain (Bottom)', 'Light World') - yield ('Kings Grave Clip Spot', 'West Death Mountain (Bottom)', 'Kings Grave Area') - - if not inverted: - yield ('Graveyard Ledge Clip Spot', 'West Death Mountain (Bottom)', 'Graveyard Ledge') - yield ('Desert Ledge (Northeast) Dropdown', 'Desert Northern Cliffs', 'Desert Checkerboard Ledge') - yield ('Spectacle Rock Clip Spot', 'West Death Mountain (Top)', 'Spectacle Rock') - yield ('Bombos Tablet Clip Spot', 'Light World', 'Bombos Tablet Ledge') - yield ('Floating Island Clip Spot', 'East Death Mountain (Top)', 'Death Mountain Floating Island') - yield ('Cave 45 Clip Spot', 'Light World', 'Cave 45 Ledge') +# Dark World drop-down ledges that require glitched speed. +glitched_speed_drops_dw = [ + ("Dark Death Mountain Ledge Clip Spot", "Dark Death Mountain (Top)", "Dark Death Mountain Ledge") +] -def get_boots_clip_exits_dw(inverted): - """ - Special Dark World region exits that require boots clips. - """ +# Out of bounds transitions using the mirror +mirror_clip_spots_dw = [ + ("Dark Death Mountain Bunny Descent Mirror Spot", "West Dark Death Mountain (Bottom)", "West Dark World"), + ( + "Dark Death Mountain Bunny Mirror To East Jump", + "West Dark Death Mountain (Bottom)", + "East Dark Death Mountain (Bottom)", + ), + ("Desert East Mirror Clip", "Dark Desert", "Desert Palace Mouth"), +] - yield ('Dark World DMA Clip Spot', 'West Dark World', 'West Dark Death Mountain (Bottom)') - yield ('Bumper Cave Ledge Clip Spot', 'West Dark World', 'Bumper Cave Ledge') - yield ('Bumper Cave Entrance Clip Spot', 'West Dark World', 'Bumper Cave Entrance') - yield ('Catfish Descent', 'Dark Death Mountain (Top)', 'Catfish Area') - yield ('Hammer Pegs River Clip Spot', 'East Dark World', 'Hammer Peg Area') - yield ('Dark Lake Hylia Ledge Clip Spot', 'East Dark World', 'Southeast Dark World') - yield ('Dark Desert Cliffs Clip Spot', 'South Dark World', 'Dark Desert') - yield ('DW Floating Island Clip Spot', 'East Dark Death Mountain (Bottom)', 'Dark Death Mountain Floating Island') +# Mirror shenanigans placing a mirror portal with a broken camera +mirror_offset_spots_dw = [("Dark Death Mountain Offset Mirror", "West Dark Death Mountain (Bottom)", "East Dark World")] - if not inverted: - yield ('Dark Death Mountain Descent', 'West Dark Death Mountain (Bottom)', 'West Dark World') - yield ('Ganons Tower Ascent', 'West Dark Death Mountain (Bottom)', 'Dark Death Mountain (Top)') # This only gets you to the GT entrance - yield ('Dark Death Mountain Glitched Bridge', 'West Dark Death Mountain (Bottom)', 'Dark Death Mountain (Top)') - yield ('Turtle Rock (Top) Clip Spot', 'Dark Death Mountain (Top)', 'Turtle Rock (Top)') - else: - yield ('Dark Desert Teleporter Clip Spot', 'Dark Desert', 'Dark Desert Ledge') +# Mirror shenanigans placing a mirror portal with a broken camera - -def get_glitched_speed_drops_dw(inverted = False): - """ - Dark World drop-down ledges that require glitched speed. - """ - yield ('Dark Death Mountain Ledge Clip Spot', 'Dark Death Mountain (Top)', 'Dark Death Mountain Ledge') - - -def get_mirror_clip_spots_dw(): - """ - Out of bounds transitions using the mirror - """ - yield ('Dark Death Mountain Bunny Descent Mirror Spot', 'West Dark Death Mountain (Bottom)', 'West Dark World') - yield ('Dark Death Mountain Bunny Mirror To East Jump', 'West Dark Death Mountain (Bottom)', 'East Dark Death Mountain (Bottom)') - yield ('Desert East Mirror Clip', 'Dark Desert', 'Desert Palace Mouth') - - -def get_mirror_offset_spots_dw(): - """ - Mirror shenanigans placing a mirror portal with a broken camera - """ - yield ('Dark Death Mountain Offset Mirror', 'West Dark Death Mountain (Bottom)', 'East Dark World') - - -def get_mirror_offset_spots_lw(player): - """ - Mirror shenanigans placing a mirror portal with a broken camera - """ - yield ('Death Mountain Offset Mirror', 'West Death Mountain (Bottom)', 'Light World') - yield ('Death Mountain Uncle Offset Mirror', 'West Death Mountain (Bottom)', 'Hyrule Castle Secret Entrance Area') - yield ('Death Mountain Castle Ledge Offset Mirror', 'West Death Mountain (Bottom)', 'Hyrule Castle Ledge') +mirror_offset_spots_lw = [ + ("Death Mountain Offset Mirror", "West Death Mountain (Bottom)", "Light World"), + ("Death Mountain Uncle Offset Mirror", "West Death Mountain (Bottom)", "Hyrule Castle Secret Entrance Area"), + ("Death Mountain Castle Ledge Offset Mirror", "West Death Mountain (Bottom)", "Hyrule Castle Ledge"), +] def create_owg_connections(world, player): """ Add OWG transitions to player's world without logic """ - create_no_logic_connections(player, world, get_boots_clip_exits_lw(world.mode[player] == 'inverted')) - create_no_logic_connections(player, world, get_boots_clip_exits_dw(world.mode[player] == 'inverted')) - - # Glitched speed drops. - create_no_logic_connections(player, world, get_glitched_speed_drops_dw(world.mode[player] == 'inverted')) - - # Mirror clip spots. - if world.mode[player] != 'inverted': - create_no_logic_connections(player, world, get_mirror_clip_spots_dw()) - create_no_logic_connections(player, world, get_mirror_offset_spots_dw()) + if world.mode[player] == "inverted": + connections = ( + inverted_boots_clip_exits_dw + + inverted_boots_clip_exits_lw + + glitched_speed_drops_dw + + mirror_offset_spots_lw + ) else: - create_no_logic_connections(player, world, get_mirror_offset_spots_lw(player)) + connections = ( + open_boots_clip_exits_dw + + open_boots_clip_exits_lw + + glitched_speed_drops_dw + + mirror_clip_spots_dw + + mirror_offset_spots_dw + ) + + create_no_logic_connections(player, world, connections) def overworld_glitches_rules(world, player): - # Boots-accessible locations. - set_owg_rules(player, world, get_boots_clip_exits_lw(world.mode[player] == 'inverted'), lambda state: state.can_boots_clip_lw(player)) - set_owg_rules(player, world, get_boots_clip_exits_dw(world.mode[player] == 'inverted'), lambda state: state.can_boots_clip_dw(player)) + inverted = world.mode[player] == "inverted" + # Boots-accessible locations. + set_owg_rules( + player, + world, + inverted_boots_clip_exits_lw if inverted else open_boots_clip_exits_lw, + lambda state: state.can_boots_clip_lw(player), + ) + set_owg_rules( + player, + world, + inverted_boots_clip_exits_dw if inverted else open_boots_clip_exits_dw, + lambda state: state.can_boots_clip_dw(player), + ) # Glitched speed drops. - set_owg_rules(player, world, get_glitched_speed_drops_dw(world.mode[player] == 'inverted'), lambda state: state.can_get_glitched_speed_dw(player)) + set_owg_rules( + player, + world, + glitched_speed_drops_dw, + lambda state: state.can_get_glitched_speed_dw(player), + ) # Dark Death Mountain Ledge Clip Spot also accessible with mirror. - if world.mode[player] != 'inverted': - add_alternate_rule(world.get_entrance('Dark Death Mountain Ledge Clip Spot', player), lambda state: state.has_Mirror(player)) + if not inverted: + add_alternate_rule( + world.get_entrance("Dark Death Mountain Ledge Clip Spot", player), lambda state: state.has_Mirror(player) + ) # Mirror clip spots. - if world.mode[player] != 'inverted': - set_owg_rules(player, world, get_mirror_clip_spots_dw(), lambda state: state.has_Mirror(player)) - set_owg_rules(player, world, get_mirror_offset_spots_dw(), lambda state: state.has_Mirror(player) and state.can_boots_clip_lw(player)) + if inverted: + set_owg_rules( + player, + world, + mirror_offset_spots_lw, + lambda state: state.has_Mirror(player) and state.can_boots_clip_dw(player), + ) else: - set_owg_rules(player, world, get_mirror_offset_spots_lw(player), lambda state: state.has_Mirror(player) and state.can_boots_clip_dw(player)) - + set_owg_rules(player, world, mirror_clip_spots_dw, lambda state: state.has_Mirror(player)) + set_owg_rules( + player, + world, + mirror_offset_spots_dw, + lambda state: state.has_Mirror(player) and state.can_boots_clip_lw(player), + ) + # Regions that require the boots and some other stuff. - if world.mode[player] != 'inverted': - world.get_entrance('Turtle Rock Teleporter', player).access_rule = lambda state: (state.can_boots_clip_lw(player) or state.can_lift_heavy_rocks(player)) and state.has('Hammer', player) - add_alternate_rule(world.get_entrance('Waterfall Fairy Access', player), lambda state: state.has_Pearl(player) or state.has_Boots(player)) # assumes access to Waterwalk ability (boots case) - else: - add_alternate_rule(world.get_entrance('Waterfall Fairy Access', player), lambda state: state.has_Pearl(player)) + if not inverted: + world.get_entrance("Turtle Rock Teleporter", player).access_rule = lambda state: ( + state.can_boots_clip_lw(player) or state.can_lift_heavy_rocks(player) + ) and state.has("Hammer", player) - world.get_entrance('Dark Desert Teleporter', player).access_rule = lambda state: (state.can_flute(player) or state.can_boots_clip_dw(player)) and state.can_lift_heavy_rocks(player) - add_alternate_rule(world.get_entrance('Dark Witch Rock (North)', player), lambda state: state.can_boots_clip_dw(player)) - add_alternate_rule(world.get_entrance('Broken Bridge Pass (Top)', player), lambda state: state.can_boots_clip_dw(player)) - add_alternate_rule(world.get_location('Zora\'s Ledge', player), lambda state: state.can_boots_clip_lw(player)) # assumes access to Waterwalk ability + add_alternate_rule( + world.get_entrance("Waterfall Fairy Access", player), + lambda state: state.has_Pearl(player) or state.has_Boots(player), + ) # assumes access to Waterwalk ability (boots case) + else: + add_alternate_rule(world.get_entrance("Waterfall Fairy Access", player), lambda state: state.has_Pearl(player)) + + world.get_entrance("Dark Desert Teleporter", player).access_rule = lambda state: ( + state.can_flute(player) or state.can_boots_clip_dw(player) + ) and state.can_lift_heavy_rocks(player) + + add_alternate_rule( + world.get_entrance("Dark Witch Rock (North)", player), lambda state: state.can_boots_clip_dw(player) + ) + add_alternate_rule( + world.get_entrance("Broken Bridge Pass (Top)", player), lambda state: state.can_boots_clip_dw(player) + ) + add_alternate_rule( + world.get_location("Zora's Ledge", player), lambda state: state.can_boots_clip_lw(player) + ) # assumes access to Waterwalk ability + + # This is doable even with bad enemies + add_alternate_rule(world.get_location("Hobo", player), lambda state: state.can_boots_clip_lw(player)) + def add_alternate_rule(entrance, rule): diff --git a/Rules.py b/Rules.py index 6e1f40f8..94100773 100644 --- a/Rules.py +++ b/Rules.py @@ -1905,7 +1905,7 @@ def set_bunny_rules(world, player, inverted): # bunny revival accessible. if world.logic[player] in ['owglitches', 'hybridglitches']: if region.type != RegionType.Dungeon \ - and (location is None or location.name not in OverworldGlitchRules.get_superbunny_accessible_locations()) \ + and (location is None or location.name not in OverworldGlitchRules.superbunny_accessible_locations) \ and not is_link(region): return lambda state: state.has_Pearl(player) else: @@ -1935,7 +1935,7 @@ def set_bunny_rules(world, player, inverted): if not is_link(new_region): if world.logic[player] in ['owglitches', 'hybridglitches']: if region.type == RegionType.Dungeon and new_region.type != RegionType.Dungeon: - if entrance.name in OverworldGlitchRules.get_invalid_mirror_bunny_entrances(): + if entrance.name in OverworldGlitchRules.invalid_mirror_bunny_entrances: continue if entrance.name in drop_dungeon_entrances: lobby = entrance.connected_region @@ -1949,21 +1949,21 @@ def set_bunny_rules(world, player, inverted): possible_options.append(path_to_access_rule(new_path + [lambda state: state.has_Mirror(player) and state.has_sword(player)], entrance)) continue elif region.type == RegionType.Cave and new_region.type != RegionType.Cave: - if entrance.name in OverworldGlitchRules.get_invalid_mirror_bunny_entrances(): + if entrance.name in OverworldGlitchRules.invalid_mirror_bunny_entrances: continue - if region.name in OverworldGlitchRules.get_sword_required_superbunny_mirror_regions(): + if region.name in OverworldGlitchRules.sword_required_superbunny_mirror_regions: possible_options.append(path_to_access_rule(new_path + [lambda state: state.has_Mirror(player) and state.has_sword(player)], entrance)) - elif region.name in OverworldGlitchRules.get_boots_required_superbunny_mirror_regions(): + elif region.name in OverworldGlitchRules.boots_required_superbunny_mirror_regions: possible_options.append(path_to_access_rule(new_path + [lambda state: state.has_Mirror(player) and state.has_Boots(player)], entrance)) - elif location and location.name in OverworldGlitchRules.get_superbunny_accessible_locations(): - if location.name in OverworldGlitchRules.get_boots_required_superbunny_mirror_locations(): + elif location and location.name in OverworldGlitchRules.superbunny_accessible_locations: + if location.name in OverworldGlitchRules.boots_required_superbunny_mirror_locations: possible_options.append(path_to_access_rule(new_path + [lambda state: state.has_Mirror(player) and state.has_Boots(player)], entrance)) elif region.name == 'Kakariko Well (top)': possible_options.append(path_to_access_rule(new_path, entrance)) else: possible_options.append(path_to_access_rule(new_path + [lambda state: state.has_Mirror(player)], entrance)) continue - elif region.name == 'Superbunny Cave (Top)' and new_region.name == 'Superbunny Cave (Bottom)' and location and location.name in OverworldGlitchRules.get_superbunny_accessible_locations(): + elif region.name == 'Superbunny Cave (Top)' and new_region.name == 'Superbunny Cave (Bottom)' and location and location.name in OverworldGlitchRules.superbunny_accessible_locations: possible_options.append(path_to_access_rule(new_path, entrance)) else: continue