Skip to content

Commit e40398b

Browse files
committed
Mother Brain left-to-right clips
1 parent 1728dea commit e40398b

4 files changed

Lines changed: 252 additions & 2 deletions

File tree

helpers.json

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,18 @@
3333
"requires": [ "Gravity" ],
3434
"devNote": "In the original game Gravity provides full immunity, but some randomizers also require Varia."
3535
},
36+
{
37+
"name": "h_fullEnemyDamageReduction",
38+
"requires": [
39+
"Gravity"
40+
],
41+
"note": [
42+
"Suit requirements in order to have 75% damage reduction from enemies."
43+
],
44+
"devNote": [
45+
"In the vanilla game, Gravity alone provides 75% damage reduction, but some randomizer may require both suits."
46+
]
47+
},
3648
{
3749
"name": "h_AllItemsSpawned",
3850
"requires": [ "never" ],

logicalRequirements.md

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -354,6 +354,23 @@ __Example:__
354354
]}
355355
```
356356

357+
#### resourceMaxCapacity object
358+
A `resourceMaxCapacity` object represents the need for Samus to have a capacity that does not exceed a set amount of a specific resource. It can have the following properties:
359+
* _type:_ The type of resource. Can have the following values:
360+
* Missile
361+
* Super
362+
* PowerBomb
363+
* RegularEnergy
364+
* ReserveEnergy
365+
* _count:_ The amount of capacity that Samus must not exceed.
366+
367+
A `resourceMaxCapacity` requirement generally includes an implicit requirement of `canRiskPermanentLossOfAccess`. In some randomizer contexts, this may be unnecessary, for example if it is known that the player cannot have collected items that would exceed the expected capacity, or if it is possible for the player to disable the extra items.
368+
369+
__Example:__
370+
```json
371+
{"resourceMaxCapacity": [{"type": "RegularEnergy", "count": 299}]}
372+
```
373+
357374
#### resourceAvailable object
358375
A `resourceAvailable` object represents the need for Samus to be holding at least a set amount of a specific resource. It has the following properties:
359376
* _type:_ The type of resource. Can have the following values:

region/tourian/main/Mother Brain Room.json

Lines changed: 188 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,15 @@
9292
"mapTileMask": [
9393
[1, 2, 1, 1]
9494
]
95+
},
96+
{
97+
"id": 8,
98+
"name": "Standing on Top Left of Mother Brain Tank",
99+
"nodeType": "junction",
100+
"nodeSubType": "junction",
101+
"mapTileMask": [
102+
[2, 1, 1, 1]
103+
]
95104
}
96105
],
97106
"obstacles": [
@@ -175,7 +184,8 @@
175184
"from": 1,
176185
"to": [
177186
{"id": 1},
178-
{"id": 3}
187+
{"id": 3},
188+
{"id": 8}
179189
]
180190
},
181191
{
@@ -236,6 +246,13 @@
236246
{"id": 6},
237247
{"id": 7}
238248
]
249+
},
250+
{
251+
"from": 8,
252+
"to": [
253+
{"id": 1},
254+
{"id": 3}
255+
]
239256
}
240257
],
241258
"strats": [
@@ -291,6 +308,27 @@
291308
"gModeRegainMobility": {},
292309
"flashSuitChecked": true
293310
},
311+
{
312+
"link": [1, 1],
313+
"name": "Come in With R-Mode",
314+
"entranceCondition": {
315+
"comeInWithRMode": {}
316+
},
317+
"requires": [],
318+
"clearsObstacles": ["A"],
319+
"flashSuitChecked": true
320+
},
321+
{
322+
"link": [1, 3],
323+
"name": "Mother Brain Knockback",
324+
"requires": [
325+
"f_MotherBrainGlassBroken"
326+
],
327+
"note": [
328+
"When the glass is broken, touching Mother Brain from the left will instantly transport Samus to the right.",
329+
"This gives Samus i-frames and knockback but does not cause damage."
330+
]
331+
},
294332
{
295333
"id": 6,
296334
"link": [1, 3],
@@ -304,6 +342,89 @@
304342
"h_BypassMotherBrainRoom"
305343
]
306344
},
345+
{
346+
"link": [1, 8],
347+
"name": "Suitless Crystal Flash Stand-Up With Ice",
348+
"requires": [
349+
{"notable": "Moondance Clip"},
350+
{"not": "f_MotherBrainGlassBroken"},
351+
"canTrickyDodgeEnemies",
352+
"canTrickyUseFrozenEnemies",
353+
"canCrystalFlash"
354+
],
355+
"note": [
356+
"Freeze all 3 Rinkas at close to the same time, ",
357+
"then quickly jump into the morph nook at the top-left of Mother Brain,",
358+
"and perform a Crystal Flash to stand up.",
359+
"If executed correctly, the Rinkas will not respawn during the Crystal Flash, so Samus will not take damage."
360+
]
361+
},
362+
{
363+
"link": [1, 8],
364+
"name": "G-Mode Morph Crystal Flash Stand-Up With Full Suit Protection",
365+
"entranceCondition": {
366+
"comeInWithGMode": {
367+
"mode": "any",
368+
"morphed": true
369+
}
370+
},
371+
"requires": [
372+
{"notable": "Moondance Clip"},
373+
{"not": "f_MotherBrainGlassBroken"},
374+
"h_canArtificialMorphMovement",
375+
"h_canArtificialMorphCrystalFlash",
376+
"h_fullEnemyDamageReduction",
377+
{"resourceCapacity": [{"type": "RegularEnergy", "count": 299}]},
378+
{"resourceAtMost": [{"type": "Energy", "count": 800}]}
379+
],
380+
"flashSuitChecked": true,
381+
"note": [
382+
"Use artificial morph to go inside the nook at the top-left of Mother Brain,",
383+
"then perform a Crystal Flash to stand up.",
384+
"Samus will take rapid damage from the Rinkas during the Crystal Flash but will be able to survive",
385+
"with the help of 75% damage reduction from suit protection."
386+
],
387+
"devNote": [
388+
"We don't bother modeling the obstacle 'A' state here.",
389+
"The strat will end with R-mode if direct G-mode was used.",
390+
"But it doesn't matter, since this strat requires an E-Tank,",
391+
"which means that R-mode (for 'light pillar' during the Mother Brain 2 fight) wouldn't be useful."
392+
]
393+
},
394+
{
395+
"link": [1, 8],
396+
"name": "G-Mode Morph Crystal Flash Interrupt",
397+
"entranceCondition": {
398+
"comeInWithGMode": {
399+
"mode": "direct",
400+
"morphed": true
401+
}
402+
},
403+
"requires": [
404+
{"notable": "Moondance Clip"},
405+
{"not": "f_MotherBrainGlassBroken"},
406+
"h_canArtificialMorphMovement",
407+
"h_canArtificialMorphCrystalFlash",
408+
{"resourceMaxCapacity": [{"type": "RegularEnergy", "count": 299}]},
409+
{"autoReserveTrigger": {"minReserveEnergy": 100}},
410+
{"enemyDamage": {"enemy": "Rinka", "type": "contact", "hits": 1}},
411+
{"gainFlashSuit": {}}
412+
],
413+
"flashSuitChecked": true,
414+
"note": [
415+
"Enter in R-mode or direct G-mode, and perform a Crystal Flash in the morph nook to the top-left of Mother Brain.",
416+
"During the Crystal Flash, allow the Rinkas to damage Samus down and trigger an auto-reserve refill,",
417+
"which will interrupt the Crystal Flash."
418+
],
419+
"detailNote": [
420+
"The interruption of the Crystal Flash (due to the R-mode forced standup) limits the damage that Samus takes during it;",
421+
"After the reserve trigger, Samus will take just one more Rinka hit."
422+
],
423+
"devNote": [
424+
"Having a small amount of E-Tanks ensures the reserve tanks can be filled by the Crystal Flash before the auto-reserve trigger.",
425+
"FIXME: A larger amount of E-Tanks can also work, but the reserves will not completely fill, so less energy would remain at the end."
426+
]
427+
},
307428
{
308429
"id": 7,
309430
"link": [2, 2],
@@ -917,6 +1038,61 @@
9171038
{"enemyDamage": {"enemy": "Rinka", "type": "contact", "hits": 1}}
9181039
],
9191040
"setsFlags": ["f_KilledZebetites4"]
1041+
},
1042+
{
1043+
"link": [8, 1],
1044+
"name": "Moondance Clip Break Glass",
1045+
"requires": [
1046+
{"notable": "Moondance Clip"},
1047+
"Wave",
1048+
"canTrickyDodgeEnemies",
1049+
{"or": [
1050+
"Ice",
1051+
"canBeExtremelyPatient"
1052+
]},
1053+
"canMoondance",
1054+
{"enemyDamage": {"enemy": "Rinka", "type": "contact", "hits": 1}},
1055+
{"ammo": {"type": "Missile", "count": 18}}
1056+
],
1057+
"setsFlags": ["f_MotherBrainGlassBroken"],
1058+
"note": [
1059+
"To be able to break the glass and leave out the left side, Samus must be at a specific horizontal X pixel position ($63).",
1060+
"Therefore, the Crystal Flash should have been performed at this position;",
1061+
"For the moondance, moonfalls must be performed only left-to-right, or Samus will fall out.",
1062+
"After 176 moonfalls, Samus will clip down into the tank.",
1063+
"Angle down and fire 18 Missiles into Mother Brain to break the tank.",
1064+
"If Samus is correctly positioned, she will then fall out and be free to move to the left."
1065+
],
1066+
"detailNote": [
1067+
"If Samus is at position $62 (a pixel to the left of the correct position),",
1068+
"it is possible for a Rinka hit to knock back Samus into position $63."
1069+
],
1070+
"devNote": [
1071+
"FIXME: Using some Supers in place of Missiles could be possible,",
1072+
"but if too many are used it might trigger the fight cutscene."
1073+
]
1074+
},
1075+
{
1076+
"link": [8, 3],
1077+
"name": "Moondance Clip Rinka Wall Ice Clip",
1078+
"requires": [
1079+
{"notable": "Moondance Clip"},
1080+
"Wave",
1081+
"canTrickyDodgeEnemies",
1082+
"canMoondance",
1083+
"canWallIceClip",
1084+
{"ammo": {"type": "Missile", "count": 18}}
1085+
],
1086+
"setsFlags": ["f_MotherBrainGlassBroken"],
1087+
"note": [
1088+
"Perform a moondance while killing the Rinkas, carefully avoiding being hit by them.",
1089+
"After 176 moonfalls, Samus will clip down into the tank.",
1090+
"Samus will be unable to turn around and will be invulnerable to Rinka hits.",
1091+
"Freeze a Rinka several pixels in front of Samus, to cause Samus to clip horizontally.",
1092+
"This will work regardless of whether Samus is facing left or right.",
1093+
"When Samus is close enough to the end, quickly turn around back and forth to wiggle out,",
1094+
"to avoid taking too much damage from the invisible spikes in the air."
1095+
]
9201096
}
9211097
],
9221098
"notables": [
@@ -956,10 +1132,20 @@
9561132
"Note that Zebetites cause i-frames but deal no damage.",
9571133
"With Ice+Wave, the Rinka can be frozen from above. With Ice+Plasma, Samus must crouch while freezing the Rinka from below."
9581134
]
1135+
},
1136+
{
1137+
"id": 5,
1138+
"name": "Moondance Clip",
1139+
"note": [
1140+
"Perform a Crystal Flash to stand up in the nook at the top-left of the Mother Brain tank.",
1141+
"Then moondance to clip down into the tank.",
1142+
"Use frozen Rinkas to clip through Mother Brain to the right.",
1143+
"Alternatively, with precise positioning, break the glass from the left side."
1144+
]
9591145
}
9601146
],
9611147
"nextStratId": 40,
962-
"nextNotableId": 5,
1148+
"nextNotableId": 6,
9631149
"devNote": [
9641150
"FIXME: Maybe we can split MB into several events to properly indicate the ammo requirements?",
9651151
"FIXME: It is possible to Grapple teleport from Moat to the left of Mother Brain, through currently it has no known use."

schema/m3-requirements.schema.json

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -450,6 +450,41 @@
450450
}
451451
}
452452
},
453+
"resourceMaxCapacity": {
454+
"type": "array",
455+
"title": "Resource Max Capacity",
456+
"description": "Fulfilled by having at most the given capacity for all given resource types",
457+
"items": {
458+
"type": "object",
459+
"required": [
460+
"type",
461+
"count"
462+
],
463+
"minItems": 1,
464+
"maxItems": 5,
465+
"additionalProperties": false,
466+
"properties": {
467+
"type": {
468+
"type": "string",
469+
"enum": [
470+
"Missile",
471+
"Super",
472+
"PowerBomb",
473+
"RegularEnergy",
474+
"ReserveEnergy"
475+
],
476+
"title": "Resource Type",
477+
"description": "The type of resource held."
478+
},
479+
"count": {
480+
"type": "integer",
481+
"minimum": 0,
482+
"title": "Resource Count",
483+
"description": "The amount of resource capacity that Samus must not exceed."
484+
}
485+
}
486+
}
487+
},
453488
"resourceAvailable": {
454489
"type": "array",
455490
"title": "Resource Available",

0 commit comments

Comments
 (0)