about summary refs log tree commit diff stats
path: root/apworld/player_logic.py
diff options
context:
space:
mode:
Diffstat (limited to 'apworld/player_logic.py')
-rw-r--r--apworld/player_logic.py13
1 files changed, 9 insertions, 4 deletions
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:
114 old_or_logic = self.or_logic 114 old_or_logic = self.or_logic
115 115
116 def remove_redundant(sub_reqs: "AccessRequirements"): 116 def remove_redundant(sub_reqs: "AccessRequirements"):
117 sub_reqs.letters = {l: v for l, v in sub_reqs.letters.items() if self.letters.get(l, 0) < v} 117 new_reqs = sub_reqs.copy()
118 new_reqs.letters = {l: v for l, v in new_reqs.letters.items() if self.letters.get(l, 0) < v}
119 if new_reqs != sub_reqs:
120 return new_reqs
121 else:
122 return sub_reqs
118 123
119 self.or_logic = [] 124 self.or_logic = []
120 for disjunction in old_or_logic: 125 for disjunction in old_or_logic:
121 new_disjunction = [] 126 new_disjunction = []
122 for ssr in disjunction: 127 for ssr in disjunction:
123 remove_redundant(ssr) 128 new_ssr = remove_redundant(ssr)
124 if not ssr.is_empty(): 129 if not new_ssr.is_empty():
125 new_disjunction.append(ssr) 130 new_disjunction.append(new_ssr)
126 else: 131 else:
127 new_disjunction.clear() 132 new_disjunction.clear()
128 break 133 break