canSpikeSuit (Expert+)

The ability to gain a flash suit using spikes or similar damage source. Gain a shinecharge, take a spike hit while morphed, unmorphing either 1 or 2 frames after taking damage. Then press jump to activate a shinespark on the last frame of knockback, 10 frames after taking damage.

Dependencies: canCarryFlashSuit, canShinespark, canHorizontalShinespark, canShinechargeMovementComplex, canShinechargeMovement, canMidairShinespark

Difficulty filter

Strats ()

From: 1
Top Left Door
To: 1
Top Left Door

Entrance condition:

{
  "comeInShinecharged": {}
}

Requires:

{
  "shineChargeFrames": 70
}
"h_spikeSuitSpikeHitLeniency"
{
  "spikeHits": 1
}
"canSpikeSuit"
{
  "shinespark": {
    "frames": 4,
    "excessFrames": 4
  }
}
From: 1
Top Left Door
To: 1
Top Left Door

Entrance condition:

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

Requires:

{
  "spikeHits": 1
}
"h_spikeSuitSpikeHitLeniency"
"canSpikeSuit"
{
  "shinespark": {
    "frames": 5,
    "excessFrames": 5
  }
}
From: 1
Left Door
To: 1
Left Door

Gain a spike suit and shinespark vertically into the spikes, being careful not to turn around or move forward until Samus falls far enough, to avoid additional spike hits. Position the spark as far left as possible, to be able to land on the ledge and avoid acid damage in case of failure. After gaining the spike suit successfully, for extra safety the shinespark can be delayed to wait for the acid tide to go low.

Requires:

{
  "obstaclesCleared": [
    "B"
  ]
}
{
  "or": [
    {
      "and": [
        {
          "doorUnlockedAtNode": 1
        },
        {
          "canShineCharge": {
            "usedTiles": 19,
            "steepUpTiles": 1,
            "steepDownTiles": 1,
            "openEnd": 0
          }
        }
      ]
    },
    {
      "canShineCharge": {
        "usedTiles": 18,
        "steepUpTiles": 1,
        "steepDownTiles": 1,
        "openEnd": 0
      }
    }
  ]
}
"h_runOverRespawningEnemies"
{
  "spikeHits": 1
}
"canSpikeSuit"
{
  "shinespark": {
    "frames": 1,
    "excessFrames": 1
  }
}

Dev note: Leniency is not included, because there is a farm available.

From: 3
Right Door, In the Water
To: 3
Right Door, In the Water

Requires:

"Gravity"
{
  "canShineCharge": {
    "usedTiles": 19,
    "openEnd": 2
  }
}
{
  "spikeHits": 1
}
"h_spikeSuitSpikeHitLeniency"
"canSpikeSuit"
{
  "shinespark": {
    "frames": 6,
    "excessFrames": 6
  }
}
From: 2
Right Door
To: 2
Right Door

Requires:

{
  "or": [
    {
      "canShineCharge": {
        "usedTiles": 16,
        "openEnd": 0
      }
    },
    {
      "and": [
        {
          "doorUnlockedAtNode": 2
        },
        {
          "canShineCharge": {
            "usedTiles": 17,
            "openEnd": 0
          }
        }
      ]
    }
  ]
}
{
  "thornHits": 1
}
{
  "or": [
    "h_spikeSuitThornHitLeniency",
    {
      "resetRoom": {
        "nodes": [
          1,
          2
        ]
      }
    }
  ]
}
"canSpikeSuit"
{
  "shinespark": {
    "frames": 5,
    "excessFrames": 5
  }
}

Dev note: Assuming the room can be reset, leniency is not included because a farm is available.

From: 4
Top Left Junction
To: 4
Top Left Junction

Requires:

{
  "obstaclesCleared": [
    "A"
  ]
}
{
  "obstaclesNotCleared": [
    "B"
  ]
}
{
  "canShineCharge": {
    "usedTiles": 16,
    "openEnd": 0
  }
}
{
  "spikeHits": 1
}
"h_spikeSuitSpikeHitLeniency"
"canSpikeSuit"
{
  "shinespark": {
    "frames": 4,
    "excessFrames": 4
  }
}
From: 1
Right Door
To: 1
Right Door

Requires:

"canSamusEaterStandUp"
{
  "samusEaterCycles": 1
}
"h_shinechargeMaxRunway"
{
  "thornHits": 1
}
"h_spikeSuitSamusEaterLeniency"
"h_spikeSuitThornHitLeniency"
"canSpikeSuit"
{
  "shinespark": {
    "frames": 5,
    "excessFrames": 5
  }
}
From: 1
Right Door
To: 1
Right Door

Without Super Missiles or to save using a Super Missile, jump over the yapping maw to make it try to grab Samus, the Samus Eater can then be entered from the other side avoiding being grabbed.

Requires:

{
  "obstaclesCleared": [
    "A"
  ]
}
"h_spikeSuitThornHitLeniency"
{
  "or": [
    {
      "and": [
        {
          "obstaclesNotCleared": [
            "B"
          ]
        },
        {
          "canShineCharge": {
            "usedTiles": 29,
            "openEnd": 0
          }
        },
        {
          "thornHits": 4
        },
        "canSpikeSuit",
        {
          "shinespark": {
            "frames": 1,
            "excessFrames": 1
          }
        }
      ]
    },
    {
      "and": [
        {
          "obstaclesCleared": [
            "B"
          ]
        },
        "canSamusEaterStandUp",
        {
          "samusEaterCycles": 1
        },
        "h_shinechargeMaxRunway",
        "h_spikeSuitSamusEaterLeniency",
        {
          "thornHits": 1
        },
        "canSpikeSuit",
        {
          "shinespark": {
            "frames": 4,
            "excessFrames": 4
          }
        }
      ]
    }
  ]
}
From: 2
Right Door
To: 2
Right Door

Requires:

"canSamusEaterStandUp"
{
  "samusEaterCycles": 1
}
"h_shinechargeMaxRunway"
{
  "thornHits": 1
}
"canSpikeSuit"
{
  "shinespark": {
    "frames": 6,
    "excessFrames": 6
  }
}

Dev note: Leniency is not included, since there is a farm available.

From: 2
Right Door
To: 2
Right Door

Requires:

{
  "obstaclesCleared": [
    "A"
  ]
}
"h_shinechargeMaxRunway"
{
  "thornHits": 1
}
"canSpikeSuit"
{
  "or": [
    "h_spikeSuitThornHitLeniency",
    {
      "resetRoom": {
        "nodes": [
          1,
          2
        ]
      }
    }
  ]
}
{
  "shinespark": {
    "frames": 1,
    "excessFrames": 1
  }
}

Clears obstacles: A

Dev note: Assuming the room can be reset, leniency is not included because a farm is available.

From: 3
Bottom Right Door
To: 3
Bottom Right Door

Failing the spikesuit attempt with a spark early by 1 frame will lose the original flash suit. Only unmorphing on the first possible frame will work; second frame will bonk the platform.

Requires:

{
  "useFlashSuit": {}
}
"canUseFlashSuitInitialSpark"
"canTrickyCarryFlashSuit"
{
  "thornHits": 1
}
"canSpikeSuit"
{
  "shinespark": {
    "frames": 13
  }
}

Exit condition:

{
  "leaveWithSpark": {
    "position": "bottom"
  }
}
From: 1
Left Door
To: 2
Right Door

Requires:

"h_heatProof"
{
  "or": [
    {
      "and": [
        "h_shinechargeMaxRunway",
        {
          "obstaclesNotCleared": [
            "A"
          ]
        }
      ]
    },
    {
      "canShineCharge": {
        "usedTiles": 14,
        "openEnd": 1
      }
    }
  ]
}
{
  "or": [
    {
      "and": [
        "canComplexCarryFlashSuit",
        "can4HighMidAirMorph"
      ]
    },
    "canWallJumpInstantMorph"
  ]
}
{
  "spikeHits": 1
}
"h_spikeSuitSpikeHitLeniency"
"canSpikeSuit"
{
  "shinespark": {
    "frames": 1,
    "excessFrames": 1
  }
}

Clears obstacles: A

From: 2
Right Door
To: 1
Left Door

Shortcharging and stopping between the crumbles should allow for 3 attemps before the room needs to be reset or a shorter shortcharge is the only option.

Requires:

"h_heatProof"
{
  "obstaclesNotCleared": [
    "A"
  ]
}
{
  "canShineCharge": {
    "usedTiles": 17,
    "openEnd": 1
  }
}
{
  "or": [
    {
      "and": [
        "canComplexCarryFlashSuit",
        "can4HighMidAirMorph"
      ]
    },
    "canWallJumpInstantMorph"
  ]
}
{
  "spikeHits": 1
}
"h_spikeSuitSpikeHitLeniency"
"canSpikeSuit"
{
  "shinespark": {
    "frames": 1,
    "excessFrames": 1
  }
}

Clears obstacles: A

Dev note: FIXME: This may not be possible if the lava is rising (with Speed Booster and the flag not yet set).

From: 1
Left Door
To: 1
Left Door

Requires:

{
  "canShineCharge": {
    "usedTiles": 33,
    "gentleUpTiles": 8,
    "gentleDownTiles": 8,
    "steepUpTiles": 2,
    "steepDownTiles": 2,
    "openEnd": 0
  }
}
{
  "spikeHits": 1
}
"canSpikeSuit"
{
  "shinespark": {
    "frames": 3,
    "excessFrames": 3
  }
}

Dev note: Leniency is not included, because a farm is available.

From: 4
Central Junction
To: 4
Central Junction

Requires:

{
  "not": "f_DefeatedCrocomire"
}
"canRiskPermanentLossOfAccess"
{
  "canShineCharge": {
    "usedTiles": 22,
    "openEnd": 1
  }
}
{
  "spikeHits": 1
}
"canSpikeSuit"
"h_spikeSuitSpikeHitLeniency"
{
  "shinespark": {
    "frames": 4,
    "excessFrames": 4
  }
}
From: 4
Item
To: 7
Junction By Lower Alcoons (Left of Spike Pits)

Requires:

{
  "obstaclesCleared": [
    "A"
  ]
}
{
  "canShineCharge": {
    "usedTiles": 27,
    "gentleUpTiles": 2,
    "openEnd": 1
  }
}
{
  "spikeHits": 1
}
"h_spikeSuitSpikeHitLeniency"
"h_heatProof"
"canSpikeSuit"
{
  "shinespark": {
    "frames": 6,
    "excessFrames": 6
  }
}

Dev note: FIXME: h_heatProof isn't really required, but we don't yet have a good way to express how spike suit leniency impacts heat frames. FIXME: using the bottom-left runway or a neighboring room would also be possible.

From: 1
Left Door
To: 1
Left Door

Requires:

{
  "obstaclesCleared": [
    "A"
  ]
}
"f_DefeatedPhantoon"
{
  "canShineCharge": {
    "usedTiles": 20,
    "openEnd": 0
  }
}
{
  "thornHits": 1
}
"h_spikeSuitThornHitLeniency"
"canSpikeSuit"
{
  "shinespark": {
    "frames": 2,
    "excessFrames": 2
  }
}
From: 4
Bottom Chozo Item
To: 4
Bottom Chozo Item

Requires:

"f_DefeatedPhantoon"
{
  "obstaclesNotCleared": [
    "B"
  ]
}
{
  "or": [
    {
      "and": [
        {
          "obstaclesCleared": [
            "A"
          ]
        },
        {
          "canShineCharge": {
            "usedTiles": 30,
            "openEnd": 1
          }
        }
      ]
    },
    {
      "canShineCharge": {
        "usedTiles": 14,
        "openEnd": 1
      }
    }
  ]
}
{
  "spikeHits": 1
}
"h_spikeSuitSpikeHitLeniency"
"canSpikeSuit"
{
  "shinespark": {
    "frames": 6,
    "excessFrames": 6
  }
}
From: 1
Left Door
To: 1
Left Door

Requires:

"f_DefeatedPhantoon"
{
  "canShineCharge": {
    "usedTiles": 15,
    "openEnd": 1
  }
}
{
  "thornHits": 1
}
"h_spikeSuitThornHitLeniency"
"canSpikeSuit"
{
  "shinespark": {
    "frames": 6,
    "excessFrames": 6
  }
}

Jump into the side of the spark to avoid taking extra damage.

Requires:

"f_DefeatedPhantoon"
"canShinechargeMovement"
"canInsaneJump"
{
  "canShineCharge": {
    "usedTiles": 20,
    "openEnd": 2
  }
}
{
  "thornHits": 1
}
"h_spikeSuitThornHitLeniency"
"canSpikeSuit"
{
  "shinespark": {
    "frames": 1,
    "excessFrames": 1
  }
}

Entrance condition:

{
  "comeInShinecharged": {}
}

Requires:

{
  "or": [
    "Gravity",
    {
      "and": [
        {
          "not": "f_DefeatedPhantoon"
        },
        "canRiskPermanentLossOfAccess"
      ]
    }
  ]
}
{
  "shineChargeFrames": 120
}
"h_spikeSuitThornHitLeniency"
{
  "thornHits": 1
}
"canSpikeSuit"
{
  "shinespark": {
    "frames": 2,
    "excessFrames": 2
  }
}
From: 8
Item
To: 8
Item

Requires:

"f_DefeatedPhantoon"
{
  "canShineCharge": {
    "usedTiles": 20,
    "steepDownTiles": 5,
    "openEnd": 0
  }
}
{
  "spikeHits": 1
}
"h_spikeSuitSpikeHitLeniency"
"canSpikeSuit"
{
  "shinespark": {
    "frames": 1,
    "excessFrames": 1
  }
}
From: 1
Left Door
To: 1
Left Door

Requires:

{
  "or": [
    "f_DefeatedDraygon",
    {
      "obstaclesCleared": [
        "f_DefeatedDraygon"
      ]
    }
  ]
}
"Gravity"
{
  "canShineCharge": {
    "usedTiles": 21,
    "openEnd": 0
  }
}
{
  "thornHits": 1
}
"h_spikeSuitThornHitLeniency"
"canSpikeSuit"
{
  "or": [
    "h_breakOneDraygonTurret",
    "canTrickyWalljump"
  ]
}
{
  "shinespark": {
    "frames": 2,
    "excessFrames": 2
  }
}

Dev note: FIXME: Obtaining a spikesuit while Draygon is still alive is possible but requires more complex modelling