Skip to content

Commit e1986d3

Browse files
authored
Merge pull request #2128 from blkerby/red-brin-farms
Red Brinstar farms
2 parents 7bff029 + b05cc9e commit e1986d3

9 files changed

Lines changed: 442 additions & 37 deletions

helpers.json

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -285,6 +285,27 @@
285285
{
286286
"name": "h_ShinesparksCostEnergy",
287287
"requires": []
288+
},
289+
{
290+
"name": "h_equipmentScreenCycleFrames",
291+
"requires": [
292+
{"cycleFrames": 300}
293+
],
294+
"note": [
295+
"This represents the amount of time that could be required in the pause menu to equip or unequip items."
296+
],
297+
"devNote": [
298+
"This is not perfectly precise as the time spent in the pause menu can vary,",
299+
"depending on which items are collected and which items are being equipped or unequipped.",
300+
"It is intended as a typical value for common actions such as performing a Gravity jump or mid-air Spring Ball jump."
301+
]
302+
},
303+
{
304+
"name": "h_doubleEquipmentScreenCycleFrames",
305+
"requires": [
306+
"h_equipmentScreenCycleFrames",
307+
"h_equipmentScreenCycleFrames"
308+
]
288309
}
289310
]
290311
},

region/brinstar/red/Alpha Power Bomb Room.json

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -302,6 +302,21 @@
302302
}
303303
}
304304
},
305+
{
306+
"link": [1, 1],
307+
"name": "Boyon Farm",
308+
"requires": [
309+
"canBePatient",
310+
"h_useMorphBombs",
311+
{"resetRoom": {"nodes": [1]}},
312+
{"cycleFrames": 4930}
313+
],
314+
"clearsObstacles": ["A"],
315+
"resetsObstacles": ["B"],
316+
"farmCycleDrops": [
317+
{"enemy": "Boyon", "count": 4}
318+
]
319+
},
305320
{
306321
"id": 9,
307322
"link": [1, 1],

region/brinstar/red/Below Spazer.json

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -508,11 +508,19 @@
508508
"link": [2, 2],
509509
"name": "Cacatac Farm",
510510
"requires": [
511-
{"resetRoom": {
512-
"nodes": [1, 2]
513-
}},
514-
{"partialRefill": {"type": "Energy", "limit": 100}},
515-
{"partialRefill": {"type": "Super", "limit": 5}}
511+
{"or": [
512+
{"and": [
513+
{"resetRoom": {"nodes": [1]}},
514+
{"cycleFrames": 300}
515+
]},
516+
{"and": [
517+
{"resetRoom": {"nodes": [2]}},
518+
{"cycleFrames": 240}
519+
]}
520+
]}
521+
],
522+
"farmCycleDrops": [
523+
{"enemy": "Cacatac", "count": 1}
516524
]
517525
},
518526
{

region/brinstar/red/Beta Power Bomb Room.json

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -351,6 +351,29 @@
351351
"FIXME: It is possible to use artificial morph to lure the hoppers to the left to then use most of the runway out of the room."
352352
]
353353
},
354+
{
355+
"link": [1, 1],
356+
"name": "Sidehopper Farm",
357+
"requires": [
358+
{"resetRoom": {"nodes": [1]}},
359+
{"or": [
360+
{"and": [
361+
"ScrewAttack",
362+
{"cycleFrames": 240}
363+
]},
364+
{"and": [
365+
"canDodgeWhileShooting",
366+
"Plasma",
367+
{"cycleFrames": 380}
368+
]}
369+
]}
370+
],
371+
"clearsObstacles": ["A"],
372+
"resetsObstacles": ["B"],
373+
"farmCycleDrops": [
374+
{"enemy": "Sidehopper", "count": 2}
375+
]
376+
},
354377
{
355378
"id": 3,
356379
"link": [1, 1],

region/brinstar/red/Caterpillar Room.json

Lines changed: 227 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -725,6 +725,114 @@
725725
"Let the Zero lead through the morph tunnel or wait for the it to get very close to Samus before touching the scroll block at the exit."
726726
]
727727
},
728+
{
729+
"link": [2, 2],
730+
"name": "Zero Farm",
731+
"requires": [
732+
{"or": [
733+
{"and": [
734+
{"resetRoom": {"nodes": [2]}},
735+
{"cycleFrames": 460}
736+
]},
737+
{"and": [
738+
{"resetRoom": {"nodes": [4]}},
739+
{"cycleFrames": 660},
740+
{"or": [
741+
"canWalljump",
742+
"HiJump",
743+
{"and": [
744+
"canDoubleBombJump",
745+
{"cycleFrames": 140}
746+
]},
747+
{"and": [
748+
"canSpringBallJumpMidAir",
749+
{"cycleFrames": 40},
750+
"h_doubleEquipmentScreenCycleFrames"
751+
]}
752+
]}
753+
]},
754+
{"and": [
755+
{"resetRoom": {"nodes": [1]}},
756+
{"cycleFrames": 840},
757+
{"or": [
758+
"canWalljump",
759+
"HiJump",
760+
"SpaceJump",
761+
{"and": [
762+
"canDoubleBombJump",
763+
{"cycleFrames": 140},
764+
{"or": [
765+
{"cycleFrames": 140},
766+
"h_crouchJumpDownGrab"
767+
]}
768+
]},
769+
{"and": [
770+
"canSpringBallJumpMidAir",
771+
{"cycleFrames": 40},
772+
"h_doubleEquipmentScreenCycleFrames",
773+
{"or": [
774+
"h_crouchJumpDownGrab",
775+
{"and": [
776+
{"cycleFrames": 40},
777+
"h_doubleEquipmentScreenCycleFrames"
778+
]}
779+
]}
780+
]}
781+
]}
782+
]},
783+
{"and": [
784+
{"resetRoom": {"nodes": [6]}},
785+
{"cycleFrames": 1900},
786+
{"or": [
787+
"canWalljump",
788+
"HiJump",
789+
"SpaceJump",
790+
{"and": [
791+
"canDoubleBombJump",
792+
{"cycleFrames": 140},
793+
{"or": [
794+
{"cycleFrames": 140},
795+
"h_crouchJumpDownGrab"
796+
]}
797+
]},
798+
{"and": [
799+
"canSpringBallJumpMidAir",
800+
{"cycleFrames": 40},
801+
"h_doubleEquipmentScreenCycleFrames",
802+
{"or": [
803+
"h_crouchJumpDownGrab",
804+
{"and": [
805+
{"cycleFrames": 40},
806+
"h_doubleEquipmentScreenCycleFrames"
807+
]}
808+
]}
809+
]}
810+
]}
811+
]}
812+
]},
813+
{"or": [
814+
"Wave",
815+
"Plasma",
816+
{"and": [
817+
"Spazer",
818+
{"cycleFrames": 60}
819+
]},
820+
{"and": [
821+
"ScrewAttack",
822+
{"cycleFrames": 70}
823+
]},
824+
{"cycleFrames": 130}
825+
]}
826+
],
827+
"clearsObstacles": ["B"],
828+
"resetsObstacles": ["A"],
829+
"farmCycleDrops": [
830+
{"enemy": "Zero", "count": 3}
831+
],
832+
"devNote": [
833+
"Resetting at the bottom of the room (node 3) is covered in a separate 3->3 strat."
834+
]
835+
},
728836
{
729837
"id": 27,
730838
"link": [2, 2],
@@ -1358,14 +1466,36 @@
13581466
"link": [3, 3],
13591467
"name": "Zero Farm",
13601468
"requires": [
1361-
{"resetRoom": {
1362-
"nodes": [2, 3]
1363-
}},
1364-
{"refill": ["PowerBomb"]}
1469+
{"resetRoom": {"nodes": [3]}},
1470+
{"or": [
1471+
{"and": [
1472+
"Grapple",
1473+
{"cycleFrames": 265}
1474+
]},
1475+
{"and": [
1476+
"Wave",
1477+
{"cycleFrames": 230}
1478+
]},
1479+
{"and": [
1480+
"Plasma",
1481+
{"cycleFrames": 230}
1482+
]},
1483+
{"and": [
1484+
"Spazer",
1485+
{"cycleFrames": 260}
1486+
]},
1487+
{"and": [
1488+
"ScrewAttack",
1489+
{"cycleFrames": 290}
1490+
]},
1491+
{"cycleFrames": 350}
1492+
]}
13651493
],
13661494
"clearsObstacles": ["B"],
13671495
"resetsObstacles": ["A"],
1368-
"devNote": "FIXME: Other nodes could be used to reset the room, with additional requirements."
1496+
"farmCycleDrops": [
1497+
{"enemy": "Zero", "count": 3}
1498+
]
13691499
},
13701500
{
13711501
"id": 55,
@@ -1689,13 +1819,61 @@
16891819
"link": [4, 4],
16901820
"name": "Cacatac Farm",
16911821
"requires": [
1692-
{"resetRoom": {
1693-
"nodes": [4]
1694-
}},
1695-
{"refill": ["Energy", "Super"]}
1822+
{"or": [
1823+
{"and": [
1824+
{"resetRoom": {
1825+
"nodes": [4]
1826+
}},
1827+
{"cycleFrames": 210}
1828+
]},
1829+
{"and": [
1830+
{"or": [
1831+
{"and": [
1832+
{"resetRoom": {
1833+
"nodes": [1, 2]
1834+
}},
1835+
{"cycleFrames": 400}
1836+
]},
1837+
{"and": [
1838+
{"resetRoom": {
1839+
"nodes": [3]
1840+
}},
1841+
{"cycleFrames": 860}
1842+
]},
1843+
{"and": [
1844+
{"resetRoom": {
1845+
"nodes": [6]
1846+
}},
1847+
{"cycleFrames": 1470}
1848+
]}
1849+
]},
1850+
{"or": [
1851+
"canWalljump",
1852+
"HiJump",
1853+
"SpaceJump",
1854+
{"and": [
1855+
"canDoubleBombJump",
1856+
{"cycleFrames": 140}
1857+
]},
1858+
{"and": [
1859+
"canSpringBallJumpMidAir",
1860+
{"cycleFrames": 40},
1861+
"h_doubleEquipmentScreenCycleFrames"
1862+
]}
1863+
]}
1864+
]}
1865+
]},
1866+
{"or": [
1867+
"Wave",
1868+
"Spazer",
1869+
"Plasma",
1870+
{"cycleFrames": 40}
1871+
]}
16961872
],
16971873
"resetsObstacles": ["A", "B"],
1698-
"devNote": "FIXME: Other nodes could be used to reset the room, with additional requirements."
1874+
"farmCycleDrops": [
1875+
{"enemy": "Cacatac", "count": 2}
1876+
]
16991877
},
17001878
{
17011879
"id": 74,
@@ -1920,19 +2098,51 @@
19202098
"requires": [
19212099
{"ammo": {"type": "Super", "count": 1}},
19222100
"Morph",
2101+
{"resetRoom": {
2102+
"nodes": [5]
2103+
}},
2104+
{"cycleFrames": 1340},
19232105
{"or": [
19242106
"canWalljump",
19252107
"HiJump",
1926-
"SpaceJump"
2108+
"SpaceJump",
2109+
{"and": [
2110+
"canDoubleBombJump",
2111+
{"cycleFrames": 140},
2112+
{"or": [
2113+
{"cycleFrames": 140},
2114+
"h_crouchJumpDownGrab"
2115+
]}
2116+
]},
2117+
{"and": [
2118+
"canSpringBallJumpMidAir",
2119+
{"cycleFrames": 40},
2120+
"h_doubleEquipmentScreenCycleFrames",
2121+
{"or": [
2122+
"h_crouchJumpDownGrab",
2123+
{"and": [
2124+
{"cycleFrames": 40},
2125+
"h_doubleEquipmentScreenCycleFrames"
2126+
]}
2127+
]}
2128+
]}
19272129
]},
1928-
{"resetRoom": {
1929-
"nodes": [5]
1930-
}},
1931-
{"refill": ["Energy", "PowerBomb"]},
1932-
{"partialRefill": {"type": "Super", "limit": 10}}
2130+
{"or": [
2131+
"Wave",
2132+
"Spazer",
2133+
"Plasma",
2134+
{"cycleFrames": 250}
2135+
]}
19332136
],
19342137
"resetsObstacles": ["A", "B"],
1935-
"devNote": "It is possible to roll off of the platform above to avoid a mid-air morph."
2138+
"farmCycleDrops": [
2139+
{"enemy": "Cacatac", "count": 2},
2140+
{"enemy": "Zero", "count": 3}
2141+
],
2142+
"devNote": [
2143+
"It is possible to roll off of the platform above to avoid a mid-air morph.",
2144+
"FIXME: add a Cac-only farm since it can be done with fewer requirements."
2145+
]
19362146
},
19372147
{
19382148
"id": 87,

0 commit comments

Comments
 (0)