Shaktool Room

Room ID: 222

Wiki
Difficulty filter

From: 1
Left Door
To: 1
Left Door

Entrance condition:

{
  "comeInNormally": {}
}

Requires:

{
  "or": [
    "f_ShaktoolDoneDigging",
    {
      "obstaclesCleared": [
        "f_ShaktoolDoneDigging"
      ]
    }
  ]
}

Clears obstacles: A, B

From: 1
Left Door
To: 1
Left Door

Exit condition:

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

Requires:

{
  "obstaclesCleared": [
    "A",
    "B"
  ]
}
"canShinechargeMovement"
"canWaterShineCharge"
{
  "canShineCharge": {
    "usedTiles": 35,
    "openEnd": 2
  }
}

Exit condition:

{
  "leaveShinecharged": {
    "framesRemaining": 80
  }
}
From: 1
Left Door
To: 1
Left Door

Requires:

{
  "obstaclesCleared": [
    "A",
    "B"
  ]
}
"canShinechargeMovement"
"Gravity"
{
  "canShineCharge": {
    "usedTiles": 42,
    "openEnd": 2
  }
}

Exit condition:

{
  "leaveShinecharged": {
    "framesRemaining": 100
  }
}
From: 1
Left Door
To: 1
Left Door

Requires:

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

If Shaktool is done digging, it is faster to use one of the snails from the right side of the room.

Exit condition:

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

This takes 1 min 40 sec if Shaktool is done digging.

Requires:

{
  "enemyDamage": {
    "enemy": "Shaktool",
    "type": "contact",
    "hits": 1
  }
}
{
  "or": [
    "canBePatient",
    {
      "and": [
        "canRiskPermanentLossOfAccess",
        {
          "not": "f_ShaktoolDoneDigging"
        }
      ]
    }
  ]
}
From: 1
Left Door
To: 2
Right Door

Requires:

{
  "or": [
    {
      "obstaclesCleared": [
        "A",
        "B"
      ]
    },
    "h_canUsePowerBombs"
  ]
}

Clears obstacles: A, B, f_ShaktoolDoneDigging

From: 1
Left Door
To: 2
Right Door

Entrance condition:

{
  "comeInWithGMode": {
    "mode": "any",
    "morphed": true
  }
}

Requires:

"h_canArtificialMorphPowerBomb"

Clears obstacles: A, B, f_ShaktoolDoneDigging

From: 2
Right Door
To: 1
Left Door

Requires:

{
  "obstaclesCleared": [
    "A",
    "B"
  ]
}
From: 2
Right Door
To: 1
Left Door

Let the Snails (Yards) dig through the sand and follow them. They will not dig while off screen or while Samus is facing them, even while morphed.

Requires:

{
  "notable": "Reverse"
}
"h_canUsePowerBombs"

Clears obstacles: A, B, f_ShaktoolDoneDigging

From: 2
Right Door
To: 1
Left Door

The Snails will dig through the sand without showing any visual difference. Each block they pass through gets closer to overloading PLMs. In order to PB the left wall before PLMs are overloaded, it is necessary to only allow one snail to dig, either by bombing one or by facing one to prevent movement until it is off screen. If using mobile g-mode, it is easiest to get past the bottom one and prevent it from digging. If using immobile g-mode, it is easiest to have whichever one hits Samus go off screen. In the morph tunnel, it is important to place the PB as far right as possible, while still hitting the PB blocks, otherwise the Snails will have overloaded the PLMs and the blocks won't break. The green stone changes one tile earlier than the PB wall, and can be a good visual cue to place the PB. After using the PB, exit the sand, leave G-Mode, and wait for Shaktool. Note that the Snails will not dig while off screen or while Samus is facing them, even while she is morphed.

Entrance condition:

{
  "comeInWithGMode": {
    "mode": "any",
    "morphed": true
  }
}

Requires:

{
  "notable": "Reverse G-Mode Morph"
}
{
  "or": [
    {
      "and": [
        "Gravity",
        "h_canArtificialMorphIBJ"
      ]
    },
    "h_canArtificialMorphSpringBall"
  ]
}
"h_canArtificialMorphPowerBomb"

Clears obstacles: A, B, f_ShaktoolDoneDigging

From: 2
Right Door
To: 1
Left Door

Entrance condition:

{
  "comeInWithGrappleTeleport": {
    "blockPositions": [
      [
        5,
        3
      ],
      [
        7,
        2
      ]
    ]
  }
}

Requires:

"h_ShaktoolVanillaFlag"
From: 2
Right Door
To: 1
Left Door

Entrance condition:

{
  "comeInWithGrappleTeleport": {
    "blockPositions": [
      [
        5,
        3
      ],
      [
        7,
        2
      ]
    ]
  }
}

Requires:

"h_ShaktoolSymmetricFlag"

Clears obstacles: f_ShaktoolDoneDigging

From: 2
Right Door
To: 1
Left Door

Entrance condition:

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

Requires:

"h_ShaktoolVanillaFlag"

Bypasses door shell: true

From: 2
Right Door
To: 1
Left Door

Entrance condition:

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

Requires:

"h_ShaktoolSymmetricFlag"

Clears obstacles: f_ShaktoolDoneDigging

Bypasses door shell: true

From: 2
Right Door
To: 1
Left Door

Entrance condition:

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

Requires:

"h_ShaktoolVanillaFlag"

Exit condition:

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

Bypasses door shell: true

From: 2
Right Door
To: 1
Left Door

Entrance condition:

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

Requires:

"h_ShaktoolSymmetricFlag"

Exit condition:

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

Clears obstacles: f_ShaktoolDoneDigging

Bypasses door shell: true

From: 2
Right Door
To: 1
Left Door

Entrance condition:

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

Requires:

"h_ShaktoolVanillaFlag"

Exit condition:

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

Bypasses door shell: true

From: 2
Right Door
To: 1
Left Door

Entrance condition:

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

Requires:

"h_ShaktoolSymmetricFlag"

Exit condition:

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

Clears obstacles: f_ShaktoolDoneDigging

Bypasses door shell: true

From: 2
Right Door
To: 2
Right Door

Entrance condition:

{
  "comeInNormally": {}
}

Requires:

{
  "or": [
    "f_ShaktoolDoneDigging",
    {
      "obstaclesCleared": [
        "f_ShaktoolDoneDigging"
      ]
    }
  ]
}

Clears obstacles: A, B

From: 2
Right Door
To: 2
Right Door

Bounce the snails around the room in order to destroy the sand blocks, opening up the runway. A snail can be made to bounce in 3 ways: shooting it off a wall or ceiling, kicking it on the ground, or touching it while it is already bouncing. Kicking a snail involves running or jumping into it with a non-zero amount of run speed. A snail can be kicked from any direction when in its initial (not angered) state or when it is stunned for a moment after being shot. While a snail is angered and is moving quickly, it can only safely be kicked from a certain side: from behind if on the ground, or head-on if on the ceiling (and not at all while on a wall). If Morph is unavailable, be careful not to let the snails go off-camera, and avoid getting stuck in two-tile-high spaces. If a snail is on the ground and still on camera, it can be forced to move toward Samus again by shooting it; let it wrap around the right side of the room onto the ceiling, where it can be shot to cause it to fall and continue destroying sand blocks.

Requires:

{
  "notable": "Bounce the Snails Around the Room"
}
"h_ShaktoolCameraFix"
"canDodgeWhileShooting"
"canTrickyJump"
"Gravity"

Clears obstacles: B

From: 2
Right Door
To: 2
Right Door

Bounce the snails around the room in order to destroy the sand blocks, opening up the runway. Without Gravity, this requires greater caution as the water will slow Samus down and increase the risk of taking damage from a snail. A snail can be made to bounce in 3 ways: shooting it off a wall or ceiling, kicking it on the ground, or touching it while it is already bouncing. Kicking a snail involves running or jumping into it with a non-zero amount of run speed, gained by dashing for at least one frame while in air physics. A snail can be kicked from any direction when in its initial (not angered) state or when it is stunned for a moment after being shot. While a snail is angered and is moving quickly, it can only safely be kicked from a certain side: from behind if on the ground, or head-on if on the ceiling (and not at all while on a wall). If Morph is unavailable, be careful not to let the snails go off-camera, and avoid getting stuck in two-tile-high spaces. If a snail is on the ground and still on camera, it can be forced to move toward Samus again by shooting it; let it wrap around the right side of the room onto the ceiling, where it can be shot to cause it to fall and continue destroying sand blocks.

Requires:

{
  "notable": "Suitless Bounce the Snails Around the Room"
}
"canDodgeWhileShooting"
"canTrickyJump"
{
  "or": [
    "canBePatient",
    "canInsaneJump",
    {
      "enemyDamage": {
        "enemy": "Yard",
        "type": "contact",
        "hits": 1
      }
    }
  ]
}

Clears obstacles: B

From: 2
Right Door
To: 2
Right Door

Exit condition:

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

Requires:

{
  "obstaclesCleared": [
    "B"
  ]
}
"canShinechargeMovement"
"canWaterShineCharge"
{
  "canShineCharge": {
    "usedTiles": 35,
    "openEnd": 2
  }
}

Exit condition:

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

Requires:

{
  "obstaclesCleared": [
    "B"
  ]
}
"canShinechargeMovement"
"Gravity"
{
  "canShineCharge": {
    "usedTiles": 42,
    "openEnd": 2
  }
}

Exit condition:

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

Requires:

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

Requires:

{
  "obstaclesCleared": [
    "A",
    "B"
  ]
}

Exit condition:

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

Shoot a Snail to make it chase Samus.

Requires:

"h_ShaktoolCameraFix"

Exit condition:

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

Wait for Shaktool. If Shaktool's camera is fixed it is possible without Shaktool, by using a Snail (Yard): a Super or any SBA can trigger a Yard to attack.

Requires:

{
  "or": [
    {
      "and": [
        {
          "enemyDamage": {
            "enemy": "Shaktool",
            "type": "contact",
            "hits": 1
          }
        },
        {
          "or": [
            "f_ShaktoolDoneDigging",
            {
              "obstaclesCleared": [
                "f_ShaktoolDoneDigging"
              ]
            }
          ]
        }
      ]
    },
    {
      "and": [
        {
          "enemyDamage": {
            "enemy": "Yard",
            "type": "contact",
            "hits": 1
          }
        },
        "h_ShaktoolCameraFix",
        {
          "or": [
            {
              "ammo": {
                "type": "Super",
                "count": 1
              }
            },
            {
              "and": [
                "canSpecialBeamAttack",
                {
                  "ammo": {
                    "type": "PowerBomb",
                    "count": 1
                  }
                }
              ]
            }
          ]
        }
      ]
    }
  ]
}
From: 2
Right Door
To: 2
Right Door

In the vanilla game, if the flag is not already set, entering from the right door immediately sets the flag, though the room must be reset for it to take effect. Resetting the room also fixes the camera, which gets broken in this state.

Requires:

"h_ShaktoolVanillaFlag"

Exit condition:

{
  "leaveNormally": {}
}

Clears obstacles: f_ShaktoolDoneDigging

{
  "$schema": "../../../schema/m3-room.schema.json",
  "id": 222,
  "name": "Shaktool Room",
  "area": "Maridia",
  "subarea": "Inner",
  "subsubarea": "Green",
  "playable": true,
  "roomAddress": "0x7D8C5",
  "roomEnvironments": [
    {
      "heated": false
    }
  ],
  "nodes": [
    {
      "id": 1,
      "name": "Left Door",
      "nodeType": "door",
      "nodeSubType": "blue",
      "nodeAddress": "0x001a8c4",
      "doorOrientation": "left",
      "doorEnvironments": [
        {
          "physics": "air"
        }
      ]
    },
    {
      "id": 2,
      "name": "Right Door",
      "nodeType": "door",
      "nodeSubType": "blue",
      "nodeAddress": "0x001a8d0",
      "doorOrientation": "right",
      "doorEnvironments": [
        {
          "physics": "air"
        }
      ]
    }
  ],
  "obstacles": [
    {
      "id": "A",
      "name": "Power Bomb Blocks",
      "obstacleType": "inanimate"
    },
    {
      "id": "B",
      "name": "Sand Blocks",
      "obstacleType": "inanimate",
      "note": "Cleared by having the sand blocks be fully destroyed by Shaktool or snails"
    },
    {
      "id": "f_ShaktoolDoneDigging",
      "name": "f_ShaktoolDoneDigging"
    }
  ],
  "enemies": [
    {
      "id": "e1",
      "groupName": "Shaktool",
      "enemyName": "Shaktool",
      "quantity": 1,
      "homeNodes": [
        1
      ]
    },
    {
      "id": "e2",
      "groupName": "Shaktool Room Yards",
      "enemyName": "Yard",
      "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": "Come In With Shaktool Done Digging",
      "entranceCondition": {
        "comeInNormally": {}
      },
      "requires": [
        {
          "or": [
            "f_ShaktoolDoneDigging",
            {
              "obstaclesCleared": [
                "f_ShaktoolDoneDigging"
              ]
            }
          ]
        }
      ],
      "clearsObstacles": [
        "A",
        "B"
      ],
      "devNote": "Entering the room with the flag 'f_ShaktoolDoneDigging' set means that the sand blocks and Power Bomb blocks will not spawn."
    },
    {
      "id": 2,
      "link": [
        1,
        1
      ],
      "name": "Leave with Runway",
      "requires": [],
      "exitCondition": {
        "leaveWithRunway": {
          "length": 1,
          "openEnd": 1
        }
      }
    },
    {
      "id": 3,
      "link": [
        1,
        1
      ],
      "name": "Leave Shinecharged",
      "requires": [
        {
          "obstaclesCleared": [
            "A",
            "B"
          ]
        },
        "canShinechargeMovement",
        "canWaterShineCharge",
        {
          "canShineCharge": {
            "usedTiles": 35,
            "openEnd": 2
          }
        }
      ],
      "exitCondition": {
        "leaveShinecharged": {
          "framesRemaining": 80
        }
      },
      "flashSuitChecked": true,
      "devNote": "This runway could be longer with precise timing or a stutter, but it seems unnecessary at this difficulty."
    },
    {
      "id": 4,
      "link": [
        1,
        1
      ],
      "name": "Leave Shinecharged, Gravity",
      "requires": [
        {
          "obstaclesCleared": [
            "A",
            "B"
          ]
        },
        "canShinechargeMovement",
        "Gravity",
        {
          "canShineCharge": {
            "usedTiles": 42,
            "openEnd": 2
          }
        }
      ],
      "exitCondition": {
        "leaveShinecharged": {
          "framesRemaining": 100
        }
      },
      "flashSuitChecked": true,
      "devNote": "FIXME: By falling off the runway with precise movement, 135 frames are possible."
    },
    {
      "id": 5,
      "link": [
        1,
        1
      ],
      "name": "Crystal Flash",
      "requires": [
        "h_canCrystalFlash"
      ],
      "flashSuitChecked": true
    },
    {
      "id": 6,
      "link": [
        1,
        1
      ],
      "name": "G-Mode Setup - Get Hit By Shaktool or Yard",
      "requires": [],
      "exitCondition": {
        "leaveWithGModeSetup": {}
      },
      "flashSuitChecked": true,
      "note": "If Shaktool is done digging, it is faster to use one of the snails from the right side of the room."
    },
    {
      "id": 7,
      "link": [
        1,
        1
      ],
      "name": "G-Mode Regain Mobility",
      "requires": [
        {
          "enemyDamage": {
            "enemy": "Shaktool",
            "type": "contact",
            "hits": 1
          }
        },
        {
          "or": [
            "canBePatient",
            {
              "and": [
                "canRiskPermanentLossOfAccess",
                {
                  "not": "f_ShaktoolDoneDigging"
                }
              ]
            }
          ]
        }
      ],
      "gModeRegainMobility": {},
      "flashSuitChecked": true,
      "note": "This takes 1 min 40 sec if Shaktool is done digging."
    },
    {
      "id": 8,
      "link": [
        1,
        2
      ],
      "name": "Base",
      "requires": [
        {
          "or": [
            {
              "obstaclesCleared": [
                "A",
                "B"
              ]
            },
            "h_canUsePowerBombs"
          ]
        }
      ],
      "clearsObstacles": [
        "A",
        "B",
        "f_ShaktoolDoneDigging"
      ],
      "setsFlags": [
        "f_ShaktoolDoneDigging"
      ]
    },
    {
      "id": 9,
      "link": [
        1,
        2
      ],
      "name": "G-Mode Morph Power Bomb",
      "entranceCondition": {
        "comeInWithGMode": {
          "mode": "any",
          "morphed": true
        }
      },
      "requires": [
        "h_canArtificialMorphPowerBomb"
      ],
      "clearsObstacles": [
        "A",
        "B",
        "f_ShaktoolDoneDigging"
      ],
      "setsFlags": [
        "f_ShaktoolDoneDigging"
      ],
      "flashSuitChecked": true
    },
    {
      "id": 10,
      "link": [
        2,
        1
      ],
      "name": "Base",
      "requires": [
        {
          "obstaclesCleared": [
            "A",
            "B"
          ]
        }
      ]
    },
    {
      "id": 11,
      "link": [
        2,
        1
      ],
      "name": "Reverse",
      "requires": [
        {
          "notable": "Reverse"
        },
        "h_canUsePowerBombs"
      ],
      "clearsObstacles": [
        "A",
        "B",
        "f_ShaktoolDoneDigging"
      ],
      "setsFlags": [
        "f_ShaktoolDoneDigging"
      ],
      "note": "Let the Snails (Yards) dig through the sand and follow them. They will not dig while off screen or while Samus is facing them, even while morphed."
    },
    {
      "id": 12,
      "link": [
        2,
        1
      ],
      "name": "Reverse G-Mode Morph",
      "entranceCondition": {
        "comeInWithGMode": {
          "mode": "any",
          "morphed": true
        }
      },
      "requires": [
        {
          "notable": "Reverse G-Mode Morph"
        },
        {
          "or": [
            {
              "and": [
                "Gravity",
                "h_canArtificialMorphIBJ"
              ]
            },
            "h_canArtificialMorphSpringBall"
          ]
        },
        "h_canArtificialMorphPowerBomb"
      ],
      "clearsObstacles": [
        "A",
        "B",
        "f_ShaktoolDoneDigging"
      ],
      "setsFlags": [
        "f_ShaktoolDoneDigging"
      ],
      "flashSuitChecked": true,
      "note": [
        "The Snails will dig through the sand without showing any visual difference. Each block they pass through gets closer to overloading PLMs.",
        "In order to PB the left wall before PLMs are overloaded, it is necessary to only allow one snail to dig, either by bombing one or by facing one to prevent movement until it is off screen.",
        "If using mobile g-mode, it is easiest to get past the bottom one and prevent it from digging. If using immobile g-mode, it is easiest to have whichever one hits Samus go off screen.",
        "In the morph tunnel, it is important to place the PB as far right as possible, while still hitting the PB blocks, otherwise the Snails will have overloaded the PLMs and the blocks won't break.",
        "The green stone changes one tile earlier than the PB wall, and can be a good visual cue to place the PB.",
        "After using the PB, exit the sand, leave G-Mode, and wait for Shaktool. Note that the Snails will not dig while off screen or while Samus is facing them, even while she is morphed."
      ]
    },
    {
      "id": 13,
      "link": [
        2,
        1
      ],
      "name": "Grapple Teleport (Vanilla)",
      "entranceCondition": {
        "comeInWithGrappleTeleport": {
          "blockPositions": [
            [
              5,
              3
            ],
            [
              7,
              2
            ]
          ]
        }
      },
      "requires": [
        "h_ShaktoolVanillaFlag"
      ],
      "devNote": [
        "With the vanilla game behavior, grapple teleporting here does not set the flag 'f_ShaktoolDoneDigging', as Samus does not spend a frame on the right side of the room."
      ]
    },
    {
      "id": 14,
      "link": [
        2,
        1
      ],
      "name": "Grapple Teleport (Symmetric)",
      "entranceCondition": {
        "comeInWithGrappleTeleport": {
          "blockPositions": [
            [
              5,
              3
            ],
            [
              7,
              2
            ]
          ]
        }
      },
      "requires": [
        "h_ShaktoolSymmetricFlag"
      ],
      "setsFlags": [
        "f_ShaktoolDoneDigging"
      ],
      "devNote": [
        "Grapple teleporting crosses the room, so it will set the flag 'f_ShaktoolDoneDigging', assuming that the game is modified to treat the room symmetrically with how the flag gets set."
      ],
      "clearsObstacles": [
        "f_ShaktoolDoneDigging"
      ]
    },
    {
      "id": 15,
      "link": [
        2,
        1
      ],
      "name": "Grapple Teleport Door Lock Skip (Vanilla)",
      "entranceCondition": {
        "comeInWithGrappleTeleport": {
          "blockPositions": [
            [
              3,
              12
            ],
            [
              3,
              13
            ]
          ]
        }
      },
      "requires": [
        "h_ShaktoolVanillaFlag"
      ],
      "bypassesDoorShell": true,
      "devNote": [
        "With the vanilla game behavior, grapple teleporting here does not set the flag 'f_ShaktoolDoneDigging', as Samus does not spend a frame on the right side of the room."
      ]
    },
    {
      "id": 16,
      "link": [
        2,
        1
      ],
      "name": "Grapple Teleport Door Lock Skip (Symmetric)",
      "entranceCondition": {
        "comeInWithGrappleTeleport": {
          "blockPositions": [
            [
              3,
              12
            ],
            [
              3,
              13
            ]
          ]
        }
      },
      "requires": [
        "h_ShaktoolSymmetricFlag"
      ],
      "bypassesDoorShell": true,
      "setsFlags": [
        "f_ShaktoolDoneDigging"
      ],
      "devNote": [
        "Grapple teleporting crosses the room, so it will set the flag 'f_ShaktoolDoneDigging', assuming that the game is modified to treat the room symmetrically with how the flag gets set."
      ],
      "clearsObstacles": [
        "f_ShaktoolDoneDigging"
      ]
    },
    {
      "id": 17,
      "link": [
        2,
        1
      ],
      "name": "Carry Grapple Teleport (Top Position, Vanilla)",
      "entranceCondition": {
        "comeInWithGrappleTeleport": {
          "blockPositions": [
            [
              3,
              12
            ]
          ]
        }
      },
      "requires": [
        "h_ShaktoolVanillaFlag"
      ],
      "bypassesDoorShell": true,
      "exitCondition": {
        "leaveWithGrappleTeleport": {
          "blockPositions": [
            [
              3,
              12
            ]
          ]
        }
      },
      "devNote": [
        "With the vanilla game behavior, grapple teleporting here does not set the flag 'f_ShaktoolDoneDigging', as Samus does not spend a frame on the right side of the room."
      ]
    },
    {
      "id": 18,
      "link": [
        2,
        1
      ],
      "name": "Carry Grapple Teleport (Top Position, Symmetric)",
      "entranceCondition": {
        "comeInWithGrappleTeleport": {
          "blockPositions": [
            [
              3,
              12
            ]
          ]
        }
      },
      "requires": [
        "h_ShaktoolSymmetricFlag"
      ],
      "bypassesDoorShell": true,
      "exitCondition": {
        "leaveWithGrappleTeleport": {
          "blockPositions": [
            [
              3,
              12
            ]
          ]
        }
      },
      "setsFlags": [
        "f_ShaktoolDoneDigging"
      ],
      "devNote": [
        "Grapple teleporting crosses the room, so it will set the flag 'f_ShaktoolDoneDigging', assuming that the game is modified to treat the room symmetrically with how the flag gets set."
      ],
      "clearsObstacles": [
        "f_ShaktoolDoneDigging"
      ]
    },
    {
      "id": 19,
      "link": [
        2,
        1
      ],
      "name": "Carry Grapple Teleport (Bottom Position, Vanilla)",
      "entranceCondition": {
        "comeInWithGrappleTeleport": {
          "blockPositions": [
            [
              3,
              13
            ]
          ]
        }
      },
      "requires": [
        "h_ShaktoolVanillaFlag"
      ],
      "bypassesDoorShell": true,
      "exitCondition": {
        "leaveWithGrappleTeleport": {
          "blockPositions": [
            [
              3,
              13
            ]
          ]
        }
      },
      "devNote": [
        "With the vanilla game behavior, grapple teleporting here does not set the flag 'f_ShaktoolDoneDigging', as Samus does not spend a frame on the right side of the room."
      ]
    },
    {
      "id": 20,
      "link": [
        2,
        1
      ],
      "name": "Carry Grapple Teleport (Bottom Position, Symmetric)",
      "entranceCondition": {
        "comeInWithGrappleTeleport": {
          "blockPositions": [
            [
              3,
              13
            ]
          ]
        }
      },
      "requires": [
        "h_ShaktoolSymmetricFlag"
      ],
      "bypassesDoorShell": true,
      "exitCondition": {
        "leaveWithGrappleTeleport": {
          "blockPositions": [
            [
              3,
              13
            ]
          ]
        }
      },
      "setsFlags": [
        "f_ShaktoolDoneDigging"
      ],
      "devNote": [
        "Grapple teleporting crosses the room, so it will set the flag 'f_ShaktoolDoneDigging', assuming that the game is modified to treat the room symmetrically with how the flag gets set."
      ],
      "clearsObstacles": [
        "f_ShaktoolDoneDigging"
      ]
    },
    {
      "id": 21,
      "link": [
        2,
        2
      ],
      "name": "Come In With Shaktool Done Digging",
      "entranceCondition": {
        "comeInNormally": {}
      },
      "requires": [
        {
          "or": [
            "f_ShaktoolDoneDigging",
            {
              "obstaclesCleared": [
                "f_ShaktoolDoneDigging"
              ]
            }
          ]
        }
      ],
      "clearsObstacles": [
        "A",
        "B"
      ],
      "devNote": "Entering the room with the flag 'f_ShaktoolDoneDigging' set means that the sand blocks and Power Bomb blocks will not spawn."
    },
    {
      "id": 22,
      "link": [
        2,
        2
      ],
      "name": "Bounce the Snails Around the Room",
      "requires": [
        {
          "notable": "Bounce the Snails Around the Room"
        },
        "h_ShaktoolCameraFix",
        "canDodgeWhileShooting",
        "canTrickyJump",
        "Gravity"
      ],
      "clearsObstacles": [
        "B"
      ],
      "note": [
        "Bounce the snails around the room in order to destroy the sand blocks, opening up the runway.",
        "A snail can be made to bounce in 3 ways: shooting it off a wall or ceiling, kicking it on the ground, or touching it while it is already bouncing.",
        "Kicking a snail involves running or jumping into it with a non-zero amount of run speed.",
        "A snail can be kicked from any direction when in its initial (not angered) state or when it is stunned for a moment after being shot.",
        "While a snail is angered and is moving quickly, it can only safely be kicked from a certain side: from behind if on the ground, or head-on if on the ceiling (and not at all while on a wall).",
        "If Morph is unavailable, be careful not to let the snails go off-camera, and avoid getting stuck in two-tile-high spaces.",
        "If a snail is on the ground and still on camera, it can be forced to move toward Samus again by shooting it;",
        "let it wrap around the right side of the room onto the ceiling, where it can be shot to cause it to fall and continue destroying sand blocks."
      ]
    },
    {
      "id": 23,
      "link": [
        2,
        2
      ],
      "name": "Suitless Bounce the Snails Around the Room",
      "requires": [
        {
          "notable": "Suitless Bounce the Snails Around the Room"
        },
        "canDodgeWhileShooting",
        "canTrickyJump",
        {
          "or": [
            "canBePatient",
            "canInsaneJump",
            {
              "enemyDamage": {
                "enemy": "Yard",
                "type": "contact",
                "hits": 1
              }
            }
          ]
        }
      ],
      "clearsObstacles": [
        "B"
      ],
      "note": [
        "Bounce the snails around the room in order to destroy the sand blocks, opening up the runway.",
        "Without Gravity, this requires greater caution as the water will slow Samus down and increase the risk of taking damage from a snail.",
        "A snail can be made to bounce in 3 ways: shooting it off a wall or ceiling, kicking it on the ground, or touching it while it is already bouncing.",
        "Kicking a snail involves running or jumping into it with a non-zero amount of run speed, gained by dashing for at least one frame while in air physics.",
        "A snail can be kicked from any direction when in its initial (not angered) state or when it is stunned for a moment after being shot.",
        "While a snail is angered and is moving quickly, it can only safely be kicked from a certain side: from behind if on the ground, or head-on if on the ceiling (and not at all while on a wall).",
        "If Morph is unavailable, be careful not to let the snails go off-camera, and avoid getting stuck in two-tile-high spaces.",
        "If a snail is on the ground and still on camera, it can be forced to move toward Samus again by shooting it;",
        "let it wrap around the right side of the room onto the ceiling, where it can be shot to cause it to fall and continue destroying sand blocks."
      ]
    },
    {
      "id": 24,
      "link": [
        2,
        2
      ],
      "name": "Leave with Runway",
      "requires": [],
      "exitCondition": {
        "leaveWithRunway": {
          "length": 1,
          "openEnd": 1
        }
      }
    },
    {
      "id": 25,
      "link": [
        2,
        2
      ],
      "name": "Leave Shinecharged",
      "requires": [
        {
          "obstaclesCleared": [
            "B"
          ]
        },
        "canShinechargeMovement",
        "canWaterShineCharge",
        {
          "canShineCharge": {
            "usedTiles": 35,
            "openEnd": 2
          }
        }
      ],
      "exitCondition": {
        "leaveShinecharged": {
          "framesRemaining": 80
        }
      },
      "flashSuitChecked": true,
      "devNote": "This runway could be longer with precise timing or a stutter, but it seems unnecessary at this difficulty."
    },
    {
      "id": 26,
      "link": [
        2,
        2
      ],
      "name": "Leave Shinecharged, Gravity",
      "requires": [
        {
          "obstaclesCleared": [
            "B"
          ]
        },
        "canShinechargeMovement",
        "Gravity",
        {
          "canShineCharge": {
            "usedTiles": 42,
            "openEnd": 2
          }
        }
      ],
      "exitCondition": {
        "leaveShinecharged": {
          "framesRemaining": 100
        }
      },
      "flashSuitChecked": true,
      "devNote": "FIXME: By falling off the runway with precise movement, 135 frames are possible."
    },
    {
      "id": 27,
      "link": [
        2,
        2
      ],
      "name": "Crystal Flash",
      "requires": [
        "h_canCrystalFlash"
      ],
      "flashSuitChecked": true
    },
    {
      "id": 28,
      "link": [
        2,
        2
      ],
      "name": "G-Mode Setup - Get Hit By Shaktool",
      "requires": [
        {
          "obstaclesCleared": [
            "A",
            "B"
          ]
        }
      ],
      "exitCondition": {
        "leaveWithGModeSetup": {}
      },
      "flashSuitChecked": true
    },
    {
      "id": 29,
      "link": [
        2,
        2
      ],
      "name": "G-Mode Setup - Get Hit By Yard (Snail)",
      "requires": [
        "h_ShaktoolCameraFix"
      ],
      "exitCondition": {
        "leaveWithGModeSetup": {}
      },
      "flashSuitChecked": true,
      "note": "Shoot a Snail to make it chase Samus."
    },
    {
      "id": 30,
      "link": [
        2,
        2
      ],
      "name": "G-Mode Regain Mobility",
      "requires": [
        {
          "or": [
            {
              "and": [
                {
                  "enemyDamage": {
                    "enemy": "Shaktool",
                    "type": "contact",
                    "hits": 1
                  }
                },
                {
                  "or": [
                    "f_ShaktoolDoneDigging",
                    {
                      "obstaclesCleared": [
                        "f_ShaktoolDoneDigging"
                      ]
                    }
                  ]
                }
              ]
            },
            {
              "and": [
                {
                  "enemyDamage": {
                    "enemy": "Yard",
                    "type": "contact",
                    "hits": 1
                  }
                },
                "h_ShaktoolCameraFix",
                {
                  "or": [
                    {
                      "ammo": {
                        "type": "Super",
                        "count": 1
                      }
                    },
                    {
                      "and": [
                        "canSpecialBeamAttack",
                        {
                          "ammo": {
                            "type": "PowerBomb",
                            "count": 1
                          }
                        }
                      ]
                    }
                  ]
                }
              ]
            }
          ]
        }
      ],
      "gModeRegainMobility": {},
      "flashSuitChecked": true,
      "note": "Wait for Shaktool. If Shaktool's camera is fixed it is possible without Shaktool, by using a Snail (Yard): a Super or any SBA can trigger a Yard to attack."
    },
    {
      "id": 31,
      "link": [
        2,
        2
      ],
      "name": "Vanilla",
      "requires": [
        "h_ShaktoolVanillaFlag"
      ],
      "exitCondition": {
        "leaveNormally": {}
      },
      "setsFlags": [
        "f_ShaktoolDoneDigging"
      ],
      "note": [
        "In the vanilla game, if the flag is not already set, entering from the right door immediately sets the flag, though the room must be reset for it to take effect.",
        "Resetting the room also fixes the camera, which gets broken in this state."
      ],
      "clearsObstacles": [
        "f_ShaktoolDoneDigging"
      ]
    },
    {
      "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": 32,
  "notables": [
    {
      "id": 1,
      "name": "Reverse",
      "note": "Let the Snails (Yards) dig through the sand and follow them. They will not dig while off screen or while Samus is facing them, even while morphed."
    },
    {
      "id": 2,
      "name": "Reverse G-Mode Morph",
      "note": [
        "The Snails will dig through the sand without showing any visual difference. Each block they pass through gets closer to overloading PLMs.",
        "In order to PB the left wall before PLMs are overloaded, it is necessary to only allow one snail to dig, either by bombing one or by facing one to prevent movement until it is off screen.",
        "If using mobile g-mode, it is easiest to get past the bottom one and prevent it from digging. If using immobile g-mode, it is easiest to have whichever one hits Samus go off screen.",
        "In the morph tunnel, it is important to place the PB as far right as possible, while still hitting the PB blocks, otherwise the Snails will have overloaded the PLMs and the blocks won't break.",
        "The green stone changes one tile earlier than the PB wall, and can be a good visual cue to place the PB.",
        "After using the PB, exit the sand, leave G-Mode, and wait for Shaktool. Note that the Snails will not dig while off screen or while Samus is facing them, even while she is morphed."
      ]
    },
    {
      "id": 3,
      "name": "Bounce the Snails Around the Room",
      "note": [
        "Bounce the snails around the room in order to destroy the sand blocks, opening up the runway.",
        "A snail can be made to bounce in 3 ways: shooting it off a wall or ceiling, kicking it on the ground, or touching it while it is already bouncing.",
        "Kicking a snail involves running or jumping into it with a non-zero amount of run speed.",
        "A snail can be kicked from any direction when in its initial (not angered) state or when it is stunned for a moment after being shot.",
        "While a snail is angered and is moving quickly, it can only safely be kicked from a certain side: from behind if on the ground, or head-on if on the ceiling (and not at all while on a wall).",
        "If Morph is unavailable, be careful not to let the snails go off-camera, and avoid getting stuck in two-tile-high spaces.",
        "If a snail is on the ground and still on camera, it can be forced to move toward Samus again by shooting it;",
        "let it wrap around the right side of the room onto the ceiling, where it can be shot to cause it to fall and continue destroying sand blocks."
      ]
    },
    {
      "id": 4,
      "name": "Suitless Bounce the Snails Around the Room",
      "note": [
        "Bounce the snails around the room in order to destroy the sand blocks, opening up the runway.",
        "Without Gravity, this requires greater caution as the water will slow Samus down and increase the risk of taking damage from a snail.",
        "A snail can be made to bounce in 3 ways: shooting it off a wall or ceiling, kicking it on the ground, or touching it while it is already bouncing.",
        "Kicking a snail involves running or jumping into it with a non-zero amount of run speed, gained by dashing for at least one frame while in air physics.",
        "A snail can be kicked from any direction when in its initial (not angered) state or when it is stunned for a moment after being shot.",
        "While a snail is angered and is moving quickly, it can only safely be kicked from a certain side: from behind if on the ground, or head-on if on the ceiling (and not at all while on a wall).",
        "If Morph is unavailable, be careful not to let the snails go off-camera, and avoid getting stuck in two-tile-high spaces.",
        "If a snail is on the ground and still on camera, it can be forced to move toward Samus again by shooting it;",
        "let it wrap around the right side of the room onto the ceiling, where it can be shot to cause it to fall and continue destroying sand blocks."
      ]
    }
  ],
  "nextNotableId": 5
}