From b789e75e5358c357253c5fefad368588baca24c3 Mon Sep 17 00:00:00 2001 From: kjbranch Date: Tue, 22 Jul 2025 13:31:13 -0600 Subject: [PATCH 1/4] G-Mode Fixes from Bobbob's List --- .../blue/Blue Brinstar Energy Tank Room.json | 70 ++++++++++------ region/brinstar/blue/Morph Ball Room.json | 82 +++++++++++++++++++ region/crateria/central/Landing Site.json | 18 ++++ region/crateria/east/Crab Maze.json | 48 +++++++++++ region/crateria/east/West Ocean.json | 58 +++++++++++++ 5 files changed, 252 insertions(+), 24 deletions(-) diff --git a/region/brinstar/blue/Blue Brinstar Energy Tank Room.json b/region/brinstar/blue/Blue Brinstar Energy Tank Room.json index dfbc1d8a2b..c74b8a6efd 100644 --- a/region/brinstar/blue/Blue Brinstar Energy Tank Room.json +++ b/region/brinstar/blue/Blue Brinstar Energy Tank Room.json @@ -1306,43 +1306,42 @@ "SpaceJump", {"and": [ "h_artificialMorphLongIBJ", - "canOffScreenMovement" + {"or": [ + "Morph", + "canOffScreenMovement" + ]} ]} ]} ], "flashSuitChecked": true, - "note": "Overload PLMs by repeatidly bombing the Power Bomb blocks or the side of the crumble block, then enter through the crumble block.", - "devNote": "The off screen movement is just during an IBJ, and only if wall jumps are disabled. But the IBJ is long and Samus is covered for most of it." - }, - { - "id": 58, - "link": [5, 4], - "name": "G-Mode Morph", - "requires": [ - "canEnterGMode" + "note": [ + "Overload PLMs by repeatidly bombing the Power Bomb blocks or the side of the crumble block, then enter through the crumble block.", + "If Samus is then going to IBJ up the shaft, and she has Morph, it is worth exiting G-mode first to allow the camera to follow her." ], - "flashSuitChecked": true + "devNote": "The off screen movement is just during an artificial morphed IBJ - the IBJ is long and Samus is covered for most of it." }, { - "id": 59, - "link": [5, 4], - "name": "G-Mode Morph with Power Bomb", + "link": [5, 2], + "name": "G-Mode Morph Shoot the Ceiling Block Item", "requires": [ "canEnterGMode", - "h_artificialMorphPowerBomb" + "Morph", + {"or": [ + "canConsecutiveWalljump", + "SpaceJump" + ]} ], - "clearsObstacles": ["B", "C"], "flashSuitChecked": true, - "note": "The blocks will not break if PLMs are already overloaded. Exiting G-Mode before the Power Bomb explodes will ensure they break." + "note": [ + "Overload PLMs by shooing the ceiling block item many times.", + "Because the item is in a shot block, this does not require Direct G-mode, nor does it require the item to be uncollected." + ] }, { - "id": 60, - "link": [6, 2], - "name": "G-Mode Morph Power Bomb the Item", + "link": [5, 2], + "name": "G-Mode Morph Power Bomb the Ceiling Block Item", "requires": [ "canEnterGMode", - {"itemNotCollectedAtNode": 4}, - "canRiskPermanentLossOfAccess", "h_artificialMorphPowerBomb", "h_artificialMorphMovement", {"or": [ @@ -1350,12 +1349,35 @@ "SpaceJump" ]} ], + "clearsObstacles": ["B", "C"], "flashSuitChecked": true, "note": [ - "Overload PLMs with a single Power Bomb by hitting the item at the right end of the room.", - "This can be done with a single precisely placed Power Bomb. There should be 4 empty tiles between Samus and the left of the blocks when the bomb is placed." + "Overload PLMs with a single Power Bomb by hitting the ceiling block item.", + "This can be done with a single precisely placed Power Bomb. There should be one empty tile between Samus and the right wall.", + "Because the item is in a shot block, this does not require Direct G-mode, nor does it require the item to be uncollected." ] }, + { + "id": 58, + "link": [5, 4], + "name": "G-Mode Morph", + "requires": [ + "canEnterGMode" + ], + "flashSuitChecked": true + }, + { + "id": 59, + "link": [5, 4], + "name": "G-Mode Morph with Power Bomb", + "requires": [ + "canEnterGMode", + "h_artificialMorphPowerBomb" + ], + "clearsObstacles": ["B", "C"], + "flashSuitChecked": true, + "note": "The blocks will not break if PLMs are already overloaded. Exiting G-Mode before the Power Bomb explodes will ensure they break." + }, { "id": 61, "link": [6, 4], diff --git a/region/brinstar/blue/Morph Ball Room.json b/region/brinstar/blue/Morph Ball Room.json index da6b51b86a..4d586e4172 100644 --- a/region/brinstar/blue/Morph Ball Room.json +++ b/region/brinstar/blue/Morph Ball Room.json @@ -1010,6 +1010,47 @@ "Roll under the last Sidehopper and through the bomb blocks." ] }, + { + "link": [1, 5], + "name": "Indirect G-Mode, Overload PLMs, Power Bomb Wall", + "entranceCondition": { + "comeInWithGMode": { + "mode": "indirect", + "morphed": true + } + }, + "requires": [ + {"or": [ + {"enemyDamage": {"enemy": "Sidehopper", "type": "contact", "hits": 2}}, + {"ammo": {"type": "PowerBomb", "count": 1}}, + "canInsaneJump", + {"and": [ + "Morph", + {"or": [ + {"and": [ + "Plasma", + "Charge" + ]}, + "ScrewAttack" + ]} + ]} + ]}, + "h_usePowerBomb", + {"or": [ + "h_artificialMorphMovement", + "h_additionalBomb" + ]} + ], + "clearsObstacles": ["B", "D"], + "flashSuitChecked": true, + "note": [ + "Either kill the Sidehoppers immediately on entry by placing a Power Bomb while rolling off the stair, dodge them multiple times, or tank their hits.", + "If Samus has Morph Ball, it is also possible to kill the Sidehoppers upon room entry with Screw Attack or a powerful beam.", + "Overload the PLMs by rolling through the camera scroll blocks which are 4 tiles to the right of the stair by the door.", + "Roll under the last Sidehopper and through the bomb blocks.", + "Place a Power Bomb next to the right wall then quickly exit G-mode before it explodes to destroy the blocks." + ] + }, { "id": 30, "link": [1, 5], @@ -1046,6 +1087,47 @@ "Roll under the last Sidehopper and through the bomb blocks." ] }, + { + "link": [1, 5], + "name": "Direct G-Mode Morph, Overload PLMs, Power Bomb Wall", + "entranceCondition": { + "comeInWithGMode": { + "mode": "direct", + "morphed": true + } + }, + "requires": [ + {"or": [ + "canInsaneJump", + {"enemyDamage": {"enemy": "Sidehopper", "type": "contact", "hits": 2}}, + {"and": [ + {"ammo": {"type": "PowerBomb", "count": 1}}, + {"or": [ + "canTrickyDodgeEnemies", + {"enemyDamage": {"enemy": "Sidehopper", "type": "contact", "hits": 1}} + ]} + ]}, + {"and": [ + "Morph", + "ScrewAttack" + ]} + ]}, + "h_usePowerBomb", + {"or": [ + "h_artificialMorphMovement", + "h_additionalBomb" + ]} + ], + "clearsObstacles": ["B", "D"], + "flashSuitChecked": true, + "note": [ + "Tank the Sidehopper hits or kill them after a single hit by quickly placing a Power Bomb.", + "It is also possible to kill the Sidehoppers with a very fast Screw Attack, if Samus has Morph Ball.", + "Overload the PLMs by rolling through the camera scroll blocks which are 4 tiles to the right of the stair by the door.", + "Roll under the last Sidehopper and through the bomb blocks.", + "Place a Power Bomb next to the right wall then quickly exit G-mode before it explodes to destroy the blocks." + ] + }, { "id": 31, "link": [2, 2], diff --git a/region/crateria/central/Landing Site.json b/region/crateria/central/Landing Site.json index 787deb7466..c8e042f77a 100644 --- a/region/crateria/central/Landing Site.json +++ b/region/crateria/central/Landing Site.json @@ -471,6 +471,24 @@ "clearsObstacles": ["A"], "flashSuitChecked": true }, + { + "link": [1, 1], + "name": "G-Mode Power Bomb the Blocks", + "entranceCondition": { + "comeInWithGMode": { + "mode": "any", + "morphed": false + } + }, + "requires": [ + "h_artificialMorphPowerBomb", + {"or": [ + "h_artificialMorphMovement", + "h_artificialMorphBombHorizontally" + ]} + ], + "flashSuitChecked": true + }, { "id": 90, "link": [1, 1], diff --git a/region/crateria/east/Crab Maze.json b/region/crateria/east/Crab Maze.json index d81df72aeb..1bd25f5a69 100644 --- a/region/crateria/east/Crab Maze.json +++ b/region/crateria/east/Crab Maze.json @@ -344,6 +344,28 @@ "Take the first left above the waterline. Place bombs in the single tile nook on the left." ] }, + { + "link": [1, 3], + "name": "G-Mode Morph, Crab Boost", + "entranceCondition": { + "comeInWithGMode": { + "mode": "any", + "morphed": true + }, + "comesThroughToilet": "any" + }, + "requires": [ + "Gravity", + "canBePatient", + "canNeutralDamageBoost", + {"enemyDamage": {"enemy": "Sciser", "type": "contact", "hits": 1}} + ], + "flashSuitChecked": true, + "note": [ + "Wait for the global crab to traverse the room and boost Samus up the ledge.", + "It takes just over a minute for the crab to get there." + ] + }, { "id": 12, "link": [2, 1], @@ -373,6 +395,32 @@ "To safely bomb the fast crab, wait just left of where it falls." ] }, + { + "link": [2, 1], + "name": "G-Mode Morph, Crab Boost", + "entranceCondition": { + "comeInWithGMode": { + "mode": "any", + "morphed": true + }, + "comesThroughToilet": "any" + }, + "requires": [ + "canTrickyGMode", + "h_artificialMorphSpringBall", + "h_artificialMorphBombs", + "canUseIFrames", + "canNeutralDamageBoost", + {"enemyDamage": {"enemy": "Sciser", "type": "contact", "hits": 2}} + ], + "flashSuitChecked": true, + "note": [ + "Overload PLMs by placing Bombs at the far right, against the bottom of the crumble block, at the right of the low underwater ceiling.", + "It is okay to kill the fast crab, and leave another crab alive, off camera.", + "After PLMs are overloaded, lure a crab and take a hit when it is near the bottom right corner then another at the top of Samus' jump at the crumble block to boost to the right.", + "This requires carefully timing the first hit and jump so that Samus can get hit at the peak of her jump." + ] + }, { "id": 24, "link": [2, 1], diff --git a/region/crateria/east/West Ocean.json b/region/crateria/east/West Ocean.json index 96efbab665..70fff02dcd 100644 --- a/region/crateria/east/West Ocean.json +++ b/region/crateria/east/West Ocean.json @@ -3076,6 +3076,32 @@ ], "flashSuitChecked": true }, + { + "link": [16, 14], + "name": "Shinespark Through Crumble Blocks, Quick Morph", + "requires": [ + "canEnterGMode", + "canInsaneJump", + {"canShineCharge": { + "usedTiles": 23, + "steepUpTiles": 6, + "steepDownTiles": 1, + "openEnd": 1 + }}, + {"shinespark": {"frames": 23, "excessFrames": 0}}, + "can4HighMidAirMorph", + {"or": [ + "h_artificialMorphBombThings", + "h_artificialMorphSpringBall", + "can3HighWallMidAirMorph" + ]} + ], + "flashSuitChecked": true, + "note": [ + "Shinespark vertically through the crumble block and quickly morph and move left into the bomb block just below.", + "Align Samus on the second downward slope in front of the door before sparking." + ] + }, { "id": 134, "link": [17, 1], @@ -3102,6 +3128,38 @@ ], "devNote": "This requires the item to not be collected, but there is no reason to do this without it being there, so there is no canRiskPermanentLossOfAccess." }, + { + "link": [17, 1], + "name": "G-mode Overload PLMs by Power Bombing Item, Shinespark, Quick Morph", + "requires": [ + {"notable": "G-mode Overload PLMs by Power Bombing Morph Maze Item"}, + "canEnterGMode", + "h_usePowerBomb", + "canInsaneJump", + {"canShineCharge": { + "usedTiles": 23, + "steepUpTiles": 6, + "steepDownTiles": 1, + "openEnd": 1 + }}, + {"shinespark": {"frames": 23, "excessFrames": 0}}, + "can4HighMidAirMorph", + {"or": [ + "h_artificialMorphBombThings", + "h_artificialMorphSpringBall", + "can3HighWallMidAirMorph" + ]} + ], + "collectsItems": [10], + "flashSuitChecked": true, + "note": [ + "To overload the PLMs, place a Power Bomb precisely to the right of the bottom of the second overhang above the bottom left door.", + "This is at the max jump height without HiJump. Placing the Power Bomb higher or lower will not overload the PLMs without many Power Bombs.", + "Shinespark vertically through the crumble block and quickly morph and move left into the bomb block just below.", + "Align Samus on the second downward slope in front of the door before sparking." + ], + "devNote": "This requires the item to not be collected, but there is no reason to do this without it being there, so there is no canRiskPermanentLossOfAccess." + }, { "id": 135, "link": [17, 16], From f6cb99c4631f4e9e8f6745ec527f86eb4119f239 Mon Sep 17 00:00:00 2001 From: kjbranch Date: Tue, 22 Jul 2025 13:34:01 -0600 Subject: [PATCH 2/4] fix error --- region/crateria/east/Crab Maze.json | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/region/crateria/east/Crab Maze.json b/region/crateria/east/Crab Maze.json index 1bd25f5a69..a10767eb09 100644 --- a/region/crateria/east/Crab Maze.json +++ b/region/crateria/east/Crab Maze.json @@ -402,8 +402,7 @@ "comeInWithGMode": { "mode": "any", "morphed": true - }, - "comesThroughToilet": "any" + } }, "requires": [ "canTrickyGMode", From 57b6916f88dd56d30365f9800d0c914eb47dbb88 Mon Sep 17 00:00:00 2001 From: kjbranch <61815121+kjbranch@users.noreply.github.com> Date: Fri, 25 Jul 2025 14:30:27 -0600 Subject: [PATCH 3/4] Apply suggestions from code review Co-authored-by: Michael McKenzie --- region/brinstar/blue/Blue Brinstar Energy Tank Room.json | 2 +- region/crateria/central/Landing Site.json | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/region/brinstar/blue/Blue Brinstar Energy Tank Room.json b/region/brinstar/blue/Blue Brinstar Energy Tank Room.json index c74b8a6efd..07bdf36a40 100644 --- a/region/brinstar/blue/Blue Brinstar Energy Tank Room.json +++ b/region/brinstar/blue/Blue Brinstar Energy Tank Room.json @@ -1333,7 +1333,7 @@ ], "flashSuitChecked": true, "note": [ - "Overload PLMs by shooing the ceiling block item many times.", + "Overload PLMs by shooting the ceiling block item many times.", "Because the item is in a shot block, this does not require Direct G-mode, nor does it require the item to be uncollected." ] }, diff --git a/region/crateria/central/Landing Site.json b/region/crateria/central/Landing Site.json index c8e042f77a..8b34ab3c09 100644 --- a/region/crateria/central/Landing Site.json +++ b/region/crateria/central/Landing Site.json @@ -487,6 +487,7 @@ "h_artificialMorphBombHorizontally" ]} ], + "clearsObstacles": ["A"], "flashSuitChecked": true }, { From cfd3da262dd3274e0125fdf16285ac28c042ea5d Mon Sep 17 00:00:00 2001 From: kjbranch Date: Fri, 25 Jul 2025 15:24:44 -0600 Subject: [PATCH 4/4] feedback update --- region/brinstar/blue/Morph Ball Room.json | 28 ++++++------------ region/crateria/east/Crab Maze.json | 2 +- region/crateria/east/West Ocean.json | 36 +++-------------------- 3 files changed, 14 insertions(+), 52 deletions(-) diff --git a/region/brinstar/blue/Morph Ball Room.json b/region/brinstar/blue/Morph Ball Room.json index 4d586e4172..2d7ef67bb6 100644 --- a/region/brinstar/blue/Morph Ball Room.json +++ b/region/brinstar/blue/Morph Ball Room.json @@ -977,7 +977,7 @@ { "id": 29, "link": [1, 5], - "name": "Indirect G-Mode, Overload PLMs", + "name": "Indirect G-Mode Morph, Overload PLMs", "entranceCondition": { "comeInWithGMode": { "mode": "indirect", @@ -987,7 +987,7 @@ "requires": [ {"or": [ {"enemyDamage": {"enemy": "Sidehopper", "type": "contact", "hits": 2}}, - {"ammo": {"type": "PowerBomb", "count": 1}}, + "h_artificialMorphPowerBomb", "canInsaneJump", {"and": [ "Morph", @@ -1012,7 +1012,7 @@ }, { "link": [1, 5], - "name": "Indirect G-Mode, Overload PLMs, Power Bomb Wall", + "name": "Indirect G-Mode Morph, Overload PLMs, Power Bomb Wall", "entranceCondition": { "comeInWithGMode": { "mode": "indirect", @@ -1022,20 +1022,10 @@ "requires": [ {"or": [ {"enemyDamage": {"enemy": "Sidehopper", "type": "contact", "hits": 2}}, - {"ammo": {"type": "PowerBomb", "count": 1}}, - "canInsaneJump", - {"and": [ - "Morph", - {"or": [ - {"and": [ - "Plasma", - "Charge" - ]}, - "ScrewAttack" - ]} - ]} + "h_artificialMorphPowerBomb", + "canInsaneJump" ]}, - "h_usePowerBomb", + "h_artificialMorphPowerBomb", {"or": [ "h_artificialMorphMovement", "h_additionalBomb" @@ -1066,7 +1056,7 @@ "canInsaneJump", {"enemyDamage": {"enemy": "Sidehopper", "type": "contact", "hits": 2}}, {"and": [ - {"ammo": {"type": "PowerBomb", "count": 1}}, + "h_artificialMorphPowerBomb", {"or": [ "canTrickyDodgeEnemies", {"enemyDamage": {"enemy": "Sidehopper", "type": "contact", "hits": 1}} @@ -1101,7 +1091,7 @@ "canInsaneJump", {"enemyDamage": {"enemy": "Sidehopper", "type": "contact", "hits": 2}}, {"and": [ - {"ammo": {"type": "PowerBomb", "count": 1}}, + "h_artificialMorphPowerBomb", {"or": [ "canTrickyDodgeEnemies", {"enemyDamage": {"enemy": "Sidehopper", "type": "contact", "hits": 1}} @@ -1112,7 +1102,7 @@ "ScrewAttack" ]} ]}, - "h_usePowerBomb", + "h_artificialMorphPowerBomb", {"or": [ "h_artificialMorphMovement", "h_additionalBomb" diff --git a/region/crateria/east/Crab Maze.json b/region/crateria/east/Crab Maze.json index a10767eb09..25dbc03638 100644 --- a/region/crateria/east/Crab Maze.json +++ b/region/crateria/east/Crab Maze.json @@ -405,7 +405,7 @@ } }, "requires": [ - "canTrickyGMode", + "canInsaneJump", "h_artificialMorphSpringBall", "h_artificialMorphBombs", "canUseIFrames", diff --git a/region/crateria/east/West Ocean.json b/region/crateria/east/West Ocean.json index 70fff02dcd..cdeb65c116 100644 --- a/region/crateria/east/West Ocean.json +++ b/region/crateria/east/West Ocean.json @@ -3100,6 +3100,10 @@ "note": [ "Shinespark vertically through the crumble block and quickly morph and move left into the bomb block just below.", "Align Samus on the second downward slope in front of the door before sparking." + ], + "devNote": [ + "The canInsaneJump is used as a difficulty placement, as this strat is unintuitive.", + "FIXME: This can't be used if going 17->16 and Power Bombing the item with canRiskPermanentLossOfAccess, because the block will remain solid." ] }, { @@ -3128,38 +3132,6 @@ ], "devNote": "This requires the item to not be collected, but there is no reason to do this without it being there, so there is no canRiskPermanentLossOfAccess." }, - { - "link": [17, 1], - "name": "G-mode Overload PLMs by Power Bombing Item, Shinespark, Quick Morph", - "requires": [ - {"notable": "G-mode Overload PLMs by Power Bombing Morph Maze Item"}, - "canEnterGMode", - "h_usePowerBomb", - "canInsaneJump", - {"canShineCharge": { - "usedTiles": 23, - "steepUpTiles": 6, - "steepDownTiles": 1, - "openEnd": 1 - }}, - {"shinespark": {"frames": 23, "excessFrames": 0}}, - "can4HighMidAirMorph", - {"or": [ - "h_artificialMorphBombThings", - "h_artificialMorphSpringBall", - "can3HighWallMidAirMorph" - ]} - ], - "collectsItems": [10], - "flashSuitChecked": true, - "note": [ - "To overload the PLMs, place a Power Bomb precisely to the right of the bottom of the second overhang above the bottom left door.", - "This is at the max jump height without HiJump. Placing the Power Bomb higher or lower will not overload the PLMs without many Power Bombs.", - "Shinespark vertically through the crumble block and quickly morph and move left into the bomb block just below.", - "Align Samus on the second downward slope in front of the door before sparking." - ], - "devNote": "This requires the item to not be collected, but there is no reason to do this without it being there, so there is no canRiskPermanentLossOfAccess." - }, { "id": 135, "link": [17, 16],