diff --git a/helpers.json b/helpers.json index 95968ec1..b3cbc5ff 100644 --- a/helpers.json +++ b/helpers.json @@ -1077,198 +1077,19 @@ {"ammo": {"type": "Super", "count": 1}} ]} ] - } - ] - }, - { - "name": "Artificial Morph", - "description": "Helpers used in G-Mode Artificial Morph Strats.", - "helpers": [ - { - "name": "h_artificialMorphSpringBall", - "requires": [ - "SpringBall" - ] }, { - "name": "h_artificialMorphSpringFling", - "requires": [ - {"tech": "canSpringFling"}, - "SpringBall" - ] - }, - { - "name": "h_artificialMorphDoubleSpringBallJump", - "requires": [ - {"tech": "canDoubleSpringBallJumpMidAir"}, - "HiJump", - "SpringBall" - ] - }, - { - "name": "h_artificialMorphBombThings", + "name": "h_killGreenGeron", "requires": [ {"or": [ - "Bombs", - {"ammo": { "type": "PowerBomb", "count": 1}} - ]} - ] - }, - { - "name": "h_artificialMorphBombs", - "requires": [ - "Bombs" - ] - }, - { - "name": "h_artificialMorphPowerBomb", - "requires": [ - {"ammo": { "type": "PowerBomb", "count": 1}} - ] - }, - { - "name": "h_artificialMorphIBJ", - "requires": [ - {"tech": "canIBJ"}, - "Bombs" - ] - }, - { - "name": "h_artificialMorphLongIBJ", - "requires": [ - {"tech": "canLongIBJ"}, - "Bombs" - ] - }, - { - "name": "h_artificialMorphJumpIntoIBJ", - "requires": [ - {"tech": "canJumpIntoIBJ"}, - "Bombs", - "SpringBall" - ] - }, - { - "name": "h_artificialMorphBombAboveIBJ", - "requires": [ - {"tech": "canBombAboveIBJ"}, - "Bombs" - ] - }, - { - "name": "h_artificialMorphCeilingBombJump", - "requires": [ - {"tech": "canCeilingBombJump"}, - "Bombs" - ] - }, - { - "name": "h_artificialMorphLongCeilingBombJump", - "requires": [ - {"tech": "canLongCeilingBombJump"}, - "Bombs" - ] - }, - { - "name": "h_artificialMorphDiagonalBombJump", - "requires": [ - {"tech": "canDiagonalBombJump"}, - "Bombs" - ] - }, - { - "name": "h_artificialMorphDoubleBombJump", - "requires": [ - {"tech": "canDoubleBombJump"}, - "Bombs" - ] - }, - { - "name": "h_artificialMorphStaggeredIBJ", - "requires": [ - {"tech": "canStaggeredIBJ"}, - "Bombs" - ] - }, - { - "name": "h_artificialMorphBombHorizontally", - "requires": [ - {"tech": "canBombHorizontally"}, - {"or": [ - "Bombs", - {"ammo": {"type": "PowerBomb", "count": 1}} - ]} - ] - }, - { - "name": "h_artificialMorphHBJ", - "requires": [ - {"tech": "canHBJ"}, - "Bombs" - ] - }, - { - "name": "h_artificialMorphResetFallSpeed", - "requires": [{"tech": "canResetFallSpeed"}] - }, - { - "name": "h_artificialMorphSpringBallBombJump", - "requires": [ - {"tech": "canSpringBallBombJump"}, - "SpringBall", - {"or": [ - "Bombs", - {"ammo": {"type": "PowerBomb", "count": 1}} - ]} - ] - }, - { - "name": "h_artificialMorphUnderwaterBombIntoSpringBallJump", - "requires": [ - {"tech": "canUnderwaterBombIntoSpringBallJump"}, - "SpringBall", - "Bombs" - ] - }, - { - "name": "h_artificialMorphCrystalFlash", - "requires": [ - {"tech": "canCrystalFlash"}, - {"ammo": {"type": "PowerBomb", "count": 1}}, - {"ammo": {"type": "Missile", "count": 10}}, - {"ammo": {"type": "Super", "count": 10}}, - {"ammo": {"type": "PowerBomb", "count": 10}}, - {"partialRefill": {"type": "Energy", "limit": 1500}}, - {"noFlashSuit": {}} - ], - "devNote": "FIXME: Samus may not get a full refill, depending on the number of tanks and environment." - }, - { - "name": "h_artificialMorphBombIntoCrystalFlashClip", - "requires": [ - {"tech": "canBombIntoCrystalFlashClip"}, - "Bombs", - "h_artificialMorphCrystalFlash", - "h_bombIntoCrystalFlashClipLeniency" - ] - }, - { - "name": "h_artificialMorphMovement", - "requires": [ - {"or": [ - "h_artificialMorphSpringBall", - "h_artificialMorphIBJ", - "Morph" + "ScrewAttack", + "h_usePowerBomb", + {"ammo": {"type": "Super", "count": 3}}, + {"ammo": {"type": "Ice Missile", "count": 2}}, + {"ammo": {"type": "Diffusion", "count": 1}} ]} ], - "note": [ - "These are ways to navigate stairs and small platforms for strats assuming G-mode artificial morph.", - "Having Morph means we can unmorph, jump, and remorph, as using artificial morph is not needed in that case." - ], - "devNote": [ - "Morph will not be a usable alternative to get up very constrained ledges, such as in a morph tunnel.", - "IBJ is not usable for underwater rooms without Gravity." - ] + "note": "Includes standard ways to kill Green Geron, excludes room specific strats like SpeedBooster." } ] } diff --git a/region/MDK/West Main Deck/Central Nexus.json b/region/MDK/West Main Deck/Central Nexus.json index 8ab8cea2..1a5e5f78 100644 --- a/region/MDK/West Main Deck/Central Nexus.json +++ b/region/MDK/West Main Deck/Central Nexus.json @@ -11,13 +11,13 @@ } ], "mapTileMask": [ - [ - 0 - ] + [1], + [1], + [1] ], "nodes": [ { - "id": 573, + "id": 1, "name": "North-West Door", "nodeType": "door", "nodeSubType": "blue", @@ -27,10 +27,15 @@ { "physics": "air" } + ], + "mapTileMask": [ + [2], + [1], + [1] ] }, { - "id": 574, + "id": 2, "name": "North-East Door", "nodeType": "door", "nodeSubType": "blue", @@ -40,11 +45,16 @@ { "physics": "air" } + ], + "mapTileMask": [ + [2], + [1], + [1] ] }, { - "id": 575, - "name": "East-Upper Door", + "id": 3, + "name": "East Door", "nodeType": "door", "nodeSubType": "blue", "nodeAddress": "0x0", @@ -53,10 +63,15 @@ { "physics": "air" } + ], + "mapTileMask": [ + [1], + [2], + [1] ] }, { - "id": 576, + "id": 4, "name": "South-West Door", "nodeType": "door", "nodeSubType": "blue", @@ -66,10 +81,15 @@ { "physics": "air" } + ], + "mapTileMask": [ + [1], + [1], + [2] ] }, { - "id": 577, + "id": 5, "name": "South-East Door", "nodeType": "door", "nodeSubType": "blue", @@ -79,32 +99,40 @@ { "physics": "air" } + ], + "mapTileMask": [ + [1], + [1], + [2] ] + } + ], + "enemies": [ + { + "id": "e1", + "groupName": "Central Nexus Top Zombie Researchers", + "enemyName": "Zombie Researchers", + "quantity": 2, + "betweenNodes": [2, 3], + "spawn": [{"resourceCapacity": [{"type": "PowerBomb", "count": 1}]}] }, { - "id": 0, - "name": "Upper Part of the Room", - "nodeType": "junction", - "nodeSubType": "visible", - "x": 64, - "y": 96, - "w": 96, - "h": 360, - "color": "#0000ff" + "id": "e2", + "groupName": "Central Nexus Top Zombie Slime", + "enemyName": "Zombie Slime", + "quantity": 1, + "homeNodes": [3], + "spawn": [{"resourceCapacity": [{"type": "PowerBomb", "count": 1}]}] }, { - "id": 1, - "name": "Lower Part of the Room", - "nodeType": "junction", - "nodeSubType": "visible", - "x": 64, - "y": 560, - "w": 72, - "h": 96, - "color": "#0000ff" + "id": "e3", + "groupName": "Central Nexus Bottom Zombie Researcher", + "enemyName": "Zombie Researcher", + "quantity": 1, + "homeNodes": [4], + "spawn": [{"resourceCapacity": [{"type": "PowerBomb", "count": 1}]}] } ], - "links": [], "obstacles": [ { "name": "Green Geron", @@ -114,23 +142,238 @@ ], "strats": [ { - "name": "Reach Upper Part of the Room from the Lower Part of the Room with Supers", - "link": [ - 1, - 0 + "link": [1, 1], + "name": "Leave With Runway", + "requires": [], + "exitCondition": { + "leaveWithRunway": { + "length": 4, + "openEnd": 1 + } + } + }, + { + "link": [1, 2], + "name": "Base", + "requires": [] + }, + { + "link": [2, 1], + "name": "Base", + "requires": [] + }, + { + "link": [2, 2], + "name": "Leave With Runway", + "requires": [], + "exitCondition": { + "leaveWithRunway": { + "length": 5, + "openEnd": 1 + } + } + }, + { + "link": [2, 3], + "name": "Base", + "requires": [] + }, + { + "link": [3, 2], + "name": "Base", + "requires": [] + }, + { + "link": [3, 3], + "name": "Leave With Runway", + "requires": [], + "exitCondition": { + "leaveWithRunway": { + "length": 7, + "openEnd": 1 + } + } + }, + { + "link": [3, 3], + "name": "Kill Green Geron", + "requires": [ + "h_killGreenGeron" ], + "clearsObstacles": ["A"], + "setsFlags": ["f_CentralNexus_GreenGeronDestroyed"] + }, + { + "link": [3, 3], + "name": "Come in Shinecharging, Kill Green Geron", + "entranceCondition": { + "comeInShinecharging": { + "length": 7, + "openEnd": 1 + } + }, "requires": [ - { - "ammo": { - "type": "Super", - "count": 3 - } + "canShinechargeMovement", + {"shinespark": {"frames": 6, "excessFrames": 4}} + ], + "clearsObstacles": ["A"], + "setsFlags": ["f_CentralNexus_GreenGeronDestroyed"], + "devNote": "FIXME: This could be killed with a come in shinecharged." + }, + { + "link": [3, 3], + "name": "Turn Around Blue Speed, Kill Green Geron", + "requires": [ + {"getBlueSpeed": {"usedTiles": 12, "openEnd": 0}}, + "SpeedBooster Lv.2" + ], + "clearsObstacles": ["A"], + "setsFlags": ["f_CentralNexus_GreenGeronDestroyed"], + "note": "Start near the Green Geron, short charge to the left, turn around and run through the Geron with blue speed.", + "devNote": [ + "This is a 9 tile short charge with no open ends and a required jump turn around, it is approximated as a single 12 tile runway.", + "FIXME: This needs a better way to represent turn around short charge with Lv.2 Speed." + ] + }, + { + "link": [3, 4], + "name": "Base", + "requires": [ + {"or": [ + {"obstaclesCleared": ["A"]}, + "f_CentralNexus_GreenGeronDestroyed" + ]} + ] + }, + { + "link": [4, 3], + "name": "Base", + "requires": [ + {"or": [ + {"obstaclesCleared": ["A"]}, + "f_CentralNexus_GreenGeronDestroyed" + ]} + ] + }, + { + "link": [4, 4], + "name": "Leave With Runway", + "requires": [], + "exitCondition": { + "leaveWithRunway": { + "length": 13, + "openEnd": 0 } + } + }, + { + "link": [4, 4], + "name": "Leave With Runway, Open Both Doors", + "requires": [ + {"doorUnlockedAtNode": 5} ], - "clearsObstacles": [ - "A" + "exitCondition": { + "leaveWithRunway": { + "length": 14, + "openEnd": 0 + } + }, + "unlocksDoors": [ + {"nodeId": 5, "types": ["ammo"], "requires": []} + ] + }, + { + "link": [4, 4], + "name": "Kill Green Geron", + "requires": [ + "h_killGreenGeron" ], - "id": 1 + "clearsObstacles": ["A"], + "setsFlags": ["f_CentralNexus_GreenGeronDestroyed"] + }, + { + "link": [4, 4], + "name": "Shinespark Kill Green Geron", + "requires": [ + {"or": [ + {"canShineCharge": {"usedTiles": 12, "openEnd": 0}}, + {"and": [ + {"or": [ + {"doorUnlockedAtNode": 4}, + {"doorUnlockedAtNode": 5} + ]}, + {"canShineCharge": {"usedTiles": 13, "openEnd": 0}} + ]}, + {"and": [ + {"doorUnlockedAtNode": 4}, + {"doorUnlockedAtNode": 5}, + {"canShineCharge": {"usedTiles": 14, "openEnd": 0}} + ]} + ]}, + "canShinechargeMovement", + {"or": [ + {"and": [ + {"enemyDamage": {"enemy": "Green Geron", "type": "contact", "hits": 1}}, + {"shinespark": {"frames": 8, "excessFrames": 6}} + ]}, + {"and": [ + "canTrickyJump", + {"shinespark": {"frames": 8, "excessFrames": 6}} + ]}, + {"and": [ + "canShinechargeMovementTricky", + {"shinespark": {"frames": 1, "excessFrames": 1}} + ]} + ]} + ], + "unlocksDoors": [ + {"nodeId": 4, "types": ["ammo"], "requires": []}, + {"nodeId": 5, "types": ["ammo"], "requires": []} + ], + "clearsObstacles": ["A"], + "setsFlags": ["f_CentralNexus_GreenGeronDestroyed"], + "note": [ + "Shinecharge right to left then climb up to the Green Geron, then spark diagonally spark from the corner into it.", + "With low Energy, it is possible to jump vertically and spark just before hitting it to do so without any damage." + ], + "devNote": "FIXME: This could be killed with a cross-room strat with SpeedBooster." + }, + { + "link": [4, 5], + "name": "Base", + "requires": [] + }, + { + "link": [5, 4], + "name": "Base", + "requires": [] + }, + { + "link": [5, 5], + "name": "Leave With Runway", + "requires": [], + "exitCondition": { + "leaveWithRunway": { + "length": 13, + "openEnd": 0 + } + } + }, + { + "link": [5, 5], + "name": "Leave With Runway, Open Both Doors", + "requires": [ + {"doorUnlockedAtNode": 4} + ], + "exitCondition": { + "leaveWithRunway": { + "length": 14, + "openEnd": 0 + } + }, + "unlocksDoors": [ + {"nodeId": 4, "types": ["ammo"], "requires": []} + ] } ], "roomImageFile": "MDK Room Central Nexus.png", diff --git a/region/MDK/roomDiagrams/WMD_CentralNexus_175.png b/region/MDK/roomDiagrams/WMD_CentralNexus_175.png new file mode 100644 index 00000000..5844837f Binary files /dev/null and b/region/MDK/roomDiagrams/WMD_CentralNexus_175.png differ