diff --git a/BaseClasses.py b/BaseClasses.py index 84ffa4d9..52b36666 100644 --- a/BaseClasses.py +++ b/BaseClasses.py @@ -121,7 +121,7 @@ class World(object): set_player_attr('ganonstower_vanilla', True) set_player_attr('sewer_light_cone', self.mode[player] == 'standard') set_player_attr('initial_overworld_flags', [0] * 0x80) - set_player_attr('fix_trock_doors', self.shuffle[player] != 'vanilla' or ((self.mode[player] == 'inverted') != 0x05 in self.owswaps[player][0])) + set_player_attr('fix_trock_doors', self.shuffle[player] != 'vanilla' or self.is_tile_swapped(0x05, player)) set_player_attr('fix_skullwoods_exit', self.shuffle[player] not in ['vanilla', 'simple', 'restricted', 'dungeonssimple'] or self.doorShuffle[player] not in ['vanilla']) set_player_attr('fix_palaceofdarkness_exit', self.shuffle[player] not in ['vanilla', 'simple', 'restricted', 'dungeonssimple']) set_player_attr('fix_trock_exit', self.shuffle[player] not in ['vanilla', 'simple', 'restricted', 'dungeonssimple']) diff --git a/DoorShuffle.py b/DoorShuffle.py index fccd78ee..e00edb3e 100644 --- a/DoorShuffle.py +++ b/DoorShuffle.py @@ -1838,7 +1838,7 @@ def find_inaccessible_regions(world, player): while len(queue) > 0: next_region = queue.popleft() visited_regions.add(next_region) - if next_region.name == 'Dark Sanctuary Hint': # special spawn point in cave + if world.mode[player] == 'inverted' and next_region.name == 'Dark Sanctuary Hint': # special spawn point in cave for ent in next_region.entrances: parent = ent.parent_region if parent and parent.type is not RegionType.Dungeon and parent not in queue and parent not in visited_regions: diff --git a/EntranceShuffle.py b/EntranceShuffle.py index 46fdb556..f1d44efc 100644 --- a/EntranceShuffle.py +++ b/EntranceShuffle.py @@ -2296,9 +2296,9 @@ one_way_ledges = { indirect_connections = { 'Turtle Rock Ledge': 'Turtle Rock', - #'Big Bomb Shop': 'Pyramid Fairy', + 'Big Bomb Shop': 'Pyramid Crack', #'East Dark World': 'Pyramid Fairy', - 'Pyramid Area': 'Pyramid Fairy', # HC Ledge/Courtyard + 'Pyramid Area': 'Pyramid Crack', # HC Ledge/Courtyard #'Dark Desert': 'Pyramid Fairy', #'Misery Mire Area': 'Pyramid Fairy', # Desert/Checkerboard Ledge #'West Dark World': 'Pyramid Fairy', diff --git a/Main.py b/Main.py index b494848b..8f12d1b1 100644 --- a/Main.py +++ b/Main.py @@ -158,10 +158,10 @@ def main(args, seed=None, fish=None): for player in range(1, world.players + 1): create_regions(world, player) - create_dungeon_regions(world, player) - create_owedges(world, player) if world.logic[player] in ('owglitches', 'nologic'): create_owg_connections(world, player) + create_dungeon_regions(world, player) + create_owedges(world, player) create_shops(world, player) create_doors(world, player) create_rooms(world, player) @@ -211,9 +211,8 @@ def main(args, seed=None, fish=None): for player in range(1, world.players + 1): set_rules(world, player) - - district_item_pool_config(world) + district_item_pool_config(world) for player in range(1, world.players + 1): if world.shopsanity[player]: sell_potions(world, player) diff --git a/Rom.py b/Rom.py index 5b3cd9fb..baf20cc7 100644 --- a/Rom.py +++ b/Rom.py @@ -812,10 +812,7 @@ def patch_rom(world, rom, player, team, enemized, is_mystery=False): if should_be_bunny(sanc_region, world.mode[player]): rom.write_bytes(0x13fff2, [0x12, 0x00]) - if not world.is_bombshop_start(player): - lh_name = 'Links House' - else: - lh_name = 'Big Bomb Shop' + lh_name = 'Links House' if not world.is_bombshop_start(player) else 'Big Bomb Shop' links_house = world.get_region(lh_name, player) if should_be_bunny(links_house, world.mode[player]): rom.write_bytes(0x13fff0, [0x04 if lh_name == 'Links House' else 0x1C, 0x01]) @@ -1968,61 +1965,6 @@ def dump_zspr(basesprite, basepalette, baseglove, outfilename, author_name, spri with open('%s' % outfilename, "wb") as zspr_file: zspr_file.write(write_buffer) -# .zspr file dumping logic copied with permission from SpriteSomething: -# https://github.com/Artheau/SpriteSomething/blob/master/source/meta/classes/spritelib.py#L443 (thanks miketrethewey!) -def dump_zspr(basesprite, basepalette, baseglove, outfilename, author_name, sprite_name): - palettes = basepalette - # Add glove data - palettes.extend(baseglove) - HEADER_STRING = b"ZSPR" - VERSION = 0x01 - SPRITE_TYPE = 0x01 # this format has "1" for the player sprite - RESERVED_BYTES = b'\x00\x00\x00\x00\x00\x00' - QUAD_BYTE_NULL_CHAR = b'\x00\x00\x00\x00' - DOUBLE_BYTE_NULL_CHAR = b'\x00\x00' - SINGLE_BYTE_NULL_CHAR = b'\x00' - - write_buffer = bytearray() - - write_buffer.extend(HEADER_STRING) - write_buffer.extend(struct.pack('B', VERSION)) # as_u8 - checksum_start = len(write_buffer) - write_buffer.extend(QUAD_BYTE_NULL_CHAR) # checksum - sprite_sheet_pointer = len(write_buffer) - write_buffer.extend(QUAD_BYTE_NULL_CHAR) - write_buffer.extend(struct.pack('