Rule Builder: Fix count resolution when Oring HasAnyCount (#6048)

This commit is contained in:
Ian Robinson
2026-03-18 13:54:17 -04:00
committed by GitHub
parent 2e5356ad05
commit fb45a2f87e
2 changed files with 9 additions and 1 deletions

View File

@@ -527,7 +527,7 @@ class Or(NestedRule[TWorld], game="Archipelago"):
items[item] = 1
elif isinstance(child, HasAnyCount.Resolved):
for item, count in child.item_counts:
if item not in items or items[item] < count:
if item not in items or count < items[item]:
items[item] = count
else:
clauses.append(child)

View File

@@ -233,6 +233,14 @@ class CachedRuleBuilderTestCase(RuleBuilderTestCase):
Or(Has("A"), HasAny("B", "C"), HasAnyCount({"D": 1, "E": 1})),
HasAny.Resolved(("A", "B", "C", "D", "E"), player=1),
),
(
And(HasAllCounts({"A": 1, "B": 2}), HasAllCounts({"A": 2, "B": 2})),
HasAllCounts.Resolved((("A", 2), ("B", 2)), player=1),
),
(
Or(HasAnyCount({"A": 1, "B": 2}), HasAnyCount({"A": 2, "B": 2})),
HasAnyCount.Resolved((("A", 1), ("B", 2)), player=1),
),
)
)
class TestSimplify(RuleBuilderTestCase):