From 1eda6cfa9a392a6fa3f4f99d6f560b2ff9066c95 Mon Sep 17 00:00:00 2001 From: aerinon Date: Thu, 16 Sep 2021 15:46:40 -0600 Subject: [PATCH] Fix lambda by binding bk_name at lambda creation --- Rules.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/Rules.py b/Rules.py index 3114bde0..42bfe2f2 100644 --- a/Rules.py +++ b/Rules.py @@ -1954,7 +1954,7 @@ def add_key_logic_rules(world, player): big_chest = world.get_location(chest.name, player) add_rule(big_chest, create_rule(d_logic.bk_name, player)) if len(d_logic.bk_doors) == 0 and len(d_logic.bk_chests) <= 1: - set_always_allow(big_chest, lambda state, item: item.name == d_logic.bk_name and item.player == player) + set_always_allow(big_chest, allow_big_key_in_big_chest(d_logic.bk_name, player)) if world.retro[player]: for d_name, layout in world.key_layout[player].items(): for door in layout.flat_prop: @@ -1992,6 +1992,10 @@ def eval_small_key_door(door_name, dungeon, player): return lambda state: eval_small_key_door_main(state, door_name, dungeon, player) +def allow_big_key_in_big_chest(bk_name, player): + return lambda state, item: item.name == bk_name and item.player == player + + def retro_in_hc(spot): return spot.parent_region.dungeon.name == 'Hyrule Castle' if spot.parent_region.dungeon else False