Skip to content
Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 25 additions & 0 deletions logicalRequirements.md
Original file line number Diff line number Diff line change
Expand Up @@ -651,6 +651,31 @@ __Example:__
{"noFlashSuit": {}}
```

### Boss requirements

#### Ridley kill

A `ridleyKill` requirement represents the need to kill Ridley, including ammo and energy requirements depending on the player's assumed skill level and available items. The expected duration of the fight can be estimated based on the following assumptions:
- Supers can be used once every 0.5 seconds.
- Missiles can be used once every 0.34 seconds.
- Power Bombs can be used once every 3 seconds.
- A charged beam shot can be used once every 1.4 seconds.

Heat frames are included based on the expected duration of the fight. Patience requirements `canBePatient`, `canBeVeryPatient`, and `canBeExtremelyPatient` are likewise also included. In both cases, a leniency multiplier should be applied to the time taken between shots. Leniency should also be applied based on the assumed accuracy rate of shots hitting Ridley successfully.

Heat frame requirements should be included for the period before the fight begins, as well as after the fight until drops occurs, which can be estimated (slightly generously) at 16 seconds, or 960 heat frames.

If neither Morph nor Screw Attack are available, then at the highest skill level it can be assumed that the player takes unavoidable enemy damage at a rate of 10 energy per second. If Morph or Screw Attack is available, then it is possible to avoid all enemy damage, but for leniency normally some damage should still be assumed.

A `ridleyKill` requirement has the following optional properties which modify the assumptions of the fight:
- _powerBombs_: A boolean indicating if Power Bombs can be used during the fight (default: true).
- _gMode_: A boolean indicating if the fight happens in G-mode. If true, then Samus will be protected from heat damage, but Ridley's fireballs become invisible and immobile while still being dangerous to Samus.
- _stuck_: An enum with possible values "top" or "bottom", indicating the part of the room where Ridley gets stuck, allowing Samus can freely avoid damage from Ridley while inflicting damage to Ridley. If Ridley is stuck at the bottom of the room, then damage can be inflicted at a higher rate (not taking into account lag, which may be increased if a Crystal Flash is used in G-mode):
Comment thread
blkerby marked this conversation as resolved.
Outdated
- Supers can be used once every 0.34 seconds.
- Missiles can be used once every 0.17 seconds.
- Power Bombs can be used once every 2.65 seconds.
Comment thread
osse101 marked this conversation as resolved.
Outdated
- A charged beam shot can be used once every 1.1 seconds.

### Other requirements

#### tech object
Expand Down
183 changes: 176 additions & 7 deletions region/lowernorfair/east/Ridley's Room.json
Original file line number Diff line number Diff line change
Expand Up @@ -395,6 +395,84 @@
{"heatFrames": 50}
]
},
{
"link": [1, 3],
"name": "G-Mode Crystal Flash Stuck Ridley",
"entranceCondition": {
"comeInWithGMode": {
"mode": "any",
"morphed": false
Comment thread
blkerby marked this conversation as resolved.
Outdated
}
},
"requires": [
{"notable": "G-Mode Crystal Flash Stuck Ridley"},
"h_CrystalFlash",
"h_usePowerBomb",
{"or": [
{"and": [
{"or": [
"canWalljump",
"HiJump",
"canSpringBallJumpMidAir",
"SpaceJump"
]},
{"ridleyKill": {
"powerBombs": false,
"gMode": true,
"stuck": "bottom"}
}
]},
{"ridleyKill": {
"powerBombs": false,
"gMode": true,
"stuck": "top"
}}
]},
{"autoReserveTrigger": {}},
{"heatFrames": 720},
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If you trigger reserves while against the wall, ridley will quickly explode which is safer and faster. Bottom right was the hardest stuck position because it looked like you need to use the tail and that is close to the acid, but you can do it.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You may need a second reserve for the lower positions, actually. And an etank to use them.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This amount of heat frames is already going to be forcing a second reserve and ETank (or Varia).

By the way, I had the heatFrames wrong before because I forgot about the heatFrames included in the autoReserveTrigger. This makes it difficult to write it accurately since the Ridley death animation (e.g. while Samus is grabbed) continues through the reserve trigger, meaning the additional heat frames would depend on how many reserves/tanks you have. I based it on having 2 reserve tanks (and an E-tank) which should be the worst-case scenario here logically (with more tanks, more heat frames will already be included in the autoReserveTrigger).

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm curious how the quick explode thing works; I thought Ridley had to try grabbing you a bunch of times before that would happen. The heat frames aren't accounting for the quick explode option: I wasn't sure if it is something generally possible or only in this specific stuck position.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The 10 lunges attempts happen very very quickly for the quick explode. Getting it as quickly as the reserve trigger in my clip does is extremely rare. I think its more common to get 2-4 real lunges if you are trying to get an explode kill. So quick explode is not generally possible. Also, I tried quick explode in a normal fight, and getting grabbed was faster.

{"partialRefill": {"type": "Energy", "limit": 100}}
],
"setsFlags": ["f_DefeatedRidley"],
"note": [
"Enter the room in G-mode, perform a Crystal Flash, then lay an additional Power Bomb, preferably at the top of the room.",
"The Power Bomb will not explode but will continually force Ridley into a corner of the room.",
"If the Power Bomb is laid near the top of the room, then Ridley will be forced into the bottom of the room,",
"making it easy to damage Ridley at the highest possible rate;",
"if the Power Bomb is laid lower, Ridley will be forced to the top of room, and Samus will have to jump repeatedly to bring it on camera.",
"in which case Ridley can still be damaged but more slowly and with some caution needed to avoid invisible fireballs.",
"After reducing Ridley's health to zero, take damage from Ridley or an invisible fireball to trigger auto-reserves and exit G-mode.",
"Then get grabbed by Ridley to finish the fight."
]
},
{
"link": [1, 3],
"name": "G-Mode Ridley with 30 Supers",
"entranceCondition": {
"comeInWithGMode": {
"mode": "any",
"morphed": false
Comment thread
blkerby marked this conversation as resolved.
Outdated
}
},
"requires": [
{"notable": "G-Mode Ridley with 30 Supers"},
{"heatFrames": 0},
Comment thread
osse101 marked this conversation as resolved.
{"ammo": {"type": "Super", "count": 30}},
{"partialRefill": {"type": "Energy", "limit": 100}}
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

can use the helper h_heatedGModePauseAbuse or some more heat frames (Could have immobile, varia, or entered the room after CF or ship refill)

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If you have the energy, then it's possible to just not collect the drops, in which case no pause abuse is needed and no additional heat damage is taken either (there are still Base heat frames needed to make it from node 3 to one of the doors). Added an option for that now, and included the pause abuse requirement for the other case.

],
"setsFlags": ["f_DefeatedRidley"],
"note": [
"Enter the room in G-mode and quickly kill Ridley with 30 Supers.",
"G-mode protects against heat damage but also causes Ridley's fireballs to be invisible and not move.",
"As long as Ridley is swooping, not many fireballs will be placed, so delaying Ridley from pogoing can be helpful.",
"Once Ridley begins pogoing, it generally becomes unsafe for Samus to jump high because of the risk of touching a fireball.",
"By the end of the fight, projectiles will probably be overloaded, causing Ridley's drops not to spawn;",
"to solve this, exit G-mode just before drops spawn, and pause abuse in order to collect them."
],
"devNote": [
"Leaving back through the open door while still in G-Mode can also be possible,",
"but the risk of hitting a fireball is probably too high for that to be reasonable."
]
},
{
"id": 4,
"link": [2, 2],
Expand Down Expand Up @@ -577,6 +655,85 @@
],
"flashSuitChecked": true
},
{
"link": [2, 3],
"name": "G-Mode Crystal Flash Stuck Ridley",
"entranceCondition": {
"comeInWithGMode": {
"mode": "any",
"morphed": false
Comment thread
blkerby marked this conversation as resolved.
Outdated
}
},
"requires": [
{"notable": "G-Mode Crystal Flash Stuck Ridley"},
"h_CrystalFlash",
"h_usePowerBomb",
{"or": [
{"and": [
{"or": [
"canWalljump",
"HiJump",
"canSpringBallJumpMidAir",
"SpaceJump"
]},
{"ridleyKill": {
"powerBombs": false,
"gMode": true,
"stuck": "bottom"}
}
]},
{"ridleyKill": {
"powerBombs": false,
"gMode": true,
"stuck": "top"
}}
]},
{"autoReserveTrigger": {}},
{"heatFrames": 720},
{"partialRefill": {"type": "Energy", "limit": 100}}
],
"setsFlags": ["f_DefeatedRidley"],
"note": [
"Enter the room in G-mode, perform a Crystal Flash, then lay an additional Power Bomb, preferably at the top of the room.",
"The Power Bomb will not explode but will continually force Ridley into a corner of the room.",
"If the Power Bomb is laid near the top of the room, then Ridley will be forced into the bottom of the room,",
"making it easy to damage Ridley at the highest possible rate;",
"if the Power Bomb is laid lower, Ridley will be forced to the top of room, and Samus will have to jump repeatedly to bring it on camera.",
"in which case Ridley can still be damaged but more slowly and with some caution needed to avoid invisible fireballs.",
"After reducing Ridley's health to zero, take damage from Ridley or an invisible fireball to trigger auto-reserves and exit G-mode.",
"Then get grabbed by Ridley to finish the fight."
],
"devNote": [
"FIXME: artificial morph with direct G-mode is another option for laying a Power Bomb at the top of the room,",
Comment thread
osse101 marked this conversation as resolved.
"by landing on the door ledge on entry."
]
},
{
"link": [2, 3],
"name": "G-Mode Ridley with 30 Supers",
"entranceCondition": {
"comeInWithGMode": {
"mode": "any",
"morphed": false
Comment thread
blkerby marked this conversation as resolved.
Outdated
}
},
"requires": [
{"notable": "G-Mode Ridley with 30 Supers"},
{"heatFrames": 0},
{"ammo": {"type": "Super", "count": 30}},
{"partialRefill": {"type": "Energy", "limit": 100}}
],
"setsFlags": ["f_DefeatedRidley"],
"note": [
"Enter the room in G-mode and quickly kill Ridley with 30 Supers.",
"G-mode protects against heat damage but also causes Ridley's fireballs to be invisible and not move.",
"As long as Ridley is swooping, not many fireballs will be placed, so delaying Ridley from pogoing can be helpful.",
"Once Ridley begins pogoing, it generally becomes unsafe for Samus to jump high because of the risk of touching a fireball.",
"By the end of the fight, projectiles will probably be overloaded, causing Ridley's drops not to spawn;",
"to solve this, exit G-mode just before drops spawn, and pause abuse in order to collect them.",
"Leaving back through the open door while still in G-mode is also possible."
]
},
{
"id": 9,
"link": [3, 1],
Expand Down Expand Up @@ -662,9 +819,7 @@
"name": "Heat Proof Ridley",
"requires": [
"h_heatProof",
{"enemyKill": {
"enemies": [["Ridley"]]
}}
{"ridleyKill": {}}
],
"setsFlags": ["f_DefeatedRidley"]
},
Expand All @@ -675,9 +830,7 @@
"requires": [
{"notable": "Ridley without Heat Protection"},
{"heatFrames": 0},
{"enemyKill": {
"enemies": [["Ridley"]]
}}
{"ridleyKill": {}}
],
"setsFlags": ["f_DefeatedRidley"],
"note": "Fight Ridley without immunity to heat damage.",
Expand All @@ -698,8 +851,24 @@
"id": 1,
"name": "Ridley without Heat Protection",
"note": "Fight Ridley without immunity to heat damage."
},
{
"id": 2,
"name": "G-Mode Crystal Flash Stuck Ridley",
"note": [
"In G-mode, use a Crystal Flash and additional Power Bomb to get Ridley stuck at the bottom-left of the room.",
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
"In G-mode, use a Crystal Flash and additional Power Bomb to get Ridley stuck at the bottom-left of the room.",
"In G-mode, use a Crystal Flash and an additional Power Bomb to get Ridley stuck at the bottom-left of the room.",

Comment thread
osse101 marked this conversation as resolved.
Outdated
"To end the fight, exit G-mode by using damage from Ridley to trigger auto-reserves."
]
},
{
"id": 3,
"name": "G-Mode Ridley with 30 Supers",
"note": [
"In G-Mode, use 30 Supers to end the fight quickly, carefully avoiding the invisible fireballs that Ridley spawns.",
"Use X-Ray to exit G-Mode precisely at the end of the fight just before drops spawn."
]
}
],
"nextStratId": 27,
"nextNotableId": 2
"nextNotableId": 4
}
23 changes: 23 additions & 0 deletions schema/m3-requirements.schema.json
Original file line number Diff line number Diff line change
Expand Up @@ -844,6 +844,29 @@
"type": "string",
"title": "Disable Equipment",
"description": "A requirement to disable a specific item."
},
"ridleyKill": {
"type": "object",
"description": "Fulfilled by killing Ridley, including ammo, energy, and skill requirements.",
"additionalProperties": false,
"properties": {
"powerBombs": {
"type": "boolean",
"default": true,
"description": "Whether Power Bombs can be used during the fight."
},
"gMode": {
"type": "boolean",
"default": false,
"description": "Whether the Ridley kill happens while in G-mode, preventing heat damage while making Ridley's fireballs immobile."
},
"stuck": {
"type": "string",
"enum": [null, "top", "bottom"],
"default": null,
"description": "If applicable, the part of the room where Ridley is stuck."
}
}
}
}
}
Expand Down