From 8d260708d31abebdaf9f0ec10bf5eab0bad2cab7 Mon Sep 17 00:00:00 2001 From: espeon65536 Date: Fri, 11 Feb 2022 23:17:28 -0600 Subject: [PATCH] OoT: ER fixes Don't allow beatable only to influence priority placements Shuffle spawns after warp songs to prevent spawn points going to Desert Colossus Prevent child spawn from priority placing at Colossus if overworld ER is off --- worlds/oot/EntranceShuffle.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/worlds/oot/EntranceShuffle.py b/worlds/oot/EntranceShuffle.py index d781cb56..9008ccdf 100644 --- a/worlds/oot/EntranceShuffle.py +++ b/worlds/oot/EntranceShuffle.py @@ -365,15 +365,15 @@ def shuffle_random_entrances(ootworld): if ootworld.owl_drops: one_way_entrance_pools['OwlDrop'] = ootworld.get_shufflable_entrances(type='OwlDrop') - if ootworld.spawn_positions: - one_way_entrance_pools['Spawn'] = ootworld.get_shufflable_entrances(type='Spawn') if ootworld.warp_songs: one_way_entrance_pools['WarpSong'] = ootworld.get_shufflable_entrances(type='WarpSong') - if world.accessibility[player].current_key != 'minimal' and ootworld.logic_rules == 'glitchless': + if ootworld.logic_rules == 'glitchless': one_way_priorities['Bolero'] = priority_entrance_table['Bolero'] one_way_priorities['Nocturne'] = priority_entrance_table['Nocturne'] if not ootworld.shuffle_dungeon_entrances and not ootworld.shuffle_overworld_entrances: one_way_priorities['Requiem'] = priority_entrance_table['Requiem'] + if ootworld.spawn_positions: + one_way_entrance_pools['Spawn'] = ootworld.get_shufflable_entrances(type='Spawn') if ootworld.shuffle_dungeon_entrances: entrance_pools['Dungeon'] = ootworld.get_shufflable_entrances(type='Dungeon', only_primary=True) @@ -577,11 +577,16 @@ def place_one_way_priority_entrance(ootworld, priority_name, allowed_regions, al for entrance in avail_pool: if entrance.replaces: continue + # With mask hints, child needs to be able to access the gossip stone. if entrance.parent_region.name == 'Adult Spawn' and (priority_name != 'Nocturne' or ootworld.hints == 'mask'): continue + # With dungeons unshuffled, adult needs to be able to access Shadow Temple. if not ootworld.shuffle_dungeon_entrances and priority_name == 'Nocturne': if entrance.type != 'WarpSong' and entrance.parent_region.name != 'Adult Spawn': continue + # With overworld unshuffled, child can't spawn at Desert Colossus + if not ootworld.shuffle_overworld_entrances and priority_name == 'Requiem' and entrance.parent_region.name == 'Child Spawn': + continue for target in one_way_target_entrance_pools[entrance.type]: if target.connected_region and target.connected_region.name in allowed_regions: if replace_entrance(ootworld, entrance, target, rollbacks, locations_to_ensure_reachable, all_state, none_state):