From aed1fb8542ba0ae20569e3419ad0fe7679ca11fe Mon Sep 17 00:00:00 2001 From: Brent Kerby Date: Sun, 20 Jul 2025 19:02:43 -0600 Subject: [PATCH 1/4] Fish Tank farms --- region/maridia/outer/Fish Tank.json | 169 ++++++++++++++++++++++++++-- 1 file changed, 161 insertions(+), 8 deletions(-) diff --git a/region/maridia/outer/Fish Tank.json b/region/maridia/outer/Fish Tank.json index 9fe03f3d3c..08d937cf72 100644 --- a/region/maridia/outer/Fish Tank.json +++ b/region/maridia/outer/Fish Tank.json @@ -353,6 +353,63 @@ "Use Gravity jumps to navigate to the left, chaining temporary blue through the door." ] }, + { + "link": [1, 1], + "name": "Skultera Farm (Single Skultera)", + "requires": [ + {"resetRoom": {"nodes": [1]}}, + {"or": [ + {"and": [ + "Gravity", + {"or": [ + {"and": [ + "Plasma", + {"cycleFrames": 140} + ]}, + {"and": [ + "ScrewAttack", + {"cycleFrames": 170} + ]}, + {"and": [ + "Wave", + {"cycleFrames": 190} + ]}, + {"and": [ + "Spazer", + {"cycleFrames": 210} + ]}, + {"and": [ + "Ice", + {"cycleFrames": 290} + ]}, + {"cycleFrames": 390} + ]} + ]}, + {"and": [ + {"or": [ + "Plasma", + "Wave", + "Spazer" + ]}, + {"cycleFrames": 270} + ]}, + {"and": [ + "Ice", + {"cycleFrames": 330} + ]}, + {"and": [ + {"or": [ + "canDodgeWhileShooting", + "HiJump" + ]}, + {"cycleFrames": 450} + ]} + ]} + ], + "farmCycleDrops": [ + {"enemy": "Skultera", "count": 1} + ] + }, { "id": 7, "link": [1, 1], @@ -1361,6 +1418,22 @@ } } }, + { + "link": [2, 2], + "name": "Pirate Farm (Single Pirate)", + "requires": [ + {"resetRoom": {"nodes": [2]}}, + {"cycleFrames": 630}, + "Plasma" + ], + "farmCycleDrops": [ + {"enemy": "Pink Space Pirate (standing)", "count": 1} + ], + "devNote": [ + "This is for farming suitless.", + "If Gravity is available, it is instead worthwhile to farm all the Pirates in the room." + ] + }, { "id": 33, "link": [2, 2], @@ -2842,20 +2915,100 @@ ] }, { - "id": 74, "link": [6, 6], - "name": "Space Pirate Farm", + "name": "Skultera Farm (All Skulteras)", "requires": [ "Gravity", + "canConsecutiveWalljump", + {"or": [ + {"and": [ + {"resetRoom": {"nodes": [3]}}, + {"cycleFrames": 1300} + ]}, + {"and": [ + {"resetRoom": {"nodes": [1]}}, + {"cycleFrames": 1540} + ]}, + {"and": [ + {"resetRoom": {"nodes": [4]}}, + "canPreciseWalljump", + {"cycleFrames": 1690} + ]}, + {"and": [ + {"resetRoom": {"nodes": [2]}}, + {"cycleFrames": 1890} + ]} + ]}, {"or": [ "Plasma", - "ScrewAttack" + "ScrewAttack", + {"and": [ + "Wave", + {"cycleFrames": 365} + ]}, + {"and": [ + "Spazer", + {"cycleFrames": 480} + ]}, + {"and": [ + "Ice", + {"cycleFrames": 1250} + ]}, + {"cycleFrames": 1685} + ]} + ], + "farmCycleDrops": [ + {"enemy": "Skultera", "count": 4} + ], + "devNote": [ + "Farming Skulteras with Plasma or Screw Attack is included for completeness,", + "though with these items it would be better to farm the Pirates.", + "FIXME: there are other, slower ways to farm here, e.g. without Gravity." + ] + }, + { + "id": 74, + "link": [6, 6], + "name": "Pirate Farm (All Pirates)", + "requires": [ + "Gravity", + {"or": [ + {"and": [ + {"resetRoom": {"nodes": [3]}}, + {"cycleFrames": 950} + ]}, + {"and": [ + {"resetRoom": {"nodes": [2]}}, + {"cycleFrames": 1260} + ]}, + {"and": [ + {"resetRoom": {"nodes": [4]}}, + "canPreciseWalljump", + {"cycleFrames": 1440} + ]}, + {"and": [ + {"resetRoom": {"nodes": [1]}}, + "canConsecutiveWalljump", + {"cycleFrames": 1600} + ]} ]}, - {"resetRoom": { - "nodes": [2, 3] - }}, - {"partialRefill": {"type": "Energy", "limit": 200}}, - {"partialRefill": {"type": "Missile", "limit": 8}} + {"or": [ + "canWalljump", + {"cycleFrames": 90} + ]}, + {"or": [ + "ScrewAttack", + {"and": [ + "Plasma", + {"cycleFrames": 150} + ]} + ]} + ], + "farmCycleDrops": [ + {"enemy": "Pink Space Pirate (standing)", "count": 4} + ], + "devNote": [ + "FIXME: there are other, slower ways to farm here, e.g. without Gravity." ] }, { From 96007b8093b261fa381317a15e9d920463301cf1 Mon Sep 17 00:00:00 2001 From: Brent Kerby Date: Tue, 22 Jul 2025 15:24:03 -0600 Subject: [PATCH 2/4] Main Street farms --- region/maridia/outer/Main Street.json | 446 +++++++++++++++++++++++++- 1 file changed, 432 insertions(+), 14 deletions(-) diff --git a/region/maridia/outer/Main Street.json b/region/maridia/outer/Main Street.json index 00f08d79f8..0d15daacaf 100644 --- a/region/maridia/outer/Main Street.json +++ b/region/maridia/outer/Main Street.json @@ -2451,6 +2451,105 @@ ], "flashSuitChecked": true }, + { + "link": [3, 3], + "name": "Sciser Farm (Single Sciser)", + "requires": [ + {"resetRoom": {"nodes": [3]}}, + {"or": [ + "Gravity", + {"cycleFrames": 300} + ]}, + {"or": [ + {"and": [ + "Gravity", + "ScrewAttack", + {"cycleFrames": 280} + ]}, + {"and": [ + "Gravity", + "canPseudoScrew", + {"cycleFrames": 280} + ]}, + {"and": [ + "Plasma", + {"cycleFrames": 285} + ]}, + {"and": [ + "Wave", + {"cycleFrames": 320} + ]}, + {"and": [ + "Spazer", + {"cycleFrames": 335} + ]}, + {"and": [ + "Ice", + {"cycleFrames": 400} + ]}, + {"and": [ + "canFarmWhileShooting", + {"cycleFrames": 430} + ]}, + {"cycleFrames": 550} + ]} + ], + "resetsObstacles": ["A", "B", "C"], + "farmCycleDrops": [{"enemy": "Sciser", "count": 1}] + }, + { + "link": [3, 3], + "name": "Skultera Farm (Single Skultera)", + "requires": [ + {"resetRoom": {"nodes": [3]}}, + {"or": [ + {"and": [ + "Gravity", + {"or": [ + "HiJump", + "canWalljump", + "SpaceJump" + ]}, + {"or": [ + {"and": [ + "Plasma", + {"cycleFrames": 590} + ]}, + {"and": [ + "ScrewAttack", + {"cycleFrames": 590} + ]}, + {"and": [ + "Wave", + {"cycleFrames": 615} + ]}, + {"and": [ + "Spazer", + {"cycleFrames": 640} + ]}, + {"and": [ + "Ice", + {"cycleFrames": 690} + ]}, + {"cycleFrames": 920} + ]} + ]}, + {"and": [ + "canCameraManip", + "canFarmWhileShooting", + {"or": [ + {"and": [ + "Gravity", + {"cycleFrames": 770} + ]}, + {"cycleFrames": 1155} + ]} + ]} + ]} + ], + "resetsObstacles": ["A", "B", "C"], + "farmCycleDrops": [{"enemy": "Skultera", "count": 1}] + }, { "id": 67, "link": [3, 3], @@ -3678,15 +3777,131 @@ { "id": 103, "link": [4, 4], - "name": "Sciser Farm", + "name": "Sciser Farm (Two Scisers)", "requires": [ - {"resetRoom": { - "nodes": [4] - }}, - {"partialRefill": {"type": "Energy", "limit": 100}}, - {"partialRefill": {"type": "PowerBomb", "limit": 4}} + {"resetRoom": {"nodes": [4]}}, + "Gravity", + {"or": [ + {"and": [ + "Grapple", + {"cycleFrames": 250} + ]}, + {"and": [ + "Plasma", + {"cycleFrames": 310} + ]}, + {"and": [ + "ScrewAttack", + {"cycleFrames": 310} + ]}, + {"and": [ + "canPseudoScrew", + {"cycleFrames": 330} + ]}, + {"and": [ + "Wave", + {"cycleFrames": 360} + ]}, + {"and": [ + "Spazer", + {"cycleFrames": 420} + ]}, + {"and": [ + "Ice", + {"cycleFrames": 550} + ]}, + {"cycleFrames": 710} + ]} ], - "resetsObstacles": ["A", "B", "C"] + "resetsObstacles": ["A", "B", "C"], + "farmCycleDrops": [{"enemy": "Sciser", "count": 2}], + "devNote": [ + "This strat only considers having Gravity.", + "Without Gravity, it can still be possible to farm two Scisers,", + "but it usually would be better to just farm one." + ] + }, + { + "link": [4, 4], + "name": "Sciser Farm (One Sciser)", + "requires": [ + {"resetRoom": {"nodes": [4]}}, + {"or": [ + {"and": [ + "Grapple", + {"cycleFrames": 140} + ]}, + {"and": [ + "Plasma", + {"cycleFrames": 165} + ]}, + {"and": [ + "Wave", + {"cycleFrames": 180} + ]}, + {"and": [ + "Spazer", + {"cycleFrames": 210} + ]}, + {"and": [ + "Ice", + {"cycleFrames": 270} + ]}, + {"cycleFrames": 280} + ]} + ], + "resetsObstacles": ["A", "B", "C"], + "farmCycleDrops": [{"enemy": "Sciser", "count": 1}], + "devNote": [ + "This strat only considers the suitless case.", + "If Gravity is available, it would be better to farm two Scisers," + ] + }, + { + "link": [4, 4], + "name": "Skultera Farm (One Skultera)", + "requires": [ + {"resetRoom": {"nodes": [4]}}, + {"or": [ + {"and": [ + "Gravity", + "ScrewAttack", + {"cycleFrames": 335} + ]}, + {"and": [ + "Plasma", + {"cycleFrames": 360} + ]}, + {"and": [ + "Wave", + {"cycleFrames": 420} + ]}, + {"and": [ + "Spazer", + {"cycleFrames": 460} + ]}, + {"and": [ + "Ice", + {"cycleFrames": 510} + ]}, + {"cycleFrames": 600} + ]}, + {"or": [ + "Gravity", + {"and": [ + "HiJump", + {"cycleFrames": 320} + ]}, + {"and": [ + "canSpringBallJumpMidAir", + {"cycleFrames": 700}, + "h_doubleEquipmentScreenCycleFrames", + "h_doubleEquipmentScreenCycleFrames" + ]} + ]} + ], + "resetsObstacles": ["A", "B", "C"], + "farmCycleDrops": [{"enemy": "Skultera", "count": 1}] }, { "id": 104, @@ -3924,6 +4139,79 @@ }, "devNote": "This depends on how far the Morph tunnel is expanded, but this is both the minimum distance and the distance Map Rando has expanded." }, + { + "link": [5, 5], + "name": "Sciser Farm", + "requires": [ + "Morph", + {"resetRoom": {"nodes": [5]}}, + {"or": [ + {"and": [ + "Gravity", + {"or": [ + {"and": [ + "ScrewAttack", + {"cycleFrames": 480} + ]}, + {"and": [ + "canPseudoScrew", + {"cycleFrames": 480} + ]}, + {"and": [ + "Plasma", + {"cycleFrames": 480} + ]}, + {"and": [ + "Wave", + {"cycleFrames": 480} + ]}, + {"and": [ + "Spazer", + {"cycleFrames": 480} + ]}, + {"and": [ + "Charge", + "canDodgeWhileShooting", + {"cycleFrames": 480} + ]}, + {"and": [ + "Ice", + {"cycleFrames": 520} + ]}, + {"and": [ + "canFarmWhileShooting", + {"cycleFrames": 540} + ]}, + {"cycleFrames": 1620} + ]} + ]}, + {"and": [ + "Plasma", + {"cycleFrames": 690} + ]}, + {"and": [ + "Wave", + {"cycleFrames": 690} + ]}, + {"and": [ + "Spazer", + {"cycleFrames": 690} + ]}, + {"and": [ + "Ice", + {"cycleFrames": 710} + ]}, + {"and": [ + "Charge", + "canFarmWhileShooting", + {"cycleFrames": 810} + ]}, + {"cycleFrames": 1770} + ]} + ], + "resetsObstacles": ["A", "B", "C"], + "farmCycleDrops": [{"enemy": "Sciser", "count": 1}] + }, { "id": 113, "link": [5, 5], @@ -4382,15 +4670,145 @@ { "id": 134, "link": [8, 8], - "name": "Sciser Farm", + "name": "Sciser Farm (Single Sciser)", "requires": [ - {"resetRoom": { - "nodes": [1, 2] - }}, - {"partialRefill": {"type": "Energy", "limit": 100}}, - {"partialRefill": {"type": "PowerBomb", "limit": 4}} + {"or": [ + {"resetRoom": {"nodes": [1]}}, + {"and": [ + {"resetRoom": {"nodes": [2]}}, + {"or": [ + {"and": [ + "Gravity", + {"cycleFrames": 40} + ]}, + {"cycleFrames": 100} + ]} + ]} + ]}, + {"or": [ + {"and": [ + "Gravity", + {"or": [ + {"and": [ + "Grapple", + {"cycleFrames": 165} + ]}, + {"and": [ + "Plasma", + {"cycleFrames": 170} + ]}, + {"and": [ + "ScrewAttack", + {"cycleFrames": 170} + ]}, + {"and": [ + "Wave", + {"cycleFrames": 180} + ]}, + {"and": [ + "Spazer", + {"cycleFrames": 190} + ]}, + {"and": [ + "canPseudoScrew", + {"cycleFrames": 190} + ]}, + {"and": [ + "Ice", + {"cycleFrames": 270} + ]}, + {"cycleFrames": 300} + ]} + ]}, + {"and": [ + "Grapple", + {"cycleFrames": 240} + ]}, + {"and": [ + "Plasma", + {"cycleFrames": 290} + ]}, + {"and": [ + "Wave", + {"cycleFrames": 300} + ]}, + {"and": [ + "Spazer", + {"cycleFrames": 300} + ]}, + {"and": [ + "Ice", + {"cycleFrames": 350} + ]}, + {"cycleFrames": 380} + ]} ], - "resetsObstacles": ["A", "B", "C"] + "resetsObstacles": ["A", "B", "C"], + "farmCycleDrops": [{"enemy": "Sciser", "count": 1}] + }, + { + "link": [8, 8], + "name": "Skultera Farm (Single Skultera)", + "requires": [ + {"or": [ + {"resetRoom": {"nodes": [1]}}, + {"and": [ + {"resetRoom": {"nodes": [2]}}, + {"or": [ + {"and": [ + "Gravity", + {"cycleFrames": 40} + ]}, + {"cycleFrames": 100} + ]} + ]} + ]}, + {"or": [ + {"and": [ + "Plasma", + {"cycleFrames": 160} + ]}, + {"and": [ + "ScrewAttack", + {"cycleFrames": 165} + ]}, + {"and": [ + "Wave", + {"cycleFrames": 220} + ]}, + {"and": [ + "Spazer", + {"cycleFrames": 250} + ]}, + {"and": [ + "Ice", + {"cycleFrames": 315} + ]}, + {"and": [ + "canFarmWhileShooting", + {"cycleFrames": 480} + ]}, + {"cycleFrames": 600} + ]}, + {"or": [ + "Gravity", + {"and": [ + "Grapple", + {"cycleFrames": 150} + ]}, + {"and": [ + "HiJump", + {"cycleFrames": 135} + ]}, + {"and": [ + "canTrickySpringBallJump", + {"cycleFrames": 315}, + "h_doubleEquipmentScreenCycleFrames" + ]} + ]} + ], + "resetsObstacles": ["A", "B", "C"], + "farmCycleDrops": [{"enemy": "Skultera", "count": 1}] }, { "id": 135, From ed17f71967815f71f2c4bbba697b7c8becdd5938 Mon Sep 17 00:00:00 2001 From: Brent Kerby Date: Tue, 22 Jul 2025 15:26:51 -0600 Subject: [PATCH 3/4] finish resolving conflicts --- region/maridia/outer/Fish Tank.json | 6 ------ 1 file changed, 6 deletions(-) diff --git a/region/maridia/outer/Fish Tank.json b/region/maridia/outer/Fish Tank.json index 5722ea9614..be8ac7b9da 100644 --- a/region/maridia/outer/Fish Tank.json +++ b/region/maridia/outer/Fish Tank.json @@ -2992,7 +2992,6 @@ {"cycleFrames": 1600} ]} ]}, -<<<<<<< HEAD {"or": [ "canWalljump", {"cycleFrames": 90} @@ -3010,11 +3009,6 @@ ], "devNote": [ "FIXME: there are other, slower ways to farm here, e.g. without Gravity." -======= - {"resetRoom": {"nodes": [2, 3]}}, - {"partialRefill": {"type": "Energy", "limit": 200}}, - {"partialRefill": {"type": "Missile", "limit": 8}} ->>>>>>> upstream/master ] }, { From 976ad29e83afaafe396649cf6189eae692e683b6 Mon Sep 17 00:00:00 2001 From: Brent Kerby Date: Fri, 25 Jul 2025 13:26:47 -0600 Subject: [PATCH 4/4] feedback updates --- region/maridia/outer/Main Street.json | 45 +++++++++++++++++++++++---- 1 file changed, 39 insertions(+), 6 deletions(-) diff --git a/region/maridia/outer/Main Street.json b/region/maridia/outer/Main Street.json index 2a519aa802..38fea5da49 100644 --- a/region/maridia/outer/Main Street.json +++ b/region/maridia/outer/Main Street.json @@ -4147,13 +4147,17 @@ {"and": [ "Gravity", {"or": [ + {"and": [ + "Grapple", + {"cycleFrames": 350} + ]}, {"and": [ "ScrewAttack", - {"cycleFrames": 480} + {"cycleFrames": 450} ]}, {"and": [ "canPseudoScrew", - {"cycleFrames": 480} + {"cycleFrames": 450} ]}, {"and": [ "Plasma", @@ -4174,15 +4178,45 @@ ]}, {"and": [ "Ice", - {"cycleFrames": 520} + {"cycleFrames": 500} ]}, {"and": [ "canFarmWhileShooting", - {"cycleFrames": 540} + {"cycleFrames": 510} ]}, {"cycleFrames": 1620} ]} ]}, + {"and": [ + "Gravity", + "h_useSpringBall", + {"or": [ + {"and": [ + "ScrewAttack", + {"cycleFrames": 350} + ]}, + {"and": [ + "Plasma", + {"cycleFrames": 350} + ]}, + {"and": [ + "Wave", + {"cycleFrames": 370} + ]}, + {"and": [ + "Spazer", + {"cycleFrames": 390} + ]}, + {"and": [ + "Ice", + {"cycleFrames": 430} + ]} + ]} + ]}, + {"and": [ + "Grapple", + {"cycleFrames": 520} + ]}, {"and": [ "Plasma", {"cycleFrames": 690} @@ -4200,9 +4234,8 @@ {"cycleFrames": 710} ]}, {"and": [ - "Charge", "canFarmWhileShooting", - {"cycleFrames": 810} + {"cycleFrames": 720} ]}, {"cycleFrames": 1770} ]}