Room ID: 100
Exit condition: { "leaveWithRunway": { "length": 3, "openEnd": 1 } } |
Requires: "h_canHeatedCrystalFlash" |
Requires: { "or": [ "canWalljump", "HiJump", "SpaceJump", "canSpringBallJumpMidAir" ] } { "heatFrames": 350 } |
Freeze the middle Skree mid-air to use it as a platform. Requires: "canTrickyUseFrozenEnemies" { "heatFrames": 260 } |
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 } |
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 } |
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 } |
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 } ] } ] } |
Requires: "canJumpIntoRespawningBlock" { "heatFrames": 625 } |
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":[]} |
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 |
Entrance condition: { "comeInWithDoorStuckSetup": {} } Requires: "canXRayClimb" { "heatFrames": 1600 } Clears obstacles: A |
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":[]} |
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 |
Exit condition: { "leaveWithRunway": { "length": 7, "openEnd": 1 } } |
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 |
Requires: { "heatFrames": 10 } |
Requires: { "heatFrames": 50 } |
Requires: { "heatFrames": 15 } Exit condition: { "leaveWithRunway": { "length": 7, "openEnd": 1 } } Unlocks doors: {"types":["ammo"],"requires":[]} |
Requires: { "heatFrames": 240 } Exit condition: { "leaveWithGModeSetup": {} } Unlocks doors: {"types":["ammo"],"requires":[]} |
Requires: { "obstaclesNotCleared": [ "A" ] } { "or": [ { "and": [ { "heatFrames": 0 }, "canPauseAbuse" ] }, { "heatFrames": 50 } ] } { "refill": [ "Energy", "Missile", "Super", "PowerBomb" ] } |
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 }