Skip to content

Commit 1546905

Browse files
authored
Split Speed - Indiana Jones sparks and canHorizontalMidairShinespark (#2718)
1 parent 53bfcc3 commit 1546905

3 files changed

Lines changed: 113 additions & 53 deletions

File tree

region/norfair/crocomire/Indiana Jones Room.json

Lines changed: 64 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -261,10 +261,10 @@
261261
},
262262
"requires": [
263263
{"shineChargeFrames": 110},
264+
"canShinechargeMovementComplex",
264265
"canPreciseWalljump",
265266
"canConsecutiveWalljump",
266-
"canShinechargeMovement",
267-
"canMidairShinespark",
267+
"canHorizontalMidairShinespark",
268268
{"shinespark": {"frames": 78}}
269269
],
270270
"flashSuitChecked": true,
@@ -281,10 +281,10 @@
281281
}
282282
},
283283
"requires": [
284+
"canShinechargeMovementComplex",
284285
"canPreciseWalljump",
285286
"canConsecutiveWalljump",
286-
"canShinechargeMovement",
287-
"canMidairShinespark",
287+
"canHorizontalMidairShinespark",
288288
{"shinespark": {"frames": 78}}
289289
],
290290
"flashSuitChecked": true,
@@ -299,20 +299,22 @@
299299
},
300300
"requires": [
301301
{"shineChargeFrames": 80},
302+
"HiJump",
303+
"canShinechargeMovementComplex",
304+
"canHorizontalMidairShinespark",
302305
{"or": [
303306
{"and": [
304307
"canWalljump",
305-
{"shinespark": {"frames": 20}}
308+
{"shinespark": {"frames": 80}}
306309
]},
307-
"canTrickyDashJump"
308-
]},
309-
"HiJump",
310-
"canShinechargeMovement",
311-
"canMidairShinespark",
312-
{"shinespark": {"frames": 60}}
310+
{"and": [
311+
"canTrickyDashJump",
312+
{"shinespark": {"frames": 60}}
313+
]}
314+
]}
313315
],
314316
"flashSuitChecked": true,
315-
"note": "Walljump or build run speed using the full runway to jump high enough for the shinespark."
317+
"note": "Wall jump or build run speed using the full runway to jump high enough for the shinespark."
316318
},
317319
{
318320
"id": 9,
@@ -325,20 +327,22 @@
325327
}
326328
},
327329
"requires": [
330+
"HiJump",
331+
"canHorizontalMidairShinespark",
332+
"canShinechargeMovementComplex",
328333
{"or": [
329334
{"and": [
330335
"canWalljump",
331-
{"shinespark": {"frames": 20}}
336+
{"shinespark": {"frames": 80}}
332337
]},
333-
"canTrickyDashJump"
334-
]},
335-
"HiJump",
336-
"canShinechargeMovement",
337-
"canMidairShinespark",
338-
{"shinespark": {"frames": 60}}
338+
{"and": [
339+
"canTrickyDashJump",
340+
{"shinespark": {"frames": 60}}
341+
]}
342+
]}
339343
],
340344
"flashSuitChecked": true,
341-
"note": "Walljump or build run speed using the full runway to jump high enough for the shinespark."
345+
"note": "Wall jump or build run speed using the full runway to jump high enough for the shinespark."
342346
},
343347
{
344348
"id": 10,
@@ -350,8 +354,9 @@
350354
"requires": [
351355
{"shineChargeFrames": 155},
352356
{"notable": "Left Side Diagonal Shinespark"},
357+
"h_speedJump",
353358
"canTrickyJump",
354-
"canShinechargeMovementComplex",
359+
"canShinechargeMovementTricky",
355360
"canMidairShinespark",
356361
{"shinespark": {"frames": 40}}
357362
],
@@ -620,6 +625,7 @@
620625
"requires": [
621626
"canWalljump",
622627
"canShinechargeMovementComplex",
628+
"canHorizontalMidairShinespark",
623629
{"obstaclesCleared": ["B"]},
624630
{"or": [
625631
{"canShineCharge": {"usedTiles": 32, "gentleUpTiles": 6, "openEnd": 1}},
@@ -639,7 +645,9 @@
639645
"name": "Big Jump Horizontal Shinespark",
640646
"requires": [
641647
{"notable": "Big Jump Shinespark"},
648+
"h_speedJump",
642649
"canShinechargeMovementComplex",
650+
"canHorizontalMidairShinespark",
643651
{"obstaclesCleared": ["B"]},
644652
{"canShineCharge": {"usedTiles": 32, "gentleDownTiles": 6, "openEnd": 1}},
645653
{"shinespark": {"frames": 52}},
@@ -660,13 +668,25 @@
660668
"canShinechargeMovementTricky",
661669
{"obstaclesCleared": ["B"]},
662670
{"canShineCharge": {"usedTiles": 23, "gentleDownTiles": 6, "openEnd": 1}},
663-
{"shinespark": {"frames": 26}}
671+
{"or": [
672+
{"and": [
673+
"h_speedJump",
674+
{"shinespark": {"frames": 30, "excessFrames": 2}}
675+
]},
676+
{"shinespark": {"frames": 46, "excessFrames": 2}}
677+
]}
664678
],
665679
"flashSuitChecked": true,
666680
"note": [
667681
"Charge a spark to the right a specific distance of about 6 tiles past the broken Speed blocks.",
668-
"Then turn around, run and jump, and activate a diagonal spark as late as possible.",
669-
"By shortening the jump, it is possible to kill a Ripper and collect its drop while falling."
682+
"Then turn around, run and jump, and diagonal spark as late as possible. By shortening the jump it is easier but uses more Energy.",
683+
"With a shortened jump, it is possible but not expected to kill a Ripper and collect its drop while falling.",
684+
"Alternatively, it is possible to shinecharge right to left, then run and jump and then shinespark just before hitting the acid;",
685+
"This is a bit tighter and uses more Energy, but doesn't rely on the larger jump from Speed Booster."
686+
],
687+
"devNote": [
688+
"There is a large variance in the number of shinespark frames based on the runway used and how long jump is held.",
689+
"The frames included are a reasonable approximation, although a tighter set of frames could be included with more specific details."
670690
]
671691
},
672692
{
@@ -718,6 +738,7 @@
718738
{"canShineCharge": {"usedTiles": 32, "gentleUpTiles": 6, "openEnd": 1}},
719739
"canWalljump",
720740
"canShinechargeMovementComplex",
741+
"canHorizontalMidairShinespark",
721742
{"shinespark": {"frames": 85}}
722743
],
723744
"exitCondition": {
@@ -735,6 +756,7 @@
735756
{"canShineCharge": {"usedTiles": 32, "gentleDownTiles": 6, "openEnd": 1}},
736757
"canSpeedyJump",
737758
"canShinechargeMovementComplex",
759+
"canHorizontalMidairShinespark",
738760
{"shinespark": {"frames": 57}}
739761
],
740762
"exitCondition": {
@@ -751,9 +773,11 @@
751773
"name": "Leave With Spark (Short Speedy HiJump)",
752774
"requires": [
753775
"HiJump",
776+
"canSpeedyJump",
754777
{"obstaclesCleared": ["B", "E"]},
755778
{"canShineCharge": {"usedTiles": 32, "gentleDownTiles": 6, "openEnd": 1}},
756779
"canShinechargeMovementComplex",
780+
"canHorizontalMidairShinespark",
757781
{"shinespark": {"frames": 56}}
758782
],
759783
"exitCondition": {
@@ -771,6 +795,7 @@
771795
"h_shinechargeMaxRunway",
772796
"canSpeedyJump",
773797
"canShinechargeMovementComplex",
798+
"canHorizontalMidairShinespark",
774799
{"shinespark": {"frames": 53}}
775800
],
776801
"exitCondition": {
@@ -1496,16 +1521,29 @@
14961521
"requires": [
14971522
{"obstaclesCleared": ["B"]},
14981523
"canShinechargeMovement",
1524+
"canMidairShinespark",
14991525
{"or": [
15001526
{"canShineCharge": {"usedTiles": 32, "gentleUpTiles": 6, "openEnd": 1}},
15011527
{"and": [
15021528
"h_shinechargeMaxRunway",
15031529
{"obstaclesCleared": ["A"]}
15041530
]}
15051531
]},
1506-
{"shinespark": {"frames": 40}}
1532+
{"or": [
1533+
{"shinespark": {"frames": 31, "excessFrames": 6}},
1534+
{"and": [
1535+
"HiJump",
1536+
{"shinespark": {"frames": 25, "excessFrames": 5}}
1537+
]},
1538+
{"and": [
1539+
"HiJump",
1540+
"canSpeedyJump",
1541+
{"shinespark": {"frames": 19, "excessFrames": 6}}
1542+
]}
1543+
]}
15071544
],
1508-
"flashSuitChecked": true
1545+
"flashSuitChecked": true,
1546+
"devNote": "FIXME: A big jump spark could be used to save Energy."
15091547
},
15101548
{
15111549
"id": 40,

schema/m3-string-requirements.schema.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -208,9 +208,10 @@
208208
"canSidePlatformCrossRoomJump",
209209
"canShinespark",
210210
"canHorizontalShinespark",
211+
"canHorizontalMidairShinespark",
212+
"canShinechargeMovement",
211213
"canMidairShinespark",
212214
"canShinesparkDeepStuck",
213-
"canShinechargeMovement",
214215
"canShinechargeMovementComplex",
215216
"canShinechargeMovementTricky",
216217
"canUseSpeedEchoes",

tech.json

Lines changed: 47 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -2199,25 +2199,62 @@
21992199
],
22002200
"extensionTechs": [
22012201
{
2202-
"id": 134,
2203-
"name": "canMidairShinespark",
2202+
"name": "canHorizontalMidairShinespark",
22042203
"techRequires": [
2205-
"canHorizontalShinespark"
2204+
"canHorizontalShinespark",
2205+
"canMidairShinespark"
22062206
],
22072207
"otherRequires": [],
22082208
"note": [
2209-
"The ability to jump and shinespark mid-air: vertically, diagonally, or horizontally.",
2209+
"The ability to jump and shinespark horizontally mid-air.",
22102210
"From a spin jump, a shinespark wind-up is triggered by releasing either forward or jump (or both) and pressing either up or angle-up.",
2211-
"The wind-up' is a brief period during which the player can control the direction of the spark.",
2211+
"The wind-up is a brief period during which the player can control the direction of the spark.",
22122212
"During the wind-up, if jump is pressed together with up, angle-up, or forward, Samus will immediately spark up, diagonally, or horizontally, respectively.",
22132213
"If the wind-up expires, Samus will default to a vertical spark.",
2214-
"If jump is held when activating the wind-up by pressing up or angle-up, then the wind-up is effectively skipped as the spark activates immediately.",
2215-
"For a mid-air horizontal spark (the trickiest case), the sequence is to spin-jump, release jump, tap up or angle-up to activate the wind-up, then press forward and jump to spark;",
2214+
"If jump is held when activating the wind-up by pressing up or angle-up, then the wind-up is effectively skipped as the spark activates immediately."
2215+
],
2216+
"detailNote": [
2217+
"For a mid-air horizontal spark, the sequence is to spin-jump, release jump, tap up or angle-up to activate the wind-up, then press forward and jump to spark;",
22162218
"it is also possible to hold forward the entire time;",
22172219
"either way, the important points are to be sure to release jump before activating the wind-up,",
2218-
"and be sure to release up/angle-up (pressing forward instead) before repressing jump to activate the spark.",
2220+
"and be sure to release up/angle-up (pressing or holding forward instead) before repressing jump to activate the spark.",
22192221
"The wind-up period is fairly lenient, so the timing of the jump input after the up/angle doesn't need to be rushed.",
22202222
"Note that mid-air shinesparks can't be performed from a fall, only from a jump."
2223+
]
2224+
}
2225+
]
2226+
},
2227+
{
2228+
"id": 136,
2229+
"name": "canShinechargeMovement",
2230+
"techRequires": [
2231+
"canShinespark"
2232+
],
2233+
"otherRequires": [],
2234+
"note": [
2235+
"The ability to perform simple movement with a shinespark charge timer running to get into position to shinespark.",
2236+
"This reposition may be necessary to avoid obstacles, conserve energy, etc.",
2237+
"After moving, be sure to wait for Samus to come to a complete stop before pressing jump to spark,",
2238+
"because if Samus has horizontal momentum then jumping will cause Samus to spin jump instead of sparking."
2239+
],
2240+
"extensionTechs": [
2241+
{
2242+
"id": 134,
2243+
"name": "canMidairShinespark",
2244+
"techRequires": [
2245+
"canShinechargeMovement"
2246+
],
2247+
"otherRequires": [],
2248+
"note": [
2249+
"The ability to jump and shinespark mid-air: vertically or diagonally. This is often used to save Energy when shinesparking.",
2250+
"This is typically done from a spin jump, in order to not spark immediately, while still on the ground.",
2251+
"To shinespark vertically, either press up while midair, or release jump and then press angle up.",
2252+
"To spark diagonally, press angle up while midair while still holding jump (or repressing jump) but while not holding forward."
2253+
],
2254+
"detailNote": [
2255+
"Midair shinesparking is complex and there are other methods to trigger them, but these are some of the easiest.",
2256+
"It is also possible to shinespark horizontally, but that is not expected here.",
2257+
"Note that mid-air shinesparks can't be performed from a fall, only from a jump."
22212258
],
22222259
"extensionTechs": [
22232260
{
@@ -2251,29 +2288,13 @@
22512288
]
22522289
}
22532290
]
2254-
}
2255-
]
2256-
},
2257-
{
2258-
"id": 136,
2259-
"name": "canShinechargeMovement",
2260-
"techRequires": [
2261-
"canShinespark"
2262-
],
2263-
"otherRequires": [],
2264-
"note": [
2265-
"The ability to perform simple movement with a shinespark charge timer running to get into position to shinespark.",
2266-
"This reposition may be necessary to avoid obstacles, conserve energy, etc.",
2267-
"After moving, be sure to wait for Samus to come to a complete stop before pressing jump to spark,",
2268-
"because if Samus has horizontal momentum then jumping will cause Samus to spin jump instead of sparking."
2269-
],
2270-
"extensionTechs": [
2291+
},
22712292
{
22722293
"id": 137,
22732294
"name": "canShinechargeMovementComplex",
22742295
"techRequires": [
22752296
"canShinechargeMovement",
2276-
"canMidairShinespark"
2297+
"canHorizontalMidairShinespark"
22772298
],
22782299
"otherRequires": [],
22792300
"note": [

0 commit comments

Comments
 (0)