From 2e07fc2dd01e5a216f8878ca3107d6035a76ca70 Mon Sep 17 00:00:00 2001 From: Fouton Date: Fri, 12 Mar 2021 16:57:42 -0500 Subject: [PATCH] Add files via upload --- Main.py | 5 ++++- Mystery.py | 4 ++-- Rom.py | 7 +++++-- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/Main.py b/Main.py index c6795d15..4b6eb927 100644 --- a/Main.py +++ b/Main.py @@ -26,7 +26,7 @@ from Fill import sell_potions, sell_keys, balance_multiworld_progression, balanc from ItemList import generate_itempool, difficulties, fill_prizes, customize_shops from Utils import output_path, parse_player_names -__version__ = '0.3.1.4-u' +__version__ = '0.3.1.5-u' class EnemizerError(RuntimeError): @@ -167,6 +167,9 @@ def main(args, seed=None, fish=None): sell_potions(world, player) if world.retro[player]: sell_keys(world, player) + else: + lock_shop_locations(world, player) + logger.info(world.fish.translate("cli","cli","placing.dungeon.prizes")) diff --git a/Mystery.py b/Mystery.py index 4be8870a..9ddb0827 100644 --- a/Mystery.py +++ b/Mystery.py @@ -171,6 +171,7 @@ def roll_settings(weights): ret.openpyramid = goal == 'fast_ganon' if ret.shuffle in ['vanilla', 'dungeonsfull', 'dungeonssimple'] else False ret.crystals_gt = get_choice('tower_open') + ret.crystals_ganon = get_choice('ganon_open') if ret.goal == 'triforcehunt': @@ -215,8 +216,7 @@ def roll_settings(weights): ret.shufflepots = get_choice('pot_shuffle') == 'on' ret.beemizer = int(get_choice('beemizer')) if 'beemizer' in weights else 0 - - + inventoryweights = weights.get('startinventory', {}) startitems = [] for item in inventoryweights.keys(): diff --git a/Rom.py b/Rom.py index ac031a9b..7458ee5b 100644 --- a/Rom.py +++ b/Rom.py @@ -16,7 +16,7 @@ from BaseClasses import CollectionState, ShopType, Region, Location, Door, DoorT from DoorShuffle import compass_data, DROptions, boss_indicator from Dungeons import dungeon_music_addresses from KeyDoorShuffle import count_locations_exclude_logic -from Regions import location_table +from Regions import location_table, shop_to_location_table from RoomData import DoorKind from Text import MultiByteTextMapper, CompressedTextMapper, text_addresses, Credits, TextTable from Text import Uncle_texts, Ganon1_texts, TavernMan_texts, Sahasrahla2_texts, Triforce_texts, Blind_texts, BombShop2_texts, junk_texts @@ -1568,7 +1568,10 @@ def write_custom_shops(rom, world, player): break if world.shopsanity[player] or shop.type == ShopType.TakeAny: rom.write_byte(0x186560 + shop.sram_address + index, 1) - item_id = ItemFactory(item['item'], player).code + loc_item = world.get_location(shop_to_location_table[shop.region.name][index], player).item + if not loc_item: + loc_item = ItemFactory(item['item'], player) + item_id = loc_item.code price = int16_as_bytes(item['price']) replace = ItemFactory(item['replacement'], player).code if item['replacement'] else 0xFF replace_price = int16_as_bytes(item['replacement_price'])