From 6ae7eaa7ba8646dc105231860a959989e79da1c6 Mon Sep 17 00:00:00 2001 From: Michael McKenzie Date: Wed, 15 Apr 2026 04:53:50 -0230 Subject: [PATCH 1/3] h_avoidScrewStuck --- helpers.json | 12 +++++++++ region/brinstar/pink/Dachora Room.json | 7 +++++- region/crateria/central/Landing Site.json | 25 ++++++++++++++----- .../west/Gauntlet Energy Tank Room.json | 10 ++++++-- region/crateria/west/Gauntlet Entrance.json | 2 ++ region/lowernorfair/east/Pillar Room.json | 2 ++ schema/m3-string-requirements.schema.json | 1 + 7 files changed, 50 insertions(+), 9 deletions(-) diff --git a/helpers.json b/helpers.json index 1da8dab42..1aeb7fd94 100644 --- a/helpers.json +++ b/helpers.json @@ -1034,6 +1034,18 @@ ]} ] }, + { + "name": "h_avoidScrewStuck", + "requires": [ + {"or": [ + "Morph", + "canCarefulJump" + ]} + ], + "devNote": [ + "ScrewAttack can create 2 tile high spaces with Samus in spinjump leading to a crouch, resulting in a potential softlock." + ] + }, { "name": "h_shinechargeMaxRunway", "requires": [ diff --git a/region/brinstar/pink/Dachora Room.json b/region/brinstar/pink/Dachora Room.json index 529982655..3e2be5fcc 100644 --- a/region/brinstar/pink/Dachora Room.json +++ b/region/brinstar/pink/Dachora Room.json @@ -208,6 +208,7 @@ {"and": [ "canDash", "ScrewAttack", + "h_avoidScrewStuck", {"cycleFrames": 620} ]}, {"and": [ @@ -405,6 +406,7 @@ {"or": [ "h_getBlueSpeedMaxRunway", "h_destroyBombWalls", + "h_avoidScrewStuck", {"obstaclesCleared": ["A"]} ]} ], @@ -1106,7 +1108,10 @@ "h_getBlueSpeedMaxRunway", "canCarefulJump" ]}, - "h_destroyBombWalls", + {"and": [ + "h_destroyBombWalls", + "h_avoidScrewStuck" + ]}, {"obstaclesCleared": ["A"]} ]} ], diff --git a/region/crateria/central/Landing Site.json b/region/crateria/central/Landing Site.json index a6e47ee59..70b6025f4 100644 --- a/region/crateria/central/Landing Site.json +++ b/region/crateria/central/Landing Site.json @@ -558,7 +558,10 @@ "name": "Base", "requires": [ {"or": [ - "h_destroyBombWalls", + {"and": [ + "h_destroyBombWalls", + "h_avoidScrewStuck" + ]}, {"obstaclesCleared": ["A"]} ]} ], @@ -822,7 +825,8 @@ "requires": [ "canSpeedyJump", "canCarefulJump", - "ScrewAttack" + "ScrewAttack", + "h_avoidScrewStuck" ], "clearsObstacles": ["A"], "flashSuitChecked": true, @@ -1699,7 +1703,10 @@ ]} ]}, {"or": [ - "h_destroyBombWalls", + {"and": [ + "h_destroyBombWalls", + "h_avoidScrewStuck" + ]}, {"obstaclesCleared": ["A"]} ]} ], @@ -1746,7 +1753,8 @@ "h_storedSpark", "canMidairShinespark", {"shinespark": {"frames": 31, "excessFrames": 2}}, - "h_destroyBombWalls" + "h_destroyBombWalls", + "h_avoidScrewStuck" ], "clearsObstacles": ["A"], "flashSuitChecked": true, @@ -1951,7 +1959,10 @@ "canJumpIntoIBJ" ]}, {"or": [ - "h_destroyBombWalls", + {"and": [ + "h_destroyBombWalls", + "h_avoidScrewStuck" + ]}, {"obstaclesCleared": ["A"]} ]} ], @@ -1970,6 +1981,7 @@ "h_bombThings", {"and": [ "ScrewAttack", + "h_avoidScrewStuck", {"or": [ "canTwoTileSqueeze", "canSpeedyJump", @@ -2008,7 +2020,8 @@ "requires": [ "h_storedSpark", {"shinespark": {"frames": 7, "excessFrames": 2}}, - "h_destroyBombWalls" + "h_destroyBombWalls", + "h_avoidScrewStuck" ], "clearsObstacles": ["A"], "flashSuitChecked": true, diff --git a/region/crateria/west/Gauntlet Energy Tank Room.json b/region/crateria/west/Gauntlet Energy Tank Room.json index 30d4b45ec..58591efa5 100644 --- a/region/crateria/west/Gauntlet Energy Tank Room.json +++ b/region/crateria/west/Gauntlet Energy Tank Room.json @@ -569,7 +569,10 @@ {"acidFrames": 35} ]}, {"or": [ - "ScrewAttack", + {"and": [ + "ScrewAttack", + "h_avoidScrewStuck" + ]}, {"obstaclesCleared": ["A", "B"]} ]} ], @@ -1334,7 +1337,10 @@ {"acidFrames": 35} ]}, {"or": [ - "ScrewAttack", + {"and": [ + "ScrewAttack", + "h_avoidScrewStuck" + ]}, {"and": [ {"obstaclesCleared": ["A"]}, {"obstaclesCleared": ["B"]} diff --git a/region/crateria/west/Gauntlet Entrance.json b/region/crateria/west/Gauntlet Entrance.json index 3261db3c8..293b2c6f5 100644 --- a/region/crateria/west/Gauntlet Entrance.json +++ b/region/crateria/west/Gauntlet Entrance.json @@ -364,6 +364,7 @@ "name": "Base", "requires": [ "ScrewAttack", + "h_avoidScrewStuck", {"or": [ "canCarefulJump", {"acidFrames": 15} @@ -798,6 +799,7 @@ "name": "Base", "requires": [ "ScrewAttack", + "h_avoidScrewStuck", {"or": [ "canCarefulJump", {"acidFrames": 15} diff --git a/region/lowernorfair/east/Pillar Room.json b/region/lowernorfair/east/Pillar Room.json index 5473eda1b..785c51567 100644 --- a/region/lowernorfair/east/Pillar Room.json +++ b/region/lowernorfair/east/Pillar Room.json @@ -142,6 +142,7 @@ "requires": [ "canDash", "ScrewAttack", + "h_avoidScrewStuck", {"or": [ "canCarefulJump", {"heatFrames": 60} @@ -686,6 +687,7 @@ "canDash", "canCarefulJump", "ScrewAttack", + "h_avoidScrewStuck", {"or": [ {"and": [ "canSuitlessLavaDive", diff --git a/schema/m3-string-requirements.schema.json b/schema/m3-string-requirements.schema.json index 8180fb8c4..8de7193db 100644 --- a/schema/m3-string-requirements.schema.json +++ b/schema/m3-string-requirements.schema.json @@ -404,6 +404,7 @@ "h_additionalBomb", "h_useSpringBall", "h_hasBeamUpgrade", + "h_avoidScrewStuck", "h_shinechargeMaxRunway", "h_getBlueSpeedMaxRunway", "h_shinechargeSlideTemporaryBlue", From 8a5cad4ca169eb2ed311b777784389378589543c Mon Sep 17 00:00:00 2001 From: Michael McKenzie Date: Sat, 18 Apr 2026 03:39:29 -0230 Subject: [PATCH 2/3] Add Scrwe to avoidScrewStuck --- helpers.json | 10 +++++++ region/brinstar/pink/Dachora Room.json | 9 ++----- region/crateria/central/Landing Site.json | 26 +++++-------------- .../west/Gauntlet Energy Tank Room.json | 10 ++----- region/crateria/west/Gauntlet Entrance.json | 2 -- region/lowernorfair/east/Pillar Room.json | 9 ++++--- schema/m3-string-requirements.schema.json | 1 + 7 files changed, 27 insertions(+), 40 deletions(-) diff --git a/helpers.json b/helpers.json index 1aeb7fd94..71ae0e2a3 100644 --- a/helpers.json +++ b/helpers.json @@ -1006,6 +1006,15 @@ ]} ] }, + { + "name": "h_carefullyDestroyBombWalls", + "requires": [ + {"or": [ + "h_bombThings", + "h_avoidScrewStuck" + ]} + ] + }, { "name": "h_additionalBomb", "requires": [ @@ -1037,6 +1046,7 @@ { "name": "h_avoidScrewStuck", "requires": [ + "ScrewAttack", {"or": [ "Morph", "canCarefulJump" diff --git a/region/brinstar/pink/Dachora Room.json b/region/brinstar/pink/Dachora Room.json index 3e2be5fcc..6ffd9881d 100644 --- a/region/brinstar/pink/Dachora Room.json +++ b/region/brinstar/pink/Dachora Room.json @@ -207,7 +207,6 @@ ]}, {"and": [ "canDash", - "ScrewAttack", "h_avoidScrewStuck", {"cycleFrames": 620} ]}, @@ -405,8 +404,7 @@ "requires": [ {"or": [ "h_getBlueSpeedMaxRunway", - "h_destroyBombWalls", - "h_avoidScrewStuck", + "h_carefullyDestroyBombWalls", {"obstaclesCleared": ["A"]} ]} ], @@ -1108,10 +1106,7 @@ "h_getBlueSpeedMaxRunway", "canCarefulJump" ]}, - {"and": [ - "h_destroyBombWalls", - "h_avoidScrewStuck" - ]}, + "h_carefullyDestroyBombWalls", {"obstaclesCleared": ["A"]} ]} ], diff --git a/region/crateria/central/Landing Site.json b/region/crateria/central/Landing Site.json index 70b6025f4..6d74adae6 100644 --- a/region/crateria/central/Landing Site.json +++ b/region/crateria/central/Landing Site.json @@ -558,10 +558,7 @@ "name": "Base", "requires": [ {"or": [ - {"and": [ - "h_destroyBombWalls", - "h_avoidScrewStuck" - ]}, + "h_carefullyDestroyBombWalls", {"obstaclesCleared": ["A"]} ]} ], @@ -824,8 +821,6 @@ "name": "Big Jump with Speed and Screw", "requires": [ "canSpeedyJump", - "canCarefulJump", - "ScrewAttack", "h_avoidScrewStuck" ], "clearsObstacles": ["A"], @@ -1703,10 +1698,7 @@ ]} ]}, {"or": [ - {"and": [ - "h_destroyBombWalls", - "h_avoidScrewStuck" - ]}, + "h_carefullyDestroyBombWalls", {"obstaclesCleared": ["A"]} ]} ], @@ -1753,8 +1745,7 @@ "h_storedSpark", "canMidairShinespark", {"shinespark": {"frames": 31, "excessFrames": 2}}, - "h_destroyBombWalls", - "h_avoidScrewStuck" + "h_carefullyDestroyBombWalls" ], "clearsObstacles": ["A"], "flashSuitChecked": true, @@ -1959,10 +1950,7 @@ "canJumpIntoIBJ" ]}, {"or": [ - {"and": [ - "h_destroyBombWalls", - "h_avoidScrewStuck" - ]}, + "h_carefullyDestroyBombWalls", {"obstaclesCleared": ["A"]} ]} ], @@ -1980,10 +1968,9 @@ {"obstaclesCleared": ["A"]}, "h_bombThings", {"and": [ - "ScrewAttack", "h_avoidScrewStuck", {"or": [ - "canTwoTileSqueeze", + "canTunnelCrawl", "canSpeedyJump", {"and": [ "canXRayStandUp", @@ -2020,8 +2007,7 @@ "requires": [ "h_storedSpark", {"shinespark": {"frames": 7, "excessFrames": 2}}, - "h_destroyBombWalls", - "h_avoidScrewStuck" + "h_carefullyDestroyBombWalls" ], "clearsObstacles": ["A"], "flashSuitChecked": true, diff --git a/region/crateria/west/Gauntlet Energy Tank Room.json b/region/crateria/west/Gauntlet Energy Tank Room.json index 58591efa5..8ad0cf876 100644 --- a/region/crateria/west/Gauntlet Energy Tank Room.json +++ b/region/crateria/west/Gauntlet Energy Tank Room.json @@ -569,10 +569,7 @@ {"acidFrames": 35} ]}, {"or": [ - {"and": [ - "ScrewAttack", - "h_avoidScrewStuck" - ]}, + "h_avoidScrewStuck", {"obstaclesCleared": ["A", "B"]} ]} ], @@ -1337,10 +1334,7 @@ {"acidFrames": 35} ]}, {"or": [ - {"and": [ - "ScrewAttack", - "h_avoidScrewStuck" - ]}, + "h_avoidScrewStuck", {"and": [ {"obstaclesCleared": ["A"]}, {"obstaclesCleared": ["B"]} diff --git a/region/crateria/west/Gauntlet Entrance.json b/region/crateria/west/Gauntlet Entrance.json index 293b2c6f5..a60f24645 100644 --- a/region/crateria/west/Gauntlet Entrance.json +++ b/region/crateria/west/Gauntlet Entrance.json @@ -363,7 +363,6 @@ "link": [1, 2], "name": "Base", "requires": [ - "ScrewAttack", "h_avoidScrewStuck", {"or": [ "canCarefulJump", @@ -798,7 +797,6 @@ "link": [2, 1], "name": "Base", "requires": [ - "ScrewAttack", "h_avoidScrewStuck", {"or": [ "canCarefulJump", diff --git a/region/lowernorfair/east/Pillar Room.json b/region/lowernorfair/east/Pillar Room.json index 785c51567..d56b9e62c 100644 --- a/region/lowernorfair/east/Pillar Room.json +++ b/region/lowernorfair/east/Pillar Room.json @@ -142,10 +142,14 @@ "requires": [ "canDash", "ScrewAttack", - "h_avoidScrewStuck", {"or": [ "canCarefulJump", - {"heatFrames": 60} + {"and": [ + "Morph", + "Gravity", + {"acidFrames": 20}, + {"heatFrames": 60} + ]} ]}, {"heatFrames": 480} ], @@ -687,7 +691,6 @@ "canDash", "canCarefulJump", "ScrewAttack", - "h_avoidScrewStuck", {"or": [ {"and": [ "canSuitlessLavaDive", diff --git a/schema/m3-string-requirements.schema.json b/schema/m3-string-requirements.schema.json index 8de7193db..3dbeced69 100644 --- a/schema/m3-string-requirements.schema.json +++ b/schema/m3-string-requirements.schema.json @@ -401,6 +401,7 @@ "h_usePowerBomb", "h_bombThings", "h_destroyBombWalls", + "h_carefullyDestroyBombWalls", "h_additionalBomb", "h_useSpringBall", "h_hasBeamUpgrade", From 33f1c364edc9a533b6b1e4469160478d808b2238 Mon Sep 17 00:00:00 2001 From: Michael McKenzie Date: Sat, 18 Apr 2026 04:16:16 -0230 Subject: [PATCH 3/3] Add back canCarefulJump --- region/crateria/central/Landing Site.json | 1 + 1 file changed, 1 insertion(+) diff --git a/region/crateria/central/Landing Site.json b/region/crateria/central/Landing Site.json index 6d74adae6..c94b2c122 100644 --- a/region/crateria/central/Landing Site.json +++ b/region/crateria/central/Landing Site.json @@ -821,6 +821,7 @@ "name": "Big Jump with Speed and Screw", "requires": [ "canSpeedyJump", + "canCarefulJump", "h_avoidScrewStuck" ], "clearsObstacles": ["A"],