Changing Big Bomb Shop start to be independent of ER modes

This commit is contained in:
codemann8
2024-01-09 20:32:12 -06:00
parent 2b0e40438d
commit 64a27993aa
3 changed files with 13 additions and 9 deletions

View File

@@ -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':

View File

@@ -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 \

View File

@@ -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',