diff --git a/BaseClasses.py b/BaseClasses.py index 3145ee16..da42a4e2 100644 --- a/BaseClasses.py +++ b/BaseClasses.py @@ -310,7 +310,7 @@ class World(object): return self.is_tile_swapped(0x03, player) and self.is_tile_swapped(0x1b, player) def is_bombshop_start(self, player): - return self.is_tile_swapped(0x2c, player) and (self.shuffle[player] in ['vanilla', 'dungeonssimple', 'dungeonsfull'] or not self.shufflelinks[player]) + return self.is_tile_swapped(0x2c, player) def is_pyramid_open(self, player): if self.open_pyramid[player] == 'yes': diff --git a/OverworldShuffle.py b/OverworldShuffle.py index 00c23448..31abdc60 100644 --- a/OverworldShuffle.py +++ b/OverworldShuffle.py @@ -1620,10 +1620,11 @@ def validate_layout(world, player): # check if entrances in region could be used to access region if world.shuffle[player] != 'vanilla': for entrance in [e for e in unreachable_regions[region_name].exits if e.spot_type == 'Entrance']: - if (entrance.name == 'Links House' and (world.mode[player] == 'inverted' or not world.shufflelinks[player] or world.shuffle[player] in ['dungeonssimple', 'dungeonsfull', 'lite', 'lean'])) \ - or (entrance.name == 'Big Bomb Shop' and (world.mode[player] != 'inverted' or not world.shufflelinks[player] or world.shuffle[player] in ['dungeonssimple', 'dungeonsfull', 'lite', 'lean'])) \ - or (entrance.name == 'Ganons Tower' and (world.mode[player] != 'inverted' and not world.shuffle_ganon[player])) \ or (entrance.name in ['Skull Woods First Section Door', 'Skull Woods Second Section Door (East)', 'Skull Woods Second Section Door (West)'] and world.shuffle[player] not in ['insanity']) \ + if (entrance.name == 'Links House' and ((not world.is_bombshop_start(player) and not world.shufflelinks[player]) or world.shuffle[player] in ['dungeonssimple', 'dungeonsfull', 'lite', 'lean'])) \ + or (entrance.name == 'Big Bomb Shop' and ((world.is_bombshop_start(player) and not world.shufflelinks[player]) or world.shuffle[player] in ['dungeonssimple', 'dungeonsfull', 'lite', 'lean'])) \ + or (entrance.name == 'Ganons Tower' and (not world.is_atgt_swapped(player) and not world.shuffle_ganon[player])) \ + or (entrance.name == 'Agahnims Tower' and (world.is_atgt_swapped(player) and not world.shuffle_ganon[player])) \ or (entrance.name == 'Tavern North' and not world.shuffletavern[player]): continue # these are fixed entrances and cannot be used for gaining access to region if entrance.name not in drop_entrances \ diff --git a/source/overworld/EntranceShuffle2.py b/source/overworld/EntranceShuffle2.py index 95a3e5dd..63946275 100644 --- a/source/overworld/EntranceShuffle2.py +++ b/source/overworld/EntranceShuffle2.py @@ -129,7 +129,7 @@ def link_entrances_new(world, player): elif special_shuffle == 'skull': entrances, exits = find_entrances_and_exits(avail_pool, pool['entrances']) rem_ent = None - if avail_pool.world.shuffle[avail_pool.player] in ['dungeons-simple', 'simple', 'restricted'] \ + if avail_pool.world.shuffle[avail_pool.player] in ['dungeonssimple', 'simple', 'restricted'] \ and not avail_pool.world.is_tile_swapped(0x00, avail_pool.player): rem_ent = random.choice(['Skull Woods First Section Door', 'Skull Woods Second Section Door (East)']) entrances.remove(rem_ent) @@ -1148,9 +1148,12 @@ def do_fixed_shuffle(avail, entrance_list): new_x = 'Agahnims Tower Exit' elif x == 'Agahnims Tower Exit': new_x = 'Ganons Tower Exit' + if avail.world.is_bombshop_start(avail.player): + if x == 'Links House Exit': + new_x = 'Big Bomb Shop' + elif x == 'Big Bomb Shop': + new_x = 'Links House Exit' lw_exits.add(new_x) - if avail.world.shufflelinks[avail.player] or avail.world.shuffle[avail.player] not in ['vanilla', 'dungeonssimple', 'dungeonsfull']: - lw_exits.update({'Big Bomb Shop'} if avail.world.is_bombshop_start(avail.player) else {'Links House Exit'}) filtered_choices = {i: opt for i, opt in choices.items() if all(t in lw_exits for t in opt[2])} _, choice = random.choice(list(filtered_choices.items())) else: @@ -2125,7 +2128,7 @@ drop_map = { } linked_drop_map = { - 'Hyrule Castle Secret Entrance Drop': 'Hyrule Castle Secret Entrance Stairs', + 'Hyrule Castle Secret Entrance Drop': 'Hyrule Castle Secret Entrance Stairs', 'Kakariko Well Drop': 'Kakariko Well Cave', 'Bat Cave Drop': 'Bat Cave Cave', 'North Fairy Cave Drop': 'North Fairy Cave', @@ -2169,7 +2172,7 @@ entrance_map = { 'Links House': 'Links House Exit', - 'Hyrule Castle Secret Entrance Stairs': 'Hyrule Castle Secret Entrance Exit', + 'Hyrule Castle Secret Entrance Stairs': 'Hyrule Castle Secret Entrance Exit', 'Kakariko Well Cave': 'Kakariko Well Exit', 'Bat Cave Cave': 'Bat Cave Exit', 'North Fairy Cave': 'North Fairy Cave Exit',