Skip to content

Commit 0473c93

Browse files
committed
feedback updates
1 parent d524087 commit 0473c93

3 files changed

Lines changed: 96 additions & 2 deletions

File tree

logicalRequirements.md

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -242,6 +242,22 @@ __Example:__
242242
}}
243243
```
244244

245+
#### lavaFramesWithEnergyDrops object
246+
247+
A `lavaFramesWithEnergyDrops` object represents the need for Samus to spend time in lava, but with the possibility of offsetting some of the lava damage using energy drops from enemies. Any lava 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.
248+
249+
The actual amount of energy gained typically depends on RNG and also on which ammo types are completely full. The drop probabilities for each enemy type is given in the [enemies](enemies/main.json) file. Because of the randomness involved, the logical amount of energy gain is open to various interpretations. For example, the mean, the median, or a lower confidence limit could be used.
250+
251+
__Example:__
252+
```json
253+
{"lavaFramesWithEnergyDrops": {
254+
"frames": 200,
255+
"drops": [
256+
{"enemy": "Fune", "count": 1}
257+
]
258+
}}
259+
```
260+
245261
#### gravitylessHeatFrames object
246262
A `gravitylessHeatFrames` object represents Samus in a heated environment with Gravity Suit turned off, even if it is available. The number of frames here needs to be represented as `heatFrames` without the reduction effects given by Gravity Suit.
247263

region/norfair/east/Volcano Room.json

Lines changed: 49 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -162,6 +162,10 @@
162162
{"types": ["missiles"], "requires": [{"lavaFrames": 80}]},
163163
{"types": ["super"], "requires": []},
164164
{"types": ["powerbomb"], "requires": [{"lavaFrames": 60}]}
165+
],
166+
"devNote": [
167+
"FIXME: A leaveWithRunway variation could be added, but it would require Speed Booster to be disabled,",
168+
"which would need new schema support in order to properly match entrance conditions in the next room."
165169
]
166170
},
167171
{
@@ -175,14 +179,20 @@
175179
{"and": [
176180
"canCarefulJump",
177181
"canMockball",
178-
{"lavaFrames": 160}
182+
{"lavaFrames": 155}
179183
]},
180184
{"lavaFrames": 200}
181185
]},
182186
{"or": [
183187
{"and": [
184188
"canSpaceJumpWaterBounce",
185-
{"lavaFrames": 60}
189+
{"or": [
190+
{"and": [
191+
"canPreciseSpaceJump",
192+
{"lavaFrames": 35}
193+
]},
194+
{"lavaFrames": 60}
195+
]}
186196
]},
187197
{"lavaFrames": 150}
188198
]}
@@ -196,6 +206,43 @@
196206
{"types": ["powerbomb"], "requires": [{"lavaFrames": 150}]}
197207
]
198208
},
209+
{
210+
"link": [1, 2],
211+
"name": "Farm Funes and Suitless Lava Dive",
212+
"requires": [
213+
"canSuitlessLavaDive",
214+
"canFarmWhileShooting",
215+
{"enemyKill": {"enemies": [["Fune", "Fune"]], "explicitWeapons": ["PowerBomb"]}},
216+
"canMockball",
217+
{"lavaFramesWithEnergyDrops": {
218+
"frames": 120,
219+
"drops": [{"enemy": "Fune", "count": 1}]
220+
}},
221+
{"lavaFrames": 35},
222+
{"or": [
223+
{"and": [
224+
"canSpaceJumpWaterBounce",
225+
{"or": [
226+
{"and": [
227+
"canPreciseSpaceJump",
228+
{"lavaFrames": 35}
229+
]},
230+
{"lavaFrames": 60}
231+
]}
232+
]},
233+
{"lavaFrames": 150}
234+
]}
235+
],
236+
"exitCondition": {
237+
"leaveNormally": {}
238+
},
239+
"unlocksDoors": [
240+
{"types": ["missiles"], "requires": [{"lavaFrames": 80}]},
241+
{"types": ["super"], "requires": []},
242+
{"types": ["powerbomb"], "requires": [{"lavaFrames": 150}]}
243+
],
244+
"devNote": "FIXME: a Gravity version of this could be added."
245+
},
199246
{
200247
"id": 5,
201248
"link": [2, 1],

schema/m3-requirements.schema.json

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -309,6 +309,37 @@
309309
"title": "Gravityless Lava Frames",
310310
"description": "Fulfilled by spending an amount of energy that corresponds to spending a number of frames in lava, with Gravity Suit turned off, even if available."
311311
},
312+
"lavaFramesWithEnergyDrops": {
313+
"type": "object",
314+
"title": "Lava Frames With Energy Drops",
315+
"description": "Fulfilled by spending an amount of energy that corresponds to spending a number of frames in a lava, with some or all damage offset by collecting energy drops.",
316+
"additionalProperties": false,
317+
"properties": {
318+
"frames": {
319+
"type": "integer",
320+
"minimum": 1
321+
},
322+
"drops": {
323+
"type": "array",
324+
"items": {
325+
"type": "object",
326+
"additionalProperties": false,
327+
"properties": {
328+
"enemy": {
329+
"type": "string",
330+
"title": "Enemy Name",
331+
"description": "The name of an enemy that drops can be collected from, as found in the enemies file."
332+
},
333+
"count": {
334+
"type": "integer",
335+
"title": "Count",
336+
"description": "The number of drops that can be collected from this enemy by executing this strat."
337+
}
338+
}
339+
}
340+
}
341+
}
342+
},
312343
"samusEaterFrames": {
313344
"type": "integer",
314345
"minimum": 1,

0 commit comments

Comments
 (0)