From 4a057090b42e65cde0d10efff325a2bdec4c0e6c Mon Sep 17 00:00:00 2001 From: Joseph Blackman Date: Wed, 1 Jul 2026 18:19:29 -0700 Subject: [PATCH] Fix an issue where tiny was a requirement for DK CBs --- cb_calc.py | 16 ++++++++++++++++ requirement_data.js | 8 +------- 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/cb_calc.py b/cb_calc.py index 2c98070b1..c1fece807 100644 --- a/cb_calc.py +++ b/cb_calc.py @@ -346,6 +346,17 @@ def relax_kong_requirement(requirement): requirement.add(kong) +def conflicting_kong_requirements(requirement): + """Determine if there are multiple 'is' kong requirements in a single requirement.""" + count = 0 + for kong in ["donkey", "diddy", "lanky", "tiny", "chunky"]: + if "is" + kong in requirement: + count += 1 + if count >= 2: + return True + return False + + def all_kongs_can_use(requirement): """Determine if a given requirement requires a specific kong, or can be used by all kongs.""" return requirement.isdisjoint(["isdonkey", "isdiddy", "islanky", "istiny", "ischunky"]) @@ -526,6 +537,10 @@ def traverse_graph(regions, entry_region): # print(f"Attempted to use transition from {region.name} to {next_region.name} using requirement {exit_requirement}, but access to the region requires {region_requirement}") continue + if conflicting_kong_requirements(exit_requirement | region_requirement): + # print(f"Attempted to use transition from {region.name} to {next_region.name} using requirement {exit_requirement}, but this would be a Tag Anywhere transition, since region access requires {region_requirement}") + continue + # If any of those products are new ways to reach next_region, then we do another loop afterwards if region_requirements[next_region].add(exit_requirement | region_requirement): # print(f"Found new transition from {region.name} to {next_region.name} using exit requirement {exit_requirement} and region requirement {region_requirement}") @@ -560,6 +575,7 @@ def traverse_graph(regions, entry_region): requirement = region_requirement | {"AllWarps"} relax_kong_requirement(requirement) if region_requirements[next_region].add(requirement): + # print(f"Found new transition from {region.name} to {next_region.name} using 'all warps' from {warp1.name} to {warp2.name}") found_new_requirement = True # Update any events based on new region requirements diff --git a/requirement_data.js b/requirement_data.js index ae99c67dc..5170ca52f 100644 --- a/requirement_data.js +++ b/requirement_data.js @@ -275,15 +275,9 @@ const requirement_data = { [Moves.Coconut, Moves.AllWarps], [Moves.ClimbingCheck, Moves.Coconut, Moves.FactoryTesting], ]), - new Requirement(10, [ // 1 balloon in RandDUpper - [Moves.ClimbingCheck, Moves.Coconut, Moves.AllWarps], - [Moves.ClimbingCheck, Moves.Coconut, Moves.FactoryTesting], - ]), - new Requirement(15, [ // 3 bunches in PowerHut + new Requirement(25, [ // 3 bunches in PowerHut; 1 balloon in RandDUpper [Moves.ClimbingCheck, Moves.Coconut, Moves.AllWarps], [Moves.ClimbingCheck, Moves.Coconut, Moves.FactoryTesting], - [Moves.Coconut, Moves.IsDiddy, Moves.AllWarps], - [Moves.Coconut, Moves.IsTiny, Moves.AllWarps], ]), ], "Diddy": [