Skip to content

Commit f889cd3

Browse files
authored
Ridley Tank Room R-Mode Spark Interrupt (#2397)
1 parent 7014486 commit f889cd3

3 files changed

Lines changed: 87 additions & 0 deletions

File tree

helpers.json

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1692,6 +1692,67 @@
16921692
]}
16931693
]
16941694
},
1695+
{
1696+
"name": "h_CrystalFlashForReserveEnergy",
1697+
"requires": [
1698+
"canCrystalFlash",
1699+
{"or": [
1700+
{"and": [
1701+
{"or": [
1702+
{"disableEquipment": "ETank"},
1703+
{"resourceMaxCapacity": [{"type": "RegularEnergy", "count": 1099}]}
1704+
]},
1705+
{"partialRefill": {"type": "RegularEnergy", "limit": 1099}},
1706+
{"refill": ["ReserveEnergy"]}
1707+
]},
1708+
{"and": [
1709+
{"refill": ["RegularEnergy"]},
1710+
{"partialRefill": {"type": "ReserveEnergy", "limit": 51}}
1711+
]}
1712+
]},
1713+
{"resourceAvailable": [{"type": "ReserveEnergy", "count": 1}]}
1714+
],
1715+
"note": [
1716+
"This helper represents using a Crystal Flash with the specific goal of getting reserves, which is",
1717+
"particularly important in R-Mode due to needing reserves for R-Mode standup.",
1718+
"If Energy Tanks can be disabled, regular energy will be capped at 10 E-Tanks to provide up to 400 Reserves.",
1719+
"Without this, reserve energy will be capped at 51: the maximum possible when the player has all 14 E-Tanks."
1720+
]
1721+
},
1722+
{
1723+
"name": "h_heatedCrystalFlashForReserveEnergy",
1724+
"requires": [
1725+
{"or": [
1726+
{"and": [
1727+
"h_heatProof",
1728+
"h_CrystalFlashForReserveEnergy"
1729+
]},
1730+
{"and": [
1731+
{"simpleHeatFrames": 185},
1732+
"canHeatedCrystalFlash",
1733+
{"and": [
1734+
{"or": [
1735+
{"disableEquipment": "ETank"},
1736+
{"resourceMaxCapacity": [{"type": "RegularEnergy", "count": 999}]}
1737+
]},
1738+
{"partialRefill": {"type": "RegularEnergy", "limit": 999}},
1739+
{"refill": ["ReserveEnergy"]}
1740+
]},
1741+
{"simpleHeatFrames": 20}
1742+
]}
1743+
]},
1744+
{"resourceAvailable": [{"type": "ReserveEnergy", "count": 1}]}
1745+
],
1746+
"note": [
1747+
"This helper represents using a Crystal Flash in heat with the specific goal of getting reserves, which is",
1748+
"particularly important in R-Mode due to needing reserves for R-Mode standup.",
1749+
"In unprotected heat, at 14 E-Tanks, a Crystal Flash would normally fail to reach the energy maximum and",
1750+
"provide reserves.",
1751+
"If Energy Tanks can be disabled, regular energy will be capped at 9 E-Tanks (10 if heat protection is available)",
1752+
"to provide up to 400 Reserves. Without this, heat protection is mandatory, and Reserve energy will be capped at 51:",
1753+
"the maximum possible when the player has all 14 E-Tanks."
1754+
]
1755+
},
16951756
{
16961757
"name": "h_RModeKnockbackSpark",
16971758
"requires": [

region/lowernorfair/east/Ridley Tank Room.json

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,31 @@
6666
},
6767
"flashSuitChecked": true
6868
},
69+
{
70+
"link": [1, 1],
71+
"name": "R-Mode Spark Interrupt (Gain Blue Suit)",
72+
"entranceCondition": {
73+
"comeInWithRMode": {}
74+
},
75+
"requires": [
76+
"h_heatProof",
77+
"h_heatedCrystalFlashForReserveEnergy",
78+
{"disableEquipment": "Varia"},
79+
{"disableEquipment": "Gravity"},
80+
{"canShineCharge": {"usedTiles": 12, "openEnd": 0}},
81+
{"autoReserveTrigger": {}},
82+
"canRModePauseAbuseSparkInterrupt"
83+
],
84+
"flashSuitChecked": true,
85+
"blueSuitChecked": true,
86+
"note": [
87+
"This room has no enemies, so the only damage source is by turning off (or not having) heat protection",
88+
"This is a very short shinecharge runway."
89+
],
90+
"devNote": [
91+
"FIXME: Needs to support X-Ray buffering, and heatFrames with Varia disabled would also enable a non-pause abuse strat."
92+
]
93+
},
6994
{
7095
"id": 5,
7196
"link": [1, 1],

tests/asserts/keywords.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -334,6 +334,7 @@ def check_shinecharge_req(req):
334334
def check_heat_req(req):
335335
if isinstance(req, str):
336336
if req in ["h_heatProof", "h_heatedCrystalFlash", "h_heatedLavaCrystalFlash", "h_heatedAcidCrystalFlash",
337+
"h_heatedCrystalFlashForReserveEnergy",
337338
"h_heatedCrystalSpark", "h_LowerNorfairElevatorDownwardFrames",
338339
"h_LowerNorfairElevatorUpwardFrames", "h_MainHallElevatorFrames", "h_heatedGreenGateGlitch",
339340
"h_heatedDirectGModeLeaveSameDoor", "h_heatedIndirectGModeOpenSameDoor",

0 commit comments

Comments
 (0)