From 392feda47b5fadd0277585da79c67a19b55b8fba Mon Sep 17 00:00:00 2001 From: Brent Kerby Date: Wed, 16 Jul 2025 11:21:05 -0600 Subject: [PATCH 1/6] Warehouse Brinstar farms --- region/brinstar/kraid/Baby Kraid Room.json | 102 ++++++++++++++ .../brinstar/kraid/Kraid Eye Door Room.json | 5 +- .../kraid/Warehouse Energy Tank Room.json | 46 +++--- .../kraid/Warehouse Kihunter Room.json | 133 ++++++++++++++++++ .../brinstar/kraid/Warehouse Zeela Room.json | 29 +++- 5 files changed, 292 insertions(+), 23 deletions(-) diff --git a/region/brinstar/kraid/Baby Kraid Room.json b/region/brinstar/kraid/Baby Kraid Room.json index dca2d84a29..98dbbf040f 100644 --- a/region/brinstar/kraid/Baby Kraid Room.json +++ b/region/brinstar/kraid/Baby Kraid Room.json @@ -262,6 +262,69 @@ }, "flashSuitChecked": true }, + { + "link": [1, 1], + "name": "Pirate Farm", + "requires": [ + {"or": [ + {"and": [ + "Plasma", + {"cycleFrames": 255} + ]}, + {"and": [ + "Wave", + {"cycleFrames": 280} + ]}, + {"and": [ + "ScrewAttack", + {"cycleFrames": 300} + ]}, + {"and": [ + "Spazer", + {"cycleFrames": 315} + ]}, + {"and": [ + "Ice", + {"cycleFrames": 400} + ]}, + {"and": [ + "canPseudoScrew", + {"cycleFrames": 450} + ]}, + {"and": [ + "Charge", + "canDodgeWhileShooting", + {"cycleFrames": 600} + ]}, + {"and": [ + "h_useMorphBombs", + "canTrickyDodgeEnemies", + {"cycleFrames": 620} + ]} + ]} + ], + "farmCycleDrops": [ + {"enemy": "Green Space Pirate (standing)", "count": 3} + ], + "resetsObstacles": ["A"] + }, + { + "link": [1, 1], + "name": "Pirate and Mini-Kraid Farm (Blue Speed)", + "requires": [ + {"resetRoom": {"nodes": [1]}}, + {"enemyDamage": {"enemy": "Green Space Pirate (standing)", "type": "contact", "hits": 1}}, + {"enemyDamage": {"enemy": "Mini-Kraid", "type": "spike", "hits": 1}}, + "canUseIFrames", + "h_getBlueSpeedMaxRunway", + {"cycleFrames": 720} + ], + "farmCycleDrops": [ + {"enemy": "Green Space Pirate (standing)", "count": 3}, + {"enemy": "Mini-Kraid", "count": 1} + ], + "clearsObstacles": ["A"] + }, { "id": 8, "link": [1, 1], @@ -593,6 +656,45 @@ }, "bypassesDoorShell": true }, + { + "link": [2, 2], + "name": "Mini-Kraid Farm", + "requires": [ + {"resetRoom": {"nodes": [2]}}, + {"or": [ + {"and": [ + {"or": [ + "Plasma", + "ScrewAttack", + {"ammo": {"type": "Super", "count": 1}} + ]}, + {"cycleFrames": 225} + ]}, + {"and": [ + "Wave", + {"cycleFrames": 310} + ]}, + {"and": [ + "Spazer", + {"cycleFrames": 330} + ]}, + {"and": [ + "Ice", + "canDodgeWhileShooting", + {"cycleFrames": 440} + ]}, + {"cycleFrames": 600} + ]}, + {"or": [ + {"enemyDamage": {"enemy": "Mini-Kraid", "type": "stone", "hits": 1}}, + "canDodgeWhileShooting" + ]} + ], + "farmCycleDrops": [ + {"enemy": "Mini-Kraid", "count": 1} + ], + "resetsObstacles": ["A"] + }, { "id": 26, "link": [2, 2], diff --git a/region/brinstar/kraid/Kraid Eye Door Room.json b/region/brinstar/kraid/Kraid Eye Door Room.json index 8c2f9a277e..aff4943cea 100644 --- a/region/brinstar/kraid/Kraid Eye Door Room.json +++ b/region/brinstar/kraid/Kraid Eye Door Room.json @@ -92,8 +92,9 @@ "link": [1, 1], "name": "Zeb Farm", "requires": [ - {"refill": ["Energy", "Missile", "Super"]} - ] + {"cycleFrames": 105} + ], + "farmCycleDrops": [{"enemy": "Zeb", "count": 1}] }, { "id": 2, diff --git a/region/brinstar/kraid/Warehouse Energy Tank Room.json b/region/brinstar/kraid/Warehouse Energy Tank Room.json index bed0de8833..098db60278 100644 --- a/region/brinstar/kraid/Warehouse Energy Tank Room.json +++ b/region/brinstar/kraid/Warehouse Energy Tank Room.json @@ -91,31 +91,45 @@ "nodes": [1] }}, {"or": [ - "ScrewAttack", + {"and": [ + "ScrewAttack", + {"cycleFrames": 130} + ]}, {"and": [ {"or": [ "Ice", - "canTrickyJump", + "canTrickyDodgeEnemies", {"enemyDamage": {"enemy": "Beetom", "type": "contact", "hits": 1}} ]}, {"or": [ - "h_useMorphBombs", - {"and": [ - "Morph", - {"resourceAvailable": [{"type": "Energy", "count": 50}]}, - {"or": [ - {"ammo": {"type": "Missile", "count": 1}}, - {"ammo": {"type": "Super", "count": 1}}, - {"ammo": {"type": "PowerBomb", "count": 1}} - ]} - ]} - ]} + {"resourceAvailable": [{"type": "Energy", "count": 50}]}, + {"resourceAvailable": [{"type": "PowerBomb", "count": 4}]} + ]}, + "h_usePowerBomb", + {"cycleFrames": 290} + ]}, + {"and": [ + "h_useMorphBombs", + "canTrickyDodgeEnemies", + "canInsaneJump", + {"cycleFrames": 425} + ]}, + {"and": [ + "Ice", + "canDodgeWhileShooting", + "h_useMorphBombs", + {"cycleFrames": 720} ]} - ]}, - {"refill": ["PowerBomb"]} + ]} ], "clearsObstacles": ["A"], - "note": "Kill the Beetoms with Screw Attack or by freezing or carefully avoiding them and using Bombs or Power Bombs.", + "farmCycleDrops": [ + {"enemy": "Beetom", "count": 4} + ], + "note": [ + "Kill the Beetoms with Screw Attack or using Bombs or Power Bombs,", + "either freezing them or carefully avoiding them to minimize damage." + ], "devNote": [ "Health Bomb ends at 50 energy.", "One ammo can be used to gain a power bomb and then power bombs can be used to farm more power bombs." diff --git a/region/brinstar/kraid/Warehouse Kihunter Room.json b/region/brinstar/kraid/Warehouse Kihunter Room.json index 6c6241b6c8..65f59ffc4f 100644 --- a/region/brinstar/kraid/Warehouse Kihunter Room.json +++ b/region/brinstar/kraid/Warehouse Kihunter Room.json @@ -247,6 +247,50 @@ "It might be possible to avoid enemy damage but this would be even more difficult." ] }, + { + "link": [1, 1], + "name": "Kihunter Farm", + "requires": [ + {"resetRoom": {"nodes": [1]}}, + {"or": [ + {"and": [ + "ScrewAttack", + {"cycleFrames": 360} + ]}, + {"and": [ + "Plasma", + {"cycleFrames": 360} + ]}, + {"and": [ + "Wave", + {"cycleFrames": 390} + ]}, + {"and": [ + "Spazer", + {"cycleFrames": 390} + ]}, + {"and": [ + "Ice", + "canDodgeWhileShooting", + {"cycleFrames": 600} + ]}, + {"and": [ + "canPseudoScrew", + "canTrickyDodgeEnemies", + {"cycleFrames": 600} + ]}, + {"and": [ + "canTrickyDodgeEnemies", + {"cycleFrames": 1000} + ]} + ]} + ], + "farmCycleDrops": [ + {"enemy": "Kihunter (green)", "count": 4} + ], + "resetsObstacles": ["A", "B", "D"], + "clearsObstacles": ["C"] + }, { "id": 6, "link": [1, 1], @@ -373,6 +417,52 @@ } } }, + { + "link": [2, 2], + "name": "Kihunter Farm", + "requires": [ + {"resetRoom": {"nodes": [1]}}, + "canDodgeWhileShooting", + {"or": [ + "HiJump", + "canWalljump", + "h_crouchJumpDownGrab", + "SpaceJump" + ]}, + {"or": [ + {"and": [ + "Plasma", + {"cycleFrames": 480} + ]}, + {"and": [ + "ScrewAttack", + {"cycleFrames": 570} + ]}, + {"and": [ + "Wave", + {"cycleFrames": 660} + ]}, + {"and": [ + "Spazer", + {"cycleFrames": 660} + ]}, + {"and": [ + "Charge", + {"cycleFrames": 780} + ]}, + {"and": [ + "Ice", + {"cycleFrames": 840} + ]}, + {"cycleFrames": 1200} + ]} + ], + "farmCycleDrops": [ + {"enemy": "Kihunter (green)", "count": 4} + ], + "resetsObstacles": ["A", "B"], + "clearsObstacles": ["C", "D"] + }, { "id": 15, "link": [2, 2], @@ -481,6 +571,49 @@ "Then continue chaining temporary blue through the door." ] }, + { + "link": [3, 3], + "name": "Kihunter Farm", + "requires": [ + {"resetRoom": {"nodes": [1]}}, + "h_useMorphBombs", + {"or": [ + {"and": [ + "Plasma", + {"cycleFrames": 750} + ]}, + {"and": [ + "ScrewAttack", + {"cycleFrames": 810} + ]}, + {"and": [ + "Wave", + {"cycleFrames": 870} + ]}, + {"and": [ + "Spazer", + {"cycleFrames": 840} + ]}, + {"and": [ + "Charge", + {"cycleFrames": 945} + ]}, + {"and": [ + "Ice", + {"cycleFrames": 1005} + ]}, + {"and": [ + "canDodgeWhileShooting", + {"cycleFrames": 1125} + ]} + ]} + ], + "farmCycleDrops": [ + {"enemy": "Kihunter (green)", "count": 4} + ], + "resetsObstacles": ["A", "D"], + "clearsObstacles": ["B", "C"] + }, { "id": 22, "link": [3, 3], diff --git a/region/brinstar/kraid/Warehouse Zeela Room.json b/region/brinstar/kraid/Warehouse Zeela Room.json index 3020a8a200..e0bfa0ce5a 100644 --- a/region/brinstar/kraid/Warehouse Zeela Room.json +++ b/region/brinstar/kraid/Warehouse Zeela Room.json @@ -118,13 +118,32 @@ "link": [1, 1], "name": "Zeela Farm", "requires": [ - {"resetRoom": { - "nodes": [1, 2] - }}, - {"refill": ["Energy", "Missile", "Super"]} + {"or": [ + {"and": [ + {"resetRoom": { + "nodes": [1] + }}, + {"cycleFrames": 200} + ]}, + {"and": [ + {"resetRoom": { + "nodes": [2]} + }, + {"cycleFrames": 380} + ]}, + {"and": [ + "h_useMorphBombs", + {"resetRoom": { + "nodes": [3]} + }, + {"cycleFrames": 900} + ]} + ]} ], "resetsObstacles": ["A"], - "devNote": ["FIXME: Node 3 could be used to reset the room, with additional requirements."] + "farmCycleDrops": [ + {"enemy": "Zeela", "count": 3} + ] }, { "id": 2, From 229942ec17d6bf2e3bd553625bb1e8e81f3b09f0 Mon Sep 17 00:00:00 2001 From: Brent Kerby Date: Wed, 16 Jul 2025 11:54:59 -0600 Subject: [PATCH 2/6] update note on warehouse e-tank farm --- region/brinstar/kraid/Warehouse Energy Tank Room.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/region/brinstar/kraid/Warehouse Energy Tank Room.json b/region/brinstar/kraid/Warehouse Energy Tank Room.json index 098db60278..6c488690c6 100644 --- a/region/brinstar/kraid/Warehouse Energy Tank Room.json +++ b/region/brinstar/kraid/Warehouse Energy Tank Room.json @@ -132,7 +132,7 @@ ], "devNote": [ "Health Bomb ends at 50 energy.", - "One ammo can be used to gain a power bomb and then power bombs can be used to farm more power bombs." + "FIXME: One Missile or Super can be used to gain a power bomb and then power bombs can be used to farm more power bombs." ] }, { From e2e35070ad12bae662af61efa458eb1a07418903 Mon Sep 17 00:00:00 2001 From: Brent Kerby Date: Fri, 18 Jul 2025 07:36:23 -0600 Subject: [PATCH 3/6] Apply suggestions from code review Co-authored-by: Michael McKenzie --- region/brinstar/kraid/Baby Kraid Room.json | 1 + region/brinstar/kraid/Warehouse Kihunter Room.json | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/region/brinstar/kraid/Baby Kraid Room.json b/region/brinstar/kraid/Baby Kraid Room.json index 98dbbf040f..a150911809 100644 --- a/region/brinstar/kraid/Baby Kraid Room.json +++ b/region/brinstar/kraid/Baby Kraid Room.json @@ -266,6 +266,7 @@ "link": [1, 1], "name": "Pirate Farm", "requires": [ + {"resetRoom": {"nodes": [1]}}, {"or": [ {"and": [ "Plasma", diff --git a/region/brinstar/kraid/Warehouse Kihunter Room.json b/region/brinstar/kraid/Warehouse Kihunter Room.json index 65f59ffc4f..81e9d15082 100644 --- a/region/brinstar/kraid/Warehouse Kihunter Room.json +++ b/region/brinstar/kraid/Warehouse Kihunter Room.json @@ -421,7 +421,7 @@ "link": [2, 2], "name": "Kihunter Farm", "requires": [ - {"resetRoom": {"nodes": [1]}}, + {"resetRoom": {"nodes": [2]}}, "canDodgeWhileShooting", {"or": [ "HiJump", @@ -575,7 +575,7 @@ "link": [3, 3], "name": "Kihunter Farm", "requires": [ - {"resetRoom": {"nodes": [1]}}, + {"resetRoom": {"nodes": [3]}}, "h_useMorphBombs", {"or": [ {"and": [ From e96309771940bbe6d3c845cd8458ab1b97bcf2e7 Mon Sep 17 00:00:00 2001 From: Brent Kerby Date: Fri, 18 Jul 2025 08:41:10 -0600 Subject: [PATCH 4/6] stronger dodge requirements for Mini-Kraid and Kihunters --- region/brinstar/kraid/Baby Kraid Room.json | 18 ++++++++++++++++-- .../kraid/Warehouse Kihunter Room.json | 5 ++++- 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/region/brinstar/kraid/Baby Kraid Room.json b/region/brinstar/kraid/Baby Kraid Room.json index a150911809..2e2e983aa4 100644 --- a/region/brinstar/kraid/Baby Kraid Room.json +++ b/region/brinstar/kraid/Baby Kraid Room.json @@ -681,14 +681,28 @@ ]}, {"and": [ "Ice", - "canDodgeWhileShooting", {"cycleFrames": 440} ]}, {"cycleFrames": 600} ]}, {"or": [ {"enemyDamage": {"enemy": "Mini-Kraid", "type": "stone", "hits": 1}}, - "canDodgeWhileShooting" + "Plasma", + "ScrewAttack", + {"and": [ + "Ice", + "Wave", + "Spazer" + ]}, + {"and": [ + "canDodgeWhileShooting", + {"or": [ + "Ice", + "Wave", + "Spazer" + ]} + ]}, + "canTrickyDodgeEnemies" ]} ], "farmCycleDrops": [ diff --git a/region/brinstar/kraid/Warehouse Kihunter Room.json b/region/brinstar/kraid/Warehouse Kihunter Room.json index 81e9d15082..22dc329058 100644 --- a/region/brinstar/kraid/Warehouse Kihunter Room.json +++ b/region/brinstar/kraid/Warehouse Kihunter Room.json @@ -454,7 +454,10 @@ "Ice", {"cycleFrames": 840} ]}, - {"cycleFrames": 1200} + {"and": [ + "canTrickyDodgeEnemies", + {"cycleFrames": 1200} + ]} ]} ], "farmCycleDrops": [ From 9a6a1258a2c31f30f6566b7538a982051c9b6d29 Mon Sep 17 00:00:00 2001 From: Brent Kerby Date: Fri, 18 Jul 2025 09:04:57 -0600 Subject: [PATCH 5/6] add note about spin-jump entry --- region/brinstar/kraid/Warehouse Kihunter Room.json | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/region/brinstar/kraid/Warehouse Kihunter Room.json b/region/brinstar/kraid/Warehouse Kihunter Room.json index 22dc329058..ec210f664f 100644 --- a/region/brinstar/kraid/Warehouse Kihunter Room.json +++ b/region/brinstar/kraid/Warehouse Kihunter Room.json @@ -464,7 +464,11 @@ {"enemy": "Kihunter (green)", "count": 4} ], "resetsObstacles": ["A", "B"], - "clearsObstacles": ["C", "D"] + "clearsObstacles": ["C", "D"], + "note": [ + "If Samus runs into the room and quickly destroys the shot block, a Kihunter will immediately fall down.", + "To avoid this, either spin jump into the room, or wait a moment before shooting the block." + ] }, { "id": 15, From 4325ea524eaefb9c9a5346d26f2180c38c1eaf53 Mon Sep 17 00:00:00 2001 From: Brent Kerby Date: Fri, 18 Jul 2025 10:12:08 -0600 Subject: [PATCH 6/6] add simpleCycleFrames --- region/brinstar/kraid/Kraid Eye Door Room.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/region/brinstar/kraid/Kraid Eye Door Room.json b/region/brinstar/kraid/Kraid Eye Door Room.json index 72cf123fd9..92ddc8c5df 100644 --- a/region/brinstar/kraid/Kraid Eye Door Room.json +++ b/region/brinstar/kraid/Kraid Eye Door Room.json @@ -92,7 +92,8 @@ "link": [1, 1], "name": "Zeb Farm", "requires": [ - {"cycleFrames": 105} + {"simpleCycleFrames": 85}, + {"cycleFrames": 20} ], "farmCycleDrops": [{"enemy": "Zeb", "count": 1}] },