Skip to content

Commit 35e9714

Browse files
authored
Merge pull request #2406 from kjbranch/r-cf-easy
Add canTrickyRModeCrystalFlashInterrupt, add some uses in Maridia
2 parents fc849ab + 9741ae3 commit 35e9714

6 files changed

Lines changed: 315 additions & 4 deletions

File tree

helpers.json

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1650,6 +1650,13 @@
16501650
{"gainFlashSuit": {}}
16511651
]
16521652
},
1653+
{
1654+
"name": "h_artificialMorphTrickyRModeCrystalFlashInterrupt",
1655+
"requires": [
1656+
{"tech": "canTrickyRModeCrystalFlashInterrupt"},
1657+
"h_artificialMorphRModeCrystalFlashInterrupt"
1658+
]
1659+
},
16531660
{
16541661
"name": "h_artificialMorphMovement",
16551662
"requires": [

region/maridia/inner-green/Shaktool Room.json

Lines changed: 154 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -273,6 +273,93 @@
273273
"flashSuitChecked": true,
274274
"note": "This takes 1 min 40 sec if Shaktool is done digging."
275275
},
276+
{
277+
"link": [1, 1],
278+
"name": "R-Mode Crystal Flash Interrupt",
279+
"entranceCondition": {
280+
"comeInWithRMode": {}
281+
},
282+
"requires": [
283+
"canRModeCrystalFlashInterrupt",
284+
{"or": [
285+
{"and": [
286+
{"ammo": {"type": "Missile", "count": 10}},
287+
{"or": [
288+
"h_partialEnemyDamageReduction",
289+
{"and": [
290+
{"resourceCapacity": [{"type": "RegularEnergy", "count": 199}]},
291+
{"resourceCapacity": [{"type": "ReserveEnergy", "count": 199}]}
292+
]}
293+
]}
294+
]},
295+
{"and": [
296+
{"ammo": {"type": "Missile", "count": 2}},
297+
"canTrickyRModeCrystalFlashInterrupt"
298+
]}
299+
]}
300+
],
301+
"flashSuitChecked": true,
302+
"note": [
303+
"This requires a precisely timed Crystal Flash, such that Shaktool hits Samus immediately after she gets Reserve Energy, to prevent getting double hit.",
304+
"With a second Reserve Tank and an Energy Tank, or the damage reduction from a suit, Samus is able to survive a second hit."
305+
]
306+
},
307+
{
308+
"link": [1, 1],
309+
"name": "Direct G-mode Morph, Crystal Flash Interrupt",
310+
"entranceCondition": {
311+
"comeInWithGMode": {
312+
"mode": "direct",
313+
"morphed": true
314+
}
315+
},
316+
"requires": [
317+
"h_artificialMorphRModeCrystalFlashInterrupt",
318+
{"or": [
319+
{"and": [
320+
{"ammo": {"type": "Missile", "count": 10}},
321+
{"or": [
322+
"h_partialEnemyDamageReduction",
323+
{"and": [
324+
{"resourceCapacity": [{"type": "RegularEnergy", "count": 199}]},
325+
{"resourceCapacity": [{"type": "ReserveEnergy", "count": 199}]}
326+
]}
327+
]}
328+
]},
329+
{"and": [
330+
{"ammo": {"type": "Missile", "count": 2}},
331+
"h_artificialMorphTrickyRModeCrystalFlashInterrupt"
332+
]}
333+
]},
334+
{"or": [
335+
"h_artificialMorphSpringBall",
336+
{"and": [
337+
{"or": [
338+
"canInsaneJump",
339+
"Gravity"
340+
]},
341+
{"or": [
342+
"h_artificialMorphBombs",
343+
{"ammo": {"type": "PowerBomb", "count": 2}}
344+
]}
345+
]},
346+
"canBePatient",
347+
{"and": [
348+
"canRiskPermanentLossOfAccess",
349+
{"not": "f_ShaktoolDoneDigging"}
350+
]}
351+
]}
352+
],
353+
"flashSuitChecked": true,
354+
"note": [
355+
"This requires a precisely timed Crystal Flash, such that Shaktool hits Samus immediately after she gets Reserve Energy, to prevent getting double hit.",
356+
"With a second Reserve Tank and an Energy Tank, or the damage reduction from a suit, Samus is able to survive a second hit."
357+
],
358+
"detailNote": [
359+
"If the wall is already broken, either wait for Shaktool to cross the room or move in front of it.",
360+
"It is possible to enter the room and land on the doorsill, then bomb or Power Bomb boost across when the tide is high."
361+
]
362+
},
276363
{
277364
"id": 8,
278365
"link": [1, 2],
@@ -817,6 +904,73 @@
817904
"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.",
818905
"Resetting the room also fixes the camera, which gets broken in this state."
819906
]
907+
},
908+
{
909+
"link": [2, 2],
910+
"name": "R-Mode Crystal Flash Interrupt",
911+
"entranceCondition": {
912+
"comeInWithRMode": {}
913+
},
914+
"requires": [
915+
"f_ShaktoolDoneDigging",
916+
"canRModeCrystalFlashInterrupt",
917+
{"or": [
918+
{"and": [
919+
{"ammo": {"type": "Missile", "count": 10}},
920+
{"or": [
921+
"h_partialEnemyDamageReduction",
922+
{"and": [
923+
{"resourceCapacity": [{"type": "RegularEnergy", "count": 199}]},
924+
{"resourceCapacity": [{"type": "ReserveEnergy", "count": 199}]}
925+
]}
926+
]}
927+
]},
928+
{"and": [
929+
{"ammo": {"type": "Missile", "count": 2}},
930+
"canTrickyRModeCrystalFlashInterrupt"
931+
]}
932+
]}
933+
],
934+
"flashSuitChecked": true,
935+
"note": [
936+
"This requires a precisely timed Crystal Flash, such that Shaktool hits Samus immediately after she gets Reserve Energy, to prevent getting double hit.",
937+
"With a second Reserve Tank and an Energy Tank, or the damage reduction from a suit, Samus is able to survive a second hit."
938+
]
939+
},
940+
{
941+
"link": [2, 2],
942+
"name": "Direct G-mode Morph, Crystal Flash Interrupt",
943+
"entranceCondition": {
944+
"comeInWithGMode": {
945+
"mode": "direct",
946+
"morphed": true
947+
}
948+
},
949+
"requires": [
950+
"f_ShaktoolDoneDigging",
951+
"h_artificialMorphRModeCrystalFlashInterrupt",
952+
{"or": [
953+
{"and": [
954+
{"ammo": {"type": "Missile", "count": 10}},
955+
{"or": [
956+
"h_partialEnemyDamageReduction",
957+
{"and": [
958+
{"resourceCapacity": [{"type": "RegularEnergy", "count": 199}]},
959+
{"resourceCapacity": [{"type": "ReserveEnergy", "count": 199}]}
960+
]}
961+
]}
962+
]},
963+
{"and": [
964+
{"ammo": {"type": "Missile", "count": 2}},
965+
"h_artificialMorphTrickyRModeCrystalFlashInterrupt"
966+
]}
967+
]}
968+
],
969+
"flashSuitChecked": true,
970+
"note": [
971+
"This requires a precisely timed Crystal Flash, such that Shaktool hits Samus immediately after she gets Reserve Energy, to prevent getting double hit.",
972+
"With a second Reserve Tank and an Energy Tank, or the damage reduction from a suit, Samus is able to survive a second hit."
973+
]
820974
}
821975
],
822976
"notables": [

region/maridia/inner-yellow/Plasma Room.json

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -322,6 +322,63 @@
322322
],
323323
"flashSuitChecked": true
324324
},
325+
{
326+
"link": [1, 1],
327+
"name": "R-Mode Crystal Flash Interrupt",
328+
"entranceCondition": {
329+
"comeInWithRMode": {}
330+
},
331+
"requires": [
332+
"canRModeCrystalFlashInterrupt",
333+
{"ammo": {"type": "Missile", "count": 10}},
334+
{"or": [
335+
"canTrickyDodgeEnemies",
336+
{"enemyDamage": {
337+
"enemy": "Pink Space Pirate (standing)",
338+
"type": "laser",
339+
"hits": 1
340+
}}
341+
]}
342+
],
343+
"flashSuitChecked": true,
344+
"note": [
345+
"Crystal Flash behind the pirate while it is turning its head. It will turn around during the Crystal Flash and shoot Samus with lasers.",
346+
"Quickly remorph once Samus regains mobility to prevent taking a third laser hit."
347+
],
348+
"devNote": [
349+
"Works with 0 or 1 E-Tank.",
350+
"FIXME: There may be a use for using a lower pirate instead, or for doing this while killing the pirates another way."
351+
]
352+
},
353+
{
354+
"link": [1, 1],
355+
"name": "Direct G-mode Morph, Crystal Flash Interrupt",
356+
"entranceCondition": {
357+
"comeInWithGMode": {
358+
"mode": "direct",
359+
"morphed": true
360+
}
361+
},
362+
"requires": [
363+
"h_artificialMorphRModeCrystalFlashInterrupt",
364+
"canComplexGMode",
365+
{"ammo": {"type": "Missile", "count": 10}},
366+
{"or": [
367+
"h_artificialMorphSpringFling",
368+
{"and": [
369+
"h_artificialMorphBombHorizontally",
370+
"h_additionalBomb"
371+
]}
372+
]}
373+
],
374+
"flashSuitChecked": true,
375+
"note": [
376+
"On entry, the pirate will place a stationary, invisible laser.",
377+
"Cross the chasm while trying to avoid allowing it to place more lasers, with a bomb boost or spring fling.",
378+
"Move to the top of the platform only while the pirate is turning its head.",
379+
"Just before it is about to rotate its head again, Crystal Flash in a spot that is free of lasers in order to be able to gain some Reserve Energy before getting hit."
380+
]
381+
},
325382
{
326383
"id": 9,
327384
"link": [1, 2],

region/maridia/outer/Mama Turtle Room.json

Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -523,6 +523,84 @@
523523
],
524524
"flashSuitChecked": true
525525
},
526+
{
527+
"link": [1, 1],
528+
"name": "R-Mode Crystal Flash Interrupt",
529+
"entranceCondition": {
530+
"comeInWithRMode": {}
531+
},
532+
"requires": [
533+
"canRModeCrystalFlashInterrupt",
534+
{"or": [
535+
{"and": [
536+
{"ammo": {"type": "Missile", "count": 10}},
537+
{"or": [
538+
"h_fullEnemyDamageReduction",
539+
{"and": [
540+
"h_partialEnemyDamageReduction",
541+
{"resourceCapacity": [{"type": "RegularEnergy", "count": 149}]},
542+
{"resourceCapacity": [{"type": "ReserveEnergy", "count": 149}]}
543+
]},
544+
{"and": [
545+
{"resourceCapacity": [{"type": "RegularEnergy", "count": 249}]},
546+
{"resourceCapacity": [{"type": "ReserveEnergy", "count": 249}]}
547+
]}
548+
]}
549+
]},
550+
{"and": [
551+
{"ammo": {"type": "Missile", "count": 2}},
552+
"canTrickyRModeCrystalFlashInterrupt"
553+
]}
554+
]}
555+
],
556+
"flashSuitChecked": true,
557+
"note": [
558+
"This requires a precisely timed Crystal Flash, such that Mama Turtle hits Samus immediately after she gets Reserve Energy, to prevent getting double hit.",
559+
"The precise timing is not required with the ability to survive another hit after the Reserve trigger.",
560+
"Samus will sometimes be forced onto Mama Turtle's back, which can force a third hit; this can be prevented by holding forward as she hits Samus."
561+
]
562+
},
563+
{
564+
"link": [1, 1],
565+
"name": "Direct G-mode Morph, Crystal Flash Interrupt",
566+
"entranceCondition": {
567+
"comeInWithGMode": {
568+
"mode": "direct",
569+
"morphed": true
570+
}
571+
},
572+
"requires": [
573+
"h_artificialMorphRModeCrystalFlashInterrupt",
574+
{"or": [
575+
{"and": [
576+
{"ammo": {"type": "Missile", "count": 10}},
577+
{"or": [
578+
"h_fullEnemyDamageReduction",
579+
{"and": [
580+
"h_partialEnemyDamageReduction",
581+
{"resourceCapacity": [{"type": "RegularEnergy", "count": 149}]},
582+
{"resourceCapacity": [{"type": "ReserveEnergy", "count": 149}]}
583+
]},
584+
{"and": [
585+
{"resourceCapacity": [{"type": "RegularEnergy", "count": 249}]},
586+
{"resourceCapacity": [{"type": "ReserveEnergy", "count": 249}]}
587+
]}
588+
]}
589+
]},
590+
{"and": [
591+
{"ammo": {"type": "Missile", "count": 2}},
592+
"canTrickyRModeCrystalFlashInterrupt"
593+
]}
594+
]}
595+
],
596+
"flashSuitChecked": true,
597+
"note": [
598+
"On room entry, roll into one of the baby turtles in order to get Mama Turtle to wake up.",
599+
"This then requires a precisely timed Crystal Flash, such that Mama Turtle hits Samus immediately after she gets Reserve Energy, to prevent getting double hit.",
600+
"The precise timing is not required with the ability to survive another hit after the Reserve trigger.",
601+
"Samus will sometimes be forced onto Mama Turtle's back, which can force a third hit; this can be prevented by holding forward as she hits Samus."
602+
]
603+
},
526604
{
527605
"id": 4,
528606
"link": [1, 2],

region/wreckedship/main/Spiky Death Room.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -223,7 +223,7 @@
223223
"comeInWithRMode": {}
224224
},
225225
"requires": [
226-
"canRModeCrystalFlashInterrupt",
226+
"canTrickyRModeCrystalFlashInterrupt",
227227
{"ammo": {"type": "Missile", "count": 2}}
228228
],
229229
"flashSuitChecked": true,
@@ -249,7 +249,7 @@
249249
}
250250
},
251251
"requires": [
252-
"h_artificialMorphRModeCrystalFlashInterrupt",
252+
"h_artificialMorphTrickyRModeCrystalFlashInterrupt",
253253
{"ammo": {"type": "Missile", "count": 2}}
254254
],
255255
"flashSuitChecked": true,
@@ -1013,7 +1013,7 @@
10131013
"comeInWithRMode": {}
10141014
},
10151015
"requires": [
1016-
"canRModeCrystalFlashInterrupt",
1016+
"canTrickyRModeCrystalFlashInterrupt",
10171017
{"ammo": {"type": "Missile", "count": 2}}
10181018
],
10191019
"flashSuitChecked": true,
@@ -1039,7 +1039,7 @@
10391039
}
10401040
},
10411041
"requires": [
1042-
"h_artificialMorphRModeCrystalFlashInterrupt",
1042+
"h_artificialMorphTrickyRModeCrystalFlashInterrupt",
10431043
{"ammo": {"type": "Missile", "count": 2}}
10441044
],
10451045
"flashSuitChecked": true,

tech.json

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2424,6 +2424,21 @@
24242424
"The amount of Energy remaining after the strat is complex and depends on the number of Reserve Tanks, when Samus gets hit, and by which enemy;",
24252425
"for simplicity, it is just assumed that Samus retains the small amount of Energy she had before the Crystal Flash (50 or less) and doesn't gain any refill.",
24262426
"For artificial morph setups, the reserve trigger exits G-mode."
2427+
],
2428+
"extensionTechs": [
2429+
{
2430+
"name": "canTrickyRModeCrystalFlashInterrupt",
2431+
"techRequires": [
2432+
"canRModeCrystalFlashInterrupt"
2433+
],
2434+
"otherRequires": [],
2435+
"note": [
2436+
"The ability to R-mode forced standup Crystal Flash interrupt in more complex scenarios.",
2437+
"This may include timing enemy contact to occur immediately after Samus gains Reserve Energy, to prevent a double hit;",
2438+
"unintuitive enemy positioning, to prevent the enemy from being killed by the Power Bomb or light orb;",
2439+
"and other unusual enemy setups."
2440+
]
2441+
}
24272442
]
24282443
},
24292444
{

0 commit comments

Comments
 (0)