From cea2f81b86f1b7b05093e01d83b925bc61909a6e Mon Sep 17 00:00:00 2001 From: Fabian Dill Date: Sun, 13 Jun 2021 07:57:34 +0200 Subject: [PATCH] remove IRH special rule now that it's a 1/1 triforce piece hunt --- Fill.py | 14 +++++++------- LttPClient.py | 7 +------ worlds/alttp/ItemPool.py | 3 --- 3 files changed, 8 insertions(+), 16 deletions(-) diff --git a/Fill.py b/Fill.py index 7be4a105..34807be5 100644 --- a/Fill.py +++ b/Fill.py @@ -3,7 +3,7 @@ import typing import collections import itertools -from BaseClasses import CollectionState, PlandoItem, Location +from BaseClasses import CollectionState, PlandoItem, Location, MultiWorld from worlds.alttp.Items import ItemFactory from worlds.alttp.Regions import key_drop_data @@ -12,7 +12,7 @@ class FillError(RuntimeError): pass -def fill_restrictive(world, base_state: CollectionState, locations, itempool, single_player_placement=False, +def fill_restrictive(world: MultiWorld, base_state: CollectionState, locations, itempool, single_player_placement=False, lock=False): def sweep_from_pool(): new_state = base_state.copy() @@ -68,7 +68,7 @@ def fill_restrictive(world, base_state: CollectionState, locations, itempool, si itempool.extend(unplaced_items) -def distribute_items_restrictive(world, gftower_trash=False, fill_locations=None): +def distribute_items_restrictive(world: MultiWorld, gftower_trash=False, fill_locations=None): # If not passed in, then get a shuffled list of locations to fill in if not fill_locations: fill_locations = world.get_unfilled_locations() @@ -167,14 +167,14 @@ def distribute_items_restrictive(world, gftower_trash=False, fill_locations=None logging.warning(f'Unplaced items({len(unplaced)}): {unplaced} - Unfilled Locations({len(unfilled)}): {unfilled}') -def fast_fill(world, item_pool: typing.List, fill_locations: typing.List) -> typing.Tuple[typing.List, typing.List]: +def fast_fill(world: MultiWorld, item_pool: typing.List, fill_locations: typing.List) -> typing.Tuple[typing.List, typing.List]: placing = min(len(item_pool), len(fill_locations)) for item, location in zip(item_pool, fill_locations): world.push_item(location, item, False) return item_pool[placing:], fill_locations[placing:] -def flood_items(world): +def flood_items(world: MultiWorld): # get items to distribute world.random.shuffle(world.itempool) itempool = world.itempool @@ -234,7 +234,7 @@ def flood_items(world): break -def balance_multiworld_progression(world): +def balance_multiworld_progression(world: MultiWorld): balanceable_players = {player for player in range(1, world.players + 1) if world.progression_balancing[player]} if not balanceable_players: logging.info('Skipping multiworld progression balancing.') @@ -363,7 +363,7 @@ def swap_location_item(location_1: Location, location_2: Location, check_locked= location_1.event, location_2.event = location_2.event, location_1.event -def distribute_planned(world): +def distribute_planned(world: MultiWorld): world_name_lookup = world.world_name_lookup for player in world.player_ids: diff --git a/LttPClient.py b/LttPClient.py index 92c4aca7..828fe17e 100644 --- a/LttPClient.py +++ b/LttPClient.py @@ -138,8 +138,6 @@ SCOUTREPLY_ITEM_ADDR = SAVEDATA_START + 0x4D9 # 1 byte SCOUTREPLY_PLAYER_ADDR = SAVEDATA_START + 0x4DA # 1 byte SHOP_ADDR = SAVEDATA_START + 0x302 # 2 bytes -location_shop_order = [name for name, info in - Shops.shop_table.items()] # probably don't leave this here. This relies on python 3.6+ dictionary keys having defined order location_shop_ids = set([info[0] for name, info in Shops.shop_table.items()]) location_table_uw = {"Blind's Hideout - Top": (0x11d, 0x10), @@ -704,9 +702,6 @@ def get_tags(ctx: Context): return tags - - - async def track_locations(ctx: Context, roomid, roomdata): new_locations = [] @@ -718,7 +713,7 @@ async def track_locations(ctx: Context, roomid, roomdata): try: if roomid in location_shop_ids: - misc_data = await snes_read(ctx, SHOP_ADDR, (len(location_shop_order) * 3) + 5) + misc_data = await snes_read(ctx, SHOP_ADDR, (len(Shops.shop_table) * 3) + 5) for cnt, b in enumerate(misc_data): if int(b) and (Shops.SHOP_ID_START + cnt) not in ctx.locations_checked: new_check(Shops.SHOP_ID_START + cnt) diff --git a/worlds/alttp/ItemPool.py b/worlds/alttp/ItemPool.py index d03b686b..5d52ad35 100644 --- a/worlds/alttp/ItemPool.py +++ b/worlds/alttp/ItemPool.py @@ -241,8 +241,6 @@ def generate_itempool(world, player: int): else: world.push_item(world.get_location('Ganon', player), ItemFactory('Triforce', player), False) - - if world.goal[player] == 'icerodhunt': world.progression_balancing[player] = False loc = world.get_location('Turtle Rock - Boss', player) @@ -255,7 +253,6 @@ def generate_itempool(world, player: int): logging.warning(f'Cannot guarantee that Trinexx is the boss of Turtle Rock for player {player}') loc.event = True loc.locked = True - forbid_items_for_player(loc, {'Red Pendant', 'Green Pendant', 'Blue Pendant', 'Crystal 5', 'Crystal 6'}, player) itemdiff = difficulties[world.difficulty[player]] itempool = [] itempool.extend(itemdiff.alwaysitems)