diff options
| author | Star Rauchenberger <fefferburbia@gmail.com> | 2025-08-27 18:53:50 -0400 |
|---|---|---|
| committer | Star Rauchenberger <fefferburbia@gmail.com> | 2025-08-27 18:53:50 -0400 |
| commit | 18e64c9102f526b04c44623aa39c9b3cb6dee1ff (patch) | |
| tree | 39b856ae472a1b9033a9122e63be28bddd55bea2 /apworld/rules.py | |
| parent | 4ae885f392261b939e6f21b47d545f609c6e1965 (diff) | |
| download | lingo2-archipelago-18e64c9102f526b04c44623aa39c9b3cb6dee1ff.tar.gz lingo2-archipelago-18e64c9102f526b04c44623aa39c9b3cb6dee1ff.tar.bz2 lingo2-archipelago-18e64c9102f526b04c44623aa39c9b3cb6dee1ff.zip | |
Letter requirements in apworld
Also fixed or logic so everything actually works now.
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 |
