Separate doorShuffle for each player

Add doorShuffle to spoiler metadata
This commit is contained in:
compiling
2020-01-11 12:01:21 +11:00
parent a3a706d8c1
commit 4d35a02e99
6 changed files with 32 additions and 28 deletions

View File

@@ -39,7 +39,7 @@ def link_doors(world, player):
for ent, ext in ladders:
connect_two_way(world, ent, ext, player)
if world.doorShuffle == 'vanilla':
if world.doorShuffle[player] == 'vanilla':
for exitName, regionName in vanilla_logical_connections:
connect_simple_door(world, exitName, regionName, player)
for entrance, ext in spiral_staircases:
@@ -49,14 +49,14 @@ def link_doors(world, player):
for ent, ext in default_one_way_connections:
connect_one_way(world, ent, ext, player)
vanilla_key_logic(world, player)
elif world.doorShuffle == 'basic':
elif world.doorShuffle[player] == 'basic':
within_dungeon(world, player)
elif world.doorShuffle == 'crossed':
elif world.doorShuffle[player] == 'crossed':
cross_dungeon(world, player)
elif world.doorShuffle == 'experimental':
elif world.doorShuffle[player] == 'experimental':
experiment(world, player)
if world.doorShuffle != 'vanilla':
if world.doorShuffle[player] != 'vanilla':
create_door_spoiler(world, player)
@@ -83,7 +83,7 @@ def mark_regions(world, player):
def create_door_spoiler(world, player):
logger = logging.getLogger('')
queue = collections.deque(world.doors)
queue = collections.deque((door for door in world.doors if door.player == player))
while len(queue) > 0:
door_a = queue.popleft()
if door_a.type in [DoorType.Normal, DoorType.SpiralStairs]:
@@ -283,7 +283,7 @@ def within_dungeon(world, player):
handle_split_dungeons(dungeon_builders, recombinant_builders, entrances_map)
main_dungeon_generation(dungeon_builders, recombinant_builders, connections_tuple, world, player)
paths = determine_required_paths(world)
paths = determine_required_paths(world, player)
check_required_paths(paths, world, player)
# shuffle_key_doors for dungeons
@@ -637,7 +637,7 @@ def cross_dungeon(world, player):
main_dungeon_generation(dungeon_builders, recombinant_builders, connections_tuple, world, player)
paths = determine_required_paths(world)
paths = determine_required_paths(world, player)
check_required_paths(paths, world, player)
start = time.process_time()
@@ -1097,7 +1097,7 @@ def change_door_to_small_key(d, world, player):
room.change(d.doorListPos, DoorKind.SmallKey)
def determine_required_paths(world):
def determine_required_paths(world, player):
paths = {
'Hyrule Castle': [],
'Eastern Palace': ['Eastern Boss'],
@@ -1122,7 +1122,7 @@ def determine_required_paths(world):
paths['Hyrule Castle'].append('Hyrule Dungeon Cellblock')
# noinspection PyTypeChecker
paths['Hyrule Castle'].append(('Hyrule Dungeon Cellblock', 'Sanctuary'))
if world.doorShuffle in ['basic', 'experimental']: # todo: crossed?
if world.doorShuffle[player] in ['basic', 'experimental']: # todo: crossed?
paths['Thieves Town'].append('Thieves Attic Window')
return paths