diff options
author | Star Rauchenberger <fefferburbia@gmail.com> | 2025-09-16 15:54:50 -0400 |
---|---|---|
committer | Star Rauchenberger <fefferburbia@gmail.com> | 2025-09-16 15:54:50 -0400 |
commit | b2b87691af2b9bba227735152abc2d983ed938ab (patch) | |
tree | 3bb9bd0e4ab3909ee5ddf7d5af9c26fe2c0898e4 /apworld/player_logic.py | |
parent | cb30435f3942f010ff5c2fe2e0f81223c10f0664 (diff) | |
download | lingo2-archipelago-b2b87691af2b9bba227735152abc2d983ed938ab.tar.gz lingo2-archipelago-b2b87691af2b9bba227735152abc2d983ed938ab.tar.bz2 lingo2-archipelago-b2b87691af2b9bba227735152abc2d983ed938ab.zip |
[Apworld] Fixed reqs simplification mutating common objects
Diffstat (limited to 'apworld/player_logic.py')
-rw-r--r-- | apworld/player_logic.py | 13 |
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 |