Merge branch 'OverworldShuffleDev' into OverworldShuffle

This commit is contained in:
codemann8
2023-10-05 01:06:14 -05:00
26 changed files with 2181 additions and 744 deletions

View File

@@ -1,9 +1,15 @@
# Changelog
## 0.3.3.1
- \~Merged in DR v1.2.0.21~
- Fixed issue with Old Man death spawning on Pyramid/Castle
- Fixed issue with Mixed OWR + Flute Shuffle placing spots on large screens
- Fixed issue with mirror portals disappearing in Crossed OWR
- Added more OWR preset yamls + some fixes to the existing ones
## 0.3.3.0
- Added Customizer support for all remaining OWR options
- Added several OWR preset yamls (many ideas are thanks to Catobat)
- Fixed issue with Mixed OWR + Flute Shuffle placing spots on large screens
- Removed Limited Crossed OWR and renamed Chaos Crossed to Unrestricted Crossed
## 0.3.2.2

View File

@@ -178,6 +178,7 @@ def create_door_spoiler(world, player):
queue = deque(world.dungeon_layouts[player].values())
while len(queue) > 0:
builder = queue.popleft()
std_flag = world.mode[player] == 'standard' and builder.name == 'Hyrule Castle' and world.shuffle[player] == 'vanilla'
done = set()
start_regions = set(convert_regions(builder.layout_starts, world, player)) # todo: set all_entrances for basic
reg_queue = deque(start_regions)
@@ -206,11 +207,15 @@ def create_door_spoiler(world, player):
logger.warning('This is a bug during door spoiler')
elif not isinstance(door_b, Region):
logger.warning('Door not connected: %s', door_a.name)
if connect and connect.type == RegionType.Dungeon and connect not in visited:
if valid_connection(connect, std_flag, world, player) and connect not in visited:
visited.add(connect)
reg_queue.append(connect)
def valid_connection(region, std_flag, world, player):
return region and (region.type == RegionType.Dungeon or region.name in world.inaccessible_regions[player] or
(std_flag and region.name == 'Hyrule Castle Ledge'))
def vanilla_key_logic(world, player):
builders = []
world.dungeon_layouts[player] = {}
@@ -3331,6 +3336,9 @@ def find_inaccessible_regions(world, player):
ledge = world.get_region('Hyrule Castle Ledge', player)
if any(x for x in ledge.exits if x.connected_region and x.connected_region.name == 'Agahnims Tower Portal'):
world.inaccessible_regions[player].append('Hyrule Castle Ledge')
# this should be considered as part of the inaccessible regions, dungeonssimple?
if world.mode[player] == 'standard' and world.shuffle[player] == 'vanilla':
world.inaccessible_regions[player].append('Hyrule Castle Ledge')
logger = logging.getLogger('')
#logger.debug('Inaccessible Regions:')
#for r in world.inaccessible_regions[player]:

View File

@@ -36,7 +36,7 @@ from source.overworld.EntranceShuffle2 import link_entrances_new
from source.tools.BPS import create_bps_from_data
from source.classes.CustomSettings import CustomSettings
version_number = '1.2.0.20'
version_number = '1.2.0.21'
version_branch = '-u'
__version__ = f'{version_number}{version_branch}'

View File

@@ -8,7 +8,7 @@ from OWEdges import OWTileRegions, OWEdgeGroups, OWEdgeGroupsTerrain, OWExitType
from OverworldGlitchRules import create_owg_connections
from Utils import bidict
version_number = '0.3.3.0'
version_number = '0.3.3.1'
# branch indicator is intentionally different across branches
version_branch = ''
@@ -225,7 +225,8 @@ def link_overworld(world, player):
edge = world.get_owedge(edgename, player)
force_noncrossed.add(edge.name)
if 'limit_crossed' in custom_crossed:
limited_crossed = custom_crossed['limit_crossed']
if world.owCrossed[player] == 'unrestricted':
limited_crossed = custom_crossed['limit_crossed']
if 'undefined_chance' in custom_crossed:
undefined_chance = custom_crossed['undefined_chance']
@@ -443,6 +444,23 @@ def link_overworld(world, player):
connected_edge_cache = connected_edges.copy()
groups_cache = copy.deepcopy(groups)
while not valid_layout and tries > 0:
def remove_connected(forward_sets, back_sets):
deleted_edges = []
def remove_from_sets(sets):
s = 0
while s < len(sets):
if sets[s][0] in connected_edges:
deleted_edges.extend(sets[s])
del sets[s]
continue
s += 1
remove_from_sets(forward_sets)
remove_from_sets(back_sets)
if len(forward_sets) != len(back_sets):
x=', '.join(deleted_edges)
x=0
assert len(forward_sets) == len(back_sets), "OW edge pool is uneven due to prior connections: " + ', '.join(deleted_edges)
def connect_set(forward_set, back_set, connected_edges):
if forward_set is not None and back_set is not None:
assert len(forward_set) == len(back_set)
@@ -467,32 +485,10 @@ def link_overworld(world, player):
for key in groupKeys:
(mode, wrld, dir, terrain, parallel, count, _) = key
(forward_edge_sets, back_edge_sets) = groups[key]
def remove_connected():
deleted_edges = []
s = 0
while s < len(forward_edge_sets):
forward_set = forward_edge_sets[s]
if forward_set[0] in connected_edges:
deleted_edges.extend(forward_edge_sets[s])
del forward_edge_sets[s]
continue
s += 1
s = 0
while s < len(back_edge_sets):
back_set = back_edge_sets[s]
if back_set[0] in connected_edges:
deleted_edges.extend(back_edge_sets[s])
del back_edge_sets[s]
continue
s += 1
if len(forward_edge_sets) != len(back_edge_sets):
x=', '.join(deleted_edges)
x=0
assert len(forward_edge_sets) == len(back_edge_sets), "OW edge pool is uneven due to prior connections: " + ', '.join(deleted_edges)
remove_connected()
remove_connected(forward_edge_sets, back_edge_sets)
random.shuffle(forward_edge_sets)
random.shuffle(back_edge_sets)
if wrld is None and len(force_crossed) + len(force_noncrossed) > 0:
# divide forward/back sets into LW/DW
forward_lw_sets, forward_dw_sets = [], []
@@ -500,24 +496,20 @@ def link_overworld(world, player):
forward_parallel_lw_sets, forward_parallel_dw_sets = [], []
back_parallel_lw_sets, back_parallel_dw_sets = [], []
def add_edgeset_to_worldsets(edge_set, sets, parallel_sets):
sets.append(edge_set)
if parallel == IsParallel.Yes:
parallel_sets.append([parallel_links_new[e] for e in edge_set])
for edge_set in forward_edge_sets:
if world.get_owedge(edge_set[0], player).is_lw(world):
forward_lw_sets.append(edge_set)
if parallel == IsParallel.Yes:
forward_parallel_lw_sets.append([parallel_links_new[e] for e in edge_set])
add_edgeset_to_worldsets(edge_set, forward_lw_sets, forward_parallel_lw_sets)
else:
forward_dw_sets.append(edge_set)
if parallel == IsParallel.Yes:
forward_parallel_dw_sets.append([parallel_links_new[e] for e in edge_set])
add_edgeset_to_worldsets(edge_set, forward_dw_sets, forward_parallel_dw_sets)
for edge_set in back_edge_sets:
if world.get_owedge(edge_set[0], player).is_lw(world):
back_lw_sets.append(edge_set)
if parallel == IsParallel.Yes:
back_parallel_lw_sets.append([parallel_links_new[e] for e in edge_set])
add_edgeset_to_worldsets(edge_set, back_lw_sets, back_parallel_lw_sets)
else:
back_dw_sets.append(edge_set)
if parallel == IsParallel.Yes:
back_parallel_dw_sets.append([parallel_links_new[e] for e in edge_set])
add_edgeset_to_worldsets(edge_set, back_dw_sets, back_parallel_dw_sets)
crossed_sets = []
noncrossed_sets = []
@@ -526,7 +518,7 @@ def link_overworld(world, player):
affected_edges = set(sets[i]+(parallel_sets[i] if parallel == IsParallel.Yes else []))
if sets[i] not in crossed_sets and len(set.intersection(set(force_crossed), affected_edges)) > 0:
crossed_sets.append(sets[i])
if sets not in noncrossed_sets and len(set.intersection(set(force_noncrossed), affected_edges)) > 0:
if sets[i] not in noncrossed_sets and len(set.intersection(set(force_noncrossed), affected_edges)) > 0:
noncrossed_sets.append(sets[i])
if sets[i] in crossed_sets and sets[i] in noncrossed_sets:
raise GenerationException('Conflict in force crossed/non-crossed definition')
@@ -536,50 +528,33 @@ def link_overworld(world, player):
add_to_crossed_sets(back_dw_sets, back_parallel_dw_sets)
# random connect forced crossed/noncrossed
c = 0
while c < len(noncrossed_sets):
if noncrossed_sets[c] in forward_edge_sets:
forward_set = noncrossed_sets[c]
if forward_set in forward_lw_sets:
back_set = next(s for s in back_lw_sets if s in back_edge_sets and s not in crossed_sets)
def connect_forced(forced_sets, is_crossed, opposite_sets=[]):
c = 0
while c < len(forced_sets):
if forced_sets[c] in forward_edge_sets:
forward_set = forced_sets[c]
if (forward_set in forward_lw_sets) != is_crossed:
back_set = next(s for s in back_lw_sets if s in back_edge_sets and s not in opposite_sets)
else:
back_set = next(s for s in back_dw_sets if s in back_edge_sets and s not in opposite_sets)
elif forced_sets[c] in back_edge_sets:
back_set = forced_sets[c]
if (back_set in back_lw_sets) != is_crossed:
forward_set = next(s for s in forward_lw_sets if s in forward_edge_sets and s not in opposite_sets)
else:
forward_set = next(s for s in forward_dw_sets if s in forward_edge_sets and s not in opposite_sets)
else:
back_set = next(s for s in back_dw_sets if s in back_edge_sets and s not in crossed_sets)
elif noncrossed_sets[c] in back_edge_sets:
back_set = noncrossed_sets[c]
if back_set in back_lw_sets:
forward_set = next(s for s in forward_lw_sets if s in forward_edge_sets and s not in crossed_sets)
else:
forward_set = next(s for s in forward_dw_sets if s in forward_edge_sets and s not in crossed_sets)
else:
c = c + 1
continue
connect_set(forward_set, back_set, connected_edges)
remove_connected(forward_edge_sets, back_edge_sets)
c = c + 1
continue
connect_set(forward_set, back_set, connected_edges)
remove_connected()
c = c + 1
c = 0
while c < len(crossed_sets):
if crossed_sets[c] in forward_edge_sets:
forward_set = crossed_sets[c]
if forward_set in forward_lw_sets:
back_set = next(s for s in back_dw_sets if s in back_edge_sets)
else:
back_set = next(s for s in back_lw_sets if s in back_edge_sets)
elif crossed_sets[c] in back_edge_sets:
back_set = crossed_sets[c]
if back_set in back_lw_sets:
forward_set = next(s for s in forward_dw_sets if s in forward_edge_sets)
else:
forward_set = next(s for s in forward_lw_sets if s in forward_edge_sets)
else:
c = c + 1
continue
connect_set(forward_set, back_set, connected_edges)
remove_connected()
c = c + 1
connect_forced(noncrossed_sets, False, crossed_sets)
connect_forced(crossed_sets, True)
while len(forward_edge_sets) > 0 and len(back_edge_sets) > 0:
connect_set(forward_edge_sets[0], back_edge_sets[0], connected_edges)
remove_connected()
remove_connected(forward_edge_sets, back_edge_sets)
assert len(connected_edges) == len(default_connections) * 2, connected_edges
world.owsectors[player] = build_sectors(world, player)
@@ -1266,6 +1241,7 @@ def adjust_edge_groups(world, trimmed_groups, edges_to_swap, player):
if world.customizer:
custom_crossed = world.customizer.get_owcrossed()
limited_crossed = custom_crossed and (player in custom_crossed) and ('limit_crossed' in custom_crossed[player])
limited_crossed = limited_crossed and world.owCrossed[player] == 'unrestricted'
custom_edge_groups = world.customizer.get_owedges()
if custom_edge_groups and player in custom_edge_groups:
custom_edge_groups = custom_edge_groups[player]
@@ -1483,18 +1459,6 @@ def build_sectors(world, player):
else:
sectors2.append(explored_regions)
sectors[s] = sectors2
#TODO: Keep largest LW sector for Links House consideration, keep sector containing WDM for Old Man consideration
# sector_entrances = list()
# for sector in sectors:
# entrances = list()
# for s2 in sector:
# for region_name in s2:
# region = world.get_region(region_name, player)
# for exit in region.exits:
# if exit.spot_type == 'Entrance' and exit.name in entrance_pool:
# entrances.append(exit.name)
# sector_entrances.append(entrances)
return sectors
@@ -2559,7 +2523,7 @@ isolated_regions = [
]
flute_data = {
#Slot LW Region DW Region OWID VRAM BG Y BG X Link Y Link X Cam Y Cam X Unk1 Unk2 IconY IconX AltY AltX AltVRAM AltBGY AltBGX AltCamY AltCamX AltUnk1 AltUnk2 AltIconY AltIconX
#OWID LW Region DW Region Slot VRAM BG Y BG X Link Y Link X Cam Y Cam X Unk1 Unk2 IconY IconX AltY AltX AltVRAM AltBGY AltBGX AltCamY AltCamX AltUnk1 AltUnk2 AltIconY AltIconX
0x00: (['Lost Woods East Area', 'Skull Woods Forest'], 0x09, 0x1042, 0x022e, 0x0202, 0x0290, 0x0288, 0x029b, 0x028f, 0xfff2, 0x000e, 0x0290, 0x0288, 0x0290, 0x0290),
0x02: (['Lumberjack Area', 'Dark Lumberjack Area'], 0x02, 0x059c, 0x00d6, 0x04e6, 0x0138, 0x0558, 0x0143, 0x0563, 0xfffa, 0xfffa, 0x0138, 0x0550),
0x03: (['West Death Mountain (Bottom)', 'West Dark Death Mountain (Top)'], 0x0b, 0x1600, 0x02ca, 0x060e, 0x0328, 0x0678, 0x0337, 0x0683, 0xfff6, 0xfff2, 0x035b, 0x0680, 0x0118, 0x0860, 0x05c0, 0x00b8, 0x07ec, 0x0127, 0x086b, 0xfff8, 0x0004, 0x0148, 0x0850),

View File

@@ -109,6 +109,10 @@ These are now independent of retro mode and have three options: None, Random, an
# Bug Fixes and Notes
* 1.2.0.21u
* Fix that should force items needed for leaving Zelda's cell to before the throne room, so S&Q isn't mandatory
* Small fix for Tavern Shuffle (thanks Catobat)
* Several small generation fixes
* 1.2.0.20u
* New generation feature that allows Spiral Stair to link to themselves (thank Catobat)
* Added logic for trap doors that could be opened using existing room triggers

5
Rom.py
View File

@@ -38,7 +38,7 @@ from source.dungeon.RoomList import Room0127
JAP10HASH = '03a63945398191337e896e5771f77173'
RANDOMIZERBASEHASH = 'da111397d4118054e5ab4b9375cfb9e4'
RANDOMIZERBASEHASH = '52317b2dd4fb303887f26ecc40a4cae3'
class JsonRom(object):
@@ -694,7 +694,7 @@ def patch_rom(world, rom, player, team, enemized, is_mystery=False):
offset = 0
data = flute_data[owid]
if world.is_tile_swapped(data[1], player):
if world.is_tile_swapped(owid, player):
offset = 0x40
write_int16(rom, snes_to_pc(0x02E849 + (o * 2)), owid + offset) # owid
@@ -1403,6 +1403,7 @@ def patch_rom(world, rom, player, team, enemized, is_mystery=False):
rom.write_byte(0x18004A, 0x00 if world.mode[player] != 'inverted' else 0x01) # Inverted mode
rom.write_byte(0x18005D, 0x00) # Hammer always breaks barrier
rom.write_byte(0x02AF79, 0xD0 if world.mode[player] != 'inverted' else 0xF0) # vortexes: Normal (D0=light to dark, F0=dark to light, 42 = both)
rom.write_byte(0x03A943, 0xD0 if world.mode[player] != 'inverted' else 0xF0) # Mirror: Normal (D0=Dark to Light, F0=light to dark, 42 = both)
rom.write_byte(0x03A96D, 0xF0 if world.mode[player] != 'inverted' else 0xD0) # Residual Portal: Normal (F0= Light Side, D0=Dark Side, 42 = both (Darth Vader))
rom.write_byte(0x03A9A7, 0xD0) # Residual Portal: Normal (D0= Light Side, F0=Dark Side, 42 = both (Darth Vader))

View File

@@ -1577,13 +1577,15 @@ def standard_rules(world, player):
add_rule(ent, lambda state: standard_escape_rule(state))
set_rule(world.get_location('Zelda Pickup', player), lambda state: state.has('Big Key (Escape)', player))
set_rule(world.get_entrance('Hyrule Castle Throne Room Tapestry', player), lambda state: state.has('Zelda Herself', player))
set_rule(world.get_entrance('Hyrule Castle Tapestry Backwards', player), lambda state: state.has('Zelda Herself', player))
def check_rule_list(state, r_list):
return True if len(r_list) <= 0 else r_list[0](state) and check_rule_list(state, r_list[1:])
rule_list, debug_path = find_rules_for_zelda_delivery(world, player)
set_rule(world.get_location('Zelda Drop Off', player), lambda state: state.has('Zelda Herself', player) and check_rule_list(state, rule_list))
set_rule(world.get_entrance('Hyrule Castle Throne Room Tapestry', player),
lambda state: state.has('Zelda Herself', player) and check_rule_list(state, rule_list))
set_rule(world.get_location('Zelda Drop Off', player),
lambda state: state.has('Zelda Herself', player) and check_rule_list(state, rule_list))
for entrance in ['Links House SC', 'Links House ES', 'Central Bonk Rocks SW', 'Hyrule Castle WN', 'Hyrule Castle ES',
'Bonk Fairy (Light)', 'Hyrule Castle Main Gate (South)', 'Hyrule Castle Main Gate (North)', 'Hyrule Castle Ledge Drop']:

View File

@@ -56,16 +56,17 @@ Link_ResetSwimmingState:
; mirror hooks
org $02FBAB
JSL OWMirrorSpriteRestore : NOP
org $0283DC ; override world check when spawning mirror portal sprite in Crossed OWR
jsl.l OWLightWorldOrCrossed
org $05AF75
Sprite_6C_MirrorPortal:
jsl OWPreserveMirrorSprite : nop #2 ; LDA $7EF3CA : BNE $05AFDF
jsl OWMirrorSpriteDisable ; LDA $7EF3CA
org $05AF88
jsl OWMirrorSpriteSkipDraw : NOP ; LDA.w $0FC6 : CMP.b #$03
org $05AFDF
Sprite_6C_MirrorPortal_missing_mirror:
JML OWMirrorSpriteDelete : NOP ; STZ $0DD0,X : BRA $05AFF1
org $0ABFBF
JSL OWMirrorSpriteOnMap : BRA + : NOP #6 : +
org $0ABFB6
jsl OWMirrorSpriteOnMap : NOP ; LDA.w $008A : CMP.b #$40
; whirlpool shuffle cross world change
org $02b3bd
@@ -100,10 +101,6 @@ jsl OWOldManSpeed
;org $09c957 ; <- 4c957
;dw #$cb5f ; matches value on Central Bonk Rocks screen
; override world check when spawning mirror portal sprite in Crossed OWR
org $0283dc
jsl.l OWLightWorldOrCrossed
; override world check when viewing overworld (incl. title screen portion)
org $0aba6c ; < ? - Bank0a.asm:474 ()
jsl.l OWMapWorldCheck16 : nop
@@ -172,6 +169,11 @@ plb : rtl
nop #3
+
; follower hooks
;org $8689D9
;SpritePrep_BombShoppe:
;JML BombShoppe_ConditionalSpawn : NOP
;Code
org $aa8800
OWTransitionDirection:
@@ -257,66 +259,42 @@ OWDestroyItemSprites:
DEX : BPL .nextSprite
PLX : RTL
}
OWMirrorSpriteOnMap:
{
lda.w $1ac0,x : bit.b #$f0 : beq .continue
lda.b #$00 : rtl
.continue
ora.w $1ab0,x
ora.w $1ad0,x
ora.w $1ae0,x
rtl
JSL OWWorldCheck
CMP.b #$40 ; part of what we wrote over
RTL
}
OWPreserveMirrorSprite:
OWMirrorSpriteDisable:
{
lda.l OWMode+1 : and.b #!FLAG_OW_CROSSED : beq .vanilla ; if OW Crossed, skip world check and continue
lda.b $10 : cmp.b #$0f : beq .vanilla ; if performing mirror superbunny
rtl
LDA.b $10 : CMP.b #$0F : BNE + ; avoid rare freeze during mirror superbunny
PLA : PLA : PLA : JML Sprite_6C_MirrorPortal_missing_mirror
+
lda.l OWMode+1 : and.b #!FLAG_OW_CROSSED : beq .vanilla
lda.l InvertedMode : beq +
lda.b #$40
+ rtl
.vanilla
lda.l InvertedMode : beq +
lda.l CurrentWorld : beq .deleteMirror
rtl
+ lda.l CurrentWorld : bne .deleteMirror
rtl
.deleteMirror
lda.b $10 : cmp.b #$0f : bne +
jsr.w OWMirrorSpriteMove ; if performing mirror superbunny
+ pla : pla : pla : jml Sprite_6C_MirrorPortal_missing_mirror
}
OWMirrorSpriteMove:
{
lda.l OWMode+1 : and.b #!FLAG_OW_CROSSED : beq +
lda.w $1acf : ora.b #$40 : sta.w $1acf
+ rts
}
OWMirrorSpriteBonk:
{
jsr.w OWMirrorSpriteMove
lda.b #$2c : jml SetGameModeLikeMirror ; what we wrote over
}
OWMirrorSpriteDelete:
{
stz.w $0dd0,x ; what we wrote over
jsr.w OWMirrorSpriteMove
jml Sprite_6C_MirrorPortal_dont_do_warp
}
OWMirrorSpriteRestore:
{
lda.l OWMode+1 : and.b #!FLAG_OW_CROSSED : beq .return
lda.l InvertedMode : beq +
lda.l CurrentWorld : beq .return
bra .restorePortal
+ lda.l CurrentWorld : bne .return
.restorePortal
lda.w $1acf : and.b #$0f : sta.w $1acf
.return
rep #$30 : lda.w $04AC ; what we wrote over
lda.l CurrentWorld ; what we wrote over
rtl
}
OWMirrorSpriteSkipDraw:
{
lda.l OWMode+1 : and.b #!FLAG_OW_CROSSED : beq .vanilla
lda.l InvertedMode : beq +
lda.l CurrentWorld : eor.b #$40
bra ++
+ lda.l CurrentWorld : ++ beq .vanilla
stz.w $0D90,x ; disables collision
sec : rtl
.vanilla
LDA.w $0FC6 : CMP.b #$03 ; what we wrote over
RTL
}
OWLightWorldOrCrossed:
{
lda.l OWMode+1 : and.b #!FLAG_OW_CROSSED : beq ++
@@ -563,6 +541,7 @@ OWBonkDrops:
INX : LDA.w OWBonkPrizeData,X : PHX : PHA ; S = FlagBitmask, X (row + 2)
LDX.b $8A : LDA.l OverworldEventDataWRAM,X : AND 1,S : PHA : BNE + ; S = Collected, FlagBitmask, X (row + 2)
LDA.b #$1B : STA $12F ; JSL Sound_SetSfx3PanLong ; seems that when you bonk, there is a pending bonk sfx, so we clear that out and replace with reveal secret sfx
; JSLSpriteSFX_QueueSFX3WithPan
+
LDA 3,S : TAX : INX : LDA.w OWBonkPrizeData,X
PHA : INX : LDA.w OWBonkPrizeData,X : BEQ +
@@ -894,6 +873,7 @@ OWNewDestination:
++ lda $84 : !add 1,s : sta $84 : pla : pla
.adjustMainAxis
;LDA $84 : SEC : SBC #$0400 : AND #$0F80 : ASL : XBA : STA $88 ; vram
LDA $84 : SEC : SBC #$0400 : AND #$0F00 : ASL : XBA : STA $88 ; vram
LDA $84 : SEC : SBC #$0010 : AND #$003E : LSR : STA $86
@@ -956,6 +936,7 @@ OWNewDestination:
sep #$30 : lda $04 : and #$3f : !add OWOppSlotOffset,y : asl : sta $700
; crossed OW shuffle and terrain
;lda $8a : JSR OWDetermineScreensPaletteSet : STX $04
ldx $05 : ldy $08 : jsr OWWorldTerrainUpdate
ldx $8a : lda $05 : sta $8a : stx $05 ; $05 is prev screen id, $8a is dest screen
@@ -1180,6 +1161,14 @@ OWEndScrollTransition:
RTL
}
; BombShoppe_ConditionalSpawn:
; {
; nop
; INC.w $0BA0,X : LDA.b #$B5 ; what we wrote over
; JML SpritePrep_BombShoppe+5
; nop#20
; }
;Data
org $aaa000
OWEdgeOffsets:

Binary file not shown.

View File

@@ -121,8 +121,6 @@ ow-edges:
- Lake Hylia NW*
- Tree Line SC*
- Lake Hylia NC*
- Lake Hylia WS*
- South Pass ES*
- Lake Hylia EC*
- Octoballoon WC*
- Lake Hylia ES*

View File

@@ -138,8 +138,6 @@ ow-edges:
- Lake Hylia NW*
- Tree Line SC*
- Lake Hylia NC*
- Lake Hylia WS*
- South Pass ES*
- Lake Hylia EC*
- Octoballoon WC*
- Lake Hylia ES*

View File

@@ -0,0 +1,31 @@
settings:
1:
ow_fluteshuffle: balanced
ow-flutespots:
1:
forbid:
- 0x00 # Lost Woods
- 0x02 # Lumberjack
- 0x07 # Death Mountain TR Pegs
- 0x0A # Mountain Pass
- 0x0F # Zora Waterfall
- 0x10 # Lost Woods Pass
- 0x12 # Kakariko Pond
- 0x13 # Sanctuary
- 0x14 # Graveyard
- 0x17 # Zora Approach
- 0x1A # Forgotten Forest
- 0x1D # Wooden Bridge
- 0x22 # Blacksmith
- 0x25 # Sand Dunes
- 0x28 # Maze Race
- 0x29 # Kakariko Suburb
- 0x2A # Flute Boy
- 0x2B # Central Bonk Rocks
- 0x2D # Stone Bridge
- 0x2E # Tree Line
- 0x32 # Flute Boy Approach
- 0x34 # Statues
- 0x37 # Ice Cave
- 0x3A # Desert Pass
- 0x3C # South Pass

View File

@@ -0,0 +1,308 @@
ow-edges:
1:
groups:
north:
- Lost Woods NW
- Lost Woods EN
- Skull Woods EN
- Lumberjack WN
- Lumberjack SW
- Dark Lumberjack WN
- Dark Lumberjack SW
- West Death Mountain EN
- West Death Mountain ES
- West Dark Death Mountain EN
- West Dark Death Mountain ES
- East Death Mountain WN
- East Death Mountain WS
- East Death Mountain EN
- East Dark Death Mountain WN
- East Dark Death Mountain WS
- East Dark Death Mountain EN
- Death Mountain TR Pegs WN
- Turtle Rock WN
- Mountain Pass NW
- Mountain Pass SE
- Bumper Cave NW
- Bumper Cave SE
- Kakariko Pond NE
- Kakariko Pond EN
- Kakariko Pond ES
- Outcast Pond NE
- Outcast Pond EN
- Outcast Pond ES
- Sanctuary WN
- Sanctuary WS
- Sanctuary EC
- Dark Chapel WN
- Dark Chapel WS
- Dark Chapel EC
- Graveyard WC
- Graveyard EC
- Dark Graveyard WC
- Dark Graveyard EC
- River Bend WC
- Qirn Jump WC
- Master Sword Meadow SC
east:
- Zora Waterfall NE
- Zora Waterfall SE
- Catfish SE
- River Bend EN
- River Bend EC
- River Bend ES
- River Bend SW
- River Bend SC
- River Bend SE
- Qirn Jump EN
- Qirn Jump EC
- Qirn Jump ES
- Qirn Jump SW
- Qirn Jump SC
- Qirn Jump SE
- Potion Shop WN
- Potion Shop WC
- Potion Shop WS
- Potion Shop EN
- Potion Shop EC
- Dark Witch WN
- Dark Witch WC
- Dark Witch WS
- Dark Witch EN
- Dark Witch EC
- Zora Approach NE
- Zora Approach WN
- Zora Approach WC
- Catfish Approach NE
- Catfish Approach WN
- Catfish Approach WC
- Hyrule Castle ES
- Pyramid ES
- Wooden Bridge NW
- Wooden Bridge NC
- Wooden Bridge NE
- Wooden Bridge SW
- Broken Bridge NW
- Broken Bridge NC
- Broken Bridge NE
- Broken Bridge SW
- Eastern Palace SW
- Eastern Palace SE
- Palace of Darkness SW
- Palace of Darkness SE
- Sand Dunes NW
- Sand Dunes WN
- Sand Dunes SC
- Dark Dunes NW
- Dark Dunes WN
- Dark Dunes SC
- Stone Bridge NC
- Stone Bridge EN
- Stone Bridge EC
- Hammer Bridge NC
- Hammer Bridge EN
- Hammer Bridge EC
- Tree Line NW
- Tree Line WN
- Tree Line WC
- Tree Line SC
- Tree Line SE
- Dark Tree Line NW
- Dark Tree Line WN
- Dark Tree Line WC
- Dark Tree Line SC
- Dark Tree Line SE
- Eastern Nook NE
- Palace of Darkness Nook NE
- Lake Hylia NC
- Lake Hylia NE
- Ice Lake NC
- Ice Lake NE
- Ice Cave SW
- Ice Cave SE
- Shopping Mall SW
- Shopping Mall SE
- Octoballoon NW
- Octoballoon NE
- Bomber Corner NW
- Bomber Corner NE
- Zoras Domain SW
south:
- Hyrule Castle SW
- Hyrule Castle SE
- Pyramid SW
- Pyramid SE
- Flute Boy SW
- Flute Boy SC
- Stumpy SW
- Stumpy SC
- Central Bonk Rocks NW
- Central Bonk Rocks EN
- Central Bonk Rocks EC
- Central Bonk Rocks ES
- Central Bonk Rocks SW
- Dark Bonk Rocks NW
- Dark Bonk Rocks EN
- Dark Bonk Rocks EC
- Dark Bonk Rocks ES
- Dark Bonk Rocks SW
- Links House NE
- Links House WN
- Links House WC
- Links House WS
- Links House SC
- Links House ES
- Big Bomb Shop NE
- Big Bomb Shop WN
- Big Bomb Shop WC
- Big Bomb Shop WS
- Big Bomb Shop SC
- Big Bomb Shop ES
- Stone Bridge WC
- Stone Bridge WS
- Stone Bridge SC
- Hammer Bridge WS
- Hammer Bridge SC
- Desert EC
- Desert ES
- Flute Boy Approach NW
- Flute Boy Approach NC
- Flute Boy Approach EC
- Stumpy Approach NW
- Stumpy Approach NC
- Stumpy Approach EC
- C Whirlpool NW
- C Whirlpool WC
- C Whirlpool EN
- C Whirlpool EC
- C Whirlpool ES
- C Whirlpool SC
- Dark C Whirlpool NW
- Dark C Whirlpool WC
- Dark C Whirlpool EN
- Dark C Whirlpool EC
- Dark C Whirlpool ES
- Dark C Whirlpool SC
- Statues NC
- Statues WN
- Statues WC
- Statues WS
- Statues SC
- Hype Cave NC
- Hype Cave WN
- Hype Cave WC
- Hype Cave WS
- Hype Cave SC
- Lake Hylia NW
- Lake Hylia WS
- Lake Hylia EC
- Lake Hylia ES
- Ice Lake NW
- Ice Lake WS
- Ice Lake EC
- Ice Lake ES
- Desert Pass WC
- Desert Pass WS
- Desert Pass EC
- Desert Pass ES
- Swamp Nook EC
- Swamp Nook ES
- Dam NC
- Dam WC
- Dam WS
- Dam EC
- Swamp NC
- Swamp WC
- Swamp WS
- Swamp EC
- South Pass NC
- South Pass WC
- South Pass ES
- Dark South Pass NC
- Dark South Pass WC
- Dark South Pass ES
- Octoballoon WC
- Octoballoon WS
- Bomber Corner WC
- Bomber Corner WS
- Hobo EC
west:
- Lost Woods SW
- Lost Woods SC
- Lost Woods SE
- Skull Woods SW
- Skull Woods SC
- Skull Woods SE
- Lost Woods Pass NW
- Lost Woods Pass NE
- Lost Woods Pass SW
- Lost Woods Pass SE
- Skull Woods Pass NW
- Skull Woods Pass NE
- Skull Woods Pass SW
- Skull Woods Pass SE
- Kakariko Fortune NE
- Kakariko Fortune EN
- Kakariko Fortune ES
- Kakariko Fortune SC
- Dark Fortune NE
- Dark Fortune EN
- Dark Fortune ES
- Dark Fortune SC
- Kakariko Pond WN
- Kakariko Pond WS
- Kakariko Pond SW
- Kakariko Pond SE
- Outcast Pond WN
- Outcast Pond WS
- Outcast Pond SW
- Outcast Pond SE
- Kakariko NW
- Kakariko NC
- Kakariko NE
- Kakariko ES
- Kakariko SE
- Village of Outcasts NW
- Village of Outcasts NC
- Village of Outcasts NE
- Village of Outcasts ES
- Village of Outcasts SE
- Forgotten Forest NW
- Forgotten Forest NE
- Forgotten Forest ES
- Shield Shop NW
- Shield Shop NE
- Hyrule Castle WN
- Blacksmith WS
- Hammer Pegs WS
- Maze Race ES
- Dig Game EC
- Dig Game ES
- Kakariko Suburb NE
- Kakariko Suburb WS
- Kakariko Suburb ES
- Frog NE
- Frog WC
- Frog WS
- Frog ES
- Flute Boy WS
- Stumpy WS
ow-tileflips:
1:
force_together:
PedHobo:
- 0x00
- 0x2d
- 0x80
Zora:
- 0x0f
- 0x81
Forest:
- 0x1a
- 0x1b
FrogDig:
- 0x28
- 0x29
Desert:
- 0x30
- 0x3a

View File

@@ -2,297 +2,290 @@ ow-edges:
1:
groups:
northwest:
- Lost Woods NW
- Lost Woods EN
- Lost Woods SW
- Lost Woods SC
- Lost Woods SE
- Skull Woods EN
- Skull Woods SW
- Skull Woods SC
- Skull Woods SE
- Lumberjack WN
- Lumberjack SW
- Dark Lumberjack WN
- Dark Lumberjack SW
- Mountain Pass NW
- Mountain Pass SE
- Bumper Cave NW
- Bumper Cave SE
- Lost Woods Pass NW
- Lost Woods Pass NE
- Lost Woods Pass SW
- Lost Woods Pass SE
- Skull Woods Pass NW
- Skull Woods Pass NE
- Skull Woods Pass SW
- Skull Woods Pass SE
- Kakariko Fortune NE
- Kakariko Fortune EN
- Kakariko Fortune ES
- Kakariko Fortune SC
- Dark Fortune NE
- Dark Fortune EN
- Dark Fortune ES
- Dark Fortune SC
- Kakariko Pond NE
- Kakariko Pond WN
- Kakariko Pond WS
- Kakariko Pond EN
- Kakariko Pond ES
- Kakariko Pond SW
- Kakariko Pond SE
- Outcast Pond NE
- Outcast Pond WN
- Outcast Pond WS
- Outcast Pond EN
- Outcast Pond ES
- Outcast Pond SW
- Outcast Pond SE
- Sanctuary WN
- Sanctuary WS
- Kakariko NW
- Kakariko NC
- Kakariko NE
- Dark Chapel WN
- Dark Chapel WS
- Village of Outcasts NW
- Village of Outcasts NC
- Village of Outcasts NE
- Forgotten Forest NW
- Forgotten Forest NE
- Forgotten Forest ES
- Shield Shop NW
- Shield Shop NE
- Hyrule Castle WN
- Master Sword Meadow SC
- Lost Woods NW
- Lost Woods EN
- Lost Woods SW
- Lost Woods SC
- Lost Woods SE
- Skull Woods EN
- Skull Woods SW
- Skull Woods SC
- Skull Woods SE
- Lumberjack WN
- Lumberjack SW
- Dark Lumberjack WN
- Dark Lumberjack SW
- Mountain Pass NW
- Mountain Pass SE
- Bumper Cave NW
- Bumper Cave SE
- Lost Woods Pass NW
- Lost Woods Pass NE
- Lost Woods Pass SW
- Lost Woods Pass SE
- Skull Woods Pass NW
- Skull Woods Pass NE
- Skull Woods Pass SW
- Skull Woods Pass SE
- Kakariko Fortune NE
- Kakariko Fortune EN
- Kakariko Fortune ES
- Kakariko Fortune SC
- Dark Fortune NE
- Dark Fortune EN
- Dark Fortune ES
- Dark Fortune SC
- Kakariko Pond NE
- Kakariko Pond WN
- Kakariko Pond WS
- Kakariko Pond EN
- Kakariko Pond ES
- Kakariko Pond SW
- Kakariko Pond SE
- Outcast Pond NE
- Outcast Pond WN
- Outcast Pond WS
- Outcast Pond EN
- Outcast Pond ES
- Outcast Pond SW
- Outcast Pond SE
- Sanctuary WN
- Sanctuary WS
- Kakariko NW
- Kakariko NC
- Kakariko NE
- Dark Chapel WN
- Dark Chapel WS
- Village of Outcasts NW
- Village of Outcasts NC
- Village of Outcasts NE
- Forgotten Forest NW
- Forgotten Forest NE
- Forgotten Forest ES
- Shield Shop NW
- Shield Shop NE
- Hyrule Castle WN
- Master Sword Meadow SC
northeast:
- West Death Mountain EN
- West Death Mountain ES
- West Dark Death Mountain EN
- West Dark Death Mountain ES
- East Death Mountain WN
- East Death Mountain WS
- East Death Mountain EN
- East Dark Death Mountain WN
- East Dark Death Mountain WS
- East Dark Death Mountain EN
- Death Mountain TR Pegs WN
- Turtle Rock WN
- Zora Waterfall NE
- Zora Waterfall SE
- Catfish SE
- Graveyard EC
- Dark Graveyard EC
- River Bend WC
- River Bend EN
- River Bend EC
- River Bend ES
- River Bend SW
- River Bend SC
- River Bend SE
- Qirn Jump WC
- Qirn Jump EN
- Qirn Jump EC
- Qirn Jump ES
- Qirn Jump SW
- Qirn Jump SC
- Qirn Jump SE
- Potion Shop WN
- Potion Shop WC
- Potion Shop WS
- Potion Shop EN
- Potion Shop EC
- Dark Witch WN
- Dark Witch WC
- Dark Witch WS
- Dark Witch EN
- Dark Witch EC
- Zora Approach NE
- Zora Approach WN
- Zora Approach WC
- Catfish Approach NE
- Catfish Approach WN
- Catfish Approach WC
- Wooden Bridge NW
- Wooden Bridge NC
- Wooden Bridge NE
- Broken Bridge NW
- Broken Bridge NC
- Broken Bridge NE
- Zoras Domain SW
- West Death Mountain EN
- West Death Mountain ES
- West Dark Death Mountain EN
- West Dark Death Mountain ES
- East Death Mountain WN
- East Death Mountain WS
- East Death Mountain EN
- East Dark Death Mountain WN
- East Dark Death Mountain WS
- East Dark Death Mountain EN
- Death Mountain TR Pegs WN
- Turtle Rock WN
- Zora Waterfall NE
- Zora Waterfall SE
- Catfish SE
- Graveyard EC
- Dark Graveyard EC
- River Bend WC
- River Bend EN
- River Bend EC
- River Bend ES
- River Bend SW
- River Bend SC
- River Bend SE
- Qirn Jump WC
- Qirn Jump EN
- Qirn Jump EC
- Qirn Jump ES
- Qirn Jump SW
- Qirn Jump SC
- Qirn Jump SE
- Potion Shop WN
- Potion Shop WC
- Potion Shop WS
- Potion Shop EN
- Potion Shop EC
- Dark Witch WN
- Dark Witch WC
- Dark Witch WS
- Dark Witch EN
- Dark Witch EC
- Zora Approach NE
- Zora Approach WN
- Zora Approach WC
- Catfish Approach NE
- Catfish Approach WN
- Catfish Approach WC
- Wooden Bridge NW
- Wooden Bridge NC
- Wooden Bridge NE
- Broken Bridge NW
- Broken Bridge NC
- Broken Bridge NE
- Zoras Domain SW
southwest:
- Kakariko ES
- Kakariko SE
- Village of Outcasts ES
- Village of Outcasts SE
- Hyrule Castle SW
- Pyramid SW
- Blacksmith WS
- Hammer Pegs WS
- Maze Race ES
- Dig Game EC
- Dig Game ES
- Kakariko Suburb NE
- Kakariko Suburb WS
- Kakariko Suburb ES
- Frog NE
- Frog WC
- Frog WS
- Frog ES
- Flute Boy WS
- Flute Boy SW
- Flute Boy SC
- Stumpy WS
- Stumpy SW
- Stumpy SC
- Central Bonk Rocks NW
- Central Bonk Rocks SW
- Dark Bonk Rocks NW
- Dark Bonk Rocks SW
- Desert EC
- Desert ES
- Flute Boy Approach NW
- Flute Boy Approach NC
- Flute Boy Approach EC
- Stumpy Approach NW
- Stumpy Approach NC
- Stumpy Approach EC
- C Whirlpool NW
- C Whirlpool WC
- C Whirlpool SC
- Dark C Whirlpool NW
- Dark C Whirlpool WC
- Dark C Whirlpool SC
- Desert Pass WC
- Desert Pass WS
- Desert Pass EC
- Desert Pass ES
- Swamp Nook EC
- Swamp Nook ES
- Dam NC
- Dam WC
- Dam WS
- Swamp NC
- Swamp WC
- Swamp WS
- Kakariko ES
- Kakariko SE
- Village of Outcasts ES
- Village of Outcasts SE
- Hyrule Castle SW
- Pyramid SW
- Blacksmith WS
- Hammer Pegs WS
- Maze Race ES
- Dig Game EC
- Dig Game ES
- Kakariko Suburb NE
- Kakariko Suburb WS
- Kakariko Suburb ES
- Frog NE
- Frog WC
- Frog WS
- Frog ES
- Flute Boy WS
- Flute Boy SW
- Flute Boy SC
- Stumpy WS
- Stumpy SW
- Stumpy SC
- Central Bonk Rocks NW
- Central Bonk Rocks SW
- Dark Bonk Rocks NW
- Dark Bonk Rocks SW
- Desert EC
- Desert ES
- Flute Boy Approach NW
- Flute Boy Approach NC
- Flute Boy Approach EC
- Stumpy Approach NW
- Stumpy Approach NC
- Stumpy Approach EC
- C Whirlpool NW
- C Whirlpool WC
- C Whirlpool SC
- Dark C Whirlpool NW
- Dark C Whirlpool WC
- Dark C Whirlpool SC
- Desert Pass WC
- Desert Pass WS
- Desert Pass EC
- Desert Pass ES
- Swamp Nook EC
- Swamp Nook ES
- Dam NC
- Dam WC
- Dam WS
- Swamp NC
- Swamp WC
- Swamp WS
southeast:
- Hyrule Castle ES
- Hyrule Castle SE
- Pyramid ES
- Pyramid SE
- Eastern Palace SW
- Eastern Palace SE
- Palace of Darkness SW
- Palace of Darkness SE
- Sand Dunes WN
- Sand Dunes SC
- Dark Dunes WN
- Dark Dunes SC
- Links House NE
- Links House SC
- Links House ES
- Big Bomb Shop NE
- Big Bomb Shop SC
- Big Bomb Shop ES
- Stone Bridge NC
- Stone Bridge WC
- Stone Bridge WS
- Stone Bridge EN
- Stone Bridge EC
- Stone Bridge SC
- Hammer Bridge NC
- Hammer Bridge WS
- Hammer Bridge EN
- Hammer Bridge EC
- Hammer Bridge SC
- Tree Line NW
- Tree Line WN
- Tree Line WC
- Tree Line SC
- Tree Line SE
- Dark Tree Line NW
- Dark Tree Line WN
- Dark Tree Line WC
- Dark Tree Line SC
- Dark Tree Line SE
- Eastern Nook NE
- Palace of Darkness Nook NE
- Statues NC
- Statues SC
- Hype Cave NC
- Hype Cave SC
- Lake Hylia NW
- Lake Hylia NC
- Lake Hylia NE
- Lake Hylia WS
- Lake Hylia EC
- Lake Hylia ES
- Ice Lake NW
- Ice Lake NC
- Ice Lake NE
- Ice Lake WS
- Ice Lake EC
- Ice Lake ES
- Ice Cave SW
- Ice Cave SE
- Shopping Mall SW
- Shopping Mall SE
- South Pass NC
- South Pass ES
- Dark South Pass NC
- Dark South Pass ES
- Octoballoon NW
- Octoballoon NE
- Octoballoon WC
- Octoballoon WS
- Bomber Corner NW
- Bomber Corner NE
- Bomber Corner WC
- Bomber Corner WS
- Hobo EC
- Hyrule Castle ES
- Hyrule Castle SE
- Pyramid ES
- Pyramid SE
- Eastern Palace SW
- Eastern Palace SE
- Palace of Darkness SW
- Palace of Darkness SE
- Sand Dunes WN
- Sand Dunes SC
- Dark Dunes WN
- Dark Dunes SC
- Links House NE
- Links House SC
- Links House ES
- Big Bomb Shop NE
- Big Bomb Shop SC
- Big Bomb Shop ES
- Stone Bridge NC
- Stone Bridge WC
- Stone Bridge WS
- Stone Bridge EN
- Stone Bridge EC
- Stone Bridge SC
- Hammer Bridge NC
- Hammer Bridge WS
- Hammer Bridge EN
- Hammer Bridge EC
- Hammer Bridge SC
- Tree Line NW
- Tree Line WN
- Tree Line WC
- Tree Line SC
- Tree Line SE
- Dark Tree Line NW
- Dark Tree Line WN
- Dark Tree Line WC
- Dark Tree Line SC
- Dark Tree Line SE
- Eastern Nook NE
- Palace of Darkness Nook NE
- Statues NC
- Statues SC
- Hype Cave NC
- Hype Cave SC
- Lake Hylia NW
- Lake Hylia NC
- Lake Hylia NE
- Lake Hylia WS
- Lake Hylia EC
- Lake Hylia ES
- Ice Lake NW
- Ice Lake NC
- Ice Lake NE
- Ice Lake WS
- Ice Lake EC
- Ice Lake ES
- Ice Cave SW
- Ice Cave SE
- Shopping Mall SW
- Shopping Mall SE
- South Pass NC
- South Pass ES
- Dark South Pass NC
- Dark South Pass ES
- Octoballoon NW
- Octoballoon NE
- Octoballoon WC
- Octoballoon WS
- Bomber Corner NW
- Bomber Corner NE
- Bomber Corner WC
- Bomber Corner WS
- Hobo EC
borders:
- Zora Whirlpool
- Kakariko Pond Whirlpool
- Sanctuary EC
- Dark Chapel EC
- Graveyard WC
- Dark Graveyard WC
- River Bend Whirlpool
- Qirn Jump Whirlpool
- Wooden Bridge SW
- Broken Bridge SW
- Sand Dunes NW
- Dark Dunes NW
- Central Bonk Rocks EN
- Central Bonk Rocks EC
- Central Bonk Rocks ES
- Dark Bonk Rocks EN
- Dark Bonk Rocks EC
- Dark Bonk Rocks ES
- Links House WN
- Links House WC
- Links House WS
- Big Bomb Shop WN
- Big Bomb Shop WC
- Big Bomb Shop WS
- C Whirlpool EN
- C Whirlpool EC
- C Whirlpool ES
- C Whirlpool
- Dark C Whirlpool EN
- Dark C Whirlpool EC
- Dark C Whirlpool ES
- Statues WN
- Statues WC
- Statues WS
- Hype Cave WN
- Hype Cave WC
- Hype Cave WS
- Lake Hylia Whirlpool
- Dam EC
- Swamp EC
- South Pass WC
- Dark South Pass WC
- Octoballoon Whirlpool
- Bomber Corner Whirlpool
- Sanctuary EC
- Dark Chapel EC
- Graveyard WC
- Dark Graveyard WC
- Wooden Bridge SW
- Broken Bridge SW
- Sand Dunes NW
- Dark Dunes NW
- Central Bonk Rocks EN
- Central Bonk Rocks EC
- Central Bonk Rocks ES
- Dark Bonk Rocks EN
- Dark Bonk Rocks EC
- Dark Bonk Rocks ES
- Links House WN
- Links House WC
- Links House WS
- Big Bomb Shop WN
- Big Bomb Shop WC
- Big Bomb Shop WS
- C Whirlpool EN
- C Whirlpool EC
- C Whirlpool ES
- C Whirlpool
- Dark C Whirlpool EN
- Dark C Whirlpool EC
- Dark C Whirlpool ES
- Statues WN
- Statues WC
- Statues WS
- Hype Cave WN
- Hype Cave WC
- Hype Cave WS
- Dam EC
- Swamp EC
- South Pass WC
- Dark South Pass WC

View File

@@ -24,252 +24,252 @@ ow-edges:
Swamp EC*: Dark South Pass WC*
groups:
northwest:
- Lost Woods NW
- Lost Woods EN
- Lost Woods SW
- Lost Woods SC
- Lost Woods SE
- Skull Woods EN
- Skull Woods SW
- Skull Woods SC
- Skull Woods SE
- Lumberjack WN
- Lumberjack SW
- Dark Lumberjack WN
- Dark Lumberjack SW
- Mountain Pass NW
- Mountain Pass SE
- Bumper Cave NW
- Bumper Cave SE
- Lost Woods Pass NW
- Lost Woods Pass NE
- Lost Woods Pass SW
- Lost Woods Pass SE
- Skull Woods Pass NW
- Skull Woods Pass NE
- Skull Woods Pass SW
- Skull Woods Pass SE
- Kakariko Fortune NE
- Kakariko Fortune EN
- Kakariko Fortune ES
- Kakariko Fortune SC
- Dark Fortune NE
- Dark Fortune EN
- Dark Fortune ES
- Dark Fortune SC
- Kakariko Pond NE
- Kakariko Pond WN
- Kakariko Pond WS
- Kakariko Pond EN
- Kakariko Pond ES
- Kakariko Pond SW
- Kakariko Pond SE
- Outcast Pond NE
- Outcast Pond WN
- Outcast Pond WS
- Outcast Pond EN
- Outcast Pond ES
- Outcast Pond SW
- Outcast Pond SE
- Sanctuary WN
- Sanctuary WS
- Kakariko NW
- Kakariko NC
- Kakariko NE
- Dark Chapel WN
- Dark Chapel WS
- Village of Outcasts NW
- Village of Outcasts NC
- Village of Outcasts NE
- Forgotten Forest NW
- Forgotten Forest NE
- Forgotten Forest ES
- Shield Shop NW
- Shield Shop NE
- Hyrule Castle WN
- Master Sword Meadow SC
- Lost Woods NW
- Lost Woods EN
- Lost Woods SW
- Lost Woods SC
- Lost Woods SE
- Skull Woods EN
- Skull Woods SW
- Skull Woods SC
- Skull Woods SE
- Lumberjack WN
- Lumberjack SW
- Dark Lumberjack WN
- Dark Lumberjack SW
- Mountain Pass NW
- Mountain Pass SE
- Bumper Cave NW
- Bumper Cave SE
- Lost Woods Pass NW
- Lost Woods Pass NE
- Lost Woods Pass SW
- Lost Woods Pass SE
- Skull Woods Pass NW
- Skull Woods Pass NE
- Skull Woods Pass SW
- Skull Woods Pass SE
- Kakariko Fortune NE
- Kakariko Fortune EN
- Kakariko Fortune ES
- Kakariko Fortune SC
- Dark Fortune NE
- Dark Fortune EN
- Dark Fortune ES
- Dark Fortune SC
- Kakariko Pond NE
- Kakariko Pond WN
- Kakariko Pond WS
- Kakariko Pond EN
- Kakariko Pond ES
- Kakariko Pond SW
- Kakariko Pond SE
- Outcast Pond NE
- Outcast Pond WN
- Outcast Pond WS
- Outcast Pond EN
- Outcast Pond ES
- Outcast Pond SW
- Outcast Pond SE
- Sanctuary WN
- Sanctuary WS
- Kakariko NW
- Kakariko NC
- Kakariko NE
- Dark Chapel WN
- Dark Chapel WS
- Village of Outcasts NW
- Village of Outcasts NC
- Village of Outcasts NE
- Forgotten Forest NW
- Forgotten Forest NE
- Forgotten Forest ES
- Shield Shop NW
- Shield Shop NE
- Hyrule Castle WN
- Master Sword Meadow SC
northeast:
- West Death Mountain EN
- West Death Mountain ES
- West Dark Death Mountain EN
- West Dark Death Mountain ES
- East Death Mountain WN
- East Death Mountain WS
- East Death Mountain EN
- East Dark Death Mountain WN
- East Dark Death Mountain WS
- East Dark Death Mountain EN
- Death Mountain TR Pegs WN
- Turtle Rock WN
- Zora Waterfall NE
- Zora Waterfall SE
- Catfish SE
- Graveyard EC
- Dark Graveyard EC
- River Bend WC
- River Bend EN
- River Bend EC
- River Bend ES
- River Bend SW
- River Bend SC
- River Bend SE
- Qirn Jump WC
- Qirn Jump EN
- Qirn Jump EC
- Qirn Jump ES
- Qirn Jump SW
- Qirn Jump SC
- Qirn Jump SE
- Potion Shop WN
- Potion Shop WC
- Potion Shop WS
- Potion Shop EN
- Potion Shop EC
- Dark Witch WN
- Dark Witch WC
- Dark Witch WS
- Dark Witch EN
- Dark Witch EC
- Zora Approach NE
- Zora Approach WN
- Zora Approach WC
- Catfish Approach NE
- Catfish Approach WN
- Catfish Approach WC
- Wooden Bridge NW
- Wooden Bridge NC
- Wooden Bridge NE
- Broken Bridge NW
- Broken Bridge NC
- Broken Bridge NE
- Zoras Domain SW
- West Death Mountain EN
- West Death Mountain ES
- West Dark Death Mountain EN
- West Dark Death Mountain ES
- East Death Mountain WN
- East Death Mountain WS
- East Death Mountain EN
- East Dark Death Mountain WN
- East Dark Death Mountain WS
- East Dark Death Mountain EN
- Death Mountain TR Pegs WN
- Turtle Rock WN
- Zora Waterfall NE
- Zora Waterfall SE
- Catfish SE
- Graveyard EC
- Dark Graveyard EC
- River Bend WC
- River Bend EN
- River Bend EC
- River Bend ES
- River Bend SW
- River Bend SC
- River Bend SE
- Qirn Jump WC
- Qirn Jump EN
- Qirn Jump EC
- Qirn Jump ES
- Qirn Jump SW
- Qirn Jump SC
- Qirn Jump SE
- Potion Shop WN
- Potion Shop WC
- Potion Shop WS
- Potion Shop EN
- Potion Shop EC
- Dark Witch WN
- Dark Witch WC
- Dark Witch WS
- Dark Witch EN
- Dark Witch EC
- Zora Approach NE
- Zora Approach WN
- Zora Approach WC
- Catfish Approach NE
- Catfish Approach WN
- Catfish Approach WC
- Wooden Bridge NW
- Wooden Bridge NC
- Wooden Bridge NE
- Broken Bridge NW
- Broken Bridge NC
- Broken Bridge NE
- Zoras Domain SW
southwest:
- Kakariko ES
- Kakariko SE
- Village of Outcasts ES
- Village of Outcasts SE
- Hyrule Castle SW
- Pyramid SW
- Blacksmith WS
- Hammer Pegs WS
- Maze Race ES
- Dig Game EC
- Dig Game ES
- Kakariko Suburb NE
- Kakariko Suburb WS
- Kakariko Suburb ES
- Frog NE
- Frog WC
- Frog WS
- Frog ES
- Flute Boy WS
- Flute Boy SW
- Flute Boy SC
- Stumpy WS
- Stumpy SW
- Stumpy SC
- Central Bonk Rocks NW
- Central Bonk Rocks SW
- Dark Bonk Rocks NW
- Dark Bonk Rocks SW
- Desert EC
- Desert ES
- Flute Boy Approach NW
- Flute Boy Approach NC
- Flute Boy Approach EC
- Stumpy Approach NW
- Stumpy Approach NC
- Stumpy Approach EC
- C Whirlpool NW
- C Whirlpool WC
- C Whirlpool SC
- Dark C Whirlpool NW
- Dark C Whirlpool WC
- Dark C Whirlpool SC
- Desert Pass WC
- Desert Pass WS
- Desert Pass EC
- Desert Pass ES
- Swamp Nook EC
- Swamp Nook ES
- Dam NC
- Dam WC
- Dam WS
- Swamp NC
- Swamp WC
- Swamp WS
- Kakariko ES
- Kakariko SE
- Village of Outcasts ES
- Village of Outcasts SE
- Hyrule Castle SW
- Pyramid SW
- Blacksmith WS
- Hammer Pegs WS
- Maze Race ES
- Dig Game EC
- Dig Game ES
- Kakariko Suburb NE
- Kakariko Suburb WS
- Kakariko Suburb ES
- Frog NE
- Frog WC
- Frog WS
- Frog ES
- Flute Boy WS
- Flute Boy SW
- Flute Boy SC
- Stumpy WS
- Stumpy SW
- Stumpy SC
- Central Bonk Rocks NW
- Central Bonk Rocks SW
- Dark Bonk Rocks NW
- Dark Bonk Rocks SW
- Desert EC
- Desert ES
- Flute Boy Approach NW
- Flute Boy Approach NC
- Flute Boy Approach EC
- Stumpy Approach NW
- Stumpy Approach NC
- Stumpy Approach EC
- C Whirlpool NW
- C Whirlpool WC
- C Whirlpool SC
- Dark C Whirlpool NW
- Dark C Whirlpool WC
- Dark C Whirlpool SC
- Desert Pass WC
- Desert Pass WS
- Desert Pass EC
- Desert Pass ES
- Swamp Nook EC
- Swamp Nook ES
- Dam NC
- Dam WC
- Dam WS
- Swamp NC
- Swamp WC
- Swamp WS
southeast:
- Hyrule Castle ES
- Hyrule Castle SE
- Pyramid ES
- Pyramid SE
- Eastern Palace SW
- Eastern Palace SE
- Palace of Darkness SW
- Palace of Darkness SE
- Sand Dunes WN
- Sand Dunes SC
- Dark Dunes WN
- Dark Dunes SC
- Links House NE
- Links House SC
- Links House ES
- Big Bomb Shop NE
- Big Bomb Shop SC
- Big Bomb Shop ES
- Stone Bridge NC
- Stone Bridge WC
- Stone Bridge WS
- Stone Bridge EN
- Stone Bridge EC
- Stone Bridge SC
- Hammer Bridge NC
- Hammer Bridge WS
- Hammer Bridge EN
- Hammer Bridge EC
- Hammer Bridge SC
- Tree Line NW
- Tree Line WN
- Tree Line WC
- Tree Line SC
- Tree Line SE
- Dark Tree Line NW
- Dark Tree Line WN
- Dark Tree Line WC
- Dark Tree Line SC
- Dark Tree Line SE
- Eastern Nook NE
- Palace of Darkness Nook NE
- Statues NC
- Statues SC
- Hype Cave NC
- Hype Cave SC
- Lake Hylia NW
- Lake Hylia NC
- Lake Hylia NE
- Lake Hylia WS
- Lake Hylia EC
- Lake Hylia ES
- Ice Lake NW
- Ice Lake NC
- Ice Lake NE
- Ice Lake WS
- Ice Lake EC
- Ice Lake ES
- Ice Cave SW
- Ice Cave SE
- Shopping Mall SW
- Shopping Mall SE
- South Pass NC
- South Pass ES
- Dark South Pass NC
- Dark South Pass ES
- Octoballoon NW
- Octoballoon NE
- Octoballoon WC
- Octoballoon WS
- Bomber Corner NW
- Bomber Corner NE
- Bomber Corner WC
- Bomber Corner WS
- Hobo EC
- Hyrule Castle ES
- Hyrule Castle SE
- Pyramid ES
- Pyramid SE
- Eastern Palace SW
- Eastern Palace SE
- Palace of Darkness SW
- Palace of Darkness SE
- Sand Dunes WN
- Sand Dunes SC
- Dark Dunes WN
- Dark Dunes SC
- Links House NE
- Links House SC
- Links House ES
- Big Bomb Shop NE
- Big Bomb Shop SC
- Big Bomb Shop ES
- Stone Bridge NC
- Stone Bridge WC
- Stone Bridge WS
- Stone Bridge EN
- Stone Bridge EC
- Stone Bridge SC
- Hammer Bridge NC
- Hammer Bridge WS
- Hammer Bridge EN
- Hammer Bridge EC
- Hammer Bridge SC
- Tree Line NW
- Tree Line WN
- Tree Line WC
- Tree Line SC
- Tree Line SE
- Dark Tree Line NW
- Dark Tree Line WN
- Dark Tree Line WC
- Dark Tree Line SC
- Dark Tree Line SE
- Eastern Nook NE
- Palace of Darkness Nook NE
- Statues NC
- Statues SC
- Hype Cave NC
- Hype Cave SC
- Lake Hylia NW
- Lake Hylia NC
- Lake Hylia NE
- Lake Hylia WS
- Lake Hylia EC
- Lake Hylia ES
- Ice Lake NW
- Ice Lake NC
- Ice Lake NE
- Ice Lake WS
- Ice Lake EC
- Ice Lake ES
- Ice Cave SW
- Ice Cave SE
- Shopping Mall SW
- Shopping Mall SE
- South Pass NC
- South Pass ES
- Dark South Pass NC
- Dark South Pass ES
- Octoballoon NW
- Octoballoon NE
- Octoballoon WC
- Octoballoon WS
- Bomber Corner NW
- Bomber Corner NE
- Bomber Corner WC
- Bomber Corner WS
- Hobo EC

View File

@@ -0,0 +1,214 @@
ow-edges:
1:
two-way:
Lost Woods NW: Master Sword Meadow SC
Lost Woods EN*: Lumberjack WN*
Lost Woods SW*: Lost Woods Pass NW*
Lost Woods SC*: Lost Woods Pass NE*
Skull Woods EN*: Dark Lumberjack WN*
Skull Woods SW*: Skull Woods Pass NW*
Skull Woods SC*: Skull Woods Pass NE*
West Death Mountain EN*: East Death Mountain WN*
West Dark Death Mountain EN*: East Dark Death Mountain WN*
East Death Mountain EN*: Death Mountain TR Pegs WN*
East Dark Death Mountain EN*: Turtle Rock WN*
Zora Waterfall NE: Zoras Domain SW
Zora Waterfall SE*: Zora Approach NE*
Catfish SE*: Catfish Approach NE*
Lost Woods Pass SW*: Kakariko NW*
Lost Woods Pass SE*: Kakariko NC*
Skull Woods Pass SW*: Village of Outcasts NW*
Skull Woods Pass SE*: Village of Outcasts NC*
Eastern Palace SE*: Eastern Nook NE*
Palace of Darkness SE*: Palace of Darkness Nook NE*
Desert EC: Desert Pass WC
Desert ES: Desert Pass WS
Lake Hylia WS*: South Pass ES*
Lake Hylia EC*: Octoballoon WC*
Lake Hylia ES*: Octoballoon WS*
Ice Lake WS*: Dark South Pass ES*
Ice Lake EC*: Bomber Corner WC*
Ice Lake ES*: Bomber Corner WS*
Ice Cave SW*: Octoballoon NW*
Ice Cave SE*: Octoballoon NE*
Shopping Mall SW*: Bomber Corner NW*
Shopping Mall SE*: Bomber Corner NE*
Desert Pass EC*: Dam WC*
Desert Pass ES*: Dam WS*
Swamp Nook EC*: Swamp WC*
Swamp Nook ES*: Swamp WS*
Dam EC*: South Pass WC*
Swamp EC*: Dark South Pass WC*
Lost Woods SE*: Kakariko Fortune NE*
Skull Woods SE*: Dark Fortune NE*
West Death Mountain ES*: East Death Mountain WS*
West Dark Death Mountain ES*: East Dark Death Mountain WS*
Kakariko Fortune SC*: Kakariko NE*
Dark Fortune SC*: Village of Outcasts NE*
Kakariko SE*: Kakariko Suburb NE*
Village of Outcasts SE*: Frog NE*
Eastern Palace SW*: Tree Line NW*
Palace of Darkness SW*: Dark Tree Line NW*
Tree Line SC*: Lake Hylia NC*
Tree Line SE*: Lake Hylia NE*
Dark Tree Line SC*: Ice Lake NC*
Dark Tree Line SE*: Ice Lake NE*
Flute Boy Approach EC*: C Whirlpool WC*
Stumpy Approach EC*: Dark C Whirlpool WC*
C Whirlpool EN*: Statues WN*
C Whirlpool EC*: Statues WC*
C Whirlpool ES*: Statues WS*
Dark C Whirlpool EN*: Hype Cave WN*
Dark C Whirlpool EC*: Hype Cave WC*
Dark C Whirlpool ES*: Hype Cave WS*
Kakariko Pond EN*: Sanctuary WN*
Kakariko Pond ES*: Sanctuary WS*
Kakariko Pond SW*: Forgotten Forest NW*
Kakariko Pond SE*: Forgotten Forest NE*
Outcast Pond EN*: Dark Chapel WN*
Outcast Pond ES*: Dark Chapel WS*
Outcast Pond SW*: Shield Shop NW*
Outcast Pond SE*: Shield Shop NE*
Sanctuary EC*: Graveyard WC*
Dark Chapel EC*: Dark Graveyard WC*
Graveyard EC*: River Bend WC*
Dark Graveyard EC*: Qirn Jump WC*
River Bend SW*: Wooden Bridge NW*
River Bend SC*: Wooden Bridge NC*
River Bend SE*: Wooden Bridge NE*
Qirn Jump SW*: Broken Bridge NW*
Qirn Jump SC*: Broken Bridge NC*
Qirn Jump SE*: Broken Bridge NE*
Wooden Bridge SW*: Sand Dunes NW*
Broken Bridge SW*: Dark Dunes NW*
Sand Dunes SC*: Stone Bridge NC*
Dark Dunes SC*: Hammer Bridge NC*
Central Bonk Rocks EN*: Links House WN*
Central Bonk Rocks EC*: Links House WC*
Central Bonk Rocks ES*: Links House WS*
Dark Bonk Rocks EN*: Big Bomb Shop WN*
Dark Bonk Rocks EC*: Big Bomb Shop WC*
Dark Bonk Rocks ES*: Big Bomb Shop WS*
Links House ES*: Stone Bridge WS*
Big Bomb Shop ES*: Hammer Bridge WS*
Stone Bridge WC: Hobo EC
groups:
border12_nw:
- Potion Shop EN
- Potion Shop EC
- Dark Witch EN
- Dark Witch EC
- Zora Approach WN
- Zora Approach WC
- Catfish Approach WN
- Catfish Approach WC
- C Whirlpool SC
- Dark C Whirlpool SC
- Statues SC
- Hype Cave SC
- Dam NC
- Swamp NC
- South Pass NC
- Dark South Pass NC
border12_es:
- Lumberjack SW
- Dark Lumberjack SW
- Mountain Pass NW
- Bumper Cave NW
- Maze Race ES
- Dig Game EC
- Dig Game ES
- Kakariko Suburb WS
- Frog WC
- Frog WS
border23_nw:
- River Bend EN
- River Bend EC
- River Bend ES
- Qirn Jump EN
- Qirn Jump EC
- Qirn Jump ES
- Potion Shop WN
- Potion Shop WC
- Potion Shop WS
- Dark Witch WN
- Dark Witch WC
- Dark Witch WS
- Flute Boy SW
- Flute Boy SC
- Stumpy SW
- Stumpy SC
- Central Bonk Rocks SW
- Dark Bonk Rocks SW
- Links House SC
- Big Bomb Shop SC
- Stone Bridge EN
- Stone Bridge EC
- Stone Bridge SC
- Hammer Bridge EN
- Hammer Bridge EC
- Hammer Bridge SC
- Tree Line WN
- Tree Line WC
- Dark Tree Line WN
- Dark Tree Line WC
- Flute Boy Approach NW
- Flute Boy Approach NC
- Stumpy Approach NW
- Stumpy Approach NC
- C Whirlpool NW
- Dark C Whirlpool NW
- Statues NC
- Hype Cave NC
- Lake Hylia NW
- Ice Lake NW
border23_es:
- Mountain Pass SE
- Bumper Cave SE
- Kakariko Fortune EN
- Kakariko Fortune ES
- Dark Fortune EN
- Dark Fortune ES
- Kakariko Pond NE
- Kakariko Pond WN
- Kakariko Pond WS
- Outcast Pond NE
- Outcast Pond WN
- Outcast Pond WS
- Kakariko ES
- Village of Outcasts ES
- Blacksmith WS
- Hammer Pegs WS
- Kakariko Suburb ES
- Frog ES
- Flute Boy WS
- Stumpy WS
border34_nw:
- Hyrule Castle ES
- Hyrule Castle SW
- Hyrule Castle SE
- Pyramid ES
- Pyramid SW
- Pyramid SE
- Sand Dunes WN
- Dark Dunes WN
- Central Bonk Rocks NW
- Dark Bonk Rocks NW
- Links House NE
- Big Bomb Shop NE
border34_es:
- Forgotten Forest ES
- Hyrule Castle WN
ow-whirlpools:
1:
two-way:
Zora Whirlpool: Lake Hylia Whirlpool
ow-tileflips:
1:
force_together:
Forest:
- 0x1a
- 0x1b
FrogDig:
- 0x28
- 0x29

View File

@@ -0,0 +1,313 @@
ow-edges:
1:
groups:
ring1:
- Lost Woods NW
- Lost Woods EN
- Lost Woods SW
- Lost Woods SC
- Skull Woods EN
- Skull Woods SW
- Skull Woods SC
- Lumberjack WN
- Dark Lumberjack WN
- West Death Mountain EN
- West Dark Death Mountain EN
- East Death Mountain WN
- East Death Mountain EN
- East Dark Death Mountain WN
- East Dark Death Mountain EN
- Death Mountain TR Pegs WN
- Turtle Rock WN
- Zora Waterfall NE
- Zora Waterfall SE
- Catfish SE
- Lost Woods Pass NW
- Lost Woods Pass NE
- Lost Woods Pass SW
- Lost Woods Pass SE
- Skull Woods Pass NW
- Skull Woods Pass NE
- Skull Woods Pass SW
- Skull Woods Pass SE
- Zora Approach NE
- Catfish Approach NE
- Kakariko NW
- Kakariko NC
- Village of Outcasts NW
- Village of Outcasts NC
- Eastern Palace SE
- Palace of Darkness SE
- Eastern Nook NE
- Palace of Darkness Nook NE
- Desert EC
- Desert ES
- Lake Hylia WS
- Lake Hylia EC
- Lake Hylia ES
- Ice Lake WS
- Ice Lake EC
- Ice Lake ES
- Ice Cave SW
- Ice Cave SE
- Shopping Mall SW
- Shopping Mall SE
- Desert Pass WC
- Desert Pass WS
- Desert Pass EC
- Desert Pass ES
- Swamp Nook EC
- Swamp Nook ES
- Dam WC
- Dam WS
- Dam EC
- Swamp WC
- Swamp WS
- Swamp EC
- South Pass WC
- South Pass ES
- Dark South Pass WC
- Dark South Pass ES
- Octoballoon NW
- Octoballoon NE
- Octoballoon WC
- Octoballoon WS
- Bomber Corner NW
- Bomber Corner NE
- Bomber Corner WC
- Bomber Corner WS
- Master Sword Meadow SC
- Zoras Domain SW
ring2:
- Lost Woods SE
- Skull Woods SE
- West Death Mountain ES
- West Dark Death Mountain ES
- East Death Mountain WS
- East Dark Death Mountain WS
- Kakariko Fortune NE
- Kakariko Fortune SC
- Dark Fortune NE
- Dark Fortune SC
- Kakariko NE
- Kakariko SE
- Village of Outcasts NE
- Village of Outcasts SE
- Eastern Palace SW
- Palace of Darkness SW
- Kakariko Suburb NE
- Frog NE
- Tree Line NW
- Tree Line SC
- Tree Line SE
- Dark Tree Line NW
- Dark Tree Line SC
- Dark Tree Line SE
- Flute Boy Approach EC
- Stumpy Approach EC
- C Whirlpool WC
- C Whirlpool EN
- C Whirlpool EC
- C Whirlpool ES
- Dark C Whirlpool WC
- Dark C Whirlpool EN
- Dark C Whirlpool EC
- Dark C Whirlpool ES
- Statues WN
- Statues WC
- Statues WS
- Hype Cave WN
- Hype Cave WC
- Hype Cave WS
- Lake Hylia NC
- Lake Hylia NE
- Ice Lake NC
- Ice Lake NE
ring3:
- Kakariko Pond EN
- Kakariko Pond ES
- Kakariko Pond SW
- Kakariko Pond SE
- Outcast Pond EN
- Outcast Pond ES
- Outcast Pond SW
- Outcast Pond SE
- Sanctuary WN
- Sanctuary WS
- Sanctuary EC
- Dark Chapel WN
- Dark Chapel WS
- Dark Chapel EC
- Graveyard WC
- Graveyard EC
- Dark Graveyard WC
- Dark Graveyard EC
- River Bend WC
- River Bend SW
- River Bend SC
- River Bend SE
- Qirn Jump WC
- Qirn Jump SW
- Qirn Jump SC
- Qirn Jump SE
- Forgotten Forest NW
- Forgotten Forest NE
- Shield Shop NW
- Shield Shop NE
- Wooden Bridge NW
- Wooden Bridge NC
- Wooden Bridge NE
- Wooden Bridge SW
- Broken Bridge NW
- Broken Bridge NC
- Broken Bridge NE
- Broken Bridge SW
- Sand Dunes NW
- Sand Dunes SC
- Dark Dunes NW
- Dark Dunes SC
- Central Bonk Rocks EN
- Central Bonk Rocks EC
- Central Bonk Rocks ES
- Dark Bonk Rocks EN
- Dark Bonk Rocks EC
- Dark Bonk Rocks ES
- Links House WN
- Links House WC
- Links House WS
- Links House ES
- Big Bomb Shop WN
- Big Bomb Shop WC
- Big Bomb Shop WS
- Big Bomb Shop ES
- Stone Bridge NC
- Stone Bridge WC
- Stone Bridge WS
- Hammer Bridge NC
- Hammer Bridge WS
- Hobo EC
border12_nw:
- Potion Shop EN
- Potion Shop EC
- Dark Witch EN
- Dark Witch EC
- Zora Approach WN
- Zora Approach WC
- Catfish Approach WN
- Catfish Approach WC
- C Whirlpool SC
- Dark C Whirlpool SC
- Statues SC
- Hype Cave SC
- Dam NC
- Swamp NC
- South Pass NC
- Dark South Pass NC
border12_es:
- Lumberjack SW
- Dark Lumberjack SW
- Mountain Pass NW
- Bumper Cave NW
- Maze Race ES
- Dig Game EC
- Dig Game ES
- Kakariko Suburb WS
- Frog WC
- Frog WS
border23_nw:
- River Bend EN
- River Bend EC
- River Bend ES
- Qirn Jump EN
- Qirn Jump EC
- Qirn Jump ES
- Potion Shop WN
- Potion Shop WC
- Potion Shop WS
- Dark Witch WN
- Dark Witch WC
- Dark Witch WS
- Flute Boy SW
- Flute Boy SC
- Stumpy SW
- Stumpy SC
- Central Bonk Rocks SW
- Dark Bonk Rocks SW
- Links House SC
- Big Bomb Shop SC
- Stone Bridge EN
- Stone Bridge EC
- Stone Bridge SC
- Hammer Bridge EN
- Hammer Bridge EC
- Hammer Bridge SC
- Tree Line WN
- Tree Line WC
- Dark Tree Line WN
- Dark Tree Line WC
- Flute Boy Approach NW
- Flute Boy Approach NC
- Stumpy Approach NW
- Stumpy Approach NC
- C Whirlpool NW
- Dark C Whirlpool NW
- Statues NC
- Hype Cave NC
- Lake Hylia NW
- Ice Lake NW
border23_es:
- Mountain Pass SE
- Bumper Cave SE
- Kakariko Fortune EN
- Kakariko Fortune ES
- Dark Fortune EN
- Dark Fortune ES
- Kakariko Pond NE
- Kakariko Pond WN
- Kakariko Pond WS
- Outcast Pond NE
- Outcast Pond WN
- Outcast Pond WS
- Kakariko ES
- Village of Outcasts ES
- Blacksmith WS
- Hammer Pegs WS
- Kakariko Suburb ES
- Frog ES
- Flute Boy WS
- Stumpy WS
border34_nw:
- Hyrule Castle ES
- Hyrule Castle SW
- Hyrule Castle SE
- Pyramid ES
- Pyramid SW
- Pyramid SE
- Sand Dunes WN
- Dark Dunes WN
- Central Bonk Rocks NW
- Dark Bonk Rocks NW
- Links House NE
- Big Bomb Shop NE
border34_es:
- Forgotten Forest ES
- Hyrule Castle WN
ow-tileflips:
1:
force_together:
PedHobo:
- 0x00
- 0x2d
- 0x80
Zora:
- 0x0f
- 0x81
Forest:
- 0x1a
- 0x1b
FrogDig:
- 0x28
- 0x29
Desert:
- 0x30
- 0x3a

View File

@@ -0,0 +1,258 @@
ow-edges:
1:
two-way:
Lumberjack SW: Mountain Pass NW
Dark Lumberjack SW: Bumper Cave NW
Potion Shop EN: Zora Approach WN
Potion Shop EC: Zora Approach WC
Dark Witch EN: Catfish Approach WN
Dark Witch EC: Catfish Approach WC
Maze Race ES: Kakariko Suburb WS
Dig Game EC: Frog WC
Dig Game ES: Frog WS
C Whirlpool SC: Dam NC
Dark C Whirlpool SC: Swamp NC
Statues SC: South Pass NC
Hype Cave SC: Dark South Pass NC
Mountain Pass SE: Kakariko Pond NE
Bumper Cave SE: Outcast Pond NE
Kakariko Fortune EN: Kakariko Pond WN
Kakariko Fortune ES: Kakariko Pond WS
Dark Fortune EN: Outcast Pond WN
Dark Fortune ES: Outcast Pond WS
River Bend EN: Potion Shop WN
River Bend EC: Potion Shop WC
River Bend ES: Potion Shop WS
Qirn Jump EN: Dark Witch WN
Qirn Jump EC: Dark Witch WC
Qirn Jump ES: Dark Witch WS
Kakariko ES: Blacksmith WS
Village of Outcasts ES: Hammer Pegs WS
Kakariko Suburb ES: Flute Boy WS
Frog ES: Stumpy WS
Flute Boy SW: Flute Boy Approach NW
Flute Boy SC: Flute Boy Approach NC
Stumpy SW: Stumpy Approach NW
Stumpy SC: Stumpy Approach NC
Central Bonk Rocks SW: C Whirlpool NW
Dark Bonk Rocks SW: Dark C Whirlpool NW
Links House SC: Statues NC
Big Bomb Shop SC: Hype Cave NC
Stone Bridge EN: Tree Line WN
Stone Bridge EC: Tree Line WC
Stone Bridge SC: Lake Hylia NW
Hammer Bridge EN: Dark Tree Line WN
Hammer Bridge EC: Dark Tree Line WC
Hammer Bridge SC: Ice Lake NW
Forgotten Forest ES: Hyrule Castle WN
Hyrule Castle ES: Sand Dunes WN
Hyrule Castle SW: Central Bonk Rocks NW
Hyrule Castle SE: Links House NE
Pyramid ES: Dark Dunes WN
Pyramid SW: Dark Bonk Rocks NW
Pyramid SE: Big Bomb Shop NE
groups:
ring1:
- Lost Woods NW
- Lost Woods EN
- Lost Woods SW
- Lost Woods SC
- Skull Woods EN
- Skull Woods SW
- Skull Woods SC
- Lumberjack WN
- Dark Lumberjack WN
- West Death Mountain EN
- West Dark Death Mountain EN
- East Death Mountain WN
- East Death Mountain EN
- East Dark Death Mountain WN
- East Dark Death Mountain EN
- Death Mountain TR Pegs WN
- Turtle Rock WN
- Zora Waterfall NE
- Zora Waterfall SE
- Catfish SE
- Lost Woods Pass NW
- Lost Woods Pass NE
- Lost Woods Pass SW
- Lost Woods Pass SE
- Skull Woods Pass NW
- Skull Woods Pass NE
- Skull Woods Pass SW
- Skull Woods Pass SE
- Zora Approach NE
- Catfish Approach NE
- Kakariko NW
- Kakariko NC
- Village of Outcasts NW
- Village of Outcasts NC
- Eastern Palace SE
- Palace of Darkness SE
- Eastern Nook NE
- Palace of Darkness Nook NE
- Desert EC
- Desert ES
- Lake Hylia WS
- Lake Hylia EC
- Lake Hylia ES
- Ice Lake WS
- Ice Lake EC
- Ice Lake ES
- Ice Cave SW
- Ice Cave SE
- Shopping Mall SW
- Shopping Mall SE
- Desert Pass WC
- Desert Pass WS
- Desert Pass EC
- Desert Pass ES
- Swamp Nook EC
- Swamp Nook ES
- Dam WC
- Dam WS
- Dam EC
- Swamp WC
- Swamp WS
- Swamp EC
- South Pass WC
- South Pass ES
- Dark South Pass WC
- Dark South Pass ES
- Octoballoon NW
- Octoballoon NE
- Octoballoon WC
- Octoballoon WS
- Bomber Corner NW
- Bomber Corner NE
- Bomber Corner WC
- Bomber Corner WS
- Master Sword Meadow SC
- Zoras Domain SW
ring2:
- Lost Woods SE
- Skull Woods SE
- West Death Mountain ES
- West Dark Death Mountain ES
- East Death Mountain WS
- East Dark Death Mountain WS
- Kakariko Fortune NE
- Kakariko Fortune SC
- Dark Fortune NE
- Dark Fortune SC
- Kakariko NE
- Kakariko SE
- Village of Outcasts NE
- Village of Outcasts SE
- Eastern Palace SW
- Palace of Darkness SW
- Kakariko Suburb NE
- Frog NE
- Tree Line NW
- Tree Line SC
- Tree Line SE
- Dark Tree Line NW
- Dark Tree Line SC
- Dark Tree Line SE
- Flute Boy Approach EC
- Stumpy Approach EC
- C Whirlpool WC
- C Whirlpool EN
- C Whirlpool EC
- C Whirlpool ES
- Dark C Whirlpool WC
- Dark C Whirlpool EN
- Dark C Whirlpool EC
- Dark C Whirlpool ES
- Statues WN
- Statues WC
- Statues WS
- Hype Cave WN
- Hype Cave WC
- Hype Cave WS
- Lake Hylia NC
- Lake Hylia NE
- Ice Lake NC
- Ice Lake NE
ring3:
- Kakariko Pond EN
- Kakariko Pond ES
- Kakariko Pond SW
- Kakariko Pond SE
- Outcast Pond EN
- Outcast Pond ES
- Outcast Pond SW
- Outcast Pond SE
- Sanctuary WN
- Sanctuary WS
- Sanctuary EC
- Dark Chapel WN
- Dark Chapel WS
- Dark Chapel EC
- Graveyard WC
- Graveyard EC
- Dark Graveyard WC
- Dark Graveyard EC
- River Bend WC
- River Bend SW
- River Bend SC
- River Bend SE
- Qirn Jump WC
- Qirn Jump SW
- Qirn Jump SC
- Qirn Jump SE
- Forgotten Forest NW
- Forgotten Forest NE
- Shield Shop NW
- Shield Shop NE
- Wooden Bridge NW
- Wooden Bridge NC
- Wooden Bridge NE
- Wooden Bridge SW
- Broken Bridge NW
- Broken Bridge NC
- Broken Bridge NE
- Broken Bridge SW
- Sand Dunes NW
- Sand Dunes SC
- Dark Dunes NW
- Dark Dunes SC
- Central Bonk Rocks EN
- Central Bonk Rocks EC
- Central Bonk Rocks ES
- Dark Bonk Rocks EN
- Dark Bonk Rocks EC
- Dark Bonk Rocks ES
- Links House WN
- Links House WC
- Links House WS
- Links House ES
- Big Bomb Shop WN
- Big Bomb Shop WC
- Big Bomb Shop WS
- Big Bomb Shop ES
- Stone Bridge NC
- Stone Bridge WC
- Stone Bridge WS
- Hammer Bridge NC
- Hammer Bridge WS
- Hobo EC
ow-whirlpools:
1:
two-way:
Kakariko Pond Whirlpool: Octoballoon Whirlpool
Qirn Jump Whirlpool: Bomber Corner Whirlpool
River Bend Whirlpool: C Whirlpool
ow-tileflips:
1:
force_together:
PedHobo:
- 0x00
- 0x2d
- 0x80
Zora:
- 0x0f
- 0x81
Desert:
- 0x30
- 0x3a

View File

@@ -202,9 +202,9 @@ ow-edges:
ow-tileflips:
1:
force_together:
1:
Pedestal:
- 0x00
- 0x80
2:
Zora:
- 0x0f
- 0x81

View File

@@ -2,15 +2,15 @@ ow-edges:
1:
groups:
mountain:
- West Death Mountain EN
- West Death Mountain ES
- West Dark Death Mountain EN
- West Dark Death Mountain ES
- East Death Mountain WN
- East Death Mountain WS
- East Death Mountain EN
- East Dark Death Mountain WN
- East Dark Death Mountain WS
- East Dark Death Mountain EN
- Death Mountain TR Pegs WN
- Turtle Rock WN
- West Death Mountain EN
- West Death Mountain ES
- West Dark Death Mountain EN
- West Dark Death Mountain ES
- East Death Mountain WN
- East Death Mountain WS
- East Death Mountain EN
- East Dark Death Mountain WN
- East Dark Death Mountain WS
- East Dark Death Mountain EN
- Death Mountain TR Pegs WN
- Turtle Rock WN

View File

@@ -0,0 +1,123 @@
settings:
1:
ow_terrain: false
ow-edges:
1:
groups:
similar_2_left_top:
- Lost Woods SW
- Skull Woods SW
- Lost Woods Pass NW
- Lost Woods Pass SW
- Skull Woods Pass NW
- Skull Woods Pass SW
- Kakariko Fortune EN
- Dark Fortune EN
- Kakariko Pond WN
- Kakariko Pond EN
- Kakariko Pond SW
- Outcast Pond WN
- Outcast Pond EN
- Outcast Pond SW
- Sanctuary WN
- Dark Chapel WN
- River Bend EC
- River Bend SW
- Qirn Jump EC
- Qirn Jump SW
- Potion Shop WC
- Dark Witch WC
- Kakariko NW
- Village of Outcasts NW
- Forgotten Forest NW
- Shield Shop NW
- Wooden Bridge NW
- Broken Bridge NW
- Dig Game EC
- Frog WC
- Flute Boy SW
- Stumpy SW
- Desert EC
- Flute Boy Approach NW
- Stumpy Approach NW
- C Whirlpool EN
- Dark C Whirlpool EN
- Statues WN
- Hype Cave WN
- Desert Pass WC
- Desert Pass EC
- Swamp Nook EC
- Dam WC
- Swamp WC
similar_2_right_bottom:
- Lost Woods SC
- Skull Woods SC
- Lost Woods Pass NE
- Lost Woods Pass SE
- Skull Woods Pass NE
- Skull Woods Pass SE
- Kakariko Fortune ES
- Dark Fortune ES
- Kakariko Pond WS
- Kakariko Pond ES
- Kakariko Pond SE
- Outcast Pond WS
- Outcast Pond ES
- Outcast Pond SE
- Sanctuary WS
- Dark Chapel WS
- River Bend ES
- River Bend SE
- Qirn Jump ES
- Qirn Jump SE
- Potion Shop WS
- Dark Witch WS
- Kakariko NC
- Village of Outcasts NC
- Forgotten Forest NE
- Shield Shop NE
- Wooden Bridge NE
- Broken Bridge NE
- Dig Game ES
- Frog WS
- Flute Boy SC
- Stumpy SC
- Desert ES
- Flute Boy Approach NC
- Stumpy Approach NC
- C Whirlpool ES
- Dark C Whirlpool ES
- Statues WS
- Hype Cave WS
- Desert Pass WS
- Desert Pass ES
- Swamp Nook ES
- Dam WS
- Swamp WS
similar_3_left_top:
- Central Bonk Rocks EN
- Dark Bonk Rocks EN
- Links House WN
- Big Bomb Shop WN
similar_3_middle:
- Central Bonk Rocks EC
- Dark Bonk Rocks EC
- Links House WC
- Big Bomb Shop WC
similar_3_right_bottom:
- Central Bonk Rocks ES
- Dark Bonk Rocks ES
- Links House WS
- Big Bomb Shop WS
ow-tileflips:
1:
force_together:
Forest:
- 0x1a
- 0x1b
FrogDig:
- 0x28
- 0x29
Desert:
- 0x30
- 0x3a

View File

@@ -0,0 +1,175 @@
settings:
1:
ow_terrain: true
ow-edges:
1:
groups:
similar_2_left_top:
- Lost Woods SW
- Skull Woods SW
- Lost Woods Pass NW
- Lost Woods Pass SW
- Skull Woods Pass NW
- Skull Woods Pass SW
- Kakariko Fortune EN
- Dark Fortune EN
- Kakariko Pond WN
- Kakariko Pond EN
- Kakariko Pond SW
- Outcast Pond WN
- Outcast Pond EN
- Outcast Pond SW
- Sanctuary WN
- Dark Chapel WN
- Potion Shop EN
- Dark Witch EN
- Zora Approach WN
- Catfish Approach WN
- Kakariko NW
- Village of Outcasts NW
- Forgotten Forest NW
- Shield Shop NW
- Dig Game EC
- Frog WC
- Flute Boy SW
- Stumpy SW
- Stone Bridge EN
- Hammer Bridge EN
- Tree Line WN
- Tree Line SC
- Dark Tree Line WN
- Dark Tree Line SC
- Desert EC
- Flute Boy Approach NW
- Stumpy Approach NW
- Lake Hylia NC
- Lake Hylia EC
- Ice Lake NC
- Ice Lake EC
- Ice Cave SW
- Shopping Mall SW
- Desert Pass WC
- Desert Pass EC
- Swamp Nook EC
- Dam WC
- Swamp WC
- Octoballoon NW
- Octoballoon WC
- Bomber Corner NW
- Bomber Corner WC
similar_2_right_bottom:
- Lost Woods SC
- Skull Woods SC
- Lost Woods Pass NE
- Lost Woods Pass SE
- Skull Woods Pass NE
- Skull Woods Pass SE
- Kakariko Fortune ES
- Dark Fortune ES
- Kakariko Pond WS
- Kakariko Pond ES
- Kakariko Pond SE
- Outcast Pond WS
- Outcast Pond ES
- Outcast Pond SE
- Sanctuary WS
- Dark Chapel WS
- Potion Shop EC
- Dark Witch EC
- Zora Approach WC
- Catfish Approach WC
- Kakariko NC
- Village of Outcasts NC
- Forgotten Forest NE
- Shield Shop NE
- Dig Game ES
- Frog WS
- Flute Boy SC
- Stumpy SC
- Stone Bridge EC
- Hammer Bridge EC
- Tree Line WC
- Tree Line SE
- Dark Tree Line WC
- Dark Tree Line SE
- Desert ES
- Flute Boy Approach NC
- Stumpy Approach NC
- Lake Hylia NE
- Lake Hylia ES
- Ice Lake NE
- Ice Lake ES
- Ice Cave SE
- Shopping Mall SE
- Desert Pass WS
- Desert Pass ES
- Swamp Nook ES
- Dam WS
- Swamp WS
- Octoballoon NE
- Octoballoon WS
- Bomber Corner NE
- Bomber Corner WS
similar_3_left_top:
- River Bend EN
- River Bend SW
- Qirn Jump EN
- Qirn Jump SW
- Potion Shop WN
- Dark Witch WN
- Wooden Bridge NW
- Broken Bridge NW
- Central Bonk Rocks EN
- Dark Bonk Rocks EN
- Links House WN
- Big Bomb Shop WN
- C Whirlpool EN
- Dark C Whirlpool EN
- Statues WN
- Hype Cave WN
similar_3_middle:
- River Bend EC
- River Bend SC
- Qirn Jump EC
- Qirn Jump SC
- Potion Shop WC
- Dark Witch WC
- Wooden Bridge NC
- Broken Bridge NC
- Central Bonk Rocks EC
- Dark Bonk Rocks EC
- Links House WC
- Big Bomb Shop WC
- C Whirlpool EC
- Dark C Whirlpool EC
- Statues WC
- Hype Cave WC
similar_3_right_bottom:
- River Bend ES
- River Bend SE
- Qirn Jump ES
- Qirn Jump SE
- Potion Shop WS
- Dark Witch WS
- Wooden Bridge NE
- Broken Bridge NE
- Central Bonk Rocks ES
- Dark Bonk Rocks ES
- Links House WS
- Big Bomb Shop WS
- C Whirlpool ES
- Dark C Whirlpool ES
- Statues WS
- Hype Cave WS
ow-tileflips:
1:
force_together:
Forest:
- 0x1a
- 0x1b
FrogDig:
- 0x28
- 0x29
Desert:
- 0x30
- 0x3a

View File

@@ -79,9 +79,9 @@ ow-edges:
ow-tileflips:
1:
force_together:
1:
Pedestal:
- 0x00
- 0x80
2:
Zora:
- 0x0f
- 0x81

View File

@@ -219,9 +219,9 @@ ow-edges:
ow-tileflips:
1:
force_together:
1:
Pedestal:
- 0x00
- 0x80
2:
Zora:
- 0x0f
- 0x81

View File

@@ -72,11 +72,13 @@ def generate_dungeon_find_proposal(builder, entrance_region_names, split_dungeon
entrance_regions = [x for x in entrance_regions if x not in excluded.keys()]
doors_to_connect, idx = {}, 0
all_regions = set()
bk_special = False
for sector in builder.sectors:
for door in sector.outstanding_doors:
doors_to_connect[door.name] = door, idx
idx += 1
all_regions.update(sector.regions)
bk_special |= check_for_special(sector.regions)
finished = False
# flag if standard and this is hyrule castle
paths = determine_paths_for_dungeon(world, player, all_regions, name)
@@ -95,9 +97,9 @@ def generate_dungeon_find_proposal(builder, entrance_region_names, split_dungeon
if hash_code not in hash_code_set:
hash_code_set.add(hash_code)
explored_state = explore_proposal(name, entrance_regions, all_regions, proposed_map, doors_to_connect,
world, player)
bk_special, world, player)
if check_valid(name, explored_state, proposed_map, doors_to_connect, all_regions,
paths, entrance_regions, world, player):
paths, entrance_regions, bk_special, world, player):
finished = True
else:
proposed_map, hash_code = modify_proposal(proposed_map, explored_state, doors_to_connect,
@@ -229,21 +231,24 @@ def modify_proposal(proposed_map, explored_state, doors_to_connect, hash_code_se
return proposed_map, hash_code
def explore_proposal(name, entrance_regions, all_regions, proposed_map, valid_doors, world, player):
def explore_proposal(name, entrance_regions, all_regions, proposed_map, valid_doors, bk_special, world, player):
start = ExplorationState(dungeon=name)
bk_relevant = (world.door_type_mode[player] == 'original' and not world.bigkeyshuffle[player]) or bk_special
start.big_key_special = bk_special
original_state = extend_reachable_state_lenient(entrance_regions, start, proposed_map,
all_regions, valid_doors, world, player)
all_regions, valid_doors, bk_relevant, world, player)
return original_state
def check_valid(name, exploration_state, proposed_map, doors_to_connect, all_regions,
paths, entrance_regions, world, player):
paths, entrance_regions, bk_special, world, player):
all_visited = set()
all_visited.update(exploration_state.visited_blue)
all_visited.update(exploration_state.visited_orange)
if len(all_regions.difference(all_visited)) > 0:
return False
if not valid_paths(name, paths, entrance_regions, doors_to_connect, all_regions, proposed_map, world, player):
if not valid_paths(name, paths, entrance_regions, doors_to_connect, all_regions, proposed_map,
bk_special, world, player):
return False
return True
@@ -266,7 +271,7 @@ def check_for_special(regions):
return False
def valid_paths(name, paths, entrance_regions, valid_doors, all_regions, proposed_map, world, player):
def valid_paths(name, paths, entrance_regions, valid_doors, all_regions, proposed_map, bk_special, world, player):
for path in paths:
if type(path) is tuple:
target = path[1]
@@ -278,12 +283,13 @@ def valid_paths(name, paths, entrance_regions, valid_doors, all_regions, propose
else:
target = path
start_regions = entrance_regions
if not valid_path(name, start_regions, target, valid_doors, proposed_map, all_regions, world, player):
if not valid_path(name, start_regions, target, valid_doors, proposed_map, all_regions,
bk_special, world, player):
return False
return True
def valid_path(name, starting_regions, target, valid_doors, proposed_map, all_regions, world, player):
def valid_path(name, starting_regions, target, valid_doors, proposed_map, all_regions, bk_special, world, player):
target_regions = set()
if type(target) is not list:
for region in all_regions:
@@ -296,8 +302,10 @@ def valid_path(name, starting_regions, target, valid_doors, proposed_map, all_re
target_regions.add(region)
start = ExplorationState(dungeon=name)
bk_relevant = (world.door_type_mode[player] == 'original' and not world.bigkeyshuffle[player]) or bk_special
start.big_key_special = bk_special
original_state = extend_reachable_state_lenient(starting_regions, start, proposed_map, all_regions,
valid_doors, world, player)
valid_doors, bk_relevant, world, player)
for exp_door in original_state.unattached_doors:
if not exp_door.door.blocked or exp_door.door.trapFlag != 0:
@@ -531,7 +539,7 @@ class ExplorationState(object):
self.crystal = exp_door.crystal
return exp_door
def visit_region(self, region, key_region=None, key_checks=False, bk_flag=False):
def visit_region(self, region, key_region=None, key_checks=False, bk_relevant=False):
if region.type != RegionType.Dungeon:
self.crystal = CrystalBarrier.Orange
if self.crystal == CrystalBarrier.Either:
@@ -552,8 +560,14 @@ class ExplorationState(object):
self.ttl_locations += 1
if location not in self.found_locations:
self.found_locations.append(location)
if not bk_flag:
self.bk_found.add(location)
if bk_relevant:
if self.big_key_special:
if special_big_key_found(self):
self.bk_found.add(location)
self.re_add_big_key_doors()
else:
self.bk_found.add(location)
self.re_add_big_key_doors()
if location.name in dungeon_events and location.name not in self.events:
if self.flooded_key_check(location):
self.perform_event(location.name, key_region)
@@ -574,6 +588,14 @@ class ExplorationState(object):
return True
return False
def re_add_big_key_doors(self):
self.big_key_opened = True
queue = collections.deque(self.big_doors)
while len(queue) > 0:
exp_door = queue.popleft()
self.avail_doors.append(exp_door)
self.big_doors.remove(exp_door)
def perform_event(self, location_name, key_region):
self.events.add(location_name)
queue = collections.deque(self.event_doors)
@@ -640,7 +662,7 @@ class ExplorationState(object):
self.append_door_to_list(door, self.avail_doors, flag)
# same as above but traps are ignored, and flag is not used
def add_all_doors_check_proposed_2(self, region, proposed_map, valid_doors, world, player):
def add_all_doors_check_proposed_2(self, region, proposed_map, valid_doors, bk_relevant, world, player):
for door in get_doors(world, region, player):
if door in proposed_map and door.name in valid_doors:
self.visited_doors.add(door)
@@ -654,14 +676,18 @@ class ExplorationState(object):
other = self.find_door_in_list(door, self.unattached_doors)
if self.crystal != other.crystal:
other.crystal = CrystalBarrier.Either
elif door.req_event is not None and door.req_event not in self.events and not self.in_door_list(door,
self.event_doors):
elif (door.req_event is not None and door.req_event not in self.events
and not self.in_door_list(door, self.event_doors)):
self.append_door_to_list(door, self.event_doors)
elif (bk_relevant and (door.bigKey or door.name in get_special_big_key_doors(world, player))
and not self.big_key_opened):
if not self.in_door_list(door, self.big_doors):
self.append_door_to_list(door, self.big_doors)
elif not self.in_door_list(door, self.avail_doors):
self.append_door_to_list(door, self.avail_doors)
# same as above but traps are checked for
def add_all_doors_check_proposed_3(self, region, proposed_map, valid_doors, world, player):
def add_all_doors_check_proposed_3(self, region, proposed_map, valid_doors, bk_relevant, world, player):
for door in get_doors(world, region, player):
if door in proposed_map and door.name in valid_doors:
self.visited_doors.add(door)
@@ -675,9 +701,13 @@ class ExplorationState(object):
other = self.find_door_in_list(door, self.unattached_doors)
if self.crystal != other.crystal:
other.crystal = CrystalBarrier.Either
elif door.req_event is not None and door.req_event not in self.events and not self.in_door_list(door,
self.event_doors):
elif (door.req_event is not None and door.req_event not in self.events
and not self.in_door_list(door, self.event_doors)):
self.append_door_to_list(door, self.event_doors)
elif (bk_relevant and (door.bigKey or door.name in get_special_big_key_doors(world, player))
and not self.big_key_opened):
if not self.in_door_list(door, self.big_doors):
self.append_door_to_list(door, self.big_doors)
elif not self.in_door_list(door, self.avail_doors):
self.append_door_to_list(door, self.avail_doors)
@@ -863,16 +893,22 @@ def extend_reachable_state_improved(search_regions, state, proposed_map, all_reg
return local_state
def extend_reachable_state_lenient(search_regions, state, proposed_map, all_regions, valid_doors, world, player):
# bk_relevant means the big key doors need to be checks
def extend_reachable_state_lenient(search_regions, state, proposed_map, all_regions, valid_doors, bk_relevant,
world, player):
local_state = state.copy()
for region in search_regions:
local_state.visit_region(region)
local_state.visit_region(region, bk_relevant=bk_relevant)
if world.trap_door_mode[player] == 'vanilla':
local_state.add_all_doors_check_proposed_3(region, proposed_map, valid_doors, world, player)
local_state.add_all_doors_check_proposed_3(region, proposed_map, valid_doors, bk_relevant, world, player)
else:
local_state.add_all_doors_check_proposed_2(region, proposed_map, valid_doors, world, player)
local_state.add_all_doors_check_proposed_2(region, proposed_map, valid_doors, bk_relevant, world, player)
while len(local_state.avail_doors) > 0:
explorable_door = local_state.next_avail_door()
if explorable_door.door.bigKey:
if bk_relevant and (not special_big_key_found(local_state) if local_state.big_key_special
else local_state.count_locations_exclude_specials(world, player) == 0):
continue
if explorable_door.door in proposed_map:
connect_region = world.get_entrance(proposed_map[explorable_door.door].name, player).parent_region
else:
@@ -880,11 +916,13 @@ def extend_reachable_state_lenient(search_regions, state, proposed_map, all_regi
if connect_region is not None:
if (valid_region_to_explore_in_regions(connect_region, all_regions, world, player)
and not local_state.visited(connect_region)):
local_state.visit_region(connect_region)
local_state.visit_region(connect_region, bk_relevant=bk_relevant)
if world.trap_door_mode[player] == 'vanilla':
local_state.add_all_doors_check_proposed_3(connect_region, proposed_map, valid_doors, world, player)
local_state.add_all_doors_check_proposed_3(connect_region, proposed_map, valid_doors,
bk_relevant, world, player)
else:
local_state.add_all_doors_check_proposed_2(connect_region, proposed_map, valid_doors, world, player)
local_state.add_all_doors_check_proposed_2(connect_region, proposed_map, valid_doors,
bk_relevant, world, player)
return local_state

View File

@@ -0,0 +1,14 @@
meta:
players: 1
settings:
1:
door_shuffle: crossed
intensity: 3
mode: standard
pottery: keys
dropshuffle: 'on'
doors:
1:
doors:
Hyrule Dungeon Cellblock Up Stairs:
dest: Ice Hammer Block Down Stairs