diff --git a/region/brinstar/green/Etecoon Energy Tank Room.json b/region/brinstar/green/Etecoon Energy Tank Room.json index 879e4b82c9..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], @@ -1567,6 +1588,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], diff --git a/region/brinstar/kraid/Kraid Eye Door Room.json b/region/brinstar/kraid/Kraid Eye Door Room.json index 799f462c89..8c2f9a277e 100644 --- a/region/brinstar/kraid/Kraid Eye Door Room.json +++ b/region/brinstar/kraid/Kraid Eye Door Room.json @@ -145,6 +145,25 @@ }, "flashSuitChecked": true }, + { + "link": [1, 1], + "name": "X-Mode, Leave Shinecharged", + "requires": [ + "canXMode", + {"thornHits": 2}, + "h_shinechargeMaxRunway", + {"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 +918,25 @@ "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", + {"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 Wave Gate Room.json b/region/brinstar/pink/Pink Brinstar Wave Gate Room.json index e8065f86d8..fdc8ada49a 100644 --- a/region/brinstar/pink/Pink Brinstar Wave Gate Room.json +++ b/region/brinstar/pink/Pink Brinstar Wave Gate Room.json @@ -192,6 +192,28 @@ }, "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": [ + {"obstaclesCleared": ["A"]}, + "h_destroyBombWalls", + "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/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..c5dc327880 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} ] }, { @@ -164,32 +165,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 +369,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 +452,23 @@ { "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}} + "canShinechargeMovementTricky", + {"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 +679,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 +810,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 +915,72 @@ "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": {} + }, + "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": "Unlocking the door is free since obstacle A being cleared implies it was already unlocked earlier if needed." + }, + { + "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." + ], + "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, "link": [3, 4], diff --git a/region/brinstar/red/Skree Boost Room.json b/region/brinstar/red/Skree Boost Room.json index 501d3458c5..9c36e136e6 100644 --- a/region/brinstar/red/Skree Boost Room.json +++ b/region/brinstar/red/Skree Boost 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/maridia/inner-pink/East Cactus Alley.json b/region/maridia/inner-pink/East Cactus Alley.json index 28d4aa47cc..3740df6460 100644 --- a/region/maridia/inner-pink/East Cactus Alley.json +++ b/region/maridia/inner-pink/East Cactus Alley.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], 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": [