diff --git a/Main.py b/Main.py index 9e4174bf..12027925 100644 --- a/Main.py +++ b/Main.py @@ -10,7 +10,7 @@ import zlib import concurrent.futures from BaseClasses import World, CollectionState, Item, Region, Location -from Shops import ShopSlotFill, create_shops, SHOP_ID_START, FillDisabledShopSlots +from Shops import ShopSlotFill, create_shops, SHOP_ID_START, FillDisabledShopSlots, total_shop_slots from Items import ItemFactory, item_table, item_name_groups from Regions import create_regions, mark_light_world_regions, lookup_vanilla_location_to_entrance from InvertedRegions import create_inverted_regions, mark_dark_world_regions @@ -380,19 +380,22 @@ def main(args, seed=None): checks_in_area[location.player]["Total"] += 1 oldmancaves = [] - for region in [world.get_region("Old Man Sword Cave", player) for player in range(1, world.players + 1) if world.retro[player]]: - item = ItemFactory(region.shop.inventory[0]['item'], region.player) - player = region.player - location_id = SHOP_ID_START + 33 + takeanyregions = ["Old Man Sword Cave", "Take-Any #1", "Take-Any #2", "Take-Any #3", "Take-Any #4"] + for index, take_any in enumerate(takeanyregions): + for region in [world.get_region(take_any, player) for player in range(1, world.players + 1) if world.retro[player]]: + item = ItemFactory(region.shop.inventory[(0 if take_any == "Old Man Sword Cave" else 1)]['item'], region.player) + player = region.player + location_id = SHOP_ID_START + total_shop_slots + index - if region.type == RegionType.LightWorld: - checks_in_area[player]["Light World"].append(location_id) - else: - checks_in_area[player]["Dark World"].append(location_id) - checks_in_area[player]["Total"] += 1 + main_entrance = get_entrance_to_region(region) + if main_entrance.parent_region.type == RegionType.LightWorld: + checks_in_area[player]["Light World"].append(location_id) + else: + checks_in_area[player]["Dark World"].append(location_id) + checks_in_area[player]["Total"] += 1 - er_hint_data[player][location_id] = get_entrance_to_region(region).name - oldmancaves.append(((location_id, player), (item.code, player))) + er_hint_data[player][location_id] = main_entrance.name + oldmancaves.append(((location_id, player), (item.code, player))) precollected_items = [[] for player in range(world.players)] for item in world.precollected_items: diff --git a/Rom.py b/Rom.py index f8571e9a..6eadb87a 100644 --- a/Rom.py +++ b/Rom.py @@ -1,7 +1,7 @@ from __future__ import annotations JAP10HASH = '03a63945398191337e896e5771f77173' -RANDOMIZERBASEHASH = '5d109c62f73966de1fe65751fc876778' +RANDOMIZERBASEHASH = '7d9778b7c0a90d71fa5f32a3b56cdd87' import io import json @@ -18,7 +18,7 @@ import concurrent.futures from typing import Optional from BaseClasses import CollectionState, Region, Location -from Shops import ShopType +from Shops import ShopType, total_shop_slots from Dungeons import dungeon_music_addresses from Regions import location_table, old_location_address_to_new_location_address from Text import MultiByteTextMapper, CompressedTextMapper, text_addresses, Credits, TextTable @@ -1598,7 +1598,7 @@ def write_custom_shops(rom, world, player): slot = 0 if shop.type == ShopType.TakeAny else index if item is None: break - if world.shop_shuffle_slots[player]: + if world.shop_shuffle_slots[player] or shop.type == ShopType.TakeAny: count_shop = (shop.region.name != 'Potion Shop' or 'w' in world.shop_shuffle[player]) and \ shop.region.name != 'Capacity Upgrade' rom.write_byte(0x186560 + shop.sram_offset + slot, 1 if count_shop else 0) diff --git a/data/basepatch.bmbp b/data/basepatch.bmbp index 00de394b..c2f6f354 100644 Binary files a/data/basepatch.bmbp and b/data/basepatch.bmbp differ