Merge branch 'OverworldShuffleDev' into OverworldShuffle

This commit is contained in:
codemann8
2021-08-19 20:38:07 -05:00
10 changed files with 46 additions and 10 deletions

View File

@@ -1,5 +1,12 @@
# Changelog
### 0.1.8.1
- Fixed issue with activating flute in DW (OW Mixed)
- Fixed issue with Parallel+Crossed not generating
- Fixed issue with Standard not generating
- Fixed issue with Swordless not generating
- Fixed logic for Graveyard Ledge and Kings Tomb
### 0.1.8.0
- Moved Crossed to its own checkbox option
- Removed Legacy ER shuffles

View File

@@ -1868,7 +1868,7 @@ def find_accessible_entrances(world, player, builder):
connect = ext.connected_region
if connect is None or ext.door and ext.door.blocked:
continue
if world.mode[player] == 'standard' and builder.name == 'Hyrule Castle' and ext.name in ['Hyrule Castle Main Gate (North)', 'Top of Pyramid (Inner)', 'Inverted Pyramid Entrance' ]:
if world.mode[player] == 'standard' and builder.name == 'Hyrule Castle' and (ext.name.startswith('Flute From') or ext.name in ['Hyrule Castle Main Gate (North)', 'Top of Pyramid (Inner)', 'Inverted Pyramid Entrance']):
continue
if connect.name in entrances and connect not in visited_entrances:
visited_entrances.append(connect.name)

View File

@@ -2369,13 +2369,24 @@ inverted_default_dungeon_connections = [('Ganons Tower', 'Agahnims Tower Portal'
indirect_connections = {
'Turtle Rock Ledge': 'Turtle Rock',
'Pyramid Area': 'Pyramid Fairy',
#'East Dark World': 'Pyramid Fairy',
'Big Bomb Shop': 'Pyramid Fairy',
#'East Dark World': 'Pyramid Fairy',
'Pyramid Area': 'Pyramid Fairy', # HC Ledge/Courtyard
#'Dark Desert': 'Pyramid Fairy',
'Misery Mire Area': 'Pyramid Fairy', # Desert/Checkerboard Ledge
#'West Dark World': 'Pyramid Fairy',
'Dark Chapel Area': 'Pyramid Fairy', # Bonk Rocks
'Dark Graveyard North': 'Pyramid Fairy', # Graveyard Ledge/Kings Tomb
#'South Dark World': 'Pyramid Fairy',
'Dig Game Ledge': 'Pyramid Fairy', # Brother House Left
'Stumpy Approach Area': 'Pyramid Fairy', # Cave 45
# Inverted Cases
#'Light World': 'Pyramid Fairy',
'Lost Woods West Area': 'Pyramid Fairy', # Skull Woods Back
'East Death Mountain (Top East)': 'Pyramid Fairy', # Floating Island
'Blacksmith Area': 'Pyramid Fairy', # Hammerpegs
'Forgotten Forest Area': 'Pyramid Fairy', # Shield Shop
'Desert Area': 'Pyramid Fairy', # Mire Area
'Old Man Cave': 'Old Man S&Q'
}
# format:

View File

@@ -870,6 +870,7 @@ OWTileRegions = bidict({
'Dark Chapel Area': 0x53,
'Dark Graveyard Area': 0x54,
'Dark Graveyard North': 0x54,
'Qirn Jump Area': 0x55,
'Qirn Jump East Bank': 0x55,

View File

@@ -2,7 +2,7 @@ import RaceRandom as random, logging, copy
from BaseClasses import OWEdge, WorldType, RegionType, Direction, Terrain, PolSlot, Entrance
from OWEdges import OWTileRegions, OWTileGroups, OWEdgeGroups, OpenStd, parallel_links, IsParallel
__version__ = '0.1.8.0-u'
__version__ = '0.1.8.1-u'
def link_overworld(world, player):
# setup mandatory connections
@@ -230,15 +230,26 @@ def link_overworld(world, player):
f += 1
if f < len(forward_edge_sets):
forward_set = forward_edge_sets[f]
else:
forward_set = None
break
f += 1
while back_set[0] in connected_edges:
b += 1
if b < len(back_edge_sets):
back_set = back_edge_sets[b]
else:
back_set = None
break
b += 1
assert len(forward_set) == len(back_set)
for (forward_edge, back_edge) in zip(forward_set, back_set):
connect_two_way(world, forward_edge, back_edge, player, connected_edges)
if forward_set is not None and back_set is not None:
assert len(forward_set) == len(back_set)
for (forward_edge, back_edge) in zip(forward_set, back_set):
connect_two_way(world, forward_edge, back_edge, player, connected_edges)
elif forward_set is not None:
logging.getLogger('').warning("Edge '%s' could not find a valid connection" % forward_set[0])
elif back_set is not None:
logging.getLogger('').warning("Edge '%s' could not find a valid connection" % back_set[0])
else:
# vanilla/crossed shuffle
for (forward_edge_sets, back_edge_sets) in groups:
@@ -964,6 +975,8 @@ mandatory_connections = [# Whirlpool Connections
('Skull Woods Pass Bush Row (East)', 'Skull Woods Pass West Area'), #pearl
('Skull Woods Pass Rock (Top)', 'Skull Woods Pass East Bottom Area'), #mitts
('Skull Woods Pass Rock (Bottom)', 'Skull Woods Pass East Top Area'), #mitts
('Dark Graveyard Bush (South)', 'Dark Graveyard North'), #pearl
('Dark Graveyard Bush (North)', 'Dark Graveyard Area'), #pearl
('Qirn Jump Water Drop', 'Qirn Jump Water'), #flippers
('Qirn Jump East Water Drop', 'Qirn Jump Water'), #flippers
('Qirn Jump Pier', 'Qirn Jump East Bank'),

View File

@@ -148,7 +148,8 @@ def create_regions(world, player):
create_dw_region(player, 'Dark Fortune Area', None, ['Fortune Teller (Dark)', 'Kakariko Fortune Mirror Spot', 'Dark Fortune NE', 'Dark Fortune EN', 'Dark Fortune ES', 'Dark Fortune SC']),
create_dw_region(player, 'Outcast Pond Area', None, ['Kakariko Pond Mirror Spot', 'Outcast Pond NE', 'Outcast Pond WN', 'Outcast Pond WS', 'Outcast Pond SW', 'Outcast Pond SE', 'Outcast Pond EN', 'Outcast Pond ES']),
create_dw_region(player, 'Dark Chapel Area', None, ['Dark Sanctuary Hint', 'Sanctuary Mirror Spot', 'Bonk Rock Ledge Mirror Spot', 'Dark Chapel WN', 'Dark Chapel WS', 'Dark Chapel EC']),
create_dw_region(player, 'Dark Graveyard Area', None, ['Graveyard Ledge Mirror Spot', 'Kings Grave Mirror Spot', 'Dark Graveyard WC', 'Dark Graveyard EC']),
create_dw_region(player, 'Dark Graveyard Area', None, ['Dark Graveyard Bush (South)', 'Dark Graveyard WC', 'Dark Graveyard EC']),
create_dw_region(player, 'Dark Graveyard North', None, ['Graveyard Ledge Mirror Spot', 'Kings Grave Mirror Spot', 'Dark Graveyard Bush (North)']),
create_dw_region(player, 'Qirn Jump Area', None, ['Qirn Jump Water Drop', 'River Bend Mirror Spot', 'Qirn Jump WC', 'Qirn Jump SW']),
create_dw_region(player, 'Qirn Jump East Bank', None, ['Qirn Jump East Water Drop', 'River Bend East Mirror Spot', 'Qirn Jump SE', 'Qirn Jump EC', 'Qirn Jump ES']),
create_dw_region(player, 'Qirn Jump Water', None, ['Qirn Jump Pier', 'Qirn Jump Whirlpool', 'Qirn Jump EN', 'Qirn Jump SC'], Terrain.Water),

2
Rom.py
View File

@@ -33,7 +33,7 @@ from source.classes.SFX import randomize_sfx
JAP10HASH = '03a63945398191337e896e5771f77173'
RANDOMIZERBASEHASH = '99f3f57ab2c9449172cade4927a462d6'
RANDOMIZERBASEHASH = '3f7cd4772ea4a3f503691ef8807f5d84'
class JsonRom(object):

View File

@@ -1263,6 +1263,8 @@ def ow_bunny_rules(world, player):
add_bunny_rule(world.get_entrance('Skull Woods Pass Bush Row (East)', player), player)
add_bunny_rule(world.get_entrance('Skull Woods Pass Rock (Top)', player), player)
add_bunny_rule(world.get_entrance('Skull Woods Pass Rock (Bottom)', player), player)
add_bunny_rule(world.get_entrance('Dark Graveyard Bush (South)', player), player)
add_bunny_rule(world.get_entrance('Dark Graveyard Bush (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('Catfish Approach Rocks (West)', player), player)
@@ -1487,6 +1489,7 @@ def swordless_rules(world, player):
if world.mode[player] != 'inverted':
set_rule(world.get_entrance('Agahnims Tower', player), lambda state: state.has('Cape', player) or state.has('Hammer', player) or state.has('Beat Agahnim 1', player)) # barrier gets removed after killing agahnim, relevant for entrance shuffle
set_rule(world.get_entrance('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('Turtle Rock', player), lambda state: state.has_turtle_rock_medallion(player) and state.can_reach('Turtle Rock Ledge', 'Region', player)) # sword not required to use medallion for opening in swordless (!)
add_bunny_rule(world.get_entrance('Turtle Rock', player), player)
add_bunny_rule(world.get_entrance('Misery Mire', player), player)

View File

@@ -341,7 +341,7 @@ OWNewDestination:
sep #$30 : lda OWOppSlotOffset,y : !add $04 : asl : and #$7f : sta $700
; crossed OW shuffle
lda.l OWMode+1 : and.b #$02 : beq .return
LDA.l OWMode+1 : AND.b #!FLAG_OW_CROSSED : beq .return
ldx $05 : lda.l OWTileWorldAssoc,x : sta.l $7ef3ca ; change world
; toggle bunny mode

Binary file not shown.