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 |
