Skip to content

Commit 3cb1169

Browse files
authored
Merge pull request #2656 from blkerby/x-mode-lenience
X-mode and spikesuit numerics, with some Brinstar examples
2 parents 826623b + 7cf778a commit 3cb1169

16 files changed

Lines changed: 584 additions & 269 deletions

helpers.json

Lines changed: 222 additions & 101 deletions
Original file line numberDiff line numberDiff line change
@@ -428,54 +428,6 @@
428428
],
429429
"devNote": "1 Power Bomb leniency per attempt, 8 leniency attempts."
430430
},
431-
{
432-
"name": "h_XModeSpikeHitLeniency",
433-
"requires": [
434-
{"spikeHits": 1}
435-
]
436-
},
437-
{
438-
"name": "h_XModeThornHitLeniency",
439-
"requires": [
440-
{"thornHits": 1}
441-
]
442-
},
443-
{
444-
"name": "h_thornXModeFramePerfectExtraLeniency",
445-
"requires": [
446-
{"thornHits": 1}
447-
]
448-
},
449-
{
450-
"name": "h_thornDoubleXModeFramePerfectExtraLeniency",
451-
"requires":[
452-
{"thornHits": 4}
453-
]
454-
},
455-
{
456-
"name": "h_spikeSuitSpikeHitLeniency",
457-
"requires": [
458-
{"spikeHits": 2}
459-
]
460-
},
461-
{
462-
"name": "h_spikeSuitThornHitLeniency",
463-
"requires": [
464-
{"thornHits": 2}
465-
]
466-
},
467-
{
468-
"name": "h_spikeSuitSamusEaterLeniency",
469-
"requires": [
470-
{"samusEaterCycles": 2}
471-
]
472-
},
473-
{
474-
"name": "h_spikeSuitPowerBombLeniency",
475-
"requires": [
476-
{"ammo": {"type": "PowerBomb","count": 2}}
477-
]
478-
},
479431
{
480432
"name": "h_extendedMoondanceBeetomLeniency",
481433
"requires": [
@@ -1561,28 +1513,6 @@
15611513
],
15621514
"devNote": "All heat frames before and after the refill are added on the strats that use the helper."
15631515
},
1564-
{
1565-
"name": "h_XModeSpikeHit",
1566-
"requires": [
1567-
{"spikeHits": 1},
1568-
"h_XModeSpikeHitLeniency"
1569-
],
1570-
"devNote": [
1571-
"Some strats require multiple spike hits, in which case h_canSpikeXMode will be included multiple times.",
1572-
"In this case, the total leniency is the base leniency h_XModeSpikeHitLeniency multiplied by the number of hits."
1573-
]
1574-
},
1575-
{
1576-
"name": "h_XModeThornHit",
1577-
"requires": [
1578-
{"thornHits": 1},
1579-
"h_XModeThornHitLeniency"
1580-
],
1581-
"devNote": [
1582-
"Some strats require multiple thorn hits, in which case h_canThornXMode will be included multiple times.",
1583-
"In this case, the total leniency is the base leniency h_XModeThornHitLeniency multiplied by the number of hits."
1584-
]
1585-
},
15861516
{
15871517
"name": "h_XRayMorphIceClip",
15881518
"requires": [
@@ -1873,78 +1803,200 @@
18731803
{
18741804
"name": "h_spikeXModeSpikeSuit",
18751805
"requires": [
1876-
"h_XModeSpikeHit",
1877-
"h_XModeSpikeHit",
1878-
"h_spikeSuitSpikeHitLeniency",
1879-
"h_spikeSuitSpikeHitLeniency",
1880-
"h_spikeSuitSpikeHitLeniency",
1806+
{"spikeHits": {"mul": [
1807+
{"add": ["n_spikeXModeAttempts", 2]},
1808+
"n_spikeSuitAttempts"
1809+
]}},
18811810
"h_shinechargeMaxRunway",
1882-
"canXModeSpikeSuit",
1883-
{"spikeHits": 1}
1811+
"canXModeSpikeSuit"
18841812
],
1885-
"devNote": "This helper is used for an X-Mode shinecharge followed by a spikesuit so the leniency should be multiplactive."
1813+
"devNote": [
1814+
"This covers the most common case of spike X-mode spikesuit, where a minimum of 3 spike hits need to be taken;",
1815+
"this relies on being able to bounce before entering the spikes."
1816+
]
18861817
},
18871818
{
18881819
"name": "h_thornXModeSpikeSuit",
18891820
"requires": [
1890-
"h_XModeThornHit",
1891-
"h_XModeThornHit",
1892-
"h_XModeThornHitLeniency",
1893-
"h_XModeThornHitLeniency",
1894-
"h_XModeThornHitLeniency",
1821+
{"or": [
1822+
{"thornHits": {"mul": [
1823+
{"add": ["n_thornXModeAttempts", 2]},
1824+
"n_spikeSuitAttempts"
1825+
]}},
1826+
{"and": [
1827+
"canXModeMovement",
1828+
{"thornHits": {"mul": [
1829+
{"add": ["n_thornXModeAttempts", 1]},
1830+
"n_spikeSuitAttempts"
1831+
]}}
1832+
]}
1833+
]},
18951834
"h_shinechargeMaxRunway",
1896-
"canXModeSpikeSuit",
1897-
{"thornHits": 1}
1835+
"canXModeSpikeSuit"
18981836
],
1899-
"devNote": "This helper is used for an X-Mode shinecharge followed by a spikesuit so the leniency should be multiplactive."
1837+
"devNote": [
1838+
"This covers the most common case of thorn X-mode spikesuit, where a minimum of 2 thorn hits need to be taken;",
1839+
"this relies on being able to bounce before entering the thorns,",
1840+
"and with canXModeMovement, it relies on timing Samus' i-frames to avoid an additional thorn hit after X-mode is released."
1841+
]
19001842
},
19011843
{
1902-
"name": "h_spikeXModeShinecharge",
1844+
"name": "h_thornXModeSpikeSuitWithoutLenience",
19031845
"requires": [
1904-
"canXMode",
1905-
"h_XModeSpikeHit",
1906-
"h_XModeSpikeHit",
1846+
{"or": [
1847+
{"thornHits": 3},
1848+
{"and": [
1849+
"canXModeMovement",
1850+
{"thornHits": 2}
1851+
]}
1852+
]},
19071853
"h_shinechargeMaxRunway",
1908-
"canShinechargeMovement"
1854+
"canXModeSpikeSuit"
1855+
],
1856+
"devNote": [
1857+
"This is applicable in case a farm is available, making lenience unnecessary."
19091858
]
19101859
},
19111860
{
1912-
"name": "h_thornXModeShinecharge",
1861+
"name": "h_XModeShinecharge",
19131862
"requires": [
19141863
"canXMode",
1915-
"h_XModeThornHit",
19161864
"h_shinechargeMaxRunway",
19171865
"canShinechargeMovement"
1866+
],
1867+
"devNote": [
1868+
"This helper should be used as a base in combination with spike/thorn hit requirements."
1869+
]
1870+
},
1871+
{
1872+
"name": "h_spikeXModeShinecharge",
1873+
"requires": [
1874+
"h_XModeShinecharge",
1875+
{"spikeHits": {"add": ["n_spikeXModeAttempts", 1]}}
1876+
],
1877+
"devNote": [
1878+
"This covers the most common case of spike X-mode, where a minimum of 2 spike hits need to be taken;",
1879+
"this relies on being able to bounce before entering the spikes."
1880+
]
1881+
},
1882+
{
1883+
"name": "h_thornXModeShinecharge",
1884+
"requires": [
1885+
"h_XModeShinecharge",
1886+
{"or": [
1887+
{"thornHits": {"add": ["n_thornXModeAttempts", 1]}},
1888+
{"and": [
1889+
"canXModeMovement",
1890+
{"thornHits": "n_thornXModeAttempts"}
1891+
]}
1892+
]}
1893+
],
1894+
"devNote": [
1895+
"This covers the most common case of thorn X-mode, where a minimum of 1 thorn hit needs to be taken;",
1896+
"this relies on being able to bounce before entering the thorns;",
1897+
"with canXModeMovement, it relies on timing Samus' i-frames to avoid an additional thorn hit after X-mode is released."
1898+
]
1899+
},
1900+
{
1901+
"name": "h_thornXModeShinechargeWithoutLenience",
1902+
"requires": [
1903+
"h_XModeShinecharge",
1904+
{"or": [
1905+
{"thornHits": 2},
1906+
{"and": [
1907+
"canXModeMovement",
1908+
{"thornHits": 1}
1909+
]}
1910+
]}
1911+
],
1912+
"devNote": [
1913+
"This is applicable in case a farm is available, making lenience unnecessary."
19181914
]
19191915
},
19201916
{
19211917
"name": "h_spikeXModeBlueSuit",
19221918
"requires": [
19231919
"canXModeBlueSuit",
1924-
"h_XModeSpikeHit"
1920+
{"spikeHits": "n_spikeXModeAttempts"}
1921+
],
1922+
"devNote": [
1923+
"This covers the most common case of spike X-mode bluesuit, where a minimum of 1 spike hit needs to be taken;",
1924+
"this relies on being able to bounce before entering the spikes."
19251925
]
19261926
},
19271927
{
19281928
"name": "h_thornXModeBlueSuit",
19291929
"requires": [
19301930
"canXModeBlueSuit",
1931-
"h_XModeThornHit"
1931+
{"thornHits": "n_thornXModeAttempts"}
1932+
],
1933+
"devNote": [
1934+
"This covers the most common case of thorn X-mode bluesuit, where a minimum of 1 thorn hit needs to be taken;",
1935+
"this relies on being able to bounce before entering the thorns."
1936+
]
1937+
},
1938+
{
1939+
"name": "h_thornXModeBlueSuitWithoutLenience",
1940+
"requires": [
1941+
"canXModeBlueSuit",
1942+
{"thornHits": 1}
1943+
],
1944+
"devNote": [
1945+
"This is applicable in case a farm is available, making lenience unnecessary."
19321946
]
19331947
},
19341948
{
19351949
"name": "h_spikeDoubleXModeBlueSuit",
1936-
"requires":[
1950+
"requires": [
19371951
"canDoubleXModeBlueSuit",
1938-
"h_spikeXModeShinecharge",
1939-
"h_spikeXModeBlueSuit"
1952+
{"spikeHits": {"mul": [
1953+
{"add": ["n_spikeXModeAttempts", 2]},
1954+
"n_spikeXModeAttempts"
1955+
]}}
1956+
],
1957+
"devNote": [
1958+
"This covers the most common case of spike double X-mode bluesuit, where a minimum of 3 spike hits need to be taken;",
1959+
"this relies on being able to bounce before entering the spikes for both X-modes,",
1960+
"or on using i-frames to bounce on the spikes for the second X-mode."
19401961
]
19411962
},
19421963
{
19431964
"name": "h_thornDoubleXModeBlueSuit",
1944-
"requires":[
1965+
"requires": [
19451966
"canDoubleXModeBlueSuit",
1946-
"h_thornXModeShinecharge",
1947-
"h_thornXModeBlueSuit"
1967+
{"or": [
1968+
{"thornHits": {"mul": [
1969+
{"add": ["n_thornXModeAttempts", 2]},
1970+
"n_thornXModeAttempts"
1971+
]}},
1972+
{"and": [
1973+
"canXModeMovement",
1974+
{"thornHits": {"mul": [
1975+
{"add": ["n_thornXModeAttempts", 1]},
1976+
"n_thornXModeAttempts"
1977+
]}}
1978+
]}
1979+
]}
1980+
],
1981+
"devNote": [
1982+
"This covers the most common case of thorn double X-mode bluesuit, where a minimum of 2 thorn hits need to be taken;",
1983+
"this relies on being able to bounce before entering the thorns for both X-modes.",
1984+
"With canXModeMovement, it also relies on timing Samus' i-frames to avoid an additional thorn hit after the first X-mode is released."
1985+
]
1986+
},
1987+
{
1988+
"name": "h_thornDoubleXModeBlueSuitWithoutLenience",
1989+
"requires": [
1990+
{"or": [
1991+
{"thornHits": 3},
1992+
{"and": [
1993+
"canXModeMovement",
1994+
{"thornHits": 2}
1995+
]}
1996+
]}
1997+
],
1998+
"devNote": [
1999+
"This is applicable in case a farm is available, making lenience unnecessary."
19482000
]
19492001
},
19502002
{
@@ -1964,6 +2016,75 @@
19642016
]
19652017
}
19662018
]
2019+
},
2020+
{
2021+
"name": "Deprecated",
2022+
"description": "These helpers are to be removed soon.",
2023+
"helpers": [
2024+
{
2025+
"name": "h_XModeSpikeHitLeniency",
2026+
"requires": [
2027+
{"spikeHits": "n_spikeXModeLenience"}
2028+
]
2029+
},
2030+
{
2031+
"name": "h_XModeThornHitLeniency",
2032+
"requires": [
2033+
{"thornHits": "n_spikeXModeLenience"}
2034+
]
2035+
},
2036+
{
2037+
"name": "h_thornXModeFramePerfectExtraLeniency",
2038+
"requires": [
2039+
{"thornHits": "n_thornXModeLenience"}
2040+
]
2041+
},
2042+
{
2043+
"name": "h_thornDoubleXModeFramePerfectExtraLeniency",
2044+
"requires":[
2045+
{"thornHits": {"mul": [
2046+
{"add": ["n_thornXModeAttempts", 2]},
2047+
"n_thornXModeLenience"
2048+
]}}
2049+
]
2050+
},
2051+
{
2052+
"name": "h_spikeSuitSpikeHitLeniency",
2053+
"requires": [
2054+
{"spikeHits": "n_spikeSuitLenience"}
2055+
]
2056+
},
2057+
{
2058+
"name": "h_spikeSuitThornHitLeniency",
2059+
"requires": [
2060+
{"thornHits": "n_spikeSuitLenience"}
2061+
]
2062+
},
2063+
{
2064+
"name": "h_spikeSuitSamusEaterLeniency",
2065+
"requires": [
2066+
{"samusEaterCycles": "n_spikeSuitLenience"}
2067+
]
2068+
},
2069+
{
2070+
"name": "h_spikeSuitPowerBombLeniency",
2071+
"requires": [
2072+
{"ammo": {"type": "PowerBomb", "count": "n_spikeSuitLenience"}}
2073+
]
2074+
},
2075+
{
2076+
"name": "h_XModeSpikeHit",
2077+
"requires": [
2078+
{"spikeHits": "n_spikeXModeAttempts"}
2079+
]
2080+
},
2081+
{
2082+
"name": "h_XModeThornHit",
2083+
"requires": [
2084+
{"thornHits": "n_thornXModeAttempts"}
2085+
]
2086+
}
2087+
]
19672088
}
19682089
]
19692090
}

0 commit comments

Comments
 (0)