about summary refs log tree commit diff stats
path: root/apworld/rules.py
diff options
context:
space:
mode:
Diffstat (limited to 'apworld/rules.py')
-rw-r--r--apworld/rules.py15
1 files changed, 15 insertions, 0 deletions
diff --git a/apworld/rules.py b/apworld/rules.py index 0bff056..6186637 100644 --- a/apworld/rules.py +++ b/apworld/rules.py
@@ -32,6 +32,21 @@ def lingo2_can_satisfy_requirements(state: CollectionState, reqs: AccessRequirem
32 for subjunction in reqs.or_logic): 32 for subjunction in reqs.or_logic):
33 return False 33 return False
34 34
35 if reqs.complete_at is not None:
36 completed = 0
37 checked = 0
38 for possibility in reqs.possibilities:
39 checked += 1
40 if lingo2_can_satisfy_requirements(state, possibility, world):
41 completed += 1
42 if completed >= reqs.complete_at:
43 break
44 elif len(reqs.possibilities) - checked + completed < reqs.complete_at:
45 # There aren't enough remaining possibilities for the check to pass.
46 return False
47 if completed < reqs.complete_at:
48 return False
49
35 return True 50 return True
36 51
37def make_location_lambda(reqs: AccessRequirements, world: "Lingo2World") -> Callable[[CollectionState], bool]: 52def make_location_lambda(reqs: AccessRequirements, world: "Lingo2World") -> Callable[[CollectionState], bool]: