diff options
Diffstat (limited to 'apworld/rules.py')
-rw-r--r-- | apworld/rules.py | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/apworld/rules.py b/apworld/rules.py index 05689e9..4a84acf 100644 --- a/apworld/rules.py +++ b/apworld/rules.py | |||
@@ -15,10 +15,15 @@ def lingo2_can_satisfy_requirements(state: CollectionState, reqs: AccessRequirem | |||
15 | if not all(state.can_reach_region(region_name, world.player) for region_name in reqs.rooms): | 15 | if not all(state.can_reach_region(region_name, world.player) for region_name in reqs.rooms): |
16 | return False | 16 | return False |
17 | 17 | ||
18 | # TODO: symbols, letters | 18 | # TODO: symbols |
19 | 19 | ||
20 | for disjunction in reqs.or_logic: | 20 | for letter_key, letter_level in reqs.letters.items(): |
21 | if not any(lingo2_can_satisfy_requirements(state, sub_reqs, world) for sub_reqs in disjunction): | 21 | if not state.has(letter_key, world.player, letter_level): |
22 | return False | ||
23 | |||
24 | if len(reqs.or_logic) > 0: | ||
25 | if not all(any(lingo2_can_satisfy_requirements(state, sub_reqs, world) for sub_reqs in subjunction) | ||
26 | for subjunction in reqs.or_logic): | ||
22 | return False | 27 | return False |
23 | 28 | ||
24 | return True | 29 | return True |