Skip to content

Commit 4dbc4e0

Browse files
authored
Merge branch 'vg-json-data:master' into rsi-ln-wasteland
2 parents 6385c59 + badc2aa commit 4dbc4e0

62 files changed

Lines changed: 5023 additions & 621 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

helpers.json

Lines changed: 147 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1050,6 +1050,25 @@
10501050
{"gainBlueSuit": {}}
10511051
]
10521052
},
1053+
{
1054+
"name": "h_underwaterCrystalSpark",
1055+
"requires": [
1056+
{"tech": "canUnderwaterCrystalSpark"},
1057+
"canMidAirMorph",
1058+
"h_CrystalFlash",
1059+
"h_CrystalSparkLeniency",
1060+
{"gainBlueSuit": {}}
1061+
]
1062+
},
1063+
{
1064+
"name": "h_underwaterCrystalSparkWithoutLenience",
1065+
"requires": [
1066+
{"tech": "canUnderwaterCrystalSpark"},
1067+
"canMidAirMorph",
1068+
"h_CrystalFlash",
1069+
{"gainBlueSuit": {}}
1070+
]
1071+
},
10531072
{
10541073
"name": "h_heatedCrystalSpark",
10551074
"requires": [
@@ -1430,6 +1449,18 @@
14301449
{"blueSuitShinecharge": {}}
14311450
]}
14321451
]
1452+
},
1453+
{
1454+
"name": "h_stationaryNeutralDamageBoost",
1455+
"requires": [
1456+
{"tech": "canNeutralDamageBoost"}
1457+
],
1458+
"note": [
1459+
"This is for neutral damage boosts that are compatible with carrying a blue suit,",
1460+
"because of not needing to be moving when hit.",
1461+
"Note that even if pressing against a wall, holding a direction input can cause a blue suit to kill the enemy before the boost would occur;",
1462+
"therefore, if carrying a blue suit, no direction inputs should be pressed until after taking the hit."
1463+
]
14331464
}
14341465
]
14351466
},
@@ -1605,6 +1636,32 @@
16051636
"h_bombIntoCrystalFlashClipLeniency"
16061637
]
16071638
},
1639+
{
1640+
"name": "h_artificialMorphRModeCrystalFlashInterrupt",
1641+
"requires": [
1642+
{"tech": "canRModeCrystalFlashInterrupt"},
1643+
{"resourceAtMost": [{"type": "RegularEnergy", "count": 50}]},
1644+
{"resourceAtMost": [{"type": "ReserveEnergy", "count": 0}]},
1645+
{"or": [
1646+
{"disableEquipment": "ETank"},
1647+
{"resourceMaxCapacity": [{"type": "RegularEnergy", "count": 99}]}
1648+
]},
1649+
"h_artificialMorphPowerBomb",
1650+
{"resourceAvailable": [{"type": "Missile", "count": 10}]},
1651+
{"resourceAvailable": [{"type": "Super", "count": 10}]},
1652+
{"resourceAvailable": [{"type": "PowerBomb", "count": 10}]},
1653+
{"disableEquipment": "Varia"},
1654+
{"disableEquipment": "Gravity"},
1655+
{"gainFlashSuit": {}}
1656+
]
1657+
},
1658+
{
1659+
"name": "h_artificialMorphTrickyRModeCrystalFlashInterrupt",
1660+
"requires": [
1661+
{"tech": "canTrickyRModeCrystalFlashInterrupt"},
1662+
"h_artificialMorphRModeCrystalFlashInterrupt"
1663+
]
1664+
},
16081665
{
16091666
"name": "h_artificialMorphMovement",
16101667
"requires": [
@@ -1623,6 +1680,33 @@
16231680
"IBJ is not usable for underwater rooms without Gravity."
16241681
]
16251682
},
1683+
{
1684+
"name": "h_MoreRTanksThanETanks",
1685+
"requires": [
1686+
{"or": [
1687+
{"and": [
1688+
{"disableEquipment": "ETank"},
1689+
{"resourceCapacity": [{"type": "ReserveEnergy", "count": 100}]}
1690+
]},
1691+
{"and": [
1692+
{"resourceMaxCapacity": [{"type": "RegularEnergy", "count": 99}]},
1693+
{"resourceCapacity": [{"type": "ReserveEnergy", "count": 100}]}
1694+
]},
1695+
{"and": [
1696+
{"resourceMaxCapacity": [{"type": "RegularEnergy", "count": 199}]},
1697+
{"resourceCapacity": [{"type": "ReserveEnergy", "count": 200}]}
1698+
]},
1699+
{"and": [
1700+
{"resourceMaxCapacity": [{"type": "RegularEnergy", "count": 299}]},
1701+
{"resourceCapacity": [{"type": "ReserveEnergy", "count": 300}]}
1702+
]},
1703+
{"and": [
1704+
{"resourceMaxCapacity": [{"type": "RegularEnergy", "count": 399}]},
1705+
{"resourceCapacity": [{"type": "ReserveEnergy", "count": 400}]}
1706+
]}
1707+
]}
1708+
]
1709+
},
16261710
{
16271711
"name": "h_RModeCanRefillReserves",
16281712
"requires": [
@@ -1638,6 +1722,67 @@
16381722
]}
16391723
]
16401724
},
1725+
{
1726+
"name": "h_CrystalFlashForReserveEnergy",
1727+
"requires": [
1728+
"canCrystalFlash",
1729+
{"or": [
1730+
{"and": [
1731+
{"or": [
1732+
{"disableEquipment": "ETank"},
1733+
{"resourceMaxCapacity": [{"type": "RegularEnergy", "count": 1099}]}
1734+
]},
1735+
{"partialRefill": {"type": "RegularEnergy", "limit": 1099}},
1736+
{"refill": ["ReserveEnergy"]}
1737+
]},
1738+
{"and": [
1739+
{"refill": ["RegularEnergy"]},
1740+
{"partialRefill": {"type": "ReserveEnergy", "limit": 51}}
1741+
]}
1742+
]},
1743+
{"resourceAvailable": [{"type": "ReserveEnergy", "count": 1}]}
1744+
],
1745+
"note": [
1746+
"This helper represents using a Crystal Flash with the specific goal of getting reserves, which is",
1747+
"particularly important in R-Mode due to needing reserves for R-Mode standup.",
1748+
"If Energy Tanks can be disabled, regular energy will be capped at 10 E-Tanks to provide up to 400 Reserves.",
1749+
"Without this, reserve energy will be capped at 51: the maximum possible when the player has all 14 E-Tanks."
1750+
]
1751+
},
1752+
{
1753+
"name": "h_heatedCrystalFlashForReserveEnergy",
1754+
"requires": [
1755+
{"or": [
1756+
{"and": [
1757+
"h_heatProof",
1758+
"h_CrystalFlashForReserveEnergy"
1759+
]},
1760+
{"and": [
1761+
{"simpleHeatFrames": 185},
1762+
"canHeatedCrystalFlash",
1763+
{"and": [
1764+
{"or": [
1765+
{"disableEquipment": "ETank"},
1766+
{"resourceMaxCapacity": [{"type": "RegularEnergy", "count": 999}]}
1767+
]},
1768+
{"partialRefill": {"type": "RegularEnergy", "limit": 999}},
1769+
{"refill": ["ReserveEnergy"]}
1770+
]},
1771+
{"simpleHeatFrames": 20}
1772+
]}
1773+
]},
1774+
{"resourceAvailable": [{"type": "ReserveEnergy", "count": 1}]}
1775+
],
1776+
"note": [
1777+
"This helper represents using a Crystal Flash in heat with the specific goal of getting reserves, which is",
1778+
"particularly important in R-Mode due to needing reserves for R-Mode standup.",
1779+
"In unprotected heat, at 14 E-Tanks, a Crystal Flash would normally fail to reach the energy maximum and",
1780+
"provide reserves.",
1781+
"If Energy Tanks can be disabled, regular energy will be capped at 9 E-Tanks (10 if heat protection is available)",
1782+
"to provide up to 400 Reserves. Without this, heat protection is mandatory, and Reserve energy will be capped at 51:",
1783+
"the maximum possible when the player has all 14 E-Tanks."
1784+
]
1785+
},
16411786
{
16421787
"name": "h_RModeKnockbackSpark",
16431788
"requires": [
@@ -1713,17 +1858,15 @@
17131858
"requires":[
17141859
"canDoubleXModeBlueSuit",
17151860
"h_spikeXModeShinecharge",
1716-
"h_spikeXModeBlueSuit",
1717-
{"shinespark": {"frames": 4, "excessFrames": 4}}
1861+
"h_spikeXModeBlueSuit"
17181862
]
17191863
},
17201864
{
17211865
"name": "h_thornDoubleXModeBlueSuit",
17221866
"requires":[
17231867
"canDoubleXModeBlueSuit",
17241868
"h_thornXModeShinecharge",
1725-
"h_thornXModeBlueSuit",
1726-
{"shinespark": {"frames": 4, "excessFrames": 4}}
1869+
"h_thornXModeBlueSuit"
17271870
]
17281871
}
17291872
]

logicalRequirements.md

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -197,10 +197,11 @@ __Example:__
197197

198198
#### autoReserveTrigger object
199199

200-
An `autoReserveTrigger` object represents a logical requirement for "auto" reserves to be triggered, which results in Samus' energy becoming equal to the amount of energy in reserves (capped to energy capacity), and reserve energy becoming zero. If the `autoReserveTrigger` takes place in a heated room, there is an implicit `heatFrames` requirement with the number of frames being equal to the amount of health recovered by the Reserve refill. An `autoReserveTrigger` object has two optional properties:
200+
An `autoReserveTrigger` object represents a logical requirement for "auto" reserves to be triggered, which results in Samus' energy becoming equal to the amount of energy in reserves (capped to energy capacity), and reserve energy becoming zero. An `autoReserveTrigger` object has three optional properties:
201201

202202
* _minReserveEnergy_: The minimum amount of energy in reserves which will satisfy this requirement (default: 1).
203203
* _maxReserveEnergy_: The maximum amount of energy in reserves which will satisfy this requirement (default: 400).
204+
* _implicitHeatFrames_: This takes one of three possible values, "yes", "no", or "suitless". The default is "yes", which applies `heatFrames` equal to the amount of reserve transferred if the room is heated. This application is prevented by the value "no", while the value "suitless" applies `suitlessHeatFrames` instead.
204205

205206
__Example:__
206207
```json
@@ -236,6 +237,10 @@ Much like the other logical elements that represent environmental frame damage,
236237

237238
A `simpleHeatFrames` object represents the need for Samus to spend time (measured in frames) in a heated room. It is identical to `heatFrames` except that the time spent in `simpleHeatFrames` is intended to be invariant, not affected by leniency. This can be useful in cases that involve doing something simple for a significant amount of time, such as standing in place or running through a long hallway.
238239

240+
#### suitlessHeatFrames object
241+
242+
A `suitlessHeatFrames` object represents the need for Samus to spend time (measured in frames) in a heated room, while having heat-protection turned off (normally, both Varia and Gravity Suit must be turned off for this apply). This can occur, for example, when using heat to drain energy.
243+
239244
#### heatFramesWithEnergyDrops object
240245

241246
A `heatFramesWithEnergyDrops` object represents the need for Samus to spend time in a heated room, but with the possibility of offsetting some of the heat damage using energy drops from enemies. Any heat damage is logically applied before the energy gain, so Samus must be able to survive the heat before picking up the drops. Any energy gain is logically capped to not exceed the heat damage, so this logical requirement cannot result in a net energy gain. A `heatFramesWithEnergyDrops` object implicitly includes a requirement `{"or": ["h_heatProof", "canHeatRun"]}`.

region/brinstar/blue/Blue Brinstar Energy Tank Room.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1423,7 +1423,7 @@
14231423
{
14241424
"id": 70,
14251425
"link": [5, 2],
1426-
"name": "G-Mode Morph Shoot the Ceiling Block Item",
1426+
"name": "G-Mode Shoot the Ceiling Block Item",
14271427
"requires": [
14281428
"canGMode",
14291429
"Morph",

region/brinstar/green/Etecoon Energy Tank Room.json

Lines changed: 76 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -971,6 +971,36 @@
971971
],
972972
"devNote": "Morph is required to lure a Beetom. Morphless tunnel crawl should not be required."
973973
},
974+
{
975+
"id": 101,
976+
"link": [3, 2],
977+
"name": "Come in Shinecharged - Gain Blue Suit (X-Mode Super Jump)",
978+
"entranceCondition": {
979+
"comeInShinecharged": {}
980+
},
981+
"requires": [
982+
{"shineChargeFrames": 135},
983+
"h_XModeThornHit",
984+
"canSuperJump",
985+
{"shinespark": {"frames": 7}},
986+
"canXModeBlueSuit"
987+
],
988+
"flashSuitChecked": true
989+
},
990+
{
991+
"id": 102,
992+
"link": [3, 2],
993+
"name": "Gain Blue Suit (Double X-Mode Super Jump)",
994+
"requires": [
995+
"h_XModeThornHit",
996+
"h_thornXModeShinecharge",
997+
"h_XModeThornHit",
998+
"canSuperJump",
999+
{"shinespark": {"frames": 7}},
1000+
"canXModeBlueSuit"
1001+
],
1002+
"flashSuitChecked": true
1003+
},
9741004
{
9751005
"id": 30,
9761006
"link": [3, 2],
@@ -1032,6 +1062,38 @@
10321062
"Freezing the lower one may be made easier or damageless by scrolling the camera when the Beetom is in the correct position and freezing it with a hero shot from the right."
10331063
]
10341064
},
1065+
{
1066+
"id": 103,
1067+
"link": [3, 3],
1068+
"name": "Gain Flash Suit (X-Mode Spikesuit)",
1069+
"requires": [
1070+
"h_ThornXModeSpikeSuit",
1071+
{"shinespark": {"frames": 12, "excessFrames": 12}}
1072+
],
1073+
"flashSuitChecked": true
1074+
},
1075+
{
1076+
"id": 104,
1077+
"link": [3, 3],
1078+
"name": "Come in Shinecharged - Gain Blue Suit (X-Mode)",
1079+
"entranceCondition": {
1080+
"comeInShinecharged": {}
1081+
},
1082+
"requires": [
1083+
{"shineChargeFrames": 135},
1084+
"h_thornXModeBlueSuit"
1085+
],
1086+
"flashSuitChecked": true
1087+
},
1088+
{
1089+
"id": 105,
1090+
"link": [3, 3],
1091+
"name": "Gain Blue Suit (Double X-Mode)",
1092+
"requires": [
1093+
"h_thornDoubleXModeBlueSuit"
1094+
],
1095+
"flashSuitChecked": true
1096+
},
10351097
{
10361098
"id": 90,
10371099
"link": [3, 3],
@@ -1756,6 +1818,19 @@
17561818
"a second thorn hit can be avoided."
17571819
]
17581820
},
1821+
{
1822+
"id": 106,
1823+
"link": [4, 4],
1824+
"name": "Come in Shinecharged - Gain Blue Suit (X-Mode)",
1825+
"entranceCondition": {
1826+
"comeInShinecharged": {}
1827+
},
1828+
"requires": [
1829+
{"shineChargeFrames": 125},
1830+
"h_thornXModeBlueSuit"
1831+
],
1832+
"flashSuitChecked": true
1833+
},
17591834
{
17601835
"id": 88,
17611836
"link": [4, 5],
@@ -2262,7 +2337,7 @@
22622337
]
22632338
}
22642339
],
2265-
"nextStratId": 101,
2340+
"nextStratId": 107,
22662341
"nextNotableId": 8,
22672342
"devNote": ["FIXME: add a strat to take temporary blue from the top to the bottom-right."]
22682343
}

region/brinstar/green/Green Brinstar Fireflea Room.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -357,6 +357,7 @@
357357
]
358358
},
359359
{
360+
"id": 17,
360361
"link": [2, 2],
361362
"name": "Gain Blue Suit (X-Mode)",
362363
"requires": [
@@ -389,6 +390,6 @@
389390
}
390391
],
391392
"notables": [],
392-
"nextStratId": 17,
393+
"nextStratId": 18,
393394
"nextNotableId": 1
394395
}

region/brinstar/green/Spore Spawn Kihunter Room.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,7 @@
9494
],
9595
"strats": [
9696
{
97+
"id": 24,
9798
"link": [1, 1],
9899
"name": "R-Mode Spark Interrupt (Gain Blue Suit)",
99100
"entranceCondition": {
@@ -358,6 +359,7 @@
358359
"flashSuitChecked": true
359360
},
360361
{
362+
"id": 25,
361363
"link": [2, 2],
362364
"name": "R-Mode Spark Interrupt (Gain Blue Suit)",
363365
"entranceCondition": {
@@ -582,6 +584,6 @@
582584
]
583585
}
584586
],
585-
"nextStratId": 24,
587+
"nextStratId": 26,
586588
"nextNotableId": 2
587589
}

0 commit comments

Comments
 (0)