Fix for crossed doors with ambrosia

Fix for ER + OWG in crossed doors
Fix for Small Key shuffle
This commit is contained in:
aerinon
2022-08-30 13:51:12 -06:00
parent 45395e9b15
commit 4aff460b22
3 changed files with 15 additions and 8 deletions

View File

@@ -988,11 +988,16 @@ def cross_dungeon(world, player):
paths = determine_required_paths(world, player) paths = determine_required_paths(world, player)
check_required_paths(paths, world, player) check_required_paths(paths, world, player)
hc_compass = ItemFactory('Compass (Escape)', player)
at_compass = ItemFactory('Compass (Agahnims Tower)', player)
at_map = ItemFactory('Map (Agahnims Tower)', player)
if world.restrict_boss_items[player] != 'none':
hc_compass.advancement = at_compass.advancement = at_map.advancement = True
hc = world.get_dungeon('Hyrule Castle', player) hc = world.get_dungeon('Hyrule Castle', player)
hc.dungeon_items.append(ItemFactory('Compass (Escape)', player)) hc.dungeon_items.append(hc_compass)
at = world.get_dungeon('Agahnims Tower', player) at = world.get_dungeon('Agahnims Tower', player)
at.dungeon_items.append(ItemFactory('Compass (Agahnims Tower)', player)) at.dungeon_items.append(at_compass)
at.dungeon_items.append(ItemFactory('Map (Agahnims Tower)', player)) at.dungeon_items.append(at_map)
assign_cross_keys(dungeon_builders, world, player) assign_cross_keys(dungeon_builders, world, player)
all_dungeon_items_cnt = len(list(y for x in world.dungeons if x.player == player for y in x.all_items)) all_dungeon_items_cnt = len(list(y for x in world.dungeons if x.player == player for y in x.all_items))

View File

@@ -63,9 +63,10 @@ def link_entrances(world, player):
connect_caves(world, lw_entrances, [], hyrule_castle_exits, player) connect_caves(world, lw_entrances, [], hyrule_castle_exits, player)
elif world.doorShuffle[player] != 'vanilla': elif world.doorShuffle[player] != 'vanilla':
# sanc is in light world, so must all of HC if door shuffle is on # sanc is in light world, so must all of HC if door shuffle is on
connect_mandatory_exits(world, lw_entrances, hyrule_castle_exits = [('Hyrule Castle Exit (West)', 'Hyrule Castle Exit (East)', 'Hyrule Castle Exit (South)')]
[('Hyrule Castle Exit (West)', 'Hyrule Castle Exit (East)', 'Hyrule Castle Exit (South)')], connect_mandatory_exits(world, lw_entrances, hyrule_castle_exits,
list(LW_Dungeon_Entrances_Must_Exit), player) list(LW_Dungeon_Entrances_Must_Exit), player)
connect_caves(world, lw_entrances, [], hyrule_castle_exits, player)
else: else:
connect_mandatory_exits(world, lw_entrances, dungeon_exits, list(LW_Dungeon_Entrances_Must_Exit), player) connect_mandatory_exits(world, lw_entrances, dungeon_exits, list(LW_Dungeon_Entrances_Must_Exit), player)
connect_mandatory_exits(world, dw_entrances, dungeon_exits, list(DW_Dungeon_Entrances_Must_Exit), player) connect_mandatory_exits(world, dw_entrances, dungeon_exits, list(DW_Dungeon_Entrances_Must_Exit), player)

View File

@@ -48,9 +48,10 @@ def fill_dungeons_restrictive(world, shuffled_locations):
bigs, smalls, others = [], [], [] bigs, smalls, others = [], [], []
for i in dungeon_items: for i in dungeon_items:
(bigs if i.bigkey else smalls if i.smallkey else others).append(i) (bigs if i.bigkey else smalls if i.smallkey else others).append(i)
unplaced_smalls = list(smalls)
for i in world.itempool: for i in world.itempool:
if i.smallkey and world.keyshuffle[i.player]: if i.smallkey and world.keyshuffle[i.player]:
smalls.append(i) unplaced_smalls.append(i)
def fill(base_state, items, key_pool): def fill(base_state, items, key_pool):
fill_restrictive(world, base_state, shuffled_locations, items, key_pool, True) fill_restrictive(world, base_state, shuffled_locations, items, key_pool, True)
@@ -59,12 +60,12 @@ def fill_dungeons_restrictive(world, shuffled_locations):
big_state_base = all_state_base.copy() big_state_base = all_state_base.copy()
for x in smalls + others: for x in smalls + others:
big_state_base.collect(x, True) big_state_base.collect(x, True)
fill(big_state_base, bigs, smalls) fill(big_state_base, bigs, unplaced_smalls)
random.shuffle(shuffled_locations) random.shuffle(shuffled_locations)
small_state_base = all_state_base.copy() small_state_base = all_state_base.copy()
for x in others: for x in others:
small_state_base.collect(x, True) small_state_base.collect(x, True)
fill(small_state_base, smalls, list(smalls)) fill(small_state_base, smalls, unplaced_smalls)
random.shuffle(shuffled_locations) random.shuffle(shuffled_locations)
fill(all_state_base, others, None) fill(all_state_base, others, None)