Merge branch 'OverworldShuffleDev' into OverworldShuffle

This commit is contained in:
codemann8
2023-04-03 08:33:55 -05:00
31 changed files with 681 additions and 388 deletions

View File

@@ -7,7 +7,7 @@ from OWEdges import OWTileRegions, OWEdgeGroups, OWEdgeGroupsTerrain, OWExitType
from OverworldGlitchRules import create_owg_connections
from Utils import bidict
version_number = '0.3.0.4'
version_number = '0.3.0.5'
# branch indicator is intentionally different across branches
version_branch = ''
@@ -973,27 +973,26 @@ def can_reach_smith(world, player):
region = world.get_region(region_name, player)
for exit in region.exits:
if not found and exit.connected_region is not None:
if any(map(lambda i: i.name in ['Ocarina', 'Ocarina (Activated)'], world.precollected_items)) and exit.spot_type == 'Flute':
fluteregion = exit.connected_region
for flutespot in fluteregion.exits:
if flutespot.connected_region and flutespot.connected_region.name not in explored_regions:
explore_region(flutespot.connected_region.name, flutespot.connected_region)
elif exit.connected_region.name not in explored_regions \
and exit.connected_region.type in [RegionType.LightWorld, RegionType.DarkWorld] \
and exit.access_rule(blank_state):
explore_region(exit.connected_region.name, exit.connected_region)
elif exit.name == 'Sanctuary S':
sanc_region = exit.connected_region
if len(sanc_region.exits) and sanc_region.exits[0].name == 'Sanctuary Exit':
explore_region(sanc_region.exits[0].connected_region.name, sanc_region.exits[0].connected_region)
if exit.spot_type == 'Flute':
if any(map(lambda i: i.name == 'Ocarina (Activated)', world.precollected_items)):
for flutespot in exit.connected_region.exits:
if flutespot.connected_region and flutespot.connected_region.name not in explored_regions:
explore_region(flutespot.connected_region.name, flutespot.connected_region)
elif exit.connected_region.name == 'Blacksmiths Hut' and exit.access_rule(blank_state):
found = True
return
elif exit.connected_region.name not in explored_regions:
if (region.type == RegionType.Dungeon and exit.connected_region.name.endswith(' Portal')) \
or (exit.connected_region.type in [RegionType.LightWorld, RegionType.DarkWorld] \
and exit.access_rule(blank_state)):
explore_region(exit.connected_region.name, exit.connected_region)
blank_state = CollectionState(world)
if world.mode[player] == 'standard':
blank_state.collect(ItemFactory('Zelda Delivered', player), True)
if world.logic[player] in ['noglitches', 'minorglitches'] and world.get_region('Frog Prison', player).type == (RegionType.DarkWorld if not invFlag else RegionType.LightWorld):
if world.logic[player] in ['noglitches', 'minorglitches'] and not world.is_tile_swapped(0x29, player):
blank_state.collect(ItemFactory('Titans Mitts', player), True)
blank_state.collect(ItemFactory('Moon Pearl', player), True)
found = False
explored_regions = list()
@@ -1004,7 +1003,11 @@ def can_reach_smith(world, player):
explore_region(start_region)
if not found:
if not invFlag:
explore_region('Sanctuary')
if world.intensity[player] >= 3 and world.doorShuffle[player] != 'vanilla':
sanc_mirror = world.get_entrance('Sanctuary Mirror Route', player)
explore_region(sanc_mirror.connected_region.name, sanc_mirror.connected_region)
else:
explore_region('Sanctuary')
else:
explore_region('Dark Sanctuary Hint')
return found
@@ -1089,7 +1092,7 @@ def build_accessible_region_list(world, start_region, player, build_copy_world=F
region = base_world.get_region(region_name, player)
for exit in region.exits:
if exit.connected_region is not None:
if any(map(lambda i: i.name in ['Ocarina', 'Ocarina (Activated)'], base_world.precollected_items)) and exit.spot_type == 'Flute':
if any(map(lambda i: i.name == 'Ocarina (Activated)', base_world.precollected_items)) and exit.spot_type == 'Flute':
fluteregion = exit.connected_region
for flutespot in fluteregion.exits:
if flutespot.connected_region and flutespot.connected_region.name not in explored_regions:
@@ -1448,11 +1451,6 @@ mandatory_connections = [('Old Man S&Q', 'Old Man House'),
('Bomber Corner Pier', 'Bomber Corner Area'),
# OWG In-Bounds Connections
('Stone Bridge EC Cliff Water Drop', 'Stone Bridge Water'), #fake flipper
('Tree Line WC Cliff Water Drop', 'Tree Line Water'), #fake flipper,
('Hammer Bridge EC Cliff Water Drop', 'Hammer Bridge Water'), #fake flipper
('Dark Tree Line WC Cliff Water Drop', 'Dark Tree Line Water'), #fake flipper
('Ice Lake Northeast Pier Hop', 'Ice Lake Northeast Bank'),
('Ice Lake Moat Bomb Jump', 'Ice Lake Moat')
]
@@ -1467,7 +1465,7 @@ default_whirlpool_connections = [
default_flute_connections = [
0x0b, 0x16, 0x18, 0x2c, 0x2f, 0x38, 0x3b, 0x3f
]
ow_connections = {
0x03: ([
('West Death Mountain Teleporter', 'West Dark Death Mountain (Bottom)')
@@ -1552,12 +1550,20 @@ ow_connections = {
('Stone Bridge East Ledge Drop', 'Stone Bridge North Area'), # OWG
('Hammer Bridge North Ledge Drop', 'Hammer Bridge North Area'), # OWG
('Stone Bridge Cliff Ledge Drop', 'Stone Bridge South Area'), # OWG
('Hammer Bridge South Cliff Ledge Drop', 'Hammer Bridge South Area') # OWG
('Hammer Bridge South Cliff Ledge Drop', 'Hammer Bridge South Area'), # OWG
('Stone Bridge EC Cliff Water Drop', 'Stone Bridge Water'), # fake flipper
('Hammer Bridge EC Cliff Water Drop', 'Hammer Bridge Water'), # fake flipper
('Tree Line WC Cliff Water Drop', 'Tree Line Water'), # fake flipper
('Dark Tree Line WC Cliff Water Drop', 'Dark Tree Line Water') # fake flipper
], [
('Stone Bridge East Ledge Drop', 'Hammer Bridge North Area'), # OWG
('Hammer Bridge North Ledge Drop', 'Stone Bridge North Area'), # OWG
('Stone Bridge Cliff Ledge Drop', 'Hammer Bridge South Area'), # OWG
('Hammer Bridge South Cliff Ledge Drop', 'Stone Bridge South Area') # OWG
('Hammer Bridge South Cliff Ledge Drop', 'Stone Bridge South Area'), # OWG
('Stone Bridge EC Cliff Water Drop', 'Hammer Bridge Water'), # fake flipper
('Hammer Bridge EC Cliff Water Drop', 'Stone Bridge Water'), # fake flipper
('Tree Line WC Cliff Water Drop', 'Dark Tree Line Water'), # fake flipper
('Dark Tree Line WC Cliff Water Drop', 'Tree Line Water') # fake flipper
]),
0x2e: ([
('Tree Line Ledge Drop', 'Tree Line Area'), # OWG