Skip to content

Commit ded47e4

Browse files
committed
feedback updates
1 parent ec6291a commit ded47e4

3 files changed

Lines changed: 35 additions & 13 deletions

File tree

logicalRequirements.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ A logical requirement is an array of logical elements, which are implicitly link
77
* _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`.
88
* _The name of an item._ Those are defined in [items.json](items.json).
99
* _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.
1011
* _"never"._ This indicates a logical element that cannot be fulfilled under any conditions.
1112
* More complex elements which will be defined in their own sub-sections
1213

@@ -658,8 +659,8 @@ __Example:__
658659
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:
659660
- Supers can be used once every 0.5 seconds.
660661
- Missiles can be used once every 0.34 seconds.
661-
- Power Bombs can be used once every 3 seconds.
662662
- A charged beam shot can be used once every 1.4 seconds.
663+
- Power Bombs can be used once every 3 seconds.
663664

664665
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.
665666

@@ -673,8 +674,8 @@ A `ridleyKill` requirement has the following optional properties which modify th
673674
- _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):
674675
- Supers can be used once every 0.34 seconds.
675676
- Missiles can be used once every 0.17 seconds.
676-
- Power Bombs can be used once every 2.65 seconds.
677677
- 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`.
678679

679680
### Other requirements
680681

region/lowernorfair/east/Ridley's Room.json

Lines changed: 31 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -407,6 +407,7 @@
407407
},
408408
"requires": [
409409
{"notable": "G-Mode Crystal Flash Stuck Ridley"},
410+
"h_heatedGMode",
410411
"h_CrystalFlash",
411412
"h_usePowerBomb",
412413
{"or": [
@@ -430,7 +431,7 @@
430431
}}
431432
]},
432433
{"autoReserveTrigger": {}},
433-
{"heatFrames": 720},
434+
{"heatFrames": 520},
434435
{"partialRefill": {"type": "Energy", "limit": 100}}
435436
],
436437
"setsFlags": ["f_DefeatedRidley"],
@@ -456,9 +457,17 @@
456457
},
457458
"requires": [
458459
{"notable": "G-Mode Ridley with 30 Supers"},
460+
"h_heatedGMode",
459461
{"heatFrames": 0},
460462
{"ammo": {"type": "Super", "count": 30}},
461-
{"partialRefill": {"type": "Energy", "limit": 100}}
463+
{"or": [
464+
{"and": [
465+
"canPauseAbuse",
466+
{"resourceAtMost": [{"type": "Energy", "count": 1}]},
467+
{"partialRefill": {"type": "Energy", "limit": 100}}
468+
]},
469+
"free"
470+
]}
462471
],
463472
"setsFlags": ["f_DefeatedRidley"],
464473
"note": [
@@ -467,11 +476,10 @@
467476
"As long as Ridley is swooping, not many fireballs will be placed, so delaying Ridley from pogoing can be helpful.",
468477
"Once Ridley begins pogoing, it generally becomes unsafe for Samus to jump high because of the risk of touching a fireball.",
469478
"By the end of the fight, projectiles will probably be overloaded, causing Ridley's drops not to spawn;",
470-
"to solve this, exit G-mode just before drops spawn, and pause abuse in order to collect them."
479+
"they can be collected by exiting G-mode just before drops spawn, and pause abusing if necessary."
471480
],
472481
"devNote": [
473-
"Leaving back through the open door while still in G-Mode can also be possible,",
474-
"but the risk of hitting a fireball is probably too high for that to be reasonable."
482+
"FIXME: Leaving back through the open door while still in G-Mode is also possible, and free to do."
475483
]
476484
},
477485
{
@@ -667,6 +675,7 @@
667675
},
668676
"requires": [
669677
{"notable": "G-Mode Crystal Flash Stuck Ridley"},
678+
"h_heatedGMode",
670679
"h_CrystalFlash",
671680
"h_usePowerBomb",
672681
{"or": [
@@ -690,7 +699,7 @@
690699
}}
691700
]},
692701
{"autoReserveTrigger": {}},
693-
{"heatFrames": 720},
702+
{"heatFrames": 520},
694703
{"partialRefill": {"type": "Energy", "limit": 100}}
695704
],
696705
"setsFlags": ["f_DefeatedRidley"],
@@ -706,7 +715,7 @@
706715
],
707716
"devNote": [
708717
"FIXME: artificial morph with direct G-mode is another option for laying a Power Bomb at the top of the room,",
709-
"by landing on the door ledge on entry."
718+
"by landing on the door ledge on entry (the Morph item would still be needed since the Crystal Flash forces Samus out of being morphed)."
710719
]
711720
},
712721
{
@@ -720,9 +729,17 @@
720729
},
721730
"requires": [
722731
{"notable": "G-Mode Ridley with 30 Supers"},
732+
"h_heatedGMode",
723733
{"heatFrames": 0},
724734
{"ammo": {"type": "Super", "count": 30}},
725-
{"partialRefill": {"type": "Energy", "limit": 100}}
735+
{"or": [
736+
{"and": [
737+
"canPauseAbuse",
738+
{"resourceAtMost": [{"type": "Energy", "count": 1}]},
739+
{"partialRefill": {"type": "Energy", "limit": 100}}
740+
]},
741+
"free"
742+
]}
726743
],
727744
"setsFlags": ["f_DefeatedRidley"],
728745
"note": [
@@ -731,8 +748,11 @@
731748
"As long as Ridley is swooping, not many fireballs will be placed, so delaying Ridley from pogoing can be helpful.",
732749
"Once Ridley begins pogoing, it generally becomes unsafe for Samus to jump high because of the risk of touching a fireball.",
733750
"By the end of the fight, projectiles will probably be overloaded, causing Ridley's drops not to spawn;",
734-
"to solve this, exit G-mode just before drops spawn, and pause abuse in order to collect them.",
735-
"Leaving back through the open door while still in G-mode is also possible."
751+
"they can be collected by exiting G-mode just before drops spawn, and pause abusing if necessary."
752+
],
753+
"devNote": [
754+
"FIXME: Leaving back through the open door while still in G-Mode is also possible,",
755+
"but difficult to do without touching an invisible fireball."
736756
]
737757
},
738758
{
@@ -857,7 +877,7 @@
857877
"id": 2,
858878
"name": "G-Mode Crystal Flash Stuck Ridley",
859879
"note": [
860-
"In G-mode, use a Crystal Flash and additional Power Bomb to get Ridley stuck at the bottom-left of the room.",
880+
"In G-mode, use a Crystal Flash and an additional Power Bomb to get Ridley stuck in a corner of the room.",
861881
"To end the fight, exit G-mode by using damage from Ridley to trigger auto-reserves."
862882
]
863883
},

tests/asserts/keywords.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -588,6 +588,7 @@ def check_speed_states(strat, err_fn):
588588

589589
keywords["values"] = [
590590
"never",
591+
"free",
591592
"spinjump"
592593
]
593594

0 commit comments

Comments
 (0)