Critical fixes for bunny logic
This commit is contained in:
parent
7c8d0dada2
commit
e002672503
|
@ -1069,7 +1069,7 @@ Bomb_Shop_Single_Cave_Doors = ['Waterfall of Wishing',
|
|||
'Spike Cave',
|
||||
'Cave Shop (Dark Death Mountain)',
|
||||
'Dark Death Mountain Fairy',
|
||||
'Mimic Cave Mirror Spot',
|
||||
'Mimic Cave',
|
||||
'Big Bomb Shop',
|
||||
'Dark Lake Hylia Shop']
|
||||
|
||||
|
@ -1210,7 +1210,7 @@ mandatory_connections = [('Links House', 'Links House'), # unshuffled. For now
|
|||
('Bumper Cave Ledge Mirror Spot', 'Death Mountain Return Ledge'),
|
||||
('Skull Woods Forest', 'Skull Woods Forest'),
|
||||
('Desert Ledge Mirror Spot', 'Desert Ledge'),
|
||||
('Desert Ledge (West) Mirror Spot', 'Desert Ledge (West)'),
|
||||
('Desert Ledge (Northeast) Mirror Spot', 'Desert Ledge (Northeast)'),
|
||||
('Desert Palace Entrance (North) Mirror Spot', 'Desert Palace Entrance (North) Spot'),
|
||||
('Dark Desert Teleporter', 'Dark Desert'),
|
||||
('Desert Palace Stairs Mirror Spot', 'Desert Palace Stairs'),
|
||||
|
@ -1238,6 +1238,9 @@ mandatory_connections = [('Links House', 'Links House'), # unshuffled. For now
|
|||
('East Death Mountain Teleporter', 'Dark Death Mountain (East Bottom)'),
|
||||
('Isolated Ledge Mirror Spot', 'Fairy Ascension Ledge'),
|
||||
('Spiral Cave Mirror Spot', 'Spiral Cave Ledge'),
|
||||
('Mimic Cave Mirror Spot', 'Mimic Cave Ledge'),
|
||||
('Cave 45 Mirror Spot', 'Cave 45 Ledge'),
|
||||
('Graveyard Ledge Mirror Spot', 'Graveyard Ledge'),
|
||||
|
||||
('Swamp Palace Moat', 'Swamp Palace (First Room)'),
|
||||
('Swamp Palace Small Key Door', 'Swamp Palace (Starting Area)'),
|
||||
|
@ -1445,7 +1448,7 @@ default_connections = [('Waterfall of Wishing', 'Waterfall of Wishing'),
|
|||
('Hookshot Cave Exit (South)', 'Dark Death Mountain (Top)'),
|
||||
('Hookshot Cave Exit (North)', 'Death Mountain Floating Island (Dark World)'),
|
||||
('Hookshot Cave Back Entrance', 'Hookshot Cave'),
|
||||
('Mimic Cave Mirror Spot', 'Mimic Cave'),
|
||||
('Mimic Cave', 'Mimic Cave'),
|
||||
|
||||
('Pyramid Hole', 'Pyramid'),
|
||||
('Pyramid Exit', 'Pyramid Ledge'),
|
||||
|
@ -1647,7 +1650,7 @@ door_addresses = {'Desert Palace Entrance (South)': ((0xDBB7B, 0x15B02),),
|
|||
'Spike Cave': (0xDBBB3, 'Spike Cave'),
|
||||
'Cave Shop (Dark Death Mountain)': (0xDBBE0, 'Cave Shop'),
|
||||
'Dark Death Mountain Fairy': (0xDBBE2, 'Healer Fairy'),
|
||||
'Mimic Cave Mirror Spot': (0xDBBC1, 'Mimic Cave'),
|
||||
'Mimic Cave': (0xDBBC1, 'Mimic Cave'),
|
||||
'Big Bomb Shop': (0xDBBC5, 'Big Bomb Shop'),
|
||||
'Dark Lake Hylia Shop': (0xDBBE6, 'Dark World Shop'),
|
||||
'Lumberjack House': (0xDBBE8, 'Lumberjack House'),
|
||||
|
|
|
@ -52,7 +52,7 @@ Hobo: Bottle
|
|||
Lost Woods Hideout: Nothing
|
||||
Lumberjack Tree: Nothing
|
||||
Cave 45: Nothing
|
||||
Graveyard Ledge: Nothing
|
||||
Graveyard Cave: Nothing
|
||||
Checkerboard Cave: Nothing
|
||||
Mini Moldorm Cave - Far Left: Nothing
|
||||
Mini Moldorm Cave - Left: Nothing
|
||||
|
|
17
Regions.py
17
Regions.py
|
@ -56,8 +56,10 @@ def create_regions(world):
|
|||
create_region('Lost Woods Hideout (bottom)', None, ['Lost Woods Hideout Exit']),
|
||||
create_region('Lumberjack Tree (top)', ['Lumberjack Tree'], ['Lumberjack Tree (top to bottom)']),
|
||||
create_region('Lumberjack Tree (bottom)', None, ['Lumberjack Tree Exit']),
|
||||
create_region('Cave 45 Ledge', None, ['Cave 45']),
|
||||
create_region('Cave 45', ['Cave 45']),
|
||||
create_region('Graveyard Cave', ['Graveyard Ledge']),
|
||||
create_region('Graveyard Ledge', None, ['Graveyard Cave']),
|
||||
create_region('Graveyard Cave', ['Graveyard Cave']),
|
||||
create_region('Checkerboard Cave', ['Checkerboard Cave']),
|
||||
create_region('Long Fairy Cave'),
|
||||
create_region('Mini Moldorm Cave', ['Mini Moldorm Cave - Far Left', 'Mini Moldorm Cave - Left', 'Mini Moldorm Cave - Right',
|
||||
|
@ -76,7 +78,7 @@ def create_regions(world):
|
|||
create_region('Maze Race Ledge', ['Maze Race'], ['Two Brothers House (West)']),
|
||||
create_region('50 Rupee Cave'),
|
||||
create_region('Desert Ledge', ['Desert Ledge'], ['Desert Palace Entrance (North) Rocks', 'Desert Palace Entrance (West)']),
|
||||
create_region('Desert Ledge (West)', None, ['Checkerboard Cave']),
|
||||
create_region('Desert Ledge (Northeast)', None, ['Checkerboard Cave']),
|
||||
create_region('Desert Palace Stairs', None, ['Desert Palace Entrance (South)']),
|
||||
create_region('Desert Palace Lone Stairs', None, ['Desert Palace Stairs Drop', 'Desert Palace Entrance (East)']),
|
||||
create_region('Desert Palace Entrance (North) Spot', None, ['Desert Palace Entrance (North)', 'Desert Ledge Return Rocks']),
|
||||
|
@ -138,7 +140,7 @@ def create_regions(world):
|
|||
create_region('Palace of Darkness Hint'),
|
||||
create_region('East Dark World Hint'),
|
||||
create_region('South Dark World', ['Stumpy', 'Digging Game', 'Bombos Tablet'], ['Dark Lake Hylia Drop (South)', 'Hype Cave', 'Swamp Palace', 'Village of Outcasts Heavy Rock',
|
||||
'Maze Race Mirror Spot', 'Cave 45', 'East Dark World Bridge', 'Big Bomb Shop', 'Archery Game', 'Bonk Fairy (Dark)', 'Dark Lake Hylia Shop']),
|
||||
'Maze Race Mirror Spot', 'Cave 45 Mirror Spot', 'East Dark World Bridge', 'Big Bomb Shop', 'Archery Game', 'Bonk Fairy (Dark)', 'Dark Lake Hylia Shop']),
|
||||
create_region('Big Bomb Shop'),
|
||||
create_region('Archery Game'),
|
||||
create_region('Dark Lake Hylia', None, ['Lake Hylia Island Mirror Spot', 'East Dark World Pier', 'Dark Lake Hylia Ledge']),
|
||||
|
@ -148,7 +150,7 @@ def create_regions(world):
|
|||
create_region('Dark Lake Hylia Ledge Spike Cave'),
|
||||
create_region('Hype Cave', ['Hype Cave - Top', 'Hype Cave - Middle Right', 'Hype Cave - Middle Left',
|
||||
'Hype Cave - Bottom', 'Hype Cave - Generous Guy']),
|
||||
create_region('West Dark World', None, ['Village of Outcasts Drop', 'East Dark World River Pier', 'Brewery', 'C-Shaped House', 'Chest Game', 'Thieves Town', 'Graveyard Cave', 'Bumper Cave (Bottom)', 'Skull Woods Forest',
|
||||
create_region('West Dark World', None, ['Village of Outcasts Drop', 'East Dark World River Pier', 'Brewery', 'C-Shaped House', 'Chest Game', 'Thieves Town', 'Graveyard Ledge Mirror Spot', 'Bumper Cave (Bottom)', 'Skull Woods Forest',
|
||||
'Bat Cave Drop Ledge Mirror Spot', 'Dark World Hammer Peg Cave', 'Red Shield Shop', 'Dark Sanctuary Hint', 'Fortune Teller (Dark)', 'Dark World Shop', 'Dark World Lumberjack Shop']),
|
||||
create_region('Fortune Teller (Dark)'),
|
||||
create_region('Dark World Shop'),
|
||||
|
@ -164,7 +166,7 @@ def create_regions(world):
|
|||
create_region('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)']),
|
||||
create_region('Skull Woods Forest (West)', None, ['Skull Woods Second Section Hole', 'Skull Woods Second Section Door (West)', 'Skull Woods Final Section']),
|
||||
create_region('Dark Desert', None, ['Misery Mire', 'Mire Shed', 'Desert Ledge (West) Mirror Spot', 'Desert Ledge Mirror Spot', 'Desert Palace Stairs Mirror Spot', 'Desert Palace Entrance (North) Mirror Spot',
|
||||
create_region('Dark Desert', None, ['Misery Mire', 'Mire Shed', 'Desert Ledge (Northeast) Mirror Spot', 'Desert Ledge Mirror Spot', 'Desert Palace Stairs Mirror Spot', 'Desert Palace Entrance (North) Mirror Spot',
|
||||
'Dark Desert Hint', 'Dark Desert Fairy']),
|
||||
create_region('Mire Shed', ['Mire Shed - Left', 'Mire Shed - Right']),
|
||||
create_region('Dark Desert Hint'),
|
||||
|
@ -182,6 +184,7 @@ def create_regions(world):
|
|||
create_region('Death Mountain Floating Island (Dark World)', None, ['Floating Island Drop', 'Hookshot Cave Back Entrance', 'Floating Island Mirror Spot']),
|
||||
create_region('Death Mountain Floating Island (Light World)', ['Floating Island']),
|
||||
create_region('Turtle Rock (Top)', None, ['Turtle Rock Drop']),
|
||||
create_region('Mimic Cave Ledge', None, ['Mimic Cave']),
|
||||
create_region('Mimic Cave', ['Mimic Cave']),
|
||||
|
||||
create_region('Swamp Palace (Entrance)', None, ['Swamp Palace Moat', 'Swamp Palace Exit']),
|
||||
|
@ -292,7 +295,7 @@ def mark_light_world_regions(world):
|
|||
# Exclude entrances that represent connections from the light world to the dark world
|
||||
excluded_entrances = set(['Top of Pyramid', 'Lake Hylia Central Island Teleporter', 'Dark Desert Teleporter', 'East Hyrule Teleporter', 'South Hyrule Teleporter', 'Kakariko Teleporter', 'Death Mountain Teleporter', 'East Death Mountain Teleporter', 'Turtle Rock Teleporter'])
|
||||
|
||||
starting_regions = ['Links House', 'Cave 45', 'Graveyard Cave', 'Mimic Cave', 'Death Mountain Floating Island (Light World)', 'Desert Ledge (West)', 'Lake Hylia Island', 'Spectacle Rock']
|
||||
starting_regions = ['Links House', 'Cave 45 Ledge', 'Graveyard Ledge', 'Mimic Cave Ledge', 'Death Mountain Floating Island (Light World)', 'Desert Ledge', 'Desert Ledge (Northeast)', 'Lake Hylia Island', 'Spectacle Rock', 'Death Mountain Return Ledge', 'Hyrule Castle Ledge','Maze Race Ledge']
|
||||
queue = collections.deque([world.get_region(region) for region in starting_regions])
|
||||
seen = set(queue)
|
||||
while queue:
|
||||
|
@ -344,7 +347,7 @@ location_table = {'Mushroom': (0x180013, False, 'in the woods'),
|
|||
'Lost Woods Hideout': (0x180000, False, 'near a thief'),
|
||||
'Lumberjack Tree': (0x180001, False, 'in a hole'),
|
||||
'Cave 45': (0x180003, False, 'alone in a cave'),
|
||||
'Graveyard Ledge': (0x180004, False, 'alone in a cave'),
|
||||
'Graveyard Cave': (0x180004, False, 'alone in a cave'),
|
||||
'Checkerboard Cave': (0x180005, False, 'alone in a cave'),
|
||||
'Mini Moldorm Cave - Far Left': (0xEB42, False, 'near Moldorms'),
|
||||
'Mini Moldorm Cave - Left': (0xEB45, False, 'near Moldorms'),
|
||||
|
|
10
Rules.py
10
Rules.py
|
@ -154,12 +154,12 @@ def global_rules(world):
|
|||
set_rule(world.get_entrance('Thieves Town'), lambda state: state.has_Pearl()) # bunny cannot pull
|
||||
set_rule(world.get_entrance('Skull Woods First Section Hole (North)'), lambda state: state.has_Pearl()) # bunny cannot lift bush
|
||||
set_rule(world.get_entrance('Maze Race Mirror Spot'), lambda state: state.has_Mirror())
|
||||
set_rule(world.get_entrance('Cave 45'), lambda state: state.has_Mirror())
|
||||
set_rule(world.get_entrance('Cave 45 Mirror Spot'), lambda state: state.has_Mirror())
|
||||
set_rule(world.get_entrance('East Dark World Bridge'), lambda state: state.has_Pearl() and state.has('Hammer'))
|
||||
set_rule(world.get_entrance('Lake Hylia Island Mirror Spot'), lambda state: state.has_Pearl() and state.has_Mirror() and state.has('Flippers'))
|
||||
set_rule(world.get_entrance('Lake Hylia Central Island Mirror Spot'), lambda state: state.has_Mirror())
|
||||
set_rule(world.get_entrance('East Dark World River Pier'), lambda state: state.has_Pearl() and state.has('Flippers')) # ToDo any fake flipper set up?
|
||||
set_rule(world.get_entrance('Graveyard Cave'), lambda state: state.has_Pearl() and state.has_Mirror())
|
||||
set_rule(world.get_entrance('Graveyard Ledge Mirror Spot'), lambda state: state.has_Pearl() and state.has_Mirror())
|
||||
set_rule(world.get_entrance('Bumper Cave (Bottom)'), lambda state: state.has_Pearl() and state.can_lift_rocks())
|
||||
set_rule(world.get_entrance('Bumper Cave Ledge Mirror Spot'), lambda state: state.has_Mirror())
|
||||
set_rule(world.get_entrance('Bat Cave Drop Ledge Mirror Spot'), lambda state: state.has_Pearl() and state.can_lift_heavy_rocks() and state.has_Mirror())
|
||||
|
@ -170,7 +170,7 @@ def global_rules(world):
|
|||
|
||||
set_rule(world.get_entrance('Skull Woods Final Section'), lambda state: state.has('Fire Rod') and state.has_Pearl()) # bunny cannot use fire rod
|
||||
set_rule(world.get_entrance('Misery Mire'), lambda state: state.has_Pearl() and state.has_sword() and state.has_misery_mire_medallion()) # sword required to cast magic (!)
|
||||
set_rule(world.get_entrance('Desert Ledge (West) Mirror Spot'), lambda state: state.has_Mirror())
|
||||
set_rule(world.get_entrance('Desert Ledge (Northeast) Mirror Spot'), lambda state: state.has_Mirror())
|
||||
|
||||
set_rule(world.get_entrance('Desert Ledge Mirror Spot'), lambda state: state.has_Mirror())
|
||||
set_rule(world.get_entrance('Desert Palace Stairs Mirror Spot'), lambda state: state.has_Mirror())
|
||||
|
@ -601,7 +601,7 @@ def set_big_bomb_rules(world):
|
|||
Isolated_DW_entrances = ['Spike Cave',
|
||||
'Cave Shop (Dark Death Mountain)',
|
||||
'Dark Death Mountain Fairy',
|
||||
'Mimic Cave Mirror Spot']
|
||||
'Mimic Cave']
|
||||
Isolated_LW_entrances = ['Capacity Upgrade',
|
||||
'Hookshot Fairy']
|
||||
set_rule(world.get_entrance('Pyramid Fairy'), lambda state: state.can_reach('East Dark World', 'Region') and state.can_reach('Big Bomb Shop', 'Region') and state.has('Crystal 5') and state.has('Crystal 6'))
|
||||
|
@ -666,7 +666,7 @@ def set_bunny_rules(world):
|
|||
if region.is_light_world:
|
||||
continue
|
||||
for exit in region.exits:
|
||||
add_rule(exit, lambda state: state.has_Pearl)
|
||||
add_rule(exit, lambda state: state.has_Pearl())
|
||||
|
||||
# Add a moon pearl requirement for all locations that are actually in the dark world, except those available to the bunny
|
||||
for location in world.get_locations():
|
||||
|
|
Loading…
Reference in New Issue