Skip to content

Commit 4560566

Browse files
authored
Merge pull request #2232 from blkerby/speed-keep-lenience
Climb Supers speed keep lenience
2 parents 45df541 + 864c17b commit 4560566

2 files changed

Lines changed: 70 additions & 21 deletions

File tree

helpers.json

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -407,6 +407,16 @@
407407
{"samusEaterFrames": 320}
408408
]
409409
},
410+
{
411+
"name": "h_speedKeepSpikeHitLeniency",
412+
"requires": [
413+
"h_XModeSpikeHitLeniency"
414+
],
415+
"devNote": [
416+
"Since a (spike) speed keep requires a frame-perfect unmorph with the same timing as spike X-mode,",
417+
"it is a reasonable default to have them share the same lenience."
418+
]
419+
},
410420
{
411421
"name": "h_extendedMoondanceBeetomLeniency",
412422
"requires": [
@@ -959,6 +969,13 @@
959969
"In this case, the total leniency is the base leniency h_XModeThornHitLeniency multiplied by the number of hits."
960970
]
961971
},
972+
{
973+
"name": "h_speedKeepSpikeHit",
974+
"requires": [
975+
{"spikeHits": 1},
976+
"h_speedKeepSpikeHitLeniency"
977+
]
978+
},
962979
{
963980
"name": "h_XRayMorphIceClip",
964981
"requires": [

region/crateria/central/Climb Supers Room.json

Lines changed: 53 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -821,16 +821,22 @@
821821
"requires": [
822822
"canSuperJump",
823823
{"shinespark": {"frames": 7, "excessFrames": 0}},
824-
{"spikeHits": 3},
824+
"h_XModeSpikeHit",
825825
{"or": [
826-
{"spikeHits": 3},
827-
"Grapple",
828-
"SpaceJump"
826+
{"and": [
827+
"h_XModeSpikeHit",
828+
"h_XModeSpikeHit"
829+
]},
830+
{"and": [
831+
"h_XModeSpikeHit",
832+
"SpaceJump"
833+
]},
834+
"Grapple"
829835
]}
830836
],
831837
"flashSuitChecked": true,
832838
"note": "Enter with a shinespark ready, activate XMode by bouncing into the spikes, then activate the shinespark but release XMode during the shinespark windup animation.",
833-
"devNote": ["One leniency spikehit given.", "There is 1 unusable tile in this runway."]
839+
"devNote": ["There is 1 unusable tile in this runway."]
834840
},
835841
{
836842
"id": 23,
@@ -839,19 +845,30 @@
839845
"requires": [
840846
{"notable": "In-Room X-Mode BlueSuit"},
841847
"canSuperJump",
842-
{"spikeHits": 3},
848+
"h_XModeSpikeHit",
849+
"h_XModeSpikeHit",
850+
"h_XModeSpikeHit",
843851
"h_shinechargeMaxRunway",
844852
{"shinespark": {"frames": 5}},
845-
{"spikeHits": 2},
853+
"h_XModeSpikeHit",
846854
{"or": [
847-
{"spikeHits": 1},
848-
"Grapple",
849-
"SpaceJump"
855+
{"and": [
856+
"h_XModeSpikeHit",
857+
"h_XModeSpikeHit"
858+
]},
859+
{"and": [
860+
"SpaceJump",
861+
"h_XModeSpikeHit"
862+
]},
863+
"Grapple"
850864
]}
851865
],
852866
"flashSuitChecked": true,
853-
"note": "Use X-Mode to store a spikesuit, and then convert that to a blue suit with more X-Mode.",
854-
"devNote": "One leniency spikehit given."
867+
"note": [
868+
"Use X-Mode to store a spikesuit, and then convert that to a blue suit with more X-Mode.",
869+
"By bouncing on the ledge and arm pumping a few tiles in the first X-Mode,",
870+
"it is possible to reach the right with a horizontal damage boost and only a single additional spike hit after the superjump."
871+
]
855872
},
856873
{
857874
"id": 24,
@@ -864,13 +881,18 @@
864881
"canChainTemporaryBlue",
865882
"can4HighMidAirMorph",
866883
"canSpeedKeep",
867-
{"spikeHits": 1},
884+
"h_speedKeepSpikeHit",
885+
"h_speedKeepSpikeHitLeniency",
868886
"canSpeedball"
869887
],
870888
"flashSuitChecked": true,
871889
"note": [
872890
"Bounce into the spikes and use a SpeedKeep to run on spikes to setup for a speedball towards the item.",
873891
"Bouncing on the platform near the door saves a spike hit."
892+
],
893+
"devNote": [
894+
"The extra lenience is because of the need to either to perform a very precise jump off the spikes",
895+
"or to start with a bounce on the spikes, taking an extra hit."
874896
]
875897
},
876898
{
@@ -888,7 +910,7 @@
888910
"canCarefulJump",
889911
"canSlowShortCharge",
890912
"can4HighMidAirMorph",
891-
{"spikeHits": 1},
913+
"h_speedKeepSpikeHit",
892914
"canSpeedball"
893915
],
894916
"note": [
@@ -911,16 +933,23 @@
911933
"canSpeedKeep",
912934
"canCarefulJump",
913935
{"canShineCharge": {"usedTiles": 21, "openEnd": 2}},
914-
{"spikeHits": 1},
936+
"h_speedKeepSpikeHit",
915937
{"or": [
916-
{"spikeHits": 1},
917-
"canChainTemporaryBlue"
938+
"h_speedKeepSpikeHit",
939+
{"and": [
940+
"canChainTemporaryBlue",
941+
"h_speedKeepSpikeHitLeniency"
942+
]}
918943
]},
919944
"canSpeedball"
920945
],
921946
"note": [
922947
"Bounce into the spikes and use a SpeedKeep to run on spikes to setup for a speedball towards the item.",
923948
"A DamageBoost SpeedKeep could be used instead of a Spike SpeedKeep with enough runspeed."
949+
],
950+
"devNote": [
951+
"The extra lenience is because of the need to either to perform a very precise jump off the spikes,",
952+
"or to start with a bounce on the spikes, taking an extra hit."
924953
]
925954
},
926955
{
@@ -936,21 +965,24 @@
936965
{"and": [
937966
"canChainTemporaryBlue",
938967
{"canShineCharge": {"usedTiles": 13, "openEnd": 1}},
939-
{"spikeHits": 1}
968+
"h_speedKeepSpikeHit"
940969
]},
941970
{"and": [
942971
{"canShineCharge": {"usedTiles": 14, "openEnd": 1}},
943-
{"spikeHits": 2}
972+
"h_speedKeepSpikeHit",
973+
"h_speedKeepSpikeHit"
944974
]},
945975
{"and": [
946976
"canChainTemporaryBlue",
947-
{"spikeHits": 3}
977+
"h_speedKeepSpikeHit",
978+
"h_speedKeepSpikeHit",
979+
"h_speedKeepSpikeHit"
948980
]}
949981
]},
950982
"canSpeedball"
951983
],
952984
"note": [
953-
"Using only the short runway and spike pit, use one or more SpeedKeeps to Speedball towards the item location.",
985+
"Using only the short runway and spike pit, use one or two SpeedKeeps to Speedball towards the item location.",
954986
"This requires either a very short shortcharge, or a second SpeedKeep in the spikes which also resets Samus' run speed with a crouch jump before spike i-frames expire."
955987
]
956988
},

0 commit comments

Comments
 (0)