Skip to content

Commit 235141d

Browse files
authored
Merge pull request #2132 from blkerby/simple-frames
simpleHeatFrames and simpleCycleFrames
2 parents a399572 + 82aec8d commit 235141d

4 files changed

Lines changed: 61 additions & 21 deletions

File tree

logicalRequirements.md

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -206,13 +206,18 @@ __Example:__
206206
```
207207

208208
#### cycleFrames object
209-
A `cycleFrames` object represents the need for Samus to spend time (measured as an amount of in-game frames) in a room as part of a farming cycle. Including a `cycleFrames` requirement is mandatory in farming strats with a [`farmCycleDrops`](strats.md#farm-cycle-drops) property. The `cycleFrames` can be used to determine how many cycles of a farm a player can reasonably be expected to perform, based on an assumed amount of "patience".
209+
A `cycleFrames` object represents the need for Samus to spend time (measured as an amount of in-game frames) in a room as part of a farming cycle. Including a `cycleFrames` requirement is mandatory in farming strats with a [`farmCycleDrops`](strats.md#farm-cycle-drops) property. The `cycleFrames` can be used to determine how many cycles of a farm a player can reasonably be expected to perform, based on an assumed amount of "patience". The frame counts listed tend to be somewhat optimized, so it recommended to apply a lenience factor based on difficulty.
210210

211211
__Example:__
212212
```json
213213
{"cycleFrames": 100}
214214
```
215215

216+
#### simpleCycleFrames object
217+
218+
A `simpleCycleFrames` object represents the need for Samus to spend time (measured as an amount of in-game frames) in a room as part of a farming cycle. It is identical to `cycleFrames` except that the time spent in `simpleCycleFrames` 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 while farming bugs.
219+
220+
216221
#### heatFrames object
217222
A `heatFrames` object represents the need for Samus to spend time (measured in frames) in a heated room. This is meant to be converted to a flat health value based on item loadout. The vanilla damage for heated rooms is 1 damage every 4 frames, negated by Varia or Gravity Suit. The effect of Gravity suit on heat damage may be modified by randomizers. A `heatFrames` object implicitly includes a requirement `{"or": ["h_heatProof", "canHeatRun"]}`.
218223

@@ -223,7 +228,11 @@ __Example:__
223228

224229
__Additional considerations__
225230

226-
Much like the other logical elements that represent environmental frame damage, the heat frame counts listed in this project might not be strictly "perfect" play, but they are very much unforgiving. Their most significant value is to provide relative lengths to different heat runs. It's recommended to apply a leniency factor to those, possibly as an option that can vary by difficulty.
231+
Much like the other logical elements that represent environmental frame damage, the heat frame counts listed in this project might not be strictly "perfect" play, but they are very much unforgiving. Their most significant value is to provide relative lengths to different heat runs. It's recommended to apply a lenience factor to those, possibly as an option that can vary by difficulty.
232+
233+
#### simpleHeatFrames object
234+
235+
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.
227236

228237
#### heatFramesWithEnergyDrops object
229238

region/crateria/east/West Ocean.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2093,7 +2093,8 @@
20932093
"link": [6, 6],
20942094
"name": "Zeb Farm",
20952095
"requires": [
2096-
{"cycleFrames": 105}
2096+
{"simpleCycleFrames": 85},
2097+
{"cycleFrames": 20}
20972098
],
20982099
"farmCycleDrops": [
20992100
{"enemy": "Zeb", "count": 1}

region/norfair/east/Speed Booster Hall.json

Lines changed: 36 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -176,7 +176,8 @@
176176
"name": "Base",
177177
"requires": [
178178
{"obstaclesNotCleared": ["A"]},
179-
{"heatFrames": 650}
179+
{"simpleHeatFrames": 560},
180+
{"heatFrames": 60}
180181
],
181182
"unlocksDoors": [
182183
{
@@ -192,7 +193,8 @@
192193
"name": "Leave with Runway",
193194
"requires": [
194195
{"obstaclesNotCleared": ["A"]},
195-
{"heatFrames": 630}
196+
{"simpleHeatFrames": 560},
197+
{"heatFrames": 60}
196198
],
197199
"exitCondition": {
198200
"leaveWithRunway": {
@@ -229,18 +231,20 @@
229231
"requires": [
230232
{"obstaclesNotCleared": ["A"]},
231233
"SpeedBooster",
232-
{"heatFrames": 360}
234+
{"simpleHeatFrames": 310},
235+
{"heatFrames": 40}
233236
],
234237
"clearsObstacles": ["A"]
235238
},
236239
{
237240
"id": 8,
238241
"link": [1, 2],
239-
"name": "Speed Run and Leave Shinecharged",
242+
"name": "Speed Run, Leave Shinecharged",
240243
"requires": [
241244
{"obstaclesNotCleared": ["A"]},
242245
"h_shinechargeMaxRunway",
243-
{"heatFrames": 360},
246+
{"simpleHeatFrames": 310},
247+
{"heatFrames": 40},
244248
{"shineChargeFrames": 35}
245249
],
246250
"exitCondition": {
@@ -255,12 +259,13 @@
255259
{
256260
"id": 9,
257261
"link": [1, 2],
258-
"name": "Speed Run and Leave Running",
262+
"name": "Speed Run, Leave With Runway",
259263
"requires": [
260264
{"obstaclesNotCleared": ["A"]},
261265
"SpeedBooster",
262266
"canHeroShot",
263-
{"heatFrames": 290}
267+
{"simpleHeatFrames": 250},
268+
{"heatFrames": 40}
264269
],
265270
"exitCondition": {
266271
"leaveWithRunway": {
@@ -285,10 +290,14 @@
285290
},
286291
"requires": [
287292
{"or": [
288-
{"heatFrames": 650},
293+
{"and": [
294+
{"simpleHeatFrames": 560},
295+
{"heatFrames": 60}
296+
]},
289297
{"and": [
290298
"SpeedBooster",
291-
{"heatFrames": 360}
299+
{"simpleHeatFrames": 310},
300+
{"heatFrames": 40}
292301
]}
293302
]}
294303
],
@@ -314,10 +323,14 @@
314323
},
315324
"requires": [
316325
{"or": [
317-
{"heatFrames": 650},
326+
{"and": [
327+
{"simpleHeatFrames": 560},
328+
{"heatFrames": 60}
329+
]},
318330
{"and": [
319331
"SpeedBooster",
320-
{"heatFrames": 360}
332+
{"simpleHeatFrames": 310},
333+
{"heatFrames": 40}
321334
]}
322335
]}
323336
],
@@ -396,7 +409,8 @@
396409
"name": "Base",
397410
"requires": [
398411
{"obstaclesNotCleared": ["A"]},
399-
{"heatFrames": 650}
412+
{"simpleHeatFrames": 560},
413+
{"heatFrames": 60}
400414
],
401415
"unlocksDoors": [
402416
{
@@ -451,7 +465,8 @@
451465
"name": "Leave with Runway",
452466
"requires": [
453467
{"obstaclesNotCleared": ["A"]},
454-
{"heatFrames": 630}
468+
{"simpleHeatFrames": 560},
469+
{"heatFrames": 60}
455470
],
456471
"exitCondition": {
457472
"leaveWithRunway": {
@@ -478,18 +493,20 @@
478493
"requires": [
479494
{"obstaclesNotCleared": ["A"]},
480495
"SpeedBooster",
481-
{"heatFrames": 360}
496+
{"simpleHeatFrames": 310},
497+
{"heatFrames": 40}
482498
],
483499
"clearsObstacles": ["A"]
484500
},
485501
{
486502
"id": 16,
487503
"link": [2, 1],
488-
"name": "Speed Run and Leave Shinecharged",
504+
"name": "Speed Run, Leave Shinecharged",
489505
"requires": [
490506
{"obstaclesNotCleared": ["A"]},
491507
"h_shinechargeMaxRunway",
492-
{"heatFrames": 360},
508+
{"simpleHeatFrames": 310},
509+
{"heatFrames": 40},
493510
{"shineChargeFrames": 35}
494511
],
495512
"exitCondition": {
@@ -504,12 +521,13 @@
504521
{
505522
"id": 17,
506523
"link": [2, 1],
507-
"name": "Speed Run and Leave Running",
524+
"name": "Speed Run, Leave With Runway",
508525
"requires": [
509526
{"obstaclesNotCleared": ["A"]},
510527
"SpeedBooster",
511528
"canHeroShot",
512-
{"heatFrames": 290}
529+
{"simpleHeatFrames": 250},
530+
{"heatFrames": 40}
513531
],
514532
"exitCondition": {
515533
"leaveWithRunway": {

schema/m3-requirements.schema.json

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -248,12 +248,24 @@
248248
"title": "Cycle Frames",
249249
"description": "Fulfilled by spending an amount of time in a room, measured in in-game frames, as part of a farming cycle."
250250
},
251+
"simpleCycleFrames": {
252+
"type": "integer",
253+
"minimum": 0,
254+
"title": "Cycle Frames",
255+
"description": "Fulfilled by spending an amount of time in a room, measured in in-game frames, as part of a farming cycle, doing a simple action that does not require lenience."
256+
},
251257
"heatFrames": {
252258
"type": "integer",
253259
"minimum": 0,
254260
"title": "Heat Frames",
255261
"description": "Fulfilled by spending an amount of energy that corresponds to spending a number of frames in a heat room."
256262
},
263+
"simpleHeatFrames": {
264+
"type": "integer",
265+
"minimum": 0,
266+
"title": "Simple Heat Frames",
267+
"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."
268+
},
257269
"heatFramesWithEnergyDrops": {
258270
"type": "object",
259271
"title": "Heat Frames With Energy Drops",

0 commit comments

Comments
 (0)