From f19a84222e59dcf5bbc791fbbe28aea4eaf06448 Mon Sep 17 00:00:00 2001 From: Alchav <59858495+Alchav@users.noreply.github.com> Date: Wed, 17 Apr 2024 13:29:32 -0400 Subject: [PATCH] ALTTP: Triforce Pieces and Condense Items fixes (#3166) --- worlds/alttp/ItemPool.py | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/worlds/alttp/ItemPool.py b/worlds/alttp/ItemPool.py index c26c32a7..ed552299 100644 --- a/worlds/alttp/ItemPool.py +++ b/worlds/alttp/ItemPool.py @@ -464,8 +464,6 @@ def generate_itempool(world): while len(items) > pool_count: items_were_cut = False for reduce_item in items_reduction_table: - if len(items) <= pool_count: - break if len(reduce_item) == 2: items_were_cut = items_were_cut or cut_item(items, *reduce_item) elif len(reduce_item) == 4: @@ -477,7 +475,10 @@ def generate_itempool(world): items.remove(bottle) removed_filler.append(bottle) items_were_cut = True - assert items_were_cut, f"Failed to limit item pool size for player {player}" + if items_were_cut: + break + else: + raise Exception(f"Failed to limit item pool size for player {player}") if len(items) < pool_count: items += removed_filler[len(items) - pool_count:] @@ -684,12 +685,12 @@ def get_pool_core(world, player: int): if world.triforce_pieces_mode[player].value == TriforcePiecesMode.option_extra: triforce_pieces = world.triforce_pieces_available[player].value + world.triforce_pieces_extra[player].value elif world.triforce_pieces_mode[player].value == TriforcePiecesMode.option_percentage: - percentage = float(max(100, world.triforce_pieces_percentage[player].value)) / 100 - triforce_pieces = int(round(world.triforce_pieces_required[player].value * percentage, 0)) + percentage = float(world.triforce_pieces_percentage[player].value) / 100 + triforce_pieces = round(world.triforce_pieces_required[player].value * percentage, 0) else: # available triforce_pieces = world.triforce_pieces_available[player].value - triforce_pieces = max(triforce_pieces, world.triforce_pieces_required[player].value) + triforce_pieces = min(90, max(triforce_pieces, world.triforce_pieces_required[player].value)) pieces_in_core = min(extraitems, triforce_pieces) additional_pieces_to_place = triforce_pieces - pieces_in_core