From 5f98978744265d2baec93cedbfe85f2d40ab0359 Mon Sep 17 00:00:00 2001 From: Brent Kerby Date: Tue, 8 Jul 2025 08:23:42 -0600 Subject: [PATCH 1/3] Some more X-mode strats & refinements --- .../green/Etecoon Energy Tank Room.json | 18 ++ .../brinstar/kraid/Kraid Eye Door Room.json | 40 +++++ .../pink/Pink Brinstar Hopper Room.json | 20 +++ region/brinstar/red/Bat Room.json | 38 +++++ region/brinstar/red/Below Spazer.json | 40 +++++ .../red/Red Brinstar Fireflea Room.json | 158 ++++++++++-------- .../inner-pink/East Cactus Alley Room.json | 14 +- 7 files changed, 259 insertions(+), 69 deletions(-) diff --git a/region/brinstar/green/Etecoon Energy Tank Room.json b/region/brinstar/green/Etecoon Energy Tank Room.json index 879e4b82c9..44bc14d95d 100644 --- a/region/brinstar/green/Etecoon Energy Tank Room.json +++ b/region/brinstar/green/Etecoon Energy Tank Room.json @@ -1946,6 +1946,24 @@ "requires": [], "flashSuitChecked": true }, + { + "link": [7, 4], + "name": "X-Mode, Leave With Spark", + "requires": [ + "canXMode", + "h_XModeThornHit", + "h_shinechargeMaxRunway", + {"shinespark": {"frames": 62, "excessFrames": 0}} + ], + "exitCondition": { + "leaveWithSpark": {} + }, + "note": [ + "While in X-mode on the thorns, Samus' will be flashing as i-frames periodically refresh;", + "by timing the shinecharge and X-Ray release to happen soon after i-frames refresh,", + "a second thorn hit can be avoided." + ] + }, { "id": 72, "link": [7, 6], diff --git a/region/brinstar/kraid/Kraid Eye Door Room.json b/region/brinstar/kraid/Kraid Eye Door Room.json index 799f462c89..7d16670ae1 100644 --- a/region/brinstar/kraid/Kraid Eye Door Room.json +++ b/region/brinstar/kraid/Kraid Eye Door Room.json @@ -145,6 +145,26 @@ }, "flashSuitChecked": true }, + { + "link": [1, 1], + "name": "X-Mode, Leave Shinecharged", + "requires": [ + "canXMode", + {"thornHits": 2}, + "h_shinechargeMaxRunway", + "canBeVeryPatient", + {"shineChargeFrames": 110} + ], + "exitCondition": { + "leaveShinecharged": {} + }, + "flashSuitChecked": true, + "note": ["A very precise bounce is needed in order to enter X-mode with dash speed."], + "devNote": [ + "Two thorn hits are expected.", + "Lenience is not included because there is a farm available." + ] + }, { "id": 5, "link": [1, 2], @@ -899,6 +919,26 @@ "Freeze the Zeb after it thaws, noting that it will rise one pixel relative to its first frozen location." ] }, + { + "link": [3, 3], + "name": "X-Mode, Leave Shinecharged", + "requires": [ + "canXMode", + {"thornHits": 2}, + "h_shinechargeMaxRunway", + "canBeVeryPatient", + {"shineChargeFrames": 155} + ], + "exitCondition": { + "leaveShinecharged": {} + }, + "flashSuitChecked": true, + "note": ["A very precise bounce is needed in order to enter X-mode with dash speed."], + "devNote": [ + "Two thorn hits are expected.", + "Lenience is not included because there is a farm available." + ] + }, { "id": 43, "link": [3, 3], diff --git a/region/brinstar/pink/Pink Brinstar Hopper Room.json b/region/brinstar/pink/Pink Brinstar Hopper Room.json index 857f3e462f..7a18a9af69 100644 --- a/region/brinstar/pink/Pink Brinstar Hopper Room.json +++ b/region/brinstar/pink/Pink Brinstar Hopper Room.json @@ -192,6 +192,26 @@ }, "devNote": "This is worst-case scenario. A strat that comes in and leaves with a single hit could be added." }, + { + "link": [1, 1], + "name": "X-Mode, Leave Shinecharged", + "requires": [ + "canXMode", + "h_XModeSpikeHit", + "h_XModeSpikeHit", + "h_shinechargeMaxRunway", + "canBeVeryPatient", + {"shineChargeFrames": 110} + ], + "exitCondition": { + "leaveShinecharged": {} + }, + "flashSuitChecked": true, + "note": [ + "A very precise bounce is needed in order to enter X-mode with dash speed.", + "Neutral knockback or a damage boost can be used to reach the door more quickly." + ] + }, { "id": 85, "link": [1, 1], diff --git a/region/brinstar/red/Bat Room.json b/region/brinstar/red/Bat Room.json index 9d5f0106af..f6483967f3 100644 --- a/region/brinstar/red/Bat Room.json +++ b/region/brinstar/red/Bat Room.json @@ -214,6 +214,25 @@ } } }, + { + "link": [1, 1], + "name": "X-Mode, Leave Shinecharged", + "requires": [ + "Gravity", + "canXMode", + "h_XModeThornHit", + "h_shinechargeMaxRunway", + {"shineChargeFrames": 145} + ], + "exitCondition": { + "leaveShinecharged": {} + }, + "note": [ + "While in X-mode on the thorns, Samus' will be flashing as i-frames periodically refresh;", + "by timing the shinecharge and X-Ray release to happen soon after i-frames refresh,", + "a second thorn hit can be avoided." + ] + }, { "id": 9, "link": [1, 1], @@ -488,6 +507,25 @@ } } } + }, + { + "link": [2, 2], + "name": "X-Mode, Leave Shinecharged", + "requires": [ + "Gravity", + "canXMode", + "h_XModeThornHit", + "h_shinechargeMaxRunway", + {"shineChargeFrames": 70} + ], + "exitCondition": { + "leaveShinecharged": {} + }, + "note": [ + "While in X-mode on the thorns, Samus' will be flashing as i-frames periodically refresh;", + "by timing the shinecharge and X-Ray release to happen soon after i-frames refresh,", + "a second thorn hit can be avoided." + ] } ], "notables": [], diff --git a/region/brinstar/red/Below Spazer.json b/region/brinstar/red/Below Spazer.json index 96a0adef3d..db5431937f 100644 --- a/region/brinstar/red/Below Spazer.json +++ b/region/brinstar/red/Below Spazer.json @@ -174,6 +174,26 @@ } } }, + { + "link": [1, 1], + "name": "X-Mode, Leave Shinecharged", + "requires": [ + "Gravity", + {"enemyKill": {"enemies": [["Yapping Maw"]], "explicitWeapons": ["Super"]}}, + "canXMode", + "h_XModeThornHit", + "h_shinechargeMaxRunway", + {"shineChargeFrames": 75} + ], + "exitCondition": { + "leaveShinecharged": {} + }, + "note": [ + "While in X-mode on the thorns, Samus' will be flashing as i-frames periodically refresh;", + "by timing the shinecharge and X-Ray release to happen soon after i-frames refresh,", + "a second thorn hit can be avoided." + ] + }, { "id": 6, "link": [1, 2], @@ -570,6 +590,26 @@ } } }, + { + "link": [2, 2], + "name": "X-Mode, Leave Shinecharged", + "requires": [ + "Gravity", + {"enemyKill": {"enemies": [["Yapping Maw"]], "explicitWeapons": ["Super"]}}, + "canXMode", + "h_XModeThornHit", + "h_shinechargeMaxRunway", + {"shineChargeFrames": 65} + ], + "exitCondition": { + "leaveShinecharged": {} + }, + "note": [ + "While in X-mode on the thorns, Samus' will be flashing as i-frames periodically refresh;", + "by timing the shinecharge and X-Ray release to happen soon after i-frames refresh,", + "a second thorn hit can be avoided." + ] + }, { "id": 25, "link": [2, 2], diff --git a/region/brinstar/red/Red Brinstar Fireflea Room.json b/region/brinstar/red/Red Brinstar Fireflea Room.json index 213eb45cf6..8ad88f6f91 100644 --- a/region/brinstar/red/Red Brinstar Fireflea Room.json +++ b/region/brinstar/red/Red Brinstar Fireflea Room.json @@ -164,32 +164,6 @@ } } }, - { - "id": 3, - "link": [1, 1], - "name": "Leave with Spark (X-Mode)", - "requires": [ - "canXMode", - "h_XModeSpikeHit", - "h_XModeSpikeHit", - "canUseIFrames", - {"or": [ - "SpaceJump", - "h_XModeSpikeHit" - ]}, - "h_shinechargeMaxRunway", - {"shinespark": {"frames": 50}} - ], - "exitCondition": { - "leaveWithSpark": {} - }, - "flashSuitChecked": true, - "note": [ - "Use the Spikes in the center of the room to build a Shinespark with X-Mode.", - "There are sections of the room where using more complex movement can be used to save a Spike hit when X-Moding." - ], - "devNote": "Two spike hits are expected per attempt (with any additional leniency hits being multiplied by this amount)." - }, { "id": 4, "link": [1, 1], @@ -394,6 +368,16 @@ "unlocksDoors": [{"types": ["ammo"], "requires": []}], "note": "Use Space Jump to carry blue speed all the way across the room." }, + { + "link": [1, 3], + "name": "Base", + "requires": [ + {"or": [ + "Grapple", + "SpaceJump" + ]} + ] + }, { "id": 17, "link": [2, 1], @@ -467,56 +451,22 @@ { "id": 22, "link": [2, 1], - "name": "Shinespark (X-Mode)", + "name": "X-Mode Shinespark", "requires": [ "canMidairShinespark", "canXMode", {"spikeHits": 2}, "h_shinechargeMaxRunway", - {"shinespark": {"frames": 146, "excessFrames": 6}} + {"shinespark": {"frames": 105, "excessFrames": 6}} ], "flashSuitChecked": true, "note": [ - "Jump from the runway near the right door to bounce onto spikes for X-Mode.", - "Store a spark in X-Mode and use that to shinepark across the room.", + "Use X-mode to gain a shinecharge on the right side of the room,", + "and use it to spark across to the left side of the room.", "Bumping a solid tile before activating X-Mode will remove dash state, preventing shinecharging." ], "devNote": "Omitting leniency spikeHits, since the firefleas provide an opportunity to farm after a failed attempt." }, - { - "id": 23, - "link": [2, 1], - "name": "Leave With Spark (X-Mode)", - "requires": [ - {"obstaclesCleared": ["A"]}, - "canMidairShinespark", - "canXMode", - {"spikeHits": 2}, - "h_shinechargeMaxRunway", - {"or": [ - {"shinespark": {"frames": 146}}, - {"and": [ - "SpaceJump", - {"shinespark": {"frames": 50}} - ]} - ]} - ], - "exitCondition": { - "leaveWithSpark": {} - }, - "unlocksDoors": [{"types": ["ammo"], "requires": [], "useImplicitRequires": false}], - "flashSuitChecked": true, - "note": [ - "Jump from the runway near the right door to bounce onto spikes for X-Mode.", - "Store a spark in X-Mode and use that to shinepark across the room.", - "Bumping a solid tile before activating X-Mode will remove dash state, preventing shinecharging.", - "The left door must have been opened previously, in order to shinespark through it." - ], - "devNote": [ - "Omitting leniency spikeHits, since the firefleas provide an opportunity to farm after a failed attempt.", - "Unlocking the door is free since obstacle A being cleared implies it was already unlocked earlier if needed." - ] - }, { "id": 24, "link": [2, 1], @@ -727,20 +677,19 @@ { "id": 37, "link": [2, 2], - "name": "Leave Shinecharged (X-Mode)", + "name": "X-Mode Leave Shinecharged", "requires": [ "canXMode", "h_XModeSpikeHit", "h_XModeSpikeHit", "h_shinechargeMaxRunway", "canShinechargeMovement", - {"shineChargeFrames": 140} + {"shineChargeFrames": 95} ], "exitCondition": { "leaveShinecharged": {} }, - "flashSuitChecked": true, - "note": ["Store a spark in X-Mode and use that to leave with a shinecharge."] + "flashSuitChecked": true }, { "id": 38, @@ -859,6 +808,16 @@ "flashSuitChecked": true, "note": "Wait 40 seconds for a Waver to come and hit Samus." }, + { + "link": [2, 3], + "name": "Base", + "requires": [ + {"or": [ + "Grapple", + "SpaceJump" + ]} + ] + }, { "id": 45, "link": [2, 3], @@ -954,6 +913,69 @@ "It is also possible (but not required in this strat) to perform a second damage boost off of the Wavers to avoid some spike damage." ] }, + { + "link": [3, 1], + "name": "X-Mode Traversal", + "requires": [ + "canXMode", + "h_XModeSpikeHit" + ], + "note": [ + "Enter X-mode facing left and release forward to allow Samus to walk to the left.", + "Samus' progress can be tracked using the mini-map.", + "When Samus begins to scroll across the screen, this indicates the camera has locked on the left side of the room.", + "At this point (or slightly before), hold forward again to stop Samus' movement.", + "Spin jump and release X-Ray to exit X-mode and jump onto the platform." + ] + }, + { + "id": 3, + "link": [3, 1], + "name": "X-Mode Leave with Spark", + "requires": [ + {"obstaclesCleared": ["A"]}, + "canXMode", + "h_XModeSpikeHit", + "h_XModeSpikeHit", + "canUseIFrames", + "h_shinechargeMaxRunway", + {"shinespark": {"frames": 20}} + ], + "exitCondition": { + "leaveWithSpark": {} + }, + "flashSuitChecked": true, + "note": [ + "Use the spikes in the center of the room to gain a shinecharge with X-Mode.", + "Then arm pump until Samus reaches the middle Yapping Maw.", + "Exit X-mode, gain run speed, and jump toward the door and shinespark out." + ], + "devNote": "Two spike hits are expected per attempt (with any additional leniency hits being multiplied by this amount)." + }, + { + "link": [3, 1], + "name": "X-Mode Leave Shinecharged (Space Jump)", + "requires": [ + {"obstaclesCleared": ["A"]}, + "SpaceJump", + "canXMode", + "h_XModeSpikeHit", + "h_XModeSpikeHit", + "canUseIFrames", + "h_shinechargeMaxRunway", + "canShinechargeMovementTricky", + {"shineChargeFrames": 160} + ], + "exitCondition": { + "leaveShinecharged": {} + }, + "flashSuitChecked": true, + "note": [ + "Use the spikes in the center of the room to gain a shinecharge with X-Mode.", + "Then arm pump until Samus reaches the middle Yapping Maw.", + "Exit X-mode, gain run speed, and use Space Jump to reach the door." + ] + }, { "id": 52, "link": [3, 4], diff --git a/region/maridia/inner-pink/East Cactus Alley Room.json b/region/maridia/inner-pink/East Cactus Alley Room.json index d967fe1f0f..a27134e746 100644 --- a/region/maridia/inner-pink/East Cactus Alley Room.json +++ b/region/maridia/inner-pink/East Cactus Alley Room.json @@ -534,7 +534,7 @@ "Gravity", "canShinechargeMovementComplex", "h_shinechargeMaxRunway", - {"shineChargeFrames": 80} + {"shineChargeFrames": 65} ], "exitCondition": { "leaveShinecharged": {} @@ -1386,6 +1386,18 @@ ], "note": "It is recommended to do this on the left wall to the right of the two lower Cacatacs, so that Samus can avoid the spikes on a fail." }, + { + "link": [5, 4], + "name": "X-Mode Shinespark", + "requires": [ + "Gravity", + "canXMode", + "h_XModeSpikeHit", + "h_XModeSpikeHit", + "h_shinechargeMaxRunway", + {"shinespark": {"frames": 17, "excessFrames": 12}} + ] + }, { "id": 65, "link": [5, 4], From 04185905761265086382fb7ce1973a3e53d1f4be Mon Sep 17 00:00:00 2001 From: Brent Kerby Date: Tue, 8 Jul 2025 08:32:12 -0600 Subject: [PATCH 2/3] fix errors --- .../green/Etecoon Energy Tank Room.json | 37 ++++++++++--------- .../red/Red Brinstar Fireflea Room.json | 10 +++-- 2 files changed, 26 insertions(+), 21 deletions(-) diff --git a/region/brinstar/green/Etecoon Energy Tank Room.json b/region/brinstar/green/Etecoon Energy Tank Room.json index 44bc14d95d..537be44f82 100644 --- a/region/brinstar/green/Etecoon Energy Tank Room.json +++ b/region/brinstar/green/Etecoon Energy Tank Room.json @@ -1567,6 +1567,25 @@ "note": "Kill or get the Beetom stuck below the platform, then lure a Zebbo to the left door. Be careful not to let the Zebbo go off camera or it will despawn.", "devNote": "It is possible to do this with a Beetom, avoiding the tricky jump, but we will ignore that here." }, + { + "link": [4, 4], + "name": "X-Mode, Leave With Spark", + "requires": [ + {"obstaclesCleared": ["A"]}, + "canXMode", + "h_XModeThornHit", + "h_shinechargeMaxRunway", + {"shinespark": {"frames": 62, "excessFrames": 0}} + ], + "exitCondition": { + "leaveWithSpark": {} + }, + "note": [ + "While in X-mode on the thorns, Samus' will be flashing as i-frames periodically refresh;", + "by timing the shinecharge and X-Ray release to happen soon after i-frames refresh,", + "a second thorn hit can be avoided." + ] + }, { "id": 88, "link": [4, 5], @@ -1946,24 +1965,6 @@ "requires": [], "flashSuitChecked": true }, - { - "link": [7, 4], - "name": "X-Mode, Leave With Spark", - "requires": [ - "canXMode", - "h_XModeThornHit", - "h_shinechargeMaxRunway", - {"shinespark": {"frames": 62, "excessFrames": 0}} - ], - "exitCondition": { - "leaveWithSpark": {} - }, - "note": [ - "While in X-mode on the thorns, Samus' will be flashing as i-frames periodically refresh;", - "by timing the shinecharge and X-Ray release to happen soon after i-frames refresh,", - "a second thorn hit can be avoided." - ] - }, { "id": 72, "link": [7, 6], diff --git a/region/brinstar/red/Red Brinstar Fireflea Room.json b/region/brinstar/red/Red Brinstar Fireflea Room.json index 8ad88f6f91..1baaab1462 100644 --- a/region/brinstar/red/Red Brinstar Fireflea Room.json +++ b/region/brinstar/red/Red Brinstar Fireflea Room.json @@ -100,7 +100,8 @@ "from": 1, "to": [ {"id": 1}, - {"id": 2} + {"id": 2}, + {"id": 3} ] }, { @@ -944,13 +945,14 @@ "exitCondition": { "leaveWithSpark": {} }, + "unlocksDoors": [{"types": ["ammo"], "requires": [], "useImplicitRequires": false}], "flashSuitChecked": true, "note": [ "Use the spikes in the center of the room to gain a shinecharge with X-Mode.", "Then arm pump until Samus reaches the middle Yapping Maw.", "Exit X-mode, gain run speed, and jump toward the door and shinespark out." ], - "devNote": "Two spike hits are expected per attempt (with any additional leniency hits being multiplied by this amount)." + "devNote": "Unlocking the door is free since obstacle A being cleared implies it was already unlocked earlier if needed." }, { "link": [3, 1], @@ -974,7 +976,9 @@ "Use the spikes in the center of the room to gain a shinecharge with X-Mode.", "Then arm pump until Samus reaches the middle Yapping Maw.", "Exit X-mode, gain run speed, and use Space Jump to reach the door." - ] + ], + "unlocksDoors": [{"types": ["ammo"], "requires": [], "useImplicitRequires": false}], + "devNote": "Unlocking the door is free since obstacle A being cleared implies it was already unlocked earlier if needed." }, { "id": 52, From 7a6d9b9ba0348a42beb89f2769e063090803cc33 Mon Sep 17 00:00:00 2001 From: Brent Kerby Date: Thu, 10 Jul 2025 09:36:34 -0600 Subject: [PATCH 3/3] feedback updates --- .../green/Etecoon Energy Tank Room.json | 21 +++++++++++++++++++ .../brinstar/kraid/Kraid Eye Door Room.json | 2 -- .../pink/Pink Brinstar Wave Gate Room.json | 2 ++ .../red/Red Brinstar Fireflea Room.json | 1 + tech.json | 1 + 5 files changed, 25 insertions(+), 2 deletions(-) diff --git a/region/brinstar/green/Etecoon Energy Tank Room.json b/region/brinstar/green/Etecoon Energy Tank Room.json index 537be44f82..94bb3f1660 100644 --- a/region/brinstar/green/Etecoon Energy Tank Room.json +++ b/region/brinstar/green/Etecoon Energy Tank Room.json @@ -965,6 +965,27 @@ "Freezing the lower one may be made easier or damageless by scrolling the camera when the Beetom is in the correct position and freezing it with a hero shot from the right." ] }, + { + "link": [3, 3], + "name": "X-Mode, Leave Shinecharged", + "requires": [ + "canXMode", + "h_XModeThornHit", + "h_shinechargeMaxRunway", + {"shineChargeFrames": 60} + ], + "exitCondition": { + "leaveShinecharged": {} + }, + "note": [ + "With some dash speed, bounce into the opening of the spikeway, and enter X-mode.", + "The spike knockback will push Samus back out of the spikeway." + ], + "detailNote": [ + "By holding an angle button, it is possible turn around in X-mode without losing dash speed.", + "Arm pumps can be used to get close to the ledge before shinecharging, to leave with more frames remaining." + ] + }, { "id": 79, "link": [3, 3], diff --git a/region/brinstar/kraid/Kraid Eye Door Room.json b/region/brinstar/kraid/Kraid Eye Door Room.json index 7d16670ae1..8c2f9a277e 100644 --- a/region/brinstar/kraid/Kraid Eye Door Room.json +++ b/region/brinstar/kraid/Kraid Eye Door Room.json @@ -152,7 +152,6 @@ "canXMode", {"thornHits": 2}, "h_shinechargeMaxRunway", - "canBeVeryPatient", {"shineChargeFrames": 110} ], "exitCondition": { @@ -926,7 +925,6 @@ "canXMode", {"thornHits": 2}, "h_shinechargeMaxRunway", - "canBeVeryPatient", {"shineChargeFrames": 155} ], "exitCondition": { diff --git a/region/brinstar/pink/Pink Brinstar Wave Gate Room.json b/region/brinstar/pink/Pink Brinstar Wave Gate Room.json index be3bf9774f..fdc8ada49a 100644 --- a/region/brinstar/pink/Pink Brinstar Wave Gate Room.json +++ b/region/brinstar/pink/Pink Brinstar Wave Gate Room.json @@ -196,6 +196,8 @@ "link": [1, 1], "name": "X-Mode, Leave Shinecharged", "requires": [ + {"obstaclesCleared": ["A"]}, + "h_destroyBombWalls", "canXMode", "h_XModeSpikeHit", "h_XModeSpikeHit", diff --git a/region/brinstar/red/Red Brinstar Fireflea Room.json b/region/brinstar/red/Red Brinstar Fireflea Room.json index 1baaab1462..c5dc327880 100644 --- a/region/brinstar/red/Red Brinstar Fireflea Room.json +++ b/region/brinstar/red/Red Brinstar Fireflea Room.json @@ -458,6 +458,7 @@ "canXMode", {"spikeHits": 2}, "h_shinechargeMaxRunway", + "canShinechargeMovementTricky", {"shinespark": {"frames": 105, "excessFrames": 6}} ], "flashSuitChecked": true, diff --git a/tech.json b/tech.json index 19437c65aa..72e67e9307 100644 --- a/tech.json +++ b/tech.json @@ -2389,6 +2389,7 @@ "otherRequires": [ "XRayScope", "Morph", + "canStationarySpinJump", {"noFlashSuit": {}} ], "note": [