Skip to content

Commit ef52d86

Browse files
committed
Document implicit canHorizontalMidairShinespark more directly/precisely
1 parent 0e253d8 commit ef52d86

1 file changed

Lines changed: 7 additions & 5 deletions

File tree

strats.md

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -979,18 +979,20 @@ The direction of the spark is assumed to be horizontal when sparking through hor
979979

980980
A strat with a `comeInWithSpark` condition should include a `shinespark` requirement in its `requires`.
981981

982-
A `comeInWithSpark` condition must match with either a `leaveWithSpark`, `leaveShinecharged`, `leaveWithRunway`, or `leaveNormally` condition on the other side of the door:
982+
A `comeInWithSpark` condition must match with either a `leaveWithSpark`, `leaveShinecharged`, `leaveWithRunway`, or `leaveNormally` condition on the other side of the door. In all three cases, if the door is horizontally oriented, then there is an implicit requirement of `canHorizontalShinespark`.
983983

984-
- A match with `leaveWithSpark` is valid as long as the `position` properties are compatible. The `position` properties of a `leaveWithSpark` and `comeInWithSpark` are compatible if they are equal or if at least one of them are unspecified.
985-
- A match with `leaveShinecharged` is always valid. It comes with an implicit requirement of `canShinechargeMovement`.
984+
- A match with `leaveWithSpark` is valid as long as the `position` properties are compatible. The `position` properties of a `leaveWithSpark` and `comeInWithSpark` are compatible if they are equal or if at least one of them is unspecified.
985+
- An implicit requirement of `canHorizontalMidairShinespark` is included if the `grounded` property of the `leaveWithSpark` is `false`, or if ` "grounded"` is unspecified while `position` is `"top"` in the `leaveWithSpark` or `comeInWithSpark` or both.
986+
- A match with `leaveShinecharged` is always valid, with the following implicit requirements:
987+
- A requirement of `canShinechargeMovement` is always included.
988+
- A requirement of `canHorizontalMidairShinespark` is included if the `position` property of the `comeInWithSpark` is "top".
986989
- A match with `leaveWithRunway` comes with the following implicit requirements (the same as for `comeInShinecharged`) for actions to be performed in the previous room:
987990
- A `canShinecharge` requirement is included based on the runway length. This includes a `SpeedBooster` item requirement, a check that the effective runway length is enough that charging a shinespark is possible, and the loss of any blue suit or flash suit.
988991
- If the previous room is heated, then `heatFrames` are included based on the time spent running in that room. The minimally required heat frames are calculated the same way as in `comeInShinecharging`, except here with `comeInShinecharged` there is no second runway to combine with.
989992
- If the previous door environment is water, then `Gravity` is required.
993+
- A requirement of `canHorizontalMidairShinespark` is included if the `position` property of the `comeInWithSpark` is "top".
990994
- A match with `leaveNormally` comes with a `"or": [{"useFlashSuit": {}}, {"blueSuitShinecharge": {}}]` requirement.
991995

992-
In all three cases, there is an implicit requirement of `canHorizontalShinespark` when sparking through a horizontal door. There is also an implicit requirement of `canHorizontalMidairShinespark` when a shinespark is initiated midair (when it is not "grounded") as specified with the `grounded` property of the `leaveWithSpark`. If the `grounded` property is unspecified, then a spark is assumed to be not grounded if the `position` property is "top" or if it is unspecified and matched with a `comeInWithSpark` in the next room with a `position` property that is "top".
993-
994996
#### Example
995997
```json
996998
{

0 commit comments

Comments
 (0)