West Cactus Alley Room

Room ID: 195

Wiki
Difficulty filter

From: 1
Bottom Left Door
To: 1
Bottom Left Door

Exit condition:

{
  "leaveWithRunway": {
    "length": 3,
    "openEnd": 1
  }
}
From: 1
Bottom Left Door
To: 1
Bottom Left Door

Requires:

{
  "resetRoom": {
    "nodes": [
      1
    ],
    "mustStayPut": false
  }
}
{
  "partialRefill": {
    "type": "Energy",
    "limit": 140
  }
}
{
  "partialRefill": {
    "type": "Super",
    "limit": 8
  }
}
From: 1
Bottom Left Door
To: 1
Bottom Left Door

Requires:

"HiJump"
{
  "resetRoom": {
    "nodes": [
      1
    ],
    "mustStayPut": false
  }
}
{
  "partialRefill": {
    "type": "Energy",
    "limit": 300
  }
}
{
  "partialRefill": {
    "type": "Super",
    "limit": 16
  }
}
From: 1
Bottom Left Door
To: 1
Bottom Left Door

Requires:

{
  "resetRoom": {
    "nodes": [
      1,
      2
    ],
    "mustStayPut": false
  }
}
"Gravity"
{
  "or": [
    "h_canCrouchJumpDownGrab",
    "canUseFrozenEnemies",
    "canGravityJump",
    "canWalljump",
    "HiJump",
    "canSpringBallJumpMidAir",
    "h_canFly",
    "canSpringBallBombJump"
  ]
}
{
  "refill": [
    "Super",
    "Energy"
  ]
}
From: 1
Bottom Left Door
To: 1
Bottom Left Door

Requires:

"h_canCrystalFlash"
From: 1
Bottom Left Door
To: 2
Top Right Door

Requires:

"Gravity"
{
  "or": [
    "h_canCrouchJumpDownGrab",
    "canUseFrozenEnemies",
    "canGravityJump",
    "canWalljump",
    "HiJump",
    "canSpringBallJumpMidAir",
    "h_canFly",
    "canSpringBallBombJump"
  ]
}
From: 1
Bottom Left Door
To: 2
Top Right Door

Damage boost up to the higher ledge using a Cacatac spike. Spikes only exist on camera so follow a vertically fired spike up to the correct height.

Requires:

"Gravity"
"canHorizontalDamageBoost"
"canCameraManip"
{
  "enemyDamage": {
    "enemy": "Cacatac",
    "hits": 1,
    "type": "spike"
  }
}
From: 1
Bottom Left Door
To: 2
Top Right Door

Requires:

"canSuitlessMaridia"
"HiJump"
{
  "or": [
    "canSpringBallJumpMidAir",
    "canSpaceJumpWaterBounce",
    "canUseFrozenEnemies"
  ]
}
From: 1
Bottom Left Door
To: 2
Top Right Door

Requires:

"canSuitlessMaridia"
"canUseFrozenEnemies"
"canTrickySpringBallJump"
"canCrouchJump"
From: 1
Bottom Left Door
To: 2
Top Right Door

Climb up a little less than 1 screen.

Entrance condition:

{
  "comeInWithDoorStuckSetup": {}
}

Requires:

"canXRayClimb"
From: 1
Bottom Left Door
To: 2
Top Right Door

The lenient version requires a runway of at least 5 tiles (with no open end) in the adjacent room. This is easier without Speed Booster and requires disabling HiJump.

Entrance condition:

{
  "comeInJumping": {
    "speedBooster": false,
    "minTiles": 4.4375
  }
}

Requires:

"canCrossRoomJumpIntoWater"
"canDisableEquipment"
From: 1
Bottom Left Door
To: 2
Top Right Door

Requires a runway of at least 2 tiles (with no open end) in the adjacent room. This is typically easier without Speed Booster depending on the exact runway length and requires disabling HiJump.

Entrance condition:

{
  "comeInJumping": {
    "speedBooster": false,
    "minTiles": 1.4375
  }
}

Requires:

"canCrossRoomJumpIntoWater"
"canMomentumConservingTurnaround"
"canTrickyJump"
"canDisableEquipment"
From: 1
Bottom Left Door
To: 2
Top Right Door

It is possible to jump to the top door using a runway of just one tile with Speed Booster and no HiJump. Requires a last-frame jump and down press that is late but not immediately before the turnaround. With a second-to-last-frame jump it is still possible but more precise.

Entrance condition:

{
  "comeInJumping": {
    "speedBooster": true,
    "minTiles": 1
  }
}

Requires:

"canCrossRoomJumpIntoWater"
"canMomentumConservingTurnaround"
"canTrickyDashJump"
"canDisableEquipment"
From: 1
Bottom Left Door
To: 2
Top Right Door

Gain speed from a remote runway in the previous room, and Space Jump through the bottom of the doorway.

Entrance condition:

{
  "comeInSpaceJumping": {
    "speedBooster": "any",
    "minTiles": 5
  }
}

Requires:

"canCrossRoomJumpIntoWater"
From: 1
Bottom Left Door
To: 2
Top Right Door

Gain speed from a remote runway in the previous room, and Space Jump through the bottom of the doorway.

Entrance condition:

{
  "comeInSpaceJumping": {
    "speedBooster": "any",
    "minTiles": 2
  }
}

Requires:

"canCrossRoomJumpIntoWater"
"canMomentumConservingTurnaround"
"canTrickyJump"
From: 1
Bottom Left Door
To: 2
Top Right Door

Entrance condition:

{
  "comeInWithSpringBallBounce": {
    "speedBooster": "any",
    "remoteAndLandingMinTiles": [
      [
        2.5625,
        1
      ]
    ],
    "movementType": "uncontrolled"
  }
}

Requires:

"canCrossRoomJumpIntoWater"
"canTrickyJump"
From: 1
Bottom Left Door
To: 2
Top Right Door

Entrance condition:

{
  "comeInWithSpringBallBounce": {
    "speedBooster": "any",
    "remoteAndLandingMinTiles": [
      [
        3.5625,
        1
      ]
    ],
    "movementType": "controlled"
  }
}

Requires:

"canCrossRoomJumpIntoWater"
From: 1
Bottom Left Door
To: 2
Top Right Door

Unmorph just before hitting the overhang, to conserve momentum to make it on top.

Entrance condition:

{
  "comeInWithSpringBallBounce": {
    "speedBooster": false,
    "remoteAndLandingMinTiles": [
      [
        1.5625,
        1
      ]
    ],
    "movementType": "uncontrolled"
  }
}

Requires:

"canCrossRoomJumpIntoWater"
"canTrickyJump"
"canMomentumConservingMorph"
From: 1
Bottom Left Door
To: 2
Top Right Door

Unmorph just before hitting the overhang, to conserve momentum to make it on top.

Entrance condition:

{
  "comeInWithSpringBallBounce": {
    "speedBooster": "any",
    "remoteAndLandingMinTiles": [
      [
        2.5625,
        1
      ]
    ],
    "movementType": "controlled"
  }
}

Requires:

"canCrossRoomJumpIntoWater"
"canMomentumConservingMorph"
From: 1
Bottom Left Door
To: 2
Top Right Door

Entrance condition:

{
  "comeInShinecharged": {
    "framesRequired": 4
  }
}

Requires:

"Gravity"
{
  "shinespark": {
    "frames": 20,
    "excessFrames": 0
  }
}
From: 1
Bottom Left Door
To: 2
Top Right Door

Entrance condition:

{
  "comeInShinecharged": {
    "framesRequired": 20
  }
}

Requires:

"canSuitlessMaridia"
{
  "shinespark": {
    "frames": 20,
    "excessFrames": 0
  }
}
From: 1
Bottom Left Door
To: 2
Top Right Door

It can be difficult to land on the ledge when the waterline is low. It may be necessary to time the walljump attempts by watching the water level, or by stalling with additional walljumps as the water rises.

Requires:

"canUnderwaterWalljump"
From: 1
Bottom Left Door
To: 2
Top Right Door

Requires:

{
  "useFlashSuit": {}
}
{
  "or": [
    {
      "shinespark": {
        "frames": 17,
        "excessFrames": 3
      }
    },
    {
      "and": [
        "HiJump",
        {
          "shinespark": {
            "frames": 7,
            "excessFrames": 5
          }
        }
      ]
    }
  ]
}
{
  "enemyDamage": {
    "enemy": "Cacatac",
    "hits": 1,
    "type": "spike"
  }
}
From: 1
Bottom Left Door
To: 2
Top Right Door

Entrance condition:

{
  "comeInJumping": {
    "speedBooster": "any",
    "minTiles": 1
  }
}

Requires:

"canCrossRoomJumpIntoWater"
{
  "useFlashSuit": {}
}
{
  "shinespark": {
    "frames": 10,
    "excessFrames": 5
  }
}
{
  "enemyDamage": {
    "enemy": "Cacatac",
    "hits": 1,
    "type": "spike"
  }
}
From: 1
Bottom Left Door
To: 2
Top Right Door

Entrance condition:

{
  "comeInWithGrappleTeleport": {
    "blockPositions": [
      [
        12,
        12
      ],
      [
        12,
        13
      ]
    ]
  }
}

Bypasses door shell: true

From: 1
Bottom Left Door
To: 2
Top Right Door

Entrance condition:

{
  "comeInWithGrappleTeleport": {
    "blockPositions": [
      [
        12,
        12
      ]
    ]
  }
}

Exit condition:

{
  "leaveWithGrappleTeleport": {
    "blockPositions": [
      [
        12,
        12
      ]
    ]
  }
}

Bypasses door shell: true

From: 1
Bottom Left Door
To: 2
Top Right Door

Entrance condition:

{
  "comeInWithGrappleTeleport": {
    "blockPositions": [
      [
        12,
        13
      ]
    ]
  }
}

Exit condition:

{
  "leaveWithGrappleTeleport": {
    "blockPositions": [
      [
        12,
        13
      ]
    ]
  }
}

Bypasses door shell: true

From: 2
Top Right Door
To: 1
Bottom Left Door

From: 2
Top Right Door
To: 1
Bottom Left Door

Entrance condition:

{
  "comeInShinecharging": {
    "length": 0,
    "openEnd": 1
  }
}

Requires:

"canTrickyJump"
"canChainTemporaryBlue"

Exit condition:

{
  "leaveWithTemporaryBlue": {}
}

Unlocks doors:

{"types":["ammo"],"requires":[]}
From: 2
Top Right Door
To: 1
Bottom Left Door

Entrance condition:

{
  "comeInWithGrappleTeleport": {
    "blockPositions": [
      [
        2,
        18
      ],
      [
        2,
        19
      ],
      [
        2,
        28
      ],
      [
        2,
        29
      ]
    ]
  }
}

Bypasses door shell: true

From: 2
Top Right Door
To: 1
Bottom Left Door

Entrance condition:

{
  "comeInWithGrappleTeleport": {
    "blockPositions": [
      [
        2,
        18
      ]
    ]
  }
}

Exit condition:

{
  "leaveWithGrappleTeleport": {
    "blockPositions": [
      [
        2,
        18
      ]
    ]
  }
}

Bypasses door shell: true

From: 2
Top Right Door
To: 1
Bottom Left Door

Entrance condition:

{
  "comeInWithGrappleTeleport": {
    "blockPositions": [
      [
        2,
        19
      ]
    ]
  }
}

Exit condition:

{
  "leaveWithGrappleTeleport": {
    "blockPositions": [
      [
        2,
        19
      ]
    ]
  }
}

Bypasses door shell: true

From: 2
Top Right Door
To: 1
Bottom Left Door

Entrance condition:

{
  "comeInWithGrappleTeleport": {
    "blockPositions": [
      [
        2,
        28
      ]
    ]
  }
}

Exit condition:

{
  "leaveWithGrappleTeleport": {
    "blockPositions": [
      [
        2,
        28
      ]
    ]
  }
}

Bypasses door shell: true

From: 2
Top Right Door
To: 1
Bottom Left Door

Entrance condition:

{
  "comeInWithGrappleTeleport": {
    "blockPositions": [
      [
        2,
        29
      ]
    ]
  }
}

Exit condition:

{
  "leaveWithGrappleTeleport": {
    "blockPositions": [
      [
        2,
        29
      ]
    ]
  }
}

Bypasses door shell: true

From: 2
Top Right Door
To: 2
Top Right Door

Exit condition:

{
  "leaveWithRunway": {
    "length": 3,
    "openEnd": 1
  }
}
From: 2
Top Right Door
To: 2
Top Right Door

Requires:

{
  "or": [
    "Gravity",
    "canCarefulJump"
  ]
}

Exit condition:

{
  "leaveSpinning": {
    "remoteRunway": {
      "length": 6,
      "openEnd": 0
    }
  }
}
From: 2
Top Right Door
To: 2
Top Right Door

Requires:

{
  "or": [
    "Gravity",
    "canCarefulJump"
  ]
}

Exit condition:

{
  "leaveWithMockball": {
    "remoteRunway": {
      "length": 6,
      "openEnd": 1
    },
    "landingRunway": {
      "length": 3,
      "openEnd": 1
    }
  }
}
From: 2
Top Right Door
To: 2
Top Right Door

Requires:

{
  "or": [
    "Gravity",
    "canCarefulJump"
  ]
}

Exit condition:

{
  "leaveWithSpringBallBounce": {
    "remoteRunway": {
      "length": 6,
      "openEnd": 1
    },
    "landingRunway": {
      "length": 3,
      "openEnd": 1
    },
    "movementType": "uncontrolled"
  }
}
From: 2
Top Right Door
To: 2
Top Right Door

Requires:

{
  "or": [
    "Gravity",
    "canCarefulJump"
  ]
}

Exit condition:

{
  "leaveSpaceJumping": {
    "remoteRunway": {
      "length": 6,
      "openEnd": 0
    }
  }
}
From: 2
Top Right Door
To: 2
Top Right Door

Requires:

{
  "resetRoom": {
    "nodes": [
      2
    ],
    "mustStayPut": false
  }
}
{
  "partialRefill": {
    "type": "Energy",
    "limit": 300
  }
}
{
  "partialRefill": {
    "type": "Super",
    "limit": 16
  }
}
From: 2
Top Right Door
To: 2
Top Right Door

Requires:

"h_canCrystalFlash"

{
  "$schema": "../../../schema/m3-room.schema.json",
  "id": 195,
  "name": "West Cactus Alley Room",
  "area": "Maridia",
  "subarea": "Inner",
  "subsubarea": "Pink",
  "playable": true,
  "roomAddress": "0x7D9FE",
  "roomEnvironments": [
    {
      "heated": false
    }
  ],
  "nodes": [
    {
      "id": 1,
      "name": "Bottom Left Door",
      "nodeType": "door",
      "nodeSubType": "blue",
      "nodeAddress": "0x001a93c",
      "doorOrientation": "left",
      "doorEnvironments": [
        {
          "physics": "water"
        }
      ]
    },
    {
      "id": 2,
      "name": "Top Right Door",
      "nodeType": "door",
      "nodeSubType": "blue",
      "nodeAddress": "0x001a948",
      "doorOrientation": "right",
      "doorEnvironments": [
        {
          "physics": "air"
        }
      ]
    }
  ],
  "enemies": [
    {
      "id": "e1",
      "groupName": "West Cactus Alley Top Cacatacs",
      "enemyName": "Cacatac",
      "quantity": 2,
      "homeNodes": [
        2
      ]
    },
    {
      "id": "e2",
      "groupName": "West Cactus Alley Bottom Cacatac",
      "enemyName": "Cacatac",
      "quantity": 1,
      "homeNodes": [
        1
      ]
    },
    {
      "id": "e3",
      "groupName": "West Cactus Alley Middle Cacatac",
      "enemyName": "Cacatac",
      "quantity": 1,
      "betweenNodes": [
        1,
        2
      ]
    }
  ],
  "links": [
    {
      "from": 1,
      "to": [
        {
          "id": 1
        },
        {
          "id": 2
        }
      ]
    },
    {
      "from": 2,
      "to": [
        {
          "id": 1
        },
        {
          "id": 2
        }
      ]
    }
  ],
  "strats": [
    {
      "id": 1,
      "link": [
        1,
        1
      ],
      "name": "Leave with Runway",
      "requires": [],
      "exitCondition": {
        "leaveWithRunway": {
          "length": 3,
          "openEnd": 1
        }
      }
    },
    {
      "id": 2,
      "link": [
        1,
        1
      ],
      "name": "Single Cacatac Farm",
      "requires": [
        {
          "resetRoom": {
            "nodes": [
              1
            ],
            "mustStayPut": false
          }
        },
        {
          "partialRefill": {
            "type": "Energy",
            "limit": 140
          }
        },
        {
          "partialRefill": {
            "type": "Super",
            "limit": 8
          }
        }
      ]
    },
    {
      "id": 3,
      "link": [
        1,
        1
      ],
      "name": "Cacatac Farm",
      "requires": [
        "HiJump",
        {
          "resetRoom": {
            "nodes": [
              1
            ],
            "mustStayPut": false
          }
        },
        {
          "partialRefill": {
            "type": "Energy",
            "limit": 300
          }
        },
        {
          "partialRefill": {
            "type": "Super",
            "limit": 16
          }
        }
      ]
    },
    {
      "id": 41,
      "link": [
        1,
        1
      ],
      "name": "Cacatac Farm",
      "requires": [
        {
          "resetRoom": {
            "nodes": [
              1,
              2
            ],
            "mustStayPut": false
          }
        },
        "Gravity",
        {
          "or": [
            "h_canCrouchJumpDownGrab",
            "canUseFrozenEnemies",
            "canGravityJump",
            "canWalljump",
            "HiJump",
            "canSpringBallJumpMidAir",
            "h_canFly",
            "canSpringBallBombJump"
          ]
        },
        {
          "refill": [
            "Super",
            "Energy"
          ]
        }
      ]
    },
    {
      "id": 4,
      "link": [
        1,
        1
      ],
      "name": "Crystal Flash",
      "requires": [
        "h_canCrystalFlash"
      ],
      "flashSuitChecked": true
    },
    {
      "id": 5,
      "link": [
        1,
        2
      ],
      "name": "Base",
      "requires": [
        "Gravity",
        {
          "or": [
            "h_canCrouchJumpDownGrab",
            "canUseFrozenEnemies",
            "canGravityJump",
            "canWalljump",
            "HiJump",
            "canSpringBallJumpMidAir",
            "h_canFly",
            "canSpringBallBombJump"
          ]
        }
      ]
    },
    {
      "id": 6,
      "link": [
        1,
        2
      ],
      "name": "Gravity Damage Boost",
      "requires": [
        "Gravity",
        "canHorizontalDamageBoost",
        "canCameraManip",
        {
          "enemyDamage": {
            "enemy": "Cacatac",
            "hits": 1,
            "type": "spike"
          }
        }
      ],
      "note": "Damage boost up to the higher ledge using a Cacatac spike. Spikes only exist on camera so follow a vertically fired spike up to the correct height."
    },
    {
      "id": 7,
      "link": [
        1,
        2
      ],
      "name": "Suitless HiJump plus Assist",
      "requires": [
        "canSuitlessMaridia",
        "HiJump",
        {
          "or": [
            "canSpringBallJumpMidAir",
            "canSpaceJumpWaterBounce",
            "canUseFrozenEnemies"
          ]
        }
      ]
    },
    {
      "id": 8,
      "link": [
        1,
        2
      ],
      "name": "Suitless SpringBall Frozen Cacatac",
      "requires": [
        "canSuitlessMaridia",
        "canUseFrozenEnemies",
        "canTrickySpringBallJump",
        "canCrouchJump"
      ]
    },
    {
      "id": 9,
      "link": [
        1,
        2
      ],
      "name": "X-Ray Climb",
      "entranceCondition": {
        "comeInWithDoorStuckSetup": {}
      },
      "requires": [
        "canXRayClimb"
      ],
      "flashSuitChecked": true,
      "note": "Climb up a little less than 1 screen."
    },
    {
      "id": 10,
      "link": [
        1,
        2
      ],
      "name": "Cross Room Jump, Bootless",
      "entranceCondition": {
        "comeInJumping": {
          "speedBooster": false,
          "minTiles": 4.4375
        }
      },
      "requires": [
        "canCrossRoomJumpIntoWater",
        "canDisableEquipment"
      ],
      "note": [
        "The lenient version requires a runway of at least 5 tiles (with no open end) in the adjacent room.",
        "This is easier without Speed Booster and requires disabling HiJump."
      ]
    },
    {
      "id": 11,
      "link": [
        1,
        2
      ],
      "name": "Tricky Cross Room Jump, Bootless",
      "entranceCondition": {
        "comeInJumping": {
          "speedBooster": false,
          "minTiles": 1.4375
        }
      },
      "requires": [
        "canCrossRoomJumpIntoWater",
        "canMomentumConservingTurnaround",
        "canTrickyJump",
        "canDisableEquipment"
      ],
      "note": [
        "Requires a runway of at least 2 tiles (with no open end) in the adjacent room.",
        "This is typically easier without Speed Booster depending on the exact runway length and requires disabling HiJump."
      ],
      "devNote": "Although speedBooster false includes canDisableEquipment, the strat still includes it to indicate disabling HiJump."
    },
    {
      "id": 12,
      "link": [
        1,
        2
      ],
      "name": "Tricky Dash Cross Room Jump",
      "entranceCondition": {
        "comeInJumping": {
          "speedBooster": true,
          "minTiles": 1
        }
      },
      "requires": [
        "canCrossRoomJumpIntoWater",
        "canMomentumConservingTurnaround",
        "canTrickyDashJump",
        "canDisableEquipment"
      ],
      "note": [
        "It is possible to jump to the top door using a runway of just one tile with Speed Booster and no HiJump.",
        "Requires a last-frame jump and down press that is late but not immediately before the turnaround.",
        "With a second-to-last-frame jump it is still possible but more precise."
      ]
    },
    {
      "id": 13,
      "link": [
        1,
        2
      ],
      "name": "Cross Room Space Jump",
      "entranceCondition": {
        "comeInSpaceJumping": {
          "speedBooster": "any",
          "minTiles": 5
        }
      },
      "requires": [
        "canCrossRoomJumpIntoWater"
      ],
      "note": "Gain speed from a remote runway in the previous room, and Space Jump through the bottom of the doorway."
    },
    {
      "id": 14,
      "link": [
        1,
        2
      ],
      "name": "Tricky Cross Room Space Jump",
      "entranceCondition": {
        "comeInSpaceJumping": {
          "speedBooster": "any",
          "minTiles": 2
        }
      },
      "requires": [
        "canCrossRoomJumpIntoWater",
        "canMomentumConservingTurnaround",
        "canTrickyJump"
      ],
      "note": "Gain speed from a remote runway in the previous room, and Space Jump through the bottom of the doorway."
    },
    {
      "id": 15,
      "link": [
        1,
        2
      ],
      "name": "Cross Room Spring Ball Bounce (Uncontrolled)",
      "entranceCondition": {
        "comeInWithSpringBallBounce": {
          "speedBooster": "any",
          "remoteAndLandingMinTiles": [
            [
              2.5625,
              1
            ]
          ],
          "movementType": "uncontrolled"
        }
      },
      "requires": [
        "canCrossRoomJumpIntoWater",
        "canTrickyJump"
      ]
    },
    {
      "id": 16,
      "link": [
        1,
        2
      ],
      "name": "Cross Room Spring Ball Bounce (Controlled)",
      "entranceCondition": {
        "comeInWithSpringBallBounce": {
          "speedBooster": "any",
          "remoteAndLandingMinTiles": [
            [
              3.5625,
              1
            ]
          ],
          "movementType": "controlled"
        }
      },
      "requires": [
        "canCrossRoomJumpIntoWater"
      ]
    },
    {
      "id": 17,
      "link": [
        1,
        2
      ],
      "name": "Cross Room Tricky Spring Ball Bounce (Uncontrolled)",
      "entranceCondition": {
        "comeInWithSpringBallBounce": {
          "speedBooster": false,
          "remoteAndLandingMinTiles": [
            [
              1.5625,
              1
            ]
          ],
          "movementType": "uncontrolled"
        }
      },
      "requires": [
        "canCrossRoomJumpIntoWater",
        "canTrickyJump",
        "canMomentumConservingMorph"
      ],
      "note": "Unmorph just before hitting the overhang, to conserve momentum to make it on top."
    },
    {
      "id": 18,
      "link": [
        1,
        2
      ],
      "name": "Cross Room Tricky Spring Ball Bounce (Controlled)",
      "entranceCondition": {
        "comeInWithSpringBallBounce": {
          "speedBooster": "any",
          "remoteAndLandingMinTiles": [
            [
              2.5625,
              1
            ]
          ],
          "movementType": "controlled"
        }
      },
      "requires": [
        "canCrossRoomJumpIntoWater",
        "canMomentumConservingMorph"
      ],
      "note": "Unmorph just before hitting the overhang, to conserve momentum to make it on top."
    },
    {
      "id": 19,
      "link": [
        1,
        2
      ],
      "name": "Gravity Shinespark",
      "entranceCondition": {
        "comeInShinecharged": {
          "framesRequired": 4
        }
      },
      "requires": [
        "Gravity",
        {
          "shinespark": {
            "frames": 20,
            "excessFrames": 0
          }
        }
      ],
      "flashSuitChecked": true
    },
    {
      "id": 20,
      "link": [
        1,
        2
      ],
      "name": "Suitless Shinespark",
      "entranceCondition": {
        "comeInShinecharged": {
          "framesRequired": 20
        }
      },
      "requires": [
        "canSuitlessMaridia",
        {
          "shinespark": {
            "frames": 20,
            "excessFrames": 0
          }
        }
      ],
      "flashSuitChecked": true
    },
    {
      "id": 21,
      "link": [
        1,
        2
      ],
      "name": "Underwater Walljumps",
      "requires": [
        "canUnderwaterWalljump"
      ],
      "note": [
        "It can be difficult to land on the ledge when the waterline is low.",
        "It may be necessary to time the walljump attempts by watching the water level, or by stalling with additional walljumps as the water rises."
      ]
    },
    {
      "id": 39,
      "link": [
        1,
        2
      ],
      "name": "Use Flash Suit",
      "requires": [
        {
          "useFlashSuit": {}
        },
        {
          "or": [
            {
              "shinespark": {
                "frames": 17,
                "excessFrames": 3
              }
            },
            {
              "and": [
                "HiJump",
                {
                  "shinespark": {
                    "frames": 7,
                    "excessFrames": 5
                  }
                }
              ]
            }
          ]
        },
        {
          "enemyDamage": {
            "enemy": "Cacatac",
            "hits": 1,
            "type": "spike"
          }
        }
      ],
      "flashSuitChecked": true,
      "devNote": "The spike hit may be avoidable, but it shouldn't matter much."
    },
    {
      "id": 40,
      "link": [
        1,
        2
      ],
      "name": "Cross Room Jump, Use Flash Suit",
      "entranceCondition": {
        "comeInJumping": {
          "speedBooster": "any",
          "minTiles": 1
        }
      },
      "requires": [
        "canCrossRoomJumpIntoWater",
        {
          "useFlashSuit": {}
        },
        {
          "shinespark": {
            "frames": 10,
            "excessFrames": 5
          }
        },
        {
          "enemyDamage": {
            "enemy": "Cacatac",
            "hits": 1,
            "type": "spike"
          }
        }
      ],
      "flashSuitChecked": true,
      "devNote": [
        "The spike hit may be avoidable, but it shouldn't matter much.",
        "The runway could be reduced to 0.4375 tiles with SpeedBooster."
      ]
    },
    {
      "id": 22,
      "link": [
        1,
        2
      ],
      "name": "Grapple Teleport",
      "entranceCondition": {
        "comeInWithGrappleTeleport": {
          "blockPositions": [
            [
              12,
              12
            ],
            [
              12,
              13
            ]
          ]
        }
      },
      "requires": [],
      "bypassesDoorShell": true
    },
    {
      "id": 23,
      "link": [
        1,
        2
      ],
      "name": "Carry Grapple Teleport (Top Position)",
      "entranceCondition": {
        "comeInWithGrappleTeleport": {
          "blockPositions": [
            [
              12,
              12
            ]
          ]
        }
      },
      "requires": [],
      "bypassesDoorShell": true,
      "exitCondition": {
        "leaveWithGrappleTeleport": {
          "blockPositions": [
            [
              12,
              12
            ]
          ]
        }
      }
    },
    {
      "id": 24,
      "link": [
        1,
        2
      ],
      "name": "Carry Grapple Teleport (Bottom Position)",
      "entranceCondition": {
        "comeInWithGrappleTeleport": {
          "blockPositions": [
            [
              12,
              13
            ]
          ]
        }
      },
      "requires": [],
      "bypassesDoorShell": true,
      "exitCondition": {
        "leaveWithGrappleTeleport": {
          "blockPositions": [
            [
              12,
              13
            ]
          ]
        }
      }
    },
    {
      "id": 25,
      "link": [
        2,
        1
      ],
      "name": "Base",
      "requires": []
    },
    {
      "id": 26,
      "link": [
        2,
        1
      ],
      "name": "Come in Shinecharging, Leave With Temporary Blue",
      "entranceCondition": {
        "comeInShinecharging": {
          "length": 0,
          "openEnd": 1
        }
      },
      "requires": [
        "canTrickyJump",
        "canChainTemporaryBlue"
      ],
      "exitCondition": {
        "leaveWithTemporaryBlue": {}
      },
      "unlocksDoors": [
        {
          "types": [
            "ammo"
          ],
          "requires": []
        }
      ]
    },
    {
      "id": 27,
      "link": [
        2,
        1
      ],
      "name": "Grapple Teleport",
      "entranceCondition": {
        "comeInWithGrappleTeleport": {
          "blockPositions": [
            [
              2,
              18
            ],
            [
              2,
              19
            ],
            [
              2,
              28
            ],
            [
              2,
              29
            ]
          ]
        }
      },
      "requires": [],
      "bypassesDoorShell": true
    },
    {
      "id": 28,
      "link": [
        2,
        1
      ],
      "name": "Carry Grapple Teleport (Top Position)",
      "entranceCondition": {
        "comeInWithGrappleTeleport": {
          "blockPositions": [
            [
              2,
              18
            ]
          ]
        }
      },
      "requires": [],
      "bypassesDoorShell": true,
      "exitCondition": {
        "leaveWithGrappleTeleport": {
          "blockPositions": [
            [
              2,
              18
            ]
          ]
        }
      }
    },
    {
      "id": 29,
      "link": [
        2,
        1
      ],
      "name": "Carry Grapple Teleport (Upper Middle Position)",
      "entranceCondition": {
        "comeInWithGrappleTeleport": {
          "blockPositions": [
            [
              2,
              19
            ]
          ]
        }
      },
      "requires": [],
      "bypassesDoorShell": true,
      "exitCondition": {
        "leaveWithGrappleTeleport": {
          "blockPositions": [
            [
              2,
              19
            ]
          ]
        }
      }
    },
    {
      "id": 30,
      "link": [
        2,
        1
      ],
      "name": "Carry Grapple Teleport (Lower Middle Position)",
      "entranceCondition": {
        "comeInWithGrappleTeleport": {
          "blockPositions": [
            [
              2,
              28
            ]
          ]
        }
      },
      "requires": [],
      "bypassesDoorShell": true,
      "exitCondition": {
        "leaveWithGrappleTeleport": {
          "blockPositions": [
            [
              2,
              28
            ]
          ]
        }
      }
    },
    {
      "id": 31,
      "link": [
        2,
        1
      ],
      "name": "Carry Grapple Teleport (Bottom Position)",
      "entranceCondition": {
        "comeInWithGrappleTeleport": {
          "blockPositions": [
            [
              2,
              29
            ]
          ]
        }
      },
      "requires": [],
      "bypassesDoorShell": true,
      "exitCondition": {
        "leaveWithGrappleTeleport": {
          "blockPositions": [
            [
              2,
              29
            ]
          ]
        }
      }
    },
    {
      "id": 32,
      "link": [
        2,
        2
      ],
      "name": "Leave with Runway",
      "requires": [],
      "exitCondition": {
        "leaveWithRunway": {
          "length": 3,
          "openEnd": 1
        }
      }
    },
    {
      "id": 33,
      "link": [
        2,
        2
      ],
      "name": "Leave Spinning",
      "requires": [
        {
          "or": [
            "Gravity",
            "canCarefulJump"
          ]
        }
      ],
      "exitCondition": {
        "leaveSpinning": {
          "remoteRunway": {
            "length": 6,
            "openEnd": 0
          }
        }
      }
    },
    {
      "id": 34,
      "link": [
        2,
        2
      ],
      "name": "Leave With Mockball",
      "requires": [
        {
          "or": [
            "Gravity",
            "canCarefulJump"
          ]
        }
      ],
      "exitCondition": {
        "leaveWithMockball": {
          "remoteRunway": {
            "length": 6,
            "openEnd": 1
          },
          "landingRunway": {
            "length": 3,
            "openEnd": 1
          }
        }
      }
    },
    {
      "id": 35,
      "link": [
        2,
        2
      ],
      "name": "Leave With Spring Ball Bounce",
      "requires": [
        {
          "or": [
            "Gravity",
            "canCarefulJump"
          ]
        }
      ],
      "exitCondition": {
        "leaveWithSpringBallBounce": {
          "remoteRunway": {
            "length": 6,
            "openEnd": 1
          },
          "landingRunway": {
            "length": 3,
            "openEnd": 1
          },
          "movementType": "uncontrolled"
        }
      }
    },
    {
      "id": 36,
      "link": [
        2,
        2
      ],
      "name": "Leave Space Jumping",
      "requires": [
        {
          "or": [
            "Gravity",
            "canCarefulJump"
          ]
        }
      ],
      "exitCondition": {
        "leaveSpaceJumping": {
          "remoteRunway": {
            "length": 6,
            "openEnd": 0
          }
        }
      }
    },
    {
      "id": 37,
      "link": [
        2,
        2
      ],
      "name": "Cacatac Farm",
      "requires": [
        {
          "resetRoom": {
            "nodes": [
              2
            ],
            "mustStayPut": false
          }
        },
        {
          "partialRefill": {
            "type": "Energy",
            "limit": 300
          }
        },
        {
          "partialRefill": {
            "type": "Super",
            "limit": 16
          }
        }
      ]
    },
    {
      "id": 38,
      "link": [
        2,
        2
      ],
      "name": "Crystal Flash",
      "requires": [
        "h_canCrystalFlash"
      ],
      "flashSuitChecked": true
    },
    {
      "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": []
    }
  ],
  "devNote": [
    "FIXME: add 1->2 leaveWithTemporaryBlue strats."
  ],
  "nextStratId": 42,
  "notables": [],
  "nextNotableId": 1
}