Skip to content

Commit 3a878df

Browse files
authored
Suitless Heat Frames Requirement (#2412)
1 parent 89c8d51 commit 3a878df

3 files changed

Lines changed: 11 additions & 1 deletion

File tree

logicalRequirements.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -236,6 +236,10 @@ Much like the other logical elements that represent environmental frame damage,
236236

237237
A `simpleHeatFrames` object represents the need for Samus to spend time (measured in frames) in a heated room. It is identical to `heatFrames` except that the time spent in `simpleHeatFrames` is intended to be invariant, not affected by leniency. This can be useful in cases that involve doing something simple for a significant amount of time, such as standing in place or running through a long hallway.
238238

239+
#### suitlessHeatFrames object
240+
241+
A `suitlessHeatFrames` object represents the need for Samus to spend time (measured in frames) in a heated room, while having heat-protection turned off (normally, both Varia and Gravity Suit must be turned off for this apply). This can occur, for example, when using heat to drain energy.
242+
239243
#### heatFramesWithEnergyDrops object
240244

241245
A `heatFramesWithEnergyDrops` object represents the need for Samus to spend time in a heated room, but with the possibility of offsetting some of the heat damage using energy drops from enemies. Any heat damage is logically applied before the energy gain, so Samus must be able to survive the heat before picking up the drops. Any energy gain is logically capped to not exceed the heat damage, so this logical requirement cannot result in a net energy gain. A `heatFramesWithEnergyDrops` object implicitly includes a requirement `{"or": ["h_heatProof", "canHeatRun"]}`.

schema/m3-requirements.schema.json

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -266,6 +266,12 @@
266266
"title": "Simple Heat Frames",
267267
"description": "Fulfilled by spending an amount of energy that corresponds to spending a number of frames in a heat room, doing a simple action that does not require lenience."
268268
},
269+
"suitlessHeatFrames": {
270+
"type": "integer",
271+
"minimum": 0,
272+
"title": "Suitless Heat Frames",
273+
"description": "Fulfilled by spending an amount of energy that corresponds to spending a number of frames in a heat room, with heat-protection (Varia and Gravity Suit) turned off, even if available."
274+
},
269275
"heatFramesWithEnergyDrops": {
270276
"type": "object",
271277
"title": "Heat Frames With Energy Drops",

tests/asserts/keywords.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -341,7 +341,7 @@ def check_heat_req(req):
341341
"h_heatedGrappleTeleportWallEscape"]:
342342
return True
343343
if isinstance(req, dict):
344-
if "heatFrames" in req or "heatFramesWithEnergyDrops" in req:
344+
if "heatFrames" in req or "heatFramesWithEnergyDrops" or "suitlessHeatFrames" in req in req:
345345
return True
346346
if "and" in req:
347347
return any(check_heat_req(v) for v in req["and"])

0 commit comments

Comments
 (0)