Bat Cave

Room ID: 100

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:

"h_canHeatedCrystalFlash"
Base (Basic)
Bat Cave
From: 1
Bottom Left Door
To: 2
Top Right Door

Requires:

{
  "or": [
    "canWalljump",
    "HiJump",
    "SpaceJump",
    "canSpringBallJumpMidAir"
  ]
}
{
  "heatFrames": 350
}
From: 1
Bottom Left Door
To: 2
Top Right Door

Freeze the middle Skree mid-air to use it as a platform.

Requires:

"canTrickyUseFrozenEnemies"
{
  "heatFrames": 260
}
From: 1
Bottom Left Door
To: 2
Top Right Door

Shoot the Skree and shotblock from the door. While avoiding Skree projectiles, jump to the next bubble platform followed by jumping directly up where the shot block used to be.

Requires:

"canPreciseWalljump"
"canTrickyJump"
{
  "heatFrames": 220
}
From: 1
Bottom Left Door
To: 2
Top Right Door

Shoot the Skree and shotblock from the door. While avoiding Skree projectiles, jump to the next bubble platform followed by jumping directly up where the shot block used to be.

Requires:

"HiJump"
"canTrickyJump"
{
  "heatFrames": 200
}
From: 1
Bottom Left Door
To: 2
Top Right Door

Shoot the Skree and shotblock from the door. While avoiding Skree projectiles, jump to the next bubble platform followed by jumping directly up where the shot block used to be, performing a mid-air spring ball jump to make it up to the ledge.

Requires:

"canTrickySpringBallJump"
"canTrickyJump"
{
  "heatFrames": 240
}
From: 1
Bottom Left Door
To: 2
Top Right Door

Enter the room with a Missile selected on auto-cancel, holding angle-up. Fire a Missile shot to kill the first Skree, then run right and immediately fire a beam shot to destroy the shot block. Run off the edge and down-grab onto the next platform. Run and jump directly up where the shot block used to be, moving quickly enough to dodge the Skree projectiles by going under them. Use a wall jump, HiJump, or a mid-air spring ball jump to make it up.

Requires:

"canAutoCancelWeapon"
{
  "ammo": {
    "type": "Missile",
    "count": 1
  }
}
"canTrickyDodgeEnemies"
"canInsaneJump"
{
  "or": [
    {
      "and": [
        "HiJump",
        {
          "heatFrames": 160
        }
      ]
    },
    {
      "and": [
        "canWalljump",
        {
          "heatFrames": 180
        }
      ]
    },
    {
      "and": [
        "canTrickySpringBallJump",
        {
          "heatFrames": 195
        }
      ]
    }
  ]
}
From: 1
Bottom Left Door
To: 2
Top Right Door

Requires:

"canJumpIntoRespawningBlock"
{
  "heatFrames": 625
}
From: 1
Bottom Left Door
To: 2
Top Right Door

Shoot diagonally to clear the Skree and shot block before jumping and sparking diagonally mid-air to the above area.

Entrance condition:

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

Requires:

"canShinechargeMovementComplex"
"canMidairShinespark"
{
  "heatFrames": 300
}
{
  "shinespark": {
    "frames": 14,
    "excessFrames": 3
  }
}
From: 1
Bottom Left Door
To: 2
Top Right Door

Shoot diagonally to clear the Skree and shot block before jumping and sparking diagonally mid-air to the above area.

Entrance condition:

{
  "comeInShinecharged": {}
}

Requires:

{
  "shineChargeFrames": 80
}
"canShinechargeMovementComplex"
"canMidairShinespark"
{
  "heatFrames": 270
}
{
  "shinespark": {
    "frames": 13,
    "excessFrames": 3
  }
}
From: 1
Bottom Left Door
To: 2
Top Right Door

Entrance condition:

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

Requires:

"canLongChainTemporaryBlue"
"HiJump"
{
  "or": [
    {
      "heatFrames": 570
    },
    {
      "and": [
        "canXRayCancelShinecharge",
        {
          "heatFrames": 420
        }
      ]
    }
  ]
}

Exit condition:

{
  "leaveWithTemporaryBlue": {}
}

Unlocks doors:

{"types":["ammo"],"requires":[]}
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: 1
Bottom Left Door
To: 3
Gamet Farm Junction

Climb up 1 screen.

Entrance condition:

{
  "comeInWithDoorStuckSetup": {}
}

Requires:

"canXRayClimb"
{
  "heatFrames": 1600
}

Clears obstacles: A

Base (Basic)
Bat Cave
From: 2
Top Right Door
To: 1
Bottom Left Door

Requires:

{
  "or": [
    {
      "heatFrames": 230
    },
    {
      "and": [
        "canHorizontalDamageBoost",
        {
          "heatFrames": 160
        },
        {
          "enemyDamage": {
            "enemy": "Skree",
            "type": "contact",
            "hits": 1
          }
        }
      ]
    }
  ]
}
From: 2
Top Right Door
To: 1
Bottom Left Door

Fall through the shot blocks and shoot around the Skree to open the door without falling into the lava to shinespark out of the room.

Entrance condition:

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

Requires:

"canShinechargeMovementTricky"
{
  "heatFrames": 165
}
{
  "shinespark": {
    "frames": 15
  }
}

Exit condition:

{
  "leaveWithSpark": {}
}

Unlocks doors:

{"types":["super"],"requires":[]}
{"types":["missiles","powerbomb"],"requires":["never"]}
From: 2
Top Right Door
To: 1
Bottom Left Door

Fall through the shot blocks and shoot around the Skree to open the door without falling into the lava to shinespark out of the room.

Entrance condition:

{
  "comeInShinecharged": {}
}

Requires:

{
  "shineChargeFrames": 115
}
"canShinechargeMovementTricky"
{
  "heatFrames": 165
}
{
  "shinespark": {
    "frames": 15
  }
}

Exit condition:

{
  "leaveWithSpark": {}
}

Unlocks doors:

{"types":["super"],"requires":[]}
{"types":["missiles","powerbomb"],"requires":["never"]}
From: 2
Top Right Door
To: 1
Bottom Left Door

Entrance condition:

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

Requires:

"canLongChainTemporaryBlue"
{
  "or": [
    {
      "heatFrames": 550
    },
    {
      "and": [
        "canXRayCancelShinecharge",
        {
          "heatFrames": 380
        }
      ]
    }
  ]
}

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
      ]
    ]
  }
}

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: 2
Top Right Door

Exit condition:

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

Destroy the shot block by standing on top of it, jumping, aiming down, and shooting at the moment that you land. This requires precision because the beam projectile will immediately despawn while off-camera. Less precise alternatives include using a bomb, Power Bomb, or Grapple, if available. With the shot block destroyed, fall down through the opening and jump back up, and the camera will be fixed.

Requires:

{
  "obstaclesCleared": [
    "A"
  ]
}
"canOffScreenMovement"
{
  "heatFrames": 160
}

Resets obstacles: A

Base (Basic)
Bat Cave
From: 2
Top Right Door
To: 3
Gamet Farm Junction

Requires:

{
  "heatFrames": 10
}
Base (Basic)
Bat Cave
From: 3
Gamet Farm Junction
To: 2
Top Right Door

Requires:

{
  "heatFrames": 50
}
From: 3
Gamet Farm Junction
To: 2
Top Right Door

Requires:

{
  "heatFrames": 15
}

Exit condition:

{
  "leaveWithRunway": {
    "length": 7,
    "openEnd": 1
  }
}

Unlocks doors:

{"types":["ammo"],"requires":[]}
From: 3
Gamet Farm Junction
To: 2
Top Right Door

Requires:

{
  "heatFrames": 240
}

Exit condition:

{
  "leaveWithGModeSetup": {}
}

Unlocks doors:

{"types":["ammo"],"requires":[]}
From: 3
Gamet Farm Junction
To: 3
Gamet Farm Junction

Requires:

{
  "obstaclesNotCleared": [
    "A"
  ]
}
{
  "or": [
    {
      "and": [
        {
          "heatFrames": 0
        },
        "canPauseAbuse"
      ]
    },
    {
      "heatFrames": 50
    }
  ]
}
{
  "refill": [
    "Energy",
    "Missile",
    "Super",
    "PowerBomb"
  ]
}
From: 3
Gamet Farm Junction
To: 3
Gamet Farm Junction

When off-camera, the Gamets still spawn but cannot be destroyed with beams or other projectiles.

Requires:

{
  "obstaclesCleared": [
    "A"
  ]
}
"canOffScreenMovement"
{
  "or": [
    "ScrewAttack",
    "h_canUseMorphBombs",
    "Grapple"
  ]
}
{
  "or": [
    {
      "and": [
        {
          "heatFrames": 0
        },
        "canPauseAbuse"
      ]
    },
    {
      "heatFrames": 50
    }
  ]
}
{
  "refill": [
    "Energy",
    "Missile",
    "Super",
    "PowerBomb"
  ]
}

{
  "$schema": "../../../schema/m3-room.schema.json",
  "id": 100,
  "name": "Bat Cave",
  "area": "Norfair",
  "subarea": "Upper",
  "subsubarea": "East",
  "roomAddress": "0x7B07A",
  "roomEnvironments": [
    {
      "heated": true
    }
  ],
  "nodes": [
    {
      "id": 1,
      "name": "Bottom Left Door",
      "nodeType": "door",
      "nodeSubType": "blue",
      "nodeAddress": "0x00197aa",
      "doorOrientation": "left",
      "doorEnvironments": [
        {
          "physics": "air"
        }
      ]
    },
    {
      "id": 2,
      "name": "Top Right Door",
      "nodeType": "door",
      "nodeSubType": "blue",
      "nodeAddress": "0x00197b6",
      "doorOrientation": "right",
      "doorEnvironments": [
        {
          "physics": "air"
        }
      ]
    },
    {
      "id": 3,
      "name": "Gamet Farm Junction",
      "nodeType": "junction",
      "nodeSubType": "junction"
    }
  ],
  "enemies": [
    {
      "id": "e1",
      "groupName": "Bat Cave Skrees",
      "enemyName": "Skree",
      "quantity": 3,
      "homeNodes": [
        1
      ]
    },
    {
      "id": "e2",
      "groupName": "Bat Cave Gamets",
      "enemyName": "Gamet",
      "quantity": 5,
      "homeNodes": [
        3
      ]
    }
  ],
  "obstacles": [
    {
      "id": "A",
      "name": "Camera Broken",
      "obstacleType": "abstract",
      "note": "Represents being off-camera in the top part of the room."
    }
  ],
  "links": [
    {
      "from": 1,
      "to": [
        {
          "id": 1
        },
        {
          "id": 2
        },
        {
          "id": 3
        }
      ]
    },
    {
      "from": 2,
      "to": [
        {
          "id": 1
        },
        {
          "id": 2
        },
        {
          "id": 3
        }
      ]
    },
    {
      "from": 3,
      "to": [
        {
          "id": 2
        },
        {
          "id": 3
        }
      ]
    }
  ],
  "strats": [
    {
      "id": 1,
      "link": [
        1,
        1
      ],
      "name": "Leave with Runway",
      "requires": [],
      "exitCondition": {
        "leaveWithRunway": {
          "length": 3,
          "openEnd": 1
        }
      }
    },
    {
      "id": 2,
      "link": [
        1,
        1
      ],
      "name": "Crystal Flash",
      "requires": [
        "h_canHeatedCrystalFlash"
      ],
      "flashSuitChecked": true
    },
    {
      "id": 3,
      "link": [
        1,
        2
      ],
      "name": "Base",
      "requires": [
        {
          "or": [
            "canWalljump",
            "HiJump",
            "SpaceJump",
            "canSpringBallJumpMidAir"
          ]
        },
        {
          "heatFrames": 350
        }
      ]
    },
    {
      "id": 28,
      "link": [
        1,
        2
      ],
      "name": "Frozen Skree",
      "requires": [
        "canTrickyUseFrozenEnemies",
        {
          "heatFrames": 260
        }
      ],
      "note": [
        "Freeze the middle Skree mid-air to use it as a platform."
      ]
    },
    {
      "id": 4,
      "link": [
        1,
        2
      ],
      "name": "Precise Walljump",
      "requires": [
        "canPreciseWalljump",
        "canTrickyJump",
        {
          "heatFrames": 220
        }
      ],
      "note": [
        "Shoot the Skree and shotblock from the door.",
        "While avoiding Skree projectiles, jump to the next bubble platform followed by jumping directly up where the shot block used to be."
      ]
    },
    {
      "id": 29,
      "link": [
        1,
        2
      ],
      "name": "Tricky HiJump",
      "requires": [
        "HiJump",
        "canTrickyJump",
        {
          "heatFrames": 200
        }
      ],
      "note": [
        "Shoot the Skree and shotblock from the door.",
        "While avoiding Skree projectiles, jump to the next bubble platform followed by jumping directly up where the shot block used to be."
      ]
    },
    {
      "id": 30,
      "link": [
        1,
        2
      ],
      "name": "Tricky Spring Ball Jump",
      "requires": [
        "canTrickySpringBallJump",
        "canTrickyJump",
        {
          "heatFrames": 240
        }
      ],
      "note": [
        "Shoot the Skree and shotblock from the door.",
        "While avoiding Skree projectiles, jump to the next bubble platform followed by jumping directly up where the shot block used to be,",
        "performing a mid-air spring ball jump to make it up to the ledge."
      ]
    },
    {
      "id": 31,
      "link": [
        1,
        2
      ],
      "name": "Auto Cancel Missile Tricky Dodge",
      "requires": [
        "canAutoCancelWeapon",
        {
          "ammo": {
            "type": "Missile",
            "count": 1
          }
        },
        "canTrickyDodgeEnemies",
        "canInsaneJump",
        {
          "or": [
            {
              "and": [
                "HiJump",
                {
                  "heatFrames": 160
                }
              ]
            },
            {
              "and": [
                "canWalljump",
                {
                  "heatFrames": 180
                }
              ]
            },
            {
              "and": [
                "canTrickySpringBallJump",
                {
                  "heatFrames": 195
                }
              ]
            }
          ]
        }
      ],
      "note": [
        "Enter the room with a Missile selected on auto-cancel, holding angle-up.",
        "Fire a Missile shot to kill the first Skree, then run right and immediately fire a beam shot to destroy the shot block.",
        "Run off the edge and down-grab onto the next platform.",
        "Run and jump directly up where the shot block used to be, moving quickly enough to dodge the Skree projectiles by going under them.",
        "Use a wall jump, HiJump, or a mid-air spring ball jump to make it up."
      ]
    },
    {
      "id": 5,
      "link": [
        1,
        2
      ],
      "name": "Jump into Respawning Block",
      "requires": [
        "canJumpIntoRespawningBlock",
        {
          "heatFrames": 625
        }
      ]
    },
    {
      "id": 6,
      "link": [
        1,
        2
      ],
      "name": "Enter Running Shinespark",
      "entranceCondition": {
        "comeInShinecharging": {
          "length": 2,
          "openEnd": 0
        }
      },
      "requires": [
        "canShinechargeMovementComplex",
        "canMidairShinespark",
        {
          "heatFrames": 300
        },
        {
          "shinespark": {
            "frames": 14,
            "excessFrames": 3
          }
        }
      ],
      "note": "Shoot diagonally to clear the Skree and shot block before jumping and sparking diagonally mid-air to the above area."
    },
    {
      "id": 7,
      "link": [
        1,
        2
      ],
      "name": "Enter Shinecharged and Shinespark",
      "entranceCondition": {
        "comeInShinecharged": {}
      },
      "requires": [
        {
          "shineChargeFrames": 80
        },
        "canShinechargeMovementComplex",
        "canMidairShinespark",
        {
          "heatFrames": 270
        },
        {
          "shinespark": {
            "frames": 13,
            "excessFrames": 3
          }
        }
      ],
      "flashSuitChecked": true,
      "note": "Shoot diagonally to clear the Skree and shot block before jumping and sparking diagonally mid-air to the above area."
    },
    {
      "id": 8,
      "link": [
        1,
        2
      ],
      "name": "Come in Shinecharging, Leave With Temporary Blue",
      "entranceCondition": {
        "comeInShinecharging": {
          "length": 2,
          "openEnd": 1
        }
      },
      "requires": [
        "canLongChainTemporaryBlue",
        "HiJump",
        {
          "or": [
            {
              "heatFrames": 570
            },
            {
              "and": [
                "canXRayCancelShinecharge",
                {
                  "heatFrames": 420
                }
              ]
            }
          ]
        }
      ],
      "exitCondition": {
        "leaveWithTemporaryBlue": {}
      },
      "unlocksDoors": [
        {
          "types": [
            "ammo"
          ],
          "requires": []
        }
      ]
    },
    {
      "id": 24,
      "link": [
        1,
        2
      ],
      "name": "Grapple Teleport",
      "entranceCondition": {
        "comeInWithGrappleTeleport": {
          "blockPositions": [
            [
              12,
              12
            ],
            [
              12,
              13
            ]
          ]
        }
      },
      "requires": [],
      "bypassesDoorShell": true
    },
    {
      "id": 9,
      "link": [
        1,
        2
      ],
      "name": "Carry Grapple Teleport (Top Position)",
      "entranceCondition": {
        "comeInWithGrappleTeleport": {
          "blockPositions": [
            [
              12,
              12
            ]
          ]
        }
      },
      "requires": [],
      "bypassesDoorShell": true,
      "exitCondition": {
        "leaveWithGrappleTeleport": {
          "blockPositions": [
            [
              12,
              12
            ]
          ]
        }
      }
    },
    {
      "id": 10,
      "link": [
        1,
        2
      ],
      "name": "Carry Grapple Teleport (Bottom Position)",
      "entranceCondition": {
        "comeInWithGrappleTeleport": {
          "blockPositions": [
            [
              12,
              13
            ]
          ]
        }
      },
      "requires": [],
      "bypassesDoorShell": true,
      "exitCondition": {
        "leaveWithGrappleTeleport": {
          "blockPositions": [
            [
              12,
              13
            ]
          ]
        }
      }
    },
    {
      "id": 11,
      "link": [
        1,
        3
      ],
      "name": "X-Ray Climb",
      "entranceCondition": {
        "comeInWithDoorStuckSetup": {}
      },
      "requires": [
        "canXRayClimb",
        {
          "heatFrames": 1600
        }
      ],
      "clearsObstacles": [
        "A"
      ],
      "flashSuitChecked": true,
      "note": "Climb up 1 screen."
    },
    {
      "id": 12,
      "link": [
        2,
        1
      ],
      "name": "Base",
      "requires": [
        {
          "or": [
            {
              "heatFrames": 230
            },
            {
              "and": [
                "canHorizontalDamageBoost",
                {
                  "heatFrames": 160
                },
                {
                  "enemyDamage": {
                    "enemy": "Skree",
                    "type": "contact",
                    "hits": 1
                  }
                }
              ]
            }
          ]
        }
      ]
    },
    {
      "id": 13,
      "link": [
        2,
        1
      ],
      "name": "Enter Running and Leave Shinesparking",
      "entranceCondition": {
        "comeInShinecharging": {
          "length": 6,
          "openEnd": 0
        }
      },
      "requires": [
        "canShinechargeMovementTricky",
        {
          "heatFrames": 165
        },
        {
          "shinespark": {
            "frames": 15
          }
        }
      ],
      "exitCondition": {
        "leaveWithSpark": {}
      },
      "unlocksDoors": [
        {
          "types": [
            "super"
          ],
          "requires": []
        },
        {
          "types": [
            "missiles",
            "powerbomb"
          ],
          "requires": [
            "never"
          ]
        }
      ],
      "note": "Fall through the shot blocks and shoot around the Skree to open the door without falling into the lava to shinespark out of the room."
    },
    {
      "id": 14,
      "link": [
        2,
        1
      ],
      "name": "Enter Shinecharged and Leave Shinesparking",
      "entranceCondition": {
        "comeInShinecharged": {}
      },
      "requires": [
        {
          "shineChargeFrames": 115
        },
        "canShinechargeMovementTricky",
        {
          "heatFrames": 165
        },
        {
          "shinespark": {
            "frames": 15
          }
        }
      ],
      "exitCondition": {
        "leaveWithSpark": {}
      },
      "unlocksDoors": [
        {
          "types": [
            "super"
          ],
          "requires": []
        },
        {
          "types": [
            "missiles",
            "powerbomb"
          ],
          "requires": [
            "never"
          ]
        }
      ],
      "flashSuitChecked": true,
      "note": "Fall through the shot blocks and shoot around the Skree to open the door without falling into the lava to shinespark out of the room."
    },
    {
      "id": 15,
      "link": [
        2,
        1
      ],
      "name": "Come in Shinecharging, Leave With Temporary Blue",
      "entranceCondition": {
        "comeInShinecharging": {
          "length": 3,
          "openEnd": 1
        }
      },
      "requires": [
        "canLongChainTemporaryBlue",
        {
          "or": [
            {
              "heatFrames": 550
            },
            {
              "and": [
                "canXRayCancelShinecharge",
                {
                  "heatFrames": 380
                }
              ]
            }
          ]
        }
      ],
      "exitCondition": {
        "leaveWithTemporaryBlue": {}
      },
      "unlocksDoors": [
        {
          "types": [
            "ammo"
          ],
          "requires": []
        }
      ]
    },
    {
      "id": 25,
      "link": [
        2,
        1
      ],
      "name": "Grapple Teleport",
      "entranceCondition": {
        "comeInWithGrappleTeleport": {
          "blockPositions": [
            [
              2,
              18
            ],
            [
              2,
              19
            ]
          ]
        }
      },
      "requires": [],
      "bypassesDoorShell": true
    },
    {
      "id": 16,
      "link": [
        2,
        1
      ],
      "name": "Carry Grapple Teleport (Top Position)",
      "entranceCondition": {
        "comeInWithGrappleTeleport": {
          "blockPositions": [
            [
              2,
              18
            ]
          ]
        }
      },
      "requires": [],
      "bypassesDoorShell": true,
      "exitCondition": {
        "leaveWithGrappleTeleport": {
          "blockPositions": [
            [
              2,
              18
            ]
          ]
        }
      }
    },
    {
      "id": 17,
      "link": [
        2,
        1
      ],
      "name": "Carry Grapple Teleport (Bottom Position)",
      "entranceCondition": {
        "comeInWithGrappleTeleport": {
          "blockPositions": [
            [
              2,
              19
            ]
          ]
        }
      },
      "requires": [],
      "bypassesDoorShell": true,
      "exitCondition": {
        "leaveWithGrappleTeleport": {
          "blockPositions": [
            [
              2,
              19
            ]
          ]
        }
      }
    },
    {
      "id": 26,
      "link": [
        2,
        2
      ],
      "name": "Leave with Runway",
      "requires": [],
      "exitCondition": {
        "leaveWithRunway": {
          "length": 7,
          "openEnd": 1
        }
      },
      "devNote": [
        "The blocks respawn, so no need to split this in two runways.",
        "While waiting for respawn would take additional heat frames, the spawner makes that more or less inconsequential."
      ]
    },
    {
      "id": 18,
      "link": [
        2,
        2
      ],
      "name": "Fix the Camera",
      "requires": [
        {
          "obstaclesCleared": [
            "A"
          ]
        },
        "canOffScreenMovement",
        {
          "heatFrames": 160
        }
      ],
      "resetsObstacles": [
        "A"
      ],
      "note": [
        "Destroy the shot block by standing on top of it, jumping, aiming down, and shooting at the moment that you land.",
        "This requires precision because the beam projectile will immediately despawn while off-camera.",
        "Less precise alternatives include using a bomb, Power Bomb, or Grapple, if available.",
        "With the shot block destroyed, fall down through the opening and jump back up, and the camera will be fixed."
      ]
    },
    {
      "id": 19,
      "link": [
        2,
        3
      ],
      "name": "Base",
      "requires": [
        {
          "heatFrames": 10
        }
      ],
      "devNote": [
        "Heat frames here are artifically lower to allow using canPauseAbuse on the farm.",
        "This is compensated for by extra heat frames on the farm itself as an alternative to canPauseAbuse."
      ]
    },
    {
      "id": 20,
      "link": [
        3,
        2
      ],
      "name": "Base",
      "requires": [
        {
          "heatFrames": 50
        }
      ]
    },
    {
      "id": 21,
      "link": [
        3,
        2
      ],
      "name": "Leave with Runway",
      "requires": [
        {
          "heatFrames": 15
        }
      ],
      "exitCondition": {
        "leaveWithRunway": {
          "length": 7,
          "openEnd": 1
        }
      },
      "unlocksDoors": [
        {
          "types": [
            "ammo"
          ],
          "requires": []
        }
      ],
      "devNote": [
        "The blocks respawn, so no need to split this in two runways.",
        "While waiting for respawn would take additional heat frames, the spawner makes that more or less inconsequential."
      ]
    },
    {
      "id": 27,
      "link": [
        3,
        2
      ],
      "name": "G-Mode Setup - Get Hit By Gamet",
      "requires": [
        {
          "heatFrames": 240
        }
      ],
      "exitCondition": {
        "leaveWithGModeSetup": {}
      },
      "flashSuitChecked": true,
      "unlocksDoors": [
        {
          "types": [
            "ammo"
          ],
          "requires": []
        }
      ]
    },
    {
      "id": 22,
      "link": [
        3,
        3
      ],
      "name": "Gamet Farm",
      "requires": [
        {
          "obstaclesNotCleared": [
            "A"
          ]
        },
        {
          "or": [
            {
              "and": [
                {
                  "heatFrames": 0
                },
                "canPauseAbuse"
              ]
            },
            {
              "heatFrames": 50
            }
          ]
        },
        {
          "refill": [
            "Energy",
            "Missile",
            "Super",
            "PowerBomb"
          ]
        }
      ]
    },
    {
      "id": 23,
      "link": [
        3,
        3
      ],
      "name": "Off-Camera Gamet Farm",
      "requires": [
        {
          "obstaclesCleared": [
            "A"
          ]
        },
        "canOffScreenMovement",
        {
          "or": [
            "ScrewAttack",
            "h_canUseMorphBombs",
            "Grapple"
          ]
        },
        {
          "or": [
            {
              "and": [
                {
                  "heatFrames": 0
                },
                "canPauseAbuse"
              ]
            },
            {
              "heatFrames": 50
            }
          ]
        },
        {
          "refill": [
            "Energy",
            "Missile",
            "Super",
            "PowerBomb"
          ]
        }
      ],
      "note": "When off-camera, the Gamets still spawn but cannot be destroyed with beams or other projectiles."
    },
    {
      "link": [
        1,
        1
      ],
      "name": "Base (Unlock Door)",
      "requires": [],
      "unlocksDoors": [
        {
          "types": [
            "missiles"
          ],
          "requires": [
            {
              "heatFrames": 50
            }
          ]
        },
        {
          "types": [
            "super"
          ],
          "requires": []
        },
        {
          "types": [
            "powerbomb"
          ],
          "requires": [
            {
              "heatFrames": 110
            }
          ]
        }
      ]
    },
    {
      "link": [
        1,
        1
      ],
      "name": "Base (Come In Normally)",
      "entranceCondition": {
        "comeInNormally": {}
      },
      "requires": []
    },
    {
      "link": [
        2,
        2
      ],
      "name": "Base (Unlock Door)",
      "requires": [],
      "unlocksDoors": [
        {
          "types": [
            "missiles"
          ],
          "requires": [
            {
              "heatFrames": 50
            }
          ]
        },
        {
          "types": [
            "super"
          ],
          "requires": []
        },
        {
          "types": [
            "powerbomb"
          ],
          "requires": [
            {
              "heatFrames": 110
            }
          ]
        }
      ]
    },
    {
      "link": [
        2,
        2
      ],
      "name": "Base (Come In Normally)",
      "entranceCondition": {
        "comeInNormally": {}
      },
      "requires": []
    }
  ],
  "nextStratId": 32,
  "notables": [],
  "nextNotableId": 1
}