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):