LttP: make sure Hyrule Castle Small Key in Standard + keyshuffle is reachable in first sphere of any such players
This commit is contained in:
parent
9d6fa855d8
commit
3ed7092af5
|
@ -258,10 +258,26 @@ class ALTTPWorld(World):
|
||||||
trash_counts[player] = world.random.randint(0, world.crystals_needed_for_gt[player] * 2)
|
trash_counts[player] = world.random.randint(0, world.crystals_needed_for_gt[player] * 2)
|
||||||
|
|
||||||
# Make sure the escape small key is placed first in standard with key shuffle to prevent running out of spots
|
# Make sure the escape small key is placed first in standard with key shuffle to prevent running out of spots
|
||||||
|
# TODO: this might be worthwhile to introduce as generic option for various games and then optimize it
|
||||||
if standard_keyshuffle_players:
|
if standard_keyshuffle_players:
|
||||||
progitempool.sort(
|
viable = []
|
||||||
key=lambda item: 1 if item.name == 'Small Key (Hyrule Castle)' and
|
for location in world.get_locations():
|
||||||
item.player in standard_keyshuffle_players else 0)
|
if location.player in standard_keyshuffle_players \
|
||||||
|
and location.item is None \
|
||||||
|
and location.can_reach(world.state):
|
||||||
|
viable.append(location)
|
||||||
|
world.random.shuffle(viable)
|
||||||
|
for player in standard_keyshuffle_players:
|
||||||
|
key = world.create_item("Small Key (Hyrule Castle)", player)
|
||||||
|
loc = viable.pop()
|
||||||
|
loc.place_locked_item(key)
|
||||||
|
logging.info(loc)
|
||||||
|
fill_locations.remove(loc)
|
||||||
|
world.random.shuffle(fill_locations)
|
||||||
|
# TODO: investigate not creating the key in the first place
|
||||||
|
progitempool[:] = [item for item in progitempool if
|
||||||
|
item.player not in standard_keyshuffle_players or
|
||||||
|
item.name != "Small Key (Hyrule Castle)"]
|
||||||
|
|
||||||
if trash_counts:
|
if trash_counts:
|
||||||
locations_mapping = {player: [] for player in trash_counts}
|
locations_mapping = {player: [] for player in trash_counts}
|
||||||
|
|
Loading…
Reference in New Issue