Room ID: 202
Exit condition: { "leaveWithRunway": { "length": 13, "openEnd": 0 } } |
Requires: { "doorUnlockedAtNode": 2 } Exit condition: { "leaveWithRunway": { "length": 14, "openEnd": 0 } } Unlocks doors: {"nodeId":2,"types":["ammo"],"requires":[]} |
Requires: "h_navigateUnderwater" { "resetRoom": { "nodes": [ 1, 2 ] } } { "partialRefill": { "type": "Energy", "limit": 100 } } { "partialRefill": { "type": "PowerBomb", "limit": 3 } } Dev note: Farm cycle: 6seconds. |
Requires: "h_CrystalFlash" |
From: 1
Left Door
To: 1
Left Door
With a runway of 5 tiles (open end) in the other room, the ideal timing for the stutter is to release forward for 5 frames, and repress forward on the last possible frame before the transition. Other timings can work, but will gain the shinecharge further from the door, leaving fewer shinecharge frames remaining. After gaining the shinecharge, continue holding forward in order to make Samus stand. Then turnaround spin jump back toward the door, and continue spin jumping to reach the transition with a shinecharge. Entrance condition: { "comeInStutterShinecharging": { "minTiles": 5 } } Requires: "canPreciseStutterWaterShineCharge" { "or": [ "Wave", "Spazer", "Plasma", { "ammo": { "type": "Missile", "count": 2 } }, { "ammo": { "type": "Super", "count": 1 } } ] } "canShinechargeMovementTricky" "canInsaneJump" { "shineChargeFrames": 130 } { "or": [ "canBeVeryPatient", { "shineChargeFrames": 15 } ] } Exit condition: { "leaveShinecharged": {} } Unlocks doors: {"types":["super"],"requires":[]} {"types":["missiles","powerbomb"],"requires":["never"]} |
From: 1
Left Door
To: 1
Left Door
With only a runway of 4 tiles (open end) in the other room, the ideal timing for the stutter is to release forward for 4 frames, and repress forward on the last possible frame before the transition. It also works well to release forward for 3 frames and repress on the last possible frame. Other timings can also work, but may gain the shinecharge further from the door, leaving fewer shinecharge frames remaining. After gaining the shinecharge, continue holding forward in order to make Samus stand. Then turnaround spin jump back toward the door, and continue spin jumping to reach the transition with a shinecharge. Entrance condition: { "comeInStutterShinecharging": { "minTiles": 4 } } Requires: "canPreciseStutterWaterShineCharge" { "or": [ "Wave", "Spazer", "Plasma", { "ammo": { "type": "Missile", "count": 2 } }, { "ammo": { "type": "Super", "count": 1 } } ] } "canShinechargeMovementTricky" "canInsaneJump" { "shineChargeFrames": 140 } { "or": [ "canBeVeryPatient", { "shineChargeFrames": 10 } ] } Exit condition: { "leaveShinecharged": {} } Unlocks doors: {"types":["super"],"requires":[]} {"types":["missiles","powerbomb"],"requires":["never"]} |
From: 1
Left Door
To: 1
Left Door
With only a runway of 3 tiles (open end) in the other room, the ideal timing for the stutter is to release forward for 3 or 4 frames, and repress forward on the last possible frame before the transition. Other timings can work, but will gain the shinecharge further from the door, leaving fewer shinecharge frames remaining. After gaining the shinecharge, continue holding forward in order to make Samus stand. Then turnaround spin jump back toward the door, and continue spin jumping to reach the transition with a shinecharge. Alternatively, with greater difficulty but saving some shinecharge frames, after performing the turnaround spin jump, briefly moonwalk back, then retain momentum by boomeranging forward (switching from pressing backward to pressing forward on the next frame), and arm pump to reach the door quickly. Entrance condition: { "comeInStutterShinecharging": { "minTiles": 3 } } Requires: "canPreciseStutterWaterShineCharge" { "or": [ "Wave", "Spazer", "Plasma", { "ammo": { "type": "Missile", "count": 2 } }, { "ammo": { "type": "Super", "count": 1 } } ] } "canShinechargeMovementTricky" "canInsaneJump" { "shineChargeFrames": 145 } { "or": [ "canBeVeryPatient", { "shineChargeFrames": 10 } ] } Exit condition: { "leaveShinecharged": {} } Unlocks doors: {"types":["super"],"requires":[]} {"types":["missiles","powerbomb"],"requires":["never"]} Dev note: The same shinecharge frames could be achieved with a closed end runway (effective length of 2.4375), with a 3-frame stutter, but there doesn't appear to be any application. |
From: 1
Left Door
To: 1
Left Door
With only a runway of 2 tiles (open end) in the other room, the ideal timing for the stutter is to release forward for 3 frames, and repress forward on the last possible frame before the transition. Other timings can work, but will gain the shinecharge further from the door, leaving fewer shinecharge frames remaining. After gaining the shinecharge, continue holding forward in order to make Samus stand. Then turnaround spin jump back toward the door, and continue spin jumping to reach the transition with a shinecharge. Alternatively, with greater difficulty but saving some shinecharge frames, after performing the turnaround spin jump, briefly moonwalk back, then retain momentum by boomeranging forward (switching from pressing backward to pressing forward on the next frame), and arm pump to reach the door quickly. Entrance condition: { "comeInStutterShinecharging": { "minTiles": 2 } } Requires: "canPreciseStutterWaterShineCharge" { "or": [ "Wave", "Spazer", "Plasma", { "ammo": { "type": "Missile", "count": 2 } }, { "ammo": { "type": "Super", "count": 1 } } ] } "canShinechargeMovementTricky" "canInsaneJump" { "shineChargeFrames": 150 } { "or": [ "canBeVeryPatient", { "shineChargeFrames": 15 } ] } Exit condition: { "leaveShinecharged": {} } Unlocks doors: {"types":["super"],"requires":[]} {"types":["missiles","powerbomb"],"requires":["never"]} Dev note: FIXME: The canBeVeryPatient requirement is for difficulty placement of the boomerang method; but the boomerang (or maybe specifically the moonwalk boomerang) should possibly be its own tech, and the same with rapid arm pumping. |
From: 1
Left Door
To: 1
Left Door
With only 1 tile of runway in the other room, Samus should ideally start on the last pixel of runway with X subpixels of $3FFF or less. Run toward the door, releasing forward for exactly 1 frame and pressing it again on the last possible frame before the transition. Starting with X subpixels of $7FFF can also work (e.g., by simply backing against the door ledge, then jumping and turning around mid-air); in this case, Samus must advance 1 or 2 pixels with an arm pump before the transition (e.g., firing a shot or pressing and/or releasing an angle button), and the shinecharge will be gained slightly further away from the door. After gaining the shinecharge, continue holding forward in order to make Samus stand. Then turnaround spin jump back toward the door, and continue spin jumping to reach the transition with a shinecharge. Alternatively, with greater difficulty but saving some shinecharge frames, after performing the turnaround spin jump, briefly moonwalk back, then retain momentum by boomeranging forward (switching from pressing backward to pressing forward on the next frame), and arm pump to reach the door quickly. Ideal subpixels ($3FFF) can be achieved using one of several methods: 1) press forward against the door ledge (or a wall aligned with it); jump, and while mid-air, tap forward for exactly 1 frame to land with subpixels $BFFF, moonwalk back for exactly 1 frame to end with subpixels $3FFF. 2) press forward against the door ledge (from a platform below, assuming one exists) turn around (while on the ground), and moonwalk back two pixels, then jump and mid-air turnaround onto the ledge; if Samus jumped from the correct pixel but does not land on the ledge, then it was needed to moonwalk back 1 more frame; in this case it is possible to retry by doing a mid-air turnaround back onto the platform, and moonwalking back for 1 frame. 3) if X-Ray is available, press against the door ledge (from a platform below, assuming one exists) turn around (while on the ground), then jump and mid-air turnaround toward the door, and use X-Ray to turnaround in place away from the door; repeat this sequence 3 more times: jump, mid-air turnaround, X-Ray turnaround; then do one more jump and mid-air turnaround, high enough to land on the door ledge, and Samus should be in the correct position with subpixels $3FFF. Entrance condition: { "comeInStutterShinecharging": { "minTiles": 1 } } Requires: { "doorUnlockedAtNode": 2 } "canPreciseStutterWaterShineCharge" { "or": [ "Wave", "Spazer", "Plasma", { "ammo": { "type": "Missile", "count": 2 } }, { "ammo": { "type": "Super", "count": 1 } } ] } "canInsaneJump" "canBeVeryPatient" "canShinechargeMovementTricky" { "shineChargeFrames": 160 } Exit condition: { "leaveShinecharged": {} } Unlocks doors: {"nodeId":2,"types":["missiles","super"],"requires":[]} {"nodeId":2,"types":["powerbomb"],"requires":["never"]} {"types":["super"],"requires":[]} {"types":["missiles","powerbomb"],"requires":["never"]} |
Exit condition: { "leaveWithGModeSetup": {} } |
Requires: { "enemyDamage": { "enemy": "Sciser", "type": "contact", "hits": 1 } } |
|
With the larger hitbox of Plasma, the door can be opened fast enough to safely run under the crab. Otherwise, a small spin-jump may be required to reduce Samus' hitbox through the transition. Entrance condition: { "comeInShinecharged": {} } Requires: "Gravity" { "or": [ { "and": [ "Plasma", { "shineChargeFrames": 55 } ] }, { "and": [ "canTrickyJump", { "shineChargeFrames": 60 } ] } ] } Exit condition: { "leaveShinecharged": {} } Unlocks doors: {"types":["super"],"requires":[]} {"types":["missiles","powerbomb"],"requires":["never"]} Dev note: FIXME: coming in with some run speed might be another way to avoid the crab? Spin jumping through the transition technically does not conform to the exit condition, but it is possible to land in a single frame in the next room by breaking spin, and we include several frames of lenience which is hopefully enough account for any issue in the next room. |
From: 1
Left Door
To: 2
Right Door
Entrance condition: { "comeInShinecharged": {} } Requires: { "or": [ { "and": [ "Gravity", { "shineChargeFrames": 5 } ] }, { "shineChargeFrames": 10 } ] } { "shinespark": { "frames": 23 } } Exit condition: { "leaveWithSpark": { "position": "bottom" } } Unlocks doors: {"types":["super"],"requires":[]} {"types":["missiles","powerbomb"],"requires":["never"]} |
From: 1
Left Door
To: 2
Right Door
Entrance condition: { "comeInShinecharged": {} } Requires: { "or": [ { "and": [ "Gravity", { "shineChargeFrames": 10 } ] }, { "shineChargeFrames": 20 } ] } { "shinespark": { "frames": 21 } } Exit condition: { "leaveWithSpark": { "position": "top" } } Unlocks doors: {"types":["super"],"requires":[]} {"types":["missiles","powerbomb"],"requires":["never"]} |
Entrance condition: { "comeInWithGrappleTeleport": { "blockPositions": [ [ 12, 12 ], [ 12, 13 ] ] } } Bypasses door shell: true |
From: 1
Left Door
To: 2
Right Door
Entrance condition: { "comeInWithGrappleTeleport": { "blockPositions": [ [ 12, 12 ] ] } } Exit condition: { "leaveWithGrappleTeleport": { "blockPositions": [ [ 12, 12 ] ] } } Bypasses door shell: true |
From: 1
Left Door
To: 2
Right Door
Entrance condition: { "comeInWithGrappleTeleport": { "blockPositions": [ [ 12, 13 ] ] } } Exit condition: { "leaveWithGrappleTeleport": { "blockPositions": [ [ 12, 13 ] ] } } Bypasses door shell: true |
From: 1
Left Door
To: 2
Right Door
Entrance condition: { "comeInWithStoredFallSpeed": { "fallSpeedInTiles": 1 } } Requires: { "or": [ "Gravity", "Wave", "Spazer", "Plasma", { "ammo": { "type": "Missile", "count": 2 } }, { "ammo": { "type": "Super", "count": 1 } } ] } Exit condition: { "leaveWithStoredFallSpeed": { "fallSpeedInTiles": 1 } } Unlocks doors: {"types":["missiles","super"],"requires":[]} {"types":["powerbomb"],"requires":["never"]} |
From: 1
Left Door
To: 2
Right Door
Entrance condition: { "comeInWithStoredFallSpeed": { "fallSpeedInTiles": 2 } } Requires: { "or": [ "Gravity", "Wave", "Spazer", "Plasma", { "ammo": { "type": "Missile", "count": 2 } }, { "ammo": { "type": "Super", "count": 1 } } ] } Exit condition: { "leaveWithStoredFallSpeed": { "fallSpeedInTiles": 2 } } Unlocks doors: {"types":["missiles","super"],"requires":[]} {"types":["powerbomb"],"requires":["never"]} |
From: 1
Left Door
To: 4
Bottom Right Shinecharged
Entrance condition: { "comeInStutterShinecharging": { "minTiles": 2.4375 } } Requires: "canPreciseStutterWaterShineCharge" { "shineChargeFrames": 0 } { "or": [ "Wave", "Spazer", "Plasma", { "ammo": { "type": "Missile", "count": 2 } }, { "ammo": { "type": "Super", "count": 1 } } ] } Dev note: FIXME: comeInShinecharging strats (with Gravity or a regular water shinecharge) can also be possible, but dealing with the crab seems difficult and dependent on run speed. |
From: 1
Left Door
To: 4
Bottom Right Shinecharged
If only 2 tiles of runway are available and it is not possible to unlock the opposite door, then this requires a double frame-perfect stutter: run toward the door, release forward for exactly 3 frames, pressing forward again on the last possible frame before the transition. Entrance condition: { "comeInStutterShinecharging": { "minTiles": 2 } } Requires: "canPreciseStutterWaterShineCharge" { "or": [ { "doorUnlockedAtNode": 2 }, "canInsaneJump" ] } { "shineChargeFrames": 0 } { "or": [ "Wave", "Spazer", "Plasma", { "ammo": { "type": "Missile", "count": 2 } }, { "ammo": { "type": "Super", "count": 1 } } ] } Unlocks doors: {"nodeId":2,"types":["super","missiles"],"requires":[]} {"nodeId":2,"types":["powerbomb"],"requires":["never"]} Dev note: FIXME: canInsaneJump is for difficulty placement; replace with a more appropriate tech since no jump is involved. |
From: 1
Left Door
To: 4
Bottom Right Shinecharged
With only 1 tile of runway in the other room, this requires subpixel-precise positioning and a double frame-perfect stutter: At the start of the run, Samus must be on the last pixel of runway with X subpixels of $3FFF or less. Run toward the door, releasing forward for exactly 1 frame and pressing it again on the last possible frame before the transition. After the transition, shoot open the opposite door while running, to extend the runway by a tile. Correct subpixels can be achieved using one of several methods: 1) press against the door ledge (or a wall aligned with it); jump, and while mid-air, tap forward for exactly 1 frame to land with subpixels $BFFF, moonwalk back for exactly 1 frame to end with subpixels $3FFF. 2) press against the door ledge (from a platform below, assuming one exists) turn around (while on the ground), and moonwalk back two pixels, then jump and mid-air turnaround onto the ledge; if Samus jumped from the correct pixel but does not land on the ledge, then it was needed to moonwalk back 1 more frame; in this case it is possible to retry by doing a mid-air turnaround back onto the platform, and moonwalking back for 1 frame. 3) if X-Ray is available, press against the door ledge (from a platform below, assuming one exists) turn around (while on the ground), then jump and mid-air turnaround toward the door, and use X-Ray to turnaround in place away from the door; repeat this sequence 3 more times: jump, mid-air turnaround, X-Ray turnaround; then do one more jump and mid-air turnaround, high enough to land on the door ledge, and Samus should be in the correct position with subpixels $3FFF. Entrance condition: { "comeInStutterShinecharging": { "minTiles": 1 } } Requires: "canPreciseStutterWaterShineCharge" "canInsaneJump" "canBeVeryPatient" { "doorUnlockedAtNode": 2 } { "shineChargeFrames": 0 } { "or": [ "Wave", "Spazer", "Plasma", { "ammo": { "type": "Missile", "count": 2 } }, { "ammo": { "type": "Super", "count": 1 } } ] } Unlocks doors: {"nodeId":2,"types":["super","missiles"],"requires":[]} {"nodeId":2,"types":["powerbomb"],"requires":["never"]} Dev note: The `canBeVeryPatient` is for difficulty placement; this could be improved with a more specific tech later, since it does not actually take a long time to execute. |
|
From: 2
Right Door
To: 1
Left Door
Entrance condition: { "comeInShinecharged": {} } Requires: { "or": [ { "and": [ "Gravity", { "shineChargeFrames": 5 } ] }, { "shineChargeFrames": 10 } ] } { "shinespark": { "frames": 23 } } Exit condition: { "leaveWithSpark": { "position": "bottom" } } Unlocks doors: {"types":["super"],"requires":[]} {"types":["missiles","powerbomb"],"requires":["never"]} |
From: 2
Right Door
To: 1
Left Door
Entrance condition: { "comeInShinecharged": {} } Requires: { "or": [ { "and": [ "Gravity", "canShinechargeMovementTricky", { "shineChargeFrames": 10 }, { "shinespark": { "frames": 21 } } ] }, { "and": [ "Gravity", "canShinechargeMovementComplex", { "shineChargeFrames": 30 }, { "shinespark": { "frames": 17 } } ] }, { "and": [ "canShinechargeMovementTricky", "canInsaneJump", { "shineChargeFrames": 20 }, { "shinespark": { "frames": 21 } } ] }, { "and": [ { "shineChargeFrames": 40 }, { "shinespark": { "frames": 19 } } ] } ] } Exit condition: { "leaveWithSpark": { "position": "top" } } Unlocks doors: {"types":["super"],"requires":[]} {"types":["missiles","powerbomb"],"requires":["never"]} |
From: 2
Right Door
To: 1
Left Door
Entrance condition: { "comeInWithStoredFallSpeed": { "fallSpeedInTiles": 1 } } Exit condition: { "leaveWithStoredFallSpeed": { "fallSpeedInTiles": 1 } } Unlocks doors: {"types":["missiles","super"],"requires":[]} {"types":["powerbomb"],"requires":["never"]} |
From: 2
Right Door
To: 1
Left Door
Entrance condition: { "comeInWithStoredFallSpeed": { "fallSpeedInTiles": 2 } } Exit condition: { "leaveWithStoredFallSpeed": { "fallSpeedInTiles": 2 } } Unlocks doors: {"types":["missiles","super"],"requires":[]} {"types":["powerbomb"],"requires":["never"]} |
Entrance condition: { "comeInWithGrappleTeleport": { "blockPositions": [ [ 3, 12 ], [ 3, 13 ] ] } } Bypasses door shell: true |
From: 2
Right Door
To: 1
Left Door
Entrance condition: { "comeInWithGrappleTeleport": { "blockPositions": [ [ 3, 12 ] ] } } Exit condition: { "leaveWithGrappleTeleport": { "blockPositions": [ [ 3, 12 ] ] } } Bypasses door shell: true |
From: 2
Right Door
To: 1
Left Door
Entrance condition: { "comeInWithGrappleTeleport": { "blockPositions": [ [ 3, 13 ] ] } } Exit condition: { "leaveWithGrappleTeleport": { "blockPositions": [ [ 3, 13 ] ] } } Bypasses door shell: true |
Exit condition: { "leaveWithRunway": { "length": 13, "openEnd": 0 } } |
Requires: { "doorUnlockedAtNode": 1 } Exit condition: { "leaveWithRunway": { "length": 14, "openEnd": 0 } } Unlocks doors: {"nodeId":1,"types":["ammo"],"requires":[]} |
From: 2
Right Door
To: 2
Right Door
With a runway of 5 tiles (open end) in the other room, the ideal timing for the stutter is to release forward for 5 frames, and repress forward on the last possible frame before the transition. Other timings can work, but will gain the shinecharge further from the door, leaving fewer shinecharge frames remaining. After gaining the shinecharge, continue holding forward in order to make Samus stand. Then turnaround spin jump back toward the door, and continue spin jumping to reach the transition with a shinecharge. Entrance condition: { "comeInStutterShinecharging": { "minTiles": 5 } } Requires: "canPreciseStutterWaterShineCharge" "canShinechargeMovementTricky" "canInsaneJump" { "shineChargeFrames": 130 } { "or": [ "canBeVeryPatient", { "shineChargeFrames": 15 } ] } Exit condition: { "leaveShinecharged": {} } Unlocks doors: {"types":["super"],"requires":[]} {"types":["missiles","powerbomb"],"requires":["never"]} |
From: 2
Right Door
To: 2
Right Door
With only a runway of 4 tiles (open end) in the other room, the ideal timing for the stutter is to release forward for 4 frames, and repress forward on the last possible frame before the transition. It also works well to release forward for 3 frames and repress on the last possible frame. Other timings can also work, but may gain the shinecharge further from the door, leaving fewer shinecharge frames remaining. After gaining the shinecharge, continue holding forward in order to make Samus stand. Then turnaround spin jump back toward the door, and continue spin jumping to reach the transition with a shinecharge. Entrance condition: { "comeInStutterShinecharging": { "minTiles": 4 } } Requires: "canPreciseStutterWaterShineCharge" "canShinechargeMovementTricky" "canInsaneJump" { "shineChargeFrames": 140 } { "or": [ "canBeVeryPatient", { "shineChargeFrames": 10 } ] } Exit condition: { "leaveShinecharged": {} } Unlocks doors: {"types":["super"],"requires":[]} {"types":["missiles","powerbomb"],"requires":["never"]} |
From: 2
Right Door
To: 2
Right Door
With only a runway of 3 tiles (open end) in the other room, the ideal timing for the stutter is to release forward for 3 or 4 frames, and repress forward on the last possible frame before the transition. Other timings can work, but will gain the shinecharge further from the door, leaving fewer shinecharge frames remaining. After gaining the shinecharge, continue holding forward in order to make Samus stand. Then turnaround spin jump back toward the door, and continue spin jumping to reach the transition with a shinecharge. Alternatively, with greater difficulty but saving some shinecharge frames, after performing the turnaround spin jump, briefly moonwalk back, then retain momentum by boomeranging forward (switching from pressing backward to pressing forward on the next frame), and arm pump to reach the door quickly. Entrance condition: { "comeInStutterShinecharging": { "minTiles": 3 } } Requires: "canPreciseStutterWaterShineCharge" "canShinechargeMovementTricky" "canInsaneJump" { "shineChargeFrames": 145 } { "or": [ "canBeVeryPatient", { "shineChargeFrames": 10 } ] } Exit condition: { "leaveShinecharged": {} } Unlocks doors: {"types":["super"],"requires":[]} {"types":["missiles","powerbomb"],"requires":["never"]} Dev note: The same shinecharge frames could be achieved with a closed end runway (effective length of 2.4375), with a 3-frame stutter, but there doesn't appear to be any application. |
From: 2
Right Door
To: 2
Right Door
With only a runway of 2 tiles (open end) in the other room, the ideal timing for the stutter is to release forward for 3 frames, and repress forward on the last possible frame before the transition. Other timings can work, but will gain the shinecharge further from the door, leaving fewer shinecharge frames remaining. After gaining the shinecharge, continue holding forward in order to make Samus stand. Then turnaround spin jump back toward the door, and continue spin jumping to reach the transition with a shinecharge. Alternatively, with greater difficulty but saving some shinecharge frames, after performing the turnaround spin jump, briefly moonwalk back, then retain momentum by boomeranging forward (switching from pressing backward to pressing forward on the next frame), and arm pump to reach the door quickly. Entrance condition: { "comeInStutterShinecharging": { "minTiles": 2 } } Requires: "canPreciseStutterWaterShineCharge" "canShinechargeMovementTricky" "canInsaneJump" { "shineChargeFrames": 150 } { "or": [ "canBeVeryPatient", { "shineChargeFrames": 15 } ] } Exit condition: { "leaveShinecharged": {} } Unlocks doors: {"types":["super"],"requires":[]} {"types":["missiles","powerbomb"],"requires":["never"]} Dev note: FIXME: The canBeVeryPatient requirement is for difficulty placement of the boomerang method; but the boomerang (or maybe specifically the moonwalk boomerang) should possibly be its own tech, and the same with rapid arm pumping. |
From: 2
Right Door
To: 2
Right Door
With only 1 tile of runway in the other room, Samus should ideally start on the last pixel of runway with X subpixels of $3FFF or less. Run toward the door, releasing forward for exactly 1 frame and pressing it again on the last possible frame before the transition. Starting with X subpixels of $7FFF can also work (e.g., by simply backing against the door ledge, then jumping and turning around mid-air); in this case, Samus must advance 1 or 2 pixels with an arm pump before the transition (e.g., firing a shot or pressing and/or releasing an angle button), and the shinecharge will be gained slightly further away from the door. After gaining the shinecharge, continue holding forward in order to make Samus stand. Then turnaround spin jump back toward the door, and continue spin jumping to reach the transition with a shinecharge. Alternatively, with greater difficulty but saving some shinecharge frames, after performing the turnaround spin jump, briefly moonwalk back, then retain momentum by boomeranging forward (switching from pressing backward to pressing forward on the next frame), and arm pump to reach the door quickly. Ideal subpixels ($3FFF) can be achieved using one of several methods: 1) press forward against the door ledge (or a wall aligned with it); jump, and while mid-air, tap forward for exactly 1 frame to land with subpixels $BFFF, moonwalk back for exactly 1 frame to end with subpixels $3FFF. 2) press forward against the door ledge (from a platform below, assuming one exists) turn around (while on the ground), and moonwalk back two pixels, then jump and mid-air turnaround onto the ledge; if Samus jumped from the correct pixel but does not land on the ledge, then it was needed to moonwalk back 1 more frame; in this case it is possible to retry by doing a mid-air turnaround back onto the platform, and moonwalking back for 1 frame. 3) if X-Ray is available, press against the door ledge (from a platform below, assuming one exists) turn around (while on the ground), then jump and mid-air turnaround toward the door, and use X-Ray to turnaround in place away from the door; repeat this sequence 3 more times: jump, mid-air turnaround, X-Ray turnaround; then do one more jump and mid-air turnaround, high enough to land on the door ledge, and Samus should be in the correct position with subpixels $3FFF. Entrance condition: { "comeInStutterShinecharging": { "minTiles": 1 } } Requires: { "doorUnlockedAtNode": 1 } "canPreciseStutterWaterShineCharge" "canInsaneJump" "canBeVeryPatient" "canShinechargeMovementTricky" { "shineChargeFrames": 160 } Exit condition: { "leaveShinecharged": {} } Unlocks doors: {"nodeId":1,"types":["missiles","super"],"requires":[]} {"nodeId":1,"types":["powerbomb"],"requires":["never"]} {"types":["super"],"requires":[]} {"types":["missiles","powerbomb"],"requires":["never"]} |
From: 2
Right Door
To: 2
Right Door
Exit condition: { "leaveWithGModeSetup": {} } |
Requires: { "enemyDamage": { "enemy": "Sciser", "type": "contact", "hits": 1 } } |
From: 2
Right Door
To: 3
Bottom Left Shinecharged
Entrance condition: { "comeInShinecharging": { "length": 12, "openEnd": 0 } } Requires: "Gravity" { "shineChargeFrames": 0 } Dev note: FIXME: A variant with 1 more runway tile could be added if the door at node 1 is unlocked. |
Entrance condition: { "comeInShinecharging": { "length": 4, "openEnd": 0 } } Requires: "canWaterShineCharge" { "shineChargeFrames": 0 } |
From: 2
Right Door
To: 3
Bottom Left Shinecharged
Entrance condition: { "comeInStutterShinecharging": { "minTiles": 2.4375 } } Requires: "canPreciseStutterWaterShineCharge" { "shineChargeFrames": 0 } |
From: 2
Right Door
To: 3
Bottom Left Shinecharged
If only 2 tiles of runway are available and it is not possible to unlock the opposite door, then this requires a double frame-perfect stutter: run toward the door, release forward for exactly 3 frames, pressing forward again on the last possible frame before the transition. Entrance condition: { "comeInStutterShinecharging": { "minTiles": 2 } } Requires: "canPreciseStutterWaterShineCharge" { "or": [ { "doorUnlockedAtNode": 1 }, "canInsaneJump" ] } { "shineChargeFrames": 0 } Unlocks doors: {"nodeId":1,"types":["super","missiles"],"requires":[]} {"nodeId":1,"types":["powerbomb"],"requires":["never"]} Dev note: FIXME: canInsaneJump is for difficulty placement; replace with a more appropriate tech since no jump is involved. |
From: 2
Right Door
To: 3
Bottom Left Shinecharged
With only 1 tile of runway in the other room, this requires subpixel-precise positioning and a double frame-perfect stutter: At the start of the run, Samus must be on the last pixel of runway with X subpixels of $C000 or greater. Run toward the door, releasing forward for exactly 1 frame and pressing it again on the last possible frame before the transition. After the transition, shoot open the opposite door while running, to extend the runway by a tile. Correct subpixels can be achieved using one of several methods: 1) press against the door ledge (or a wall aligned with it); jump, and while mid-air, tap forward for exactly 1 frame to land with subpixels $4000, moonwalk back for exactly 1 frame to end with subpixels $C000. 2) press against the door ledge (from a platform below, assuming one exists) turn around (while on the ground), and moonwalk back two pixels, then jump and mid-air turnaround onto the ledge; if Samus jumped from the correct pixel but does not land on the ledge, then it was needed to moonwalk back 1 more frame; in this case it is possible to retry by doing a mid-air turnaround back onto the platform, and moonwalking back for 1 frame. 3) if X-Ray is available, press against the door ledge (from a platform below, assuming one exists) turn around (while on the ground), then jump and mid-air turnaround toward the door, and use X-Ray to turnaround in place away from the door; repeat this sequence 3 more times: jump, mid-air turnaround, X-Ray turnaround; then do one more jump and mid-air turnaround, high enough to land on the door ledge, and Samus should be in the correct position with subpixels $C000. Entrance condition: { "comeInStutterShinecharging": { "minTiles": 1 } } Requires: "canPreciseStutterWaterShineCharge" "canInsaneJump" "canBeVeryPatient" { "doorUnlockedAtNode": 1 } { "shineChargeFrames": 0 } Unlocks doors: {"nodeId":1,"types":["super","missiles"],"requires":[]} {"nodeId":1,"types":["powerbomb"],"requires":["never"]} Dev note: The `canBeVeryPatient` is for difficulty placement; this could be improved with a more specific tech later, since it does not actually take a long time to execute. |
Requires: { "shineChargeFrames": 10 } Exit condition: { "leaveShinecharged": {} } Unlocks doors: {"types":["missiles","super"],"requires":[]} {"types":["powerbomb"],"requires":["never"]} Dev note: FIXME: This is a prime example for 3-room shinecharges, once the schema can model it. |
From: 3
Bottom Left Shinecharged
To: 1
Left Door
To avoid being hit by the crab, jump through the door with blue speed rather than gaining a shinecharge. Requires: { "shineChargeFrames": 0 } "h_getBlueSpeedMaxRunway" "canTemporaryBlue" Exit condition: { "leaveWithTemporaryBlue": {} } Unlocks doors: {"types":["ammo"],"requires":[]} Dev note: The `h_getBlueSpeedMaxRunway` requirement is to satisfy the tests, since we don't have a way to represent that the temporary blue originates from the startsWithShineCharge. |
From: 3
Bottom Left Shinecharged
To: 2
Right Door
Requires: "canShinechargeMovementComplex" { "shineChargeFrames": 120 } { "shinespark": { "frames": 9 } } Exit condition: { "leaveWithSpark": {} } Unlocks doors: {"types":["super"],"requires":[]} {"types":["missiles","powerbomb"],"requires":["never"]} |
From: 3
Bottom Left Shinecharged
To: 2
Right Door
Use X-Ray to cancel the shinecharge, in order to turnaround quickly enough to jump over the crab. Requires: { "shineChargeFrames": 0 } "h_getBlueSpeedMaxRunway" "canXRayCancelShinecharge" "canXRayTurnaround" "canChainTemporaryBlue" Exit condition: { "leaveWithTemporaryBlue": {} } Unlocks doors: {"types":["ammo"],"requires":[]} Dev note: The `h_getBlueSpeedMaxRunway` requirement is to satisfy the tests, since we don't have a way to represent that the temporary blue originates from the startsWithShineCharge. |
From: 4
Bottom Right Shinecharged
To: 1
Left Door
Requires: "canShinechargeMovementComplex" { "shineChargeFrames": 120 } { "shinespark": { "frames": 9 } } Exit condition: { "leaveWithSpark": {} } Unlocks doors: {"types":["super"],"requires":[]} {"types":["missiles","powerbomb"],"requires":["never"]} |
From: 4
Bottom Right Shinecharged
To: 1
Left Door
Requires: { "shineChargeFrames": 0 } "h_getBlueSpeedMaxRunway" "canXRayTurnaround" "canChainTemporaryBlue" Exit condition: { "leaveWithTemporaryBlue": {} } Unlocks doors: {"types":["ammo"],"requires":[]} Dev note: The `h_getBlueSpeedMaxRunway` requirement is to satisfy the tests, since we don't have a way to represent that the temporary blue originates from the startsWithShineCharge. |
From: 4
Bottom Right Shinecharged
To: 2
Right Door
Requires: { "shineChargeFrames": 10 } Exit condition: { "leaveShinecharged": {} } Unlocks doors: {"types":["missiles","super"],"requires":[]} {"types":["powerbomb"],"requires":["never"]} Dev note: FIXME: This is a prime example for 3-room shinecharges, once the schema can model it. |
From: 4
Bottom Right Shinecharged
To: 2
Right Door
Requires: { "shineChargeFrames": 0 } "h_getBlueSpeedMaxRunway" "canTemporaryBlue" Exit condition: { "leaveWithTemporaryBlue": {} } Unlocks doors: {"types":["ammo"],"requires":[]} Dev note: The `h_getBlueSpeedMaxRunway` requirement is to satisfy the tests, since we don't have a way to represent that the temporary blue originates from the startsWithShineCharge. |
{ "$schema": "../../../schema/m3-room.schema.json", "id": 202, "name": "West Sand Hall Tunnel", "area": "Maridia", "subarea": "Inner", "subsubarea": "Green", "roomAddress": "0x7D252", "roomEnvironments": [ { "heated": false } ], "mapTileMask": [ [ 1 ] ], "nodes": [ { "id": 1, "name": "Left Door", "nodeType": "door", "nodeSubType": "blue", "nodeAddress": "0x001a528", "doorOrientation": "left", "doorEnvironments": [ { "physics": "water" } ], "mapTileMask": [ [ 2 ] ] }, { "id": 2, "name": "Right Door", "nodeType": "door", "nodeSubType": "blue", "nodeAddress": "0x001a534", "doorOrientation": "right", "doorEnvironments": [ { "physics": "water" } ], "mapTileMask": [ [ 2 ] ] }, { "id": 3, "name": "Bottom Left Shinecharged", "nodeType": "junction", "nodeSubType": "junction", "mapTileMask": [ [ 2 ] ], "note": "This represents being at the bottom left door, facing left, having just gained a shinecharge." }, { "id": 4, "name": "Bottom Right Shinecharged", "nodeType": "junction", "nodeSubType": "junction", "mapTileMask": [ [ 2 ] ], "note": "This represents being at the bottom right door, facing right, having just gained a shinecharge, with the Sciser dead." } ], "enemies": [ { "id": "e1", "groupName": "West Sand Hall Tunnel Sciser", "enemyName": "Sciser", "quantity": 1, "homeNodes": [ 1, 2 ] } ], "links": [ { "from": 1, "to": [ { "id": 1 }, { "id": 2 }, { "id": 4 } ] }, { "from": 2, "to": [ { "id": 1 }, { "id": 2 }, { "id": 3 } ] }, { "from": 3, "to": [ { "id": 1 }, { "id": 2 } ] }, { "from": 4, "to": [ { "id": 1 }, { "id": 2 } ] } ], "strats": [ { "id": 1, "link": [ 1, 1 ], "name": "Leave with Runway", "requires": [], "exitCondition": { "leaveWithRunway": { "length": 13, "openEnd": 0 } } }, { "id": 2, "link": [ 1, 1 ], "name": "Leave with Runway Both Doors Open", "requires": [ { "doorUnlockedAtNode": 2 } ], "exitCondition": { "leaveWithRunway": { "length": 14, "openEnd": 0 } }, "unlocksDoors": [ { "nodeId": 2, "types": [ "ammo" ], "requires": [] } ] }, { "id": 32, "link": [ 1, 1 ], "name": "Sciser Farm", "requires": [ "h_navigateUnderwater", { "resetRoom": { "nodes": [ 1, 2 ] } }, { "partialRefill": { "type": "Energy", "limit": 100 } }, { "partialRefill": { "type": "PowerBomb", "limit": 3 } } ], "devNote": "Farm cycle: 6seconds." }, { "id": 4, "link": [ 1, 1 ], "name": "Crystal Flash", "requires": [ "h_CrystalFlash" ], "flashSuitChecked": true }, { "id": 56, "link": [ 1, 1 ], "name": "Precise Stutter Shinecharge, Leave Shinecharged (5-tile runway)", "entranceCondition": { "comeInStutterShinecharging": { "minTiles": 5 } }, "requires": [ "canPreciseStutterWaterShineCharge", { "or": [ "Wave", "Spazer", "Plasma", { "ammo": { "type": "Missile", "count": 2 } }, { "ammo": { "type": "Super", "count": 1 } } ] }, "canShinechargeMovementTricky", "canInsaneJump", { "shineChargeFrames": 130 }, { "or": [ "canBeVeryPatient", { "shineChargeFrames": 15 } ] } ], "exitCondition": { "leaveShinecharged": {} }, "unlocksDoors": [ { "types": [ "super" ], "requires": [] }, { "types": [ "missiles", "powerbomb" ], "requires": [ "never" ] } ], "note": [ "With a runway of 5 tiles (open end) in the other room,", "the ideal timing for the stutter is to release forward for 5 frames, and repress forward on the last possible frame before the transition.", "Other timings can work, but will gain the shinecharge further from the door, leaving fewer shinecharge frames remaining.", "After gaining the shinecharge, continue holding forward in order to make Samus stand.", "Then turnaround spin jump back toward the door, and continue spin jumping to reach the transition with a shinecharge." ] }, { "id": 57, "link": [ 1, 1 ], "name": "Precise Stutter Shinecharge, Leave Shinecharged (4-tile runway)", "entranceCondition": { "comeInStutterShinecharging": { "minTiles": 4 } }, "requires": [ "canPreciseStutterWaterShineCharge", { "or": [ "Wave", "Spazer", "Plasma", { "ammo": { "type": "Missile", "count": 2 } }, { "ammo": { "type": "Super", "count": 1 } } ] }, "canShinechargeMovementTricky", "canInsaneJump", { "shineChargeFrames": 140 }, { "or": [ "canBeVeryPatient", { "shineChargeFrames": 10 } ] } ], "exitCondition": { "leaveShinecharged": {} }, "unlocksDoors": [ { "types": [ "super" ], "requires": [] }, { "types": [ "missiles", "powerbomb" ], "requires": [ "never" ] } ], "note": [ "With only a runway of 4 tiles (open end) in the other room,", "the ideal timing for the stutter is to release forward for 4 frames, and repress forward on the last possible frame before the transition.", "It also works well to release forward for 3 frames and repress on the last possible frame.", "Other timings can also work, but may gain the shinecharge further from the door, leaving fewer shinecharge frames remaining.", "After gaining the shinecharge, continue holding forward in order to make Samus stand.", "Then turnaround spin jump back toward the door, and continue spin jumping to reach the transition with a shinecharge." ] }, { "id": 58, "link": [ 1, 1 ], "name": "Precise Stutter Shinecharge, Leave Shinecharged (3-tile runway)", "entranceCondition": { "comeInStutterShinecharging": { "minTiles": 3 } }, "requires": [ "canPreciseStutterWaterShineCharge", { "or": [ "Wave", "Spazer", "Plasma", { "ammo": { "type": "Missile", "count": 2 } }, { "ammo": { "type": "Super", "count": 1 } } ] }, "canShinechargeMovementTricky", "canInsaneJump", { "shineChargeFrames": 145 }, { "or": [ "canBeVeryPatient", { "shineChargeFrames": 10 } ] } ], "exitCondition": { "leaveShinecharged": {} }, "unlocksDoors": [ { "types": [ "super" ], "requires": [] }, { "types": [ "missiles", "powerbomb" ], "requires": [ "never" ] } ], "note": [ "With only a runway of 3 tiles (open end) in the other room,", "the ideal timing for the stutter is to release forward for 3 or 4 frames, and repress forward on the last possible frame before the transition.", "Other timings can work, but will gain the shinecharge further from the door, leaving fewer shinecharge frames remaining.", "After gaining the shinecharge, continue holding forward in order to make Samus stand.", "Then turnaround spin jump back toward the door, and continue spin jumping to reach the transition with a shinecharge.", "Alternatively, with greater difficulty but saving some shinecharge frames,", "after performing the turnaround spin jump, briefly moonwalk back, then retain momentum by boomeranging forward", "(switching from pressing backward to pressing forward on the next frame),", "and arm pump to reach the door quickly." ], "devNote": [ "The same shinecharge frames could be achieved with a closed end runway (effective length of 2.4375),", "with a 3-frame stutter, but there doesn't appear to be any application." ] }, { "id": 59, "link": [ 1, 1 ], "name": "Precise Stutter Shinecharge, Leave Shinecharged (2-tile runway)", "entranceCondition": { "comeInStutterShinecharging": { "minTiles": 2 } }, "requires": [ "canPreciseStutterWaterShineCharge", { "or": [ "Wave", "Spazer", "Plasma", { "ammo": { "type": "Missile", "count": 2 } }, { "ammo": { "type": "Super", "count": 1 } } ] }, "canShinechargeMovementTricky", "canInsaneJump", { "shineChargeFrames": 150 }, { "or": [ "canBeVeryPatient", { "shineChargeFrames": 15 } ] } ], "exitCondition": { "leaveShinecharged": {} }, "unlocksDoors": [ { "types": [ "super" ], "requires": [] }, { "types": [ "missiles", "powerbomb" ], "requires": [ "never" ] } ], "note": [ "With only a runway of 2 tiles (open end) in the other room,", "the ideal timing for the stutter is to release forward for 3 frames, and repress forward on the last possible frame before the transition.", "Other timings can work, but will gain the shinecharge further from the door, leaving fewer shinecharge frames remaining.", "After gaining the shinecharge, continue holding forward in order to make Samus stand.", "Then turnaround spin jump back toward the door, and continue spin jumping to reach the transition with a shinecharge.", "Alternatively, with greater difficulty but saving some shinecharge frames,", "after performing the turnaround spin jump, briefly moonwalk back, then retain momentum by boomeranging forward", "(switching from pressing backward to pressing forward on the next frame),", "and arm pump to reach the door quickly." ], "devNote": [ "FIXME: The canBeVeryPatient requirement is for difficulty placement of the boomerang method;", "but the boomerang (or maybe specifically the moonwalk boomerang) should possibly be its own tech,", "and the same with rapid arm pumping." ] }, { "id": 60, "link": [ 1, 1 ], "name": "Precise Stutter Shinecharge, Leave Shinecharged (1-tile runway)", "entranceCondition": { "comeInStutterShinecharging": { "minTiles": 1 } }, "requires": [ { "doorUnlockedAtNode": 2 }, "canPreciseStutterWaterShineCharge", { "or": [ "Wave", "Spazer", "Plasma", { "ammo": { "type": "Missile", "count": 2 } }, { "ammo": { "type": "Super", "count": 1 } } ] }, "canInsaneJump", "canBeVeryPatient", "canShinechargeMovementTricky", { "shineChargeFrames": 160 } ], "exitCondition": { "leaveShinecharged": {} }, "unlocksDoors": [ { "nodeId": 2, "types": [ "missiles", "super" ], "requires": [] }, { "nodeId": 2, "types": [ "powerbomb" ], "requires": [ "never" ] }, { "types": [ "super" ], "requires": [] }, { "types": [ "missiles", "powerbomb" ], "requires": [ "never" ] } ], "note": [ "With only 1 tile of runway in the other room, Samus should ideally start on the last pixel of runway with X subpixels of $3FFF or less.", "Run toward the door, releasing forward for exactly 1 frame and pressing it again on the last possible frame before the transition.", "Starting with X subpixels of $7FFF can also work (e.g., by simply backing against the door ledge, then jumping and turning around mid-air);", "in this case, Samus must advance 1 or 2 pixels with an arm pump before the transition (e.g., firing a shot or pressing and/or releasing an angle button),", "and the shinecharge will be gained slightly further away from the door.", "After gaining the shinecharge, continue holding forward in order to make Samus stand.", "Then turnaround spin jump back toward the door, and continue spin jumping to reach the transition with a shinecharge.", "Alternatively, with greater difficulty but saving some shinecharge frames,", "after performing the turnaround spin jump, briefly moonwalk back, then retain momentum by boomeranging forward", "(switching from pressing backward to pressing forward on the next frame),", "and arm pump to reach the door quickly." ], "detailNote": [ "Ideal subpixels ($3FFF) can be achieved using one of several methods:", "1) press forward against the door ledge (or a wall aligned with it);", "jump, and while mid-air, tap forward for exactly 1 frame to land with subpixels $BFFF,", "moonwalk back for exactly 1 frame to end with subpixels $3FFF.", "2) press forward against the door ledge (from a platform below, assuming one exists)", "turn around (while on the ground), and moonwalk back two pixels,", "then jump and mid-air turnaround onto the ledge;", "if Samus jumped from the correct pixel but does not land on the ledge, then it was needed to moonwalk back 1 more frame;", "in this case it is possible to retry by doing a mid-air turnaround back onto the platform, and moonwalking back for 1 frame.", "3) if X-Ray is available, press against the door ledge (from a platform below, assuming one exists)", "turn around (while on the ground), then jump and mid-air turnaround toward the door,", "and use X-Ray to turnaround in place away from the door;", "repeat this sequence 3 more times: jump, mid-air turnaround, X-Ray turnaround;", "then do one more jump and mid-air turnaround, high enough to land on the door ledge,", "and Samus should be in the correct position with subpixels $3FFF." ] }, { "id": 5, "link": [ 1, 1 ], "name": "G-Mode Setup - Get Hit By Sciser", "requires": [], "exitCondition": { "leaveWithGModeSetup": {} }, "flashSuitChecked": true }, { "id": 6, "link": [ 1, 1 ], "name": "G-Mode Regain Mobility", "requires": [ { "enemyDamage": { "enemy": "Sciser", "type": "contact", "hits": 1 } } ], "gModeRegainMobility": {}, "flashSuitChecked": true }, { "id": 7, "link": [ 1, 2 ], "name": "Base", "requires": [] }, { "id": 33, "link": [ 1, 2 ], "name": "Carry Shinecharge", "entranceCondition": { "comeInShinecharged": {} }, "requires": [ "Gravity", { "or": [ { "and": [ "Plasma", { "shineChargeFrames": 55 } ] }, { "and": [ "canTrickyJump", { "shineChargeFrames": 60 } ] } ] } ], "exitCondition": { "leaveShinecharged": {} }, "unlocksDoors": [ { "types": [ "super" ], "requires": [] }, { "types": [ "missiles", "powerbomb" ], "requires": [ "never" ] } ], "flashSuitChecked": true, "note": [ "With the larger hitbox of Plasma, the door can be opened fast enough to safely run under the crab.", "Otherwise, a small spin-jump may be required to reduce Samus' hitbox through the transition." ], "devNote": [ "FIXME: coming in with some run speed might be another way to avoid the crab?", "Spin jumping through the transition technically does not conform to the exit condition,", "but it is possible to land in a single frame in the next room by breaking spin,", "and we include several frames of lenience which is hopefully enough account for any issue in the next room." ] }, { "id": 34, "link": [ 1, 2 ], "name": "Come In Shinecharged, Leave With Spark (Bottom Position)", "entranceCondition": { "comeInShinecharged": {} }, "requires": [ { "or": [ { "and": [ "Gravity", { "shineChargeFrames": 5 } ] }, { "shineChargeFrames": 10 } ] }, { "shinespark": { "frames": 23 } } ], "exitCondition": { "leaveWithSpark": { "position": "bottom" } }, "unlocksDoors": [ { "types": [ "super" ], "requires": [] }, { "types": [ "missiles", "powerbomb" ], "requires": [ "never" ] } ], "flashSuitChecked": true }, { "id": 35, "link": [ 1, 2 ], "name": "Come In Shinecharged, Leave With Spark (Top Position)", "entranceCondition": { "comeInShinecharged": {} }, "requires": [ { "or": [ { "and": [ "Gravity", { "shineChargeFrames": 10 } ] }, { "shineChargeFrames": 20 } ] }, { "shinespark": { "frames": 21 } } ], "exitCondition": { "leaveWithSpark": { "position": "top" } }, "unlocksDoors": [ { "types": [ "super" ], "requires": [] }, { "types": [ "missiles", "powerbomb" ], "requires": [ "never" ] } ], "flashSuitChecked": true }, { "id": 12, "link": [ 1, 2 ], "name": "Grapple Teleport Door Lock Skip", "entranceCondition": { "comeInWithGrappleTeleport": { "blockPositions": [ [ 12, 12 ], [ 12, 13 ] ] } }, "requires": [], "bypassesDoorShell": true }, { "id": 13, "link": [ 1, 2 ], "name": "Carry Grapple Teleport (Top Position)", "entranceCondition": { "comeInWithGrappleTeleport": { "blockPositions": [ [ 12, 12 ] ] } }, "requires": [], "exitCondition": { "leaveWithGrappleTeleport": { "blockPositions": [ [ 12, 12 ] ] } }, "bypassesDoorShell": true }, { "id": 14, "link": [ 1, 2 ], "name": "Carry Grapple Teleport (Bottom Position)", "entranceCondition": { "comeInWithGrappleTeleport": { "blockPositions": [ [ 12, 13 ] ] } }, "requires": [], "exitCondition": { "leaveWithGrappleTeleport": { "blockPositions": [ [ 12, 13 ] ] } }, "bypassesDoorShell": true }, { "id": 15, "link": [ 1, 2 ], "name": "Transition with Stored Fall Speed", "entranceCondition": { "comeInWithStoredFallSpeed": { "fallSpeedInTiles": 1 } }, "requires": [ { "or": [ "Gravity", "Wave", "Spazer", "Plasma", { "ammo": { "type": "Missile", "count": 2 } }, { "ammo": { "type": "Super", "count": 1 } } ] } ], "exitCondition": { "leaveWithStoredFallSpeed": { "fallSpeedInTiles": 1 } }, "unlocksDoors": [ { "types": [ "missiles", "super" ], "requires": [] }, { "types": [ "powerbomb" ], "requires": [ "never" ] } ], "flashSuitChecked": true }, { "id": 16, "link": [ 1, 2 ], "name": "Transition with Stored Fall Speed (more speed)", "entranceCondition": { "comeInWithStoredFallSpeed": { "fallSpeedInTiles": 2 } }, "requires": [ { "or": [ "Gravity", "Wave", "Spazer", "Plasma", { "ammo": { "type": "Missile", "count": 2 } }, { "ammo": { "type": "Super", "count": 1 } } ] } ], "exitCondition": { "leaveWithStoredFallSpeed": { "fallSpeedInTiles": 2 } }, "unlocksDoors": [ { "types": [ "missiles", "super" ], "requires": [] }, { "types": [ "powerbomb" ], "requires": [ "never" ] } ], "flashSuitChecked": true }, { "id": 36, "link": [ 1, 4 ], "name": "Precise Stutter Water Shinecharge", "entranceCondition": { "comeInStutterShinecharging": { "minTiles": 2.4375 } }, "requires": [ "canPreciseStutterWaterShineCharge", { "shineChargeFrames": 0 }, { "or": [ "Wave", "Spazer", "Plasma", { "ammo": { "type": "Missile", "count": 2 } }, { "ammo": { "type": "Super", "count": 1 } } ] } ], "endsWithShineCharge": true, "devNote": [ "FIXME: comeInShinecharging strats (with Gravity or a regular water shinecharge) can also be", "possible, but dealing with the crab seems difficult and dependent on run speed." ] }, { "id": 37, "link": [ 1, 4 ], "name": "Precise Stutter Water Shinecharge (Shorter Runway)", "entranceCondition": { "comeInStutterShinecharging": { "minTiles": 2 } }, "requires": [ "canPreciseStutterWaterShineCharge", { "or": [ { "doorUnlockedAtNode": 2 }, "canInsaneJump" ] }, { "shineChargeFrames": 0 }, { "or": [ "Wave", "Spazer", "Plasma", { "ammo": { "type": "Missile", "count": 2 } }, { "ammo": { "type": "Super", "count": 1 } } ] } ], "unlocksDoors": [ { "nodeId": 2, "types": [ "super", "missiles" ], "requires": [] }, { "nodeId": 2, "types": [ "powerbomb" ], "requires": [ "never" ] } ], "endsWithShineCharge": true, "note": [ "If only 2 tiles of runway are available and it is not possible to unlock the opposite door, then this requires a double frame-perfect stutter:", "run toward the door, release forward for exactly 3 frames, pressing forward again on the last possible frame before the transition." ], "devNote": [ "FIXME: canInsaneJump is for difficulty placement; replace with a more appropriate tech since no jump is involved." ] }, { "id": 38, "link": [ 1, 4 ], "name": "Precise Stutter Water Shinecharge (Very Short Runway)", "entranceCondition": { "comeInStutterShinecharging": { "minTiles": 1 } }, "requires": [ "canPreciseStutterWaterShineCharge", "canInsaneJump", "canBeVeryPatient", { "doorUnlockedAtNode": 2 }, { "shineChargeFrames": 0 }, { "or": [ "Wave", "Spazer", "Plasma", { "ammo": { "type": "Missile", "count": 2 } }, { "ammo": { "type": "Super", "count": 1 } } ] } ], "unlocksDoors": [ { "nodeId": 2, "types": [ "super", "missiles" ], "requires": [] }, { "nodeId": 2, "types": [ "powerbomb" ], "requires": [ "never" ] } ], "endsWithShineCharge": true, "note": [ "With only 1 tile of runway in the other room, this requires subpixel-precise positioning and a double frame-perfect stutter:", "At the start of the run, Samus must be on the last pixel of runway with X subpixels of $3FFF or less.", "Run toward the door, releasing forward for exactly 1 frame and pressing it again on the last possible frame before the transition.", "After the transition, shoot open the opposite door while running, to extend the runway by a tile." ], "detailNote": [ "Correct subpixels can be achieved using one of several methods:", "1) press against the door ledge (or a wall aligned with it);", "jump, and while mid-air, tap forward for exactly 1 frame to land with subpixels $BFFF,", "moonwalk back for exactly 1 frame to end with subpixels $3FFF.", "2) press against the door ledge (from a platform below, assuming one exists)", "turn around (while on the ground), and moonwalk back two pixels,", "then jump and mid-air turnaround onto the ledge;", "if Samus jumped from the correct pixel but does not land on the ledge, then it was needed to moonwalk back 1 more frame;", "in this case it is possible to retry by doing a mid-air turnaround back onto the platform, and moonwalking back for 1 frame.", "3) if X-Ray is available, press against the door ledge (from a platform below, assuming one exists)", "turn around (while on the ground), then jump and mid-air turnaround toward the door,", "and use X-Ray to turnaround in place away from the door;", "repeat this sequence 3 more times: jump, mid-air turnaround, X-Ray turnaround;", "then do one more jump and mid-air turnaround, high enough to land on the door ledge,", "and Samus should be in the correct position with subpixels $3FFF." ], "devNote": [ "The `canBeVeryPatient` is for difficulty placement; this could be improved with a more specific tech later,", "since it does not actually take a long time to execute." ] }, { "id": 17, "link": [ 2, 1 ], "name": "Base", "requires": [] }, { "id": 39, "link": [ 2, 1 ], "name": "Come In Shinecharged, Leave With Spark (Bottom Position)", "entranceCondition": { "comeInShinecharged": {} }, "requires": [ { "or": [ { "and": [ "Gravity", { "shineChargeFrames": 5 } ] }, { "shineChargeFrames": 10 } ] }, { "shinespark": { "frames": 23 } } ], "exitCondition": { "leaveWithSpark": { "position": "bottom" } }, "unlocksDoors": [ { "types": [ "super" ], "requires": [] }, { "types": [ "missiles", "powerbomb" ], "requires": [ "never" ] } ], "flashSuitChecked": true }, { "id": 40, "link": [ 2, 1 ], "name": "Come In Shinecharged, Leave With Spark (Top Position)", "entranceCondition": { "comeInShinecharged": {} }, "requires": [ { "or": [ { "and": [ "Gravity", "canShinechargeMovementTricky", { "shineChargeFrames": 10 }, { "shinespark": { "frames": 21 } } ] }, { "and": [ "Gravity", "canShinechargeMovementComplex", { "shineChargeFrames": 30 }, { "shinespark": { "frames": 17 } } ] }, { "and": [ "canShinechargeMovementTricky", "canInsaneJump", { "shineChargeFrames": 20 }, { "shinespark": { "frames": 21 } } ] }, { "and": [ { "shineChargeFrames": 40 }, { "shinespark": { "frames": 19 } } ] } ] } ], "exitCondition": { "leaveWithSpark": { "position": "top" } }, "unlocksDoors": [ { "types": [ "super" ], "requires": [] }, { "types": [ "missiles", "powerbomb" ], "requires": [ "never" ] } ], "flashSuitChecked": true }, { "id": 22, "link": [ 2, 1 ], "name": "Transition with Stored Fall Speed", "entranceCondition": { "comeInWithStoredFallSpeed": { "fallSpeedInTiles": 1 } }, "requires": [], "exitCondition": { "leaveWithStoredFallSpeed": { "fallSpeedInTiles": 1 } }, "unlocksDoors": [ { "types": [ "missiles", "super" ], "requires": [] }, { "types": [ "powerbomb" ], "requires": [ "never" ] } ], "flashSuitChecked": true }, { "id": 23, "link": [ 2, 1 ], "name": "Transition with Stored Fall Speed (more speed)", "entranceCondition": { "comeInWithStoredFallSpeed": { "fallSpeedInTiles": 2 } }, "requires": [], "exitCondition": { "leaveWithStoredFallSpeed": { "fallSpeedInTiles": 2 } }, "unlocksDoors": [ { "types": [ "missiles", "super" ], "requires": [] }, { "types": [ "powerbomb" ], "requires": [ "never" ] } ], "flashSuitChecked": true }, { "id": 24, "link": [ 2, 1 ], "name": "Grapple Teleport Door Lock Skip", "entranceCondition": { "comeInWithGrappleTeleport": { "blockPositions": [ [ 3, 12 ], [ 3, 13 ] ] } }, "requires": [], "bypassesDoorShell": true }, { "id": 25, "link": [ 2, 1 ], "name": "Carry Grapple Teleport (Top Position)", "entranceCondition": { "comeInWithGrappleTeleport": { "blockPositions": [ [ 3, 12 ] ] } }, "requires": [], "exitCondition": { "leaveWithGrappleTeleport": { "blockPositions": [ [ 3, 12 ] ] } }, "bypassesDoorShell": true }, { "id": 26, "link": [ 2, 1 ], "name": "Carry Grapple Teleport (Bottom Position)", "entranceCondition": { "comeInWithGrappleTeleport": { "blockPositions": [ [ 3, 13 ] ] } }, "requires": [], "exitCondition": { "leaveWithGrappleTeleport": { "blockPositions": [ [ 3, 13 ] ] } }, "bypassesDoorShell": true }, { "id": 27, "link": [ 2, 2 ], "name": "Leave with Runway", "requires": [], "exitCondition": { "leaveWithRunway": { "length": 13, "openEnd": 0 } } }, { "id": 28, "link": [ 2, 2 ], "name": "Leave with Runway Both Doors Open", "requires": [ { "doorUnlockedAtNode": 1 } ], "exitCondition": { "leaveWithRunway": { "length": 14, "openEnd": 0 } }, "unlocksDoors": [ { "nodeId": 1, "types": [ "ammo" ], "requires": [] } ] }, { "id": 61, "link": [ 2, 2 ], "name": "Precise Stutter Shinecharge, Leave Shinecharged (5-tile runway)", "entranceCondition": { "comeInStutterShinecharging": { "minTiles": 5 } }, "requires": [ "canPreciseStutterWaterShineCharge", "canShinechargeMovementTricky", "canInsaneJump", { "shineChargeFrames": 130 }, { "or": [ "canBeVeryPatient", { "shineChargeFrames": 15 } ] } ], "exitCondition": { "leaveShinecharged": {} }, "unlocksDoors": [ { "types": [ "super" ], "requires": [] }, { "types": [ "missiles", "powerbomb" ], "requires": [ "never" ] } ], "note": [ "With a runway of 5 tiles (open end) in the other room,", "the ideal timing for the stutter is to release forward for 5 frames, and repress forward on the last possible frame before the transition.", "Other timings can work, but will gain the shinecharge further from the door, leaving fewer shinecharge frames remaining.", "After gaining the shinecharge, continue holding forward in order to make Samus stand.", "Then turnaround spin jump back toward the door, and continue spin jumping to reach the transition with a shinecharge." ] }, { "id": 62, "link": [ 2, 2 ], "name": "Precise Stutter Shinecharge, Leave Shinecharged (4-tile runway)", "entranceCondition": { "comeInStutterShinecharging": { "minTiles": 4 } }, "requires": [ "canPreciseStutterWaterShineCharge", "canShinechargeMovementTricky", "canInsaneJump", { "shineChargeFrames": 140 }, { "or": [ "canBeVeryPatient", { "shineChargeFrames": 10 } ] } ], "exitCondition": { "leaveShinecharged": {} }, "unlocksDoors": [ { "types": [ "super" ], "requires": [] }, { "types": [ "missiles", "powerbomb" ], "requires": [ "never" ] } ], "note": [ "With only a runway of 4 tiles (open end) in the other room,", "the ideal timing for the stutter is to release forward for 4 frames, and repress forward on the last possible frame before the transition.", "It also works well to release forward for 3 frames and repress on the last possible frame.", "Other timings can also work, but may gain the shinecharge further from the door, leaving fewer shinecharge frames remaining.", "After gaining the shinecharge, continue holding forward in order to make Samus stand.", "Then turnaround spin jump back toward the door, and continue spin jumping to reach the transition with a shinecharge." ] }, { "id": 63, "link": [ 2, 2 ], "name": "Precise Stutter Shinecharge, Leave Shinecharged (3-tile runway)", "entranceCondition": { "comeInStutterShinecharging": { "minTiles": 3 } }, "requires": [ "canPreciseStutterWaterShineCharge", "canShinechargeMovementTricky", "canInsaneJump", { "shineChargeFrames": 145 }, { "or": [ "canBeVeryPatient", { "shineChargeFrames": 10 } ] } ], "exitCondition": { "leaveShinecharged": {} }, "unlocksDoors": [ { "types": [ "super" ], "requires": [] }, { "types": [ "missiles", "powerbomb" ], "requires": [ "never" ] } ], "note": [ "With only a runway of 3 tiles (open end) in the other room,", "the ideal timing for the stutter is to release forward for 3 or 4 frames, and repress forward on the last possible frame before the transition.", "Other timings can work, but will gain the shinecharge further from the door, leaving fewer shinecharge frames remaining.", "After gaining the shinecharge, continue holding forward in order to make Samus stand.", "Then turnaround spin jump back toward the door, and continue spin jumping to reach the transition with a shinecharge.", "Alternatively, with greater difficulty but saving some shinecharge frames,", "after performing the turnaround spin jump, briefly moonwalk back, then retain momentum by boomeranging forward", "(switching from pressing backward to pressing forward on the next frame),", "and arm pump to reach the door quickly." ], "devNote": [ "The same shinecharge frames could be achieved with a closed end runway (effective length of 2.4375),", "with a 3-frame stutter, but there doesn't appear to be any application." ] }, { "id": 64, "link": [ 2, 2 ], "name": "Precise Stutter Shinecharge, Leave Shinecharged (2-tile runway)", "entranceCondition": { "comeInStutterShinecharging": { "minTiles": 2 } }, "requires": [ "canPreciseStutterWaterShineCharge", "canShinechargeMovementTricky", "canInsaneJump", { "shineChargeFrames": 150 }, { "or": [ "canBeVeryPatient", { "shineChargeFrames": 15 } ] } ], "exitCondition": { "leaveShinecharged": {} }, "unlocksDoors": [ { "types": [ "super" ], "requires": [] }, { "types": [ "missiles", "powerbomb" ], "requires": [ "never" ] } ], "note": [ "With only a runway of 2 tiles (open end) in the other room,", "the ideal timing for the stutter is to release forward for 3 frames, and repress forward on the last possible frame before the transition.", "Other timings can work, but will gain the shinecharge further from the door, leaving fewer shinecharge frames remaining.", "After gaining the shinecharge, continue holding forward in order to make Samus stand.", "Then turnaround spin jump back toward the door, and continue spin jumping to reach the transition with a shinecharge.", "Alternatively, with greater difficulty but saving some shinecharge frames,", "after performing the turnaround spin jump, briefly moonwalk back, then retain momentum by boomeranging forward", "(switching from pressing backward to pressing forward on the next frame),", "and arm pump to reach the door quickly." ], "devNote": [ "FIXME: The canBeVeryPatient requirement is for difficulty placement of the boomerang method;", "but the boomerang (or maybe specifically the moonwalk boomerang) should possibly be its own tech,", "and the same with rapid arm pumping." ] }, { "id": 65, "link": [ 2, 2 ], "name": "Precise Stutter Shinecharge, Leave Shinecharged (1-tile runway)", "entranceCondition": { "comeInStutterShinecharging": { "minTiles": 1 } }, "requires": [ { "doorUnlockedAtNode": 1 }, "canPreciseStutterWaterShineCharge", "canInsaneJump", "canBeVeryPatient", "canShinechargeMovementTricky", { "shineChargeFrames": 160 } ], "exitCondition": { "leaveShinecharged": {} }, "unlocksDoors": [ { "nodeId": 1, "types": [ "missiles", "super" ], "requires": [] }, { "nodeId": 1, "types": [ "powerbomb" ], "requires": [ "never" ] }, { "types": [ "super" ], "requires": [] }, { "types": [ "missiles", "powerbomb" ], "requires": [ "never" ] } ], "note": [ "With only 1 tile of runway in the other room, Samus should ideally start on the last pixel of runway with X subpixels of $3FFF or less.", "Run toward the door, releasing forward for exactly 1 frame and pressing it again on the last possible frame before the transition.", "Starting with X subpixels of $7FFF can also work (e.g., by simply backing against the door ledge, then jumping and turning around mid-air);", "in this case, Samus must advance 1 or 2 pixels with an arm pump before the transition (e.g., firing a shot or pressing and/or releasing an angle button),", "and the shinecharge will be gained slightly further away from the door.", "After gaining the shinecharge, continue holding forward in order to make Samus stand.", "Then turnaround spin jump back toward the door, and continue spin jumping to reach the transition with a shinecharge.", "Alternatively, with greater difficulty but saving some shinecharge frames,", "after performing the turnaround spin jump, briefly moonwalk back, then retain momentum by boomeranging forward", "(switching from pressing backward to pressing forward on the next frame),", "and arm pump to reach the door quickly." ], "detailNote": [ "Ideal subpixels ($3FFF) can be achieved using one of several methods:", "1) press forward against the door ledge (or a wall aligned with it);", "jump, and while mid-air, tap forward for exactly 1 frame to land with subpixels $BFFF,", "moonwalk back for exactly 1 frame to end with subpixels $3FFF.", "2) press forward against the door ledge (from a platform below, assuming one exists)", "turn around (while on the ground), and moonwalk back two pixels,", "then jump and mid-air turnaround onto the ledge;", "if Samus jumped from the correct pixel but does not land on the ledge, then it was needed to moonwalk back 1 more frame;", "in this case it is possible to retry by doing a mid-air turnaround back onto the platform, and moonwalking back for 1 frame.", "3) if X-Ray is available, press against the door ledge (from a platform below, assuming one exists)", "turn around (while on the ground), then jump and mid-air turnaround toward the door,", "and use X-Ray to turnaround in place away from the door;", "repeat this sequence 3 more times: jump, mid-air turnaround, X-Ray turnaround;", "then do one more jump and mid-air turnaround, high enough to land on the door ledge,", "and Samus should be in the correct position with subpixels $3FFF." ] }, { "id": 30, "link": [ 2, 2 ], "name": "G-Mode Setup - Get Hit By Sciser", "requires": [], "exitCondition": { "leaveWithGModeSetup": {} }, "flashSuitChecked": true }, { "id": 31, "link": [ 2, 2 ], "name": "G-Mode Regain Mobility", "requires": [ { "enemyDamage": { "enemy": "Sciser", "type": "contact", "hits": 1 } } ], "gModeRegainMobility": {}, "flashSuitChecked": true }, { "id": 41, "link": [ 2, 3 ], "name": "Come In Shinecharging (Gravity)", "entranceCondition": { "comeInShinecharging": { "length": 12, "openEnd": 0 } }, "requires": [ "Gravity", { "shineChargeFrames": 0 } ], "endsWithShineCharge": true, "devNote": [ "FIXME: A variant with 1 more runway tile could be added if the door at node 1 is unlocked." ] }, { "id": 42, "link": [ 2, 3 ], "name": "Water Shinecharge", "entranceCondition": { "comeInShinecharging": { "length": 4, "openEnd": 0 } }, "requires": [ "canWaterShineCharge", { "shineChargeFrames": 0 } ], "endsWithShineCharge": true }, { "id": 43, "link": [ 2, 3 ], "name": "Precise Stutter Water Shinecharge", "entranceCondition": { "comeInStutterShinecharging": { "minTiles": 2.4375 } }, "requires": [ "canPreciseStutterWaterShineCharge", { "shineChargeFrames": 0 } ], "endsWithShineCharge": true }, { "id": 44, "link": [ 2, 3 ], "name": "Precise Stutter Water Shinecharge (Shorter Runway)", "entranceCondition": { "comeInStutterShinecharging": { "minTiles": 2 } }, "requires": [ "canPreciseStutterWaterShineCharge", { "or": [ { "doorUnlockedAtNode": 1 }, "canInsaneJump" ] }, { "shineChargeFrames": 0 } ], "unlocksDoors": [ { "nodeId": 1, "types": [ "super", "missiles" ], "requires": [] }, { "nodeId": 1, "types": [ "powerbomb" ], "requires": [ "never" ] } ], "endsWithShineCharge": true, "note": [ "If only 2 tiles of runway are available and it is not possible to unlock the opposite door, then this requires a double frame-perfect stutter:", "run toward the door, release forward for exactly 3 frames, pressing forward again on the last possible frame before the transition." ], "devNote": [ "FIXME: canInsaneJump is for difficulty placement; replace with a more appropriate tech since no jump is involved." ] }, { "id": 45, "link": [ 2, 3 ], "name": "Precise Stutter Water Shinecharge (Very Short Runway)", "entranceCondition": { "comeInStutterShinecharging": { "minTiles": 1 } }, "requires": [ "canPreciseStutterWaterShineCharge", "canInsaneJump", "canBeVeryPatient", { "doorUnlockedAtNode": 1 }, { "shineChargeFrames": 0 } ], "unlocksDoors": [ { "nodeId": 1, "types": [ "super", "missiles" ], "requires": [] }, { "nodeId": 1, "types": [ "powerbomb" ], "requires": [ "never" ] } ], "endsWithShineCharge": true, "note": [ "With only 1 tile of runway in the other room, this requires subpixel-precise positioning and a double frame-perfect stutter:", "At the start of the run, Samus must be on the last pixel of runway with X subpixels of $C000 or greater.", "Run toward the door, releasing forward for exactly 1 frame and pressing it again on the last possible frame before the transition.", "After the transition, shoot open the opposite door while running, to extend the runway by a tile." ], "detailNote": [ "Correct subpixels can be achieved using one of several methods:", "1) press against the door ledge (or a wall aligned with it);", "jump, and while mid-air, tap forward for exactly 1 frame to land with subpixels $4000,", "moonwalk back for exactly 1 frame to end with subpixels $C000.", "2) press against the door ledge (from a platform below, assuming one exists)", "turn around (while on the ground), and moonwalk back two pixels,", "then jump and mid-air turnaround onto the ledge;", "if Samus jumped from the correct pixel but does not land on the ledge, then it was needed to moonwalk back 1 more frame;", "in this case it is possible to retry by doing a mid-air turnaround back onto the platform, and moonwalking back for 1 frame.", "3) if X-Ray is available, press against the door ledge (from a platform below, assuming one exists)", "turn around (while on the ground), then jump and mid-air turnaround toward the door,", "and use X-Ray to turnaround in place away from the door;", "repeat this sequence 3 more times: jump, mid-air turnaround, X-Ray turnaround;", "then do one more jump and mid-air turnaround, high enough to land on the door ledge,", "and Samus should be in the correct position with subpixels $C000." ], "devNote": [ "The `canBeVeryPatient` is for difficulty placement; this could be improved with a more specific tech later,", "since it does not actually take a long time to execute." ] }, { "id": 46, "link": [ 3, 1 ], "name": "Leave Shinecharged", "startsWithShineCharge": true, "requires": [ { "shineChargeFrames": 10 } ], "exitCondition": { "leaveShinecharged": {} }, "unlocksDoors": [ { "types": [ "missiles", "super" ], "requires": [] }, { "types": [ "powerbomb" ], "requires": [ "never" ] } ], "flashSuitChecked": true, "devNote": "FIXME: This is a prime example for 3-room shinecharges, once the schema can model it." }, { "id": 47, "link": [ 3, 1 ], "name": "Leave With Temporary Blue", "startsWithShineCharge": true, "requires": [ { "shineChargeFrames": 0 }, "h_getBlueSpeedMaxRunway", "canTemporaryBlue" ], "exitCondition": { "leaveWithTemporaryBlue": {} }, "unlocksDoors": [ { "types": [ "ammo" ], "requires": [] } ], "flashSuitChecked": true, "note": [ "To avoid being hit by the crab, jump through the door with blue speed rather than gaining a shinecharge." ], "devNote": [ "The `h_getBlueSpeedMaxRunway` requirement is to satisfy the tests,", "since we don't have a way to represent that the temporary blue originates from the startsWithShineCharge." ] }, { "id": 48, "link": [ 3, 2 ], "name": "Leave With Spark", "startsWithShineCharge": true, "requires": [ "canShinechargeMovementComplex", { "shineChargeFrames": 120 }, { "shinespark": { "frames": 9 } } ], "exitCondition": { "leaveWithSpark": {} }, "unlocksDoors": [ { "types": [ "super" ], "requires": [] }, { "types": [ "missiles", "powerbomb" ], "requires": [ "never" ] } ] }, { "id": 50, "link": [ 3, 2 ], "name": "Leave With Temporary Blue", "startsWithShineCharge": true, "requires": [ { "shineChargeFrames": 0 }, "h_getBlueSpeedMaxRunway", "canXRayCancelShinecharge", "canXRayTurnaround", "canChainTemporaryBlue" ], "exitCondition": { "leaveWithTemporaryBlue": {} }, "unlocksDoors": [ { "types": [ "ammo" ], "requires": [] } ], "flashSuitChecked": true, "note": [ "Use X-Ray to cancel the shinecharge, in order to turnaround quickly enough to jump over the crab." ], "devNote": [ "The `h_getBlueSpeedMaxRunway` requirement is to satisfy the tests,", "since we don't have a way to represent that the temporary blue originates from the startsWithShineCharge." ] }, { "id": 51, "link": [ 4, 1 ], "name": "Leave With Spark", "startsWithShineCharge": true, "requires": [ "canShinechargeMovementComplex", { "shineChargeFrames": 120 }, { "shinespark": { "frames": 9 } } ], "exitCondition": { "leaveWithSpark": {} }, "unlocksDoors": [ { "types": [ "super" ], "requires": [] }, { "types": [ "missiles", "powerbomb" ], "requires": [ "never" ] } ] }, { "id": 53, "link": [ 4, 1 ], "name": "Leave With Temporary Blue", "startsWithShineCharge": true, "requires": [ { "shineChargeFrames": 0 }, "h_getBlueSpeedMaxRunway", "canXRayTurnaround", "canChainTemporaryBlue" ], "exitCondition": { "leaveWithTemporaryBlue": {} }, "unlocksDoors": [ { "types": [ "ammo" ], "requires": [] } ], "flashSuitChecked": true, "devNote": [ "The `h_getBlueSpeedMaxRunway` requirement is to satisfy the tests,", "since we don't have a way to represent that the temporary blue originates from the startsWithShineCharge." ] }, { "id": 54, "link": [ 4, 2 ], "name": "Leave Shinecharged", "startsWithShineCharge": true, "requires": [ { "shineChargeFrames": 10 } ], "exitCondition": { "leaveShinecharged": {} }, "unlocksDoors": [ { "types": [ "missiles", "super" ], "requires": [] }, { "types": [ "powerbomb" ], "requires": [ "never" ] } ], "flashSuitChecked": true, "devNote": "FIXME: This is a prime example for 3-room shinecharges, once the schema can model it." }, { "id": 55, "link": [ 4, 2 ], "name": "Leave With Temporary Blue", "startsWithShineCharge": true, "requires": [ { "shineChargeFrames": 0 }, "h_getBlueSpeedMaxRunway", "canTemporaryBlue" ], "exitCondition": { "leaveWithTemporaryBlue": {} }, "unlocksDoors": [ { "types": [ "ammo" ], "requires": [] } ], "flashSuitChecked": true, "devNote": [ "The `h_getBlueSpeedMaxRunway` requirement is to satisfy the tests,", "since we don't have a way to represent that the temporary blue originates from the startsWithShineCharge." ] }, { "link": [ 1, 1 ], "name": "Base (Unlock Door)", "requires": [], "unlocksDoors": [ { "types": [ "ammo" ], "requires": [] } ] }, { "link": [ 1, 1 ], "name": "Base (Come In Normally)", "entranceCondition": { "comeInNormally": {} }, "requires": [] }, { "link": [ 2, 2 ], "name": "Base (Unlock Door)", "requires": [], "unlocksDoors": [ { "types": [ "ammo" ], "requires": [] } ] }, { "link": [ 2, 2 ], "name": "Base (Come In Normally)", "entranceCondition": { "comeInNormally": {} }, "requires": [] } ], "notables": [], "nextStratId": 66, "nextNotableId": 1 }