Thread The Needle Room

Room ID: 214

Wiki
Difficulty filter

From: 1
Left Door
To: 1
Left Door

Exit condition:

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

A half tile is considered unusable, in order to be able to quickly spin jump forward after gaining the shinecharge.

Requires:

"Gravity"
{
  "canShineCharge": {
    "usedTiles": 15,
    "openEnd": 1
  }
}
"canShinechargeMovementComplex"
{
  "shinespark": {
    "frames": 28,
    "excessFrames": 0
  }
}

Exit condition:

{
  "leaveWithSpark": {
    "position": "top"
  }
}
From: 1
Left Door
To: 1
Left Door

Requires:

"Gravity"

Exit condition:

{
  "leaveWithMockball": {
    "remoteRunway": {
      "length": 8,
      "openEnd": 0
    },
    "landingRunway": {
      "length": 5,
      "openEnd": 1
    }
  }
}

Requires:

"Gravity"

Exit condition:

{
  "leaveWithSpringBallBounce": {
    "remoteRunway": {
      "length": 8,
      "openEnd": 0
    },
    "landingRunway": {
      "length": 5,
      "openEnd": 1
    },
    "movementType": "uncontrolled"
  }
}
From: 1
Left Door
To: 1
Left Door

Requires:

"Gravity"

Exit condition:

{
  "leaveSpaceJumping": {
    "remoteRunway": {
      "length": 8,
      "openEnd": 0
    }
  }
}
From: 1
Left Door
To: 1
Left Door

Requires:

"Gravity"
"SpaceJump"
"canTrickyJump"

Exit condition:

{
  "leaveSpinning": {
    "remoteRunway": {
      "length": 14,
      "openEnd": 1
    }
  }
}

Requires:

"Gravity"
"SpaceJump"
"canTrickyJump"

Exit condition:

{
  "leaveWithMockball": {
    "remoteRunway": {
      "length": 14,
      "openEnd": 1
    },
    "landingRunway": {
      "length": 5,
      "openEnd": 1
    }
  }
}

Requires:

"Gravity"
"SpaceJump"
"canTrickyJump"

Exit condition:

{
  "leaveWithSpringBallBounce": {
    "remoteRunway": {
      "length": 14,
      "openEnd": 1
    },
    "landingRunway": {
      "length": 5,
      "openEnd": 1
    },
    "movementType": "uncontrolled"
  }
}

Requires:

"Gravity"
"canTrickyJump"

Exit condition:

{
  "leaveWithSpringBallBounce": {
    "remoteRunway": {
      "length": 14,
      "openEnd": 1
    },
    "landingRunway": {
      "length": 5,
      "openEnd": 1
    },
    "movementType": "controlled"
  }
}
From: 1
Left Door
To: 1
Left Door

Requires:

"Gravity"
"canPreciseSpaceJump"

Exit condition:

{
  "leaveSpaceJumping": {
    "remoteRunway": {
      "length": 14,
      "openEnd": 1
    }
  }
}
From: 1
Left Door
To: 1
Left Door

A half tile is considered unusable, in order to avoid sliding into the wall and losing blue state.

Requires:

"Gravity"
{
  "canShineCharge": {
    "usedTiles": 15,
    "openEnd": 1
  }
}
"canLongChainTemporaryBlue"

Exit condition:

{
  "leaveWithTemporaryBlue": {}
}
From: 1
Left Door
To: 1
Left Door

Requires:

"SpaceJump"
"canTrickyJump"

Exit condition:

{
  "leaveSpinning": {
    "remoteRunway": {
      "length": 6,
      "openEnd": 2
    }
  }
}

Requires:

"SpaceJump"
"canTrickyJump"

Exit condition:

{
  "leaveWithMockball": {
    "remoteRunway": {
      "length": 6,
      "openEnd": 2
    },
    "landingRunway": {
      "length": 5,
      "openEnd": 1
    }
  }
}

Requires:

"SpaceJump"
"canTrickyJump"

Exit condition:

{
  "leaveWithSpringBallBounce": {
    "remoteRunway": {
      "length": 6,
      "openEnd": 2
    },
    "landingRunway": {
      "length": 5,
      "openEnd": 1
    },
    "movementType": "uncontrolled"
  }
}

Requires:

"canTrickyJump"

Exit condition:

{
  "leaveWithSpringBallBounce": {
    "remoteRunway": {
      "length": 6,
      "openEnd": 2
    },
    "landingRunway": {
      "length": 5,
      "openEnd": 1
    },
    "movementType": "controlled"
  }
}
From: 1
Left Door
To: 1
Left Door

Requires:

"canTrickyJump"

Exit condition:

{
  "leaveSpaceJumping": {
    "remoteRunway": {
      "length": 6,
      "openEnd": 2
    }
  }
}
From: 1
Left Door
To: 1
Left Door

Requires:

{
  "or": [
    "h_hasBeamUpgrade",
    "canDodgeWhileShooting",
    "Grapple",
    "ScrewAttack"
  ]
}
{
  "resetRoom": {
    "nodes": [
      1
    ],
    "mustStayPut": false
  }
}
{
  "refill": [
    "Energy",
    "Missile"
  ]
}
From: 1
Left Door
To: 1
Left Door

Requires:

{
  "or": [
    "Wave",
    "Spazer",
    "Plasma",
    "Grapple",
    "ScrewAttack"
  ]
}
{
  "resetRoom": {
    "nodes": [
      1
    ],
    "mustStayPut": false
  }
}
{
  "refill": [
    "Energy",
    "Missile",
    "Super",
    "PowerBomb"
  ]
}
From: 1
Left Door
To: 1
Left Door

Requires:

"canBePatient"
{
  "or": [
    "canDodgeWhileShooting",
    "Charge",
    "Ice"
  ]
}
{
  "resetRoom": {
    "nodes": [
      1
    ],
    "mustStayPut": false
  }
}
{
  "refill": [
    "Super",
    "PowerBomb"
  ]
}
From: 1
Left Door
To: 1
Left Door

Requires:

"h_canCrystalFlash"
From: 1
Left Door
To: 1
Left Door

Exit condition:

{
  "leaveWithGModeSetup": {}
}
From: 1
Left Door
To: 2
Right Door

Requires:

{
  "or": [
    "h_hasBeamUpgrade",
    "canDodgeWhileShooting",
    "Grapple",
    "ScrewAttack",
    "canBePatient",
    {
      "resourceCapacity": [
        {
          "type": "Missile",
          "count": 1
        }
      ]
    },
    "h_canUsePowerBombs"
  ]
}
From: 1
Left Door
To: 2
Right Door

Safely kill the first Choot, then roll through the bottom of the room after passing the two Puyos. Expects one to two Puyo hits while crossing the room.

Requires:

"h_canNavigateUnderwater"
"Morph"
{
  "enemyDamage": {
    "enemy": "Puyo",
    "type": "contact",
    "hits": 1
  }
}
{
  "or": [
    "canCarefulJump",
    {
      "enemyDamage": {
        "enemy": "Puyo",
        "type": "contact",
        "hits": 1
      }
    }
  ]
}
From: 1
Left Door
To: 2
Right Door

Dodge the Puyos and kill the Choots. Expects two to three Puyo hits.

Requires:

{
  "enemyDamage": {
    "enemy": "Puyo",
    "type": "contact",
    "hits": 2
  }
}
{
  "or": [
    "canCarefulJump",
    {
      "enemyDamage": {
        "enemy": "Puyo",
        "type": "contact",
        "hits": 1
      }
    }
  ]
}
From: 1
Left Door
To: 2
Right Door

Use Space jumps or Spring Ball bounces to carry blue speed across the room. Then chain temporary blue into the next room. It helps to enter with a relatively low amount of run speed, using a 4-tap.

Entrance condition:

{
  "comeInGettingBlueSpeed": {
    "length": 4,
    "openEnd": 1,
    "minExtraRunSpeed": "$1.2",
    "maxExtraRunSpeed": "$1.F"
  }
}

Requires:

{
  "notable": "Leave With Temporary Blue"
}
"canChainTemporaryBlue"
{
  "or": [
    "canTrickySpringBallBounce",
    "canPreciseSpaceJump"
  ]
}

Exit condition:

{
  "leaveWithTemporaryBlue": {}
}

Unlocks doors:

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

Entrance condition:

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

Bypasses door shell: true

From: 1
Left Door
To: 2
Right Door

Entrance condition:

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

Exit condition:

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

Bypasses door shell: true

From: 1
Left Door
To: 2
Right Door

Entrance condition:

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

Exit condition:

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

Bypasses door shell: true

From: 2
Right Door
To: 1
Left Door

Requires:

{
  "or": [
    "h_hasBeamUpgrade",
    "canDodgeWhileShooting",
    "Grapple",
    "ScrewAttack",
    "canBePatient",
    {
      "resourceCapacity": [
        {
          "type": "Missile",
          "count": 1
        }
      ]
    },
    "h_canUsePowerBombs"
  ]
}
From: 2
Right Door
To: 1
Left Door

Safely kill the first Choot, then roll through the bottom of the room after passing the two Puyos. Expects one to two Puyo hits while crossing the room.

Requires:

"h_canNavigateUnderwater"
"Morph"
{
  "enemyDamage": {
    "enemy": "Puyo",
    "type": "contact",
    "hits": 1
  }
}
{
  "or": [
    "canCarefulJump",
    {
      "enemyDamage": {
        "enemy": "Puyo",
        "type": "contact",
        "hits": 1
      }
    }
  ]
}
From: 2
Right Door
To: 1
Left Door

Dodge the Puyos and kill the Choots. Expects two to three Puyo hits.

Requires:

{
  "enemyDamage": {
    "enemy": "Puyo",
    "type": "contact",
    "hits": 2
  }
}
{
  "or": [
    "canCarefulJump",
    {
      "enemyDamage": {
        "enemy": "Puyo",
        "type": "contact",
        "hits": 1
      }
    }
  ]
}
From: 2
Right Door
To: 1
Left Door

Use Space jumps or Spring Ball bounces to carry blue speed across the room. Then chain temporary blue into the next room. It helps to enter with a relatively low amount of run speed, using a 4-tap.

Entrance condition:

{
  "comeInGettingBlueSpeed": {
    "length": 4,
    "openEnd": 1,
    "minExtraRunSpeed": "$1.4",
    "maxExtraRunSpeed": "$1.F"
  }
}

Requires:

{
  "notable": "Leave With Temporary Blue"
}
"canChainTemporaryBlue"
{
  "or": [
    "canTrickySpringBallBounce",
    "canPreciseSpaceJump"
  ]
}

Exit condition:

{
  "leaveWithTemporaryBlue": {}
}

Unlocks doors:

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

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

From: 2
Right Door
To: 2
Right Door

Exit condition:

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

A half tile is considered unusable, in order to be able to quickly spin jump forward after gaining the shinecharge.

Requires:

"Gravity"
{
  "canShineCharge": {
    "usedTiles": 15,
    "openEnd": 1
  }
}

Exit condition:

{
  "leaveShinecharged": {
    "framesRemaining": 90
  }
}
From: 2
Right Door
To: 2
Right Door

Requires:

"Gravity"
"SpaceJump"

Exit condition:

{
  "leaveSpinning": {
    "remoteRunway": {
      "length": 14,
      "openEnd": 1
    },
    "maxExtraRunSpeed": "$3.1"
  }
}
From: 2
Right Door
To: 2
Right Door

Requires:

"Gravity"

Exit condition:

{
  "leaveWithMockball": {
    "remoteRunway": {
      "length": 14,
      "openEnd": 1
    },
    "landingRunway": {
      "length": 5,
      "openEnd": 1
    }
  }
}
From: 2
Right Door
To: 2
Right Door

Requires:

"Gravity"

Exit condition:

{
  "leaveWithSpringBallBounce": {
    "remoteRunway": {
      "length": 14,
      "openEnd": 1
    },
    "landingRunway": {
      "length": 5,
      "openEnd": 1
    },
    "movementType": "uncontrolled"
  }
}
From: 2
Right Door
To: 2
Right Door

Requires:

"Gravity"

Exit condition:

{
  "leaveSpaceJumping": {
    "remoteRunway": {
      "length": 14,
      "openEnd": 1
    }
  }
}
From: 2
Right Door
To: 2
Right Door

Requires:

"Gravity"
{
  "canShineCharge": {
    "usedTiles": 15,
    "openEnd": 1
  }
}
"canChainTemporaryBlue"

Exit condition:

{
  "leaveWithTemporaryBlue": {}
}
From: 2
Right Door
To: 2
Right Door

Requires:

"canTrickyJump"
"SpaceJump"

Exit condition:

{
  "leaveSpinning": {
    "remoteRunway": {
      "length": 6,
      "openEnd": 2
    }
  }
}

Requires:

"canTrickyJump"
"SpaceJump"

Exit condition:

{
  "leaveWithSpringBallBounce": {
    "remoteRunway": {
      "length": 6,
      "openEnd": 2
    },
    "landingRunway": {
      "length": 5,
      "openEnd": 1
    },
    "movementType": "uncontrolled"
  }
}

Requires:

"canTrickyJump"

Exit condition:

{
  "leaveWithSpringBallBounce": {
    "remoteRunway": {
      "length": 6,
      "openEnd": 2
    },
    "landingRunway": {
      "length": 5,
      "openEnd": 1
    },
    "movementType": "controlled"
  }
}
From: 2
Right Door
To: 2
Right Door

Requires:

"canPreciseSpaceJump"

Exit condition:

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

Requires:

{
  "or": [
    "h_hasBeamUpgrade",
    "canDodgeWhileShooting",
    "Grapple",
    "ScrewAttack"
  ]
}
{
  "resetRoom": {
    "nodes": [
      2
    ],
    "mustStayPut": false
  }
}
{
  "refill": [
    "Energy",
    "Missile"
  ]
}
From: 2
Right Door
To: 2
Right Door

Requires:

{
  "or": [
    "Wave",
    "Spazer",
    "Plasma",
    "Grapple",
    "ScrewAttack"
  ]
}
{
  "resetRoom": {
    "nodes": [
      2
    ],
    "mustStayPut": false
  }
}
{
  "refill": [
    "Energy",
    "Missile",
    "Super",
    "PowerBomb"
  ]
}
From: 2
Right Door
To: 2
Right Door

Requires:

"canBePatient"
{
  "or": [
    "canDodgeWhileShooting",
    "Charge",
    "Ice"
  ]
}
{
  "resetRoom": {
    "nodes": [
      2
    ],
    "mustStayPut": false
  }
}
{
  "refill": [
    "Super",
    "PowerBomb"
  ]
}
From: 2
Right Door
To: 2
Right Door

Requires:

"h_canCrystalFlash"
From: 2
Right Door
To: 2
Right Door

Exit condition:

{
  "leaveWithGModeSetup": {}
}
From: 2
Right Door
To: 2
Right Door

Requires:

{
  "enemyDamage": {
    "enemy": "Puyo",
    "type": "contact",
    "hits": 1
  }
}

{
  "$schema": "../../../schema/m3-room.schema.json",
  "id": 214,
  "name": "Thread The Needle Room",
  "area": "Maridia",
  "subarea": "Inner",
  "subsubarea": "Yellow",
  "playable": true,
  "roomAddress": "0x7D2D9",
  "roomEnvironments": [
    {
      "heated": false
    }
  ],
  "nodes": [
    {
      "id": 1,
      "name": "Left Door",
      "nodeType": "door",
      "nodeSubType": "blue",
      "nodeAddress": "0x001a564",
      "doorOrientation": "left",
      "doorEnvironments": [
        {
          "physics": "air"
        }
      ]
    },
    {
      "id": 2,
      "name": "Right Door",
      "nodeType": "door",
      "nodeSubType": "blue",
      "nodeAddress": "0x001a570",
      "doorOrientation": "right",
      "doorEnvironments": [
        {
          "physics": "air"
        }
      ]
    }
  ],
  "enemies": [
    {
      "id": "e1",
      "groupName": "Thread The Needle Room Left Choots",
      "enemyName": "Choot",
      "quantity": 5,
      "homeNodes": [
        1
      ]
    },
    {
      "id": "e2",
      "groupName": "Thread The Needle Room Left Puyos",
      "enemyName": "Puyo",
      "quantity": 5,
      "homeNodes": [
        1
      ]
    },
    {
      "id": "e3",
      "groupName": "Thread The Needle Room Right Choots",
      "enemyName": "Choot",
      "quantity": 3,
      "homeNodes": [
        2
      ]
    },
    {
      "id": "e4",
      "groupName": "Thread The Needle Room Right Puyos",
      "enemyName": "Puyo",
      "quantity": 2,
      "homeNodes": [
        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": 5,
          "openEnd": 1
        }
      }
    },
    {
      "id": 2,
      "link": [
        1,
        1
      ],
      "name": "Leave With Spark",
      "requires": [
        "Gravity",
        {
          "canShineCharge": {
            "usedTiles": 15,
            "openEnd": 1
          }
        },
        "canShinechargeMovementComplex",
        {
          "shinespark": {
            "frames": 28,
            "excessFrames": 0
          }
        }
      ],
      "exitCondition": {
        "leaveWithSpark": {
          "position": "top"
        }
      },
      "note": [
        "A half tile is considered unusable, in order to be able to quickly spin jump forward after gaining the shinecharge."
      ],
      "devNote": [
        "FIXME: If Morph or X-Ray is available, an extra half tile of runway could be gained by standing up inside the last tile of the platform."
      ]
    },
    {
      "id": 3,
      "link": [
        1,
        1
      ],
      "name": "Leave With Mockball (Nearby Water Runway)",
      "requires": [
        "Gravity"
      ],
      "exitCondition": {
        "leaveWithMockball": {
          "remoteRunway": {
            "length": 8,
            "openEnd": 0
          },
          "landingRunway": {
            "length": 5,
            "openEnd": 1
          }
        }
      },
      "devNote": [
        "FIXME: An extra half tile of runway could be gained by standing up inside the last tile of the platform."
      ]
    },
    {
      "id": 4,
      "link": [
        1,
        1
      ],
      "name": "Leave With Spring Ball Bounce (Nearby Water Runway)",
      "requires": [
        "Gravity"
      ],
      "exitCondition": {
        "leaveWithSpringBallBounce": {
          "remoteRunway": {
            "length": 8,
            "openEnd": 0
          },
          "landingRunway": {
            "length": 5,
            "openEnd": 1
          },
          "movementType": "uncontrolled"
        }
      },
      "devNote": [
        "FIXME: An extra half tile of runway could be gained by standing up inside the last tile of the platform."
      ]
    },
    {
      "id": 5,
      "link": [
        1,
        1
      ],
      "name": "Leave Space Jumping (Nearby Water Runway)",
      "requires": [
        "Gravity"
      ],
      "exitCondition": {
        "leaveSpaceJumping": {
          "remoteRunway": {
            "length": 8,
            "openEnd": 0
          }
        }
      },
      "devNote": [
        "FIXME: If Morph or X-Ray is available, an extra half tile of runway could be gained by standing up inside the last tile of the platform."
      ]
    },
    {
      "id": 6,
      "link": [
        1,
        1
      ],
      "name": "Leave Spinning (Far Water Runway, Space Jump)",
      "requires": [
        "Gravity",
        "SpaceJump",
        "canTrickyJump"
      ],
      "exitCondition": {
        "leaveSpinning": {
          "remoteRunway": {
            "length": 14,
            "openEnd": 1
          }
        }
      },
      "devNote": [
        "FIXME: If Morph or X-Ray is available, an extra half tile of runway could be gained by standing up inside the last tile of the platform."
      ]
    },
    {
      "id": 7,
      "link": [
        1,
        1
      ],
      "name": "Leave With Mockball (Far Water Runway, Space Jump)",
      "requires": [
        "Gravity",
        "SpaceJump",
        "canTrickyJump"
      ],
      "exitCondition": {
        "leaveWithMockball": {
          "remoteRunway": {
            "length": 14,
            "openEnd": 1
          },
          "landingRunway": {
            "length": 5,
            "openEnd": 1
          }
        }
      },
      "devNote": [
        "FIXME: An extra half tile of runway could be gained by standing up inside the last tile of the platform."
      ]
    },
    {
      "id": 8,
      "link": [
        1,
        1
      ],
      "name": "Leave With Spring Ball Bounce (Far Water Runway, Space Jump)",
      "requires": [
        "Gravity",
        "SpaceJump",
        "canTrickyJump"
      ],
      "exitCondition": {
        "leaveWithSpringBallBounce": {
          "remoteRunway": {
            "length": 14,
            "openEnd": 1
          },
          "landingRunway": {
            "length": 5,
            "openEnd": 1
          },
          "movementType": "uncontrolled"
        }
      },
      "devNote": [
        "FIXME: An extra half tile of runway could be gained by standing up inside the last tile of the platform."
      ]
    },
    {
      "id": 9,
      "link": [
        1,
        1
      ],
      "name": "Leave With Controlled Spring Ball Bounce (Far Water Runway)",
      "requires": [
        "Gravity",
        "canTrickyJump"
      ],
      "exitCondition": {
        "leaveWithSpringBallBounce": {
          "remoteRunway": {
            "length": 14,
            "openEnd": 1
          },
          "landingRunway": {
            "length": 5,
            "openEnd": 1
          },
          "movementType": "controlled"
        }
      },
      "devNote": [
        "FIXME: An extra half tile of runway could be gained by standing up inside the last tile of the platform."
      ]
    },
    {
      "id": 10,
      "link": [
        1,
        1
      ],
      "name": "Leave Space Jumping (Far Water Runway)",
      "requires": [
        "Gravity",
        "canPreciseSpaceJump"
      ],
      "exitCondition": {
        "leaveSpaceJumping": {
          "remoteRunway": {
            "length": 14,
            "openEnd": 1
          }
        }
      },
      "devNote": [
        "FIXME: If Morph or X-Ray is available, an extra half tile of runway could be gained by standing up inside the last tile of the platform."
      ]
    },
    {
      "id": 11,
      "link": [
        1,
        1
      ],
      "name": "Leave With Temporary Blue",
      "requires": [
        "Gravity",
        {
          "canShineCharge": {
            "usedTiles": 15,
            "openEnd": 1
          }
        },
        "canLongChainTemporaryBlue"
      ],
      "exitCondition": {
        "leaveWithTemporaryBlue": {}
      },
      "note": [
        "A half tile is considered unusable, in order to avoid sliding into the wall and losing blue state."
      ],
      "devNote": [
        "FIXME: An extra half tile of runway could be gained by standing up inside the last tile of the platform."
      ]
    },
    {
      "id": 12,
      "link": [
        1,
        1
      ],
      "name": "Leave Spinning (Far Platform Runway, Space Jump)",
      "requires": [
        "SpaceJump",
        "canTrickyJump"
      ],
      "exitCondition": {
        "leaveSpinning": {
          "remoteRunway": {
            "length": 6,
            "openEnd": 2
          }
        }
      }
    },
    {
      "id": 13,
      "link": [
        1,
        1
      ],
      "name": "Leave With Mockball (Far Platform Runway, Space Jump)",
      "requires": [
        "SpaceJump",
        "canTrickyJump"
      ],
      "exitCondition": {
        "leaveWithMockball": {
          "remoteRunway": {
            "length": 6,
            "openEnd": 2
          },
          "landingRunway": {
            "length": 5,
            "openEnd": 1
          }
        }
      }
    },
    {
      "id": 14,
      "link": [
        1,
        1
      ],
      "name": "Leave With Spring Ball Bounce (Far Platform Runway, Space Jump)",
      "requires": [
        "SpaceJump",
        "canTrickyJump"
      ],
      "exitCondition": {
        "leaveWithSpringBallBounce": {
          "remoteRunway": {
            "length": 6,
            "openEnd": 2
          },
          "landingRunway": {
            "length": 5,
            "openEnd": 1
          },
          "movementType": "uncontrolled"
        }
      }
    },
    {
      "id": 15,
      "link": [
        1,
        1
      ],
      "name": "Leave With Controlled Spring Ball Bounce (Far Platform Runway)",
      "requires": [
        "canTrickyJump"
      ],
      "exitCondition": {
        "leaveWithSpringBallBounce": {
          "remoteRunway": {
            "length": 6,
            "openEnd": 2
          },
          "landingRunway": {
            "length": 5,
            "openEnd": 1
          },
          "movementType": "controlled"
        }
      }
    },
    {
      "id": 16,
      "link": [
        1,
        1
      ],
      "name": "Leave Space Jumping (Far Platform Runway)",
      "requires": [
        "canTrickyJump"
      ],
      "exitCondition": {
        "leaveSpaceJumping": {
          "remoteRunway": {
            "length": 6,
            "openEnd": 2
          }
        }
      }
    },
    {
      "id": 17,
      "link": [
        1,
        1
      ],
      "name": "Basic Choot and Puyo Farm",
      "requires": [
        {
          "or": [
            "h_hasBeamUpgrade",
            "canDodgeWhileShooting",
            "Grapple",
            "ScrewAttack"
          ]
        },
        {
          "resetRoom": {
            "nodes": [
              1
            ],
            "mustStayPut": false
          }
        },
        {
          "refill": [
            "Energy",
            "Missile"
          ]
        }
      ]
    },
    {
      "id": 18,
      "link": [
        1,
        1
      ],
      "name": "Choot and Puyo Farm",
      "requires": [
        {
          "or": [
            "Wave",
            "Spazer",
            "Plasma",
            "Grapple",
            "ScrewAttack"
          ]
        },
        {
          "resetRoom": {
            "nodes": [
              1
            ],
            "mustStayPut": false
          }
        },
        {
          "refill": [
            "Energy",
            "Missile",
            "Super",
            "PowerBomb"
          ]
        }
      ]
    },
    {
      "id": 19,
      "link": [
        1,
        1
      ],
      "name": "Patient Choot and Puyo Farm",
      "requires": [
        "canBePatient",
        {
          "or": [
            "canDodgeWhileShooting",
            "Charge",
            "Ice"
          ]
        },
        {
          "resetRoom": {
            "nodes": [
              1
            ],
            "mustStayPut": false
          }
        },
        {
          "refill": [
            "Super",
            "PowerBomb"
          ]
        }
      ]
    },
    {
      "id": 20,
      "link": [
        1,
        1
      ],
      "name": "Crystal Flash",
      "requires": [
        "h_canCrystalFlash"
      ],
      "flashSuitChecked": true
    },
    {
      "id": 21,
      "link": [
        1,
        1
      ],
      "name": "G-Mode Setup - Get Hit By Puyo",
      "requires": [],
      "exitCondition": {
        "leaveWithGModeSetup": {}
      },
      "flashSuitChecked": true
    },
    {
      "id": 22,
      "link": [
        1,
        2
      ],
      "name": "Kill the Enemies",
      "requires": [
        {
          "or": [
            "h_hasBeamUpgrade",
            "canDodgeWhileShooting",
            "Grapple",
            "ScrewAttack",
            "canBePatient",
            {
              "resourceCapacity": [
                {
                  "type": "Missile",
                  "count": 1
                }
              ]
            },
            "h_canUsePowerBombs"
          ]
        }
      ]
    },
    {
      "id": 23,
      "link": [
        1,
        2
      ],
      "name": "Morph Dodge",
      "requires": [
        "h_canNavigateUnderwater",
        "Morph",
        {
          "enemyDamage": {
            "enemy": "Puyo",
            "type": "contact",
            "hits": 1
          }
        },
        {
          "or": [
            "canCarefulJump",
            {
              "enemyDamage": {
                "enemy": "Puyo",
                "type": "contact",
                "hits": 1
              }
            }
          ]
        }
      ],
      "note": [
        "Safely kill the first Choot, then roll through the bottom of the room after passing the two Puyos.",
        "Expects one to two Puyo hits while crossing the room."
      ]
    },
    {
      "id": 24,
      "link": [
        1,
        2
      ],
      "name": "Lenient Dodge",
      "requires": [
        {
          "enemyDamage": {
            "enemy": "Puyo",
            "type": "contact",
            "hits": 2
          }
        },
        {
          "or": [
            "canCarefulJump",
            {
              "enemyDamage": {
                "enemy": "Puyo",
                "type": "contact",
                "hits": 1
              }
            }
          ]
        }
      ],
      "note": "Dodge the Puyos and kill the Choots. Expects two to three Puyo hits."
    },
    {
      "id": 25,
      "link": [
        1,
        2
      ],
      "name": "Leave With Temporary Blue (Left-to-Right)",
      "entranceCondition": {
        "comeInGettingBlueSpeed": {
          "length": 4,
          "openEnd": 1,
          "minExtraRunSpeed": "$1.2",
          "maxExtraRunSpeed": "$1.F"
        }
      },
      "requires": [
        {
          "notable": "Leave With Temporary Blue"
        },
        "canChainTemporaryBlue",
        {
          "or": [
            "canTrickySpringBallBounce",
            "canPreciseSpaceJump"
          ]
        }
      ],
      "exitCondition": {
        "leaveWithTemporaryBlue": {}
      },
      "unlocksDoors": [
        {
          "types": [
            "ammo"
          ],
          "requires": []
        }
      ],
      "note": [
        "Use Space jumps or Spring Ball bounces to carry blue speed across the room.",
        "Then chain temporary blue into the next room.",
        "It helps to enter with a relatively low amount of run speed, using a 4-tap."
      ],
      "devNote": "Higher or lower amounts of run speed can work in some cases."
    },
    {
      "id": 26,
      "link": [
        1,
        2
      ],
      "name": "Grapple Teleport Door Lock Skip",
      "entranceCondition": {
        "comeInWithGrappleTeleport": {
          "blockPositions": [
            [
              108,
              12
            ],
            [
              108,
              13
            ]
          ]
        }
      },
      "requires": [],
      "bypassesDoorShell": true
    },
    {
      "id": 27,
      "link": [
        1,
        2
      ],
      "name": "Carry Grapple Teleport (Top Position)",
      "entranceCondition": {
        "comeInWithGrappleTeleport": {
          "blockPositions": [
            [
              108,
              12
            ]
          ]
        }
      },
      "requires": [],
      "bypassesDoorShell": true,
      "exitCondition": {
        "leaveWithGrappleTeleport": {
          "blockPositions": [
            [
              108,
              12
            ]
          ]
        }
      }
    },
    {
      "id": 28,
      "link": [
        1,
        2
      ],
      "name": "Carry Grapple Teleport (Bottom Position)",
      "entranceCondition": {
        "comeInWithGrappleTeleport": {
          "blockPositions": [
            [
              108,
              13
            ]
          ]
        }
      },
      "requires": [],
      "bypassesDoorShell": true,
      "exitCondition": {
        "leaveWithGrappleTeleport": {
          "blockPositions": [
            [
              108,
              13
            ]
          ]
        }
      }
    },
    {
      "id": 29,
      "link": [
        2,
        1
      ],
      "name": "Kill the Enemies",
      "requires": [
        {
          "or": [
            "h_hasBeamUpgrade",
            "canDodgeWhileShooting",
            "Grapple",
            "ScrewAttack",
            "canBePatient",
            {
              "resourceCapacity": [
                {
                  "type": "Missile",
                  "count": 1
                }
              ]
            },
            "h_canUsePowerBombs"
          ]
        }
      ]
    },
    {
      "id": 30,
      "link": [
        2,
        1
      ],
      "name": "Morph Dodge",
      "requires": [
        "h_canNavigateUnderwater",
        "Morph",
        {
          "enemyDamage": {
            "enemy": "Puyo",
            "type": "contact",
            "hits": 1
          }
        },
        {
          "or": [
            "canCarefulJump",
            {
              "enemyDamage": {
                "enemy": "Puyo",
                "type": "contact",
                "hits": 1
              }
            }
          ]
        }
      ],
      "note": [
        "Safely kill the first Choot, then roll through the bottom of the room after passing the two Puyos.",
        "Expects one to two Puyo hits while crossing the room."
      ]
    },
    {
      "id": 31,
      "link": [
        2,
        1
      ],
      "name": "Lenient Dodge",
      "requires": [
        {
          "enemyDamage": {
            "enemy": "Puyo",
            "type": "contact",
            "hits": 2
          }
        },
        {
          "or": [
            "canCarefulJump",
            {
              "enemyDamage": {
                "enemy": "Puyo",
                "type": "contact",
                "hits": 1
              }
            }
          ]
        }
      ],
      "note": "Dodge the Puyos and kill the Choots. Expects two to three Puyo hits."
    },
    {
      "id": 32,
      "link": [
        2,
        1
      ],
      "name": "Leave With Temporary Blue (Right to Left)",
      "entranceCondition": {
        "comeInGettingBlueSpeed": {
          "length": 4,
          "openEnd": 1,
          "minExtraRunSpeed": "$1.4",
          "maxExtraRunSpeed": "$1.F"
        }
      },
      "requires": [
        {
          "notable": "Leave With Temporary Blue"
        },
        "canChainTemporaryBlue",
        {
          "or": [
            "canTrickySpringBallBounce",
            "canPreciseSpaceJump"
          ]
        }
      ],
      "exitCondition": {
        "leaveWithTemporaryBlue": {}
      },
      "unlocksDoors": [
        {
          "types": [
            "ammo"
          ],
          "requires": []
        }
      ],
      "note": [
        "Use Space jumps or Spring Ball bounces to carry blue speed across the room.",
        "Then chain temporary blue into the next room.",
        "It helps to enter with a relatively low amount of run speed, using a 4-tap."
      ],
      "devNote": "Higher or lower amounts of run speed can work in some cases."
    },
    {
      "id": 33,
      "link": [
        2,
        1
      ],
      "name": "Grapple Teleport Door Lock Skip",
      "entranceCondition": {
        "comeInWithGrappleTeleport": {
          "blockPositions": [
            [
              3,
              12
            ],
            [
              3,
              13
            ]
          ]
        }
      },
      "requires": [],
      "bypassesDoorShell": true
    },
    {
      "id": 34,
      "link": [
        2,
        1
      ],
      "name": "Carry Grapple Teleport (Top Position)",
      "entranceCondition": {
        "comeInWithGrappleTeleport": {
          "blockPositions": [
            [
              3,
              12
            ]
          ]
        }
      },
      "requires": [],
      "bypassesDoorShell": true,
      "exitCondition": {
        "leaveWithGrappleTeleport": {
          "blockPositions": [
            [
              3,
              12
            ]
          ]
        }
      }
    },
    {
      "id": 35,
      "link": [
        2,
        1
      ],
      "name": "Carry Grapple Teleport (Bottom Position)",
      "entranceCondition": {
        "comeInWithGrappleTeleport": {
          "blockPositions": [
            [
              3,
              13
            ]
          ]
        }
      },
      "requires": [],
      "bypassesDoorShell": true,
      "exitCondition": {
        "leaveWithGrappleTeleport": {
          "blockPositions": [
            [
              3,
              13
            ]
          ]
        }
      }
    },
    {
      "id": 36,
      "link": [
        2,
        2
      ],
      "name": "Leave with Runway",
      "requires": [],
      "exitCondition": {
        "leaveWithRunway": {
          "length": 5,
          "openEnd": 1
        }
      }
    },
    {
      "id": 37,
      "link": [
        2,
        2
      ],
      "name": "Leave Shinecharged",
      "requires": [
        "Gravity",
        {
          "canShineCharge": {
            "usedTiles": 15,
            "openEnd": 1
          }
        }
      ],
      "exitCondition": {
        "leaveShinecharged": {
          "framesRemaining": 90
        }
      },
      "note": [
        "A half tile is considered unusable, in order to be able to quickly spin jump forward after gaining the shinecharge."
      ],
      "devNote": [
        "FIXME: If Morph or X-Ray is available, an extra half tile of runway could be gained by standing up inside the last tile of the platform."
      ]
    },
    {
      "id": 38,
      "link": [
        2,
        2
      ],
      "name": "Leave Spinning (Water Runway, Space Jump)",
      "requires": [
        "Gravity",
        "SpaceJump"
      ],
      "exitCondition": {
        "leaveSpinning": {
          "remoteRunway": {
            "length": 14,
            "openEnd": 1
          },
          "maxExtraRunSpeed": "$3.1"
        }
      },
      "devNote": [
        "FIXME: If Morph or X-Ray is available, an extra half tile of runway could be gained by standing up inside the last tile of the platform."
      ]
    },
    {
      "id": 39,
      "link": [
        2,
        2
      ],
      "name": "Leave With Mockball (Water Runway)",
      "requires": [
        "Gravity"
      ],
      "exitCondition": {
        "leaveWithMockball": {
          "remoteRunway": {
            "length": 14,
            "openEnd": 1
          },
          "landingRunway": {
            "length": 5,
            "openEnd": 1
          }
        }
      },
      "devNote": [
        "FIXME: If Morph or X-Ray is available, an extra half tile of runway could be gained by standing up inside the last tile of the platform."
      ]
    },
    {
      "id": 40,
      "link": [
        2,
        2
      ],
      "name": "Leave With Spring Ball Bounce (Water Runway)",
      "requires": [
        "Gravity"
      ],
      "exitCondition": {
        "leaveWithSpringBallBounce": {
          "remoteRunway": {
            "length": 14,
            "openEnd": 1
          },
          "landingRunway": {
            "length": 5,
            "openEnd": 1
          },
          "movementType": "uncontrolled"
        }
      },
      "devNote": [
        "FIXME: If Morph or X-Ray is available, an extra half tile of runway could be gained by standing up inside the last tile of the platform."
      ]
    },
    {
      "id": 41,
      "link": [
        2,
        2
      ],
      "name": "Leave Space Jumping (Water Runway)",
      "requires": [
        "Gravity"
      ],
      "exitCondition": {
        "leaveSpaceJumping": {
          "remoteRunway": {
            "length": 14,
            "openEnd": 1
          }
        }
      },
      "devNote": [
        "FIXME: If Morph or X-Ray is available, an extra half tile of runway could be gained by standing up inside the last tile of the platform."
      ]
    },
    {
      "id": 42,
      "link": [
        2,
        2
      ],
      "name": "Leave With Temporary Blue",
      "requires": [
        "Gravity",
        {
          "canShineCharge": {
            "usedTiles": 15,
            "openEnd": 1
          }
        },
        "canChainTemporaryBlue"
      ],
      "exitCondition": {
        "leaveWithTemporaryBlue": {}
      },
      "devNote": [
        "FIXME: If Morph or X-Ray is available, an extra half tile of runway could be gained by standing up inside the last tile of the platform."
      ]
    },
    {
      "id": 43,
      "link": [
        2,
        2
      ],
      "name": "Leave Spinning (Far Platform Runway, Space Jump)",
      "requires": [
        "canTrickyJump",
        "SpaceJump"
      ],
      "exitCondition": {
        "leaveSpinning": {
          "remoteRunway": {
            "length": 6,
            "openEnd": 2
          }
        }
      }
    },
    {
      "id": 44,
      "link": [
        2,
        2
      ],
      "name": "Leave With Spring Ball Bounce (Far Platform Runway, Space Jump)",
      "requires": [
        "canTrickyJump",
        "SpaceJump"
      ],
      "exitCondition": {
        "leaveWithSpringBallBounce": {
          "remoteRunway": {
            "length": 6,
            "openEnd": 2
          },
          "landingRunway": {
            "length": 5,
            "openEnd": 1
          },
          "movementType": "uncontrolled"
        }
      }
    },
    {
      "id": 45,
      "link": [
        2,
        2
      ],
      "name": "Leave With Controlled Spring Ball Bounce (Far Platform Runway)",
      "requires": [
        "canTrickyJump"
      ],
      "exitCondition": {
        "leaveWithSpringBallBounce": {
          "remoteRunway": {
            "length": 6,
            "openEnd": 2
          },
          "landingRunway": {
            "length": 5,
            "openEnd": 1
          },
          "movementType": "controlled"
        }
      }
    },
    {
      "id": 46,
      "link": [
        2,
        2
      ],
      "name": "Leave Space Jumping (Far Platform Runway)",
      "requires": [
        "canPreciseSpaceJump"
      ],
      "exitCondition": {
        "leaveSpaceJumping": {
          "remoteRunway": {
            "length": 6,
            "openEnd": 2
          }
        }
      }
    },
    {
      "id": 47,
      "link": [
        2,
        2
      ],
      "name": "Basic Choot and Puyo Farm",
      "requires": [
        {
          "or": [
            "h_hasBeamUpgrade",
            "canDodgeWhileShooting",
            "Grapple",
            "ScrewAttack"
          ]
        },
        {
          "resetRoom": {
            "nodes": [
              2
            ],
            "mustStayPut": false
          }
        },
        {
          "refill": [
            "Energy",
            "Missile"
          ]
        }
      ]
    },
    {
      "id": 48,
      "link": [
        2,
        2
      ],
      "name": "Choot and Puyo Farm",
      "requires": [
        {
          "or": [
            "Wave",
            "Spazer",
            "Plasma",
            "Grapple",
            "ScrewAttack"
          ]
        },
        {
          "resetRoom": {
            "nodes": [
              2
            ],
            "mustStayPut": false
          }
        },
        {
          "refill": [
            "Energy",
            "Missile",
            "Super",
            "PowerBomb"
          ]
        }
      ]
    },
    {
      "id": 49,
      "link": [
        2,
        2
      ],
      "name": "Patient Choot and Puyo Farm",
      "requires": [
        "canBePatient",
        {
          "or": [
            "canDodgeWhileShooting",
            "Charge",
            "Ice"
          ]
        },
        {
          "resetRoom": {
            "nodes": [
              2
            ],
            "mustStayPut": false
          }
        },
        {
          "refill": [
            "Super",
            "PowerBomb"
          ]
        }
      ]
    },
    {
      "id": 50,
      "link": [
        2,
        2
      ],
      "name": "Crystal Flash",
      "requires": [
        "h_canCrystalFlash"
      ],
      "flashSuitChecked": true
    },
    {
      "id": 51,
      "link": [
        2,
        2
      ],
      "name": "G-Mode Setup - Get Hit By Puyo",
      "requires": [],
      "exitCondition": {
        "leaveWithGModeSetup": {}
      },
      "flashSuitChecked": true
    },
    {
      "id": 52,
      "link": [
        2,
        2
      ],
      "name": "G-Mode Regain Mobility",
      "requires": [
        {
          "enemyDamage": {
            "enemy": "Puyo",
            "type": "contact",
            "hits": 1
          }
        }
      ],
      "gModeRegainMobility": {},
      "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": []
    }
  ],
  "nextStratId": 53,
  "notables": [
    {
      "id": 1,
      "name": "Leave With Temporary Blue",
      "note": [
        "Use Space jumps or Spring Ball bounces to carry blue speed across the room.",
        "Then chain temporary blue into the next room.",
        "It helps to enter with a relatively low amount of run speed, using a 4-tap."
      ]
    }
  ],
  "nextNotableId": 2
}