|
53 | 53 | [1, 0], |
54 | 54 | [1, 0] |
55 | 55 | ] |
| 56 | + }, |
| 57 | + { |
| 58 | + "id": 4, |
| 59 | + "name": "Bottom Right Shinecharged", |
| 60 | + "nodeType": "junction", |
| 61 | + "nodeSubType": "junction", |
| 62 | + "note": "Gaining a shinecharge at the bottom-right of the room.", |
| 63 | + "mapTileMask": [ |
| 64 | + [1, 1], |
| 65 | + [1, 0], |
| 66 | + [2, 0] |
| 67 | + ] |
56 | 68 | } |
57 | 69 | ], |
58 | 70 | "enemies": [], |
|
72 | 84 | "from": 2, |
73 | 85 | "to": [ |
74 | 86 | {"id": 1}, |
75 | | - {"id": 2} |
| 87 | + {"id": 2}, |
| 88 | + {"id": 4} |
76 | 89 | ] |
77 | 90 | }, |
78 | 91 | { |
79 | 92 | "from": 3, |
80 | 93 | "to": [ |
81 | 94 | {"id": 1} |
82 | 95 | ] |
| 96 | + }, |
| 97 | + { |
| 98 | + "from": 4, |
| 99 | + "to": [ |
| 100 | + {"id": 1}, |
| 101 | + {"id": 2} |
| 102 | + ] |
83 | 103 | } |
84 | 104 | ], |
85 | 105 | "strats": [ |
|
183 | 203 | "canDelayedWalljump" |
184 | 204 | ] |
185 | 205 | }, |
186 | | - { |
187 | | - "id": 9, |
188 | | - "link": [2, 1], |
189 | | - "name": "Shinespark", |
190 | | - "entranceCondition": { |
191 | | - "comeInShinecharging": { |
192 | | - "length": 12, |
193 | | - "openEnd": 0 |
194 | | - } |
195 | | - }, |
196 | | - "requires": [ |
197 | | - "Gravity", |
198 | | - {"shinespark": {"frames": 40, "excessFrames": 8}} |
199 | | - ] |
200 | | - }, |
201 | 206 | { |
202 | 207 | "id": 10, |
203 | 208 | "link": [2, 1], |
204 | | - "name": "Shinespark, Come in Shinecharged", |
| 209 | + "name": "Come in Shinecharged, Shinespark (Gravity)", |
205 | 210 | "entranceCondition": { |
206 | 211 | "comeInShinecharged": {} |
207 | 212 | }, |
208 | 213 | "requires": [ |
209 | | - {"shineChargeFrames": 40}, |
210 | 214 | "Gravity", |
211 | | - {"shinespark": {"frames": 40, "excessFrames": 8}} |
| 215 | + {"or": [ |
| 216 | + {"and": [ |
| 217 | + {"shineChargeFrames": 20}, |
| 218 | + {"shinespark": {"frames": 40, "excessFrames": 8}} |
| 219 | + ]}, |
| 220 | + {"and": [ |
| 221 | + {"shineChargeFrames": 30}, |
| 222 | + "canMidairShinespark", |
| 223 | + {"shinespark": {"frames": 33, "excessFrames": 8}} |
| 224 | + ]} |
| 225 | + ]} |
212 | 226 | ], |
213 | 227 | "flashSuitChecked": true |
214 | 228 | }, |
215 | 229 | { |
216 | 230 | "id": 11, |
217 | 231 | "link": [2, 1], |
218 | | - "name": "Suitless Shinespark", |
| 232 | + "name": "Come In Shinecharged, Shinespark (Suitless)", |
219 | 233 | "entranceCondition": { |
220 | 234 | "comeInShinecharged": {} |
221 | 235 | }, |
222 | 236 | "requires": [ |
223 | | - {"shineChargeFrames": 60}, |
| 237 | + {"shineChargeFrames": 40}, |
224 | 238 | "canSuitlessMaridia", |
225 | | - {"shinespark": {"frames": 40, "excessFrames": 8}} |
| 239 | + {"or": [ |
| 240 | + {"shinespark": {"frames": 40, "excessFrames": 8}}, |
| 241 | + {"and": [ |
| 242 | + "canMidairShinespark", |
| 243 | + {"shinespark": {"frames": 37, "excessFrames": 8}} |
| 244 | + ]} |
| 245 | + ]} |
226 | 246 | ], |
227 | | - "flashSuitChecked": true, |
228 | | - "note": "It takes a bit more time to set up the spark when suitless." |
| 247 | + "flashSuitChecked": true |
229 | 248 | }, |
230 | 249 | { |
231 | 250 | "id": 12, |
|
270 | 289 | "canSpringBallJumpMidAir" |
271 | 290 | ] |
272 | 291 | }, |
273 | | - { |
274 | | - "id": 15, |
275 | | - "link": [2, 1], |
276 | | - "name": "Stutter Water Shinecharge", |
277 | | - "entranceCondition": { |
278 | | - "comeInRunning": { |
279 | | - "speedBooster": true, |
280 | | - "minTiles": 2.4375 |
281 | | - } |
282 | | - }, |
283 | | - "requires": [ |
284 | | - "canStutterWaterShineCharge", |
285 | | - "h_canShineChargeMaxRunway", |
286 | | - {"shinespark": {"frames": 40, "excessFrames": 8}} |
287 | | - ] |
288 | | - }, |
289 | | - { |
290 | | - "id": 16, |
291 | | - "link": [2, 1], |
292 | | - "name": "Stutter Water Shinecharge, Leave With Temporary Blue", |
293 | | - "entranceCondition": { |
294 | | - "comeInRunning": { |
295 | | - "speedBooster": true, |
296 | | - "minTiles": 2.4375 |
297 | | - } |
298 | | - }, |
299 | | - "requires": [ |
300 | | - "canStutterWaterShineCharge", |
301 | | - "h_canShineChargeMaxRunway", |
302 | | - "canXRayTurnaround", |
303 | | - "canLongChainTemporaryBlue", |
304 | | - {"or": [ |
305 | | - "canGravityJump", |
306 | | - {"and": [ |
307 | | - "HiJump", |
308 | | - "canTrickySpringBallJump" |
309 | | - ]} |
310 | | - ]} |
311 | | - ], |
312 | | - "exitCondition": { |
313 | | - "leaveWithTemporaryBlue": {} |
314 | | - }, |
315 | | - "unlocksDoors": [{"types": ["ammo"], "requires": []}], |
316 | | - "note": [ |
317 | | - "To get out of the water at the top, do another gravity jump or spring ball jump, preferably while the water is high." |
318 | | - ] |
319 | | - }, |
320 | 292 | { |
321 | 293 | "id": 17, |
322 | 294 | "link": [2, 1], |
|
787 | 759 | } |
788 | 760 | }, |
789 | 761 | { |
790 | | - "id": 30, |
| 762 | + "id": 31, |
791 | 763 | "link": [2, 2], |
792 | | - "name": "Stutter Water Shinecharge, Leave with Spark", |
| 764 | + "name": "Crystal Flash", |
| 765 | + "requires": [ |
| 766 | + "h_canCrystalFlash" |
| 767 | + ], |
| 768 | + "flashSuitChecked": true |
| 769 | + }, |
| 770 | + { |
| 771 | + "link": [2, 4], |
| 772 | + "name": "Come In Shinecharging (Gravity)", |
793 | 773 | "entranceCondition": { |
794 | | - "comeInRunning": { |
795 | | - "speedBooster": true, |
| 774 | + "comeInShinecharging": { |
| 775 | + "length": 12, |
| 776 | + "openEnd": 0 |
| 777 | + } |
| 778 | + }, |
| 779 | + "requires": [ |
| 780 | + "Gravity", |
| 781 | + {"shineChargeFrames": 0} |
| 782 | + ], |
| 783 | + "endsWithShineCharge": true |
| 784 | + }, |
| 785 | + { |
| 786 | + "link": [2, 4], |
| 787 | + "name": "Water Shinecharge", |
| 788 | + "entranceCondition": { |
| 789 | + "comeInShinecharging": { |
| 790 | + "length": 4, |
| 791 | + "openEnd": 0 |
| 792 | + } |
| 793 | + }, |
| 794 | + "requires": [ |
| 795 | + "canWaterShineCharge", |
| 796 | + {"shineChargeFrames": 0} |
| 797 | + ], |
| 798 | + "endsWithShineCharge": true |
| 799 | + }, |
| 800 | + { |
| 801 | + "id": 15, |
| 802 | + "link": [2, 4], |
| 803 | + "name": "Precise Stutter Water Shinecharge", |
| 804 | + "entranceCondition": { |
| 805 | + "comeInStutterShinecharging": { |
796 | 806 | "minTiles": 2.4375 |
797 | 807 | } |
798 | 808 | }, |
799 | 809 | "requires": [ |
800 | | - "canStutterWaterShineCharge", |
801 | | - "canShinechargeMovementComplex", |
| 810 | + "canPreciseStutterWaterShineCharge", |
| 811 | + {"shineChargeFrames": 0} |
| 812 | + ], |
| 813 | + "endsWithShineCharge": true, |
| 814 | + "note": [ |
| 815 | + "With only a runway length of 3 tiles (closed end) in the other room, this requires a precise setup:", |
| 816 | + "release forward for 3 or 4 frames, then repress forward on the last possible frame before the transition;", |
| 817 | + "alternatively, release forward for 2 frames and repress forward on the second-to-last possible frame before the transition." |
| 818 | + ], |
| 819 | + "detailNote": [ |
| 820 | + "If a longer runway is available (4 tiles), the timing windows are a bit more lenient:", |
| 821 | + "1. Release forward for 3, 4, or 5 frames, repress forward on the last possible frame;", |
| 822 | + "2. Release forward for 2 or 3 frames, repress forward on the 2nd-to-last possible frame;", |
| 823 | + "3. Release forward for 1 or 2 frames, repress forward on the 3rd-to-last possible frame." |
| 824 | + ] |
| 825 | + }, |
| 826 | + { |
| 827 | + "link": [2, 4], |
| 828 | + "name": "Very Precise Stutter Water Shinecharge", |
| 829 | + "entranceCondition": { |
| 830 | + "comeInStutterShinecharging": { |
| 831 | + "minTiles": 2 |
| 832 | + } |
| 833 | + }, |
| 834 | + "requires": [ |
| 835 | + "canPreciseStutterWaterShineCharge", |
| 836 | + "canInsaneJump", |
| 837 | + {"shineChargeFrames": 0} |
| 838 | + ], |
| 839 | + "endsWithShineCharge": true, |
| 840 | + "note": [ |
| 841 | + "With only a runway of 2 tiles (open end) in the other room, this requires a double-frame-perfect setup:", |
| 842 | + "release forward for exactly 3 frames, and repress forward on the last possible frame before the transition." |
| 843 | + ], |
| 844 | + "devNote": [ |
| 845 | + "FIXME: canInsaneJump is for difficulty placement; replace with a more appropriate tech since no jump is involved." |
| 846 | + ] |
| 847 | + }, |
| 848 | + { |
| 849 | + "id": 32, |
| 850 | + "link": [3, 1], |
| 851 | + "name": "Base", |
| 852 | + "requires": [ |
| 853 | + {"or": [ |
| 854 | + "h_canNavigateUnderwater", |
| 855 | + "Grapple", |
| 856 | + "SpaceJump" |
| 857 | + ]} |
| 858 | + ] |
| 859 | + }, |
| 860 | + { |
| 861 | + "link": [4, 1], |
| 862 | + "name": "Start Shinecharged, Shinespark", |
| 863 | + "startsWithShineCharge": true, |
| 864 | + "requires": [ |
| 865 | + {"shineChargeFrames": 60}, |
| 866 | + {"or": [ |
| 867 | + {"shinespark": {"frames": 40, "excessFrames": 8}}, |
| 868 | + {"and": [ |
| 869 | + "canMidairShinespark", |
| 870 | + {"shinespark": {"frames": 37, "excessFrames": 8}} |
| 871 | + ]}, |
| 872 | + {"and": [ |
| 873 | + "Gravity", |
| 874 | + "canMidairShinespark", |
| 875 | + {"shinespark": {"frames": 33, "excessFrames": 8}} |
| 876 | + ]} |
| 877 | + ]} |
| 878 | + ] |
| 879 | + }, |
| 880 | + { |
| 881 | + "id": 16, |
| 882 | + "link": [4, 1], |
| 883 | + "name": "Start Shinecharged, Leave With Temporary Blue", |
| 884 | + "startsWithShineCharge": true, |
| 885 | + "requires": [ |
802 | 886 | "h_canShineChargeMaxRunway", |
| 887 | + {"shineChargeFrames": 0}, |
| 888 | + "canXRayTurnaround", |
| 889 | + "canLongChainTemporaryBlue", |
803 | 890 | {"or": [ |
804 | | - {"shinespark": {"frames": 12}}, |
| 891 | + "canGravityJump", |
805 | 892 | {"and": [ |
806 | | - "canShinechargeMovementTricky", |
807 | | - {"shinespark": {"frames": 3}} |
| 893 | + "HiJump", |
| 894 | + "canTrickySpringBallJump" |
808 | 895 | ]} |
809 | 896 | ]} |
810 | 897 | ], |
| 898 | + "exitCondition": { |
| 899 | + "leaveWithTemporaryBlue": {} |
| 900 | + }, |
| 901 | + "unlocksDoors": [{"types": ["ammo"], "requires": []}], |
| 902 | + "note": [ |
| 903 | + "To get out of the water at the top, do another gravity jump or spring ball jump, preferably while the water is high." |
| 904 | + ] |
| 905 | + }, |
| 906 | + { |
| 907 | + "id": 30, |
| 908 | + "link": [4, 2], |
| 909 | + "name": "Start Shinecharged, Leave with Spark", |
| 910 | + "startsWithShineCharge": true, |
| 911 | + "requires": [ |
| 912 | + {"shineChargeFrames": 50}, |
| 913 | + "canShinechargeMovementComplex", |
| 914 | + {"shinespark": {"frames": 12}} |
| 915 | + ], |
811 | 916 | "exitCondition": { |
812 | 917 | "leaveWithSpark": {} |
813 | 918 | }, |
814 | 919 | "unlocksDoors": [ |
815 | 920 | {"types": ["missiles", "super"], "requires": []}, |
816 | 921 | {"types": ["powerbomb"], "requires": ["never"]} |
817 | | - ], |
818 | | - "note": "Enter the room with a careful amount of momentum where Samus must spend extra time slowing down during the stutter, but must not have much run speed." |
| 922 | + ] |
819 | 923 | }, |
820 | 924 | { |
821 | | - "id": 31, |
822 | | - "link": [2, 2], |
823 | | - "name": "Crystal Flash", |
| 925 | + "link": [4, 2], |
| 926 | + "name": "Start Shinecharged, Leave Shinecharged", |
| 927 | + "startsWithShineCharge": true, |
824 | 928 | "requires": [ |
825 | | - "h_canCrystalFlash" |
| 929 | + {"shineChargeFrames": 155}, |
| 930 | + "canShinechargeMovementTricky" |
826 | 931 | ], |
827 | | - "flashSuitChecked": true |
| 932 | + "exitCondition": { |
| 933 | + "leaveShinecharged": {} |
| 934 | + }, |
| 935 | + "unlocksDoors": [ |
| 936 | + {"types": ["missiles", "super"], "requires": []}, |
| 937 | + {"types": ["powerbomb"], "requires": ["never"]} |
| 938 | + ] |
828 | 939 | }, |
829 | 940 | { |
830 | | - "id": 32, |
831 | | - "link": [3, 1], |
832 | | - "name": "Base", |
| 941 | + "link": [4, 2], |
| 942 | + "name": "Start Shinecharged, Leave With Temporary Blue", |
| 943 | + "startsWithShineCharge": true, |
833 | 944 | "requires": [ |
834 | | - {"or": [ |
835 | | - "h_canNavigateUnderwater", |
836 | | - "Grapple", |
837 | | - "SpaceJump" |
838 | | - ]} |
839 | | - ] |
840 | | - } |
| 945 | + "h_canShineChargeMaxRunway", |
| 946 | + {"shineChargeFrames": 0}, |
| 947 | + "canXRayTurnaround", |
| 948 | + "canChainTemporaryBlue" |
| 949 | + ], |
| 950 | + "exitCondition": { |
| 951 | + "leaveWithTemporaryBlue": {} |
| 952 | + }, |
| 953 | + "unlocksDoors": [{"types": ["ammo"], "requires": []}] |
| 954 | + } |
841 | 955 | ], |
842 | 956 | "notables": [], |
843 | 957 | "nextStratId": 41, |
|
0 commit comments