You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: logicalRequirements.md
+26Lines changed: 26 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -7,6 +7,7 @@ A logical requirement is an array of logical elements, which are implicitly link
7
7
*_The name of a tech._ Techs are defined in [tech.json](tech.json). Those represent a technique that players can perform, which may also imply logical requirements of their own. By convention, a tech's name should start with `can`.
8
8
*_The name of an item._ Those are defined in [items.json](items.json).
9
9
*_The name of a game flag._ Those are defined in [items.json](items.json), and are used to represent game events such as defeating a boss, or breaking the Maridia tube. By convention, a game flag's name should start with `f_`.
10
+
*_"free"._ This indicates a logical element that is automatically fulfilled.
10
11
*_"never"._ This indicates a logical element that cannot be fulfilled under any conditions.
11
12
* More complex elements which will be defined in their own sub-sections
12
13
@@ -651,6 +652,31 @@ __Example:__
651
652
{"noFlashSuit": {}}
652
653
```
653
654
655
+
### Boss requirements
656
+
657
+
#### Ridley kill
658
+
659
+
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:
660
+
- Supers can be used once every 0.5 seconds.
661
+
- Missiles can be used once every 0.34 seconds.
662
+
- A charged beam shot can be used once every 1.4 seconds.
663
+
- Power Bombs can be used once every 3 seconds.
664
+
665
+
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.
666
+
667
+
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.
668
+
669
+
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.
670
+
671
+
A `ridleyKill` requirement has the following optional properties which modify the assumptions of the fight:
672
+
-_powerBombs_: A boolean indicating if Power Bombs can be used during the fight (default: true).
673
+
-_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.
674
+
-_stuck_: An enum with possible values "top" or "bottom", indicating the part of the room where Ridley gets stuck, allowing Samus to 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):
675
+
- Supers can be used once every 0.34 seconds.
676
+
- Missiles can be used once every 0.17 seconds.
677
+
- A charged beam shot can be used once every 1.1 seconds.
678
+
- Power Bombs can be used once every 2.65 seconds, though because there is no known way to keep Ridley stuck while using Power Bombs, strats should set `powerBombs` to `false` when `stuck` is `true`.
0 commit comments