From 4339c606bea82a602a5dd192cb6c31a962f86637 Mon Sep 17 00:00:00 2001 From: compiling <8335770+compiling@users.noreply.github.com> Date: Tue, 21 Jan 2020 23:41:01 +1100 Subject: [PATCH] Reverse the normal and bk_restricted door rules, if the bk_restricted rule requires more small keys (prevents placing a big key from softlocking the game later). --- KeyDoorShuffle.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/KeyDoorShuffle.py b/KeyDoorShuffle.py index 295a6559..3748b755 100644 --- a/KeyDoorShuffle.py +++ b/KeyDoorShuffle.py @@ -167,6 +167,14 @@ def analyze_dungeon(key_layout, world, player): key_logic.sm_restricted.update(find_big_chest_locations(key_counter.free_locations)) check_rules(original_key_counter, key_layout, world, player) + # Flip bk rules if more restrictive, to prevent placing a big key in a softlocking location + for rule in key_logic.door_rules.values(): + if rule.alternate_small_key is not None and rule.alternate_small_key > rule.small_key_num: + max_counter = find_max_counter(key_layout) + rule.alternate_big_key_loc = set(max_counter.free_locations.keys()).difference(rule.alternate_big_key_loc) + rule.small_key_num, rule.alternate_small_key = rule.alternate_small_key, rule.small_key_num + + def count_key_drops(sector): cnt = 0