Split overworld model up by screen
This commit is contained in:
+8
-1
@@ -1254,7 +1254,7 @@ class CollectionState(object):
|
|||||||
def can_flute(self, player):
|
def can_flute(self, player):
|
||||||
if self.world.mode[player] == 'standard' and not self.has('Zelda Delivered', player):
|
if self.world.mode[player] == 'standard' and not self.has('Zelda Delivered', player):
|
||||||
return False # can't flute in rain state
|
return False # can't flute in rain state
|
||||||
lw = self.world.get_region('Light World', player)
|
lw = self.world.get_region('Kakariko Village', player)
|
||||||
return self.has('Ocarina (Activated)', player) or (self.has('Ocarina', player) and lw.can_reach(self)
|
return self.has('Ocarina (Activated)', player) or (self.has('Ocarina', player) and lw.can_reach(self)
|
||||||
and self.is_not_bunny(lw, player))
|
and self.is_not_bunny(lw, player))
|
||||||
|
|
||||||
@@ -1456,6 +1456,12 @@ class CollectionState(object):
|
|||||||
raise RuntimeError('Cannot parse %s.' % item)
|
raise RuntimeError('Cannot parse %s.' % item)
|
||||||
|
|
||||||
|
|
||||||
|
@unique
|
||||||
|
class Terrain(Enum):
|
||||||
|
Land = 0
|
||||||
|
Water = 1
|
||||||
|
|
||||||
|
|
||||||
@unique
|
@unique
|
||||||
class RegionType(Enum):
|
class RegionType(Enum):
|
||||||
Menu = 0
|
Menu = 0
|
||||||
@@ -1484,6 +1490,7 @@ class Region(object):
|
|||||||
self.is_light_world = False # will be set aftermaking connections.
|
self.is_light_world = False # will be set aftermaking connections.
|
||||||
self.is_dark_world = False
|
self.is_dark_world = False
|
||||||
self.spot_type = 'Region'
|
self.spot_type = 'Region'
|
||||||
|
self.terrain = None
|
||||||
self.hint_text = hint
|
self.hint_text = hint
|
||||||
self.recursion_count = 0
|
self.recursion_count = 0
|
||||||
self.player = player
|
self.player = player
|
||||||
|
|||||||
+4
-4
@@ -478,7 +478,7 @@ def choose_portals(world, player):
|
|||||||
if portal_region.type == RegionType.LightWorld:
|
if portal_region.type == RegionType.LightWorld:
|
||||||
world.get_portal(portal, player).light_world = True
|
world.get_portal(portal, player).light_world = True
|
||||||
if name in world.inaccessible_regions[player] or (hc_flag and portal != 'Hyrule Castle South'):
|
if name in world.inaccessible_regions[player] or (hc_flag and portal != 'Hyrule Castle South'):
|
||||||
name_key = 'Desert Ledge' if name == 'Desert Palace Entrance (North) Spot' else name
|
name_key = 'Desert Ledge' if name == 'Desert Ledge Keep' else name
|
||||||
region_map[name_key].append(portal)
|
region_map[name_key].append(portal)
|
||||||
inaccessible_portals.append(portal)
|
inaccessible_portals.append(portal)
|
||||||
else:
|
else:
|
||||||
@@ -631,7 +631,7 @@ def analyze_portals(world, player):
|
|||||||
if portal_region.type == RegionType.LightWorld:
|
if portal_region.type == RegionType.LightWorld:
|
||||||
world.get_portal(portal, player).light_world = True
|
world.get_portal(portal, player).light_world = True
|
||||||
if name in world.inaccessible_regions[player]:
|
if name in world.inaccessible_regions[player]:
|
||||||
name_key = 'Desert Ledge' if name == 'Desert Palace Entrance (North) Spot' else name
|
name_key = 'Desert Ledge' if name == 'Desert Ledge Keep' else name
|
||||||
region_map[name_key].append(portal)
|
region_map[name_key].append(portal)
|
||||||
inaccessible_portals.append(portal)
|
inaccessible_portals.append(portal)
|
||||||
else:
|
else:
|
||||||
@@ -3368,7 +3368,7 @@ def find_accessible_entrances(world, player, builder):
|
|||||||
hc_std = True
|
hc_std = True
|
||||||
start_regions = ['Hyrule Castle Courtyard']
|
start_regions = ['Hyrule Castle Courtyard']
|
||||||
elif world.mode[player] != 'inverted':
|
elif world.mode[player] != 'inverted':
|
||||||
start_regions = ['Links House', 'Sanctuary', 'East Dark World']
|
start_regions = ['Links House', 'Sanctuary', 'Pyramid Area']
|
||||||
else:
|
else:
|
||||||
start_regions = ['Links House', 'Dark Sanctuary Hint', 'Hyrule Castle Ledge']
|
start_regions = ['Links House', 'Dark Sanctuary Hint', 'Hyrule Castle Ledge']
|
||||||
regs = convert_regions(start_regions, world, player)
|
regs = convert_regions(start_regions, world, player)
|
||||||
@@ -3390,7 +3390,7 @@ def find_accessible_entrances(world, player, builder):
|
|||||||
if connect not in queue and connect not in visited_regions:
|
if connect not in queue and connect not in visited_regions:
|
||||||
queue.append(connect)
|
queue.append(connect)
|
||||||
for ext in next_region.exits:
|
for ext in next_region.exits:
|
||||||
if hc_std and ext.name in ['Hyrule Castle Main Gate (North)', 'Castle Gate Teleporter', 'Hyrule Castle Ledge Drop']: # just skip it
|
if hc_std and ext.name in ['Hyrule Castle Main Gate (North)', 'Castle Gate Teleporter (Inner)', 'Hyrule Castle Ledge Drop']: # just skip it
|
||||||
continue
|
continue
|
||||||
connect = ext.connected_region
|
connect = ext.connected_region
|
||||||
if connect is None or ext.door and ext.door.blocked:
|
if connect is None or ext.door and ext.door.blocked:
|
||||||
|
|||||||
+2
-2
@@ -1538,8 +1538,8 @@ def calc_allowance_and_dead_ends(builder, connections_tuple, world, player):
|
|||||||
if entrance in connections.keys():
|
if entrance in connections.keys():
|
||||||
enabling_region = connections[entrance]
|
enabling_region = connections[entrance]
|
||||||
check_list = list(potentials[enabling_region])
|
check_list = list(potentials[enabling_region])
|
||||||
if enabling_region.name in ['Desert Ledge', 'Desert Palace Entrance (North) Spot']:
|
if enabling_region.name in ['Desert Ledge', 'Desert Ledge Keep']:
|
||||||
alternate = 'Desert Palace Entrance (North) Spot' if enabling_region.name == 'Desert Ledge' else 'Desert Ledge'
|
alternate = 'Desert Ledge Keep' if enabling_region.name == 'Desert Ledge' else 'Desert Ledge'
|
||||||
if world.get_region(alternate, player) in potentials:
|
if world.get_region(alternate, player) in potentials:
|
||||||
check_list.extend(potentials[world.get_region(alternate, player)])
|
check_list.extend(potentials[world.get_region(alternate, player)])
|
||||||
connecting_entrances = [x for x in check_list if x != entrance and x not in dead_entrances and x not in drop_entrances_allowance]
|
connecting_entrances = [x for x in check_list if x != entrance and x not in dead_entrances and x not in drop_entrances_allowance]
|
||||||
|
|||||||
@@ -188,7 +188,7 @@ Dark World Shop: The hammer sealed building
|
|||||||
Red Shield Shop: The fenced in building
|
Red Shield Shop: The fenced in building
|
||||||
Mire Shed: The western hut in the mire
|
Mire Shed: The western hut in the mire
|
||||||
East Dark World Hint: The dark cave near the eastmost portal
|
East Dark World Hint: The dark cave near the eastmost portal
|
||||||
Dark Desert Hint: The cave east of the mire
|
Mire Hint: The cave east of the mire
|
||||||
Spike Cave: The ledge cave on west dark DM
|
Spike Cave: The ledge cave on west dark DM
|
||||||
Palace of Darkness Hint: The building south of Kiki
|
Palace of Darkness Hint: The building south of Kiki
|
||||||
Dark Lake Hylia Ledge Spike Cave: The rock SE dark Lake Hylia
|
Dark Lake Hylia Ledge Spike Cave: The rock SE dark Lake Hylia
|
||||||
@@ -200,7 +200,7 @@ Hype Cave: The cave south of the old bomb shop
|
|||||||
Brewery: The Village of Outcasts building with no door
|
Brewery: The Village of Outcasts building with no door
|
||||||
Dark Lake Hylia Ledge Hint: The open cave SE dark Lake Hylia
|
Dark Lake Hylia Ledge Hint: The open cave SE dark Lake Hylia
|
||||||
Chest Game: The westmost building in the Village of Outcasts
|
Chest Game: The westmost building in the Village of Outcasts
|
||||||
Dark Desert Fairy: The eastern hut in the mire
|
Mire Fairy: The eastern hut in the mire
|
||||||
Dark Lake Hylia Ledge Fairy: The sealed cave SE dark Lake Hylia
|
Dark Lake Hylia Ledge Fairy: The sealed cave SE dark Lake Hylia
|
||||||
Fortune Teller (Dark): The building NE the Village of Outcasts
|
Fortune Teller (Dark): The building NE the Village of Outcasts
|
||||||
Sanctuary: Sanctuary
|
Sanctuary: Sanctuary
|
||||||
|
|||||||
+61
-264
@@ -20,13 +20,6 @@ def link_entrances(world, player):
|
|||||||
for exitname, regionname in mandatory_connections:
|
for exitname, regionname in mandatory_connections:
|
||||||
connect_simple(world, exitname, regionname, player)
|
connect_simple(world, exitname, regionname, player)
|
||||||
|
|
||||||
if not invFlag:
|
|
||||||
for exitname, regionname in open_mandatory_connections:
|
|
||||||
connect_simple(world, exitname, regionname, player)
|
|
||||||
else:
|
|
||||||
for exitname, regionname in inverted_mandatory_connections:
|
|
||||||
connect_simple(world, exitname, regionname, player)
|
|
||||||
|
|
||||||
connect_custom(world, player)
|
connect_custom(world, player)
|
||||||
|
|
||||||
# if we do not shuffle, set default connections
|
# if we do not shuffle, set default connections
|
||||||
@@ -1579,7 +1572,7 @@ DW_Single_Cave_Doors = ['Bonk Fairy (Dark)',
|
|||||||
'Red Shield Shop',
|
'Red Shield Shop',
|
||||||
'Mire Shed',
|
'Mire Shed',
|
||||||
'East Dark World Hint',
|
'East Dark World Hint',
|
||||||
'Dark Desert Hint',
|
'Mire Hint',
|
||||||
'Spike Cave',
|
'Spike Cave',
|
||||||
'Palace of Darkness Hint',
|
'Palace of Darkness Hint',
|
||||||
'Dark Lake Hylia Ledge Spike Cave',
|
'Dark Lake Hylia Ledge Spike Cave',
|
||||||
@@ -1592,7 +1585,7 @@ DW_Single_Cave_Doors = ['Bonk Fairy (Dark)',
|
|||||||
'Brewery',
|
'Brewery',
|
||||||
'Dark Lake Hylia Ledge Hint',
|
'Dark Lake Hylia Ledge Hint',
|
||||||
'Chest Game',
|
'Chest Game',
|
||||||
'Dark Desert Fairy',
|
'Mire Fairy',
|
||||||
'Dark Lake Hylia Ledge Fairy',
|
'Dark Lake Hylia Ledge Fairy',
|
||||||
'Fortune Teller (Dark)',
|
'Fortune Teller (Dark)',
|
||||||
'Hammer Peg Cave']
|
'Hammer Peg Cave']
|
||||||
@@ -1657,8 +1650,8 @@ Bomb_Shop_Single_Cave_Doors = ['Waterfall of Wishing',
|
|||||||
'Dark Potion Shop',
|
'Dark Potion Shop',
|
||||||
'Archery Game',
|
'Archery Game',
|
||||||
'Mire Shed',
|
'Mire Shed',
|
||||||
'Dark Desert Hint',
|
'Mire Hint',
|
||||||
'Dark Desert Fairy',
|
'Mire Fairy',
|
||||||
'Spike Cave',
|
'Spike Cave',
|
||||||
'Dark Death Mountain Shop',
|
'Dark Death Mountain Shop',
|
||||||
'Dark Death Mountain Fairy',
|
'Dark Death Mountain Fairy',
|
||||||
@@ -1723,8 +1716,8 @@ Single_Cave_Targets = ['Blinds Hideout',
|
|||||||
'Dark Lumberjack Shop',
|
'Dark Lumberjack Shop',
|
||||||
'Archery Game',
|
'Archery Game',
|
||||||
'Mire Shed',
|
'Mire Shed',
|
||||||
'Dark Desert Hint',
|
'Mire Hint',
|
||||||
'Dark Desert Healer Fairy',
|
'Mire Healer Fairy',
|
||||||
'Spike Cave',
|
'Spike Cave',
|
||||||
'Dark Death Mountain Shop',
|
'Dark Death Mountain Shop',
|
||||||
'Dark Death Mountain Healer Fairy',
|
'Dark Death Mountain Healer Fairy',
|
||||||
@@ -1867,7 +1860,7 @@ Inverted_DW_Single_Cave_Doors = ['Bonk Fairy (Dark)',
|
|||||||
'Red Shield Shop',
|
'Red Shield Shop',
|
||||||
'Mire Shed',
|
'Mire Shed',
|
||||||
'East Dark World Hint',
|
'East Dark World Hint',
|
||||||
'Dark Desert Hint',
|
'Mire Hint',
|
||||||
'Palace of Darkness Hint',
|
'Palace of Darkness Hint',
|
||||||
'Dark Lake Hylia Ledge Spike Cave',
|
'Dark Lake Hylia Ledge Spike Cave',
|
||||||
'Dark Death Mountain Shop',
|
'Dark Death Mountain Shop',
|
||||||
@@ -1879,7 +1872,7 @@ Inverted_DW_Single_Cave_Doors = ['Bonk Fairy (Dark)',
|
|||||||
'Brewery',
|
'Brewery',
|
||||||
'Dark Lake Hylia Ledge Hint',
|
'Dark Lake Hylia Ledge Hint',
|
||||||
'Chest Game',
|
'Chest Game',
|
||||||
'Dark Desert Fairy',
|
'Mire Fairy',
|
||||||
'Dark Lake Hylia Ledge Fairy',
|
'Dark Lake Hylia Ledge Fairy',
|
||||||
'Fortune Teller (Dark)',
|
'Fortune Teller (Dark)',
|
||||||
'Hammer Peg Cave']
|
'Hammer Peg Cave']
|
||||||
@@ -1914,8 +1907,8 @@ Inverted_Bomb_Shop_Single_Cave_Doors = ['Waterfall of Wishing',
|
|||||||
'Dark Potion Shop',
|
'Dark Potion Shop',
|
||||||
'Archery Game',
|
'Archery Game',
|
||||||
'Mire Shed',
|
'Mire Shed',
|
||||||
'Dark Desert Hint',
|
'Mire Hint',
|
||||||
'Dark Desert Fairy',
|
'Mire Fairy',
|
||||||
'Spike Cave',
|
'Spike Cave',
|
||||||
'Dark Death Mountain Shop',
|
'Dark Death Mountain Shop',
|
||||||
'Bumper Cave (Top)',
|
'Bumper Cave (Top)',
|
||||||
@@ -2010,8 +2003,8 @@ Inverted_Single_Cave_Targets = ['Blinds Hideout',
|
|||||||
'Dark Lumberjack Shop',
|
'Dark Lumberjack Shop',
|
||||||
'Archery Game',
|
'Archery Game',
|
||||||
'Mire Shed',
|
'Mire Shed',
|
||||||
'Dark Desert Hint',
|
'Mire Hint',
|
||||||
'Dark Desert Healer Fairy',
|
'Mire Healer Fairy',
|
||||||
'Spike Cave',
|
'Spike Cave',
|
||||||
'Dark Death Mountain Shop',
|
'Dark Death Mountain Shop',
|
||||||
'Dark Death Mountain Healer Fairy',
|
'Dark Death Mountain Healer Fairy',
|
||||||
@@ -2067,9 +2060,7 @@ Inverted_Must_Exit_Invalid_Connections = defaultdict(set, {
|
|||||||
|
|
||||||
# these are connections that cannot be shuffled and always exist.
|
# these are connections that cannot be shuffled and always exist.
|
||||||
# They link together separate parts of the world we need to divide into regions
|
# They link together separate parts of the world we need to divide into regions
|
||||||
mandatory_connections = [('Links House S&Q', 'Links House'),
|
mandatory_connections = [# underworld
|
||||||
|
|
||||||
# underworld
|
|
||||||
('Lost Woods Hideout (top to bottom)', 'Lost Woods Hideout (bottom)'),
|
('Lost Woods Hideout (top to bottom)', 'Lost Woods Hideout (bottom)'),
|
||||||
('Lumberjack Tree (top to bottom)', 'Lumberjack Tree (bottom)'),
|
('Lumberjack Tree (top to bottom)', 'Lumberjack Tree (bottom)'),
|
||||||
('Death Mountain Return Cave E', 'Death Mountain Return Cave (right)'),
|
('Death Mountain Return Cave E', 'Death Mountain Return Cave (right)'),
|
||||||
@@ -2116,212 +2107,18 @@ mandatory_connections = [('Links House S&Q', 'Links House'),
|
|||||||
('Superbunny Cave Climb', 'Superbunny Cave (Top)'),
|
('Superbunny Cave Climb', 'Superbunny Cave (Top)'),
|
||||||
('Bumper Cave Bottom to Top', 'Bumper Cave (top)'),
|
('Bumper Cave Bottom to Top', 'Bumper Cave (top)'),
|
||||||
('Bumper Cave Top To Bottom', 'Bumper Cave (bottom)'),
|
('Bumper Cave Top To Bottom', 'Bumper Cave (bottom)'),
|
||||||
('Ganon Drop', 'Bottom of Pyramid'),
|
('Ganon Drop', 'Bottom of Pyramid')
|
||||||
|
|
||||||
# water entry
|
|
||||||
('Waterfall Fairy Access', 'Zora Waterfall Entryway'),
|
|
||||||
('Zora Waterfall Water Drop', 'Lake Hylia Water'),
|
|
||||||
('Light World Water Drop', 'Lake Hylia Water'),
|
|
||||||
('Potion Shop Water Drop', 'Lake Hylia Water'),
|
|
||||||
('Northeast Light World Water Drop', 'Lake Hylia Water'),
|
|
||||||
('Lake Hylia Central Island Water Drop', 'Lake Hylia Water'),
|
|
||||||
|
|
||||||
('West Dark World Water Drop', 'Dark Lake Hylia Water'),
|
|
||||||
('Northeast Dark World Water Drop', 'Dark Lake Hylia Water'),
|
|
||||||
('Catfish Water Drop', 'Dark Lake Hylia Water'),
|
|
||||||
('East Dark World Water Drop', 'Dark Lake Hylia Water'),
|
|
||||||
('South Dark World Water Drop', 'Dark Lake Hylia Water'),
|
|
||||||
('Southeast Dark World Water Drop', 'Dark Lake Hylia Water'),
|
|
||||||
('Ice Palace Leave Water Drop', 'Dark Lake Hylia Water'),
|
|
||||||
|
|
||||||
# water exit
|
|
||||||
('Light World Pier', 'Light World'), # there are several piers in-game, only one needs to be modeled
|
|
||||||
('Potion Shop Pier', 'Potion Shop Area'),
|
|
||||||
('Hobo Pier', 'Hobo Bridge'),
|
|
||||||
('Lake Hylia Central Island Pier', 'Lake Hylia Central Island'),
|
|
||||||
('Lake Hylia Whirlpool', 'Northeast Light World'),
|
|
||||||
|
|
||||||
('Northeast Dark World Pier', 'Northeast Dark World'),
|
|
||||||
('East Dark World Pier', 'East Dark World'),
|
|
||||||
('Southeast Dark World Pier', 'Southeast Dark World'),
|
|
||||||
|
|
||||||
# terrain
|
|
||||||
('Master Sword Meadow', 'Master Sword Meadow'),
|
|
||||||
('DM Hammer Bridge (West)', 'East Death Mountain (Top)'),
|
|
||||||
('DM Hammer Bridge (East)', 'West Death Mountain (Top)'),
|
|
||||||
('DM Broken Bridge (West)', 'East Death Mountain (Bottom)'),
|
|
||||||
('DM Broken Bridge (East)', 'West Death Mountain (Bottom)'),
|
|
||||||
('Fairy Ascension Rocks', 'Fairy Ascension Plateau'),
|
|
||||||
('Death Mountain Entrance Rock', 'Death Mountain Entrance'),
|
|
||||||
('Zoras Domain', 'Zoras Domain'),
|
|
||||||
('Kings Grave Rocks (Outer)', 'Kings Grave Area'),
|
|
||||||
('Kings Grave Rocks (Inner)', 'Light World'),
|
|
||||||
('Potion Shop Rock (South)', 'Northeast Light World'),
|
|
||||||
('Potion Shop Rock (North)', 'Potion Shop Area'),
|
|
||||||
('Kakariko Southwest Bush (North)', 'Bomb Hut Area'),
|
|
||||||
('Kakariko Southwest Bush (South)', 'Light World'),
|
|
||||||
('Kakariko Yard Bush (North)', 'Light World'),
|
|
||||||
('Kakariko Yard Bush (South)', 'Bush Covered Lawn'),
|
|
||||||
('Hyrule Castle Courtyard Bush (North)', 'Hyrule Castle Courtyard'),
|
|
||||||
('Hyrule Castle Courtyard Bush (South)', 'Hyrule Castle Secret Entrance Area'),
|
|
||||||
('Hyrule Castle Main Gate', 'Hyrule Castle Courtyard'),
|
|
||||||
('Hyrule Castle Main Gate (North)', 'Light World'),
|
|
||||||
('Wooden Bridge Bush (North)', 'Light World'),
|
|
||||||
('Wooden Bridge Bush (South)', 'Potion Shop Area'),
|
|
||||||
('Bat Cave Ledge Peg', 'Bat Cave Ledge'),
|
|
||||||
('Bat Cave Ledge Peg (East)', 'Light World'),
|
|
||||||
('Desert Statue Move', 'Desert Palace Stairs'),
|
|
||||||
('Desert Ledge Rocks (Outer)', 'Desert Palace Entrance (North) Spot'),
|
|
||||||
('Desert Ledge Rocks (Inner)', 'Desert Ledge'),
|
|
||||||
|
|
||||||
('Skull Woods Forest', 'Skull Woods Forest'),
|
|
||||||
('East Dark Death Mountain Bushes', 'East Dark Death Mountain (Bushes)'),
|
|
||||||
('Bumper Cave Entrance Rock', 'Bumper Cave Entrance'),
|
|
||||||
('Dark Witch Rock (North)', 'Northeast Dark World'),
|
|
||||||
('Dark Witch Rock (South)', 'Catfish Area'),
|
|
||||||
('Grassy Lawn Pegs (Top)', 'West Dark World'),
|
|
||||||
('Grassy Lawn Pegs (Bottom)', 'Dark Grassy Lawn'),
|
|
||||||
('West Dark World Gap', 'West Dark World'),
|
|
||||||
('Broken Bridge Pass (Top)', 'East Dark World'),
|
|
||||||
('Broken Bridge Pass (Bottom)', 'Northeast Dark World'),
|
|
||||||
('Dark Graveyard Bush (South)', 'Dark Graveyard North'),
|
|
||||||
('Dark Graveyard Bush (North)', 'West Dark World'),
|
|
||||||
('Peg Area Rocks (Left)', 'Hammer Peg Area'),
|
|
||||||
('Peg Area Rocks (Right)', 'West Dark World'),
|
|
||||||
('Village of Outcasts Heavy Rock', 'West Dark World'),
|
|
||||||
('Hammer Bridge Pegs (North)', 'South Dark World'),
|
|
||||||
('Hammer Bridge Pegs (South)', 'East Dark World'),
|
|
||||||
('Ice Island To East Pier', 'East Dark World'),
|
|
||||||
|
|
||||||
# ledge drops
|
|
||||||
('Spectacle Rock Drop', 'West Death Mountain (Top)'),
|
|
||||||
('Death Mountain Drop', 'West Death Mountain (Bottom)'),
|
|
||||||
('Spiral Cave Ledge Access', 'Spiral Cave Ledge'),
|
|
||||||
('Fairy Ascension Ledge Access', 'Fairy Ascension Ledge'),
|
|
||||||
('East Death Mountain Drop', 'East Death Mountain (Bottom)'),
|
|
||||||
('Spiral Cave Ledge Drop', 'East Death Mountain (Bottom)'),
|
|
||||||
('Fairy Ascension Ledge Drop', 'Fairy Ascension Plateau'),
|
|
||||||
('Fairy Ascension Drop', 'East Death Mountain (Bottom)'),
|
|
||||||
('Death Mountain Entrance Drop', 'Light World'),
|
|
||||||
('Death Mountain Return Ledge Drop', 'Light World'),
|
|
||||||
('Graveyard Ledge Drop', 'Light World'),
|
|
||||||
('Hyrule Castle Ledge Courtyard Drop', 'Hyrule Castle Courtyard'),
|
|
||||||
('Hyrule Castle Ledge Drop', 'Light World'),
|
|
||||||
('Maze Race Ledge Drop', 'Light World'),
|
|
||||||
('Desert Ledge Drop', 'Light World'),
|
|
||||||
('Desert Palace Mouth Drop', 'Light World'),
|
|
||||||
('Checkerboard Ledge Drop', 'Light World'),
|
|
||||||
('Desert Teleporter Drop', 'Light World'),
|
|
||||||
('Cave 45 Ledge Drop', 'Light World'),
|
|
||||||
|
|
||||||
('Dark Death Mountain Drop (West)', 'West Dark Death Mountain (Bottom)'),
|
|
||||||
('Dark Death Mountain Drop (East)', 'East Dark Death Mountain (Bottom)'),
|
|
||||||
('Floating Island Drop', 'Dark Death Mountain (Top)'),
|
|
||||||
('Turtle Rock Drop', 'Dark Death Mountain (Top)'),
|
|
||||||
('Bumper Cave Entrance Drop', 'West Dark World'),
|
|
||||||
('Bumper Cave Ledge Drop', 'West Dark World'),
|
|
||||||
('Pyramid Drop', 'East Dark World'),
|
|
||||||
('Village of Outcasts Drop', 'South Dark World'),
|
|
||||||
('Dark Desert Drop', 'Dark Desert')
|
|
||||||
]
|
|
||||||
|
|
||||||
open_mandatory_connections = [('Sanctuary S&Q', 'Sanctuary'),
|
|
||||||
('Old Man S&Q', 'Old Man House'),
|
|
||||||
('Other World S&Q', 'East Dark World'),
|
|
||||||
|
|
||||||
# flute
|
|
||||||
('Flute Spot 1', 'West Death Mountain (Bottom)'),
|
|
||||||
('Flute Spot 2', 'Potion Shop Area'),
|
|
||||||
('Flute Spot 3', 'Light World'),
|
|
||||||
('Flute Spot 4', 'Light World'),
|
|
||||||
('Flute Spot 5', 'Light World'),
|
|
||||||
('Flute Spot 6', 'Desert Teleporter Ledge'),
|
|
||||||
('Flute Spot 7', 'Light World'),
|
|
||||||
('Flute Spot 8', 'Light World'),
|
|
||||||
('LW Flute', 'Flute Sky'),
|
|
||||||
('NWLW Flute', 'Flute Sky'),
|
|
||||||
('ZLW Flute', 'Flute Sky'),
|
|
||||||
('DM Flute', 'Flute Sky'),
|
|
||||||
('EDM Flute', 'Flute Sky'),
|
|
||||||
|
|
||||||
# portals
|
|
||||||
('Death Mountain Teleporter', 'West Dark Death Mountain (Bottom)'),
|
|
||||||
('East Death Mountain Teleporter', 'East Dark Death Mountain (Bottom)'),
|
|
||||||
('Turtle Rock Teleporter', 'Turtle Rock (Top)'),
|
|
||||||
('Kakariko Teleporter', 'West Dark World'),
|
|
||||||
('Castle Gate Teleporter', 'East Dark World'),
|
|
||||||
('East Hyrule Teleporter', 'East Dark World'),
|
|
||||||
('South Hyrule Teleporter', 'South Dark World'),
|
|
||||||
('Desert Teleporter', 'Dark Desert'),
|
|
||||||
('Lake Hylia Teleporter', 'Dark Lake Hylia Central Island')
|
|
||||||
]
|
|
||||||
|
|
||||||
inverted_mandatory_connections = [('Sanctuary S&Q', 'Dark Sanctuary Hint'),
|
|
||||||
('Old Man S&Q', 'West Dark Death Mountain (Bottom)'),
|
|
||||||
('Other World S&Q', 'Hyrule Castle Ledge'),
|
|
||||||
|
|
||||||
# flute
|
|
||||||
('Flute Spot 1', 'West Dark Death Mountain (Bottom)'),
|
|
||||||
('Flute Spot 2', 'Northeast Dark World'),
|
|
||||||
('Flute Spot 3', 'West Dark World'),
|
|
||||||
('Flute Spot 4', 'South Dark World'),
|
|
||||||
('Flute Spot 5', 'East Dark World'),
|
|
||||||
('Flute Spot 6', 'Dark Desert Ledge'),
|
|
||||||
('Flute Spot 7', 'South Dark World'),
|
|
||||||
('Flute Spot 8', 'Southeast Dark World'),
|
|
||||||
('DDM Flute', 'Flute Sky'),
|
|
||||||
('NEDW Flute', 'Flute Sky'),
|
|
||||||
('WDW Flute', 'Flute Sky'),
|
|
||||||
('SDW Flute', 'Flute Sky'),
|
|
||||||
('EDW Flute', 'Flute Sky'),
|
|
||||||
('DD Flute', 'Flute Sky'),
|
|
||||||
('DLHL Flute', 'Flute Sky'),
|
|
||||||
('EDDM Flute', 'Flute Sky'),
|
|
||||||
('Dark Grassy Lawn Flute', 'Flute Sky'),
|
|
||||||
('Hammer Peg Area Flute', 'Flute Sky'),
|
|
||||||
|
|
||||||
# modified terrain
|
|
||||||
('Spectacle Rock Approach', 'Spectacle Rock'),
|
|
||||||
('Spectacle Rock Leave', 'West Death Mountain (Top)'),
|
|
||||||
('Floating Island Bridge (West)', 'East Death Mountain (Top)'),
|
|
||||||
('Floating Island Bridge (East)', 'Death Mountain Floating Island'),
|
|
||||||
('Graveyard Ladder (Top)', 'Light World'),
|
|
||||||
('Graveyard Ladder (Bottom)', 'Graveyard Ledge'),
|
|
||||||
('Mimic Cave Ledge Access', 'Mimic Cave Ledge'),
|
|
||||||
('Mimic Cave Ledge Drop', 'East Death Mountain (Bottom)'),
|
|
||||||
('Checkerboard Ledge Approach', 'Desert Checkerboard Ledge'),
|
|
||||||
('Checkerboard Ledge Leave', 'Light World'),
|
|
||||||
('Cave 45 Approach', 'Cave 45 Ledge'),
|
|
||||||
('Cave 45 Leave', 'Light World'),
|
|
||||||
('Lake Hylia Island Pier', 'Lake Hylia Island'),
|
|
||||||
('Bombos Tablet Ladder (Top)', 'Light World'),
|
|
||||||
('Bombos Tablet Ladder (Bottom)', 'Bombos Tablet Ledge'),
|
|
||||||
('Dark Death Mountain Ladder (Top)', 'West Dark Death Mountain (Bottom)'),
|
|
||||||
('Dark Death Mountain Ladder (Bottom)', 'Dark Death Mountain (Top)'),
|
|
||||||
('Turtle Rock Tail Drop', 'Turtle Rock (Top)'),
|
|
||||||
('Ice Palace Approach', 'Dark Lake Hylia Central Island'),
|
|
||||||
|
|
||||||
# portals
|
|
||||||
('Dark Death Mountain Teleporter (West)', 'West Death Mountain (Bottom)'),
|
|
||||||
('East Dark Death Mountain Teleporter (Bottom)', 'East Death Mountain (Bottom)'),
|
|
||||||
('East Dark Death Mountain Teleporter (Top)', 'East Death Mountain (Top)'),
|
|
||||||
('West Dark World Teleporter', 'Light World'),
|
|
||||||
('Post Aga Teleporter', 'Light World'),
|
|
||||||
('East Dark World Teleporter', 'Light World'),
|
|
||||||
('South Dark World Teleporter', 'Light World'),
|
|
||||||
('Dark Desert Teleporter', 'Light World'),
|
|
||||||
('Dark Lake Hylia Teleporter', 'Lake Hylia Central Island')
|
|
||||||
]
|
]
|
||||||
|
|
||||||
# non-shuffled entrance links
|
# non-shuffled entrance links
|
||||||
default_connections = [('Lost Woods Gamble', 'Lost Woods Gamble'),
|
default_connections = [('Lost Woods Gamble', 'Lost Woods Gamble'),
|
||||||
('Lost Woods Hideout Drop', 'Lost Woods Hideout (top)'),
|
('Lost Woods Hideout Drop', 'Lost Woods Hideout (top)'),
|
||||||
('Lost Woods Hideout Stump', 'Lost Woods Hideout (bottom)'),
|
('Lost Woods Hideout Stump', 'Lost Woods Hideout (bottom)'),
|
||||||
('Lost Woods Hideout Exit', 'Light World'),
|
('Lost Woods Hideout Exit', 'Lost Woods East Area'),
|
||||||
('Lumberjack House', 'Lumberjack House'),
|
('Lumberjack House', 'Lumberjack House'),
|
||||||
('Lumberjack Tree Tree', 'Lumberjack Tree (top)'),
|
('Lumberjack Tree Tree', 'Lumberjack Tree (top)'),
|
||||||
('Lumberjack Tree Cave', 'Lumberjack Tree (bottom)'),
|
('Lumberjack Tree Cave', 'Lumberjack Tree (bottom)'),
|
||||||
('Lumberjack Tree Exit', 'Light World'),
|
('Lumberjack Tree Exit', 'Lumberjack Area'),
|
||||||
('Death Mountain Return Cave (East)', 'Death Mountain Return Cave (right)'),
|
('Death Mountain Return Cave (East)', 'Death Mountain Return Cave (right)'),
|
||||||
('Death Mountain Return Cave Exit (East)', 'West Death Mountain (Bottom)'),
|
('Death Mountain Return Cave Exit (East)', 'West Death Mountain (Bottom)'),
|
||||||
('Spectacle Rock Cave Peak', 'Spectacle Rock Cave (Peak)'),
|
('Spectacle Rock Cave Peak', 'Spectacle Rock Cave (Peak)'),
|
||||||
@@ -2354,22 +2151,22 @@ default_connections = [('Lost Woods Gamble', 'Lost Woods Gamble'),
|
|||||||
('Fortune Teller (Light)', 'Fortune Teller (Light)'),
|
('Fortune Teller (Light)', 'Fortune Teller (Light)'),
|
||||||
('Bonk Rock Cave', 'Bonk Rock Cave'),
|
('Bonk Rock Cave', 'Bonk Rock Cave'),
|
||||||
('Sanctuary', 'Sanctuary Portal'),
|
('Sanctuary', 'Sanctuary Portal'),
|
||||||
('Sanctuary Exit', 'Light World'),
|
('Sanctuary Exit', 'Sanctuary Area'),
|
||||||
('Sanctuary Grave', 'Sewer Drop'),
|
('Sanctuary Grave', 'Sewer Drop'),
|
||||||
('Graveyard Cave', 'Graveyard Cave'),
|
('Graveyard Cave', 'Graveyard Cave'),
|
||||||
('Kings Grave', 'Kings Grave'),
|
('Kings Grave', 'Kings Grave'),
|
||||||
('North Fairy Cave Drop', 'North Fairy Cave'),
|
('North Fairy Cave Drop', 'North Fairy Cave'),
|
||||||
('North Fairy Cave', 'North Fairy Cave'),
|
('North Fairy Cave', 'North Fairy Cave'),
|
||||||
('North Fairy Cave Exit', 'Light World'),
|
('North Fairy Cave Exit', 'River Bend Area'),
|
||||||
('Potion Shop', 'Potion Shop'),
|
('Potion Shop', 'Potion Shop'),
|
||||||
('Kakariko Well Drop', 'Kakariko Well (top)'),
|
('Kakariko Well Drop', 'Kakariko Well (top)'),
|
||||||
('Kakariko Well Cave', 'Kakariko Well (bottom)'),
|
('Kakariko Well Cave', 'Kakariko Well (bottom)'),
|
||||||
('Kakariko Well Exit', 'Light World'),
|
('Kakariko Well Exit', 'Kakariko Village'),
|
||||||
('Blinds Hideout', 'Blinds Hideout'),
|
('Blinds Hideout', 'Blinds Hideout'),
|
||||||
('Elder House (West)', 'Elder House'),
|
('Elder House (West)', 'Elder House'),
|
||||||
('Elder House (East)', 'Elder House'),
|
('Elder House (East)', 'Elder House'),
|
||||||
('Elder House Exit (West)', 'Light World'),
|
('Elder House Exit (West)', 'Kakariko Village'),
|
||||||
('Elder House Exit (East)', 'Light World'),
|
('Elder House Exit (East)', 'Kakariko Village'),
|
||||||
('Snitch Lady (West)', 'Snitch Lady (West)'),
|
('Snitch Lady (West)', 'Snitch Lady (West)'),
|
||||||
('Snitch Lady (East)', 'Snitch Lady (East)'),
|
('Snitch Lady (East)', 'Snitch Lady (East)'),
|
||||||
('Bush Covered House', 'Bush Covered House'),
|
('Bush Covered House', 'Bush Covered House'),
|
||||||
@@ -2381,16 +2178,16 @@ default_connections = [('Lost Woods Gamble', 'Lost Woods Gamble'),
|
|||||||
('Tavern (Front)', 'Tavern (Front)'),
|
('Tavern (Front)', 'Tavern (Front)'),
|
||||||
('Hyrule Castle Secret Entrance Drop', 'Hyrule Castle Secret Entrance'),
|
('Hyrule Castle Secret Entrance Drop', 'Hyrule Castle Secret Entrance'),
|
||||||
('Hyrule Castle Secret Entrance Stairs', 'Hyrule Castle Secret Entrance'),
|
('Hyrule Castle Secret Entrance Stairs', 'Hyrule Castle Secret Entrance'),
|
||||||
('Hyrule Castle Secret Entrance Exit', 'Hyrule Castle Secret Entrance Area'),
|
('Hyrule Castle Secret Entrance Exit', 'Hyrule Castle Courtyard Northeast'),
|
||||||
('Sahasrahlas Hut', 'Sahasrahlas Hut'),
|
('Sahasrahlas Hut', 'Sahasrahlas Hut'),
|
||||||
('Blacksmiths Hut', 'Blacksmiths Hut'),
|
('Blacksmiths Hut', 'Blacksmiths Hut'),
|
||||||
('Bat Cave Drop', 'Bat Cave (right)'),
|
('Bat Cave Drop', 'Bat Cave (right)'),
|
||||||
('Bat Cave Cave', 'Bat Cave (left)'),
|
('Bat Cave Cave', 'Bat Cave (left)'),
|
||||||
('Bat Cave Exit', 'Light World'),
|
('Bat Cave Exit', 'Blacksmith Area'),
|
||||||
('Two Brothers House (West)', 'Two Brothers House'),
|
('Two Brothers House (West)', 'Two Brothers House'),
|
||||||
('Two Brothers House Exit (West)', 'Maze Race Ledge'),
|
('Two Brothers House Exit (West)', 'Maze Race Ledge'),
|
||||||
('Two Brothers House (East)', 'Two Brothers House'),
|
('Two Brothers House (East)', 'Two Brothers House'),
|
||||||
('Two Brothers House Exit (East)', 'Light World'),
|
('Two Brothers House Exit (East)', 'Kakariko Suburb Area'),
|
||||||
('Library', 'Library'),
|
('Library', 'Library'),
|
||||||
('Kakariko Gamble Game', 'Kakariko Gamble Game'),
|
('Kakariko Gamble Game', 'Kakariko Gamble Game'),
|
||||||
('Bonk Fairy (Light)', 'Bonk Fairy (Light)'),
|
('Bonk Fairy (Light)', 'Bonk Fairy (Light)'),
|
||||||
@@ -2416,9 +2213,9 @@ default_connections = [('Lost Woods Gamble', 'Lost Woods Gamble'),
|
|||||||
('Hookshot Cave Back Exit', 'Dark Death Mountain Floating Island'),
|
('Hookshot Cave Back Exit', 'Dark Death Mountain Floating Island'),
|
||||||
('Hookshot Cave Back Entrance', 'Hookshot Cave (Back)'),
|
('Hookshot Cave Back Entrance', 'Hookshot Cave (Back)'),
|
||||||
('Hookshot Cave', 'Hookshot Cave (Front)'),
|
('Hookshot Cave', 'Hookshot Cave (Front)'),
|
||||||
('Hookshot Cave Front Exit', 'Dark Death Mountain (Top)'),
|
('Hookshot Cave Front Exit', 'East Dark Death Mountain (Top)'),
|
||||||
('Superbunny Cave (Top)', 'Superbunny Cave (Top)'),
|
('Superbunny Cave (Top)', 'Superbunny Cave (Top)'),
|
||||||
('Superbunny Cave Exit (Top)', 'Dark Death Mountain (Top)'),
|
('Superbunny Cave Exit (Top)', 'East Dark Death Mountain (Top)'),
|
||||||
('Superbunny Cave (Bottom)', 'Superbunny Cave (Bottom)'),
|
('Superbunny Cave (Bottom)', 'Superbunny Cave (Bottom)'),
|
||||||
('Superbunny Cave Exit (Bottom)', 'East Dark Death Mountain (Bottom)'),
|
('Superbunny Cave Exit (Bottom)', 'East Dark Death Mountain (Bottom)'),
|
||||||
('Dark Death Mountain Shop', 'Dark Death Mountain Shop'),
|
('Dark Death Mountain Shop', 'Dark Death Mountain Shop'),
|
||||||
@@ -2438,8 +2235,8 @@ default_connections = [('Lost Woods Gamble', 'Lost Woods Gamble'),
|
|||||||
('Dark Lake Hylia Fairy', 'Dark Lake Hylia Healer Fairy'),
|
('Dark Lake Hylia Fairy', 'Dark Lake Hylia Healer Fairy'),
|
||||||
('East Dark World Hint', 'East Dark World Hint'),
|
('East Dark World Hint', 'East Dark World Hint'),
|
||||||
('Mire Shed', 'Mire Shed'),
|
('Mire Shed', 'Mire Shed'),
|
||||||
('Dark Desert Fairy', 'Dark Desert Healer Fairy'),
|
('Mire Fairy', 'Mire Healer Fairy'),
|
||||||
('Dark Desert Hint', 'Dark Desert Hint'),
|
('Mire Hint', 'Mire Hint'),
|
||||||
('Hype Cave', 'Hype Cave'),
|
('Hype Cave', 'Hype Cave'),
|
||||||
('Dark Lake Hylia Shop', 'Dark Lake Hylia Shop'),
|
('Dark Lake Hylia Shop', 'Dark Lake Hylia Shop'),
|
||||||
('Dark Lake Hylia Ledge Fairy', 'Dark Lake Hylia Ledge Healer Fairy'),
|
('Dark Lake Hylia Ledge Fairy', 'Dark Lake Hylia Ledge Healer Fairy'),
|
||||||
@@ -2448,18 +2245,18 @@ default_connections = [('Lost Woods Gamble', 'Lost Woods Gamble'),
|
|||||||
]
|
]
|
||||||
|
|
||||||
open_default_connections = [('Links House', 'Links House'),
|
open_default_connections = [('Links House', 'Links House'),
|
||||||
('Links House Exit', 'Light World'),
|
('Links House Exit', 'Links House Area'),
|
||||||
('Big Bomb Shop', 'Big Bomb Shop'),
|
('Big Bomb Shop', 'Big Bomb Shop'),
|
||||||
('Old Man Cave (West)', 'Old Man Cave Ledge'),
|
('Old Man Cave (West)', 'Old Man Cave Ledge'),
|
||||||
('Old Man Cave (East)', 'Old Man Cave (East)'),
|
('Old Man Cave (East)', 'Old Man Cave (East)'),
|
||||||
('Old Man Cave Exit (West)', 'Light World'),
|
('Old Man Cave Exit (West)', 'Mountain Pass Entry'),
|
||||||
('Old Man Cave Exit (East)', 'West Death Mountain (Bottom)'),
|
('Old Man Cave Exit (East)', 'West Death Mountain (Bottom)'),
|
||||||
('Death Mountain Return Cave (West)', 'Death Mountain Return Cave (left)'),
|
('Death Mountain Return Cave (West)', 'Death Mountain Return Cave (left)'),
|
||||||
('Death Mountain Return Cave Exit (West)', 'Death Mountain Return Ledge'),
|
('Death Mountain Return Cave Exit (West)', 'Mountain Pass Ledge'),
|
||||||
('Bumper Cave (Bottom)', 'Bumper Cave (bottom)'),
|
('Bumper Cave (Bottom)', 'Bumper Cave (bottom)'),
|
||||||
('Bumper Cave (Top)', 'Bumper Cave (top)'),
|
('Bumper Cave (Top)', 'Bumper Cave (top)'),
|
||||||
('Bumper Cave Exit (Top)', 'Bumper Cave Ledge'),
|
('Bumper Cave Exit (Top)', 'Bumper Cave Ledge'),
|
||||||
('Bumper Cave Exit (Bottom)', 'West Dark World'),
|
('Bumper Cave Exit (Bottom)', 'Bumper Cave Entry'),
|
||||||
('Dark Death Mountain Fairy', 'Dark Death Mountain Healer Fairy'),
|
('Dark Death Mountain Fairy', 'Dark Death Mountain Healer Fairy'),
|
||||||
('Pyramid Hole', 'Pyramid'),
|
('Pyramid Hole', 'Pyramid'),
|
||||||
('Pyramid Entrance', 'Bottom of Pyramid'),
|
('Pyramid Entrance', 'Bottom of Pyramid'),
|
||||||
@@ -2467,19 +2264,19 @@ open_default_connections = [('Links House', 'Links House'),
|
|||||||
]
|
]
|
||||||
|
|
||||||
inverted_default_connections = [('Links House', 'Big Bomb Shop'),
|
inverted_default_connections = [('Links House', 'Big Bomb Shop'),
|
||||||
('Links House Exit', 'South Dark World'),
|
('Links House Exit', 'Big Bomb Shop Area'),
|
||||||
('Big Bomb Shop', 'Links House'),
|
('Big Bomb Shop', 'Links House'),
|
||||||
('Dark Sanctuary Hint Exit', 'West Dark World'),
|
('Dark Sanctuary Hint Exit', 'Dark Chapel Area'),
|
||||||
('Old Man Cave (West)', 'Bumper Cave (bottom)'),
|
('Old Man Cave (West)', 'Bumper Cave (bottom)'),
|
||||||
('Old Man Cave (East)', 'Death Mountain Return Cave (left)'),
|
('Old Man Cave (East)', 'Death Mountain Return Cave (left)'),
|
||||||
('Old Man Cave Exit (West)', 'West Dark World'),
|
('Old Man Cave Exit (West)', 'Bumper Cave Entry'),
|
||||||
('Old Man Cave Exit (East)', 'West Dark Death Mountain (Bottom)'),
|
('Old Man Cave Exit (East)', 'West Dark Death Mountain (Bottom)'),
|
||||||
('Death Mountain Return Cave (West)', 'Bumper Cave (top)'),
|
('Death Mountain Return Cave (West)', 'Bumper Cave (top)'),
|
||||||
('Death Mountain Return Cave Exit (West)', 'West Death Mountain (Bottom)'),
|
('Death Mountain Return Cave Exit (West)', 'West Death Mountain (Bottom)'),
|
||||||
('Bumper Cave (Bottom)', 'Old Man Cave Ledge'),
|
('Bumper Cave (Bottom)', 'Old Man Cave Ledge'),
|
||||||
('Bumper Cave (Top)', 'Dark Death Mountain Healer Fairy'),
|
('Bumper Cave (Top)', 'Dark Death Mountain Healer Fairy'),
|
||||||
('Bumper Cave Exit (Top)', 'Death Mountain Return Ledge'),
|
('Bumper Cave Exit (Top)', 'Mountain Pass Ledge'),
|
||||||
('Bumper Cave Exit (Bottom)', 'Light World'),
|
('Bumper Cave Exit (Bottom)', 'Mountain Pass Entry'),
|
||||||
('Dark Death Mountain Fairy', 'Old Man Cave (East)'),
|
('Dark Death Mountain Fairy', 'Old Man Cave (East)'),
|
||||||
('Inverted Pyramid Hole', 'Pyramid'),
|
('Inverted Pyramid Hole', 'Pyramid'),
|
||||||
('Inverted Pyramid Entrance', 'Bottom of Pyramid'),
|
('Inverted Pyramid Entrance', 'Bottom of Pyramid'),
|
||||||
@@ -2497,19 +2294,19 @@ default_dungeon_connections = [('Hyrule Castle Entrance (South)', 'Hyrule Castle
|
|||||||
('Desert Palace Entrance (West)', 'Desert West Portal'),
|
('Desert Palace Entrance (West)', 'Desert West Portal'),
|
||||||
('Desert Palace Entrance (North)', 'Desert Back Portal'),
|
('Desert Palace Entrance (North)', 'Desert Back Portal'),
|
||||||
('Desert Palace Entrance (East)', 'Desert East Portal'),
|
('Desert Palace Entrance (East)', 'Desert East Portal'),
|
||||||
('Desert Palace Exit (South)', 'Desert Palace Stairs'),
|
('Desert Palace Exit (South)', 'Desert Stairs'),
|
||||||
('Desert Palace Exit (West)', 'Desert Ledge'),
|
('Desert Palace Exit (West)', 'Desert Ledge'),
|
||||||
('Desert Palace Exit (East)', 'Desert Palace Mouth'),
|
('Desert Palace Exit (East)', 'Desert Mouth'),
|
||||||
('Desert Palace Exit (North)', 'Desert Palace Entrance (North) Spot'),
|
('Desert Palace Exit (North)', 'Desert Ledge Keep'),
|
||||||
('Eastern Palace', 'Eastern Portal'),
|
('Eastern Palace', 'Eastern Portal'),
|
||||||
('Eastern Palace Exit', 'Light World'),
|
('Eastern Palace Exit', 'Eastern Palace Area'),
|
||||||
('Tower of Hera', 'Hera Portal'),
|
('Tower of Hera', 'Hera Portal'),
|
||||||
('Tower of Hera Exit', 'West Death Mountain (Top)'),
|
('Tower of Hera Exit', 'West Death Mountain (Top)'),
|
||||||
|
|
||||||
('Palace of Darkness', 'Palace of Darkness Portal'),
|
('Palace of Darkness', 'Palace of Darkness Portal'),
|
||||||
('Palace of Darkness Exit', 'East Dark World'),
|
('Palace of Darkness Exit', 'Palace of Darkness Area'),
|
||||||
('Swamp Palace', 'Swamp Portal'), # requires additional patch for flooding moat if moved
|
('Swamp Palace', 'Swamp Portal'), # requires additional patch for flooding moat if moved
|
||||||
('Swamp Palace Exit', 'South Dark World'),
|
('Swamp Palace Exit', 'Swamp Area'),
|
||||||
('Skull Woods First Section Hole (East)', 'Skull Pinball'),
|
('Skull Woods First Section Hole (East)', 'Skull Pinball'),
|
||||||
('Skull Woods First Section Hole (West)', 'Skull Left Drop'),
|
('Skull Woods First Section Hole (West)', 'Skull Left Drop'),
|
||||||
('Skull Woods First Section Hole (North)', 'Skull Pot Circle'),
|
('Skull Woods First Section Hole (North)', 'Skull Pot Circle'),
|
||||||
@@ -2523,13 +2320,13 @@ default_dungeon_connections = [('Hyrule Castle Entrance (South)', 'Hyrule Castle
|
|||||||
('Skull Woods Final Section', 'Skull 3 Portal'),
|
('Skull Woods Final Section', 'Skull 3 Portal'),
|
||||||
('Skull Woods Final Section Exit', 'Skull Woods Forest (West)'),
|
('Skull Woods Final Section Exit', 'Skull Woods Forest (West)'),
|
||||||
('Thieves Town', 'Thieves Town Portal'),
|
('Thieves Town', 'Thieves Town Portal'),
|
||||||
('Thieves Town Exit', 'West Dark World'),
|
('Thieves Town Exit', 'Village of Outcasts'),
|
||||||
('Ice Palace', 'Ice Portal'),
|
('Ice Palace', 'Ice Portal'),
|
||||||
('Ice Palace Exit', 'Dark Lake Hylia Central Island'),
|
('Ice Palace Exit', 'Ice Palace Area'),
|
||||||
('Misery Mire', 'Mire Portal'),
|
('Misery Mire', 'Mire Portal'),
|
||||||
('Misery Mire Exit', 'Dark Desert'),
|
('Misery Mire Exit', 'Mire Area'),
|
||||||
('Turtle Rock', 'Turtle Rock Main Portal'),
|
('Turtle Rock', 'Turtle Rock Main Portal'),
|
||||||
('Turtle Rock Exit (Front)', 'Dark Death Mountain (Top)'),
|
('Turtle Rock Exit (Front)', 'Turtle Rock Area'),
|
||||||
('Dark Death Mountain Ledge (West)', 'Turtle Rock Lazy Eyes Portal'),
|
('Dark Death Mountain Ledge (West)', 'Turtle Rock Lazy Eyes Portal'),
|
||||||
('Dark Death Mountain Ledge (East)', 'Turtle Rock Chest Portal'),
|
('Dark Death Mountain Ledge (East)', 'Turtle Rock Chest Portal'),
|
||||||
('Turtle Rock Ledge Exit (West)', 'Dark Death Mountain Ledge'),
|
('Turtle Rock Ledge Exit (West)', 'Dark Death Mountain Ledge'),
|
||||||
@@ -2541,23 +2338,23 @@ default_dungeon_connections = [('Hyrule Castle Entrance (South)', 'Hyrule Castle
|
|||||||
open_default_dungeon_connections = [('Agahnims Tower', 'Agahnims Tower Portal'),
|
open_default_dungeon_connections = [('Agahnims Tower', 'Agahnims Tower Portal'),
|
||||||
('Agahnims Tower Exit', 'Hyrule Castle Ledge'),
|
('Agahnims Tower Exit', 'Hyrule Castle Ledge'),
|
||||||
('Ganons Tower', 'Ganons Tower Portal'),
|
('Ganons Tower', 'Ganons Tower Portal'),
|
||||||
('Ganons Tower Exit', 'Dark Death Mountain (Top)')
|
('Ganons Tower Exit', 'West Dark Death Mountain (Top)')
|
||||||
]
|
]
|
||||||
|
|
||||||
inverted_default_dungeon_connections = [('Agahnims Tower', 'Ganons Tower Portal'),
|
inverted_default_dungeon_connections = [('Agahnims Tower', 'Ganons Tower Portal'),
|
||||||
('Agahnims Tower Exit', 'Dark Death Mountain (Top)'),
|
('Agahnims Tower Exit', 'West Dark Death Mountain (Top)'),
|
||||||
('Ganons Tower', 'Agahnims Tower Portal'),
|
('Ganons Tower', 'Agahnims Tower Portal'),
|
||||||
('Ganons Tower Exit', 'Hyrule Castle Ledge')
|
('Ganons Tower Exit', 'Hyrule Castle Ledge')
|
||||||
]
|
]
|
||||||
|
|
||||||
indirect_connections = {
|
indirect_connections = {
|
||||||
'Turtle Rock (Top)': 'Turtle Rock',
|
'Turtle Rock Ledge': 'Turtle Rock',
|
||||||
'East Dark World': 'Pyramid Fairy',
|
'Pyramid Area': 'Pyramid Fairy',
|
||||||
'Big Bomb Shop': 'Pyramid Fairy',
|
'Big Bomb Shop': 'Pyramid Fairy',
|
||||||
'Dark Desert': 'Pyramid Fairy',
|
'Mire Area': 'Pyramid Fairy',
|
||||||
'West Dark World': 'Pyramid Fairy',
|
#'West Dark World': 'Pyramid Fairy',
|
||||||
'South Dark World': 'Pyramid Fairy',
|
'Big Bomb Shop Area': 'Pyramid Fairy',
|
||||||
'Light World': 'Pyramid Fairy',
|
#'Light World': 'Pyramid Fairy',
|
||||||
'Old Man Cave (East)': 'Old Man S&Q'
|
'Old Man Cave (East)': 'Old Man S&Q'
|
||||||
}
|
}
|
||||||
# format:
|
# format:
|
||||||
@@ -2698,8 +2495,8 @@ door_addresses = {'Links House': (0x00, (0x0104, 0x2c, 0x0506, 0x0a9a, 0x0832, 0
|
|||||||
'Dark Potion Shop': (0x6E, (0x010f, 0x56, 0x080e, 0x04f4, 0x0c66, 0x0548, 0x0cd8, 0x0563, 0x0ce3, 0x0a, 0xf6, 0x0000, 0x0000)),
|
'Dark Potion Shop': (0x6E, (0x010f, 0x56, 0x080e, 0x04f4, 0x0c66, 0x0548, 0x0cd8, 0x0563, 0x0ce3, 0x0a, 0xf6, 0x0000, 0x0000)),
|
||||||
'Archery Game': (0x58, (0x0111, 0x69, 0x069e, 0x0ac4, 0x02ea, 0x0b18, 0x0368, 0x0b33, 0x036f, 0x0a, 0xf6, 0x09AC, 0x0000)),
|
'Archery Game': (0x58, (0x0111, 0x69, 0x069e, 0x0ac4, 0x02ea, 0x0b18, 0x0368, 0x0b33, 0x036f, 0x0a, 0xf6, 0x09AC, 0x0000)),
|
||||||
'Mire Shed': (0x5E, (0x010d, 0x70, 0x0384, 0x0c69, 0x001e, 0x0cb6, 0x0098, 0x0cd6, 0x00a3, 0x07, 0xf9, 0x0000, 0x0000)),
|
'Mire Shed': (0x5E, (0x010d, 0x70, 0x0384, 0x0c69, 0x001e, 0x0cb6, 0x0098, 0x0cd6, 0x00a3, 0x07, 0xf9, 0x0000, 0x0000)),
|
||||||
'Dark Desert Hint': (0x61, (0x0114, 0x70, 0x0654, 0x0cc5, 0x02aa, 0x0d16, 0x0328, 0x0d32, 0x032f, 0x09, 0xf7, 0x0000, 0x0000)),
|
'Mire Hint': (0x61, (0x0114, 0x70, 0x0654, 0x0cc5, 0x02aa, 0x0d16, 0x0328, 0x0d32, 0x032f, 0x09, 0xf7, 0x0000, 0x0000)),
|
||||||
'Dark Desert Fairy': (0x55, (0x0115, 0x70, 0x03a8, 0x0c6a, 0x013a, 0x0cb7, 0x01b8, 0x0cd7, 0x01bf, 0x06, 0xfa, 0x0000, 0x0000)),
|
'Mire Fairy': (0x55, (0x0115, 0x70, 0x03a8, 0x0c6a, 0x013a, 0x0cb7, 0x01b8, 0x0cd7, 0x01bf, 0x06, 0xfa, 0x0000, 0x0000)),
|
||||||
'Spike Cave': (0x40, (0x0117, 0x43, 0x0ed4, 0x01e4, 0x08aa, 0x0236, 0x0928, 0x0253, 0x092f, 0x0a, 0xf6, 0x0000, 0x0000)),
|
'Spike Cave': (0x40, (0x0117, 0x43, 0x0ed4, 0x01e4, 0x08aa, 0x0236, 0x0928, 0x0253, 0x092f, 0x0a, 0xf6, 0x0000, 0x0000)),
|
||||||
'Dark Death Mountain Shop': (0x6D, (0x0112, 0x45, 0x0ee0, 0x01e3, 0x0d00, 0x0236, 0x0daa, 0x0252, 0x0d7d, 0x0b, 0xf5, 0x0000, 0x0000)),
|
'Dark Death Mountain Shop': (0x6D, (0x0112, 0x45, 0x0ee0, 0x01e3, 0x0d00, 0x0236, 0x0daa, 0x0252, 0x0d7d, 0x0b, 0xf5, 0x0000, 0x0000)),
|
||||||
'Dark Death Mountain Fairy': (0x6F, (0x0115, 0x43, 0x1400, 0x0294, 0x0600, 0x02e8, 0x0678, 0x0303, 0x0685, 0x0a, 0xf6, 0x0000, 0x0000)),
|
'Dark Death Mountain Fairy': (0x6F, (0x0115, 0x43, 0x1400, 0x0294, 0x0600, 0x02e8, 0x0678, 0x0303, 0x0685, 0x0a, 0xf6, 0x0000, 0x0000)),
|
||||||
@@ -2785,7 +2582,7 @@ exit_ids = {'Links House Exit': (0x01, 0x00),
|
|||||||
'Desert Healer Fairy': 0x5E,
|
'Desert Healer Fairy': 0x5E,
|
||||||
'Dark Lake Hylia Healer Fairy': 0x5E,
|
'Dark Lake Hylia Healer Fairy': 0x5E,
|
||||||
'Dark Lake Hylia Ledge Healer Fairy': 0x5E,
|
'Dark Lake Hylia Ledge Healer Fairy': 0x5E,
|
||||||
'Dark Desert Healer Fairy': 0x5E,
|
'Mire Healer Fairy': 0x5E,
|
||||||
'Dark Death Mountain Healer Fairy': 0x5E,
|
'Dark Death Mountain Healer Fairy': 0x5E,
|
||||||
'Fortune Teller (Light)': 0x65,
|
'Fortune Teller (Light)': 0x65,
|
||||||
'Lake Hylia Fortune Teller': 0x65,
|
'Lake Hylia Fortune Teller': 0x65,
|
||||||
@@ -2840,7 +2637,7 @@ exit_ids = {'Links House Exit': (0x01, 0x00),
|
|||||||
'Fortune Teller (Dark)': 0x66,
|
'Fortune Teller (Dark)': 0x66,
|
||||||
'Archery Game': 0x59,
|
'Archery Game': 0x59,
|
||||||
'Mire Shed': 0x5F,
|
'Mire Shed': 0x5F,
|
||||||
'Dark Desert Hint': 0x62,
|
'Mire Hint': 0x62,
|
||||||
'Spike Cave': 0x41,
|
'Spike Cave': 0x41,
|
||||||
'Mimic Cave': 0x4F,
|
'Mimic Cave': 0x4F,
|
||||||
'Kakariko Well (top)': 0x80,
|
'Kakariko Well (top)': 0x80,
|
||||||
@@ -2976,8 +2773,8 @@ ow_prize_table = {'Links House': (0x8b1, 0xb2d),
|
|||||||
'Dark Potion Shop': (0xc80, 0x4c0),
|
'Dark Potion Shop': (0xc80, 0x4c0),
|
||||||
'Archery Game': (0x2f0, 0xaf0),
|
'Archery Game': (0x2f0, 0xaf0),
|
||||||
'Mire Shed': (0x060, 0xc90),
|
'Mire Shed': (0x060, 0xc90),
|
||||||
'Dark Desert Hint': (0x2e0, 0xd00),
|
'Mire Hint': (0x2e0, 0xd00),
|
||||||
'Dark Desert Fairy': (0x1c0, 0xc90),
|
'Mire Fairy': (0x1c0, 0xc90),
|
||||||
'Spike Cave': (0x860, 0x180),
|
'Spike Cave': (0x860, 0x180),
|
||||||
'Dark Death Mountain Shop': (0xd80, 0x180),
|
'Dark Death Mountain Shop': (0xd80, 0x180),
|
||||||
'Dark Death Mountain Fairy': (0x620, 0x2c0),
|
'Dark Death Mountain Fairy': (0x620, 0x2c0),
|
||||||
|
|||||||
@@ -932,7 +932,7 @@ def balance_money_progression(world):
|
|||||||
checked_locations = []
|
checked_locations = []
|
||||||
for player in range(1, world.players+1):
|
for player in range(1, world.players+1):
|
||||||
kiki_payable = state.prog_items[('Moon Pearl', player)] > 0 or world.mode[player] == 'inverted'
|
kiki_payable = state.prog_items[('Moon Pearl', player)] > 0 or world.mode[player] == 'inverted'
|
||||||
if kiki_payable and world.get_region('East Dark World', player) in state.reachable_regions[player]:
|
if kiki_payable and world.get_region('Palace of Darkness Area', player) in state.reachable_regions[player]:
|
||||||
if not kiki_paid[player]:
|
if not kiki_paid[player]:
|
||||||
kiki_check[player] = True
|
kiki_check[player] = True
|
||||||
sphere_costs[player] += 110
|
sphere_costs[player] += 110
|
||||||
|
|||||||
+3
-3
@@ -199,7 +199,7 @@ def generate_itempool(world, player):
|
|||||||
world.push_item(world.get_location('Ganon', player), ItemFactory('Triforce', player), False)
|
world.push_item(world.get_location('Ganon', player), ItemFactory('Triforce', player), False)
|
||||||
|
|
||||||
if world.goal[player] in ['triforcehunt', 'trinity']:
|
if world.goal[player] in ['triforcehunt', 'trinity']:
|
||||||
region = world.get_region('Light World', player)
|
region = world.get_region('Hyrule Castle Courtyard', player)
|
||||||
loc = Location(player, "Murahdahla", parent=region)
|
loc = Location(player, "Murahdahla", parent=region)
|
||||||
region.locations.append(loc)
|
region.locations.append(loc)
|
||||||
world.dynamic_locations.append(loc)
|
world.dynamic_locations.append(loc)
|
||||||
@@ -476,11 +476,11 @@ take_any_locations = [
|
|||||||
'Snitch Lady (East)', 'Snitch Lady (West)', 'Bush Covered House', 'Light World Bomb Hut',
|
'Snitch Lady (East)', 'Snitch Lady (West)', 'Bush Covered House', 'Light World Bomb Hut',
|
||||||
'Fortune Teller (Light)', 'Lake Hylia Fortune Teller', 'Lumberjack House', 'Bonk Fairy (Light)',
|
'Fortune Teller (Light)', 'Lake Hylia Fortune Teller', 'Lumberjack House', 'Bonk Fairy (Light)',
|
||||||
'Bonk Fairy (Dark)', 'Lake Hylia Healer Fairy', 'Light Hype Fairy', 'Desert Healer Fairy',
|
'Bonk Fairy (Dark)', 'Lake Hylia Healer Fairy', 'Light Hype Fairy', 'Desert Healer Fairy',
|
||||||
'Dark Lake Hylia Healer Fairy', 'Dark Lake Hylia Ledge Healer Fairy', 'Dark Desert Healer Fairy',
|
'Dark Lake Hylia Healer Fairy', 'Dark Lake Hylia Ledge Healer Fairy', 'Mire Healer Fairy',
|
||||||
'Dark Death Mountain Healer Fairy', 'Long Fairy Cave', 'Good Bee Cave', '20 Rupee Cave',
|
'Dark Death Mountain Healer Fairy', 'Long Fairy Cave', 'Good Bee Cave', '20 Rupee Cave',
|
||||||
'Kakariko Gamble Game', '50 Rupee Cave', 'Lost Woods Gamble', 'Hookshot Fairy',
|
'Kakariko Gamble Game', '50 Rupee Cave', 'Lost Woods Gamble', 'Hookshot Fairy',
|
||||||
'Palace of Darkness Hint', 'East Dark World Hint', 'Archery Game', 'Dark Lake Hylia Ledge Hint',
|
'Palace of Darkness Hint', 'East Dark World Hint', 'Archery Game', 'Dark Lake Hylia Ledge Hint',
|
||||||
'Dark Lake Hylia Ledge Spike Cave', 'Fortune Teller (Dark)', 'Dark Sanctuary Hint', 'Dark Desert Hint']
|
'Dark Lake Hylia Ledge Spike Cave', 'Fortune Teller (Dark)', 'Dark Sanctuary Hint', 'Mire Hint']
|
||||||
|
|
||||||
fixed_take_anys = [
|
fixed_take_anys = [
|
||||||
'Desert Healer Fairy', 'Light Hype Fairy', 'Dark Death Mountain Healer Fairy',
|
'Desert Healer Fairy', 'Light Hype Fairy', 'Dark Death Mountain Healer Fairy',
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ from KeyDoorShuffle import validate_key_placement
|
|||||||
from OverworldGlitchRules import create_owg_connections
|
from OverworldGlitchRules import create_owg_connections
|
||||||
from PotShuffle import shuffle_pots, shuffle_pot_switches
|
from PotShuffle import shuffle_pots, shuffle_pot_switches
|
||||||
from Regions import create_regions, create_shops, mark_light_dark_world_regions, create_dungeon_regions, adjust_locations
|
from Regions import create_regions, create_shops, mark_light_dark_world_regions, create_dungeon_regions, adjust_locations
|
||||||
from OverworldShuffle import create_dynamic_exits
|
from OverworldShuffle import link_overworld, create_dynamic_exits
|
||||||
from EntranceShuffle import link_entrances
|
from EntranceShuffle import link_entrances
|
||||||
from Rom import patch_rom, patch_race_rom, apply_rom_settings, LocalRom, JsonRom, get_hash_string
|
from Rom import patch_rom, patch_race_rom, apply_rom_settings, LocalRom, JsonRom, get_hash_string
|
||||||
from Doors import create_doors
|
from Doors import create_doors
|
||||||
@@ -246,6 +246,7 @@ def main(args, seed=None, fish=None):
|
|||||||
logger.info(world.fish.translate("cli","cli","shuffling.world"))
|
logger.info(world.fish.translate("cli","cli","shuffling.world"))
|
||||||
|
|
||||||
for player in range(1, world.players + 1):
|
for player in range(1, world.players + 1):
|
||||||
|
link_overworld(world, player)
|
||||||
create_dynamic_exits(world, player)
|
create_dynamic_exits(world, player)
|
||||||
if world.experimental[player] or world.shuffle[player] in ['lite', 'lean', 'swapped'] or world.shuffletavern[player] or (world.customizer and world.customizer.get_entrances()):
|
if world.experimental[player] or world.shuffle[player] in ['lite', 'lean', 'swapped'] or world.shuffletavern[player] or (world.customizer and world.customizer.get_entrances()):
|
||||||
link_entrances_new(world, player)
|
link_entrances_new(world, player)
|
||||||
|
|||||||
+992
-39
File diff suppressed because it is too large
Load Diff
@@ -9,6 +9,7 @@ import sys
|
|||||||
|
|
||||||
from BaseClasses import World
|
from BaseClasses import World
|
||||||
from Regions import create_regions
|
from Regions import create_regions
|
||||||
|
from OverworldShuffle import link_overworld
|
||||||
from EntranceShuffle import link_entrances, connect_entrance, connect_two_way, connect_exit
|
from EntranceShuffle import link_entrances, connect_entrance, connect_two_way, connect_exit
|
||||||
from Rom import patch_rom, LocalRom, write_string_to_rom, apply_rom_settings, get_sprite_from_name
|
from Rom import patch_rom, LocalRom, write_string_to_rom, apply_rom_settings, get_sprite_from_name
|
||||||
from Rules import set_rules
|
from Rules import set_rules
|
||||||
@@ -42,6 +43,7 @@ def main(args):
|
|||||||
create_regions(world, 1)
|
create_regions(world, 1)
|
||||||
create_dungeons(world, 1)
|
create_dungeons(world, 1)
|
||||||
|
|
||||||
|
link_overworld(world, 1)
|
||||||
link_entrances(world, 1)
|
link_entrances(world, 1)
|
||||||
|
|
||||||
logger.info('Calculating Access Rules.')
|
logger.info('Calculating Access Rules.')
|
||||||
|
|||||||
+6
-6
@@ -788,12 +788,12 @@ vanilla_pots = {
|
|||||||
0x108: [Pot(166, 19, PotItem.Chicken, 'Chicken House', obj=RoomObject(0x03EFA9, [0x4F, 0x9F, 0xFA]))],
|
0x108: [Pot(166, 19, PotItem.Chicken, 'Chicken House', obj=RoomObject(0x03EFA9, [0x4F, 0x9F, 0xFA]))],
|
||||||
0x10C: [Pot(88, 14, PotItem.Heart, 'Hookshot Fairy', obj=RoomObject(0x03F329, [0xB3, 0x73, 0xFA]))],
|
0x10C: [Pot(88, 14, PotItem.Heart, 'Hookshot Fairy', obj=RoomObject(0x03F329, [0xB3, 0x73, 0xFA]))],
|
||||||
# note: these addresses got moved thanks to waterfall fairy edit
|
# note: these addresses got moved thanks to waterfall fairy edit
|
||||||
0x114: [Pot(92, 4, PotItem.Heart, 'Dark Desert Hint', obj=RoomObject(0x03F79A, [0xBB, 0x23, 0xFA])),
|
0x114: [Pot(92, 4, PotItem.Heart, 'Mire Hint', obj=RoomObject(0x03F79A, [0xBB, 0x23, 0xFA])),
|
||||||
Pot(96, 4, PotItem.Heart, 'Dark Desert Hint', obj=RoomObject(0x03F79D, [0xC3, 0x23, 0xFA])),
|
Pot(96, 4, PotItem.Heart, 'Mire Hint', obj=RoomObject(0x03F79D, [0xC3, 0x23, 0xFA])),
|
||||||
Pot(92, 5, PotItem.Bomb, 'Dark Desert Hint', obj=RoomObject(0x03F7A0, [0xBB, 0x2B, 0xFA])),
|
Pot(92, 5, PotItem.Bomb, 'Mire Hint', obj=RoomObject(0x03F7A0, [0xBB, 0x2B, 0xFA])),
|
||||||
Pot(96, 5, PotItem.Bomb, 'Dark Desert Hint', obj=RoomObject(0x03F7A3, [0xC3, 0x2B, 0xFA])),
|
Pot(96, 5, PotItem.Bomb, 'Mire Hint', obj=RoomObject(0x03F7A3, [0xC3, 0x2B, 0xFA])),
|
||||||
Pot(92, 10, PotItem.FiveArrows, 'Dark Desert Hint', obj=RoomObject(0x03F7A6, [0xBB, 0x53, 0xFA])),
|
Pot(92, 10, PotItem.FiveArrows, 'Mire Hint', obj=RoomObject(0x03F7A6, [0xBB, 0x53, 0xFA])),
|
||||||
Pot(96, 10, PotItem.Heart, 'Dark Desert Hint', obj=RoomObject(0x03F7A9, [0xC3, 0x53, 0xFA]))],
|
Pot(96, 10, PotItem.Heart, 'Mire Hint', obj=RoomObject(0x03F7A9, [0xC3, 0x53, 0xFA]))],
|
||||||
0x117: [Pot(138, 3, PotItem.Heart, 'Spike Cave', obj=RoomObject(0x03FCB2, [0x17, 0x1F, 0xFA])), # 0x38A -> 38A
|
0x117: [Pot(138, 3, PotItem.Heart, 'Spike Cave', obj=RoomObject(0x03FCB2, [0x17, 0x1F, 0xFA])), # 0x38A -> 38A
|
||||||
Pot(142, 3, PotItem.Heart, 'Spike Cave', obj=RoomObject(0x03FCB8, [0x1F, 0x1F, 0xFA])),
|
Pot(142, 3, PotItem.Heart, 'Spike Cave', obj=RoomObject(0x03FCB8, [0x1F, 0x1F, 0xFA])),
|
||||||
Pot(166, 3, PotItem.Heart, 'Spike Cave', obj=RoomObject(0x03FCC1, [0x4F, 0x1F, 0xFA])),
|
Pot(166, 3, PotItem.Heart, 'Spike Cave', obj=RoomObject(0x03FCC1, [0x4F, 0x1F, 0xFA])),
|
||||||
|
|||||||
+222
-92
@@ -1,6 +1,6 @@
|
|||||||
import collections
|
import collections
|
||||||
from Items import ItemFactory
|
from Items import ItemFactory
|
||||||
from BaseClasses import Region, Location, Entrance, RegionType, Shop, ShopType, LocationType, PotItem, PotFlags
|
from BaseClasses import Region, Location, Entrance, RegionType, Terrain, Shop, ShopType, LocationType, PotItem, PotFlags
|
||||||
from PotShuffle import key_drop_data, vanilla_pots, choose_pots, PotSecretTable
|
from PotShuffle import key_drop_data, vanilla_pots, choose_pots, PotSecretTable
|
||||||
|
|
||||||
from source.dungeon.EnemyList import setup_enemy_locations, enemy_names
|
from source.dungeon.EnemyList import setup_enemy_locations, enemy_names
|
||||||
@@ -11,108 +11,234 @@ def create_regions(world, player):
|
|||||||
create_menu_region(player, 'Menu', None, ['Links House S&Q', 'Sanctuary S&Q', 'Old Man S&Q', 'Other World S&Q']),
|
create_menu_region(player, 'Menu', None, ['Links House S&Q', 'Sanctuary S&Q', 'Old Man S&Q', 'Other World S&Q']),
|
||||||
create_menu_region(player, 'Flute Sky', None, ['Flute Spot 1', 'Flute Spot 2', 'Flute Spot 3', 'Flute Spot 4',
|
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']),
|
'Flute Spot 5', 'Flute Spot 6', 'Flute Spot 7', 'Flute Spot 8']),
|
||||||
create_lw_region(player, 'Light World', ['Mushroom', 'Bottle Merchant', 'Flute Spot', 'Sunken Treasure', 'Purple Chest'],
|
create_lw_region(player, 'Master Sword Meadow', ['Master Sword Pedestal'], ['Master Sword Meadow SC']),
|
||||||
['Lost Woods Gamble', 'Lost Woods Hideout Drop', 'Lost Woods Hideout Stump', 'Lumberjack Tree Tree', 'Lumberjack Tree Cave', 'Lumberjack House',
|
create_lw_region(player, 'Lost Woods West Area', None, ['Lost Woods Bush (West)', 'Lost Woods NW', 'Lost Woods SW', 'Lost Woods SC']),
|
||||||
'Fortune Teller (Light)', 'Bonk Rock Cave', 'Sanctuary', 'Sanctuary Grave', 'North Fairy Cave Drop', 'North Fairy Cave',
|
create_lw_region(player, 'Lost Woods East Area', ['Mushroom'], ['Lost Woods Gamble', 'Lost Woods Hideout Drop', 'Lost Woods Hideout Stump', 'Lost Woods Bush (East)', 'Lost Woods SE', 'Lost Woods EN']),
|
||||||
'Kakariko Well Drop', 'Kakariko Well Cave', 'Blinds Hideout', 'Elder House (West)', 'Elder House (East)',
|
create_lw_region(player, 'Lumberjack Area', None, ['Lumberjack Tree Tree', 'Lumberjack Tree Cave', 'Lumberjack House', 'Lumberjack WN', 'Lumberjack SW']),
|
||||||
'Snitch Lady (West)', 'Snitch Lady (East)', 'Chicken House', 'Sick Kids House', 'Kakariko Shop', 'Tavern North', 'Tavern (Front)',
|
create_lw_region(player, 'West Death Mountain (Top)', ['Ether Tablet'], ['Tower of Hera', 'Spectacle Rock Approach', 'West Death Mountain Drop', 'West Death Mountain EN']),
|
||||||
'Hyrule Castle Secret Entrance Drop', 'Sahasrahlas Hut', 'Eastern Palace', 'Blacksmiths Hut', 'Bat Cave Cave',
|
create_lw_region(player, 'Spectacle Rock Ledge', ['Spectacle Rock'], ['Spectacle Rock Leave', 'Spectacle Rock Ledge Drop']),
|
||||||
'Library', 'Two Brothers House (East)', 'Kakariko Gamble Game', 'Bonk Fairy (Light)', 'Links House', 'Lake Hylia Fairy', 'Long Fairy Cave',
|
|
||||||
'Aginahs Cave', 'Light Hype Fairy', 'Lake Hylia Fortune Teller', 'Lake Hylia Shop', 'Mini Moldorm Cave',
|
|
||||||
'Ice Rod Cave', 'Good Bee Cave', '20 Rupee Cave', 'Desert Fairy', '50 Rupee Cave', 'Dam',
|
|
||||||
|
|
||||||
'Master Sword Meadow', 'Death Mountain Entrance Rock', 'Graveyard Ladder (Bottom)', 'Kings Grave Rocks (Outer)',
|
|
||||||
'Wooden Bridge Bush (South)', 'Kakariko Southwest Bush (North)', 'Kakariko Yard Bush (South)', 'Hyrule Castle Main Gate', 'Bat Cave Ledge Peg',
|
|
||||||
'Light World Water Drop', 'Desert Statue Move', 'Checkerboard Ledge Approach', 'Cave 45 Approach', 'Bombos Tablet Ladder (Bottom)',
|
|
||||||
|
|
||||||
'Kakariko Teleporter', 'Castle Gate Teleporter', 'East Hyrule Teleporter', 'South Hyrule Teleporter', 'LW Flute']),
|
|
||||||
create_lw_region(player, 'West Death Mountain (Top)', ['Ether Tablet'], ['Tower of Hera', 'Death Mountain Drop', 'Spectacle Rock Approach',
|
|
||||||
'DM Hammer Bridge (West)']),
|
|
||||||
create_lw_region(player, 'West Death Mountain (Bottom)', None, ['Old Man Cave (East)', 'Old Man House (Bottom)', 'Old Man House (Top)',
|
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)',
|
'Death Mountain Return Cave (East)', 'Spectacle Rock Cave', 'Spectacle Rock Cave Peak', 'Spectacle Rock Cave (Bottom)',
|
||||||
'DM Broken Bridge (West)', 'Death Mountain Teleporter', 'DM Flute']),
|
'West Death Mountain Teleporter', 'West Death Mountain ES']),
|
||||||
create_lw_region(player, 'Spectacle Rock', ['Spectacle Rock'], ['Spectacle Rock Drop', 'Spectacle Rock Leave']),
|
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)', None, ['Paradox Cave (Top)', 'DM Hammer Bridge (East)', 'Floating Island Bridge (East)',
|
create_lw_region(player, 'East Death Mountain (Top East)', None, ['Paradox Cave (Top)', 'DM Hammer Bridge (East)', 'Floating Island Bridge (East)',
|
||||||
'Spiral Cave Ledge Access', 'Fairy Ascension Ledge Access', 'Mimic Cave Ledge Access', 'East Death Mountain Drop',
|
'EDM To Spiral Ledge Drop', 'EDM To Fairy Ledge Drop', 'EDM To Mimic Ledge Drop', 'EDM Ledge Drop', 'East Death Mountain EN']),
|
||||||
'Turtle Rock Teleporter']),
|
|
||||||
create_lw_region(player, 'Death Mountain Floating Island', ['Floating Island'], ['Floating Island Bridge (West)']),
|
create_lw_region(player, 'Death Mountain Floating Island', ['Floating Island'], ['Floating Island Bridge (West)']),
|
||||||
create_lw_region(player, 'Spiral Cave Ledge', None, ['Spiral Cave', 'Spiral Cave Ledge Drop']),
|
create_lw_region(player, 'Spiral Cave Ledge', None, ['Spiral Cave', 'Spiral Ledge Drop']),
|
||||||
create_lw_region(player, 'Mimic Cave Ledge', None, ['Mimic Cave', 'Mimic Cave 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 Cave (Top)', 'Fairy Ascension Ledge Drop']),
|
create_lw_region(player, 'Fairy Ascension Ledge', None, ['Fairy Ascension Cave (Top)', 'Fairy Ascension Ledge Drop']),
|
||||||
|
create_lw_region(player, 'Fairy Ascension Plateau', None, ['Fairy Ascension Cave (Bottom)', 'Fairy Ascension Rocks (Inner)', 'Fairy Ascension Plateau Ledge Drop']),
|
||||||
|
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, ['Spiral Cave (Bottom)', 'Hookshot Fairy', 'Paradox Cave (Bottom)', 'Paradox Cave (Middle)',
|
create_lw_region(player, 'East Death Mountain (Bottom)', None, ['Spiral Cave (Bottom)', 'Hookshot Fairy', 'Paradox Cave (Bottom)', 'Paradox Cave (Middle)',
|
||||||
'DM Broken Bridge (East)', 'Fairy Ascension Rocks', 'East Death Mountain Teleporter', 'EDM Flute']),
|
'DM Broken Bridge (East)', 'Fairy Ascension Rocks (Outer)', 'East Death Mountain Teleporter']),
|
||||||
create_lw_region(player, 'Fairy Ascension Plateau', None, ['Fairy Ascension Cave (Bottom)', 'Fairy Ascension Drop']),
|
create_lw_region(player, 'Death Mountain TR Pegs Area', None, ['TR Pegs Ledge Entry', 'Death Mountain TR Pegs WN']),
|
||||||
create_lw_region(player, 'Death Mountain Return Ledge', None, ['Death Mountain Return Cave (West)', 'Death Mountain Return Ledge Drop'], 'a ledge in the foothills'),
|
create_lw_region(player, 'Death Mountain TR Pegs Ledge', None, ['TR Pegs Ledge Leave', 'TR Pegs Ledge Drop', 'TR Pegs Teleporter']),
|
||||||
create_lw_region(player, 'Death Mountain Entrance', None, ['Old Man Cave (West)', 'Death Mountain Entrance Drop']),
|
create_lw_region(player, 'Mountain Pass Area', None, ['Mountain Pass Rock (Outer)', 'Mountain Pass NW', 'Mountain Pass SE']),
|
||||||
create_lw_region(player, 'Northeast Light World', None, ['Zoras Domain', 'Potion Shop Rock (North)', 'Northeast Light World Water Drop']),
|
create_lw_region(player, 'Mountain Pass Ledge', None, ['Death Mountain Return Cave (West)', 'Mountain Pass Ledge Drop'], 'a ledge in the foothills'),
|
||||||
create_lw_region(player, 'Zora Waterfall Entryway', None, ['Waterfall of Wishing', 'Zora Waterfall Water Drop', 'ZLW Flute']),
|
create_lw_region(player, 'Mountain Pass Entry', None, ['Old Man Cave (West)', 'Mountain Pass Rock (Inner)', 'Mountain Pass Entry Ledge Drop']),
|
||||||
|
create_lw_region(player, 'Zora Waterfall Area', None, ['Zora Waterfall Water Entry', 'Zora Waterfall SE', 'Zora Waterfall NE']),
|
||||||
|
create_lw_region(player, 'Zora Waterfall Water', None, ['Zora Waterfall Approach', 'Zora Waterfall Landing', 'Zora Whirlpool'], 'Light World', Terrain.Water),
|
||||||
|
create_lw_region(player, 'Zora Waterfall Entryway', None, ['Waterfall of Wishing', 'Zora Waterfall Water Drop']),
|
||||||
|
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, ['Lost Woods Pass Hammer (North)', 'Lost Woods Pass NE']),
|
||||||
|
create_lw_region(player, 'Lost Woods Pass Portal Area', None, ['Lost Woods Pass Hammer (South)', 'Lost Woods Pass Rock (North)', 'Kakariko Teleporter']),
|
||||||
|
create_lw_region(player, 'Lost Woods Pass East Bottom Area', None, ['Lost Woods Pass Rock (South)', '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 Whirlpool', 'Kakariko Pond NE', 'Kakariko Pond WN', 'Kakariko Pond WS',
|
||||||
|
'Kakariko Pond SW', 'Kakariko Pond SE', 'Kakariko Pond EN', 'Kakariko Pond ES']),
|
||||||
|
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 Rocks (Outer)', '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, 'Graveyard Ledge', None, ['Graveyard Cave', 'Graveyard Ledge Drop', 'Graveyard Ladder (Top)']),
|
||||||
create_lw_region(player, 'Kings Grave Area', None, ['Kings Grave', 'Kings Grave Rocks (Inner)']),
|
create_lw_region(player, 'Kings Grave Area', None, ['Kings Grave', 'Kings Grave Rocks (Inner)']),
|
||||||
create_lw_region(player, 'Potion Shop Area', None, ['Potion Shop', 'Wooden Bridge Bush (North)', 'Potion Shop Rock (South)', 'Potion Shop Water Drop', 'NWLW Flute']),
|
create_lw_region(player, 'River Bend Area', None, ['North Fairy Cave Drop', 'North Fairy Cave', 'River Bend Water Drop', 'River Bend WC', 'River Bend SW']),
|
||||||
create_lw_region(player, 'Bush Covered Lawn', None, ['Bush Covered House', 'Kakariko Yard Bush (North)']),
|
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, 'Bomb Hut Area', None, ['Light World Bomb Hut', 'Kakariko Southwest Bush (South)']),
|
create_lw_region(player, 'River Bend Water', None, ['River Bend West Pier', 'River Bend East Pier', 'River Bend Whirlpool', 'River Bend EN', 'River Bend SC'], 'Light World', Terrain.Water),
|
||||||
create_lw_region(player, 'Hyrule Castle Courtyard', None, ['Hyrule Castle Entrance (South)', 'Inverted Pyramid Entrance', 'Hyrule Castle Courtyard Bush (South)', 'Hyrule Castle Main Gate (North)']),
|
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, 'Hyrule Castle Secret Entrance Area', None, ['Hyrule Castle Secret Entrance Stairs', 'Hyrule Castle Courtyard Bush (North)']),
|
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 Water', None, ['Potion Shop WN', 'Potion Shop EN'], 'Light World', Terrain.Water),
|
||||||
|
create_lw_region(player, 'Zora Approach Area', None, ['Zora Approach Rocks (West)', 'Zora Approach Bottom Ledge Drop', 'Zora Approach Water Drop', 'Zora Approach WC']),
|
||||||
|
create_lw_region(player, 'Zora Approach Ledge', None, ['Zora Approach Rocks (East)', 'Zora Approach Ledge Drop', 'Zora Approach NE']),
|
||||||
|
create_lw_region(player, 'Zora Approach Water', None, ['Zora Approach WN'], 'Light World', Terrain.Water),
|
||||||
|
create_lw_region(player, 'Kakariko Village', ['Bottle Merchant'], ['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 Southwest Bush (North)', 'Kakariko Yard Bush (South)', 'Kakariko NW', 'Kakariko NC', 'Kakariko NE', 'Kakariko ES', 'Kakariko SE']),
|
||||||
|
create_lw_region(player, 'Kakariko Southwest', None, ['Light World Bomb Hut', 'Kakariko Southwest Bush (South)']),
|
||||||
|
create_lw_region(player, 'Kakariko Bush Yard', None, ['Bush Covered House', 'Kakariko Yard Bush (North)']),
|
||||||
|
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', 'Hyrule Castle East Rock (Inner)', 'Hyrule Castle Southwest Bush (North)',
|
||||||
|
'Hyrule Castle Main Gate (South)', 'Castle Gate Teleporter', 'Hyrule Castle WN', 'Hyrule Castle SE']),
|
||||||
|
create_lw_region(player, 'Hyrule Castle Southwest', None, ['Hyrule Castle Southwest Bush (South)', 'Hyrule Castle SW']),
|
||||||
|
create_lw_region(player, 'Hyrule Castle Courtyard', None, ['Hyrule Castle Entrance (South)', 'Inverted Pyramid Entrance', 'Hyrule Castle Courtyard Bush (South)', 'Hyrule Castle Main Gate (North)', 'Castle Gate Teleporter (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', 'Hyrule Castle Entrance (East)', 'Inverted Pyramid Hole',
|
create_lw_region(player, 'Hyrule Castle Ledge', None, ['Hyrule Castle Entrance (West)', 'Agahnims Tower', 'Hyrule Castle Entrance (East)', 'Inverted Pyramid Hole',
|
||||||
'Hyrule Castle Ledge Courtyard Drop', 'Hyrule Castle Ledge Drop'], 'the castle rampart'),
|
'Hyrule Castle Ledge Courtyard Drop', 'Hyrule Castle Ledge Drop'], 'the castle rampart'),
|
||||||
create_lw_region(player, 'Bat Cave Ledge', None, ['Bat Cave Drop', 'Bat Cave Ledge Peg (East)']),
|
create_lw_region(player, 'Hyrule Castle East Entry', None, ['Hyrule Castle East Rock (Outer)', 'Hyrule Castle ES']),
|
||||||
create_lw_region(player, 'Maze Race Ledge', ['Maze Race'], ['Two Brothers House (West)', 'Maze Race Ledge Drop'], 'a race against time'),
|
create_lw_region(player, 'Hyrule Castle Water', None, [], 'Light World', Terrain.Water),
|
||||||
create_lw_region(player, 'Desert Palace Stairs', None, ['Desert Palace Entrance (South)']),
|
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, 'Desert Palace Mouth', None, ['Desert Palace Entrance (East)', 'Desert Palace Mouth Drop'], 'a sandy vista'),
|
create_lw_region(player, 'Wooden Bridge Northeast', None, ['Wooden Bridge Bush (North)', 'Wooden Bridge Northeast Water Drop', 'Wooden Bridge NE']),
|
||||||
|
create_lw_region(player, 'Wooden Bridge Water', None, ['Wooden Bridge NC'], 'Light World', Terrain.Water),
|
||||||
|
create_lw_region(player, 'Eastern Palace Area', None, ['Sahasrahlas Hut', 'Eastern Palace', 'Eastern Palace SW', 'Eastern Palace SE']),
|
||||||
|
create_lw_region(player, 'Blacksmith Area', None, ['Blacksmiths Hut', 'Bat Cave Cave', 'Blacksmith Ledge Peg (West)', 'Blacksmith WS']),
|
||||||
|
create_lw_region(player, 'Blacksmith Ledge', None, ['Bat Cave Drop', 'Blacksmith Ledge Peg (East)']),
|
||||||
|
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'], 'a race against time'),
|
||||||
|
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']),
|
||||||
|
create_lw_region(player, 'Stone Bridge North Area', None, ['Stone Bridge (Southbound)', 'Stone Bridge NC', 'Stone Bridge EN']),
|
||||||
|
create_lw_region(player, 'Stone Bridge South Area', None, ['Stone Bridge (Northbound)', 'Stone Bridge WS', 'Stone Bridge SC']),
|
||||||
|
create_lw_region(player, 'Stone Bridge Water', None, ['Stone Bridge WC', 'Stone Bridge EC'], 'Light World', Terrain.Water),
|
||||||
|
create_lw_region(player, 'Hobo Bridge', ['Hobo'], ['Hobo EC'], 'Light World', Terrain.Water),
|
||||||
|
create_lw_region(player, 'Central Cliffs', None, ['Lake Hylia Island FAWT Ledge Drop', 'Stone Bridge EC Cliff Water Drop', 'C Whirlpool Portal 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 Water', None, ['Tree Line WC', 'Tree Line SC'], 'Light World', Terrain.Water),
|
||||||
|
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 Statue Move', 'Checkerboard Ledge Approach', 'Desert ES']),
|
||||||
create_lw_region(player, 'Desert Ledge', ['Desert Ledge'], ['Desert Palace Entrance (West)', 'Desert Ledge Rocks (Outer)', 'Desert Ledge Drop'], 'the desert ledge'),
|
create_lw_region(player, 'Desert Ledge', ['Desert Ledge'], ['Desert Palace Entrance (West)', 'Desert Ledge Rocks (Outer)', 'Desert Ledge Drop'], 'the desert ledge'),
|
||||||
create_lw_region(player, 'Desert Palace Entrance (North) Spot', None, ['Desert Palace Entrance (North)', 'Desert Ledge Rocks (Inner)'], 'the desert ledge'),
|
create_lw_region(player, 'Desert Ledge Keep', None, ['Desert Palace Entrance (North)', 'Desert Ledge Rocks (Inner)'], 'the desert ledge'),
|
||||||
create_lw_region(player, 'Desert Checkerboard Ledge', None, ['Checkerboard Cave', 'Checkerboard Ledge Drop', 'Checkerboard Ledge Leave']),
|
create_lw_region(player, 'Desert Checkerboard Ledge', None, ['Checkerboard Cave', 'Checkerboard Ledge Drop', 'Checkerboard Ledge Leave']),
|
||||||
|
create_lw_region(player, 'Desert Stairs', None, ['Desert Palace Entrance (South)']),
|
||||||
|
create_lw_region(player, 'Desert Mouth', None, ['Desert Palace Entrance (East)', 'Desert Mouth Drop'], 'a sandy vista'),
|
||||||
create_lw_region(player, 'Desert Teleporter Ledge', None, ['Desert Teleporter Drop', 'Desert Teleporter']),
|
create_lw_region(player, 'Desert Teleporter Ledge', None, ['Desert Teleporter Drop', 'Desert Teleporter']),
|
||||||
create_lw_region(player, 'Bombos Tablet Ledge', ['Bombos Tablet'], ['Bombos Tablet Ladder (Top)']),
|
create_lw_region(player, 'Desert Northern Cliffs', None, ['Checkerboard Cliff Ledge Drop', 'Cave 45 Cliff Ledge Drop']),
|
||||||
create_lw_region(player, 'Desert Northern Cliffs'),
|
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 Approach', 'Flute Boy Pass NW', 'Flute Boy Pass EC']),
|
||||||
|
create_lw_region(player, 'Flute Boy Bush Entry', None, ['Flute Boy Bush (North)', 'Flute Boy Pass NC']),
|
||||||
create_lw_region(player, 'Cave 45 Ledge', None, ['Cave 45', 'Cave 45 Ledge Drop', 'Cave 45 Leave']),
|
create_lw_region(player, 'Cave 45 Ledge', None, ['Cave 45', 'Cave 45 Ledge Drop', 'Cave 45 Leave']),
|
||||||
create_lw_region(player, 'Lake Hylia Water', None, ['Light World Pier', 'Potion Shop Pier', 'Hobo Pier', 'Lake Hylia Island Pier', 'Lake Hylia Central Island Pier', 'Lake Hylia Whirlpool', 'Waterfall Fairy Access']),
|
create_lw_region(player, 'C Whirlpool Area', None, ['C Whirlpool Rock (Bottom)', 'C Whirlpool Pegs (Outer)', 'C Whirlpool Water Entry', 'C Whirlpool EN', 'C Whirlpool ES', 'C Whirlpool SC']),
|
||||||
create_lw_region(player, 'Lake Hylia Island', ['Lake Hylia Island']),
|
create_lw_region(player, 'C Whirlpool Portal Area', None, ['C Whirlpool Pegs (Inner)', 'South Hyrule Teleporter']),
|
||||||
create_lw_region(player, 'Lake Hylia Central Island', None, ['Capacity Upgrade', 'Lake Hylia Central Island Water Drop', 'Lake Hylia Teleporter']),
|
create_lw_region(player, 'C Whirlpool Water', None, ['C Whirlpool Landing', 'C Whirlpool', 'C Whirlpool EC'], 'Light World', Terrain.Water),
|
||||||
create_lw_region(player, 'Master Sword Meadow', ['Master Sword Pedestal']),
|
create_lw_region(player, 'C Whirlpool Outer Area', None, ['C Whirlpool Rock (Top)', 'C Whirlpool WC', 'C Whirlpool NW']),
|
||||||
create_lw_region(player, 'Hobo Bridge', ['Hobo']),
|
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, 'Zoras Domain', ['King Zora', 'Zora\'s Ledge']),
|
create_lw_region(player, 'Statues Water', None, ['Statues Landing', 'Statues WC'], 'Light World', Terrain.Water),
|
||||||
|
create_lw_region(player, 'Lake Hylia Northwest Bank', None, ['Lake Hylia Fortune Teller', 'Lake Hylia Shop', 'Lake Hylia Water Drop', 'Lake Hylia NW']),
|
||||||
|
create_lw_region(player, 'Lake Hylia Northeast Bank', None, ['Lake Hylia Northeast Water Drop', 'Lake Hylia NE']),
|
||||||
|
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 Central Island', None, ['Capacity Upgrade', 'Lake Hylia Central Water Drop', '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 Water D Approach', 'Lake Hylia Whirlpool', 'Lake Hylia NC', 'Lake Hylia EC'], 'Light World', Terrain.Water),
|
||||||
|
create_lw_region(player, 'Lake Hylia Water D', None, ['Lake Hylia Water D Leave']),
|
||||||
|
create_lw_region(player, 'Ice Cave Area', None, ['Ice Rod Cave', 'Good Bee Cave', '20 Rupee Cave', 'Ice Cave Water Drop', 'Ice Cave SE']),
|
||||||
|
create_lw_region(player, 'Ice Cave Water', None, ['Ice Cave Pier', 'Ice Cave SW'], 'Light World', Terrain.Water),
|
||||||
|
create_lw_region(player, 'Desert Pass Area', ['Purple Chest'], ['Desert Fairy', '50 Rupee Cave', 'Desert Pass Ladder (South)', 'Desert Pass Rocks (North)', 'Desert Pass WS', 'Desert Pass EC']),
|
||||||
|
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, 'Octoballoon Water', None, ['Octoballoon Pier', 'Octoballoon Whirlpool', 'Octoballoon WC'], 'Light World', Terrain.Water),
|
||||||
|
create_lw_region(player, 'Octoballoon Water Ledge', None, ['Octoballoon Waterfall Water Drop', 'Octoballoon NW'], 'Light World', Terrain.Water),
|
||||||
|
|
||||||
|
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 Rock (East)', 'Skull Woods SE']),
|
||||||
|
create_dw_region(player, 'Skull Woods Portal Entry', None, ['Skull Woods Rock (West)', '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'], 'a deep, dark forest'),
|
||||||
|
create_dw_region(player, 'Skull Woods Forgotten Path (Southwest)', None, ['Skull Woods Forgotten Bush (West)', 'Skull Woods SW']),
|
||||||
|
create_dw_region(player, 'Skull Woods Forgotten Path (Northeast)', None, ['Skull Woods Forgotten Bush (East)', 'Skull Woods EN']),
|
||||||
|
create_dw_region(player, 'Dark Lumberjack Area', None, ['Dark Lumberjack Shop', 'Dark Lumberjack WN', 'Dark Lumberjack SW']),
|
||||||
|
create_dw_region(player, 'West Dark Death Mountain (Top)', None, ['GT Approach', 'Dark Death Mountain Ladder (Top)', 'West Dark Death Mountain Drop', 'West Dark Death Mountain EN']),
|
||||||
|
create_dw_region(player, 'GT Stairs', None, ['Ganons Tower', 'GT Leave']),
|
||||||
create_dw_region(player, 'West Dark Death Mountain (Bottom)', None, ['Spike Cave', 'Dark Death Mountain Fairy', 'Dark Death Mountain Ladder (Bottom)',
|
create_dw_region(player, 'West Dark Death Mountain (Bottom)', None, ['Spike Cave', 'Dark Death Mountain Fairy', 'Dark Death Mountain Ladder (Bottom)',
|
||||||
'Dark Death Mountain Teleporter (West)', 'DDM Flute']),
|
'Dark Death Mountain Teleporter (West)', 'West Dark Death Mountain ES']),
|
||||||
create_dw_region(player, 'Dark Death Mountain (Top)', None, ['Ganons Tower', 'Hookshot Cave', 'Superbunny Cave (Top)', 'Turtle Rock', 'Dark Death Mountain Drop (West)',
|
create_dw_region(player, 'East Dark Death Mountain (Top)', None, ['Superbunny Cave (Top)', 'Hookshot Cave', 'East Dark Death Mountain Drop', 'East Dark Death Mountain WN', 'East Dark Death Mountain EN']),
|
||||||
'Dark Death Mountain Drop (East)', 'Dark Death Mountain Ladder (Top)', 'Turtle Rock Tail Drop']),
|
create_dw_region(player, 'Dark Death Mountain Floating Island', None, ['Hookshot Cave Back Entrance', 'Floating Island Drop'], 'a dark floating island'),
|
||||||
create_dw_region(player, 'Dark Death Mountain Floating Island', None, ['Hookshot Cave Back Entrance', 'Floating Island Drop'], 'a dark island'),
|
|
||||||
create_dw_region(player, 'Dark Death Mountain Ledge', None, ['Dark Death Mountain Ledge (West)', 'Dark Death Mountain Ledge (East)'], 'a dark ledge'),
|
create_dw_region(player, 'Dark Death Mountain Ledge', None, ['Dark Death Mountain Ledge (West)', 'Dark Death Mountain Ledge (East)'], 'a dark ledge'),
|
||||||
create_dw_region(player, 'Dark Death Mountain Isolated Ledge', None, ['Turtle Rock Isolated Ledge Entrance'], 'a dark vista'),
|
create_dw_region(player, 'Dark Death Mountain Isolated Ledge', None, ['Turtle Rock Isolated Ledge Entrance'], 'a dark vista'),
|
||||||
create_dw_region(player, 'East Dark Death Mountain (Bottom)', None, ['East Dark Death Mountain Bushes', 'Superbunny Cave (Bottom)', 'Dark Death Mountain Shop',
|
create_dw_region(player, 'East Dark Death Mountain (Bottom)', None, ['Superbunny Cave (Bottom)', 'Dark Death Mountain Shop', 'East Dark Death Mountain Bushes', 'East Dark Death Mountain Teleporter']),
|
||||||
'East Dark Death Mountain Teleporter (Bottom)', 'EDDM Flute']),
|
|
||||||
create_dw_region(player, 'East Dark Death Mountain (Bushes)', None, []),
|
create_dw_region(player, 'East Dark Death Mountain (Bushes)', None, []),
|
||||||
create_dw_region(player, 'Turtle Rock (Top)', None, ['Turtle Rock Drop', 'East Dark Death Mountain Teleporter (Top)']),
|
create_dw_region(player, 'East Dark Death Mountain (Bottom Left)', None, ['East Dark Death Mountain WS']),
|
||||||
create_dw_region(player, 'West Dark World', ['Frog'], ['Dark Lumberjack Shop', 'Fortune Teller (Dark)', 'Dark Sanctuary Hint', 'Chest Game', 'Thieves Town',
|
create_dw_region(player, 'Turtle Rock Area', None, ['Turtle Rock', 'Turtle Rock Tail Ledge Drop', 'Turtle Rock WN']),
|
||||||
'C-Shaped House', 'Brewery', 'Red Shield Shop', 'Skull Woods Forest', 'Bumper Cave Entrance Rock',
|
create_dw_region(player, 'Turtle Rock Ledge', None, ['Turtle Rock Ledge Drop', 'Turtle Rock Teleporter']),
|
||||||
'West Dark World Water Drop', 'Grassy Lawn Pegs (Bottom)', 'Peg Area Rocks (Left)', 'Village of Outcasts Drop',
|
create_dw_region(player, 'Bumper Cave Area', None, ['Bumper Cave Rock (Outer)', 'Bumper Cave NW', 'Bumper Cave SE']),
|
||||||
'West Dark World Teleporter', 'WDW Flute', 'Dark Graveyard Bush (South)']),
|
|
||||||
create_dw_region(player, 'Dark Graveyard North', None, ['Dark Graveyard Bush (North)']),
|
|
||||||
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)']),
|
|
||||||
create_dw_region(player, 'Skull Woods Forest (West)', None, ['Skull Woods Second Section Hole', 'Skull Woods Second Section Door (West)', 'Skull Woods Final Section'], 'a deep, dark forest'),
|
|
||||||
create_dw_region(player, 'Bumper Cave Ledge', ['Bumper Cave Ledge'], ['Bumper Cave (Top)', 'Bumper Cave Ledge Drop'], 'a ledge with an item'),
|
create_dw_region(player, 'Bumper Cave Ledge', ['Bumper Cave Ledge'], ['Bumper Cave (Top)', 'Bumper Cave Ledge Drop'], 'a ledge with an item'),
|
||||||
create_dw_region(player, 'Bumper Cave Entrance', None, ['Bumper Cave (Bottom)', 'Bumper Cave Entrance Drop']),
|
create_dw_region(player, 'Bumper Cave Entry', None, ['Bumper Cave (Bottom)', 'Bumper Cave Rock (Inner)', 'Bumper Cave Entry Drop']),
|
||||||
create_dw_region(player, 'Dark Grassy Lawn', None, ['Dark World Shop', 'Grassy Lawn Pegs (Top)', 'Dark Grassy Lawn Flute']),
|
create_dw_region(player, 'Catfish Area', ['Catfish'], ['Catfish SE']),
|
||||||
create_dw_region(player, 'Hammer Peg Area', ['Dark Blacksmith Ruins'], ['Hammer Peg Cave', 'Peg Area Rocks (Right)', 'Hammer Peg Area Flute']),
|
create_dw_region(player, 'Skull Woods Pass West Area', None, ['Skull Woods Pass Bush Row (West)', 'Skull Woods Pass NW', 'Skull Woods Pass SW']),
|
||||||
create_dw_region(player, 'Northeast Dark World', None, ['Dark Potion Shop', 'Northeast Dark World Water Drop', 'Dark Witch Rock (South)', 'West Dark World Gap',
|
create_dw_region(player, 'Skull Woods Pass East Top Area', None, ['Skull Woods Pass Bush Row (East)', 'Skull Woods Pass Bush (North)', 'Skull Woods Pass NE']),
|
||||||
'Broken Bridge Pass (Top)', 'NEDW Flute']),
|
create_dw_region(player, 'Skull Woods Pass Portal Area', None, ['Skull Woods Pass Bush (South)', 'Skull Woods Pass Rock (North)', 'West Dark World Teleporter']),
|
||||||
create_dw_region(player, 'Catfish Area', ['Catfish'], ['Dark Witch Rock (North)', 'Catfish Water Drop']),
|
create_dw_region(player, 'Skull Woods Pass East Bottom Area', None, ['Skull Woods Pass Rock (South)', 'Skull Woods Pass SE']),
|
||||||
create_dw_region(player, 'East Dark World', ['Pyramid'], ['Pyramid Hole', 'Pyramid Fairy', 'Palace of Darkness Hint', 'Palace of Darkness', 'Dark Lake Hylia Fairy',
|
create_dw_region(player, 'Dark Fortune Area', None, ['Fortune Teller (Dark)', 'Dark Fortune NE', 'Dark Fortune EN', 'Dark Fortune ES', 'Dark Fortune SC']),
|
||||||
'East Dark World Hint', 'Broken Bridge Pass (Bottom)', 'East Dark World Water Drop', 'Hammer Bridge Pegs (North)',
|
create_dw_region(player, 'Outcast Pond Area', None, ['Outcast Pond NE', 'Outcast Pond WN', 'Outcast Pond WS', 'Outcast Pond SW', 'Outcast Pond SE', 'Outcast Pond EN', 'Outcast Pond ES']),
|
||||||
'East Dark World Teleporter', 'EDW Flute']),
|
create_dw_region(player, 'Dark Chapel Area', None, ['Dark Sanctuary Hint', 'Dark Chapel WN', 'Dark Chapel WS', 'Dark Chapel EC']),
|
||||||
create_dw_region(player, 'Pyramid Exit Ledge', None, ['Pyramid Entrance', 'Pyramid Drop']),
|
create_dw_region(player, 'Dark Graveyard Area', None, ['Dark Graveyard Bush (South)', 'Dark Graveyard WC', 'Dark Graveyard EC']),
|
||||||
create_dw_region(player, 'Dark Desert', None, ['Mire Shed', 'Misery Mire', 'Dark Desert Fairy', 'Dark Desert Hint', 'DD Flute']),
|
create_dw_region(player, 'Dark Graveyard North', None, ['Dark Graveyard Bush (North)']),
|
||||||
create_dw_region(player, 'Dark Desert Ledge', None, ['Dark Desert Drop', 'Dark Desert Teleporter']),
|
create_dw_region(player, 'Qirn Jump Area', None, ['Qirn Jump Water Drop', 'Qirn Jump WC', 'Qirn Jump SW']),
|
||||||
create_dw_region(player, 'South Dark World', ['Stumpy', 'Digging Game'], ['Archery Game', 'Bonk Fairy (Dark)', 'Big Bomb Shop', 'Hype Cave', 'Dark Lake Hylia Shop', 'Swamp Palace',
|
create_dw_region(player, 'Qirn Jump East Bank', None, ['Qirn Jump East Water Drop', 'Qirn Jump SE', 'Qirn Jump EC', 'Qirn Jump ES']),
|
||||||
'Village of Outcasts Heavy Rock', 'Hammer Bridge Pegs (South)', 'South Dark World Water Drop', 'Post Aga Teleporter',
|
create_dw_region(player, 'Qirn Jump Water', None, ['Qirn Jump Pier', 'Qirn Jump Whirlpool', 'Qirn Jump EN', 'Qirn Jump SC'], 'Dark World', Terrain.Water),
|
||||||
'South Dark World Teleporter', 'SDW Flute']),
|
create_dw_region(player, 'Dark Witch Area', None, ['Dark Potion Shop', 'Dark Witch Water Drop', 'Dark Witch Rock (South)', 'Dark Witch WC', 'Dark Witch WS']),
|
||||||
create_dw_region(player, 'Dark Lake Hylia Water', None, ['Northeast Dark World Pier', 'East Dark World Pier', 'Southeast Dark World Pier', 'Ice Palace Approach']),
|
create_dw_region(player, 'Dark Witch Northeast', None, ['Dark Witch Northeast Water Drop', 'Dark Witch Rock (North)', 'Dark Witch EC']),
|
||||||
create_dw_region(player, 'Dark Lake Hylia Central Island', None, ['Ice Palace', 'Ice Palace Leave Water Drop', 'Ice Island To East Pier',
|
create_dw_region(player, 'Dark Witch Water', None, ['Dark Witch WN', 'Dark Witch EN'], 'Dark World', Terrain.Water),
|
||||||
'Dark Lake Hylia Teleporter']),
|
create_dw_region(player, 'Catfish Approach Area', None, ['Catfish Approach Rocks (West)', 'Catfish Approach Bottom Ledge Drop', 'Catfish Approach Water Drop', 'Catfish Approach WC']),
|
||||||
create_dw_region(player, 'Southeast Dark World', None, ['Dark Lake Hylia Ledge Fairy', 'Dark Lake Hylia Ledge Hint', 'Dark Lake Hylia Ledge Spike Cave',
|
create_dw_region(player, 'Catfish Approach Ledge', None, ['Catfish Approach Rocks (East)', 'Catfish Approach Ledge Drop', 'Catfish Approach NE']),
|
||||||
'Southeast Dark World Water Drop', 'DLHL Flute']),
|
create_dw_region(player, 'Catfish Approach Water', None, ['Catfish Approach WN'], 'Dark World', Terrain.Water),
|
||||||
|
create_dw_region(player, 'Village of Outcasts', None, ['Chest Game', 'Thieves Town', 'C-Shaped House', 'Brewery', 'Bush Yard Pegs (Outer)',
|
||||||
|
'Village of Outcasts NW', 'Village of Outcasts NC', 'Village of Outcasts NE', 'Village of Outcasts ES', 'Village of Outcasts SE']),
|
||||||
|
create_dw_region(player, 'Village of Outcasts Bush Yard', None, ['Dark World Shop', 'Bush Yard Pegs (Inner)']),
|
||||||
|
create_dw_region(player, 'Shield Shop Area', None, ['Shield Shop Fence Drop (Outer)', 'Shield Shop NW', 'Shield Shop NE']),
|
||||||
|
create_dw_region(player, 'Shield Shop Fence', None, ['Red Shield Shop', 'Shield Shop Fence Drop (Inner)']),
|
||||||
|
create_dw_region(player, 'Pyramid Area', ['Pyramid'], ['Pyramid Hole', 'Pyramid Fairy', 'Pyramid ES']),
|
||||||
|
create_dw_region(player, 'Pyramid Exit Ledge', None, ['Pyramid Entrance', 'Pyramid Exit Ledge Drop']),
|
||||||
|
create_dw_region(player, 'Pyramid Pass', None, ['Post Aga Teleporter', 'Pyramid SW', 'Pyramid SE']),
|
||||||
|
create_dw_region(player, 'Pyramid Water', None, [], 'Dark World', Terrain.Water),
|
||||||
|
create_dw_region(player, 'Broken Bridge Area', None, ['Broken Bridge Hammer Rock (South)', 'Broken Bridge Water Drop', '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', 'Broken Bridge NE']),
|
||||||
|
create_dw_region(player, 'Broken Bridge West', None, ['Broken Bridge West Water Drop', 'Broken Bridge NW']),
|
||||||
|
create_dw_region(player, 'Broken Bridge Water', None, ['Broken Bridge NC'], 'Dark World', Terrain.Water),
|
||||||
|
create_dw_region(player, 'Palace of Darkness Area', None, ['Palace of Darkness Hint', 'Palace of Darkness', 'Palace of Darkness SW', 'Palace of Darkness SE']),
|
||||||
|
create_dw_region(player, 'Hammer Pegs Area', ['Dark Blacksmith Ruins'], ['Hammer Peg Cave', 'Peg Area Rocks (East)']),
|
||||||
|
create_dw_region(player, 'Hammer Pegs Entry', None, ['Peg Area Rocks (West)', 'Hammer Pegs WS']),
|
||||||
|
create_dw_region(player, 'Dark Dunes Area', None, ['Dark Dunes NW', 'Dark Dunes WN', 'Dark Dunes SC']),
|
||||||
|
create_dw_region(player, 'Dig Game Area', ['Digging Game'], ['Dig Game To Ledge Drop', 'Dig Game ES']),
|
||||||
|
create_dw_region(player, 'Dig Game Ledge', None, ['Dig Game Ledge Drop', 'Dig Game EC']),
|
||||||
|
create_dw_region(player, 'Frog Area', None, ['Frog Ledge Drop', 'Frog Rock (Outer)', 'Archery Game Rock (North)', 'Frog NE']),
|
||||||
|
create_dw_region(player, 'Frog Prison', ['Frog'], ['Frog Rock (Inner)']),
|
||||||
|
create_dw_region(player, 'Archery Game Area', None, ['Archery Game', 'Archery Game Rock (South)', 'Frog WC', 'Frog WS', 'Frog ES']),
|
||||||
|
create_dw_region(player, 'Stumpy Area', ['Stumpy'], ['Stumpy SC']),
|
||||||
|
create_dw_region(player, 'Stumpy Pass', None, ['Stumpy WS', 'Stumpy SW']),
|
||||||
|
create_dw_region(player, 'Dark Bonk Rocks Area', None, ['Bonk Fairy (Dark)', 'Dark Bonk Rocks NW', 'Dark Bonk Rocks SW', 'Dark Bonk Rocks EN', 'Dark Bonk Rocks EC', 'Dark Bonk Rocks ES']),
|
||||||
|
create_dw_region(player, 'Big Bomb Shop Area', None, ['Big Bomb Shop', 'Big Bomb Shop NE', 'Big Bomb Shop WN', 'Big Bomb Shop WC', 'Big Bomb Shop WS', 'Big Bomb Shop SC', 'Big Bomb Shop ES']),
|
||||||
|
create_dw_region(player, 'Hammer Bridge North Area', None, ['Hammer Bridge Pegs (North)', 'Hammer Bridge Water Drop', 'Hammer Bridge NC', 'Hammer Bridge EN']),
|
||||||
|
create_dw_region(player, 'Hammer Bridge South Area', None, ['Hammer Bridge Pegs (South)', 'Hammer Bridge WS', 'Hammer Bridge SC']),
|
||||||
|
create_dw_region(player, 'Hammer Bridge Water', None, ['Hammer Bridge Pier', 'Hammer Bridge EC'], 'Dark World', Terrain.Water),
|
||||||
|
create_dw_region(player, 'Dark Central Cliffs', None, ['Ice Lake Iceberg FAWT Ledge Drop', 'Hammer Bridge EC Cliff Water Drop', 'Dark C Whirlpool Portal Cliff Ledge Drop']),
|
||||||
|
create_dw_region(player, 'Dark Tree Line Area', None, ['Dark Lake Hylia Fairy', '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'], 'Dark World', Terrain.Water),
|
||||||
|
create_dw_region(player, 'Darkness Nook Area', None, ['East Dark World Hint', 'East Dark World Teleporter', 'Palace of Darkness Nook NE']),
|
||||||
|
create_dw_region(player, 'Mire Area', None, ['Mire Shed', 'Misery Mire', 'Mire Fairy', 'Mire Hint']),
|
||||||
|
create_dw_region(player, 'Mire Teleporter Ledge', None, ['Mire Teleporter Ledge Drop', 'Mire Teleporter']),
|
||||||
|
create_dw_region(player, 'Mire Northern Cliffs', None, ['Mire Cliff Ledge Drop', 'Stumpy Approach Cliff Ledge Drop', 'Mirror To Bombos Tablet Ledge']),
|
||||||
|
create_dw_region(player, 'Stumpy Approach Area', None, ['Stumpy Approach Bush (South)', 'Stumpy Approach NW', 'Stumpy Approach EC']),
|
||||||
|
create_dw_region(player, 'Stumpy Approach Bush Entry', None, ['Stumpy Approach Bush (North)', 'Stumpy Approach NC']),
|
||||||
|
create_dw_region(player, 'Dark C Whirlpool Area', None, ['Dark C Whirlpool Rock (Bottom)', 'Dark C Whirlpool Pegs (Outer)', 'Dark C Whirlpool Water Entry',
|
||||||
|
'Dark C Whirlpool EN', 'Dark C Whirlpool ES', 'Dark C Whirlpool SC']),
|
||||||
|
create_dw_region(player, 'Dark C Whirlpool Portal Area', None, ['Dark C Whirlpool Pegs (Inner)', 'South Dark World Teleporter']),
|
||||||
|
create_dw_region(player, 'Dark C Whirlpool Water', None, ['Dark C Whirlpool Landing', 'Dark C Whirlpool EC'], 'Dark World', Terrain.Water),
|
||||||
|
create_dw_region(player, 'Dark C Whirlpool Outer Area', None, ['Dark C Whirlpool Rock (Top)', 'Dark C Whirlpool WC', 'Dark C Whirlpool NW']),
|
||||||
|
create_dw_region(player, 'Hype Cave Area', None, ['Hype Cave', 'Hype Cave Water Entry', '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'], 'Dark World', Terrain.Water),
|
||||||
|
create_dw_region(player, 'Ice Lake Northwest Bank', None, ['Dark Lake Hylia Shop', 'Ice Lake Water Drop', 'Ice Lake NW']),
|
||||||
|
create_dw_region(player, 'Ice Lake Northeast Bank', None, ['Ice Lake Northeast Water Drop', 'Ice Lake Iceberg Bomb Jump', 'Ice Lake NE']),
|
||||||
|
create_dw_region(player, 'Ice Lake Southwest Ledge', None, ['Ice Lake Southwest Water Drop', 'Ice Lake WS']),
|
||||||
|
create_dw_region(player, 'Ice Lake Southeast Ledge', None, ['Ice Lake Southeast Water Drop', 'Ice Lake ES']),
|
||||||
|
create_dw_region(player, 'Ice Lake Water', None, ['Ice Lake Northeast Pier', 'Ice Lake NC', 'Ice Lake EC'], 'Dark World', Terrain.Water),
|
||||||
|
create_dw_region(player, 'Ice Lake Iceberg', None, ['Ice Palace Approach', 'Ice Lake Iceberg Water Entry', 'Ice Lake Northeast Pier Hop', 'Ice Lake Teleporter']),
|
||||||
|
create_dw_region(player, 'Ice Palace Area', None, ['Ice Palace', 'Ice Palace Leave']),
|
||||||
|
create_dw_region(player, 'Shopping Mall Area', None, ['Dark Lake Hylia Ledge Fairy', 'Dark Lake Hylia Ledge Hint', 'Dark Lake Hylia Ledge Spike Cave', 'Shopping Mall Water Drop', 'Shopping Mall SE']),
|
||||||
|
create_dw_region(player, 'Shopping Mall Water', None, ['Shopping Mall Pier', 'Shopping Mall SW'], 'Dark World', Terrain.Water),
|
||||||
|
create_dw_region(player, 'Swamp Nook Area', None, ['Swamp Nook EC', 'Swamp Nook ES']),
|
||||||
|
create_dw_region(player, 'Swamp Area', None, ['Swamp Palace', 'Swamp WC', 'Swamp WS', 'Swamp NC', 'Swamp EC']),
|
||||||
|
create_dw_region(player, 'Dark South Pass Area', None, ['Dark South Pass WC', 'Dark South Pass NC', 'Dark South Pass ES']),
|
||||||
|
create_dw_region(player, 'Bomber Corner Area', None, ['Bomber Corner Water Drop', 'Bomber Corner WS', 'Bomber Corner NE']),
|
||||||
|
create_dw_region(player, 'Bomber Corner Water', None, ['Bomber Corner Pier', 'Bomber Corner Whirlpool', 'Bomber Corner WC'], 'Dark World', Terrain.Water),
|
||||||
|
create_dw_region(player, 'Bomber Corner Water Ledge', None, ['Bomber Corner Waterfall Water Drop', 'Bomber Corner NW'], 'Dark World', Terrain.Water),
|
||||||
|
|
||||||
create_cave_region(player, 'Lost Woods Gamble', 'a game of chance'),
|
create_cave_region(player, 'Lost Woods Gamble', 'a game of chance'),
|
||||||
create_cave_region(player, 'Lost Woods Hideout (top)', 'a drop\'s exit', ['Lost Woods Hideout'], ['Lost Woods Hideout (top to bottom)']),
|
create_cave_region(player, 'Lost Woods Hideout (top)', 'a drop\'s exit', ['Lost Woods Hideout'], ['Lost Woods Hideout (top to bottom)']),
|
||||||
@@ -236,8 +362,8 @@ def create_regions(world, player):
|
|||||||
create_cave_region(player, 'Dark Lake Hylia Healer Fairy', 'a fairy fountain'),
|
create_cave_region(player, 'Dark Lake Hylia Healer Fairy', 'a fairy fountain'),
|
||||||
create_cave_region(player, 'East Dark World Hint', 'a storyteller'),
|
create_cave_region(player, 'East Dark World Hint', 'a storyteller'),
|
||||||
create_cave_region(player, 'Mire Shed', 'a cave with two chests', ['Mire Shed - Left', 'Mire Shed - Right']),
|
create_cave_region(player, 'Mire Shed', 'a cave with two chests', ['Mire Shed - Left', 'Mire Shed - Right']),
|
||||||
create_cave_region(player, 'Dark Desert Healer Fairy', 'a fairy fountain'),
|
create_cave_region(player, 'Mire Healer Fairy', 'a fairy fountain'),
|
||||||
create_cave_region(player, 'Dark Desert Hint', 'a storyteller'),
|
create_cave_region(player, 'Mire Hint', 'a storyteller'),
|
||||||
create_cave_region(player, 'Hype Cave', 'a bounty of five items', ['Hype Cave - Top', 'Hype Cave - Middle Right', 'Hype Cave - Middle Left',
|
create_cave_region(player, 'Hype Cave', 'a bounty of five items', ['Hype Cave - Top', 'Hype Cave - Middle Right', 'Hype Cave - Middle Left',
|
||||||
'Hype Cave - Bottom', 'Hype Cave - Generous Guy']),
|
'Hype Cave - Bottom', 'Hype Cave - Generous Guy']),
|
||||||
create_cave_region(player, 'Dark Lake Hylia Shop', 'a common shop', ['Dark Lake Hylia Shop - Left', 'Dark Lake Hylia Shop - Middle', 'Dark Lake Hylia Shop - Right']),
|
create_cave_region(player, 'Dark Lake Hylia Shop', 'a common shop', ['Dark Lake Hylia Shop - Left', 'Dark Lake Hylia Shop - Middle', 'Dark Lake Hylia Shop - Right']),
|
||||||
@@ -946,12 +1072,16 @@ def create_menu_region(player, name, locations=None, exits=None):
|
|||||||
return _create_region(player, name, RegionType.Menu, 'Menu', locations, exits)
|
return _create_region(player, name, RegionType.Menu, 'Menu', locations, exits)
|
||||||
|
|
||||||
|
|
||||||
def create_lw_region(player, name, locations=None, exits=None, hint='Light World'):
|
def create_lw_region(player, name, locations=None, exits=None, hint='Light World', terrain=Terrain.Land):
|
||||||
return _create_region(player, name, RegionType.LightWorld, hint, locations, exits)
|
region = _create_region(player, name, RegionType.LightWorld, hint, locations, exits)
|
||||||
|
region.terrain = terrain
|
||||||
|
return region
|
||||||
|
|
||||||
|
|
||||||
def create_dw_region(player, name, locations=None, exits=None, hint='Dark World'):
|
def create_dw_region(player, name, locations=None, exits=None, hint='Dark World', terrain=Terrain.Land):
|
||||||
return _create_region(player, name, RegionType.DarkWorld, hint, locations, exits)
|
region = _create_region(player, name, RegionType.DarkWorld, hint, locations, exits)
|
||||||
|
region.terrain = terrain
|
||||||
|
return region
|
||||||
|
|
||||||
|
|
||||||
def create_cave_region(player, name, hint='Hyrule', locations=None, exits=None):
|
def create_cave_region(player, name, hint='Hyrule', locations=None, exits=None):
|
||||||
@@ -988,7 +1118,7 @@ def mark_light_dark_world_regions(world, player):
|
|||||||
current = queue.popleft()
|
current = queue.popleft()
|
||||||
current.is_light_world = True
|
current.is_light_world = True
|
||||||
for exit in current.exits:
|
for exit in current.exits:
|
||||||
if exit.connected_region is None or exit.connected_region.type == RegionType.DarkWorld: # todo: remove none check
|
if exit.connected_region is None or exit.connected_region.type == RegionType.DarkWorld:
|
||||||
# Don't venture into the dark world
|
# Don't venture into the dark world
|
||||||
continue
|
continue
|
||||||
if exit.connected_region not in seen:
|
if exit.connected_region not in seen:
|
||||||
@@ -1090,7 +1220,7 @@ def adjust_locations(world, player):
|
|||||||
index += 1
|
index += 1
|
||||||
setup_enemy_locations(world, player)
|
setup_enemy_locations(world, player)
|
||||||
# unreal events:
|
# unreal events:
|
||||||
for l in ['Ganon', 'Agahnim 1', 'Agahnim 2', 'Dark Blacksmith Ruins', 'Frog', 'Missing Smith', 'Floodgate',
|
for l in ['Ganon', 'Agahnim 1', 'Agahnim 2', 'Frog', 'Missing Smith', 'Dark Blacksmith Ruins', 'Floodgate',
|
||||||
'Trench 1 Switch', 'Trench 2 Switch', 'Swamp Drain', 'Attic Cracked Floor', 'Suspicious Maiden',
|
'Trench 1 Switch', 'Trench 2 Switch', 'Swamp Drain', 'Attic Cracked Floor', 'Suspicious Maiden',
|
||||||
'Revealing Light', 'Ice Block Drop', 'Zelda Pickup', 'Zelda Drop Off', 'Skull Star Tile']:
|
'Revealing Light', 'Ice Block Drop', 'Zelda Pickup', 'Zelda Drop Off', 'Skull Star Tile']:
|
||||||
location = world.get_location_unsafe(l, player)
|
location = world.get_location_unsafe(l, player)
|
||||||
|
|||||||
@@ -2662,12 +2662,12 @@ OtherEntrances = {'Lake Hylia Fairy': 'A cave NE of Lake Hylia',
|
|||||||
'Dark Lake Hylia Fairy': 'The cave NE dark Lake Hylia',
|
'Dark Lake Hylia Fairy': 'The cave NE dark Lake Hylia',
|
||||||
'Dark Death Mountain Fairy': 'The SW cave on dark DM',
|
'Dark Death Mountain Fairy': 'The SW cave on dark DM',
|
||||||
'East Dark World Hint': 'The dark cave near the eastmost portal',
|
'East Dark World Hint': 'The dark cave near the eastmost portal',
|
||||||
'Dark Desert Hint': 'The cave east of the mire',
|
'Mire Hint': 'The cave east of the mire',
|
||||||
'Palace of Darkness Hint': 'The building south of Kiki',
|
'Palace of Darkness Hint': 'The building south of Kiki',
|
||||||
'Dark Lake Hylia Ledge Spike Cave': 'The rock SE dark Lake Hylia',
|
'Dark Lake Hylia Ledge Spike Cave': 'The rock SE dark Lake Hylia',
|
||||||
'Archery Game': 'The old archery game',
|
'Archery Game': 'The old archery game',
|
||||||
'Dark Lake Hylia Ledge Hint': 'The open cave SE dark Lake Hylia',
|
'Dark Lake Hylia Ledge Hint': 'The open cave SE dark Lake Hylia',
|
||||||
'Dark Desert Fairy': 'The eastern hut in the mire',
|
'Mire Fairy': 'The eastern hut in the mire',
|
||||||
'Dark Lake Hylia Ledge Fairy': 'The sealed cave SE dark Lake Hylia',
|
'Dark Lake Hylia Ledge Fairy': 'The sealed cave SE dark Lake Hylia',
|
||||||
'Fortune Teller (Dark)': 'The building NE the Village of Outcasts',
|
'Fortune Teller (Dark)': 'The building NE the Village of Outcasts',
|
||||||
'Dark Sanctuary Hint': 'The dark sanctuary cave'
|
'Dark Sanctuary Hint': 'The dark sanctuary cave'
|
||||||
|
|||||||
@@ -193,6 +193,10 @@ def global_rules(world, player):
|
|||||||
for exit in world.get_region('Menu', player).exits:
|
for exit in world.get_region('Menu', player).exits:
|
||||||
exit.hide_path = True
|
exit.hide_path = True
|
||||||
|
|
||||||
|
# s&q regions. link's house entrance is set to true so the filler knows the chest inside can always be reached
|
||||||
|
set_rule(world.get_entrance('Old Man S&Q', player), lambda state: state.can_reach('Old Man', 'Location', player))
|
||||||
|
set_rule(world.get_entrance('Other World S&Q', player), lambda state: state.has_Mirror(player) and state.has('Beat Agahnim 1', player))
|
||||||
|
|
||||||
# flute rules
|
# flute rules
|
||||||
set_rule(world.get_entrance('Flute Spot 1', player), lambda state: state.can_flute(player))
|
set_rule(world.get_entrance('Flute Spot 1', player), lambda state: state.can_flute(player))
|
||||||
set_rule(world.get_entrance('Flute Spot 2', player), lambda state: state.can_flute(player))
|
set_rule(world.get_entrance('Flute Spot 2', player), lambda state: state.can_flute(player))
|
||||||
@@ -203,31 +207,26 @@ def global_rules(world, player):
|
|||||||
set_rule(world.get_entrance('Flute Spot 7', player), lambda state: state.can_flute(player))
|
set_rule(world.get_entrance('Flute Spot 7', player), lambda state: state.can_flute(player))
|
||||||
set_rule(world.get_entrance('Flute Spot 8', player), lambda state: state.can_flute(player))
|
set_rule(world.get_entrance('Flute Spot 8', player), lambda state: state.can_flute(player))
|
||||||
|
|
||||||
# s&q regions. link's house entrance is set to true so the filler knows the chest inside can always be reached
|
|
||||||
set_rule(world.get_entrance('Old Man S&Q', player), lambda state: state.can_reach('Old Man', 'Location', player))
|
|
||||||
set_rule(world.get_entrance('Other World S&Q', player), lambda state: state.has_Mirror(player) and state.has('Beat Agahnim 1', player))
|
|
||||||
|
|
||||||
# overworld location rules
|
# overworld location rules
|
||||||
set_rule(world.get_location('Master Sword Pedestal', player), lambda state: state.has('Red Pendant', player) and state.has('Blue Pendant', player) and state.has('Green Pendant', player))
|
set_rule(world.get_location('Master Sword Pedestal', player), lambda state: state.has('Red Pendant', player) and state.has('Blue Pendant', player) and state.has('Green Pendant', player))
|
||||||
set_rule(world.get_location('Zora\'s Ledge', player), lambda state: state.has('Flippers', player))
|
|
||||||
set_rule(world.get_location('Sunken Treasure', player), lambda state: state.has('Open Floodgate', player))
|
|
||||||
set_rule(world.get_location('Flute Spot', player), lambda state: state.has('Shovel', player))
|
|
||||||
set_rule(world.get_location('Ether Tablet', player), lambda state: state.has('Book of Mudora', player) and state.has_beam_sword(player))
|
set_rule(world.get_location('Ether Tablet', player), lambda state: state.has('Book of Mudora', player) and state.has_beam_sword(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('Zora\'s Ledge', player), lambda state: state.has('Flippers', player))
|
||||||
|
|
||||||
set_rule(world.get_location('Missing Smith', player), lambda state: state.has('Get Frog', player) and state.can_reach('Blacksmiths Hut', 'Region', player)) # Can't S&Q with smith
|
set_rule(world.get_location('Missing Smith', player), lambda state: state.has('Get Frog', player) and state.can_reach('Blacksmiths Hut', 'Region', player)) # Can't S&Q with smith
|
||||||
set_rule(world.get_location('Dark Blacksmith Ruins', player), lambda state: state.has('Return Smith', 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('Purple Chest', player), lambda state: state.has('Pick Up Purple Chest', player)) # Can S&Q with chest
|
set_rule(world.get_location('Purple Chest', player), lambda state: state.has('Pick Up Purple Chest', player)) # Can S&Q with chest
|
||||||
|
set_rule(world.get_location('Sunken Treasure', player), lambda state: state.has('Open Floodgate', player))
|
||||||
|
set_rule(world.get_location('Dark Blacksmith Ruins', player), lambda state: state.has('Return Smith', player))
|
||||||
|
|
||||||
# underworld rules
|
# underworld location rules
|
||||||
|
set_rule(world.get_entrance('Old Man Cave Exit (West)', player), lambda state: False) # drop cannot be climbed up
|
||||||
set_rule(world.get_location('Mimic Cave', player), lambda state: state.has('Hammer', player))
|
set_rule(world.get_location('Mimic Cave', player), lambda state: state.has('Hammer', player))
|
||||||
set_rule(world.get_entrance('Paradox Cave Push Block Reverse', player), lambda state: state.has_Mirror(player)) # can erase block - overridden in noglitches
|
|
||||||
set_rule(world.get_location('Potion Shop', player), lambda state: state.has('Mushroom', player) and state.can_reach('Potion Shop Area', 'Region', player))
|
set_rule(world.get_location('Potion Shop', player), lambda state: state.has('Mushroom', player) and state.can_reach('Potion Shop Area', 'Region', player))
|
||||||
set_rule(world.get_location('Sick Kid', player), lambda state: state.has_bottle(player))
|
set_rule(world.get_location('Sick Kid', player), lambda state: state.has_bottle(player))
|
||||||
set_rule(world.get_location('Magic Bat', player), lambda state: state.has('Magic Powder', player))
|
|
||||||
set_rule(world.get_location('Blacksmith', player), lambda state: state.has('Return Smith', player))
|
|
||||||
set_rule(world.get_location('Library', player), lambda state: state.has_Boots(player))
|
|
||||||
set_rule(world.get_location('Sahasrahla', player), lambda state: state.has('Green Pendant', player))
|
set_rule(world.get_location('Sahasrahla', player), lambda state: state.has('Green Pendant', player))
|
||||||
|
set_rule(world.get_location('Blacksmith', player), lambda state: state.has('Return Smith', player))
|
||||||
|
set_rule(world.get_location('Magic Bat', player), lambda state: state.has('Magic Powder', player))
|
||||||
|
set_rule(world.get_location('Library', player), lambda state: state.has_Boots(player))
|
||||||
set_rule(world.get_location('Spike Cave', player), lambda state:
|
set_rule(world.get_location('Spike Cave', player), lambda state:
|
||||||
state.has('Hammer', player) and state.can_lift_rocks(player) and
|
state.has('Hammer', player) and state.can_lift_rocks(player) and
|
||||||
((state.has('Cape', player) and state.can_extend_magic(player, 16, True)) or
|
((state.has('Cape', player) and state.can_extend_magic(player, 16, True)) or
|
||||||
@@ -235,6 +234,9 @@ def global_rules(world, player):
|
|||||||
(state.can_extend_magic(player, 12, True) or
|
(state.can_extend_magic(player, 12, True) or
|
||||||
(state.world.can_take_damage and (state.has_Boots(player) or state.has_hearts(player, 4))))))
|
(state.world.can_take_damage and (state.has_Boots(player) or state.has_hearts(player, 4))))))
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# underworld rules
|
||||||
|
set_rule(world.get_entrance('Paradox Cave Push Block Reverse', player), lambda state: state.has_Mirror(player)) # can erase block - overridden in noglitches
|
||||||
set_rule(world.get_entrance('Hookshot Cave Bonk Path', player), lambda state: state.has('Hookshot', player) or state.has('Pegasus Boots', player))
|
set_rule(world.get_entrance('Hookshot Cave Bonk Path', player), lambda state: state.has('Hookshot', player) or state.has('Pegasus Boots', player))
|
||||||
set_rule(world.get_entrance('Hookshot Cave Hook Path', player), lambda state: state.has('Hookshot', player))
|
set_rule(world.get_entrance('Hookshot Cave Hook Path', player), lambda state: state.has('Hookshot', player))
|
||||||
set_rule(world.get_entrance('Bumper Cave Bottom to Top', player), lambda state: state.has('Cape', player))
|
set_rule(world.get_entrance('Bumper Cave Bottom to Top', player), lambda state: state.has('Cape', player))
|
||||||
@@ -245,37 +247,93 @@ def global_rules(world, player):
|
|||||||
set_rule(world.get_entrance('DM Hammer Bridge (East)', 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('DM Broken Bridge (West)', player), lambda state: state.has('Hookshot', player))
|
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('DM Broken Bridge (East)', player), lambda state: state.has('Hookshot', player))
|
||||||
set_rule(world.get_entrance('Fairy Ascension Rocks', player), lambda state: state.can_lift_heavy_rocks(player))
|
set_rule(world.get_entrance('Fairy Ascension Rocks (Inner)', 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('Fairy Ascension Rocks (Outer)', 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('Mountain Pass Rock (Outer)', player), lambda state: state.can_lift_rocks(player))
|
||||||
|
set_rule(world.get_entrance('Mountain Pass Rock (Inner)', player), lambda state: state.can_lift_rocks(player))
|
||||||
# can be fake flippered into, but is in weird state inside that might prevent you from doing things.
|
# can be fake flippered into, but is in weird state inside that might prevent you from doing things.
|
||||||
set_rule(world.get_entrance('Waterfall Fairy Access', player), lambda state: state.has('Flippers', 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('Zora Waterfall Approach', player), lambda state: state.has('Flippers', player))
|
||||||
|
set_rule(world.get_entrance('Lost Woods Pass Hammer (North)', player), lambda state: state.has('Hammer', player))
|
||||||
|
set_rule(world.get_entrance('Lost Woods Pass Hammer (South)', player), lambda state: state.has('Hammer', player))
|
||||||
|
set_rule(world.get_entrance('Lost Woods Pass Rock (North)', player), lambda state: state.can_lift_heavy_rocks(player))
|
||||||
|
set_rule(world.get_entrance('Lost Woods Pass Rock (South)', player), lambda state: state.can_lift_heavy_rocks(player))
|
||||||
|
set_rule(world.get_entrance('Kakariko Pond Whirlpool', player), lambda state: state.has('Flippers', player))
|
||||||
set_rule(world.get_entrance('Kings Grave Rocks (Outer)', player), lambda state: state.can_lift_heavy_rocks(player))
|
set_rule(world.get_entrance('Kings Grave Rocks (Outer)', player), lambda state: state.can_lift_heavy_rocks(player))
|
||||||
set_rule(world.get_entrance('Kings Grave Rocks (Inner)', player), lambda state: state.can_lift_heavy_rocks(player))
|
set_rule(world.get_entrance('Kings Grave Rocks (Inner)', player), lambda state: state.can_lift_heavy_rocks(player))
|
||||||
|
set_rule(world.get_entrance('River Bend Water Drop', player), lambda state: state.has('Flippers', player))
|
||||||
set_rule(world.get_entrance('Potion Shop Rock (North)', 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('Potion Shop Rock (South)', player), lambda state: state.can_lift_rocks(player))
|
set_rule(world.get_entrance('Potion Shop Rock (South)', 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('Zora Approach Rocks (West)', player), lambda state: state.can_lift_heavy_rocks(player) or state.has_Boots(player))
|
||||||
set_rule(world.get_entrance('Bat Cave Ledge Peg (East)', player), lambda state: state.has('Hammer', 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 East Rock (Inner)', player), lambda state: state.can_lift_rocks(player))
|
||||||
|
set_rule(world.get_entrance('Hyrule Castle East Rock (Outer)', player), lambda state: state.can_lift_rocks(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('Blacksmith Ledge Peg (West)', player), lambda state: state.has('Hammer', player))
|
||||||
|
set_rule(world.get_entrance('Blacksmith Ledge Peg (East)', player), lambda state: state.has('Hammer', player))
|
||||||
set_rule(world.get_entrance('Desert Statue Move', player), lambda state: state.has('Book of Mudora', player))
|
set_rule(world.get_entrance('Desert Statue Move', player), lambda state: state.has('Book of Mudora', player))
|
||||||
set_rule(world.get_entrance('Desert Ledge Rocks (Outer)', player), lambda state: state.can_lift_rocks(player))
|
set_rule(world.get_entrance('Desert Ledge Rocks (Outer)', player), lambda state: state.can_lift_rocks(player))
|
||||||
set_rule(world.get_entrance('Desert Ledge Rocks (Inner)', player), lambda state: state.can_lift_rocks(player))
|
set_rule(world.get_entrance('Desert Ledge Rocks (Inner)', 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('C Whirlpool Pegs (Outer)', player), lambda state: state.has('Hammer', player))
|
||||||
|
set_rule(world.get_entrance('C Whirlpool Pegs (Inner)', player), lambda state: state.has('Hammer', player))
|
||||||
|
set_rule(world.get_entrance('Lake Hylia 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('Lake Hylia Water D Leave', player), lambda state: state.has('Flippers', player))
|
||||||
|
set_rule(world.get_entrance('Ice Cave Water Drop', player), lambda state: state.has('Flippers', 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('Octoballoon Waterfall Water Drop', player), lambda state: state.has('Flippers', player))
|
||||||
|
|
||||||
set_rule(world.get_entrance('Bumper Cave Entrance Rock', player), lambda state: state.can_lift_rocks(player))
|
set_rule(world.get_entrance('Skull Woods Rock (West)', player), lambda state: state.can_lift_rocks(player))
|
||||||
|
set_rule(world.get_entrance('Skull Woods Rock (East)', player), lambda state: state.can_lift_rocks(player))
|
||||||
|
# this more like an ohko rule - dependent on bird being present too - so enemizer could turn this off?
|
||||||
|
set_rule(world.get_entrance('Bumper Cave Ledge Drop', player), lambda state: state.has('Cape', player) or state.has('Cane of Byrna', player) or state.has_sword(player))
|
||||||
|
set_rule(world.get_entrance('Bumper Cave Rock (Outer)', player), lambda state: state.can_lift_rocks(player))
|
||||||
|
set_rule(world.get_entrance('Bumper Cave Rock (Inner)', player), lambda state: state.can_lift_rocks(player))
|
||||||
|
set_rule(world.get_entrance('Skull Woods Pass Rock (North)', player), lambda state: state.can_lift_heavy_rocks(player))
|
||||||
|
set_rule(world.get_entrance('Skull Woods Pass Rock (South)', player), lambda state: state.can_lift_heavy_rocks(player))
|
||||||
|
set_rule(world.get_entrance('Qirn Jump Water Drop', player), lambda state: state.has('Flippers', 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 (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('Dark Witch Rock (South)', player), lambda state: state.can_lift_rocks(player))
|
||||||
set_rule(world.get_entrance('Grassy Lawn Pegs (Bottom)', player), lambda state: state.has('Hammer', 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('Grassy Lawn Pegs (Top)', player), lambda state: state.has('Hammer', 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('Broken Bridge Pass (Bottom)', player), lambda state: state.can_lift_rocks(player) or state.has('Hammer', player) or state.has('Flippers', player))
|
set_rule(world.get_entrance('Bush Yard Pegs (Outer)', player), lambda state: state.has('Hammer', player))
|
||||||
set_rule(world.get_entrance('Broken Bridge Pass (Top)', player), lambda state: state.can_lift_rocks(player) or state.has('Hammer', player))
|
set_rule(world.get_entrance('Bush Yard Pegs (Inner)', player), lambda state: state.has('Hammer', player))
|
||||||
set_rule(world.get_entrance('West Dark World Gap', player), lambda state: state.has('Hookshot', 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('Peg Area Rocks (Left)', player), lambda state: state.can_lift_heavy_rocks(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('Peg Area Rocks (Right)', player), lambda state: state.can_lift_heavy_rocks(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 Heavy Rock', player), lambda state: state.can_lift_heavy_rocks(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))
|
||||||
|
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('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 (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('Hammer Bridge Pegs (South)', player), lambda state: state.has('Hammer', player))
|
||||||
|
set_rule(world.get_entrance('Hammer Bridge Water Drop', player), lambda state: state.has('Flippers', player))
|
||||||
# this more like an ohko rule - dependent on bird being present too - so enemizer could turn this off?
|
set_rule(world.get_entrance('Dark C Whirlpool Rock (Bottom)', player), lambda state: state.can_lift_rocks(player))
|
||||||
set_rule(world.get_entrance('Bumper Cave Ledge Drop', player), lambda state: state.has_Pearl(player) and
|
set_rule(world.get_entrance('Dark C Whirlpool Rock (Top)', player), lambda state: state.can_lift_rocks(player))
|
||||||
(state.has('Cape', player) or state.has('Cane of Byrna', player) or state.has_sword(player)))
|
set_rule(world.get_entrance('Dark C Whirlpool Pegs (Outer)', player), lambda state: state.has('Hammer', player))
|
||||||
|
set_rule(world.get_entrance('Dark C Whirlpool Pegs (Inner)', player), lambda state: state.has('Hammer', player))
|
||||||
|
set_rule(world.get_entrance('Ice Lake Water Drop', player), lambda state: state.has('Flippers', player))
|
||||||
|
set_rule(world.get_entrance('Ice Lake Northeast Water Drop', player), lambda state: state.has('Flippers', player))
|
||||||
|
set_rule(world.get_entrance('Ice Lake Southwest Water Drop', player), lambda state: state.has('Flippers', player))
|
||||||
|
set_rule(world.get_entrance('Ice Lake Iceberg Water Entry', player), lambda state: state.has('Flippers', player))
|
||||||
|
set_rule(world.get_entrance('Ice Lake Iceberg Bomb Jump', player), lambda state: state.can_use_bombs(player))
|
||||||
|
set_rule(world.get_entrance('Shopping Mall 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))
|
||||||
|
|
||||||
# entrance rules
|
# entrance rules
|
||||||
# Caution: If king's grave is relaxed at all to account for reaching it via a two way cave's exit in insanity mode, then the bomb shop logic will need to be updated (that would involve create a small ledge-like Region for it)
|
# Caution: If king's grave is relaxed at all to account for reaching it via a two way cave's exit in insanity mode, then the bomb shop logic will need to be updated (that would involve create a small ledge-like Region for it)
|
||||||
@@ -295,11 +353,14 @@ def global_rules(world, player):
|
|||||||
|
|
||||||
set_rule(world.get_entrance('Skull Woods Final Section', player), lambda state: state.has('Fire Rod', player))
|
set_rule(world.get_entrance('Skull Woods Final Section', player), lambda state: state.has('Fire Rod', 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('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('Turtle Rock', player), lambda state: state.has_sword(player) and state.has_turtle_rock_medallion(player) and state.can_reach('Turtle Rock (Top)', 'Region', player)) # sword required to cast magic (!)
|
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 (!)
|
||||||
|
|
||||||
if not world.is_atgt_swapped(player):
|
if not world.is_atgt_swapped(player):
|
||||||
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('Agahnims Tower', player), lambda state: state.has('Cape', player) or state.has_beam_sword(player))
|
||||||
set_rule(world.get_entrance('Ganons Tower' if not world.is_atgt_swapped(player) else 'Agahnims Tower', player), lambda state: state.has_crystals(world.crystals_needed_for_gt[player], player))
|
set_rule(world.get_entrance('GT Approach', player), lambda state: state.has_crystals(world.crystals_needed_for_gt[player], player))
|
||||||
|
set_rule(world.get_entrance('GT Leave', player), lambda state: state.has_crystals(world.crystals_needed_for_gt[player], player))
|
||||||
|
else:
|
||||||
|
set_rule(world.get_entrance('Agahnims Tower', player), lambda state: state.has_crystals(world.crystals_needed_for_gt[player], player))
|
||||||
|
|
||||||
# Start of door rando rules
|
# Start of door rando rules
|
||||||
# TODO: Do these need to flag off when door rando is off? - some of them, yes
|
# TODO: Do these need to flag off when door rando is off? - some of them, yes
|
||||||
@@ -759,8 +820,7 @@ def global_rules(world, player):
|
|||||||
add_mc_rule('Agahnim 1')
|
add_mc_rule('Agahnim 1')
|
||||||
add_mc_rule('Agahnim 2')
|
add_mc_rule('Agahnim 2')
|
||||||
|
|
||||||
add_rule(world.get_location('Sunken Treasure', player), lambda state: state.has('Open Floodgate', player))
|
set_rule(world.get_location('Ganon', player), lambda state: state.has_beam_sword(player) and state.has_fire_source(player) and state.has_crystals(world.crystals_needed_for_ganon[player], player)
|
||||||
set_rule(world.get_location('Ganon', player), lambda state: state.has_beam_sword(player) and state.has_fire_source(player)
|
|
||||||
and (state.has('Tempered Sword', player) or state.has('Golden Sword', player) or (state.has('Silver Arrows', player) and state.can_shoot_arrows(player)) or state.has('Lamp', player) or state.can_extend_magic(player, 12))) # need to light torch a sufficient amount of times
|
and (state.has('Tempered Sword', player) or state.has('Golden Sword', player) or (state.has('Silver Arrows', player) and state.can_shoot_arrows(player)) or state.has('Lamp', player) or state.can_extend_magic(player, 12))) # need to light torch a sufficient amount of times
|
||||||
if world.goal[player] != 'ganonhunt':
|
if world.goal[player] != 'ganonhunt':
|
||||||
add_rule(world.get_location('Ganon', player), lambda state: state.has_crystals(world.crystals_needed_for_ganon[player], player))
|
add_rule(world.get_location('Ganon', player), lambda state: state.has_crystals(world.crystals_needed_for_ganon[player], player))
|
||||||
@@ -790,12 +850,15 @@ def bomb_rules(world, player):
|
|||||||
'Hype Cave - Top', 'Hype Cave - Middle Right', 'Hype Cave - Middle Left', 'Hype Cave - Bottom']
|
'Hype Cave - Top', 'Hype Cave - Middle Right', 'Hype Cave - Middle Left', 'Hype Cave - Bottom']
|
||||||
for location in bonkable_items:
|
for location in bonkable_items:
|
||||||
add_rule(world.get_location(location, player), lambda state: state.can_use_bombs(player) or state.has_Boots(player))
|
add_rule(world.get_location(location, player), lambda state: state.can_use_bombs(player) or state.has_Boots(player))
|
||||||
|
add_bunny_rule(world.get_location(location, player), player)
|
||||||
for location in bombable_items:
|
for location in bombable_items:
|
||||||
add_rule(world.get_location(location, player), lambda state: state.can_use_bombs(player))
|
add_rule(world.get_location(location, player), lambda state: state.can_use_bombs(player))
|
||||||
|
add_bunny_rule(world.get_location(location, player), player)
|
||||||
|
|
||||||
paradox_switch_chests = ['Paradox Cave Lower - Far Left', 'Paradox Cave Lower - Left', 'Paradox Cave Lower - Right', 'Paradox Cave Lower - Far Right', 'Paradox Cave Lower - Middle']
|
paradox_switch_chests = ['Paradox Cave Lower - Far Left', 'Paradox Cave Lower - Left', 'Paradox Cave Lower - Right', 'Paradox Cave Lower - Far Right', 'Paradox Cave Lower - Middle']
|
||||||
for location in paradox_switch_chests:
|
for location in paradox_switch_chests:
|
||||||
add_rule(world.get_location(location, player), lambda state: state.can_hit_crystal_through_barrier(player))
|
add_rule(world.get_location(location, player), lambda state: state.can_hit_crystal_through_barrier(player))
|
||||||
|
add_bunny_rule(world.get_location(location, player), player)
|
||||||
|
|
||||||
add_rule(world.get_location('Attic Cracked Floor', player), lambda state: state.can_use_bombs(player))
|
add_rule(world.get_location('Attic Cracked Floor', player), lambda state: state.can_use_bombs(player))
|
||||||
bombable_floors = ['PoD Pit Room Bomb Hole', 'Ice Bomb Drop Hole', 'Ice Freezors Bomb Hole', 'GT Bob\'s Room Hole']
|
bombable_floors = ['PoD Pit Room Bomb Hole', 'Ice Bomb Drop Hole', 'Ice Freezors Bomb Hole', 'GT Bob\'s Room Hole']
|
||||||
@@ -891,7 +954,7 @@ def pot_rules(world, player):
|
|||||||
(state.has('Cane of Byrna', player) and
|
(state.has('Cane of Byrna', player) and
|
||||||
(state.can_extend_magic(player, 12, True) or
|
(state.can_extend_magic(player, 12, True) or
|
||||||
(state.world.can_take_damage and (state.has_Boots(player) or state.has_hearts(player, 4)))))))
|
(state.world.can_take_damage and (state.has_Boots(player) or state.has_hearts(player, 4)))))))
|
||||||
for l in world.get_region('Dark Desert Hint', player).locations:
|
for l in world.get_region('Mire Hint', player).locations:
|
||||||
if l.type == LocationType.Pot:
|
if l.type == LocationType.Pot:
|
||||||
add_rule(l, lambda state: state.can_use_bombs(player))
|
add_rule(l, lambda state: state.can_use_bombs(player))
|
||||||
for l in world.get_region('Palace of Darkness Hint', player).locations:
|
for l in world.get_region('Palace of Darkness Hint', player).locations:
|
||||||
@@ -938,31 +1001,36 @@ def drop_rules(world, player):
|
|||||||
def ow_inverted_rules(world, player):
|
def ow_inverted_rules(world, player):
|
||||||
if world.mode[player] != 'inverted':
|
if world.mode[player] != 'inverted':
|
||||||
set_rule(world.get_entrance('East Death Mountain 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('Turtle Rock Teleporter', player), lambda state: state.can_lift_heavy_rocks(player) and state.has('Hammer', player))
|
set_rule(world.get_entrance('TR Pegs Teleporter', player), lambda state: state.has('Hammer', player))
|
||||||
set_rule(world.get_entrance('Kakariko Teleporter', player), lambda state: ((state.has('Hammer', player) and state.can_lift_rocks(player)) or state.can_lift_heavy_rocks(player)) and state.has_Pearl(player)) # bunny cannot lift bushes
|
set_rule(world.get_entrance('Kakariko Teleporter', player), lambda state: ((state.has('Hammer', player) and state.can_lift_rocks(player)) or state.can_lift_heavy_rocks(player)) and state.has_Pearl(player)) # bunny cannot lift bushes
|
||||||
set_rule(world.get_entrance('Castle Gate Teleporter', player), lambda state: state.has('Beat Agahnim 1', player))
|
set_rule(world.get_entrance('Castle Gate Teleporter', player), lambda state: state.has('Beat Agahnim 1', player))
|
||||||
|
set_rule(world.get_entrance('Castle Gate Teleporter (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('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 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('Desert Teleporter', player), lambda state: state.can_lift_heavy_rocks(player))
|
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('Lake Hylia Teleporter', player), lambda state: state.can_lift_heavy_rocks(player))
|
||||||
|
|
||||||
set_rule(world.get_entrance('Hyrule Castle Main Gate', 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 Main Gate (North)', player), lambda state: state.has_Mirror(player))
|
||||||
|
set_rule(world.get_entrance('Hyrule Castle Main Gate (South)', player), lambda state: state.has_Mirror(player))
|
||||||
set_rule(world.get_location('Frog', player), lambda state: state.can_lift_heavy_rocks(player) and state.has_Pearl(player))
|
set_rule(world.get_location('Frog', player), lambda state: state.can_lift_heavy_rocks(player) and state.has_Pearl(player))
|
||||||
set_rule(world.get_entrance('Pyramid Hole', player), lambda state: world.is_pyramid_open(player) or state.has('Beat Agahnim 2', player))
|
set_rule(world.get_entrance('Pyramid Hole', player), lambda state: world.is_pyramid_open(player) or world.goal[player] == 'trinity' or state.has('Beat Agahnim 2', player))
|
||||||
|
set_rule(world.get_entrance('Mirror To Bombos Tablet Ledge', player), lambda state: state.has_Mirror(player)) # OWG
|
||||||
else:
|
else:
|
||||||
set_rule(world.get_entrance('East Dark Death Mountain Teleporter (Top)', player), lambda state: state.can_lift_heavy_rocks(player) and state.has('Hammer', player) and state.has_Pearl(player)) # bunny cannot use hammer
|
set_rule(world.get_entrance('Turtle Rock Teleporter', player), lambda state: state.can_lift_heavy_rocks(player) and state.has('Hammer', player) and state.has_Pearl(player)) # bunny cannot use hammer
|
||||||
set_rule(world.get_entrance('East Dark Death Mountain Teleporter (Bottom)', player), lambda state: state.can_lift_heavy_rocks(player))
|
set_rule(world.get_entrance('East Dark Death Mountain Teleporter', player), lambda state: state.can_lift_heavy_rocks(player))
|
||||||
set_rule(world.get_entrance('West Dark World Teleporter', player), lambda state: ((state.has('Hammer', player) and state.can_lift_rocks(player)) or state.can_lift_heavy_rocks(player)) and state.has_Pearl(player))
|
set_rule(world.get_entrance('West Dark World Teleporter', player), lambda state: ((state.has('Hammer', player) and state.can_lift_rocks(player)) or state.can_lift_heavy_rocks(player)) and state.has_Pearl(player))
|
||||||
set_rule(world.get_entrance('Post Aga Teleporter', player), lambda state: state.has('Beat Agahnim 1', player))
|
set_rule(world.get_entrance('Post Aga 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)) # bunny cannot use hammer
|
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)) # bunny cannot use hammer
|
||||||
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)) # bunny cannot use hammer
|
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)) # bunny cannot use hammer
|
||||||
set_rule(world.get_entrance('Dark Desert Teleporter', player), lambda state: state.can_lift_heavy_rocks(player))
|
set_rule(world.get_entrance('Mire Teleporter', player), lambda state: state.can_lift_heavy_rocks(player))
|
||||||
set_rule(world.get_entrance('Dark Lake Hylia Teleporter', player), lambda state: state.can_lift_heavy_rocks(player))
|
set_rule(world.get_entrance('Ice Lake Teleporter', player), lambda state: state.can_lift_heavy_rocks(player))
|
||||||
|
|
||||||
|
set_rule(world.get_entrance('TR Pegs Ledge Drop', player), lambda state: state.has('Hammer', player)) # inverted 1.0
|
||||||
|
set_rule(world.get_entrance('Pyramid Exit Ledge Drop', player), lambda state: state.has('Hammer', player)) # inverted 1.0
|
||||||
|
|
||||||
set_rule(world.get_location('Frog', player), lambda state: state.can_lift_heavy_rocks(player) and
|
set_rule(world.get_location('Frog', player), lambda state: state.can_lift_heavy_rocks(player) and
|
||||||
(state.has_Pearl(player) or state.has('Beat Agahnim 1', player))
|
(state.has_Pearl(player) or state.has('Beat Agahnim 1', player))
|
||||||
or (state.can_reach('Light World', 'Region', player) and state.has_Mirror(player))) # Need LW access using Mirror or Portal
|
or (state.can_reach('Kakariko Suburb Area', 'Region', player) and state.has_Mirror(player))) # Need LW access using Mirror or Portal
|
||||||
set_rule(world.get_entrance('Inverted Pyramid Hole', player), lambda state: world.is_pyramid_open(player) or state.has('Beat Agahnim 2', player))
|
set_rule(world.get_entrance('Inverted Pyramid Hole', player), lambda state: world.is_pyramid_open(player) or state.has('Beat Agahnim 2', player))
|
||||||
|
|
||||||
|
|
||||||
@@ -972,10 +1040,12 @@ def ow_bunny_rules(world, player):
|
|||||||
add_bunny_rule(world.get_location('Zora\'s Ledge', 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('Maze Race', player), player)
|
||||||
add_bunny_rule(world.get_location('Flute Spot', player), player)
|
add_bunny_rule(world.get_location('Flute Spot', player), player)
|
||||||
|
add_bunny_rule(world.get_location('Catfish', player), player)
|
||||||
|
|
||||||
# entrances
|
# entrances
|
||||||
add_bunny_rule(world.get_entrance('Lost Woods Hideout Drop', 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('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('Bonk Rock Cave', player), player)
|
||||||
add_bunny_rule(world.get_entrance('Sanctuary Grave', 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('Kings Grave', player), player)
|
||||||
@@ -999,48 +1069,144 @@ def ow_bunny_rules(world, player):
|
|||||||
add_bunny_rule(world.get_entrance('Dark Lake Hylia Ledge Spike Cave', player), player)
|
add_bunny_rule(world.get_entrance('Dark Lake Hylia Ledge Spike Cave', player), player)
|
||||||
|
|
||||||
# terrain
|
# terrain
|
||||||
|
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 (West)', player), player)
|
||||||
add_bunny_rule(world.get_entrance('DM Hammer Bridge (East)', 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 (West)', player), player)
|
||||||
add_bunny_rule(world.get_entrance('DM Broken Bridge (East)', player), player)
|
add_bunny_rule(world.get_entrance('DM Broken Bridge (East)', player), player)
|
||||||
add_bunny_rule(world.get_entrance('Fairy Ascension Rocks', player), player)
|
add_bunny_rule(world.get_entrance('Fairy Ascension Rocks (Inner)', player), player)
|
||||||
add_bunny_rule(world.get_entrance('Death Mountain Entrance Rock', player), player)
|
add_bunny_rule(world.get_entrance('Fairy Ascension Rocks (Outer)', player), player)
|
||||||
add_bunny_rule(world.get_entrance('Waterfall Fairy Access', player), player)
|
add_bunny_rule(world.get_entrance('TR Pegs Ledge Entry', player), player)
|
||||||
add_bunny_rule(world.get_entrance('Graveyard Ladder (Top)', player), player)
|
add_bunny_rule(world.get_entrance('TR Pegs Ledge Leave', player), player)
|
||||||
add_bunny_rule(world.get_entrance('Graveyard Ladder (Bottom)', player), player)
|
add_bunny_rule(world.get_entrance('TR Pegs Ledge Drop', player), player) # inverted 1.0
|
||||||
|
add_bunny_rule(world.get_entrance('Mountain Pass Rock (Outer)', player), player)
|
||||||
|
add_bunny_rule(world.get_entrance('Mountain Pass Rock (Inner)', 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('Zora Waterfall Approach', player), player)
|
||||||
|
add_bunny_rule(world.get_entrance('Lost Woods Pass Hammer (North)', player), player)
|
||||||
|
add_bunny_rule(world.get_entrance('Lost Woods Pass Hammer (South)', player), player)
|
||||||
|
add_bunny_rule(world.get_entrance('Lost Woods Pass Rock (North)', player), player)
|
||||||
|
add_bunny_rule(world.get_entrance('Lost Woods Pass Rock (South)', player), player)
|
||||||
|
add_bunny_rule(world.get_entrance('Kakariko Pond Whirlpool', player), player)
|
||||||
add_bunny_rule(world.get_entrance('Kings Grave Rocks (Outer)', player), player)
|
add_bunny_rule(world.get_entrance('Kings Grave Rocks (Outer)', player), player)
|
||||||
add_bunny_rule(world.get_entrance('Kings Grave Rocks (Inner)', player), player)
|
add_bunny_rule(world.get_entrance('Kings Grave Rocks (Inner)', player), player)
|
||||||
|
add_bunny_rule(world.get_entrance('Graveyard Ladder (Top)', player), player)
|
||||||
|
add_bunny_rule(world.get_entrance('Graveyard Ladder (Bottom)', 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('Potion Shop Rock (North)', player), player)
|
add_bunny_rule(world.get_entrance('Potion Shop Rock (North)', player), player)
|
||||||
add_bunny_rule(world.get_entrance('Potion Shop Rock (South)', player), player)
|
add_bunny_rule(world.get_entrance('Potion Shop Rock (South)', player), player)
|
||||||
add_bunny_rule(world.get_entrance('Kakariko Yard Bush (North)', player), player)
|
add_bunny_rule(world.get_entrance('Zora Approach Water Drop', player), player)
|
||||||
add_bunny_rule(world.get_entrance('Kakariko Yard Bush (South)', 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 (North)', player), player)
|
||||||
add_bunny_rule(world.get_entrance('Kakariko Southwest Bush (South)', 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 Southwest Bush (North)', player), player)
|
||||||
|
add_bunny_rule(world.get_entrance('Hyrule Castle Southwest 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 (North)', player), player)
|
||||||
add_bunny_rule(world.get_entrance('Hyrule Castle Courtyard Bush (South)', player), player)
|
add_bunny_rule(world.get_entrance('Hyrule Castle Courtyard Bush (South)', player), player)
|
||||||
|
add_bunny_rule(world.get_entrance('Hyrule Castle East Rock (Inner)', player), player)
|
||||||
|
add_bunny_rule(world.get_entrance('Hyrule Castle East Rock (Outer)', player), player)
|
||||||
add_bunny_rule(world.get_entrance('Wooden Bridge Bush (North)', 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('Wooden Bridge Bush (South)', player), player)
|
||||||
add_bunny_rule(world.get_entrance('Bat Cave Ledge Peg', player), player)
|
add_bunny_rule(world.get_entrance('Wooden Bridge Water Drop', player), player)
|
||||||
add_bunny_rule(world.get_entrance('Bat Cave Ledge Peg (East)', player), player)
|
add_bunny_rule(world.get_entrance('Wooden Bridge Northeast Water Drop', player), player)
|
||||||
|
add_bunny_rule(world.get_entrance('Blacksmith Ledge Peg (West)', player), player)
|
||||||
|
add_bunny_rule(world.get_entrance('Blacksmith Ledge Peg (East)', player), player)
|
||||||
|
add_bunny_rule(world.get_entrance('Maze Race Game', player), player)
|
||||||
add_bunny_rule(world.get_entrance('Desert Ledge Rocks (Outer)', player), player)
|
add_bunny_rule(world.get_entrance('Desert Ledge Rocks (Outer)', player), player)
|
||||||
add_bunny_rule(world.get_entrance('Desert Ledge Rocks (Inner)', player), player)
|
add_bunny_rule(world.get_entrance('Desert Ledge Rocks (Inner)', 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 Water Entry', 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('C Whirlpool Pegs (Outer)', player), player)
|
||||||
|
add_bunny_rule(world.get_entrance('C Whirlpool Pegs (Inner)', 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('Lake Hylia Water D Leave', player), player)
|
||||||
|
add_bunny_rule(world.get_entrance('Ice Cave Water Drop', 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('Octoballoon Water Drop', player), player)
|
||||||
|
add_bunny_rule(world.get_entrance('Octoballoon Waterfall Water Drop', player), player)
|
||||||
|
|
||||||
|
add_bunny_rule(world.get_entrance('Skull Woods Rock (West)', player), player)
|
||||||
|
add_bunny_rule(world.get_entrance('Skull Woods 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('East Dark Death Mountain Bushes', player), player)
|
add_bunny_rule(world.get_entrance('East Dark Death Mountain Bushes', player), player)
|
||||||
add_bunny_rule(world.get_entrance('Bumper Cave Entrance Rock', player), player)
|
add_bunny_rule(world.get_entrance('Bumper Cave Ledge Drop', player), player)
|
||||||
|
add_bunny_rule(world.get_entrance('Bumper Cave Rock (Outer)', player), player)
|
||||||
|
add_bunny_rule(world.get_entrance('Bumper Cave Rock (Inner)', 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 Bush (North)', player), player)
|
||||||
|
add_bunny_rule(world.get_entrance('Skull Woods Pass Bush (South)', player), player)
|
||||||
|
add_bunny_rule(world.get_entrance('Skull Woods Pass Rock (North)', player), player)
|
||||||
|
add_bunny_rule(world.get_entrance('Skull Woods Pass Rock (South)', player), player)
|
||||||
add_bunny_rule(world.get_entrance('Dark Graveyard Bush (South)', player), player)
|
add_bunny_rule(world.get_entrance('Dark Graveyard Bush (South)', player), player)
|
||||||
add_bunny_rule(world.get_entrance('Dark Graveyard Bush (North)', player), player)
|
add_bunny_rule(world.get_entrance('Dark Graveyard Bush (North)', 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('Dark Witch Rock (North)', 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('Dark Witch Rock (South)', player), player)
|
||||||
add_bunny_rule(world.get_entrance('Grassy Lawn Pegs (Bottom)', player), player)
|
add_bunny_rule(world.get_entrance('Catfish Approach Water Drop', player), player)
|
||||||
add_bunny_rule(world.get_entrance('Grassy Lawn Pegs (Top)', player), player)
|
add_bunny_rule(world.get_entrance('Catfish Approach Rocks (West)', player), player)
|
||||||
add_bunny_rule(world.get_entrance('Broken Bridge Pass (Bottom)', player), player)
|
add_bunny_rule(world.get_entrance('Catfish Approach Rocks (East)', player), player)
|
||||||
add_bunny_rule(world.get_entrance('Broken Bridge Pass (Top)', player), player)
|
add_bunny_rule(world.get_entrance('Bush Yard Pegs (Outer)', player), player)
|
||||||
add_bunny_rule(world.get_entrance('West Dark World Gap', player), player)
|
add_bunny_rule(world.get_entrance('Bush Yard Pegs (Inner)', player), player)
|
||||||
add_bunny_rule(world.get_entrance('Peg Area Rocks (Left)', player), player)
|
add_bunny_rule(world.get_entrance('Broken Bridge Hammer Rock (South)', player), player)
|
||||||
add_bunny_rule(world.get_entrance('Peg Area Rocks (Right)', player), player)
|
add_bunny_rule(world.get_entrance('Broken Bridge Hammer Rock (North)', player), player)
|
||||||
add_bunny_rule(world.get_entrance('Village of Outcasts Heavy Rock', player), player)
|
add_bunny_rule(world.get_entrance('Broken Bridge Hookshot Gap', 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('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 (North)', player), player)
|
||||||
add_bunny_rule(world.get_entrance('Hammer Bridge Pegs (South)', player), player)
|
add_bunny_rule(world.get_entrance('Hammer Bridge Pegs (South)', player), player)
|
||||||
|
add_bunny_rule(world.get_entrance('Hammer Bridge Water Drop', 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 Water Entry', 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('Dark C Whirlpool Pegs (Outer)', player), player)
|
||||||
|
add_bunny_rule(world.get_entrance('Dark C Whirlpool Pegs (Inner)', 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('Ice Lake Iceberg Water Entry', player), player)
|
||||||
|
add_bunny_rule(world.get_entrance('Ice Lake Iceberg Bomb Jump', player), player)
|
||||||
|
add_bunny_rule(world.get_entrance('Shopping Mall Water Drop', 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)
|
||||||
|
|
||||||
|
# OWG rules
|
||||||
|
add_bunny_rule(world.get_entrance('Stone Bridge EC Cliff Water Drop', player), player)
|
||||||
|
add_bunny_rule(world.get_entrance('Hammer Bridge EC Cliff Water Drop', player), player)
|
||||||
|
|
||||||
if not world.is_atgt_swapped(player):
|
if not world.is_atgt_swapped(player):
|
||||||
add_bunny_rule(world.get_entrance('Agahnims Tower', player), player)
|
add_bunny_rule(world.get_entrance('Agahnims Tower', player), player)
|
||||||
@@ -1051,31 +1217,23 @@ def ow_bunny_rules(world, player):
|
|||||||
|
|
||||||
|
|
||||||
def no_glitches_rules(world, player):
|
def no_glitches_rules(world, player):
|
||||||
set_rule(world.get_entrance('Light World Water Drop', player), lambda state: state.has('Flippers', player)) # can be fake flippered to
|
set_rule(world.get_entrance('River Bend East Water Drop', player), lambda state: state.has('Flippers', player))
|
||||||
set_rule(world.get_entrance('Zora Waterfall 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 Water Drop', player), lambda state: state.has('Flippers', player)) # can be fake flippered to
|
set_rule(world.get_entrance('Potion Shop Northeast Water Drop', player), lambda state: state.has('Flippers', player))
|
||||||
set_rule(world.get_entrance('Northeast Light World Water Drop', player), lambda state: state.has('Flippers', player)) # can be fake flippered to
|
set_rule(world.get_entrance('Zora Approach Water Drop', player), lambda state: state.has('Flippers', player))
|
||||||
set_rule(world.get_entrance('Lake Hylia Central Island 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('West Dark World Water Drop', 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('South Dark World 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('East Dark World 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('Northeast Dark World Water Drop', player), lambda state: state.has('Flippers', player)) # can be fake flippered to
|
|
||||||
set_rule(world.get_entrance('Southeast Dark World Water Drop', player), lambda state: state.has('Flippers', player)) # can be fake flippered to
|
|
||||||
set_rule(world.get_entrance('Catfish Water Drop', player), lambda state: state.has('Flippers', player)) # can be fake flippered to
|
|
||||||
set_rule(world.get_entrance('Ice Palace Leave Water Drop', player), lambda state: state.has('Flippers', player))
|
|
||||||
|
|
||||||
add_bunny_rule(world.get_entrance('Light World Water Drop', player), player)
|
set_rule(world.get_entrance('Qirn Jump East Water Drop', player), lambda state: state.has('Flippers', player))
|
||||||
add_bunny_rule(world.get_entrance('Zora Waterfall Water Drop', player), player)
|
set_rule(world.get_entrance('Dark Witch Water Drop', player), lambda state: state.has('Flippers', player))
|
||||||
add_bunny_rule(world.get_entrance('Potion Shop Water Drop', player), player)
|
set_rule(world.get_entrance('Dark Witch Northeast Water Drop', player), lambda state: state.has('Flippers', player))
|
||||||
add_bunny_rule(world.get_entrance('Northeast Light World Water Drop', player), player)
|
set_rule(world.get_entrance('Catfish Approach Water Drop', player), lambda state: state.has('Flippers', player))
|
||||||
add_bunny_rule(world.get_entrance('Lake Hylia Central Island Water Drop', player), player)
|
set_rule(world.get_entrance('Dark C Whirlpool Water Entry', player), lambda state: state.has('Flippers', player))
|
||||||
add_bunny_rule(world.get_entrance('West Dark World Water Drop', player), player)
|
set_rule(world.get_entrance('Hype Cave Water Entry', player), lambda state: state.has('Flippers', player))
|
||||||
add_bunny_rule(world.get_entrance('South Dark World Water Drop', player), player)
|
set_rule(world.get_entrance('Ice Lake Southeast Water Drop', player), lambda state: state.has('Flippers', player))
|
||||||
add_bunny_rule(world.get_entrance('East Dark World Water Drop', player), player)
|
set_rule(world.get_entrance('Bomber Corner Water Drop', player), lambda state: state.has('Flippers', player))
|
||||||
add_bunny_rule(world.get_entrance('Northeast Dark World Water Drop', player), player)
|
|
||||||
add_bunny_rule(world.get_entrance('Southeast Dark World Water Drop', player), player)
|
|
||||||
add_bunny_rule(world.get_entrance('Catfish Water Drop', player), player)
|
|
||||||
add_bunny_rule(world.get_entrance('Ice Palace Leave Water Drop', player), player)
|
|
||||||
|
|
||||||
# todo: move some dungeon rules to no glicthes logic - see these for examples
|
# todo: move some dungeon rules to no glicthes 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 (Hookshot Room)', player), lambda state: state.has('Hookshot', player) or state.has_Boots(player))
|
||||||
@@ -1084,24 +1242,29 @@ def no_glitches_rules(world, player):
|
|||||||
# for location in DMs_room_chests:
|
# for location in DMs_room_chests:
|
||||||
# add_rule(world.get_location(location, player), lambda state: state.has('Hookshot', player))
|
# add_rule(world.get_location(location, player), lambda state: state.has('Hookshot', player))
|
||||||
set_rule(world.get_entrance('Paradox Cave Push Block Reverse', player), lambda state: False) # no glitches does not require block override
|
set_rule(world.get_entrance('Paradox Cave Push Block Reverse', player), lambda state: False) # no glitches does not require block override
|
||||||
|
set_rule(world.get_entrance('Ice Lake Northeast Pier Hop', player), lambda state: False)
|
||||||
forbid_bomb_jump_requirements(world, player)
|
forbid_bomb_jump_requirements(world, player)
|
||||||
add_conditional_lamps(world, player)
|
add_conditional_lamps(world, player)
|
||||||
|
|
||||||
|
|
||||||
def fake_flipper_rules(world, player):
|
def fake_flipper_rules(world, player):
|
||||||
set_rule(world.get_entrance('Light World 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)
|
set_rule(world.get_entrance('Potion Shop Water Drop', player), lambda state: True)
|
||||||
set_rule(world.get_entrance('Northeast Light World Water Drop', player), lambda state: True)
|
set_rule(world.get_entrance('Potion Shop Northeast Water Drop', player), lambda state: True)
|
||||||
set_rule(world.get_entrance('Northeast Dark World Water Drop', player), lambda state: True)
|
set_rule(world.get_entrance('Zora Approach Water Drop', player), lambda state: True)
|
||||||
set_rule(world.get_entrance('Southeast Dark World Water Drop', player), lambda state: True)
|
set_rule(world.get_entrance('C Whirlpool Water Entry', player), lambda state: True)
|
||||||
set_rule(world.get_entrance('Catfish Water Drop', player), lambda state: True)
|
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)
|
||||||
|
|
||||||
add_bunny_rule(world.get_entrance('Light World Water Drop', player), player)
|
set_rule(world.get_entrance('Qirn Jump East Water Drop', player), lambda state: True)
|
||||||
add_bunny_rule(world.get_entrance('Potion Shop Water Drop', player), player)
|
set_rule(world.get_entrance('Dark Witch Water Drop', player), lambda state: True)
|
||||||
add_bunny_rule(world.get_entrance('Northeast Light World Water Drop', player), player)
|
set_rule(world.get_entrance('Dark Witch Northeast Water Drop', player), lambda state: True)
|
||||||
add_bunny_rule(world.get_entrance('Northeast Dark World Water Drop', player), player)
|
set_rule(world.get_entrance('Catfish Approach Water Drop', player), lambda state: True)
|
||||||
add_bunny_rule(world.get_entrance('Southeast Dark World Water Drop', player), player)
|
set_rule(world.get_entrance('Dark C Whirlpool Water Entry', player), lambda state: True)
|
||||||
add_bunny_rule(world.get_entrance('Catfish Water Drop', player), player)
|
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)
|
||||||
|
|
||||||
|
|
||||||
def forbid_bomb_jump_requirements(world, player):
|
def forbid_bomb_jump_requirements(world, player):
|
||||||
@@ -1109,7 +1272,7 @@ def forbid_bomb_jump_requirements(world, player):
|
|||||||
for location in DMs_room_chests:
|
for location in DMs_room_chests:
|
||||||
add_rule(world.get_location(location, player), lambda state: state.has('Hookshot', player))
|
add_rule(world.get_location(location, player), lambda state: state.has('Hookshot', player))
|
||||||
set_rule(world.get_entrance('Paradox Cave Bomb Jump', player), lambda state: False)
|
set_rule(world.get_entrance('Paradox Cave Bomb Jump', player), lambda state: False)
|
||||||
set_rule(world.get_entrance('Ice Island To East Pier', player), lambda state: False)
|
set_rule(world.get_entrance('Ice Lake Iceberg Bomb Jump', player), lambda state: False)
|
||||||
|
|
||||||
|
|
||||||
# Light cones in standard depend on which world we actually are in, not which one the location would normally be
|
# Light cones in standard depend on which world we actually are in, not which one the location would normally be
|
||||||
@@ -1218,7 +1381,7 @@ def swordless_rules(world, 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_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
|
set_rule(world.get_entrance('Ganon Drop', player), lambda state: state.has('Hammer', player)) # need to damage ganon to get tiles to drop
|
||||||
|
|
||||||
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('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 (!)
|
||||||
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_entrance('Misery Mire', player), lambda state: state.has_misery_mire_medallion(player)) # sword not required to use medallion for opening in swordless (!)
|
||||||
|
|
||||||
if world.mode[player] != 'inverted':
|
if world.mode[player] != 'inverted':
|
||||||
@@ -1330,8 +1493,6 @@ def standard_rules(world, player):
|
|||||||
entrance = world.get_portal(portal_name, player).door.entrance
|
entrance = world.get_portal(portal_name, player).door.entrance
|
||||||
set_rule(entrance, lambda state: state.has('Zelda Delivered', player))
|
set_rule(entrance, lambda state: state.has('Zelda Delivered', player))
|
||||||
set_rule(world.get_entrance('Sanctuary Exit', player), lambda state: state.has('Zelda Delivered', player))
|
set_rule(world.get_entrance('Sanctuary Exit', player), lambda state: state.has('Zelda Delivered', player))
|
||||||
set_rule(world.get_entrance('Hyrule Castle Ledge Drop', 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))
|
|
||||||
# zelda should be saved before agahnim is in play
|
# zelda should be saved before agahnim is in play
|
||||||
add_rule(world.get_location('Agahnim 1', player), lambda state: state.has('Zelda Delivered', player))
|
add_rule(world.get_location('Agahnim 1', player), lambda state: state.has('Zelda Delivered', player))
|
||||||
|
|
||||||
@@ -1381,24 +1542,8 @@ def standard_rules(world, player):
|
|||||||
set_rule(world.get_location('Zelda Drop Off', player),
|
set_rule(world.get_location('Zelda Drop Off', player),
|
||||||
lambda state: state.has('Zelda Herself', player) and check_rule_list(state, rule_list))
|
lambda state: state.has('Zelda Herself', player) and check_rule_list(state, rule_list))
|
||||||
|
|
||||||
for location in ['Mushroom', 'Bottle Merchant', 'Flute Spot', 'Sunken Treasure', 'Purple Chest']:
|
for entrance in ['Links House SC', 'Links House ES', 'Central Bonk Rocks SW', 'Hyrule Castle WN', 'Hyrule Castle ES',
|
||||||
add_rule(world.get_location(location, player), lambda state: state.has('Zelda Delivered', player))
|
'Bonk Fairy (Light)', 'Hyrule Castle Main Gate (South)', 'Hyrule Castle Main Gate (North)', 'Hyrule Castle Ledge Drop']:
|
||||||
|
|
||||||
for entrance in ['Blinds Hideout', 'Kings Grave Rocks (Outer)', 'Dam', 'Tavern North', 'Chicken House',
|
|
||||||
'Aginahs Cave', 'Sahasrahlas Hut', 'Kakariko Well Drop', 'Kakariko Well Cave', 'Blacksmiths Hut',
|
|
||||||
'Bat Cave Ledge Peg', 'Bat Cave Cave', 'Sick Kids House', 'Wooden Bridge Bush (South)',
|
|
||||||
'Lost Woods Hideout Drop', 'Lost Woods Hideout Stump', 'Lumberjack Tree Tree',
|
|
||||||
'Lumberjack Tree Cave', 'Mini Moldorm Cave', 'Ice Rod Cave', 'Light World Water Drop',
|
|
||||||
'Bonk Rock Cave', 'Library', 'Potion Shop', 'Two Brothers House (East)', 'Desert Statue Move',
|
|
||||||
'Eastern Palace', 'Master Sword Meadow', 'Sanctuary', 'Sanctuary Grave',
|
|
||||||
'Death Mountain Entrance Rock', 'Light World Water Drop', 'East Hyrule Teleporter',
|
|
||||||
'South Hyrule Teleporter', 'Kakariko Teleporter', 'Elder House (East)', 'Elder House (West)',
|
|
||||||
'North Fairy Cave', 'North Fairy Cave Drop', 'Lost Woods Gamble', 'Snitch Lady (East)',
|
|
||||||
'Snitch Lady (West)', 'Tavern (Front)', 'Kakariko Yard Bush (South)', 'Kakariko Southwest Bush (North)',
|
|
||||||
'Kakariko Shop', 'Long Fairy Cave', 'Good Bee Cave', '20 Rupee Cave', 'Lake Hylia Shop',
|
|
||||||
'Waterfall of Wishing', 'Hyrule Castle Main Gate', '50 Rupee Cave', 'Bonk Fairy (Light)',
|
|
||||||
'Fortune Teller (Light)', 'Lake Hylia Fairy', 'Light Hype Fairy', 'Desert Fairy',
|
|
||||||
'Lumberjack House', 'Lake Hylia Fortune Teller', 'Kakariko Gamble Game', 'Castle Gate Teleporter']:
|
|
||||||
add_rule(world.get_entrance(entrance, player), lambda state: state.has('Zelda Delivered', player))
|
add_rule(world.get_entrance(entrance, player), lambda state: state.has('Zelda Delivered', player))
|
||||||
|
|
||||||
# don't allow bombs to get past here before zelda is rescued
|
# don't allow bombs to get past here before zelda is rescued
|
||||||
@@ -1483,8 +1628,8 @@ def set_big_bomb_rules(world, player):
|
|||||||
'Dark Lake Hylia Ledge Spike Cave',
|
'Dark Lake Hylia Ledge Spike Cave',
|
||||||
'Dark Lake Hylia Ledge Hint',
|
'Dark Lake Hylia Ledge Hint',
|
||||||
'Mire Shed',
|
'Mire Shed',
|
||||||
'Dark Desert Hint',
|
'Mire Hint',
|
||||||
'Dark Desert Fairy',
|
'Mire Fairy',
|
||||||
'Misery Mire']
|
'Misery Mire']
|
||||||
Northern_DW_entrances = ['Brewery',
|
Northern_DW_entrances = ['Brewery',
|
||||||
'C-Shaped House',
|
'C-Shaped House',
|
||||||
@@ -1549,7 +1694,7 @@ def set_big_bomb_rules(world, player):
|
|||||||
'Desert Palace Entrance (South)',
|
'Desert Palace Entrance (South)',
|
||||||
'Checkerboard Cave']
|
'Checkerboard Cave']
|
||||||
|
|
||||||
set_rule(world.get_entrance('Pyramid Fairy', player), lambda state: state.can_reach('East Dark World', 'Region', player) and state.can_reach('Big Bomb Shop', 'Region', player) and state.has('Crystal 5', player) and state.has('Crystal 6', player))
|
set_rule(world.get_entrance('Pyramid Fairy', player), lambda state: state.can_reach('Pyramid Area', 'Region', player) and state.can_reach('Big Bomb Shop', 'Region', player) and state.has('Crystal 5', player) and state.has('Crystal 6', player))
|
||||||
|
|
||||||
# crossing peg bridge starting from the southern dark world
|
# crossing peg bridge starting from the southern dark world
|
||||||
def cross_peg_bridge(state):
|
def cross_peg_bridge(state):
|
||||||
@@ -1630,7 +1775,7 @@ def set_big_bomb_rules(world, player):
|
|||||||
# 1. Have mire access, Mirror to reach locations, return via mirror spot, move to center of desert, mirror again and then basic routes
|
# 1. Have mire access, Mirror to reach locations, return via mirror spot, move to center of desert, mirror again and then basic routes
|
||||||
# 2. flute then basic routes
|
# 2. flute then basic routes
|
||||||
# -> (Mire access and M) or Flute) and BR
|
# -> (Mire access and M) or Flute) and BR
|
||||||
add_rule(world.get_entrance('Pyramid Fairy', player), lambda state: ((state.can_reach('Dark Desert', 'Region', player) and state.has_Mirror(player)) or state.can_flute(player)) and basic_routes(state))
|
add_rule(world.get_entrance('Pyramid Fairy', player), lambda state: ((state.can_reach('Mire Area', 'Region', player) and state.has_Mirror(player)) or state.can_flute(player)) and basic_routes(state))
|
||||||
elif bombshop_entrance.name == 'Old Man Cave (West)':
|
elif bombshop_entrance.name == 'Old Man Cave (West)':
|
||||||
# 1. Lift rock then basic_routes
|
# 1. Lift rock then basic_routes
|
||||||
# 2. flute then basic_routes
|
# 2. flute then basic_routes
|
||||||
@@ -1640,12 +1785,12 @@ def set_big_bomb_rules(world, player):
|
|||||||
# 1. flute then basic routes
|
# 1. flute then basic routes
|
||||||
# 2. (has west dark world access) use existing mirror spot (required Pearl), mirror again off ledge
|
# 2. (has west dark world access) use existing mirror spot (required Pearl), mirror again off ledge
|
||||||
# -> (Flute or (M and P and West Dark World access) and BR
|
# -> (Flute or (M and P and West Dark World access) and BR
|
||||||
add_rule(world.get_entrance('Pyramid Fairy', player), lambda state: (state.can_flute(player) or (state.can_reach('West Dark World', 'Region', player) and state.has_Pearl(player) and state.has_Mirror(player))) and basic_routes(state))
|
add_rule(world.get_entrance('Pyramid Fairy', player), lambda state: (state.can_flute(player) or (state.can_reach('Village of Outcasts Area', 'Region', player) and state.has_Pearl(player) and state.has_Mirror(player))) and basic_routes(state))
|
||||||
elif bombshop_entrance.name in Mirror_from_SDW_entrances:
|
elif bombshop_entrance.name in Mirror_from_SDW_entrances:
|
||||||
# 1. flute then basic routes
|
# 1. flute then basic routes
|
||||||
# 2. (has South dark world access) use existing mirror spot, mirror again off ledge
|
# 2. (has South dark world access) use existing mirror spot, mirror again off ledge
|
||||||
# -> (Flute or (M and South Dark World access) and BR
|
# -> (Flute or (M and South Dark World access) and BR
|
||||||
add_rule(world.get_entrance('Pyramid Fairy', player), lambda state: (state.can_flute(player) or (state.can_reach('South Dark World', 'Region', player) and state.has_Mirror(player))) and basic_routes(state))
|
add_rule(world.get_entrance('Pyramid Fairy', player), lambda state: (state.can_flute(player) or (state.can_reach('Big Bomb Shop Area', 'Region', player) and state.has_Mirror(player))) and basic_routes(state))
|
||||||
elif bombshop_entrance.name == 'Dark Potion Shop':
|
elif bombshop_entrance.name == 'Dark Potion Shop':
|
||||||
# 1. walk down by lifting rock: needs gloves and pearl`
|
# 1. walk down by lifting rock: needs gloves and pearl`
|
||||||
# 2. walk down by hammering peg: needs hammer and pearl
|
# 2. walk down by hammering peg: needs hammer and pearl
|
||||||
@@ -1772,8 +1917,8 @@ def set_inverted_big_bomb_rules(world, player):
|
|||||||
'Dark Lake Hylia Ledge Spike Cave',
|
'Dark Lake Hylia Ledge Spike Cave',
|
||||||
'Dark Lake Hylia Ledge Hint',
|
'Dark Lake Hylia Ledge Hint',
|
||||||
'Mire Shed',
|
'Mire Shed',
|
||||||
'Dark Desert Hint',
|
'Mire Hint',
|
||||||
'Dark Desert Fairy',
|
'Mire Fairy',
|
||||||
'Misery Mire',
|
'Misery Mire',
|
||||||
'Red Shield Shop']
|
'Red Shield Shop']
|
||||||
LW_bush_entrances = ['Bush Covered House',
|
LW_bush_entrances = ['Bush Covered House',
|
||||||
@@ -1784,7 +1929,7 @@ def set_inverted_big_bomb_rules(world, player):
|
|||||||
'Spectacle Rock Cave (Bottom)']
|
'Spectacle Rock Cave (Bottom)']
|
||||||
|
|
||||||
set_rule(world.get_entrance('Pyramid Fairy', player),
|
set_rule(world.get_entrance('Pyramid Fairy', player),
|
||||||
lambda state: state.can_reach('East Dark World', 'Region', player) and state.can_reach('Big Bomb Shop', 'Region', player) and state.has('Crystal 5', player) and state.has('Crystal 6', player))
|
lambda state: state.can_reach('Pyramid Area', 'Region', player) and state.can_reach('Big Bomb Shop', 'Region', player) and state.has('Crystal 5', player) and state.has('Crystal 6', player))
|
||||||
|
|
||||||
# Key for below abbreviations:
|
# Key for below abbreviations:
|
||||||
# P = pearl
|
# P = pearl
|
||||||
@@ -1804,25 +1949,25 @@ def set_inverted_big_bomb_rules(world, player):
|
|||||||
elif bombshop_entrance.name in Northern_DW_entrances:
|
elif bombshop_entrance.name in Northern_DW_entrances:
|
||||||
# You can just fly with the Flute, you can take a long walk with Mitts and Hammer,
|
# You can just fly with the Flute, you can take a long walk with Mitts and Hammer,
|
||||||
# or you can leave a Mirror portal nearby and then walk to the castle to Mirror again.
|
# or you can leave a Mirror portal nearby and then walk to the castle to Mirror again.
|
||||||
add_rule(world.get_entrance('Pyramid Fairy', player), lambda state: state.can_flute or (state.can_lift_heavy_rocks(player) and state.has('Hammer', player)) or (state.has_Mirror(player) and state.can_reach('Light World', 'Region', player)))
|
add_rule(world.get_entrance('Pyramid Fairy', player), lambda state: state.can_flute or (state.can_lift_heavy_rocks(player) and state.has('Hammer', player)) or (state.has_Mirror(player) and state.can_reach('Hyrule Castle Area', 'Region', player)))
|
||||||
elif bombshop_entrance.name in Southern_DW_entrances:
|
elif bombshop_entrance.name in Southern_DW_entrances:
|
||||||
# This is the same as north DW without the Mitts rock present.
|
# This is the same as north DW without the Mitts rock present.
|
||||||
add_rule(world.get_entrance('Pyramid Fairy', player), lambda state: state.has('Hammer', player) or state.can_flute(player) or (state.has_Mirror(player) and state.can_reach('Light World', 'Region', player)))
|
add_rule(world.get_entrance('Pyramid Fairy', player), lambda state: state.has('Hammer', player) or state.can_flute(player) or (state.has_Mirror(player) and state.can_reach('Hyrule Castle Area', 'Region', player)))
|
||||||
elif bombshop_entrance.name in Isolated_DW_entrances:
|
elif bombshop_entrance.name in Isolated_DW_entrances:
|
||||||
# There's just no way to escape these places with the bomb and no Flute.
|
# There's just no way to escape these places with the bomb and no Flute.
|
||||||
add_rule(world.get_entrance('Pyramid Fairy', player), lambda state: state.can_flute(player))
|
add_rule(world.get_entrance('Pyramid Fairy', player), lambda state: state.can_flute(player))
|
||||||
elif bombshop_entrance.name in LW_walkable_entrances:
|
elif bombshop_entrance.name in LW_walkable_entrances:
|
||||||
# You can fly with the flute, or leave a mirror portal and walk through the light world
|
# You can fly with the flute, or leave a mirror portal and walk through the light world
|
||||||
add_rule(world.get_entrance('Pyramid Fairy', player), lambda state: state.can_flute(player) or (state.has_Mirror(player) and state.can_reach('Light World', 'Region', player)))
|
add_rule(world.get_entrance('Pyramid Fairy', player), lambda state: state.can_flute(player) or (state.has_Mirror(player) and state.can_reach('Hyrule Castle Area', 'Region', player)))
|
||||||
elif bombshop_entrance.name in LW_bush_entrances:
|
elif bombshop_entrance.name in LW_bush_entrances:
|
||||||
# These entrances are behind bushes in LW so you need either Pearl or the tools to solve NDW bomb shop locations.
|
# These entrances are behind bushes in LW so you need either Pearl or the tools to solve NDW bomb shop locations.
|
||||||
add_rule(world.get_entrance('Pyramid Fairy', player), lambda state: state.has_Mirror(player) and (state.can_flute(player) or state.has_Pearl(player) or (state.can_lift_heavy_rocks(player) and state.has('Hammer', player))))
|
add_rule(world.get_entrance('Pyramid Fairy', player), lambda state: state.has_Mirror(player) and (state.can_flute(player) or state.has_Pearl(player) or (state.can_lift_heavy_rocks(player) and state.has('Hammer', player))))
|
||||||
elif bombshop_entrance.name == 'Dark World Shop':
|
elif bombshop_entrance.name == 'Dark World Shop':
|
||||||
# This is mostly the same as NDW but the Mirror path requires the Pearl, or using the Hammer
|
# This is mostly the same as NDW but the Mirror path requires the Pearl, or using the Hammer
|
||||||
add_rule(world.get_entrance('Pyramid Fairy', player), lambda state: state.can_flute or (state.can_lift_heavy_rocks(player) and state.has('Hammer', player)) or (state.has_Mirror(player) and state.can_reach('Light World', 'Region', player) and (state.has_Pearl(player) or state.has('Hammer', player))))
|
add_rule(world.get_entrance('Pyramid Fairy', player), lambda state: state.can_flute or (state.can_lift_heavy_rocks(player) and state.has('Hammer', player)) or (state.has_Mirror(player) and state.can_reach('Hyrule Castle Area', 'Region', player) and (state.has_Pearl(player) or state.has('Hammer', player))))
|
||||||
elif bombshop_entrance.name == 'Bumper Cave (Bottom)':
|
elif bombshop_entrance.name == 'Bumper Cave (Bottom)':
|
||||||
# This is mostly the same as NDW but the Mirror path requires being able to lift a rock.
|
# This is mostly the same as NDW but the Mirror path requires being able to lift a rock.
|
||||||
add_rule(world.get_entrance('Pyramid Fairy', player), lambda state: state.can_flute or (state.can_lift_heavy_rocks(player) and state.has('Hammer', player)) or (state.has_Mirror(player) and state.can_lift_rocks(player) and state.can_reach('Light World', 'Region', player)))
|
add_rule(world.get_entrance('Pyramid Fairy', player), lambda state: state.can_flute or (state.can_lift_heavy_rocks(player) and state.has('Hammer', player)) or (state.has_Mirror(player) and state.can_lift_rocks(player) and state.can_reach('Hyrule Castle Area', 'Region', player)))
|
||||||
elif bombshop_entrance.name == 'Old Man Cave (West)':
|
elif bombshop_entrance.name == 'Old Man Cave (West)':
|
||||||
# The three paths back are Mirror and DW walk, Mirror and Flute, or LW walk and then Mirror.
|
# The three paths back are Mirror and DW walk, Mirror and Flute, or LW walk and then Mirror.
|
||||||
add_rule(world.get_entrance('Pyramid Fairy', player), lambda state: state.has_Mirror(player) and ((state.can_lift_heavy_rocks(player) and state.has('Hammer', player)) or (state.can_lift_rocks(player) and state.has_Pearl(player)) or state.can_flute(player)))
|
add_rule(world.get_entrance('Pyramid Fairy', player), lambda state: state.has_Mirror(player) and ((state.can_lift_heavy_rocks(player) and state.has('Hammer', player)) or (state.can_lift_rocks(player) and state.has_Pearl(player)) or state.can_flute(player)))
|
||||||
@@ -2021,7 +2166,7 @@ def set_bunny_rules(world, player, inverted):
|
|||||||
|
|
||||||
for ent_name in bunny_impassible_doors:
|
for ent_name in bunny_impassible_doors:
|
||||||
bunny_exit = world.get_entrance(ent_name, player)
|
bunny_exit = world.get_entrance(ent_name, player)
|
||||||
if is_bunny(bunny_exit.parent_region):
|
if bunny_exit.connected_region and is_bunny(bunny_exit.parent_region):
|
||||||
add_rule(bunny_exit, get_rule_to_add(bunny_exit.parent_region))
|
add_rule(bunny_exit, get_rule_to_add(bunny_exit.parent_region))
|
||||||
|
|
||||||
for ent_name in bunny_impassible_if_trapped:
|
for ent_name in bunny_impassible_if_trapped:
|
||||||
|
|||||||
@@ -743,6 +743,27 @@ def load_cached_yaml(path_list):
|
|||||||
return data
|
return data
|
||||||
|
|
||||||
|
|
||||||
|
class bidict(dict):
|
||||||
|
def __init__(self, *args, **kwargs):
|
||||||
|
super(bidict, self).__init__(*args, **kwargs)
|
||||||
|
self.inverse = {}
|
||||||
|
for key, value in self.items():
|
||||||
|
self.inverse.setdefault(value,[]).append(key)
|
||||||
|
|
||||||
|
def __setitem__(self, key, value):
|
||||||
|
if key in self:
|
||||||
|
self.inverse[self[key]].remove(key)
|
||||||
|
super(bidict, self).__setitem__(key, value)
|
||||||
|
self.inverse.setdefault(value,[]).append(key)
|
||||||
|
|
||||||
|
def __delitem__(self, key):
|
||||||
|
value = self[key]
|
||||||
|
self.inverse.setdefault(value,[]).remove(key)
|
||||||
|
if value in self.inverse and not self.inverse[value]:
|
||||||
|
del self.inverse[value]
|
||||||
|
super(bidict, self).__delitem__(key)
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
# make_new_base2current()
|
# make_new_base2current()
|
||||||
# read_entrance_data(old_rom=sys.argv[1])
|
# read_entrance_data(old_rom=sys.argv[1])
|
||||||
|
|||||||
@@ -75,7 +75,7 @@ def create_district_helper(world, player):
|
|||||||
'Fortune Teller (Dark)', 'Dark World Shop', 'Dark Lumberjack Shop',
|
'Fortune Teller (Dark)', 'Dark World Shop', 'Dark Lumberjack Shop',
|
||||||
'Skull Woods First Section Hole (West)', 'Skull Woods First Section Hole (East)',
|
'Skull Woods First Section Hole (West)', 'Skull Woods First Section Hole (East)',
|
||||||
'Skull Woods First Section Hole (North)', 'Skull Woods Second Section Hole']
|
'Skull Woods First Section Hole (North)', 'Skull Woods Second Section Hole']
|
||||||
mire_entrances = ['Misery Mire', 'Mire Shed', 'Dark Desert Hint', 'Dark Desert Fairy']
|
mire_entrances = ['Misery Mire', 'Mire Shed', 'Mire Hint', 'Mire Fairy']
|
||||||
ddm_entrances = ['Turtle Rock', 'Dark Death Mountain Ledge (West)', 'Dark Death Mountain Ledge (East)',
|
ddm_entrances = ['Turtle Rock', 'Dark Death Mountain Ledge (West)', 'Dark Death Mountain Ledge (East)',
|
||||||
'Turtle Rock Isolated Ledge Entrance', 'Superbunny Cave (Top)', 'Superbunny Cave (Bottom)',
|
'Turtle Rock Isolated Ledge Entrance', 'Superbunny Cave (Top)', 'Superbunny Cave (Bottom)',
|
||||||
'Hookshot Cave', 'Hookshot Cave Back Entrance', 'Ganons Tower', 'Spike Cave',
|
'Hookshot Cave', 'Hookshot Cave Back Entrance', 'Ganons Tower', 'Spike Cave',
|
||||||
@@ -150,10 +150,10 @@ def find_reachable_locations(state, player):
|
|||||||
return check_set
|
return check_set
|
||||||
|
|
||||||
|
|
||||||
inaccessible_regions_std = {'Desert Palace Mouth', 'Bumper Cave Ledge', 'Skull Woods Forest (West)',
|
inaccessible_regions_std = {'Desert Mouth', 'Bumper Cave Ledge', 'Skull Woods Forest (West)',
|
||||||
'Dark Death Mountain Ledge', 'Dark Death Mountain Isolated Ledge',
|
'Dark Death Mountain Ledge', 'Dark Death Mountain Isolated Ledge',
|
||||||
'Dark Death Mountain Floating Island'}
|
'Dark Death Mountain Floating Island'}
|
||||||
|
|
||||||
|
|
||||||
inaccessible_regions_inv = {'Desert Palace Mouth', 'Maze Race Ledge', 'Desert Ledge',
|
inaccessible_regions_inv = {'Desert Mouth', 'Maze Race Ledge', 'Desert Ledge',
|
||||||
'Desert Palace Entrance (North) Spot', 'Hyrule Castle Ledge', 'Death Mountain Return Ledge'}
|
'Desert Ledge Keep', 'Hyrule Castle Ledge', 'Mountain Pass Ledge'}
|
||||||
|
|||||||
@@ -77,12 +77,6 @@ def link_entrances_new(world, player):
|
|||||||
# setup mandatory connections
|
# setup mandatory connections
|
||||||
for exit_name, region_name in mandatory_connections:
|
for exit_name, region_name in mandatory_connections:
|
||||||
connect_simple(world, exit_name, region_name, player)
|
connect_simple(world, exit_name, region_name, player)
|
||||||
if not avail_pool.inverted:
|
|
||||||
for exit_name, region_name in open_mandatory_connections:
|
|
||||||
connect_simple(world, exit_name, region_name, player)
|
|
||||||
else:
|
|
||||||
for exit_name, region_name in inverted_mandatory_connections:
|
|
||||||
connect_simple(world, exit_name, region_name, player)
|
|
||||||
|
|
||||||
connect_custom(avail_pool, world, player)
|
connect_custom(avail_pool, world, player)
|
||||||
|
|
||||||
@@ -1435,7 +1429,7 @@ modes = {
|
|||||||
'fixed_non_items': {
|
'fixed_non_items': {
|
||||||
'special': 'vanilla',
|
'special': 'vanilla',
|
||||||
'condition': '',
|
'condition': '',
|
||||||
'entrances': ['Dark Death Mountain Fairy', 'Dark Desert Fairy', 'Archery Game',
|
'entrances': ['Dark Death Mountain Fairy', 'Mire Fairy', 'Archery Game',
|
||||||
'Fortune Teller (Dark)', 'Dark Sanctuary Hint', 'Bonk Fairy (Dark)',
|
'Fortune Teller (Dark)', 'Dark Sanctuary Hint', 'Bonk Fairy (Dark)',
|
||||||
'Dark Lake Hylia Ledge Hint', 'Dark Lake Hylia Ledge Fairy', 'Dark Lake Hylia Fairy',
|
'Dark Lake Hylia Ledge Hint', 'Dark Lake Hylia Ledge Fairy', 'Dark Lake Hylia Fairy',
|
||||||
'Dark Lake Hylia Shop', 'East Dark World Hint', 'Kakariko Gamble Game', 'Good Bee Cave',
|
'Dark Lake Hylia Shop', 'East Dark World Hint', 'Kakariko Gamble Game', 'Good Bee Cave',
|
||||||
@@ -1456,7 +1450,7 @@ modes = {
|
|||||||
'entrances': ['Lumberjack House', 'Snitch Lady (West)', 'Snitch Lady (East)', 'Tavern (Front)',
|
'entrances': ['Lumberjack House', 'Snitch Lady (West)', 'Snitch Lady (East)', 'Tavern (Front)',
|
||||||
'Light World Bomb Hut', '20 Rupee Cave', '50 Rupee Cave', 'Hookshot Fairy',
|
'Light World Bomb Hut', '20 Rupee Cave', '50 Rupee Cave', 'Hookshot Fairy',
|
||||||
'Palace of Darkness Hint', 'Dark Lake Hylia Ledge Spike Cave',
|
'Palace of Darkness Hint', 'Dark Lake Hylia Ledge Spike Cave',
|
||||||
'Dark Desert Hint']
|
'Mire Hint']
|
||||||
|
|
||||||
},
|
},
|
||||||
'item_caves': { # shuffles shops/pottery if they weren't fixed in the last steps
|
'item_caves': { # shuffles shops/pottery if they weren't fixed in the last steps
|
||||||
@@ -1471,7 +1465,7 @@ modes = {
|
|||||||
'Lumberjack House', 'Snitch Lady (West)', 'Snitch Lady (East)', 'Tavern (Front)',
|
'Lumberjack House', 'Snitch Lady (West)', 'Snitch Lady (East)', 'Tavern (Front)',
|
||||||
'Light World Bomb Hut', '20 Rupee Cave', '50 Rupee Cave', 'Hookshot Fairy',
|
'Light World Bomb Hut', '20 Rupee Cave', '50 Rupee Cave', 'Hookshot Fairy',
|
||||||
'Palace of Darkness Hint', 'Dark Lake Hylia Ledge Spike Cave',
|
'Palace of Darkness Hint', 'Dark Lake Hylia Ledge Spike Cave',
|
||||||
'Dark Desert Hint',
|
'Mire Hint',
|
||||||
'Links House', 'Tavern North']
|
'Links House', 'Tavern North']
|
||||||
},
|
},
|
||||||
'old_man_cave': { # have to do old man cave first so lw dungeon don't use up everything
|
'old_man_cave': { # have to do old man cave first so lw dungeon don't use up everything
|
||||||
@@ -1511,7 +1505,7 @@ modes = {
|
|||||||
'fixed_non_items': {
|
'fixed_non_items': {
|
||||||
'special': 'vanilla',
|
'special': 'vanilla',
|
||||||
'condition': '',
|
'condition': '',
|
||||||
'entrances': ['Dark Death Mountain Fairy', 'Dark Desert Fairy', 'Archery Game',
|
'entrances': ['Dark Death Mountain Fairy', 'Mire Fairy', 'Archery Game',
|
||||||
'Fortune Teller (Dark)', 'Dark Sanctuary Hint', 'Bonk Fairy (Dark)',
|
'Fortune Teller (Dark)', 'Dark Sanctuary Hint', 'Bonk Fairy (Dark)',
|
||||||
'Dark Lake Hylia Ledge Hint', 'Dark Lake Hylia Ledge Fairy', 'Dark Lake Hylia Fairy',
|
'Dark Lake Hylia Ledge Hint', 'Dark Lake Hylia Ledge Fairy', 'Dark Lake Hylia Fairy',
|
||||||
'Dark Lake Hylia Shop', 'East Dark World Hint', 'Kakariko Gamble Game', 'Good Bee Cave',
|
'Dark Lake Hylia Shop', 'East Dark World Hint', 'Kakariko Gamble Game', 'Good Bee Cave',
|
||||||
@@ -1532,7 +1526,7 @@ modes = {
|
|||||||
'entrances': ['Lumberjack House', 'Snitch Lady (West)', 'Snitch Lady (East)', 'Tavern (Front)',
|
'entrances': ['Lumberjack House', 'Snitch Lady (West)', 'Snitch Lady (East)', 'Tavern (Front)',
|
||||||
'Light World Bomb Hut', '20 Rupee Cave', '50 Rupee Cave', 'Hookshot Fairy',
|
'Light World Bomb Hut', '20 Rupee Cave', '50 Rupee Cave', 'Hookshot Fairy',
|
||||||
'Palace of Darkness Hint', 'Dark Lake Hylia Ledge Spike Cave',
|
'Palace of Darkness Hint', 'Dark Lake Hylia Ledge Spike Cave',
|
||||||
'Dark Desert Hint']
|
'Mire Hint']
|
||||||
|
|
||||||
},
|
},
|
||||||
'item_caves': { # shuffles shops/pottery if they weren't fixed in the last steps
|
'item_caves': { # shuffles shops/pottery if they weren't fixed in the last steps
|
||||||
@@ -1547,7 +1541,7 @@ modes = {
|
|||||||
'Lumberjack House', 'Snitch Lady (West)', 'Snitch Lady (East)', 'Tavern (Front)',
|
'Lumberjack House', 'Snitch Lady (West)', 'Snitch Lady (East)', 'Tavern (Front)',
|
||||||
'Light World Bomb Hut', '20 Rupee Cave', '50 Rupee Cave', 'Hookshot Fairy',
|
'Light World Bomb Hut', '20 Rupee Cave', '50 Rupee Cave', 'Hookshot Fairy',
|
||||||
'Palace of Darkness Hint', 'Dark Lake Hylia Ledge Spike Cave',
|
'Palace of Darkness Hint', 'Dark Lake Hylia Ledge Spike Cave',
|
||||||
'Dark Desert Hint',
|
'Mire Hint',
|
||||||
'Links House', 'Tavern North'] # inverted links house gets substituted
|
'Links House', 'Tavern North'] # inverted links house gets substituted
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1836,7 +1830,7 @@ entrance_map = {
|
|||||||
single_entrance_map = {
|
single_entrance_map = {
|
||||||
'Mimic Cave': 'Mimic Cave', 'Dark Death Mountain Fairy': 'Dark Death Mountain Healer Fairy',
|
'Mimic Cave': 'Mimic Cave', 'Dark Death Mountain Fairy': 'Dark Death Mountain Healer Fairy',
|
||||||
'Dark Death Mountain Shop': 'Dark Death Mountain Shop', 'Spike Cave': 'Spike Cave',
|
'Dark Death Mountain Shop': 'Dark Death Mountain Shop', 'Spike Cave': 'Spike Cave',
|
||||||
'Dark Desert Fairy': 'Dark Desert Healer Fairy', 'Dark Desert Hint': 'Dark Desert Hint', 'Mire Shed': 'Mire Shed',
|
'Mire Fairy': 'Mire Healer Fairy', 'Mire Hint': 'Mire Hint', 'Mire Shed': 'Mire Shed',
|
||||||
'Archery Game': 'Archery Game', 'Dark Potion Shop': 'Dark Potion Shop',
|
'Archery Game': 'Archery Game', 'Dark Potion Shop': 'Dark Potion Shop',
|
||||||
'Dark Lumberjack Shop': 'Dark Lumberjack Shop', 'Dark World Shop': 'Village of Outcasts Shop',
|
'Dark Lumberjack Shop': 'Dark Lumberjack Shop', 'Dark World Shop': 'Village of Outcasts Shop',
|
||||||
'Fortune Teller (Dark)': 'Fortune Teller (Dark)', 'Dark Sanctuary Hint': 'Dark Sanctuary Hint',
|
'Fortune Teller (Dark)': 'Fortune Teller (Dark)', 'Dark Sanctuary Hint': 'Dark Sanctuary Hint',
|
||||||
@@ -1876,12 +1870,12 @@ default_dw = {
|
|||||||
'Turtle Rock Ledge Exit (East)', 'Turtle Rock Isolated Ledge Exit', 'Bumper Cave Exit (Top)',
|
'Turtle Rock Ledge Exit (East)', 'Turtle Rock Isolated Ledge Exit', 'Bumper Cave Exit (Top)',
|
||||||
'Bumper Cave Exit (Bottom)', 'Superbunny Cave Exit (Top)', 'Superbunny Cave Exit (Bottom)',
|
'Bumper Cave Exit (Bottom)', 'Superbunny Cave Exit (Top)', 'Superbunny Cave Exit (Bottom)',
|
||||||
'Hookshot Cave Front Exit', 'Hookshot Cave Back Exit', 'Ganons Tower Exit', 'Pyramid Exit', 'Bonk Fairy (Dark)',
|
'Hookshot Cave Front Exit', 'Hookshot Cave Back Exit', 'Ganons Tower Exit', 'Pyramid Exit', 'Bonk Fairy (Dark)',
|
||||||
'Dark Lake Hylia Healer Fairy', 'Dark Lake Hylia Ledge Healer Fairy', 'Dark Desert Healer Fairy',
|
'Dark Lake Hylia Healer Fairy', 'Dark Lake Hylia Ledge Healer Fairy', 'Mire Healer Fairy',
|
||||||
'Dark Death Mountain Healer Fairy', 'Dark Death Mountain Shop', 'Pyramid Fairy', 'East Dark World Hint',
|
'Dark Death Mountain Healer Fairy', 'Dark Death Mountain Shop', 'Pyramid Fairy', 'East Dark World Hint',
|
||||||
'Palace of Darkness Hint', 'Village of Outcasts Shop', 'Dark Lake Hylia Shop',
|
'Palace of Darkness Hint', 'Village of Outcasts Shop', 'Dark Lake Hylia Shop',
|
||||||
'Dark Lumberjack Shop', 'Dark Potion Shop', 'Dark Lake Hylia Ledge Spike Cave',
|
'Dark Lumberjack Shop', 'Dark Potion Shop', 'Dark Lake Hylia Ledge Spike Cave',
|
||||||
'Dark Lake Hylia Ledge Hint', 'Hype Cave', 'Brewery', 'C-Shaped House', 'Chest Game', 'Hammer Peg Cave',
|
'Dark Lake Hylia Ledge Hint', 'Hype Cave', 'Brewery', 'C-Shaped House', 'Chest Game', 'Hammer Peg Cave',
|
||||||
'Red Shield Shop', 'Dark Sanctuary Hint', 'Fortune Teller (Dark)', 'Archery Game', 'Mire Shed', 'Dark Desert Hint',
|
'Red Shield Shop', 'Dark Sanctuary Hint', 'Fortune Teller (Dark)', 'Archery Game', 'Mire Shed', 'Mire Hint',
|
||||||
'Spike Cave', 'Skull Back Drop', 'Skull Left Drop', 'Skull Pinball', 'Skull Pot Circle', 'Pyramid'
|
'Spike Cave', 'Skull Back Drop', 'Skull Left Drop', 'Skull Pinball', 'Skull Pot Circle', 'Pyramid'
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1934,10 +1928,10 @@ DW_Entrances = ['Bumper Cave (Bottom)', 'Superbunny Cave (Top)', 'Superbunny Ca
|
|||||||
'Turtle Rock Isolated Ledge Entrance', 'Bumper Cave (Top)', 'Hookshot Cave Back Entrance',
|
'Turtle Rock Isolated Ledge Entrance', 'Bumper Cave (Top)', 'Hookshot Cave Back Entrance',
|
||||||
'Bonk Fairy (Dark)', 'Dark Sanctuary Hint', 'Dark Lake Hylia Fairy', 'C-Shaped House', 'Big Bomb Shop',
|
'Bonk Fairy (Dark)', 'Dark Sanctuary Hint', 'Dark Lake Hylia Fairy', 'C-Shaped House', 'Big Bomb Shop',
|
||||||
'Dark Death Mountain Fairy', 'Dark Lake Hylia Shop', 'Dark World Shop', 'Red Shield Shop', 'Mire Shed',
|
'Dark Death Mountain Fairy', 'Dark Lake Hylia Shop', 'Dark World Shop', 'Red Shield Shop', 'Mire Shed',
|
||||||
'East Dark World Hint', 'Dark Desert Hint', 'Spike Cave', 'Palace of Darkness Hint',
|
'East Dark World Hint', 'Mire Hint', 'Spike Cave', 'Palace of Darkness Hint',
|
||||||
'Dark Lake Hylia Ledge Spike Cave', 'Dark Death Mountain Shop', 'Dark Potion Shop',
|
'Dark Lake Hylia Ledge Spike Cave', 'Dark Death Mountain Shop', 'Dark Potion Shop',
|
||||||
'Pyramid Fairy', 'Archery Game', 'Dark Lumberjack Shop', 'Hype Cave', 'Brewery',
|
'Pyramid Fairy', 'Archery Game', 'Dark Lumberjack Shop', 'Hype Cave', 'Brewery',
|
||||||
'Dark Lake Hylia Ledge Hint', 'Chest Game', 'Dark Desert Fairy', 'Dark Lake Hylia Ledge Fairy',
|
'Dark Lake Hylia Ledge Hint', 'Chest Game', 'Mire Fairy', 'Dark Lake Hylia Ledge Fairy',
|
||||||
'Fortune Teller (Dark)', 'Hammer Peg Cave', 'Pyramid Entrance',
|
'Fortune Teller (Dark)', 'Hammer Peg Cave', 'Pyramid Entrance',
|
||||||
'Skull Woods First Section Door', 'Skull Woods Second Section Door (East)',
|
'Skull Woods First Section Door', 'Skull Woods Second Section Door (East)',
|
||||||
'Skull Woods Second Section Door (West)', 'Ganons Tower']
|
'Skull Woods Second Section Door (West)', 'Ganons Tower']
|
||||||
@@ -2071,8 +2065,8 @@ Bomb_Shop_Options = [
|
|||||||
'Dark Lake Hylia Fairy', 'Dark Lake Hylia Ledge Fairy', 'Dark Lake Hylia Ledge Spike Cave',
|
'Dark Lake Hylia Fairy', 'Dark Lake Hylia Ledge Fairy', 'Dark Lake Hylia Ledge Spike Cave',
|
||||||
'Dark Lake Hylia Ledge Hint', 'Hype Cave', 'Bonk Fairy (Dark)', 'Brewery', 'C-Shaped House', 'Chest Game',
|
'Dark Lake Hylia Ledge Hint', 'Hype Cave', 'Bonk Fairy (Dark)', 'Brewery', 'C-Shaped House', 'Chest Game',
|
||||||
'Hammer Peg Cave', 'Red Shield Shop', 'Dark Sanctuary Hint', 'Fortune Teller (Dark)', 'Dark World Shop',
|
'Hammer Peg Cave', 'Red Shield Shop', 'Dark Sanctuary Hint', 'Fortune Teller (Dark)', 'Dark World Shop',
|
||||||
'Dark Lumberjack Shop', 'Dark Potion Shop', 'Archery Game', 'Mire Shed', 'Dark Desert Hint',
|
'Dark Lumberjack Shop', 'Dark Potion Shop', 'Archery Game', 'Mire Shed', 'Mire Hint',
|
||||||
'Dark Desert Fairy', 'Spike Cave', 'Dark Death Mountain Shop', 'Dark Death Mountain Fairy', 'Mimic Cave',
|
'Mire Fairy', 'Spike Cave', 'Dark Death Mountain Shop', 'Dark Death Mountain Fairy', 'Mimic Cave',
|
||||||
'Big Bomb Shop', 'Dark Lake Hylia Shop', 'Bumper Cave (Top)', 'Links House',
|
'Big Bomb Shop', 'Dark Lake Hylia Shop', 'Bumper Cave (Top)', 'Links House',
|
||||||
'Hyrule Castle Entrance (South)', 'Misery Mire', 'Thieves Town', 'Bumper Cave (Bottom)', 'Swamp Palace',
|
'Hyrule Castle Entrance (South)', 'Misery Mire', 'Thieves Town', 'Bumper Cave (Bottom)', 'Swamp Palace',
|
||||||
'Hyrule Castle Secret Entrance Stairs', 'Skull Woods First Section Door', 'Skull Woods Second Section Door (East)',
|
'Hyrule Castle Secret Entrance Stairs', 'Skull Woods First Section Door', 'Skull Woods Second Section Door (East)',
|
||||||
@@ -2093,8 +2087,8 @@ Inverted_Bomb_Shop_Options = [
|
|||||||
'Dark Lake Hylia Fairy', 'Dark Lake Hylia Ledge Fairy', 'Dark Lake Hylia Ledge Spike Cave',
|
'Dark Lake Hylia Fairy', 'Dark Lake Hylia Ledge Fairy', 'Dark Lake Hylia Ledge Spike Cave',
|
||||||
'Dark Lake Hylia Ledge Hint', 'Hype Cave', 'Bonk Fairy (Dark)', 'Brewery', 'C-Shaped House', 'Chest Game',
|
'Dark Lake Hylia Ledge Hint', 'Hype Cave', 'Bonk Fairy (Dark)', 'Brewery', 'C-Shaped House', 'Chest Game',
|
||||||
'Hammer Peg Cave', 'Red Shield Shop', 'Fortune Teller (Dark)', 'Dark World Shop',
|
'Hammer Peg Cave', 'Red Shield Shop', 'Fortune Teller (Dark)', 'Dark World Shop',
|
||||||
'Dark Lumberjack Shop', 'Dark Potion Shop', 'Archery Game', 'Mire Shed', 'Dark Desert Hint',
|
'Dark Lumberjack Shop', 'Dark Potion Shop', 'Archery Game', 'Mire Shed', 'Mire Hint',
|
||||||
'Dark Desert Fairy', 'Spike Cave', 'Dark Death Mountain Shop', 'Dark Death Mountain Fairy', 'Mimic Cave',
|
'Mire Fairy', 'Spike Cave', 'Dark Death Mountain Shop', 'Dark Death Mountain Fairy', 'Mimic Cave',
|
||||||
'Dark Lake Hylia Shop', 'Bumper Cave (Top)',
|
'Dark Lake Hylia Shop', 'Bumper Cave (Top)',
|
||||||
'Hyrule Castle Entrance (South)', 'Misery Mire', 'Thieves Town', 'Bumper Cave (Bottom)', 'Swamp Palace',
|
'Hyrule Castle Entrance (South)', 'Misery Mire', 'Thieves Town', 'Bumper Cave (Bottom)', 'Swamp Palace',
|
||||||
'Hyrule Castle Secret Entrance Stairs', 'Skull Woods First Section Door', 'Skull Woods Second Section Door (East)',
|
'Hyrule Castle Secret Entrance Stairs', 'Skull Woods First Section Door', 'Skull Woods Second Section Door (East)',
|
||||||
@@ -2114,9 +2108,7 @@ Forbidden_Swap_Entrances = {'Old Man Cave (East)', 'Blacksmiths Hut', 'Big Bomb
|
|||||||
|
|
||||||
# these are connections that cannot be shuffled and always exist.
|
# these are connections that cannot be shuffled and always exist.
|
||||||
# They link together separate parts of the world we need to divide into regions
|
# They link together separate parts of the world we need to divide into regions
|
||||||
mandatory_connections = [('Links House S&Q', 'Links House'),
|
mandatory_connections = [# underworld
|
||||||
|
|
||||||
# underworld
|
|
||||||
('Lost Woods Hideout (top to bottom)', 'Lost Woods Hideout (bottom)'),
|
('Lost Woods Hideout (top to bottom)', 'Lost Woods Hideout (bottom)'),
|
||||||
('Lumberjack Tree (top to bottom)', 'Lumberjack Tree (bottom)'),
|
('Lumberjack Tree (top to bottom)', 'Lumberjack Tree (bottom)'),
|
||||||
('Death Mountain Return Cave E', 'Death Mountain Return Cave (right)'),
|
('Death Mountain Return Cave E', 'Death Mountain Return Cave (right)'),
|
||||||
@@ -2163,201 +2155,7 @@ mandatory_connections = [('Links House S&Q', 'Links House'),
|
|||||||
('Superbunny Cave Climb', 'Superbunny Cave (Top)'),
|
('Superbunny Cave Climb', 'Superbunny Cave (Top)'),
|
||||||
('Bumper Cave Bottom to Top', 'Bumper Cave (top)'),
|
('Bumper Cave Bottom to Top', 'Bumper Cave (top)'),
|
||||||
('Bumper Cave Top To Bottom', 'Bumper Cave (bottom)'),
|
('Bumper Cave Top To Bottom', 'Bumper Cave (bottom)'),
|
||||||
('Ganon Drop', 'Bottom of Pyramid'),
|
('Ganon Drop', 'Bottom of Pyramid')
|
||||||
|
|
||||||
# water entry
|
|
||||||
('Waterfall Fairy Access', 'Zora Waterfall Entryway'),
|
|
||||||
('Zora Waterfall Water Drop', 'Lake Hylia Water'),
|
|
||||||
('Light World Water Drop', 'Lake Hylia Water'),
|
|
||||||
('Potion Shop Water Drop', 'Lake Hylia Water'),
|
|
||||||
('Northeast Light World Water Drop', 'Lake Hylia Water'),
|
|
||||||
('Lake Hylia Central Island Water Drop', 'Lake Hylia Water'),
|
|
||||||
|
|
||||||
('West Dark World Water Drop', 'Dark Lake Hylia Water'),
|
|
||||||
('Northeast Dark World Water Drop', 'Dark Lake Hylia Water'),
|
|
||||||
('Catfish Water Drop', 'Dark Lake Hylia Water'),
|
|
||||||
('East Dark World Water Drop', 'Dark Lake Hylia Water'),
|
|
||||||
('South Dark World Water Drop', 'Dark Lake Hylia Water'),
|
|
||||||
('Southeast Dark World Water Drop', 'Dark Lake Hylia Water'),
|
|
||||||
('Ice Palace Leave Water Drop', 'Dark Lake Hylia Water'),
|
|
||||||
|
|
||||||
# water exit
|
|
||||||
('Light World Pier', 'Light World'), # there are several piers in-game, only one needs to be modeled
|
|
||||||
('Potion Shop Pier', 'Potion Shop Area'),
|
|
||||||
('Hobo Pier', 'Hobo Bridge'),
|
|
||||||
('Lake Hylia Central Island Pier', 'Lake Hylia Central Island'),
|
|
||||||
('Lake Hylia Whirlpool', 'Northeast Light World'),
|
|
||||||
|
|
||||||
('Northeast Dark World Pier', 'Northeast Dark World'),
|
|
||||||
('East Dark World Pier', 'East Dark World'),
|
|
||||||
('Southeast Dark World Pier', 'Southeast Dark World'),
|
|
||||||
|
|
||||||
# terrain
|
|
||||||
('Master Sword Meadow', 'Master Sword Meadow'),
|
|
||||||
('DM Hammer Bridge (West)', 'East Death Mountain (Top)'),
|
|
||||||
('DM Hammer Bridge (East)', 'West Death Mountain (Top)'),
|
|
||||||
('DM Broken Bridge (West)', 'East Death Mountain (Bottom)'),
|
|
||||||
('DM Broken Bridge (East)', 'West Death Mountain (Bottom)'),
|
|
||||||
('Fairy Ascension Rocks', 'Fairy Ascension Plateau'),
|
|
||||||
('Death Mountain Entrance Rock', 'Death Mountain Entrance'),
|
|
||||||
('Zoras Domain', 'Zoras Domain'),
|
|
||||||
('Kings Grave Rocks (Outer)', 'Kings Grave Area'),
|
|
||||||
('Kings Grave Rocks (Inner)', 'Light World'),
|
|
||||||
('Potion Shop Rock (South)', 'Northeast Light World'),
|
|
||||||
('Potion Shop Rock (North)', 'Potion Shop Area'),
|
|
||||||
('Kakariko Southwest Bush (North)', 'Bomb Hut Area'),
|
|
||||||
('Kakariko Southwest Bush (South)', 'Light World'),
|
|
||||||
('Kakariko Yard Bush (North)', 'Light World'),
|
|
||||||
('Kakariko Yard Bush (South)', 'Bush Covered Lawn'),
|
|
||||||
('Hyrule Castle Courtyard Bush (North)', 'Hyrule Castle Courtyard'),
|
|
||||||
('Hyrule Castle Courtyard Bush (South)', 'Hyrule Castle Secret Entrance Area'),
|
|
||||||
('Hyrule Castle Main Gate', 'Hyrule Castle Courtyard'),
|
|
||||||
('Hyrule Castle Main Gate (North)', 'Light World'),
|
|
||||||
('Wooden Bridge Bush (North)', 'Light World'),
|
|
||||||
('Wooden Bridge Bush (South)', 'Potion Shop Area'),
|
|
||||||
('Bat Cave Ledge Peg', 'Bat Cave Ledge'),
|
|
||||||
('Bat Cave Ledge Peg (East)', 'Light World'),
|
|
||||||
('Desert Statue Move', 'Desert Palace Stairs'),
|
|
||||||
('Desert Ledge Rocks (Outer)', 'Desert Palace Entrance (North) Spot'),
|
|
||||||
('Desert Ledge Rocks (Inner)', 'Desert Ledge'),
|
|
||||||
|
|
||||||
('Skull Woods Forest', 'Skull Woods Forest'),
|
|
||||||
('East Dark Death Mountain Bushes', 'East Dark Death Mountain (Bushes)'),
|
|
||||||
('Bumper Cave Entrance Rock', 'Bumper Cave Entrance'),
|
|
||||||
('Dark Witch Rock (North)', 'Northeast Dark World'),
|
|
||||||
('Dark Witch Rock (South)', 'Catfish Area'),
|
|
||||||
('Grassy Lawn Pegs (Top)', 'West Dark World'),
|
|
||||||
('Grassy Lawn Pegs (Bottom)', 'Dark Grassy Lawn'),
|
|
||||||
('West Dark World Gap', 'West Dark World'),
|
|
||||||
('Dark Graveyard Bush (South)', 'Dark Graveyard North'),
|
|
||||||
('Dark Graveyard Bush (North)', 'West Dark World'),
|
|
||||||
('Broken Bridge Pass (Top)', 'East Dark World'),
|
|
||||||
('Broken Bridge Pass (Bottom)', 'Northeast Dark World'),
|
|
||||||
('Peg Area Rocks (Left)', 'Hammer Peg Area'),
|
|
||||||
('Peg Area Rocks (Right)', 'West Dark World'),
|
|
||||||
('Village of Outcasts Heavy Rock', 'West Dark World'),
|
|
||||||
('Hammer Bridge Pegs (North)', 'South Dark World'),
|
|
||||||
('Hammer Bridge Pegs (South)', 'East Dark World'),
|
|
||||||
('Ice Island To East Pier', 'East Dark World'),
|
|
||||||
|
|
||||||
# ledge drops
|
|
||||||
('Spectacle Rock Drop', 'West Death Mountain (Top)'),
|
|
||||||
('Death Mountain Drop', 'West Death Mountain (Bottom)'),
|
|
||||||
('Spiral Cave Ledge Access', 'Spiral Cave Ledge'),
|
|
||||||
('Fairy Ascension Ledge Access', 'Fairy Ascension Ledge'),
|
|
||||||
('East Death Mountain Drop', 'East Death Mountain (Bottom)'),
|
|
||||||
('Spiral Cave Ledge Drop', 'East Death Mountain (Bottom)'),
|
|
||||||
('Fairy Ascension Ledge Drop', 'Fairy Ascension Plateau'),
|
|
||||||
('Fairy Ascension Drop', 'East Death Mountain (Bottom)'),
|
|
||||||
('Death Mountain Entrance Drop', 'Light World'),
|
|
||||||
('Death Mountain Return Ledge Drop', 'Light World'),
|
|
||||||
('Graveyard Ledge Drop', 'Light World'),
|
|
||||||
('Hyrule Castle Ledge Courtyard Drop', 'Hyrule Castle Courtyard'),
|
|
||||||
('Hyrule Castle Ledge Drop', 'Light World'),
|
|
||||||
('Maze Race Ledge Drop', 'Light World'),
|
|
||||||
('Desert Ledge Drop', 'Light World'),
|
|
||||||
('Desert Palace Mouth Drop', 'Light World'),
|
|
||||||
('Checkerboard Ledge Drop', 'Light World'),
|
|
||||||
('Desert Teleporter Drop', 'Light World'),
|
|
||||||
('Cave 45 Ledge Drop', 'Light World'),
|
|
||||||
|
|
||||||
('Dark Death Mountain Drop (West)', 'West Dark Death Mountain (Bottom)'),
|
|
||||||
('Dark Death Mountain Drop (East)', 'East Dark Death Mountain (Bottom)'),
|
|
||||||
('Floating Island Drop', 'Dark Death Mountain (Top)'),
|
|
||||||
('Turtle Rock Drop', 'Dark Death Mountain (Top)'),
|
|
||||||
('Bumper Cave Entrance Drop', 'West Dark World'),
|
|
||||||
('Bumper Cave Ledge Drop', 'West Dark World'),
|
|
||||||
('Pyramid Drop', 'East Dark World'),
|
|
||||||
('Village of Outcasts Drop', 'South Dark World'),
|
|
||||||
('Dark Desert Drop', 'Dark Desert')
|
|
||||||
]
|
|
||||||
|
|
||||||
open_mandatory_connections = [('Sanctuary S&Q', 'Sanctuary'),
|
|
||||||
('Old Man S&Q', 'Old Man House'),
|
|
||||||
('Other World S&Q', 'East Dark World'),
|
|
||||||
|
|
||||||
# flute
|
|
||||||
('Flute Spot 1', 'West Death Mountain (Bottom)'),
|
|
||||||
('Flute Spot 2', 'Potion Shop Area'),
|
|
||||||
('Flute Spot 3', 'Light World'),
|
|
||||||
('Flute Spot 4', 'Light World'),
|
|
||||||
('Flute Spot 5', 'Light World'),
|
|
||||||
('Flute Spot 6', 'Desert Teleporter Ledge'),
|
|
||||||
('Flute Spot 7', 'Light World'),
|
|
||||||
('Flute Spot 8', 'Light World'),
|
|
||||||
('LW Flute', 'Flute Sky'),
|
|
||||||
('NWLW Flute', 'Flute Sky'),
|
|
||||||
('ZLW Flute', 'Flute Sky'),
|
|
||||||
('DM Flute', 'Flute Sky'),
|
|
||||||
('EDM Flute', 'Flute Sky'),
|
|
||||||
|
|
||||||
# portals
|
|
||||||
('Death Mountain Teleporter', 'West Dark Death Mountain (Bottom)'),
|
|
||||||
('East Death Mountain Teleporter', 'East Dark Death Mountain (Bottom)'),
|
|
||||||
('Turtle Rock Teleporter', 'Turtle Rock (Top)'),
|
|
||||||
('Kakariko Teleporter', 'West Dark World'),
|
|
||||||
('Castle Gate Teleporter', 'East Dark World'),
|
|
||||||
('East Hyrule Teleporter', 'East Dark World'),
|
|
||||||
('South Hyrule Teleporter', 'South Dark World'),
|
|
||||||
('Desert Teleporter', 'Dark Desert'),
|
|
||||||
('Lake Hylia Teleporter', 'Dark Lake Hylia Central Island')
|
|
||||||
]
|
|
||||||
|
|
||||||
inverted_mandatory_connections = [('Sanctuary S&Q', 'Dark Sanctuary Hint'),
|
|
||||||
('Old Man S&Q', 'West Dark Death Mountain (Bottom)'),
|
|
||||||
('Other World S&Q', 'Hyrule Castle Ledge'),
|
|
||||||
|
|
||||||
# flute
|
|
||||||
('Flute Spot 1', 'West Dark Death Mountain (Bottom)'),
|
|
||||||
('Flute Spot 2', 'Northeast Dark World'),
|
|
||||||
('Flute Spot 3', 'West Dark World'),
|
|
||||||
('Flute Spot 4', 'South Dark World'),
|
|
||||||
('Flute Spot 5', 'East Dark World'),
|
|
||||||
('Flute Spot 6', 'Dark Desert Ledge'),
|
|
||||||
('Flute Spot 7', 'South Dark World'),
|
|
||||||
('Flute Spot 8', 'Southeast Dark World'),
|
|
||||||
('DDM Flute', 'Flute Sky'),
|
|
||||||
('NEDW Flute', 'Flute Sky'),
|
|
||||||
('WDW Flute', 'Flute Sky'),
|
|
||||||
('SDW Flute', 'Flute Sky'),
|
|
||||||
('EDW Flute', 'Flute Sky'),
|
|
||||||
('DD Flute', 'Flute Sky'),
|
|
||||||
('DLHL Flute', 'Flute Sky'),
|
|
||||||
('EDDM Flute', 'Flute Sky'),
|
|
||||||
('Dark Grassy Lawn Flute', 'Flute Sky'),
|
|
||||||
('Hammer Peg Area Flute', 'Flute Sky'),
|
|
||||||
|
|
||||||
# modified terrain
|
|
||||||
('Spectacle Rock Approach', 'Spectacle Rock'),
|
|
||||||
('Spectacle Rock Leave', 'West Death Mountain (Top)'),
|
|
||||||
('Floating Island Bridge (West)', 'East Death Mountain (Top)'),
|
|
||||||
('Floating Island Bridge (East)', 'Death Mountain Floating Island'),
|
|
||||||
('Graveyard Ladder (Top)', 'Light World'),
|
|
||||||
('Graveyard Ladder (Bottom)', 'Graveyard Ledge'),
|
|
||||||
('Mimic Cave Ledge Access', 'Mimic Cave Ledge'),
|
|
||||||
('Mimic Cave Ledge Drop', 'East Death Mountain (Bottom)'),
|
|
||||||
('Checkerboard Ledge Approach', 'Desert Checkerboard Ledge'),
|
|
||||||
('Checkerboard Ledge Leave', 'Light World'),
|
|
||||||
('Cave 45 Approach', 'Cave 45 Ledge'),
|
|
||||||
('Cave 45 Leave', 'Light World'),
|
|
||||||
('Lake Hylia Island Pier', 'Lake Hylia Island'),
|
|
||||||
('Bombos Tablet Ladder (Top)', 'Light World'),
|
|
||||||
('Bombos Tablet Ladder (Bottom)', 'Bombos Tablet Ledge'),
|
|
||||||
('Dark Death Mountain Ladder (Top)', 'West Dark Death Mountain (Bottom)'),
|
|
||||||
('Dark Death Mountain Ladder (Bottom)', 'Dark Death Mountain (Top)'),
|
|
||||||
('Turtle Rock Tail Drop', 'Turtle Rock (Top)'),
|
|
||||||
('Ice Palace Approach', 'Dark Lake Hylia Central Island'),
|
|
||||||
|
|
||||||
# portals
|
|
||||||
('Dark Death Mountain Teleporter (West)', 'West Death Mountain (Bottom)'),
|
|
||||||
('East Dark Death Mountain Teleporter (Bottom)', 'East Death Mountain (Bottom)'),
|
|
||||||
('East Dark Death Mountain Teleporter (Top)', 'East Death Mountain (Top)'),
|
|
||||||
('West Dark World Teleporter', 'Light World'),
|
|
||||||
('Post Aga Teleporter', 'Light World'),
|
|
||||||
('East Dark World Teleporter', 'Light World'),
|
|
||||||
('South Dark World Teleporter', 'Light World'),
|
|
||||||
('Dark Desert Teleporter', 'Light World'),
|
|
||||||
('Dark Lake Hylia Teleporter', 'Lake Hylia Central Island')
|
|
||||||
]
|
]
|
||||||
|
|
||||||
# non-shuffled entrance links
|
# non-shuffled entrance links
|
||||||
@@ -2485,8 +2283,8 @@ default_connections = {'Lost Woods Gamble': 'Lost Woods Gamble',
|
|||||||
'Dark Lake Hylia Fairy': 'Dark Lake Hylia Healer Fairy',
|
'Dark Lake Hylia Fairy': 'Dark Lake Hylia Healer Fairy',
|
||||||
'East Dark World Hint': 'East Dark World Hint',
|
'East Dark World Hint': 'East Dark World Hint',
|
||||||
'Mire Shed': 'Mire Shed',
|
'Mire Shed': 'Mire Shed',
|
||||||
'Dark Desert Fairy': 'Dark Desert Healer Fairy',
|
'Mire Fairy': 'Mire Healer Fairy',
|
||||||
'Dark Desert Hint': 'Dark Desert Hint',
|
'Mire Hint': 'Mire Hint',
|
||||||
'Hype Cave': 'Hype Cave',
|
'Hype Cave': 'Hype Cave',
|
||||||
'Dark Lake Hylia Shop': 'Dark Lake Hylia Shop',
|
'Dark Lake Hylia Shop': 'Dark Lake Hylia Shop',
|
||||||
'Dark Lake Hylia Ledge Fairy': 'Dark Lake Hylia Ledge Healer Fairy',
|
'Dark Lake Hylia Ledge Fairy': 'Dark Lake Hylia Ledge Healer Fairy',
|
||||||
@@ -2544,19 +2342,19 @@ default_dungeon_connections = [('Hyrule Castle Entrance (South)', 'Hyrule Castle
|
|||||||
('Desert Palace Entrance (West)', 'Desert West Portal'),
|
('Desert Palace Entrance (West)', 'Desert West Portal'),
|
||||||
('Desert Palace Entrance (North)', 'Desert Back Portal'),
|
('Desert Palace Entrance (North)', 'Desert Back Portal'),
|
||||||
('Desert Palace Entrance (East)', 'Desert East Portal'),
|
('Desert Palace Entrance (East)', 'Desert East Portal'),
|
||||||
('Desert Palace Exit (South)', 'Desert Palace Stairs'),
|
('Desert Palace Exit (South)', 'Desert Stairs'),
|
||||||
('Desert Palace Exit (West)', 'Desert Ledge'),
|
('Desert Palace Exit (West)', 'Desert Ledge'),
|
||||||
('Desert Palace Exit (East)', 'Desert Palace Mouth'),
|
('Desert Palace Exit (East)', 'Desert Mouth'),
|
||||||
('Desert Palace Exit (North)', 'Desert Palace Entrance (North) Spot'),
|
('Desert Palace Exit (North)', 'Desert Ledge Keep'),
|
||||||
('Eastern Palace', 'Eastern Portal'),
|
('Eastern Palace', 'Eastern Portal'),
|
||||||
('Eastern Palace Exit', 'Light World'),
|
('Eastern Palace Exit', 'Eastern Palace Area'),
|
||||||
('Tower of Hera', 'Hera Portal'),
|
('Tower of Hera', 'Hera Portal'),
|
||||||
('Tower of Hera Exit', 'West Death Mountain (Top)'),
|
('Tower of Hera Exit', 'West Death Mountain (Top)'),
|
||||||
|
|
||||||
('Palace of Darkness', 'Palace of Darkness Portal'),
|
('Palace of Darkness', 'Palace of Darkness Portal'),
|
||||||
('Palace of Darkness Exit', 'East Dark World'),
|
('Palace of Darkness Exit', 'Palace of Darkness Area'),
|
||||||
('Swamp Palace', 'Swamp Portal'), # requires additional patch for flooding moat if moved
|
('Swamp Palace', 'Swamp Portal'), # requires additional patch for flooding moat if moved
|
||||||
('Swamp Palace Exit', 'South Dark World'),
|
('Swamp Palace Exit', 'Swamp Area'),
|
||||||
('Skull Woods First Section Hole (East)', 'Skull Pinball'),
|
('Skull Woods First Section Hole (East)', 'Skull Pinball'),
|
||||||
('Skull Woods First Section Hole (West)', 'Skull Left Drop'),
|
('Skull Woods First Section Hole (West)', 'Skull Left Drop'),
|
||||||
('Skull Woods First Section Hole (North)', 'Skull Pot Circle'),
|
('Skull Woods First Section Hole (North)', 'Skull Pot Circle'),
|
||||||
@@ -2570,13 +2368,13 @@ default_dungeon_connections = [('Hyrule Castle Entrance (South)', 'Hyrule Castle
|
|||||||
('Skull Woods Final Section', 'Skull 3 Portal'),
|
('Skull Woods Final Section', 'Skull 3 Portal'),
|
||||||
('Skull Woods Final Section Exit', 'Skull Woods Forest (West)'),
|
('Skull Woods Final Section Exit', 'Skull Woods Forest (West)'),
|
||||||
('Thieves Town', 'Thieves Town Portal'),
|
('Thieves Town', 'Thieves Town Portal'),
|
||||||
('Thieves Town Exit', 'West Dark World'),
|
('Thieves Town Exit', 'Village of Outcasts'),
|
||||||
('Ice Palace', 'Ice Portal'),
|
('Ice Palace', 'Ice Portal'),
|
||||||
('Ice Palace Exit', 'Dark Lake Hylia Central Island'),
|
('Ice Palace Exit', 'Ice Palace Area'),
|
||||||
('Misery Mire', 'Mire Portal'),
|
('Misery Mire', 'Mire Portal'),
|
||||||
('Misery Mire Exit', 'Dark Desert'),
|
('Misery Mire Exit', 'Mire Area'),
|
||||||
('Turtle Rock', 'Turtle Rock Main Portal'),
|
('Turtle Rock', 'Turtle Rock Main Portal'),
|
||||||
('Turtle Rock Exit (Front)', 'Dark Death Mountain (Top)'),
|
('Turtle Rock Exit (Front)', 'Turtle Rock Area'),
|
||||||
('Dark Death Mountain Ledge (West)', 'Turtle Rock Lazy Eyes Portal'),
|
('Dark Death Mountain Ledge (West)', 'Turtle Rock Lazy Eyes Portal'),
|
||||||
('Dark Death Mountain Ledge (East)', 'Turtle Rock Chest Portal'),
|
('Dark Death Mountain Ledge (East)', 'Turtle Rock Chest Portal'),
|
||||||
('Turtle Rock Ledge Exit (West)', 'Dark Death Mountain Ledge'),
|
('Turtle Rock Ledge Exit (West)', 'Dark Death Mountain Ledge'),
|
||||||
@@ -2588,23 +2386,23 @@ default_dungeon_connections = [('Hyrule Castle Entrance (South)', 'Hyrule Castle
|
|||||||
open_default_dungeon_connections = [('Agahnims Tower', 'Agahnims Tower Portal'),
|
open_default_dungeon_connections = [('Agahnims Tower', 'Agahnims Tower Portal'),
|
||||||
('Agahnims Tower Exit', 'Hyrule Castle Ledge'),
|
('Agahnims Tower Exit', 'Hyrule Castle Ledge'),
|
||||||
('Ganons Tower', 'Ganons Tower Portal'),
|
('Ganons Tower', 'Ganons Tower Portal'),
|
||||||
('Ganons Tower Exit', 'Dark Death Mountain (Top)')
|
('Ganons Tower Exit', 'West Dark Death Mountain (Top)')
|
||||||
]
|
]
|
||||||
|
|
||||||
inverted_default_dungeon_connections = [('Agahnims Tower', 'Ganons Tower Portal'),
|
inverted_default_dungeon_connections = [('Agahnims Tower', 'Ganons Tower Portal'),
|
||||||
('Agahnims Tower Exit', 'Dark Death Mountain (Top)'),
|
('Agahnims Tower Exit', 'West Dark Death Mountain (Top)'),
|
||||||
('Ganons Tower', 'Agahnims Tower Portal'),
|
('Ganons Tower', 'Agahnims Tower Portal'),
|
||||||
('Ganons Tower Exit', 'Hyrule Castle Ledge')
|
('Ganons Tower Exit', 'Hyrule Castle Ledge')
|
||||||
]
|
]
|
||||||
|
|
||||||
indirect_connections = {
|
indirect_connections = {
|
||||||
'Turtle Rock (Top)': 'Turtle Rock',
|
'Turtle Rock Ledge': 'Turtle Rock',
|
||||||
'East Dark World': 'Pyramid Fairy',
|
'Pyramid Area': 'Pyramid Fairy',
|
||||||
'Big Bomb Shop': 'Pyramid Fairy',
|
'Big Bomb Shop': 'Pyramid Fairy',
|
||||||
'Dark Desert': 'Pyramid Fairy',
|
'Mire Area': 'Pyramid Fairy',
|
||||||
'West Dark World': 'Pyramid Fairy',
|
#'West Dark World': 'Pyramid Fairy',
|
||||||
'South Dark World': 'Pyramid Fairy',
|
'Big Bomb Shop Area': 'Pyramid Fairy',
|
||||||
'Light World': 'Pyramid Fairy',
|
#'Light World': 'Pyramid Fairy',
|
||||||
'Old Man Cave (East)': 'Old Man S&Q'
|
'Old Man Cave (East)': 'Old Man S&Q'
|
||||||
}
|
}
|
||||||
# format:
|
# format:
|
||||||
@@ -2745,8 +2543,8 @@ door_addresses = {'Links House': (0x00, (0x0104, 0x2c, 0x0506, 0x0a9a, 0x0832, 0
|
|||||||
'Dark Potion Shop': (0x6E, (0x010f, 0x56, 0x080e, 0x04f4, 0x0c66, 0x0548, 0x0cd8, 0x0563, 0x0ce3, 0x0a, 0xf6, 0x0000, 0x0000)),
|
'Dark Potion Shop': (0x6E, (0x010f, 0x56, 0x080e, 0x04f4, 0x0c66, 0x0548, 0x0cd8, 0x0563, 0x0ce3, 0x0a, 0xf6, 0x0000, 0x0000)),
|
||||||
'Archery Game': (0x58, (0x0111, 0x69, 0x069e, 0x0ac4, 0x02ea, 0x0b18, 0x0368, 0x0b33, 0x036f, 0x0a, 0xf6, 0x09AC, 0x0000)),
|
'Archery Game': (0x58, (0x0111, 0x69, 0x069e, 0x0ac4, 0x02ea, 0x0b18, 0x0368, 0x0b33, 0x036f, 0x0a, 0xf6, 0x09AC, 0x0000)),
|
||||||
'Mire Shed': (0x5E, (0x010d, 0x70, 0x0384, 0x0c69, 0x001e, 0x0cb6, 0x0098, 0x0cd6, 0x00a3, 0x07, 0xf9, 0x0000, 0x0000)),
|
'Mire Shed': (0x5E, (0x010d, 0x70, 0x0384, 0x0c69, 0x001e, 0x0cb6, 0x0098, 0x0cd6, 0x00a3, 0x07, 0xf9, 0x0000, 0x0000)),
|
||||||
'Dark Desert Hint': (0x61, (0x0114, 0x70, 0x0654, 0x0cc5, 0x02aa, 0x0d16, 0x0328, 0x0d32, 0x032f, 0x09, 0xf7, 0x0000, 0x0000)),
|
'Mire Hint': (0x61, (0x0114, 0x70, 0x0654, 0x0cc5, 0x02aa, 0x0d16, 0x0328, 0x0d32, 0x032f, 0x09, 0xf7, 0x0000, 0x0000)),
|
||||||
'Dark Desert Fairy': (0x55, (0x0115, 0x70, 0x03a8, 0x0c6a, 0x013a, 0x0cb7, 0x01b8, 0x0cd7, 0x01bf, 0x06, 0xfa, 0x0000, 0x0000)),
|
'Mire Fairy': (0x55, (0x0115, 0x70, 0x03a8, 0x0c6a, 0x013a, 0x0cb7, 0x01b8, 0x0cd7, 0x01bf, 0x06, 0xfa, 0x0000, 0x0000)),
|
||||||
'Spike Cave': (0x40, (0x0117, 0x43, 0x0ed4, 0x01e4, 0x08aa, 0x0236, 0x0928, 0x0253, 0x092f, 0x0a, 0xf6, 0x0000, 0x0000)),
|
'Spike Cave': (0x40, (0x0117, 0x43, 0x0ed4, 0x01e4, 0x08aa, 0x0236, 0x0928, 0x0253, 0x092f, 0x0a, 0xf6, 0x0000, 0x0000)),
|
||||||
'Dark Death Mountain Shop': (0x6D, (0x0112, 0x45, 0x0ee0, 0x01e3, 0x0d00, 0x0236, 0x0daa, 0x0252, 0x0d7d, 0x0b, 0xf5, 0x0000, 0x0000)),
|
'Dark Death Mountain Shop': (0x6D, (0x0112, 0x45, 0x0ee0, 0x01e3, 0x0d00, 0x0236, 0x0daa, 0x0252, 0x0d7d, 0x0b, 0xf5, 0x0000, 0x0000)),
|
||||||
'Dark Death Mountain Fairy': (0x6F, (0x0115, 0x43, 0x1400, 0x0294, 0x0600, 0x02e8, 0x0678, 0x0303, 0x0685, 0x0a, 0xf6, 0x0000, 0x0000)),
|
'Dark Death Mountain Fairy': (0x6F, (0x0115, 0x43, 0x1400, 0x0294, 0x0600, 0x02e8, 0x0678, 0x0303, 0x0685, 0x0a, 0xf6, 0x0000, 0x0000)),
|
||||||
@@ -2832,7 +2630,7 @@ exit_ids = {'Links House Exit': (0x01, 0x00),
|
|||||||
'Desert Healer Fairy': 0x5E,
|
'Desert Healer Fairy': 0x5E,
|
||||||
'Dark Lake Hylia Healer Fairy': 0x5E,
|
'Dark Lake Hylia Healer Fairy': 0x5E,
|
||||||
'Dark Lake Hylia Ledge Healer Fairy': 0x5E,
|
'Dark Lake Hylia Ledge Healer Fairy': 0x5E,
|
||||||
'Dark Desert Healer Fairy': 0x5E,
|
'Mire Healer Fairy': 0x5E,
|
||||||
'Dark Death Mountain Healer Fairy': 0x5E,
|
'Dark Death Mountain Healer Fairy': 0x5E,
|
||||||
'Fortune Teller (Light)': 0x65,
|
'Fortune Teller (Light)': 0x65,
|
||||||
'Lake Hylia Fortune Teller': 0x65,
|
'Lake Hylia Fortune Teller': 0x65,
|
||||||
@@ -2887,7 +2685,7 @@ exit_ids = {'Links House Exit': (0x01, 0x00),
|
|||||||
'Fortune Teller (Dark)': 0x66,
|
'Fortune Teller (Dark)': 0x66,
|
||||||
'Archery Game': 0x59,
|
'Archery Game': 0x59,
|
||||||
'Mire Shed': 0x5F,
|
'Mire Shed': 0x5F,
|
||||||
'Dark Desert Hint': 0x62,
|
'Mire Hint': 0x62,
|
||||||
'Spike Cave': 0x41,
|
'Spike Cave': 0x41,
|
||||||
'Mimic Cave': 0x4F,
|
'Mimic Cave': 0x4F,
|
||||||
'Kakariko Well (top)': 0x80,
|
'Kakariko Well (top)': 0x80,
|
||||||
@@ -3023,8 +2821,8 @@ ow_prize_table = {'Links House': (0x8b1, 0xb2d),
|
|||||||
'Dark Potion Shop': (0xc80, 0x4c0),
|
'Dark Potion Shop': (0xc80, 0x4c0),
|
||||||
'Archery Game': (0x2f0, 0xaf0),
|
'Archery Game': (0x2f0, 0xaf0),
|
||||||
'Mire Shed': (0x060, 0xc90),
|
'Mire Shed': (0x060, 0xc90),
|
||||||
'Dark Desert Hint': (0x2e0, 0xd00),
|
'Mire Hint': (0x2e0, 0xd00),
|
||||||
'Dark Desert Fairy': (0x1c0, 0xc90),
|
'Mire Fairy': (0x1c0, 0xc90),
|
||||||
'Spike Cave': (0x860, 0x180),
|
'Spike Cave': (0x860, 0x180),
|
||||||
'Dark Death Mountain Shop': (0xd80, 0x180),
|
'Dark Death Mountain Shop': (0xd80, 0x180),
|
||||||
'Dark Death Mountain Fairy': (0x620, 0x2c0),
|
'Dark Death Mountain Fairy': (0x620, 0x2c0),
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ from BaseClasses import World
|
|||||||
from DoorShuffle import link_doors
|
from DoorShuffle import link_doors
|
||||||
from Doors import create_doors
|
from Doors import create_doors
|
||||||
from Dungeons import create_dungeons, get_dungeon_item_pool
|
from Dungeons import create_dungeons, get_dungeon_item_pool
|
||||||
|
from OverworldShuffle import link_overworld
|
||||||
from EntranceShuffle import link_entrances
|
from EntranceShuffle import link_entrances
|
||||||
from ItemList import generate_itempool, difficulties
|
from ItemList import generate_itempool, difficulties
|
||||||
from Items import ItemFactory
|
from Items import ItemFactory
|
||||||
@@ -23,6 +24,7 @@ class TestInverted(TestBase):
|
|||||||
create_doors(self.world, 1)
|
create_doors(self.world, 1)
|
||||||
create_rooms(self.world, 1)
|
create_rooms(self.world, 1)
|
||||||
create_dungeons(self.world, 1)
|
create_dungeons(self.world, 1)
|
||||||
|
link_overworld(self.world, 1)
|
||||||
link_entrances(self.world, 1)
|
link_entrances(self.world, 1)
|
||||||
link_doors(self.world, 1)
|
link_doors(self.world, 1)
|
||||||
generate_itempool(self.world, 1)
|
generate_itempool(self.world, 1)
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ from BaseClasses import World
|
|||||||
from DoorShuffle import link_doors
|
from DoorShuffle import link_doors
|
||||||
from Doors import create_doors
|
from Doors import create_doors
|
||||||
from Dungeons import create_dungeons, get_dungeon_item_pool
|
from Dungeons import create_dungeons, get_dungeon_item_pool
|
||||||
|
from OverworldShuffle import link_overworld
|
||||||
from EntranceShuffle import link_entrances
|
from EntranceShuffle import link_entrances
|
||||||
from ItemList import generate_itempool, difficulties
|
from ItemList import generate_itempool, difficulties
|
||||||
from Items import ItemFactory
|
from Items import ItemFactory
|
||||||
@@ -24,6 +25,7 @@ class TestInvertedOWG(TestBase):
|
|||||||
create_doors(self.world, 1)
|
create_doors(self.world, 1)
|
||||||
create_rooms(self.world, 1)
|
create_rooms(self.world, 1)
|
||||||
create_dungeons(self.world, 1)
|
create_dungeons(self.world, 1)
|
||||||
|
link_overworld(self.world, 1)
|
||||||
create_owg_connections(self.world, 1)
|
create_owg_connections(self.world, 1)
|
||||||
link_entrances(self.world, 1)
|
link_entrances(self.world, 1)
|
||||||
link_doors(self.world, 1)
|
link_doors(self.world, 1)
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ from BaseClasses import World
|
|||||||
from DoorShuffle import link_doors
|
from DoorShuffle import link_doors
|
||||||
from Doors import create_doors
|
from Doors import create_doors
|
||||||
from Dungeons import create_dungeons, get_dungeon_item_pool
|
from Dungeons import create_dungeons, get_dungeon_item_pool
|
||||||
|
from OverworldShuffle import link_overworld
|
||||||
from EntranceShuffle import link_entrances
|
from EntranceShuffle import link_entrances
|
||||||
from ItemList import difficulties, generate_itempool
|
from ItemList import difficulties, generate_itempool
|
||||||
from Items import ItemFactory
|
from Items import ItemFactory
|
||||||
@@ -24,6 +25,7 @@ class TestVanillaOWG(TestBase):
|
|||||||
create_doors(self.world, 1)
|
create_doors(self.world, 1)
|
||||||
create_rooms(self.world, 1)
|
create_rooms(self.world, 1)
|
||||||
create_dungeons(self.world, 1)
|
create_dungeons(self.world, 1)
|
||||||
|
link_overworld(self.world, 1)
|
||||||
link_entrances(self.world, 1)
|
link_entrances(self.world, 1)
|
||||||
link_doors(self.world, 1)
|
link_doors(self.world, 1)
|
||||||
create_owg_connections(self.world, 1)
|
create_owg_connections(self.world, 1)
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ from BaseClasses import World
|
|||||||
from DoorShuffle import link_doors
|
from DoorShuffle import link_doors
|
||||||
from Doors import create_doors
|
from Doors import create_doors
|
||||||
from Dungeons import create_dungeons, get_dungeon_item_pool
|
from Dungeons import create_dungeons, get_dungeon_item_pool
|
||||||
|
from OverworldShuffle import link_overworld
|
||||||
from EntranceShuffle import link_entrances
|
from EntranceShuffle import link_entrances
|
||||||
from ItemList import difficulties, generate_itempool
|
from ItemList import difficulties, generate_itempool
|
||||||
from Items import ItemFactory
|
from Items import ItemFactory
|
||||||
@@ -23,6 +24,7 @@ class TestVanilla(TestBase):
|
|||||||
create_doors(self.world, 1)
|
create_doors(self.world, 1)
|
||||||
create_rooms(self.world, 1)
|
create_rooms(self.world, 1)
|
||||||
create_dungeons(self.world, 1)
|
create_dungeons(self.world, 1)
|
||||||
|
link_overworld(self.world, 1)
|
||||||
link_entrances(self.world, 1)
|
link_entrances(self.world, 1)
|
||||||
link_doors(self.world, 1)
|
link_doors(self.world, 1)
|
||||||
generate_itempool(self.world, 1)
|
generate_itempool(self.world, 1)
|
||||||
|
|||||||
Reference in New Issue
Block a user