From 18e64c9102f526b04c44623aa39c9b3cb6dee1ff Mon Sep 17 00:00:00 2001 From: Star Rauchenberger Date: Wed, 27 Aug 2025 18:53:50 -0400 Subject: Letter requirements in apworld Also fixed or logic so everything actually works now. --- apworld/rules.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) (limited to 'apworld/rules.py') 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 if not all(state.can_reach_region(region_name, world.player) for region_name in reqs.rooms): return False - # TODO: symbols, letters + # TODO: symbols - for disjunction in reqs.or_logic: - if not any(lingo2_can_satisfy_requirements(state, sub_reqs, world) for sub_reqs in disjunction): + for letter_key, letter_level in reqs.letters.items(): + if not state.has(letter_key, world.player, letter_level): + return False + + if len(reqs.or_logic) > 0: + if not all(any(lingo2_can_satisfy_requirements(state, sub_reqs, world) for sub_reqs in subjunction) + for subjunction in reqs.or_logic): return False return True -- cgit 1.4.1