From b9366e7333b1f378df8ba083bb98b216e1c71830 Mon Sep 17 00:00:00 2001 From: Brent Kerby Date: Tue, 12 Aug 2025 14:46:24 -0600 Subject: [PATCH 1/6] Rest of Yellow Maridia farms --- .../inner-yellow/Plasma Tutorial Room.json | 35 ++++- region/maridia/inner-yellow/The Beach.json | 92 +++++++++--- .../inner-yellow/Thread The Needle Room.json | 137 +++++++++--------- .../maridia/inner-yellow/Watering Hole.json | 16 +- region/maridia/inner-yellow/Yoink Room.json | 76 ++++++++++ 5 files changed, 259 insertions(+), 97 deletions(-) diff --git a/region/maridia/inner-yellow/Plasma Tutorial Room.json b/region/maridia/inner-yellow/Plasma Tutorial Room.json index dcfed2c98e..d9d8b5ccad 100644 --- a/region/maridia/inner-yellow/Plasma Tutorial Room.json +++ b/region/maridia/inner-yellow/Plasma Tutorial Room.json @@ -94,9 +94,38 @@ "link": [1, 1], "name": "Puyo Farm", "requires": [ - {"resetRoom": {"nodes": [1, 2]}}, - {"refill": ["Energy", "Missile", "PowerBomb"]} - ] + {"or": [ + {"resetRoom": {"nodes": [1]}}, + {"and": [ + {"resetRoom": {"nodes": [2]}}, + {"cycleFrames": 20} + ]} + ]}, + {"or": [ + {"and": [ + "Plasma", + {"cycleFrames": 85} + ]}, + {"and": [ + "ScrewAttack", + {"cycleFrames": 90} + ]}, + {"and": [ + "Wave", + {"cycleFrames": 150} + ]}, + {"and": [ + "Grapple", + {"cycleFrames": 160} + ]}, + {"and": [ + "Spazer", + {"cycleFrames": 180} + ]}, + {"cycleFrames": 210} + ]} + ], + "farmCycleDrops": [{"enemy": "Puyo", "count": 6}] }, { "id": 4, diff --git a/region/maridia/inner-yellow/The Beach.json b/region/maridia/inner-yellow/The Beach.json index 948ad5fbe7..4bbcee9138 100644 --- a/region/maridia/inner-yellow/The Beach.json +++ b/region/maridia/inner-yellow/The Beach.json @@ -298,29 +298,48 @@ "link": [1, 1], "name": "Choot Farm", "requires": [ - {"resetRoom": {"nodes": [1]}}, - {"partialRefill": {"type": "Energy", "limit": 140}}, - {"partialRefill": {"type": "Super", "limit": 4}}, - {"partialRefill": {"type": "Missile", "limit": 20}} - ] - }, - { - "id": 67, - "link": [1, 1], - "name": "Fast Choot Farm", - "requires": [ - {"resetRoom": {"nodes": [1]}}, {"or": [ - "Wave", - "Spazer", - "Plasma", - "ScrewAttack", - "canUseGrapple", - "canPseudoScrew" + {"resetRoom": {"nodes": [1]}}, + {"and": [ + {"resetRoom": {"nodes": [2]}}, + "Gravity", + {"or": [ + "h_crouchJumpDownGrab", + "canWalljump" + ]}, + {"cycleFrames": 130} + ]} ]}, - {"partialRefill": {"type": "Energy", "limit": 300}}, - {"partialRefill": {"type": "Super", "limit": 4}}, - {"refill": ["Missile"]} + {"or": [ + {"and": [ + "Plasma", + {"cycleFrames": 740} + ]}, + {"and": [ + "Wave", + {"cycleFrames": 800} + ]}, + {"and": [ + "Spazer", + {"cycleFrames": 860} + ]}, + {"and": [ + "Grapple", + {"cycleFrames": 890} + ]}, + {"and": [ + "ScrewAttack", + {"cycleFrames": 960} + ]}, + {"cycleFrames": 1500} + ]} + ], + "farmCycleDrops": [ + {"enemy": "Choot", "count": 5} + ], + "devNote": [ + "There is a sixth Choot on the far right but it's not worth going for.", + "FIXME: add other movement options for reaching the top of the room from node 2." ] }, { @@ -709,6 +728,37 @@ }, "note": ["Destroy the Owtch using blue speed."] }, + { + "link": [2, 2], + "name": "Skultera Farm", + "requires": [ + {"resetRoom": {"nodes": [2]}}, + "canSuitlessMaridia", + {"or": [ + {"and": [ + "Plasma", + {"cycleFrames": 360} + ]}, + {"and": [ + "Wave", + {"cycleFrames": 420} + ]}, + {"and": [ + "Spazer", + {"cycleFrames": 450} + ]}, + {"and": [ + "Ice", + {"cycleFrames": 530} + ]}, + {"cycleFrames": 710} + ]} + ], + "farmCycleDrops": [{"enemy": "Skultera", "count": 2}], + "devNote": [ + "If Gravity is available, the Choot farm at the top of the room would be used instead." + ] + }, { "id": 30, "link": [2, 2], diff --git a/region/maridia/inner-yellow/Thread The Needle Room.json b/region/maridia/inner-yellow/Thread The Needle Room.json index 247e06edcd..21fa472a41 100644 --- a/region/maridia/inner-yellow/Thread The Needle Room.json +++ b/region/maridia/inner-yellow/Thread The Needle Room.json @@ -416,50 +416,50 @@ } } }, - { - "id": 17, - "link": [1, 1], - "name": "Basic Choot and Puyo Farm", - "requires": [ - {"or": [ - "h_hasBeamUpgrade", - "canDodgeWhileShooting", - "Grapple", - "ScrewAttack" - ]}, - {"resetRoom": {"nodes": [1]}}, - {"refill": ["Energy", "Missile"]} - ] - }, { "id": 18, "link": [1, 1], "name": "Choot and Puyo Farm", "requires": [ - {"or": [ - "Wave", - "Spazer", - "Plasma", - "Grapple", - "ScrewAttack" - ]}, {"resetRoom": {"nodes": [1]}}, - {"refill": ["Energy", "Missile", "Super", "PowerBomb"]} - ] - }, - { - "id": 19, - "link": [1, 1], - "name": "Patient Choot and Puyo Farm", - "requires": [ - "canBePatient", {"or": [ - "canDodgeWhileShooting", - "Charge", - "Ice" + "Gravity", + {"cycleFrames": 330} ]}, - {"resetRoom": {"nodes": [1]}}, - {"refill": ["Super", "PowerBomb"]} + {"or": [ + {"and": [ + "Plasma", + {"cycleFrames": 1110} + ]}, + {"and": [ + "Grapple", + {"cycleFrames": 1240} + ]}, + {"and": [ + "ScrewAttack", + {"cycleFrames": 1330} + ]}, + {"and": [ + "Wave", + {"cycleFrames": 1380} + ]}, + {"and": [ + "Spazer", + {"cycleFrames": 1440} + ]}, + {"and": [ + "Ice", + {"cycleFrames": 2010} + ]}, + {"and": [ + "canDodgeWhileShooting", + {"cycleFrames": 2670} + ]} + ]} + ], + "farmCycleDrops": [ + {"enemy": "Choot", "count": 5}, + {"enemy": "Puyo", "count": 5} ] }, { @@ -942,47 +942,40 @@ { "id": 47, "link": [2, 2], - "name": "Basic Choot and Puyo Farm", - "requires": [ - {"or": [ - "h_hasBeamUpgrade", - "canDodgeWhileShooting", - "Grapple", - "ScrewAttack" - ]}, - {"resetRoom": {"nodes": [2]}}, - {"refill": ["Energy", "Missile"]} - ] - }, - { - "id": 48, - "link": [2, 2], "name": "Choot and Puyo Farm", "requires": [ - {"or": [ - "Wave", - "Spazer", - "Plasma", - "Grapple", - "ScrewAttack" - ]}, {"resetRoom": {"nodes": [2]}}, - {"refill": ["Energy", "Missile", "Super", "PowerBomb"]} - ] - }, - { - "id": 49, - "link": [2, 2], - "name": "Patient Choot and Puyo Farm", - "requires": [ - "canBePatient", {"or": [ - "canDodgeWhileShooting", - "Charge", - "Ice" + "Gravity", + {"cycleFrames": 120} ]}, - {"resetRoom": {"nodes": [2]}}, - {"refill": ["Super", "PowerBomb"]} + {"or": [ + {"and": [ + "Plasma", + {"cycleFrames": 610} + ]}, + {"and": [ + "Grapple", + {"cycleFrames": 660} + ]}, + {"and": [ + "Wave", + {"cycleFrames": 700} + ]}, + {"and": [ + "ScrewAttack", + {"cycleFrames": 720} + ]}, + {"and": [ + "Spazer", + {"cycleFrames": 820} + ]}, + {"cycleFrames": 1070} + ]} + ], + "farmCycleDrops": [ + {"enemy": "Choot", "count": 3}, + {"enemy": "Puyo", "count": 3} ] }, { diff --git a/region/maridia/inner-yellow/Watering Hole.json b/region/maridia/inner-yellow/Watering Hole.json index b1df2f8132..836ec94780 100644 --- a/region/maridia/inner-yellow/Watering Hole.json +++ b/region/maridia/inner-yellow/Watering Hole.json @@ -211,7 +211,21 @@ "link": [1, 1], "name": "Zeb Farm", "requires": [ - {"refill": ["Energy", "Missile", "Super"]} + {"simpleCycleFrames": 80}, + {"cycleFrames": 30} + ], + "farmCycleDrops": [{"enemy": "Zeb", "count": 1}] + }, + { + "link": [1, 1], + "name": "Double Zeb Farm", + "requires": [ + "canTrickyDodgeEnemies", + {"cycleFrames": 170} + ], + "farmCycleDrops": [{"enemy": "Zeb", "count": 2}], + "note": [ + "Run back and forth between the two Zeb spawners to farm them simultaneously." ] }, { diff --git a/region/maridia/inner-yellow/Yoink Room.json b/region/maridia/inner-yellow/Yoink Room.json index 33becb6905..0e4637a23d 100644 --- a/region/maridia/inner-yellow/Yoink Room.json +++ b/region/maridia/inner-yellow/Yoink Room.json @@ -117,6 +117,7 @@ "to": [ {"id": 1}, {"id": 2}, + {"id": 4}, {"id": 5} ] }, @@ -223,6 +224,25 @@ ], "flashSuitChecked": true }, + { + "link": [1, 1], + "name": "Zoa Farm (Door Frame)", + "requires": [ + {"or": [ + {"and": [ + "Grapple", + {"simpleCycleFrames": 90}, + {"cycleFrames": 30} + ]}, + {"and": [ + "canDodgeWhileShooting", + {"simpleCycleFrames": 300}, + {"cycleFrames": 60} + ]} + ]} + ], + "farmCycleDrops": [{"enemy": "Zoa", "count": 1}] + }, { "id": 5, "link": [1, 1], @@ -1413,6 +1433,62 @@ "name": "Base", "requires": [] }, + { + "link": [4, 4], + "name": "Zoa Farm (Suitless Dodge Yapping Maws)", + "requires": [ + "canSuitlessMaridia", + "canPlayInSand", + "canTrickyDodgeEnemies", + {"cycleFrames": 170}, + {"or": [ + "Plasma", + "Wave", + "Spazer", + "Grapple", + {"cycleFrames": 10} + ]} + ], + "farmCycleDrops": [{"enemy": "Zoa", "count": 1}], + "note": [ + "While farming the Zoas, jump back and forth across the room to avoid the Yapping Maws." + ] + }, + { + "link": [4, 4], + "name": "Zoa Farm (Gravity Dodge Yapping Maws)", + "requires": [ + "Gravity", + "canPlayInSand", + "canTrickyJump", + {"cycleFrames": 120}, + {"or": [ + "Plasma", + "Wave", + "Spazer", + "Grapple", + {"cycleFrames": 10} + ]} + ], + "farmCycleDrops": [{"enemy": "Zoa", "count": 1}], + "note": [ + "While farming the Zoas, jump back and forth across the room to avoid the Yapping Maws." + ] + }, + { + "link": [4, 4], + "name": "Zoa Farm (Freeze Yapping Maw)", + "requires": [ + "Ice", + "canDodgeWhileShooting", + {"simpleCycleFrames": 200}, + {"cycleFrames": 40} + ], + "farmCycleDrops": [{"enemy": "Zoa", "count": 1}], + "note": [ + "Freeze a Yapping Maw to farm the Zoas safely." + ] + }, { "id": 46, "link": [4, 5], From f443d4110b792b1009c5643800917b58207fbf48 Mon Sep 17 00:00:00 2001 From: Brent Kerby Date: Wed, 13 Aug 2025 10:15:05 -0600 Subject: [PATCH 2/6] Plasma Tutorial farm: add notes and more lenience --- .../inner-yellow/Plasma Tutorial Room.json | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/region/maridia/inner-yellow/Plasma Tutorial Room.json b/region/maridia/inner-yellow/Plasma Tutorial Room.json index d9d8b5ccad..7a7b398e32 100644 --- a/region/maridia/inner-yellow/Plasma Tutorial Room.json +++ b/region/maridia/inner-yellow/Plasma Tutorial Room.json @@ -110,22 +110,26 @@ "ScrewAttack", {"cycleFrames": 90} ]}, - {"and": [ - "Wave", - {"cycleFrames": 150} - ]}, {"and": [ "Grapple", {"cycleFrames": 160} ]}, {"and": [ - "Spazer", + "Wave", {"cycleFrames": 180} ]}, - {"cycleFrames": 210} + {"and": [ + "Spazer", + {"cycleFrames": 200} + ]}, + {"cycleFrames": 240} ]} ], - "farmCycleDrops": [{"enemy": "Puyo", "count": 6}] + "farmCycleDrops": [{"enemy": "Puyo", "count": 6}], + "note": [ + "It helps to crouch and use angle-down shots, to hit many or all of the Puyos at once;", + "this works best from the right side." + ] }, { "id": 4, From 91ac309fd0a31618f26c1325f8fe6f40c79b520f Mon Sep 17 00:00:00 2001 From: Brent Kerby Date: Wed, 13 Aug 2025 10:32:01 -0600 Subject: [PATCH 3/6] Yoink Room right door frame farm --- region/maridia/inner-yellow/Yoink Room.json | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/region/maridia/inner-yellow/Yoink Room.json b/region/maridia/inner-yellow/Yoink Room.json index 0e4637a23d..f836a0b438 100644 --- a/region/maridia/inner-yellow/Yoink Room.json +++ b/region/maridia/inner-yellow/Yoink Room.json @@ -1235,6 +1235,25 @@ ], "unlocksDoors": [{"types": ["ammo"], "requires": []}] }, + { + "link": [3, 3], + "name": "Zoa Farm (Door Frame)", + "requires": [ + {"or": [ + {"and": [ + "Grapple", + {"simpleCycleFrames": 90}, + {"cycleFrames": 30} + ]}, + {"and": [ + "canDodgeWhileShooting", + {"simpleCycleFrames": 300}, + {"cycleFrames": 60} + ]} + ]} + ], + "farmCycleDrops": [{"enemy": "Zoa", "count": 1}] + }, { "id": 35, "link": [3, 3], From 08ffcbe5dc2941d06f74eadadd866e18eece0879 Mon Sep 17 00:00:00 2001 From: Brent Kerby Date: Wed, 13 Aug 2025 10:48:18 -0600 Subject: [PATCH 4/6] Add Yapping Maw obstacles in Yoink Room --- region/maridia/inner-yellow/Yoink Room.json | 87 +++++++++++++++++++-- 1 file changed, 82 insertions(+), 5 deletions(-) diff --git a/region/maridia/inner-yellow/Yoink Room.json b/region/maridia/inner-yellow/Yoink Room.json index f836a0b438..9431353fe3 100644 --- a/region/maridia/inner-yellow/Yoink Room.json +++ b/region/maridia/inner-yellow/Yoink Room.json @@ -69,6 +69,18 @@ ] } ], + "obstacles": [ + { + "id": "A", + "name": "Left Yapping Maw", + "obstacleType": "inanimate" + }, + { + "id": "B", + "name": "Right Yapping Maw", + "obstacleType": "inanimate" + } + ], "enemies": [ { "id": "e1", @@ -126,7 +138,8 @@ "to": [ {"id": 2}, {"id": 3}, - {"id": 4} + {"id": 4}, + {"id": 5} ] } ], @@ -170,6 +183,7 @@ "Gravity", {"or": [ {"ammo": {"type": "Super", "count": 1}}, + {"obstaclesCleared": ["A"]}, "canTrickyDodgeEnemies" ]} ], @@ -754,6 +768,8 @@ {"or": [ "Ice", {"ammo": {"type": "Super", "count": 1}}, + {"obstaclesCleared": ["A"]}, + {"obstaclesCleared": ["B"]}, "canTrickyGMode", {"and": [ "canInsaneJump", @@ -1190,6 +1206,7 @@ "Gravity", {"or": [ {"ammo": {"type": "Super", "count": 1}}, + {"obstaclesCleared": ["B"]}, "canTrickyDodgeEnemies" ]} ], @@ -1423,7 +1440,10 @@ "name": "Kill Yapping Maw With Super", "requires": [ "canSuitlessMaridia", - {"ammo": {"type": "Super", "count": 1}}, + {"or": [ + {"ammo": {"type": "Super", "count": 1}}, + {"obstaclesCleared": ["A"]} + ]}, {"or": [ "canWalljump", "h_crouchJumpDownGrab", @@ -1508,6 +1528,29 @@ "Freeze a Yapping Maw to farm the Zoas safely." ] }, + { + "link": [4, 4], + "name": "Kill Yapping Maw With Super", + "requires": [ + {"obstaclesNotCleared": ["A"]}, + "canSuitlessMaridia", + {"ammo": {"type": "Super", "count": 1}} + ], + "clearsObstacles": ["A"] + }, + { + "link": [4, 4], + "name": "Zoa Farm (Yapping Maw Killed)", + "requires": [ + {"obstaclesCleared": ["A"]}, + {"simpleCycleFrames": 200}, + {"cycleFrames": 40} + ], + "farmCycleDrops": [{"enemy": "Zoa", "count": 1}], + "note": [ + "With the Yapping Maw killed, the Zoas can be farmed safely." + ] + }, { "id": 46, "link": [4, 5], @@ -1552,8 +1595,12 @@ "requires": [ "canSuitlessMaridia", "canPlayInSand", - {"ammo": {"type": "Super", "count": 1}} + {"or": [ + {"ammo": {"type": "Super", "count": 1}}, + {"obstaclesCleared": ["A"]} + ]} ], + "clearsObstacles": ["A"], "devNote": "One Super to cross the room, a second is likely used before getting up to the door." }, { @@ -1625,7 +1672,10 @@ "name": "Kill Yapping Maw With Super", "requires": [ "canSuitlessMaridia", - {"ammo": {"type": "Super", "count": 1}}, + {"or": [ + {"ammo": {"type": "Super", "count": 1}}, + {"obstaclesCleared": ["B"]} + ]}, {"or": [ "canWalljump", "h_crouchJumpDownGrab", @@ -1692,8 +1742,12 @@ "requires": [ "canSuitlessMaridia", "canPlayInSand", - {"ammo": {"type": "Super", "count": 1}} + {"or": [ + {"ammo": {"type": "Super", "count": 1}}, + {"obstaclesCleared": ["B"]} + ]} ], + "clearsObstacles": ["B"], "devNote": "One Super to cross the room, a second is likely used before getting up to the door." }, { @@ -1711,6 +1765,29 @@ "Kill the Zoa and quickly jump across the sand.", "Hitting the Zoas will drop Samus deep into the sand below." ] + }, + { + "link": [5, 5], + "name": "Kill Yapping Maw With Super", + "requires": [ + {"obstaclesNotCleared": ["B"]}, + "canSuitlessMaridia", + {"ammo": {"type": "Super", "count": 1}} + ], + "clearsObstacles": ["B"] + }, + { + "link": [5, 5], + "name": "Zoa Farm (Yapping Maw Killed)", + "requires": [ + {"obstaclesCleared": ["B"]}, + {"simpleCycleFrames": 200}, + {"cycleFrames": 40} + ], + "farmCycleDrops": [{"enemy": "Zoa", "count": 1}], + "note": [ + "With the Yapping Maw killed, the Zoas can be farmed safely." + ] } ], "notables": [ From c2de1c4cd4dacc48e2db4b4ed765e516609cdc49 Mon Sep 17 00:00:00 2001 From: Brent Kerby Date: Thu, 14 Aug 2025 09:42:13 -0600 Subject: [PATCH 5/6] Apply suggestions from code review Co-authored-by: Michael McKenzie --- region/maridia/inner-yellow/Yoink Room.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/region/maridia/inner-yellow/Yoink Room.json b/region/maridia/inner-yellow/Yoink Room.json index 9431353fe3..1b54425c9a 100644 --- a/region/maridia/inner-yellow/Yoink Room.json +++ b/region/maridia/inner-yellow/Yoink Room.json @@ -73,12 +73,12 @@ { "id": "A", "name": "Left Yapping Maw", - "obstacleType": "inanimate" + "obstacleType": "enemies" }, { "id": "B", "name": "Right Yapping Maw", - "obstacleType": "inanimate" + "obstacleType": "enemies" } ], "enemies": [ From c2399d70ec43df5d06bdaad5206ee45697e7de1e Mon Sep 17 00:00:00 2001 From: Brent Kerby Date: Thu, 14 Aug 2025 09:42:29 -0600 Subject: [PATCH 6/6] feedback update --- region/maridia/inner-yellow/Yoink Room.json | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/region/maridia/inner-yellow/Yoink Room.json b/region/maridia/inner-yellow/Yoink Room.json index 1b54425c9a..646c3f89bd 100644 --- a/region/maridia/inner-yellow/Yoink Room.json +++ b/region/maridia/inner-yellow/Yoink Room.json @@ -1486,6 +1486,10 @@ "Spazer", "Grapple", {"cycleFrames": 10} + ]}, + {"or": [ + "HiJump", + "canInsaneJump" ]} ], "farmCycleDrops": [{"enemy": "Zoa", "count": 1}], @@ -1499,7 +1503,7 @@ "requires": [ "Gravity", "canPlayInSand", - "canTrickyJump", + "canTrickyDodgeEnemies", {"cycleFrames": 120}, {"or": [ "Plasma",