Fix for crossed doors with ambrosia
Fix for ER + OWG in crossed doors Fix for Small Key shuffle
This commit is contained in:
@@ -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))
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
7
Fill.py
7
Fill.py
@@ -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)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user