OoT: ensure that the last entrance placed in a one-way pool doesn't assume the other targets are reachable
This commit is contained in:
parent
b217e734cb
commit
cc3d5e60a1
|
@ -1,7 +1,7 @@
|
||||||
from itertools import chain
|
from itertools import chain
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
from worlds.generic.Rules import set_rule
|
from worlds.generic.Rules import set_rule, add_rule
|
||||||
|
|
||||||
from .Hints import get_hint_area, HintAreaNotFound
|
from .Hints import get_hint_area, HintAreaNotFound
|
||||||
from .Regions import TimeOfDay
|
from .Regions import TimeOfDay
|
||||||
|
@ -425,7 +425,9 @@ def shuffle_random_entrances(ootworld):
|
||||||
elif pool_type in {'Spawn', 'WarpSong'}:
|
elif pool_type in {'Spawn', 'WarpSong'}:
|
||||||
valid_target_types = ('Spawn', 'WarpSong', 'OwlDrop', 'Overworld', 'Interior', 'SpecialInterior', 'Extra')
|
valid_target_types = ('Spawn', 'WarpSong', 'OwlDrop', 'Overworld', 'Interior', 'SpecialInterior', 'Extra')
|
||||||
one_way_target_entrance_pools[pool_type] = build_one_way_targets(ootworld, valid_target_types)
|
one_way_target_entrance_pools[pool_type] = build_one_way_targets(ootworld, valid_target_types)
|
||||||
# Ensure that the last entrance doesn't assume the rest of the targets are reachable?
|
# Ensure that the last entrance doesn't assume the rest of the targets are reachable
|
||||||
|
for target in one_way_target_entrance_pools[pool_type]:
|
||||||
|
add_rule(target, (lambda entrances=entrance_pool: (lambda state: any(entrance.connected_region == None for entrance in entrances)))())
|
||||||
# Disconnect one-way entrances for priority placement
|
# Disconnect one-way entrances for priority placement
|
||||||
for entrance in chain.from_iterable(one_way_entrance_pools.values()):
|
for entrance in chain.from_iterable(one_way_entrance_pools.values()):
|
||||||
entrance.disconnect()
|
entrance.disconnect()
|
||||||
|
|
Loading…
Reference in New Issue