From b2b87691af2b9bba227735152abc2d983ed938ab Mon Sep 17 00:00:00 2001 From: Star Rauchenberger Date: Tue, 16 Sep 2025 15:54:50 -0400 Subject: [Apworld] Fixed reqs simplification mutating common objects --- apworld/player_logic.py | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) (limited to 'apworld') diff --git a/apworld/player_logic.py b/apworld/player_logic.py index 17af77f..ce6ae24 100644 --- a/apworld/player_logic.py +++ b/apworld/player_logic.py @@ -114,15 +114,20 @@ class AccessRequirements: old_or_logic = self.or_logic def remove_redundant(sub_reqs: "AccessRequirements"): - sub_reqs.letters = {l: v for l, v in sub_reqs.letters.items() if self.letters.get(l, 0) < v} + new_reqs = sub_reqs.copy() + new_reqs.letters = {l: v for l, v in new_reqs.letters.items() if self.letters.get(l, 0) < v} + if new_reqs != sub_reqs: + return new_reqs + else: + return sub_reqs self.or_logic = [] for disjunction in old_or_logic: new_disjunction = [] for ssr in disjunction: - remove_redundant(ssr) - if not ssr.is_empty(): - new_disjunction.append(ssr) + new_ssr = remove_redundant(ssr) + if not new_ssr.is_empty(): + new_disjunction.append(new_ssr) else: new_disjunction.clear() break -- cgit 1.4.1