diff --git a/Dungeons.py b/Dungeons.py index 1f38e551..75699434 100644 --- a/Dungeons.py +++ b/Dungeons.py @@ -375,6 +375,28 @@ flexible_starts = { 'Skull Woods': ['Skull Left Drop', 'Skull Pinball'] } +default_key_counts = { + 'Hyrule Castle': 1, 'Eastern Palace': 0, 'Desert Palace': 1, + 'Tower of Hera': 1, 'Agahnims Tower': 2, 'Palace of Darkness': 6, + 'Swamp Palace': 1, 'Skull Woods': 3, 'Thieves Town': 1, + 'Ice Palace': 2, 'Misery Mire': 3, 'Turtle Rock': 4, 'Ganons Tower': 4 +} + +dungeon_keys = { + 'Hyrule Castle': 'Small Key (Escape)', + 'Eastern Palace': 'Small Key (Eastern Palace)', + 'Desert Palace': 'Small Key (Desert Palace)', + 'Tower of Hera': 'Small Key (Tower of Hera)', + 'Agahnims Tower': 'Small Key (Agahnims Tower)', + 'Palace of Darkness': 'Small Key (Palace of Darkness)', + 'Swamp Palace': 'Small Key (Swamp Palace)', + 'Skull Woods': 'Small Key (Skull Woods)', + 'Thieves Town': 'Small Key (Thieves Town)', + 'Ice Palace': 'Small Key (Ice Palace)', + 'Misery Mire': 'Small Key (Misery Mire)', + 'Turtle Rock': 'Small Key (Turtle Rock)', + 'Ganons Tower': 'Small Key (Ganons Tower)' +} dungeon_bigs = { 'Hyrule Castle': 'Big Key (Escape)', diff --git a/KeyDoorShuffle.py b/KeyDoorShuffle.py index 5dff33ef..7829d92b 100644 --- a/KeyDoorShuffle.py +++ b/KeyDoorShuffle.py @@ -4,7 +4,7 @@ from collections import defaultdict, deque from BaseClasses import DoorType, dungeon_keys, KeyRuleType, RegionType from Regions import dungeon_events -from Dungeons import dungeon_bigs, dungeon_prize +from Dungeons import dungeon_keys, dungeon_bigs, dungeon_prize, default_key_counts from DungeonGenerator import ExplorationState, special_big_key_doors @@ -1516,9 +1516,10 @@ def create_key_counters(key_layout, world, player): flat_proposal = key_layout.flat_prop state = ExplorationState(dungeon=key_layout.sector.name) if world.doorShuffle[player] == 'vanilla': - state.key_locations = len(world.get_dungeon(key_layout.sector.name, player).small_keys) + state.key_locations = default_key_counts[key_layout.sector.name] else: - state.key_locations = world.dungeon_layouts[player][key_layout.sector.name].key_doors_num + builder = world.dungeon_layouts[player][key_layout.sector.name] + state.key_locations = builder.key_doors_num - builder.key_drop_cnt state.big_key_special = False for region in key_layout.sector.regions: for location in region.locations: diff --git a/MultiClient.py b/MultiClient.py index bf64a2d7..501630e0 100644 --- a/MultiClient.py +++ b/MultiClient.py @@ -846,7 +846,7 @@ async def track_locations(ctx : Context, roomid, roomdata): new_locations.append(Regions.lookup_name_to_id[location]) try: - if roomid in location_shop_ids: + if ctx.shop_mode or ctx.retro_mode: misc_data = await snes_read(ctx, SHOP_ADDR, SHOP_SRAM_LEN) for cnt, b in enumerate(misc_data): my_check = Regions.shop_table_by_location_id[0x400000 + cnt] diff --git a/Mystery.py b/Mystery.py index 3c62e72a..03f62fce 100644 --- a/Mystery.py +++ b/Mystery.py @@ -236,7 +236,7 @@ def roll_settings(weights): ret.heartbeep = get_choice('heartbeep', romweights) ret.ow_palettes = get_choice('ow_palettes', romweights) ret.uw_palettes = get_choice('uw_palettes', romweights) - ret.uw_palettes = get_choice('shuffle_sfx', romweights) == 'on' + ret.shuffle_sfx = get_choice('shuffle_sfx', romweights) == 'on' return ret diff --git a/RELEASENOTES.md b/RELEASENOTES.md index b6be375d..3b414321 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -15,6 +15,10 @@ CLI: ```--bomblogic``` # Bug Fixes and Notes. +* 0.5.0.3 + * Fixed a bug in retro+vanilla and big key placement + * Fixed a problem with shops not registering in the Multiclient until you visit one + * Fixed a bug in the Mystery code with sfx * 0.5.0.2 * --shuffle_sfx option added * 0.5.0.1