Skip to content

Commit 2e3536e

Browse files
authored
Merge branch 'master' into blue-suit-schema
2 parents 254fd52 + e29aa90 commit 2e3536e

30 files changed

Lines changed: 1805 additions & 646 deletions

helpers.json

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1541,6 +1541,15 @@
15411541
"Morph will not be a usable alternative to get up very constrained ledges, such as in a morph tunnel.",
15421542
"IBJ is not usable for underwater rooms without Gravity."
15431543
]
1544+
},
1545+
{
1546+
"name": "h_RModeKnockbackSpark",
1547+
"requires": [
1548+
{"partialRefill": {"type": "ReserveEnergy", "limit": 4}},
1549+
{"autoReserveTrigger": {"minReserveEnergy": 1, "maxReserveEnergy": 4}},
1550+
"canRModeKnockbackSpark",
1551+
{"shinespark": {"frames": 4, "excessFrames": 4}}
1552+
]
15441553
}
15451554
]
15461555
}

logicalRequirements.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -777,4 +777,6 @@ __Example:__
777777
{"disableEquipment": "HiJump"}
778778
```
779779

780-
Note that while carrying a blue suit, disabling Speed Booster would result in a loss of the blue suit.
780+
While carrying a blue suit, disabling Speed Booster would result in a loss of the blue suit.
781+
782+
Note that the requirement `{"disableEquipment": "ETank"}` occurs in some strats. This is not a functionality of the vanilla game but may be supported in randomizers or other modifications of the game: it means that the player has a way to control the amount of ETanks that are currently active. It is commonly required in R-mode strats where the player may need to farm non-respawning enemies in the room to put energy back into reserves.

region/crateria/east/The Moat.json

Lines changed: 43 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -396,37 +396,62 @@
396396
}
397397
},
398398
"requires": [
399+
{"or": [
400+
{"notable": "First-Try CWJ"},
401+
{"and": [
402+
"h_bombThings",
403+
"h_additionalBomb",
404+
"h_additionalBomb"
405+
]}
406+
]},
399407
"canCWJ",
400-
"canDisableEquipment"
408+
{"disableEquipment": "HiJump"},
409+
{"disableEquipment": "SpeedBooster"}
401410
],
402411
"collectsItems": [3],
403412
"flashSuitChecked": true,
404413
"note": [
405-
"Aligning against the closed door shell on the other side of the transition.",
414+
"Align against the closed door shell on the other side of the transition.",
406415
"Run towards the water and jump on the last possible frame.",
407416
"Perform the CWJ off of the item pedestal to cross to the other side."
417+
],
418+
"detailNote": [
419+
"This requires running and jumping on the last possible frame before Samus would run off into the water.",
420+
"If the setup is done correctly, there will then be a 2-frame window for the wall jump."
408421
]
409422
},
410423
{
411424
"id": 13,
412425
"link": [1, 2],
413426
"name": "Continuous Walljump, Open Doorway",
414427
"requires": [
428+
{"or": [
429+
{"notable": "First-Try CWJ"},
430+
{"and": [
431+
"h_bombThings",
432+
"h_additionalBomb",
433+
"h_additionalBomb"
434+
]}
435+
]},
415436
"canCWJ",
416-
"canDisableEquipment",
437+
{"disableEquipment": "HiJump"},
438+
{"disableEquipment": "SpeedBooster"},
417439
{"doorUnlockedAtNode": 1},
418-
{"or": [
419-
"canMoonwalk",
420-
"Morph",
421-
"canXRayTurnaround"
422-
]}
440+
"h_backIntoCorner"
423441
],
424442
"collectsItems": [3],
425443
"flashSuitChecked": true,
426444
"note": [
427445
"Stand on the farthest pixel into the door possible using moonwalk, X-Ray, or morphball turn around.",
428446
"Run towards the water and jump on the last possible frame.",
429447
"Perform the CWJ off of the item pedestal to cross to the other side."
448+
],
449+
"detailNote": [
450+
"This requires running and jumping on the last possible frame before Samus would run off into the water.",
451+
"There is either a 1-frame or 2-frame window for the wall jump, depending on Samus' X subpixel position.",
452+
"To get a 2-frame window, Samus must start in the leftmost 75% of the pixel next to the transition.",
453+
"One method to guarantee that Samus gets a good subpixel is to jump and press against the overhang to align with it,",
454+
"then land, turn around, and moonwalk back into position."
430455
]
431456
},
432457
{
@@ -1349,8 +1374,17 @@
13491374
"Perform a stationary spin jump with some dash speed, and do a continuous wall jump off the item pedestal.",
13501375
"Lay a Power Bomb (or Bomb) and use it to boost to the right, with a well-timed unmorph to reset fall speed."
13511376
]
1377+
},
1378+
{
1379+
"id": 4,
1380+
"name": "First-Try CWJ",
1381+
"note": [
1382+
"Perform a CWJ across the Moat on the first try, where failure may result in a softlock.",
1383+
"Run towards the water and jump on the last possible frame.",
1384+
"Perform the CWJ off of the item pedestal to cross to the other side."
1385+
]
13521386
}
13531387
],
13541388
"nextStratId": 66,
1355-
"nextNotableId": 4
1389+
"nextNotableId": 5
13561390
}

region/lowernorfair/east/Fast Pillars Setup Room.json

Lines changed: 27 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -533,7 +533,13 @@
533533
{"heatFrames": 250}
534534
],
535535
"flashSuitChecked": true,
536-
"note": "Spark vertically on room entry."
536+
"note": "Spark vertically on room entry.",
537+
"devNote": [
538+
"FIXME: a flash suit shinespark could be added, in case of coming from below,",
539+
"e.g. to handle the case where resetting the room through node 1 is not possible;",
540+
"but if coming from below, it would be faster to spark up the right side,",
541+
"which might require a new node above node 5 in order to represent it precisely."
542+
]
537543
},
538544
{
539545
"id": 14,
@@ -596,6 +602,7 @@
596602
"canCarefulJump",
597603
{"heatFrames": 90}
598604
],
605+
"flashSuitChecked": true,
599606
"note": [
600607
"Come in with blue speed, killing the lower two Pirates, with enough momentum to jump all the way up to the door."
601608
],
@@ -625,6 +632,7 @@
625632
]},
626633
{"heatFrames": 135}
627634
],
635+
"flashSuitChecked": true,
628636
"note": [
629637
"Come in with blue speed, with enough momentum to jump, kill the lower two Pirates, and land on the platform above.",
630638
"Then either quickly jump through the door before the top Pirate fires its laser, or wait for it to jump to the other side and then jump over it."
@@ -655,6 +663,7 @@
655663
]},
656664
{"heatFrames": 210}
657665
],
666+
"flashSuitChecked": true,
658667
"note": [
659668
"Come in with blue speed, run through the lowest Pirate, continuing with a short jump to kill the one on the right wall.",
660669
"Next run a specific distance to get speed to jump onto the platform.",
@@ -676,7 +685,8 @@
676685
"canTrickyDodgeEnemies",
677686
"canInsaneJump",
678687
{"heatFrames": 140}
679-
]
688+
],
689+
"flashSuitChecked": true
680690
},
681691
{
682692
"id": 107,
@@ -713,6 +723,7 @@
713723
"requires": [
714724
"canTrickyDodgeEnemies"
715725
],
726+
"flashSuitChecked": true,
716727
"devNote": [
717728
"More difficult side platform entrances are not considered,",
718729
"because there is an alternative of doing a canTrickyDashJump with a 1-tile connected runway."
@@ -1009,7 +1020,8 @@
10091020
"requires": [
10101021
"h_heatProof",
10111022
"canTrickyGrappleJump"
1012-
]
1023+
],
1024+
"flashSuitChecked": false
10131025
},
10141026
{
10151027
"id": 94,
@@ -1030,7 +1042,8 @@
10301042
"h_heatProof",
10311043
"canTrickyGrappleJump",
10321044
"canBeExtremelyPatient"
1033-
]
1045+
],
1046+
"flashSuitChecked": false
10341047
},
10351048
{
10361049
"id": 96,
@@ -1170,6 +1183,7 @@
11701183
"canEnemyStuckMoonfall",
11711184
"canFreeFallClip"
11721185
],
1186+
"flashSuitChecked": true,
11731187
"note": [
11741188
"Freeze the standing Pirate and one of the wall Pirates above it, to be able to moonfall between them.",
11751189
"While moonfalling, charge a shot to kill the bottom Pirate, hold forward to change poses and clip past the Power Bomb blocks below."
@@ -2104,6 +2118,7 @@
21042118
"obstruction": [5, 6]
21052119
}
21062120
},
2121+
"flashSuitChecked": true,
21072122
"devNote": ["FIXME: An option of killing the Pirate can also be possible."]
21082123
},
21092124
{
@@ -2221,7 +2236,8 @@
22212236
"unlocksDoors": [
22222237
{"types": ["super"], "requires": []},
22232238
{"types": ["missiles", "powerbomb"], "requires": ["never"]}
2224-
]
2239+
],
2240+
"flashSuitChecked": true
22252241
},
22262242
{
22272243
"id": 89,
@@ -2235,7 +2251,8 @@
22352251
{"heatFrames": 55},
22362252
{"doorUnlockedAtNode": 4}
22372253
],
2238-
"unlocksDoors": [{"types": ["ammo"], "requires": []}]
2254+
"unlocksDoors": [{"types": ["ammo"], "requires": []}],
2255+
"flashSuitChecked": true
22392256
},
22402257
{
22412258
"id": 90,
@@ -2571,5 +2588,8 @@
25712588
],
25722589
"notables": [],
25732590
"nextStratId": 115,
2574-
"nextNotableId": 1
2591+
"nextNotableId": 1,
2592+
"devNote": [
2593+
"FIXME: add 2->3 and 3->2 leaveWithRunway strats, and open-door variants."
2594+
]
25752595
}

0 commit comments

Comments
 (0)