Every VTV card carries its performance

Acceleration, top speed, impact speed, armor, boosts, chutes and each
tool's charges, decoded from the resource file rather than transcribed.

GameModel is a fixed 180-byte block: mass at +0, drag at +36, acceleration
at +64, impact speed at +100. Top speed is NOT stored - it is terminal
velocity, acceleration over drag, which is why it lands on the round
numbers the arcade quoted: 6.0/0.060 is Mule's 360 kph, 5.5/0.060 is
Bull's 330. Armor is a float in the DamageZones record past the "dz_vtv"
name, at +35.

Boosts and chutes come from the subsystem stream, which is now walked
properly: a record is name[32], a type id, its own length, and the charge
count sixteen bytes on. That replaces a regex that hunted for printable
names in the float tails and guessed where each one started - the new walk
matches every vehicle's declared subsystem count exactly.

Neutrino's two derived figures are withheld and the card says why. Its
drag is 0.008 against 0.052 on every other Lepton and its impact speed is
uninitialised, so the engine would give it a 2880 kph top speed. The data
is wrong, not the reading.
This commit is contained in:
Cyd
2026-08-07 21:04:08 -05:00
parent d35af59136
commit 28790de901
3 changed files with 196 additions and 27 deletions
+69 -1
View File
@@ -154,11 +154,41 @@ h1 em { font-style: normal; color: var(--sys); }
@media (max-width: 46rem) { .vtv { grid-template-columns: 1fr; } }
.vtv[hidden] { display: none; }
.spec {
margin: .75rem 0 0; display: grid; grid-template-columns: 1fr auto;
gap: .2rem .8rem; font: 500 var(--step--1) var(--mono);
}
.spec div { display: contents; }
.spec dt { color: var(--ink-low); letter-spacing: .06em; }
.spec dd {
margin: 0; text-align: right; color: var(--ink);
font-variant-numeric: tabular-nums;
}
.spec__warn {
margin: .5rem 0 0; font: 400 var(--step--1)/1.5 var(--mono);
color: var(--wep);
}
.seg__n {
margin-left: .45em; font-size: .85em; opacity: .55;
font-variant-numeric: tabular-nums;
}
.seg button[aria-pressed="true"] .seg__n { opacity: .75; }
.seg button[aria-pressed="true"] .spec {
margin: .75rem 0 0; display: grid; grid-template-columns: 1fr auto;
gap: .2rem .8rem; font: 500 var(--step--1) var(--mono);
}
.spec div { display: contents; }
.spec dt { color: var(--ink-low); letter-spacing: .06em; }
.spec dd {
margin: 0; text-align: right; color: var(--ink);
font-variant-numeric: tabular-nums;
}
.spec__warn {
margin: .5rem 0 0; font: 400 var(--step--1)/1.5 var(--mono);
color: var(--wep);
}
.seg__n { opacity: .75; }
.vtv__id { padding: 1.1rem 1.25rem; border-right: 1px solid var(--rule); }
@media (max-width: 46rem) { .vtv__id { border-right: 0; border-bottom: 1px solid var(--rule); } }
@@ -278,6 +308,7 @@ td.fn {
<p class="vtv__key">dragon</p>
<p class="vtv__load"><span class="chip chip--booster">2× BOOST</span><span class="chip chip--chute">CHUTE</span><span class="chip chip--weapon">RIVET 1</span><span class="chip chip--weapon">RIVET 2</span><span class="chip chip--weapon">SLAVER</span></p>
<p class="vtv__meta"><span>6 subsystems</span><span>38 mappings</span></p>
<dl class="spec"><div><dt>Acceleration</dt><dd>36.00 kph/s</dd></div><div><dt>Top speed</dt><dd>514 kph</dd></div><div><dt>Impact speed</dt><dd>225 kph</dd></div><div><dt>Armor</dt><dd>300</dd></div><div><dt>Boosts</dt><dd>&mdash;</dd></div><div><dt>Chutes</dt><dd>&mdash;</dd></div><div><dt>Rivet Gun</dt><dd>&times;7</dd></div><div><dt>Rivet Gun</dt><dd>&times;7</dd></div><div><dt>Slaver</dt><dd>&times;8</dd></div></dl>
</header>
<div class="vtv__tables"><div class="tablewrap"><table><caption class="sr-only">Preset assignments</caption><thead><tr><th scope="col"><span class="sr-only">Preset</span></th><th scope="col">TRIGGER</th><th scope="col">THUMB HIGH</th><th scope="col">THUMB LOW</th><th scope="col">PINKY</th></tr></thead><tbody><tr><th scope="row"><span class="pnum">1</span></th><td class="fn fn--weapon">SLAVER</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--chute">CHUTE</td><td class="fn fn--empty"></td></tr><tr><th scope="row"><span class="pnum">2</span></th><td class="fn fn--weapon">SLAVER</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--chute">CHUTE</td><td class="fn fn--handling">LIFT CUT</td></tr><tr><th scope="row"><span class="pnum">3</span></th><td class="fn fn--weapon">SLAVER</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--handling">LIFT CUT</td><td class="fn fn--empty"></td></tr><tr><th scope="row"><span class="pnum">4</span></th><td class="fn fn--weapon">SLAVER</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--handling">LIFT CUT</td><td class="fn fn--empty"></td></tr><tr><th scope="row"><span class="pnum">5</span></th><td class="fn fn--weapon">SLAVER</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--comms">HORN</td><td class="fn fn--handling">LIFT CUT</td></tr><tr><th scope="row"><span class="pnum">6</span></th><td class="fn fn--handling">LIFT CUT</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--empty"></td><td class="fn fn--weapon">SLAVER</td></tr></tbody></table></div></div>
</article>
@@ -288,6 +319,7 @@ td.fn {
<p class="vtv__key">roadblk</p>
<p class="vtv__load"><span class="chip chip--booster">2× BOOST</span><span class="chip chip--chute">CHUTE</span><span class="chip chip--weapon">RIVET</span><span class="chip chip--weapon">LASER 1</span><span class="chip chip--weapon">DEMO PACK</span></p>
<p class="vtv__meta"><span>6 subsystems</span><span>35 mappings</span></p>
<dl class="spec"><div><dt>Acceleration</dt><dd>17.93 kph/s</dd></div><div><dt>Top speed</dt><dd>272 kph</dd></div><div><dt>Impact speed</dt><dd>360 kph</dd></div><div><dt>Armor</dt><dd>300</dd></div><div><dt>Boosts</dt><dd>2&times;6</dd></div><div><dt>Chutes</dt><dd>3</dd></div><div><dt>Rivet Gun</dt><dd>&times;9</dd></div><div><dt>Laser Drill</dt><dd>&times;8</dd></div><div><dt>Demopacks</dt><dd>&times;11</dd></div></dl>
</header>
<div class="vtv__tables"><div class="tablewrap"><table><caption class="sr-only">Preset assignments</caption><thead><tr><th scope="col"><span class="sr-only">Preset</span></th><th scope="col">TRIGGER</th><th scope="col">THUMB HIGH</th><th scope="col">THUMB LOW</th><th scope="col">PINKY</th></tr></thead><tbody><tr><th scope="row"><span class="pnum">1</span></th><td class="fn fn--weapon">RIVET</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--chute">CHUTE</td><td class="fn fn--empty"></td></tr><tr><th scope="row"><span class="pnum">2</span></th><td class="fn fn--weapon">RIVET</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--chute">CHUTE</td><td class="fn fn--handling">LIFT CUT</td></tr><tr><th scope="row"><span class="pnum">3</span></th><td class="fn fn--weapon">RIVET</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--handling">LIFT CUT</td><td class="fn fn--empty"></td></tr><tr><th scope="row"><span class="pnum">4</span></th><td class="fn fn--weapon">RIVET</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--handling">LIFT CUT</td><td class="fn fn--chute">CHUTE</td></tr><tr><th scope="row"><span class="pnum">5</span></th><td class="fn fn--weapon">RIVET</td><td class="fn fn--weapon">LASER 1</td><td class="fn fn--weapon">DEMO PACK</td><td class="fn fn--handling">LIFT CUT</td></tr><tr><th scope="row"><span class="pnum">6</span></th><td class="fn fn--handling">LIFT CUT</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--booster">BOOST 2</td><td class="fn fn--weapon">RIVET</td></tr></tbody></table></div></div>
</article>
@@ -298,6 +330,7 @@ td.fn {
<p class="vtv__key">bttlbrg</p>
<p class="vtv__load"><span class="chip chip--booster">2× BOOST</span><span class="chip chip--chute">CHUTE</span><span class="chip chip--weapon">LASER</span><span class="chip chip--weapon">DEMO PACK</span></p>
<p class="vtv__meta"><span>5 subsystems</span><span>30 mappings</span></p>
<dl class="spec"><div><dt>Acceleration</dt><dd>20.74 kph/s</dd></div><div><dt>Top speed</dt><dd>324 kph</dd></div><div><dt>Impact speed</dt><dd>275 kph</dd></div><div><dt>Armor</dt><dd>250</dd></div><div><dt>Boosts</dt><dd>2&times;6</dd></div><div><dt>Chutes</dt><dd>3</dd></div><div><dt>Laser Drill</dt><dd>&times;9</dd></div><div><dt>Demopacks</dt><dd>&times;11</dd></div></dl>
</header>
<div class="vtv__tables"><div class="tablewrap"><table><caption class="sr-only">Preset assignments</caption><thead><tr><th scope="col"><span class="sr-only">Preset</span></th><th scope="col">TRIGGER</th><th scope="col">THUMB HIGH</th><th scope="col">THUMB LOW</th><th scope="col">PINKY</th></tr></thead><tbody><tr><th scope="row"><span class="pnum">1</span></th><td class="fn fn--weapon">LASER</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--chute">CHUTE</td><td class="fn fn--empty"></td></tr><tr><th scope="row"><span class="pnum">2</span></th><td class="fn fn--weapon">LASER</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--chute">CHUTE</td><td class="fn fn--handling">LIFT CUT</td></tr><tr><th scope="row"><span class="pnum">3</span></th><td class="fn fn--weapon">LASER</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--handling">LIFT CUT</td><td class="fn fn--empty"></td></tr><tr><th scope="row"><span class="pnum">4</span></th><td class="fn fn--weapon">LASER</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--handling">LIFT CUT</td><td class="fn fn--chute">CHUTE</td></tr><tr><th scope="row"><span class="pnum">5</span></th><td class="fn fn--weapon">LASER</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--weapon">DEMO PACK</td><td class="fn fn--handling">LIFT CUT</td></tr><tr><th scope="row"><span class="pnum">6</span></th><td class="fn fn--handling">LIFT CUT</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--booster">BOOST 2</td><td class="fn fn--weapon">LASER</td></tr></tbody></table></div></div>
</article>
@@ -308,6 +341,7 @@ td.fn {
<p class="vtv__key">gator</p>
<p class="vtv__load"><span class="chip chip--booster">2× BOOST</span><span class="chip chip--chute">CHUTE</span><span class="chip chip--weapon">RIVET</span><span class="chip chip--weapon">DEMO PACK</span></p>
<p class="vtv__meta"><span>5 subsystems</span><span>30 mappings</span></p>
<dl class="spec"><div><dt>Acceleration</dt><dd>20.74 kph/s</dd></div><div><dt>Top speed</dt><dd>324 kph</dd></div><div><dt>Impact speed</dt><dd>275 kph</dd></div><div><dt>Armor</dt><dd>250</dd></div><div><dt>Boosts</dt><dd>2&times;6</dd></div><div><dt>Chutes</dt><dd>3</dd></div><div><dt>Rivet Gun</dt><dd>&times;9</dd></div><div><dt>Demopacks</dt><dd>&times;11</dd></div></dl>
</header>
<div class="vtv__tables"><div class="tablewrap"><table><caption class="sr-only">Preset assignments</caption><thead><tr><th scope="col"><span class="sr-only">Preset</span></th><th scope="col">TRIGGER</th><th scope="col">THUMB HIGH</th><th scope="col">THUMB LOW</th><th scope="col">PINKY</th></tr></thead><tbody><tr><th scope="row"><span class="pnum">1</span></th><td class="fn fn--weapon">RIVET</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--chute">CHUTE</td><td class="fn fn--empty"></td></tr><tr><th scope="row"><span class="pnum">2</span></th><td class="fn fn--weapon">RIVET</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--chute">CHUTE</td><td class="fn fn--handling">LIFT CUT</td></tr><tr><th scope="row"><span class="pnum">3</span></th><td class="fn fn--weapon">RIVET</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--handling">LIFT CUT</td><td class="fn fn--empty"></td></tr><tr><th scope="row"><span class="pnum">4</span></th><td class="fn fn--weapon">RIVET</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--handling">LIFT CUT</td><td class="fn fn--chute">CHUTE</td></tr><tr><th scope="row"><span class="pnum">5</span></th><td class="fn fn--weapon">RIVET</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--weapon">DEMO PACK</td><td class="fn fn--handling">LIFT CUT</td></tr><tr><th scope="row"><span class="pnum">6</span></th><td class="fn fn--handling">LIFT CUT</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--booster">BOOST 2</td><td class="fn fn--weapon">RIVET</td></tr></tbody></table></div></div>
</article>
@@ -318,6 +352,7 @@ td.fn {
<p class="vtv__key">mantis</p>
<p class="vtv__load"><span class="chip chip--booster">2× BOOST</span><span class="chip chip--chute">CHUTE</span><span class="chip chip--weapon">LASER 1</span><span class="chip chip--weapon">LASER 2</span></p>
<p class="vtv__meta"><span>5 subsystems</span><span>32 mappings</span></p>
<dl class="spec"><div><dt>Acceleration</dt><dd>18.79 kph/s</dd></div><div><dt>Top speed</dt><dd>285 kph</dd></div><div><dt>Impact speed</dt><dd>374 kph</dd></div><div><dt>Armor</dt><dd>300</dd></div><div><dt>Boosts</dt><dd>2&times;6</dd></div><div><dt>Chutes</dt><dd>3</dd></div><div><dt>Laser Drill</dt><dd>&times;8</dd></div><div><dt>Laser Drill</dt><dd>&times;8</dd></div></dl>
</header>
<div class="vtv__tables"><div class="tablewrap"><table><caption class="sr-only">Preset assignments</caption><thead><tr><th scope="col"><span class="sr-only">Preset</span></th><th scope="col">TRIGGER</th><th scope="col">THUMB HIGH</th><th scope="col">THUMB LOW</th><th scope="col">PINKY</th></tr></thead><tbody><tr><th scope="row"><span class="pnum">1</span></th><td class="fn fn--weapon">LASER 1</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--chute">CHUTE</td><td class="fn fn--empty"></td></tr><tr><th scope="row"><span class="pnum">2</span></th><td class="fn fn--weapon">LASER 1</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--chute">CHUTE</td><td class="fn fn--handling">LIFT CUT</td></tr><tr><th scope="row"><span class="pnum">3</span></th><td class="fn fn--weapon">LASER 1</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--handling">LIFT CUT</td><td class="fn fn--empty"></td></tr><tr><th scope="row"><span class="pnum">4</span></th><td class="fn fn--weapon">LASER 1</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--handling">LIFT CUT</td><td class="fn fn--chute">CHUTE</td></tr><tr><th scope="row"><span class="pnum">5</span></th><td class="fn fn--weapon">LASER 1</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--comms">HORN</td><td class="fn fn--handling">LIFT CUT</td></tr><tr><th scope="row"><span class="pnum">6</span></th><td class="fn fn--handling">LIFT CUT</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--booster">BOOST 2</td><td class="fn fn--weapon">LASER 1</td></tr></tbody></table></div></div>
</article>
@@ -328,6 +363,7 @@ td.fn {
<p class="vtv__key">roach</p>
<p class="vtv__load"><span class="chip chip--booster">2× BOOST</span><span class="chip chip--chute">CHUTE</span><span class="chip chip--weapon">RIVET 1</span><span class="chip chip--weapon">RIVET 2</span></p>
<p class="vtv__meta"><span>5 subsystems</span><span>32 mappings</span></p>
<dl class="spec"><div><dt>Acceleration</dt><dd>22.68 kph/s</dd></div><div><dt>Top speed</dt><dd>354 kph</dd></div><div><dt>Impact speed</dt><dd>140 kph</dd></div><div><dt>Armor</dt><dd>200</dd></div><div><dt>Boosts</dt><dd>2&times;6</dd></div><div><dt>Chutes</dt><dd>3</dd></div><div><dt>Rivet Gun</dt><dd>&times;7</dd></div><div><dt>Rivet Gun</dt><dd>&times;7</dd></div></dl>
</header>
<div class="vtv__tables"><div class="tablewrap"><table><caption class="sr-only">Preset assignments</caption><thead><tr><th scope="col"><span class="sr-only">Preset</span></th><th scope="col">TRIGGER</th><th scope="col">THUMB HIGH</th><th scope="col">THUMB LOW</th><th scope="col">PINKY</th></tr></thead><tbody><tr><th scope="row"><span class="pnum">1</span></th><td class="fn fn--weapon">RIVET 2</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--chute">CHUTE</td><td class="fn fn--empty"></td></tr><tr><th scope="row"><span class="pnum">2</span></th><td class="fn fn--weapon">RIVET 2</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--chute">CHUTE</td><td class="fn fn--handling">LIFT CUT</td></tr><tr><th scope="row"><span class="pnum">3</span></th><td class="fn fn--weapon">RIVET 2</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--handling">LIFT CUT</td><td class="fn fn--empty"></td></tr><tr><th scope="row"><span class="pnum">4</span></th><td class="fn fn--weapon">RIVET 2</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--handling">LIFT CUT</td><td class="fn fn--empty"></td></tr><tr><th scope="row"><span class="pnum">5</span></th><td class="fn fn--weapon">RIVET 2</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--comms">HORN</td><td class="fn fn--handling">LIFT CUT</td></tr><tr><th scope="row"><span class="pnum">6</span></th><td class="fn fn--handling">LIFT CUT</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--empty"></td><td class="fn fn--weapon">RIVET 2</td></tr></tbody></table></div></div>
</article>
@@ -338,6 +374,7 @@ td.fn {
<p class="vtv__key">spitter</p>
<p class="vtv__load"><span class="chip chip--booster">2× BOOST</span><span class="chip chip--chute">CHUTE</span><span class="chip chip--weapon">RIVET 1</span><span class="chip chip--weapon">RIVET 2</span></p>
<p class="vtv__meta"><span>5 subsystems</span><span>32 mappings</span></p>
<dl class="spec"><div><dt>Acceleration</dt><dd>18.79 kph/s</dd></div><div><dt>Top speed</dt><dd>285 kph</dd></div><div><dt>Impact speed</dt><dd>370 kph</dd></div><div><dt>Armor</dt><dd>300</dd></div><div><dt>Boosts</dt><dd>2&times;6</dd></div><div><dt>Chutes</dt><dd>3</dd></div><div><dt>Rivet Gun</dt><dd>&times;8</dd></div><div><dt>Rivet Gun</dt><dd>&times;8</dd></div></dl>
</header>
<div class="vtv__tables"><div class="tablewrap"><table><caption class="sr-only">Preset assignments</caption><thead><tr><th scope="col"><span class="sr-only">Preset</span></th><th scope="col">TRIGGER</th><th scope="col">THUMB HIGH</th><th scope="col">THUMB LOW</th><th scope="col">PINKY</th></tr></thead><tbody><tr><th scope="row"><span class="pnum">1</span></th><td class="fn fn--weapon">RIVET 2</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--chute">CHUTE</td><td class="fn fn--empty"></td></tr><tr><th scope="row"><span class="pnum">2</span></th><td class="fn fn--weapon">RIVET 2</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--chute">CHUTE</td><td class="fn fn--handling">LIFT CUT</td></tr><tr><th scope="row"><span class="pnum">3</span></th><td class="fn fn--weapon">RIVET 2</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--handling">LIFT CUT</td><td class="fn fn--empty"></td></tr><tr><th scope="row"><span class="pnum">4</span></th><td class="fn fn--weapon">RIVET 2</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--handling">LIFT CUT</td><td class="fn fn--empty"></td></tr><tr><th scope="row"><span class="pnum">5</span></th><td class="fn fn--weapon">RIVET 2</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--comms">HORN</td><td class="fn fn--handling">LIFT CUT</td></tr><tr><th scope="row"><span class="pnum">6</span></th><td class="fn fn--handling">LIFT CUT</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--empty"></td><td class="fn fn--weapon">RIVET 2</td></tr></tbody></table></div></div>
</article>
@@ -348,6 +385,7 @@ td.fn {
<p class="vtv__key">chigger</p>
<p class="vtv__load"><span class="chip chip--booster">2× BOOST</span><span class="chip chip--chute">CHUTE</span><span class="chip chip--weapon">RIVET</span></p>
<p class="vtv__meta"><span>4 subsystems</span><span>27 mappings</span></p>
<dl class="spec"><div><dt>Acceleration</dt><dd>22.68 kph/s</dd></div><div><dt>Top speed</dt><dd>354 kph</dd></div><div><dt>Impact speed</dt><dd>140 kph</dd></div><div><dt>Armor</dt><dd>200</dd></div><div><dt>Boosts</dt><dd>2&times;6</dd></div><div><dt>Chutes</dt><dd>3</dd></div><div><dt>Rivet Gun</dt><dd>&times;8</dd></div></dl>
</header>
<div class="vtv__tables"><div class="tablewrap"><table><caption class="sr-only">Preset assignments</caption><thead><tr><th scope="col"><span class="sr-only">Preset</span></th><th scope="col">TRIGGER</th><th scope="col">THUMB HIGH</th><th scope="col">THUMB LOW</th><th scope="col">PINKY</th></tr></thead><tbody><tr><th scope="row"><span class="pnum">1</span></th><td class="fn fn--weapon">RIVET</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--chute">CHUTE</td><td class="fn fn--empty"></td></tr><tr><th scope="row"><span class="pnum">2</span></th><td class="fn fn--weapon">RIVET</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--chute">CHUTE</td><td class="fn fn--handling">LIFT CUT</td></tr><tr><th scope="row"><span class="pnum">3</span></th><td class="fn fn--weapon">RIVET</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--handling">LIFT CUT</td><td class="fn fn--empty"></td></tr><tr><th scope="row"><span class="pnum">4</span></th><td class="fn fn--weapon">RIVET</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--handling">LIFT CUT</td><td class="fn fn--chute">CHUTE</td></tr><tr><th scope="row"><span class="pnum">5</span></th><td class="fn fn--weapon">RIVET</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--comms">HORN</td><td class="fn fn--handling">LIFT CUT</td></tr><tr><th scope="row"><span class="pnum">6</span></th><td class="fn fn--handling">LIFT CUT</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--booster">BOOST 2</td><td class="fn fn--weapon">RIVET</td></tr></tbody></table></div></div>
</article>
@@ -358,6 +396,7 @@ td.fn {
<p class="vtv__key">flea</p>
<p class="vtv__load"><span class="chip chip--booster">2× BOOST</span><span class="chip chip--chute">CHUTE</span><span class="chip chip--weapon">DEMO PACK</span></p>
<p class="vtv__meta"><span>4 subsystems</span><span>26 mappings</span></p>
<dl class="spec"><div><dt>Acceleration</dt><dd>22.68 kph/s</dd></div><div><dt>Top speed</dt><dd>354 kph</dd></div><div><dt>Impact speed</dt><dd>140 kph</dd></div><div><dt>Armor</dt><dd>200</dd></div><div><dt>Boosts</dt><dd>2&times;6</dd></div><div><dt>Chutes</dt><dd>3</dd></div><div><dt>Demopacks</dt><dd>&times;11</dd></div></dl>
</header>
<div class="vtv__tables"><div class="tablewrap"><table><caption class="sr-only">Preset assignments</caption><thead><tr><th scope="col"><span class="sr-only">Preset</span></th><th scope="col">TRIGGER</th><th scope="col">THUMB HIGH</th><th scope="col">THUMB LOW</th><th scope="col">PINKY</th></tr></thead><tbody><tr><th scope="row"><span class="pnum">1</span></th><td class="fn fn--weapon">DEMO PACK</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--chute">CHUTE</td><td class="fn fn--empty"></td></tr><tr><th scope="row"><span class="pnum">2</span></th><td class="fn fn--weapon">DEMO PACK</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--chute">CHUTE</td><td class="fn fn--handling">LIFT CUT</td></tr><tr><th scope="row"><span class="pnum">3</span></th><td class="fn fn--weapon">DEMO PACK</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--handling">LIFT CUT</td><td class="fn fn--empty"></td></tr><tr><th scope="row"><span class="pnum">4</span></th><td class="fn fn--weapon">DEMO PACK</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--handling">LIFT CUT</td><td class="fn fn--chute">CHUTE</td></tr><tr><th scope="row"><span class="pnum">5</span></th><td class="fn fn--weapon">DEMO PACK</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--comms">HORN</td><td class="fn fn--handling">LIFT CUT</td></tr><tr><th scope="row"><span class="pnum">6</span></th><td class="fn fn--handling">LIFT CUT</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--booster">BOOST 2</td><td class="fn fn--weapon">DEMO PACK</td></tr></tbody></table></div></div>
</article>
@@ -368,6 +407,7 @@ td.fn {
<p class="vtv__key">grunt</p>
<p class="vtv__load"><span class="chip chip--booster">2× BOOST</span><span class="chip chip--chute">CHUTE</span><span class="chip chip--weapon">RIVET</span></p>
<p class="vtv__meta"><span>4 subsystems</span><span>27 mappings</span></p>
<dl class="spec"><div><dt>Acceleration</dt><dd>21.17 kph/s</dd></div><div><dt>Top speed</dt><dd>331 kph</dd></div><div><dt>Impact speed</dt><dd>282 kph</dd></div><div><dt>Armor</dt><dd>250</dd></div><div><dt>Boosts</dt><dd>2&times;6</dd></div><div><dt>Chutes</dt><dd>3</dd></div><div><dt>Rivet Gun</dt><dd>&times;9</dd></div></dl>
</header>
<div class="vtv__tables"><div class="tablewrap"><table><caption class="sr-only">Preset assignments</caption><thead><tr><th scope="col"><span class="sr-only">Preset</span></th><th scope="col">TRIGGER</th><th scope="col">THUMB HIGH</th><th scope="col">THUMB LOW</th><th scope="col">PINKY</th></tr></thead><tbody><tr><th scope="row"><span class="pnum">1</span></th><td class="fn fn--weapon">RIVET</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--chute">CHUTE</td><td class="fn fn--empty"></td></tr><tr><th scope="row"><span class="pnum">2</span></th><td class="fn fn--weapon">RIVET</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--chute">CHUTE</td><td class="fn fn--handling">LIFT CUT</td></tr><tr><th scope="row"><span class="pnum">3</span></th><td class="fn fn--weapon">RIVET</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--handling">LIFT CUT</td><td class="fn fn--empty"></td></tr><tr><th scope="row"><span class="pnum">4</span></th><td class="fn fn--weapon">RIVET</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--handling">LIFT CUT</td><td class="fn fn--chute">CHUTE</td></tr><tr><th scope="row"><span class="pnum">5</span></th><td class="fn fn--weapon">RIVET</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--comms">HORN</td><td class="fn fn--handling">LIFT CUT</td></tr><tr><th scope="row"><span class="pnum">6</span></th><td class="fn fn--handling">LIFT CUT</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--booster">BOOST 2</td><td class="fn fn--weapon">RIVET</td></tr></tbody></table></div></div>
</article>
@@ -378,6 +418,7 @@ td.fn {
<p class="vtv__key">neut</p>
<p class="vtv__load"><span class="chip chip--booster">4× BOOST</span><span class="chip chip--chute">CHUTE</span><span class="chip chip--weapon">EJECT</span></p>
<p class="vtv__meta"><span>6 subsystems</span><span>34 mappings</span></p>
<dl class="spec"><div><dt>Acceleration</dt><dd>23.04 kph/s</dd></div><div><dt>Top speed</dt><dd>not credible</dd></div><div><dt>Impact speed</dt><dd>not credible</dd></div><div><dt>Armor</dt><dd>50</dd></div><div><dt>Boosts</dt><dd>4&times;48</dd></div><div><dt>Chutes</dt><dd>12</dd></div><div><dt>Demopacks</dt><dd>&times;11</dd></div></dl><p class="spec__warn">Its drag is a seventh of every other Leptons and its impact speed is uninitialised, so the engine would give it a 2880&nbsp;kph top speed. The data is wrong, not the reading.</p>
</header>
<div class="vtv__tables"><div class="tablewrap"><table><caption class="sr-only">Preset assignments</caption><thead><tr><th scope="col"><span class="sr-only">Preset</span></th><th scope="col">TRIGGER</th><th scope="col">THUMB HIGH</th><th scope="col">THUMB LOW</th><th scope="col">PINKY</th></tr></thead><tbody><tr><th scope="row"><span class="pnum">1</span></th><td class="fn fn--booster">BOOST 2</td><td class="fn fn--empty"></td><td class="fn fn--chute">CHUTE</td><td class="fn fn--empty"></td></tr><tr><th scope="row"><span class="pnum">2</span></th><td class="fn fn--booster">BOOST 2</td><td class="fn fn--empty"></td><td class="fn fn--chute">CHUTE</td><td class="fn fn--handling">LIFT CUT</td></tr><tr><th scope="row"><span class="pnum">3</span></th><td class="fn fn--booster">BOOST 2</td><td class="fn fn--empty"></td><td class="fn fn--handling">LIFT CUT</td><td class="fn fn--empty"></td></tr><tr><th scope="row"><span class="pnum">4</span></th><td class="fn fn--booster">BOOST 2</td><td class="fn fn--booster">BOOST 4</td><td class="fn fn--handling">LIFT CUT</td><td class="fn fn--chute">CHUTE</td></tr><tr><th scope="row"><span class="pnum">5</span></th><td class="fn fn--booster">BOOST 2</td><td class="fn fn--empty"></td><td class="fn fn--comms">HORN</td><td class="fn fn--handling">LIFT CUT</td></tr><tr><th scope="row"><span class="pnum">6</span></th><td class="fn fn--handling">LIFT CUT</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--booster">BOOST 2</td><td class="fn fn--chute">CHUTE</td></tr></tbody></table></div></div>
</article>
@@ -388,6 +429,7 @@ td.fn {
<p class="vtv__key">proton</p>
<p class="vtv__load"><span class="chip chip--booster">2× BOOST</span><span class="chip chip--chute">CHUTE</span><span class="chip chip--weapon">RIVET</span></p>
<p class="vtv__meta"><span>4 subsystems</span><span>27 mappings</span></p>
<dl class="spec"><div><dt>Acceleration</dt><dd>22.68 kph/s</dd></div><div><dt>Top speed</dt><dd>436 kph</dd></div><div><dt>Impact speed</dt><dd>115 kph</dd></div><div><dt>Armor</dt><dd>50</dd></div><div><dt>Boosts</dt><dd>2&times;6</dd></div><div><dt>Chutes</dt><dd>3</dd></div><div><dt>Rivet Gun</dt><dd>&times;7</dd></div></dl>
</header>
<div class="vtv__tables"><div class="tablewrap"><table><caption class="sr-only">Preset assignments</caption><thead><tr><th scope="col"><span class="sr-only">Preset</span></th><th scope="col">TRIGGER</th><th scope="col">THUMB HIGH</th><th scope="col">THUMB LOW</th><th scope="col">PINKY</th></tr></thead><tbody><tr><th scope="row"><span class="pnum">1</span></th><td class="fn fn--weapon">RIVET</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--chute">CHUTE</td><td class="fn fn--empty"></td></tr><tr><th scope="row"><span class="pnum">2</span></th><td class="fn fn--weapon">RIVET</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--chute">CHUTE</td><td class="fn fn--handling">LIFT CUT</td></tr><tr><th scope="row"><span class="pnum">3</span></th><td class="fn fn--weapon">RIVET</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--handling">LIFT CUT</td><td class="fn fn--empty"></td></tr><tr><th scope="row"><span class="pnum">4</span></th><td class="fn fn--weapon">RIVET</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--handling">LIFT CUT</td><td class="fn fn--chute">CHUTE</td></tr><tr><th scope="row"><span class="pnum">5</span></th><td class="fn fn--weapon">RIVET</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--comms">HORN</td><td class="fn fn--handling">LIFT CUT</td></tr><tr><th scope="row"><span class="pnum">6</span></th><td class="fn fn--handling">LIFT CUT</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--booster">BOOST 2</td><td class="fn fn--weapon">RIVET</td></tr></tbody></table></div></div>
</article>
@@ -398,6 +440,7 @@ td.fn {
<p class="vtv__key">puck</p>
<p class="vtv__load"><span class="chip chip--booster">1× BOOST</span><span class="chip chip--weapon">LASER 2</span></p>
<p class="vtv__meta"><span>2 subsystems</span><span>16 mappings</span></p>
<dl class="spec"><div><dt>Acceleration</dt><dd>34.99 kph/s</dd></div><div><dt>Top speed</dt><dd>412 kph</dd></div><div><dt>Impact speed</dt><dd>425 kph</dd></div><div><dt>Armor</dt><dd>100</dd></div><div><dt>Boosts</dt><dd>1&times;12</dd></div><div><dt>Chutes</dt><dd>&mdash;</dd></div><div><dt>Laser Drill</dt><dd>&times;8</dd></div></dl>
</header>
<div class="vtv__tables"><div class="tablewrap"><table><caption class="sr-only">Preset assignments</caption><thead><tr><th scope="col"><span class="sr-only">Preset</span></th><th scope="col">TRIGGER</th><th scope="col">THUMB HIGH</th><th scope="col">THUMB LOW</th><th scope="col">PINKY</th></tr></thead><tbody><tr><th scope="row"><span class="pnum">1</span></th><td class="fn fn--weapon">LASER 2</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--comms">HORN</td><td class="fn fn--empty"></td></tr><tr><th scope="row"><span class="pnum">2</span></th><td class="fn fn--weapon">LASER 2</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--comms">HORN</td><td class="fn fn--handling">LIFT CUT</td></tr><tr><th scope="row"><span class="pnum">3</span></th><td class="fn fn--weapon">LASER 2</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--handling">LIFT CUT</td><td class="fn fn--empty"></td></tr><tr><th scope="row"><span class="pnum">4</span></th><td class="fn fn--weapon">LASER 2</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--handling">LIFT CUT</td><td class="fn fn--comms">HORN</td></tr><tr><th scope="row"><span class="pnum">5</span></th><td class="fn fn--weapon">LASER 2</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--comms">HORN</td><td class="fn fn--handling">LIFT CUT</td></tr><tr><th scope="row"><span class="pnum">6</span></th><td class="fn fn--handling">LIFT CUT</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--empty"></td><td class="fn fn--weapon">LASER 2</td></tr></tbody></table></div></div>
</article>
@@ -408,6 +451,7 @@ td.fn {
<p class="vtv__key">ripper</p>
<p class="vtv__load"><span class="chip chip--booster">2× BOOST</span><span class="chip chip--chute">CHUTE</span><span class="chip chip--weapon">DEMO PACK</span></p>
<p class="vtv__meta"><span>4 subsystems</span><span>26 mappings</span></p>
<dl class="spec"><div><dt>Acceleration</dt><dd>19.44 kph/s</dd></div><div><dt>Top speed</dt><dd>295 kph</dd></div><div><dt>Impact speed</dt><dd>374 kph</dd></div><div><dt>Armor</dt><dd>300</dd></div><div><dt>Boosts</dt><dd>2&times;6</dd></div><div><dt>Chutes</dt><dd>3</dd></div><div><dt>Demopacks</dt><dd>&times;11</dd></div></dl>
</header>
<div class="vtv__tables"><div class="tablewrap"><table><caption class="sr-only">Preset assignments</caption><thead><tr><th scope="col"><span class="sr-only">Preset</span></th><th scope="col">TRIGGER</th><th scope="col">THUMB HIGH</th><th scope="col">THUMB LOW</th><th scope="col">PINKY</th></tr></thead><tbody><tr><th scope="row"><span class="pnum">1</span></th><td class="fn fn--weapon">DEMO PACK</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--chute">CHUTE</td><td class="fn fn--empty"></td></tr><tr><th scope="row"><span class="pnum">2</span></th><td class="fn fn--weapon">DEMO PACK</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--chute">CHUTE</td><td class="fn fn--handling">LIFT CUT</td></tr><tr><th scope="row"><span class="pnum">3</span></th><td class="fn fn--weapon">DEMO PACK</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--handling">LIFT CUT</td><td class="fn fn--empty"></td></tr><tr><th scope="row"><span class="pnum">4</span></th><td class="fn fn--weapon">DEMO PACK</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--handling">LIFT CUT</td><td class="fn fn--chute">CHUTE</td></tr><tr><th scope="row"><span class="pnum">5</span></th><td class="fn fn--weapon">DEMO PACK</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--comms">HORN</td><td class="fn fn--handling">LIFT CUT</td></tr><tr><th scope="row"><span class="pnum">6</span></th><td class="fn fn--handling">LIFT CUT</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--booster">BOOST 2</td><td class="fn fn--weapon">DEMO PACK</td></tr></tbody></table></div></div>
</article>
@@ -418,6 +462,7 @@ td.fn {
<p class="vtv__key">skeeter</p>
<p class="vtv__load"><span class="chip chip--booster">2× BOOST</span><span class="chip chip--chute">CHUTE</span><span class="chip chip--weapon">LASER 2</span></p>
<p class="vtv__meta"><span>4 subsystems</span><span>26 mappings</span></p>
<dl class="spec"><div><dt>Acceleration</dt><dd>22.68 kph/s</dd></div><div><dt>Top speed</dt><dd>354 kph</dd></div><div><dt>Impact speed</dt><dd>140 kph</dd></div><div><dt>Armor</dt><dd>200</dd></div><div><dt>Boosts</dt><dd>2&times;6</dd></div><div><dt>Chutes</dt><dd>3</dd></div><div><dt>Laser Drill</dt><dd>&times;8</dd></div></dl>
</header>
<div class="vtv__tables"><div class="tablewrap"><table><caption class="sr-only">Preset assignments</caption><thead><tr><th scope="col"><span class="sr-only">Preset</span></th><th scope="col">TRIGGER</th><th scope="col">THUMB HIGH</th><th scope="col">THUMB LOW</th><th scope="col">PINKY</th></tr></thead><tbody><tr><th scope="row"><span class="pnum">1</span></th><td class="fn fn--weapon">LASER 2</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--chute">CHUTE</td><td class="fn fn--empty"></td></tr><tr><th scope="row"><span class="pnum">2</span></th><td class="fn fn--weapon">LASER 2</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--chute">CHUTE</td><td class="fn fn--handling">LIFT CUT</td></tr><tr><th scope="row"><span class="pnum">3</span></th><td class="fn fn--weapon">LASER 2</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--handling">LIFT CUT</td><td class="fn fn--empty"></td></tr><tr><th scope="row"><span class="pnum">4</span></th><td class="fn fn--weapon">LASER 2</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--handling">LIFT CUT</td><td class="fn fn--chute">CHUTE</td></tr><tr><th scope="row"><span class="pnum">5</span></th><td class="fn fn--weapon">LASER 2</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--comms">HORN</td><td class="fn fn--handling">LIFT CUT</td></tr><tr><th scope="row"><span class="pnum">6</span></th><td class="fn fn--handling">LIFT CUT</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--booster">BOOST 2</td><td class="fn fn--weapon">LASER 2</td></tr></tbody></table></div></div>
</article>
@@ -428,6 +473,7 @@ td.fn {
<p class="vtv__key">vole</p>
<p class="vtv__load"><span class="chip chip--booster">2× BOOST</span><span class="chip chip--chute">CHUTE</span><span class="chip chip--weapon">LASER</span></p>
<p class="vtv__meta"><span>4 subsystems</span><span>27 mappings</span></p>
<dl class="spec"><div><dt>Acceleration</dt><dd>21.17 kph/s</dd></div><div><dt>Top speed</dt><dd>331 kph</dd></div><div><dt>Impact speed</dt><dd>282 kph</dd></div><div><dt>Armor</dt><dd>250</dd></div><div><dt>Boosts</dt><dd>2&times;6</dd></div><div><dt>Chutes</dt><dd>3</dd></div><div><dt>Laser Drill</dt><dd>&times;9</dd></div></dl>
</header>
<div class="vtv__tables"><div class="tablewrap"><table><caption class="sr-only">Preset assignments</caption><thead><tr><th scope="col"><span class="sr-only">Preset</span></th><th scope="col">TRIGGER</th><th scope="col">THUMB HIGH</th><th scope="col">THUMB LOW</th><th scope="col">PINKY</th></tr></thead><tbody><tr><th scope="row"><span class="pnum">1</span></th><td class="fn fn--weapon">LASER</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--chute">CHUTE</td><td class="fn fn--empty"></td></tr><tr><th scope="row"><span class="pnum">2</span></th><td class="fn fn--weapon">LASER</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--chute">CHUTE</td><td class="fn fn--handling">LIFT CUT</td></tr><tr><th scope="row"><span class="pnum">3</span></th><td class="fn fn--weapon">LASER</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--handling">LIFT CUT</td><td class="fn fn--empty"></td></tr><tr><th scope="row"><span class="pnum">4</span></th><td class="fn fn--weapon">LASER</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--handling">LIFT CUT</td><td class="fn fn--chute">CHUTE</td></tr><tr><th scope="row"><span class="pnum">5</span></th><td class="fn fn--weapon">LASER</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--comms">HORN</td><td class="fn fn--handling">LIFT CUT</td></tr><tr><th scope="row"><span class="pnum">6</span></th><td class="fn fn--handling">LIFT CUT</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--booster">BOOST 2</td><td class="fn fn--weapon">LASER</td></tr></tbody></table></div></div>
</article>
@@ -438,6 +484,7 @@ td.fn {
<p class="vtv__key">wasp</p>
<p class="vtv__load"><span class="chip chip--booster">2× BOOST</span><span class="chip chip--chute">CHUTE</span><span class="chip chip--weapon">DEMO PACK</span></p>
<p class="vtv__meta"><span>4 subsystems</span><span>26 mappings</span></p>
<dl class="spec"><div><dt>Acceleration</dt><dd>22.68 kph/s</dd></div><div><dt>Top speed</dt><dd>354 kph</dd></div><div><dt>Impact speed</dt><dd>140 kph</dd></div><div><dt>Armor</dt><dd>200</dd></div><div><dt>Boosts</dt><dd>2&times;6</dd></div><div><dt>Chutes</dt><dd>3</dd></div><div><dt>Demopacks</dt><dd>&times;51</dd></div></dl>
</header>
<div class="vtv__tables"><div class="tablewrap"><table><caption class="sr-only">Preset assignments</caption><thead><tr><th scope="col"><span class="sr-only">Preset</span></th><th scope="col">TRIGGER</th><th scope="col">THUMB HIGH</th><th scope="col">THUMB LOW</th><th scope="col">PINKY</th></tr></thead><tbody><tr><th scope="row"><span class="pnum">1</span></th><td class="fn fn--weapon">DEMO PACK</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--chute">CHUTE</td><td class="fn fn--empty"></td></tr><tr><th scope="row"><span class="pnum">2</span></th><td class="fn fn--weapon">DEMO PACK</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--chute">CHUTE</td><td class="fn fn--handling">LIFT CUT</td></tr><tr><th scope="row"><span class="pnum">3</span></th><td class="fn fn--weapon">DEMO PACK</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--handling">LIFT CUT</td><td class="fn fn--empty"></td></tr><tr><th scope="row"><span class="pnum">4</span></th><td class="fn fn--weapon">DEMO PACK</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--handling">LIFT CUT</td><td class="fn fn--chute">CHUTE</td></tr><tr><th scope="row"><span class="pnum">5</span></th><td class="fn fn--weapon">DEMO PACK</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--comms">HORN</td><td class="fn fn--handling">LIFT CUT</td></tr><tr><th scope="row"><span class="pnum">6</span></th><td class="fn fn--handling">LIFT CUT</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--booster">BOOST 2</td><td class="fn fn--weapon">DEMO PACK</td></tr></tbody></table></div></div>
</article>
@@ -448,6 +495,7 @@ td.fn {
<p class="vtv__key">barge</p>
<p class="vtv__load"><span class="chip chip--booster">2× BOOST</span><span class="chip chip--chute">CHUTE</span><span class="chip chip--empty">UNARMED</span></p>
<p class="vtv__meta"><span>3 subsystems</span><span>23 mappings</span></p>
<dl class="spec"><div><dt>Acceleration</dt><dd>22.25 kph/s</dd></div><div><dt>Top speed</dt><dd>377 kph</dd></div><div><dt>Impact speed</dt><dd>290 kph</dd></div><div><dt>Armor</dt><dd>250</dd></div><div><dt>Boosts</dt><dd>2&times;6</dd></div><div><dt>Chutes</dt><dd>3</dd></div></dl>
</header>
<div class="vtv__tables"><div class="tablewrap"><table><caption class="sr-only">Preset assignments</caption><thead><tr><th scope="col"><span class="sr-only">Preset</span></th><th scope="col">TRIGGER</th><th scope="col">THUMB HIGH</th><th scope="col">THUMB LOW</th><th scope="col">PINKY</th></tr></thead><tbody><tr><th scope="row"><span class="pnum">1</span></th><td class="fn fn--booster">BOOST 1</td><td class="fn fn--booster">BOOST 2</td><td class="fn fn--chute">CHUTE</td><td class="fn fn--empty"></td></tr><tr><th scope="row"><span class="pnum">2</span></th><td class="fn fn--booster">BOOST 1</td><td class="fn fn--booster">BOOST 2</td><td class="fn fn--chute">CHUTE</td><td class="fn fn--handling">LIFT CUT</td></tr><tr><th scope="row"><span class="pnum">3</span></th><td class="fn fn--booster">BOOST 1</td><td class="fn fn--booster">BOOST 2</td><td class="fn fn--handling">LIFT CUT</td><td class="fn fn--empty"></td></tr><tr><th scope="row"><span class="pnum">4</span></th><td class="fn fn--booster">BOOST 1</td><td class="fn fn--booster">BOOST 2</td><td class="fn fn--handling">LIFT CUT</td><td class="fn fn--chute">CHUTE</td></tr><tr><th scope="row"><span class="pnum">5</span></th><td class="fn fn--booster">BOOST 1</td><td class="fn fn--booster">BOOST 2</td><td class="fn fn--comms">HORN</td><td class="fn fn--handling">LIFT CUT</td></tr><tr><th scope="row"><span class="pnum">6</span></th><td class="fn fn--handling">LIFT CUT</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--booster">BOOST 2</td><td class="fn fn--chute">CHUTE</td></tr></tbody></table></div></div>
</article>
@@ -458,6 +506,7 @@ td.fn {
<p class="vtv__key">broccoli</p>
<p class="vtv__load"><span class="chip chip--booster">3× BOOST</span><span class="chip chip--chute">CHUTE</span><span class="chip chip--empty">UNARMED</span></p>
<p class="vtv__meta"><span>4 subsystems</span><span>28 mappings</span></p>
<dl class="spec"><div><dt>Acceleration</dt><dd>22.54 kph/s</dd></div><div><dt>Top speed</dt><dd>341 kph</dd></div><div><dt>Impact speed</dt><dd>330 kph</dd></div><div><dt>Armor</dt><dd>250</dd></div><div><dt>Boosts</dt><dd>3&times;4</dd></div><div><dt>Chutes</dt><dd>3</dd></div></dl>
</header>
<div class="vtv__tables"><div class="tablewrap"><table><caption class="sr-only">Preset assignments</caption><thead><tr><th scope="col"><span class="sr-only">Preset</span></th><th scope="col">TRIGGER</th><th scope="col">THUMB HIGH</th><th scope="col">THUMB LOW</th><th scope="col">PINKY</th></tr></thead><tbody><tr><th scope="row"><span class="pnum">1</span></th><td class="fn fn--booster">BOOST 1</td><td class="fn fn--booster">BOOST 2</td><td class="fn fn--chute">CHUTE</td><td class="fn fn--empty"></td></tr><tr><th scope="row"><span class="pnum">2</span></th><td class="fn fn--booster">BOOST 1</td><td class="fn fn--booster">BOOST 2</td><td class="fn fn--chute">CHUTE</td><td class="fn fn--handling">LIFT CUT</td></tr><tr><th scope="row"><span class="pnum">3</span></th><td class="fn fn--booster">BOOST 1</td><td class="fn fn--booster">BOOST 2</td><td class="fn fn--handling">LIFT CUT</td><td class="fn fn--empty"></td></tr><tr><th scope="row"><span class="pnum">4</span></th><td class="fn fn--booster">BOOST 1</td><td class="fn fn--booster">BOOST 3</td><td class="fn fn--handling">LIFT CUT</td><td class="fn fn--chute">CHUTE</td></tr><tr><th scope="row"><span class="pnum">5</span></th><td class="fn fn--booster">BOOST 1</td><td class="fn fn--booster">BOOST 2</td><td class="fn fn--comms">HORN</td><td class="fn fn--handling">LIFT CUT</td></tr><tr><th scope="row"><span class="pnum">6</span></th><td class="fn fn--handling">LIFT CUT</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--booster">BOOST 2</td><td class="fn fn--chute">CHUTE</td></tr></tbody></table></div></div>
</article>
@@ -468,6 +517,7 @@ td.fn {
<p class="vtv__key">bug</p>
<p class="vtv__load"><span class="chip chip--booster">2× BOOST</span><span class="chip chip--chute">CHUTE</span><span class="chip chip--empty">UNARMED</span></p>
<p class="vtv__meta"><span>3 subsystems</span><span>23 mappings</span></p>
<dl class="spec"><div><dt>Acceleration</dt><dd>22.68 kph/s</dd></div><div><dt>Top speed</dt><dd>372 kph</dd></div><div><dt>Impact speed</dt><dd>175 kph</dd></div><div><dt>Armor</dt><dd>200</dd></div><div><dt>Boosts</dt><dd>2&times;6</dd></div><div><dt>Chutes</dt><dd>3</dd></div></dl>
</header>
<div class="vtv__tables"><div class="tablewrap"><table><caption class="sr-only">Preset assignments</caption><thead><tr><th scope="col"><span class="sr-only">Preset</span></th><th scope="col">TRIGGER</th><th scope="col">THUMB HIGH</th><th scope="col">THUMB LOW</th><th scope="col">PINKY</th></tr></thead><tbody><tr><th scope="row"><span class="pnum">1</span></th><td class="fn fn--booster">BOOST 1</td><td class="fn fn--booster">BOOST 2</td><td class="fn fn--chute">CHUTE</td><td class="fn fn--empty"></td></tr><tr><th scope="row"><span class="pnum">2</span></th><td class="fn fn--booster">BOOST 1</td><td class="fn fn--booster">BOOST 2</td><td class="fn fn--chute">CHUTE</td><td class="fn fn--handling">LIFT CUT</td></tr><tr><th scope="row"><span class="pnum">3</span></th><td class="fn fn--booster">BOOST 1</td><td class="fn fn--booster">BOOST 2</td><td class="fn fn--handling">LIFT CUT</td><td class="fn fn--empty"></td></tr><tr><th scope="row"><span class="pnum">4</span></th><td class="fn fn--booster">BOOST 1</td><td class="fn fn--booster">BOOST 2</td><td class="fn fn--handling">LIFT CUT</td><td class="fn fn--chute">CHUTE</td></tr><tr><th scope="row"><span class="pnum">5</span></th><td class="fn fn--booster">BOOST 1</td><td class="fn fn--booster">BOOST 2</td><td class="fn fn--comms">HORN</td><td class="fn fn--handling">LIFT CUT</td></tr><tr><th scope="row"><span class="pnum">6</span></th><td class="fn fn--handling">LIFT CUT</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--booster">BOOST 2</td><td class="fn fn--chute">CHUTE</td></tr></tbody></table></div></div>
</article>
@@ -478,6 +528,7 @@ td.fn {
<p class="vtv__key">bull</p>
<p class="vtv__load"><span class="chip chip--booster">2× BOOST</span><span class="chip chip--chute">CHUTE</span><span class="chip chip--empty">UNARMED</span></p>
<p class="vtv__meta"><span>3 subsystems</span><span>23 mappings</span></p>
<dl class="spec"><div><dt>Acceleration</dt><dd>19.80 kph/s</dd></div><div><dt>Top speed</dt><dd>330 kph</dd></div><div><dt>Impact speed</dt><dd>385 kph</dd></div><div><dt>Armor</dt><dd>300</dd></div><div><dt>Boosts</dt><dd>2&times;6</dd></div><div><dt>Chutes</dt><dd>3</dd></div></dl>
</header>
<div class="vtv__tables"><div class="tablewrap"><table><caption class="sr-only">Preset assignments</caption><thead><tr><th scope="col"><span class="sr-only">Preset</span></th><th scope="col">TRIGGER</th><th scope="col">THUMB HIGH</th><th scope="col">THUMB LOW</th><th scope="col">PINKY</th></tr></thead><tbody><tr><th scope="row"><span class="pnum">1</span></th><td class="fn fn--booster">BOOST 1</td><td class="fn fn--booster">BOOST 2</td><td class="fn fn--chute">CHUTE</td><td class="fn fn--empty"></td></tr><tr><th scope="row"><span class="pnum">2</span></th><td class="fn fn--booster">BOOST 1</td><td class="fn fn--booster">BOOST 2</td><td class="fn fn--chute">CHUTE</td><td class="fn fn--handling">LIFT CUT</td></tr><tr><th scope="row"><span class="pnum">3</span></th><td class="fn fn--booster">BOOST 1</td><td class="fn fn--booster">BOOST 2</td><td class="fn fn--handling">LIFT CUT</td><td class="fn fn--empty"></td></tr><tr><th scope="row"><span class="pnum">4</span></th><td class="fn fn--booster">BOOST 1</td><td class="fn fn--booster">BOOST 2</td><td class="fn fn--handling">LIFT CUT</td><td class="fn fn--chute">CHUTE</td></tr><tr><th scope="row"><span class="pnum">5</span></th><td class="fn fn--booster">BOOST 1</td><td class="fn fn--booster">BOOST 2</td><td class="fn fn--comms">HORN</td><td class="fn fn--handling">LIFT CUT</td></tr><tr><th scope="row"><span class="pnum">6</span></th><td class="fn fn--handling">LIFT CUT</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--booster">BOOST 2</td><td class="fn fn--chute">CHUTE</td></tr></tbody></table></div></div>
</article>
@@ -488,6 +539,7 @@ td.fn {
<p class="vtv__key">burro</p>
<p class="vtv__load"><span class="chip chip--booster">1× BOOST</span><span class="chip chip--chute">CHUTE</span><span class="chip chip--empty">UNARMED</span></p>
<p class="vtv__meta"><span>2 subsystems</span><span>17 mappings</span></p>
<dl class="spec"><div><dt>Acceleration</dt><dd>22.54 kph/s</dd></div><div><dt>Top speed</dt><dd>354 kph</dd></div><div><dt>Impact speed</dt><dd>330 kph</dd></div><div><dt>Armor</dt><dd>250</dd></div><div><dt>Boosts</dt><dd>1&times;12</dd></div><div><dt>Chutes</dt><dd>3</dd></div></dl>
</header>
<div class="vtv__tables"><div class="tablewrap"><table><caption class="sr-only">Preset assignments</caption><thead><tr><th scope="col"><span class="sr-only">Preset</span></th><th scope="col">TRIGGER</th><th scope="col">THUMB HIGH</th><th scope="col">THUMB LOW</th><th scope="col">PINKY</th></tr></thead><tbody><tr><th scope="row"><span class="pnum">1</span></th><td class="fn fn--booster">BOOST 1</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--chute">CHUTE</td><td class="fn fn--empty"></td></tr><tr><th scope="row"><span class="pnum">2</span></th><td class="fn fn--booster">BOOST 1</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--chute">CHUTE</td><td class="fn fn--handling">LIFT CUT</td></tr><tr><th scope="row"><span class="pnum">3</span></th><td class="fn fn--booster">BOOST 1</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--handling">LIFT CUT</td><td class="fn fn--empty"></td></tr><tr><th scope="row"><span class="pnum">4</span></th><td class="fn fn--booster">BOOST 1</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--handling">LIFT CUT</td><td class="fn fn--chute">CHUTE</td></tr><tr><th scope="row"><span class="pnum">5</span></th><td class="fn fn--booster">BOOST 1</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--comms">HORN</td><td class="fn fn--handling">LIFT CUT</td></tr><tr><th scope="row"><span class="pnum">6</span></th><td class="fn fn--handling">LIFT CUT</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--chute">CHUTE</td></tr></tbody></table></div></div>
</article>
@@ -498,6 +550,7 @@ td.fn {
<p class="vtv__key">lepton</p>
<p class="vtv__load"><span class="chip chip--booster">2× BOOST</span><span class="chip chip--chute">CHUTE</span><span class="chip chip--empty">UNARMED</span></p>
<p class="vtv__meta"><span>3 subsystems</span><span>23 mappings</span></p>
<dl class="spec"><div><dt>Acceleration</dt><dd>23.04 kph/s</dd></div><div><dt>Top speed</dt><dd>443 kph</dd></div><div><dt>Impact speed</dt><dd>85 kph</dd></div><div><dt>Armor</dt><dd>50</dd></div><div><dt>Boosts</dt><dd>2&times;10</dd></div><div><dt>Chutes</dt><dd>4</dd></div></dl>
</header>
<div class="vtv__tables"><div class="tablewrap"><table><caption class="sr-only">Preset assignments</caption><thead><tr><th scope="col"><span class="sr-only">Preset</span></th><th scope="col">TRIGGER</th><th scope="col">THUMB HIGH</th><th scope="col">THUMB LOW</th><th scope="col">PINKY</th></tr></thead><tbody><tr><th scope="row"><span class="pnum">1</span></th><td class="fn fn--booster">BOOST 1</td><td class="fn fn--booster">BOOST 2</td><td class="fn fn--chute">CHUTE</td><td class="fn fn--empty"></td></tr><tr><th scope="row"><span class="pnum">2</span></th><td class="fn fn--booster">BOOST 1</td><td class="fn fn--booster">BOOST 2</td><td class="fn fn--chute">CHUTE</td><td class="fn fn--handling">LIFT CUT</td></tr><tr><th scope="row"><span class="pnum">3</span></th><td class="fn fn--booster">BOOST 1</td><td class="fn fn--booster">BOOST 2</td><td class="fn fn--handling">LIFT CUT</td><td class="fn fn--empty"></td></tr><tr><th scope="row"><span class="pnum">4</span></th><td class="fn fn--booster">BOOST 1</td><td class="fn fn--booster">BOOST 2</td><td class="fn fn--handling">LIFT CUT</td><td class="fn fn--chute">CHUTE</td></tr><tr><th scope="row"><span class="pnum">5</span></th><td class="fn fn--booster">BOOST 1</td><td class="fn fn--booster">BOOST 2</td><td class="fn fn--comms">HORN</td><td class="fn fn--handling">LIFT CUT</td></tr><tr><th scope="row"><span class="pnum">6</span></th><td class="fn fn--handling">LIFT CUT</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--booster">BOOST 2</td><td class="fn fn--chute">CHUTE</td></tr></tbody></table></div></div>
</article>
@@ -508,6 +561,7 @@ td.fn {
<p class="vtv__key">mule</p>
<p class="vtv__load"><span class="chip chip--booster">2× BOOST</span><span class="chip chip--chute">CHUTE</span><span class="chip chip--empty">UNARMED</span></p>
<p class="vtv__meta"><span>3 subsystems</span><span>23 mappings</span></p>
<dl class="spec"><div><dt>Acceleration</dt><dd>21.60 kph/s</dd></div><div><dt>Top speed</dt><dd>360 kph</dd></div><div><dt>Impact speed</dt><dd>302 kph</dd></div><div><dt>Armor</dt><dd>250</dd></div><div><dt>Boosts</dt><dd>2&times;6</dd></div><div><dt>Chutes</dt><dd>3</dd></div></dl>
</header>
<div class="vtv__tables"><div class="tablewrap"><table><caption class="sr-only">Preset assignments</caption><thead><tr><th scope="col"><span class="sr-only">Preset</span></th><th scope="col">TRIGGER</th><th scope="col">THUMB HIGH</th><th scope="col">THUMB LOW</th><th scope="col">PINKY</th></tr></thead><tbody><tr><th scope="row"><span class="pnum">1</span></th><td class="fn fn--booster">BOOST 1</td><td class="fn fn--booster">BOOST 2</td><td class="fn fn--chute">CHUTE</td><td class="fn fn--empty"></td></tr><tr><th scope="row"><span class="pnum">2</span></th><td class="fn fn--booster">BOOST 1</td><td class="fn fn--booster">BOOST 2</td><td class="fn fn--chute">CHUTE</td><td class="fn fn--handling">LIFT CUT</td></tr><tr><th scope="row"><span class="pnum">3</span></th><td class="fn fn--booster">BOOST 1</td><td class="fn fn--booster">BOOST 2</td><td class="fn fn--handling">LIFT CUT</td><td class="fn fn--empty"></td></tr><tr><th scope="row"><span class="pnum">4</span></th><td class="fn fn--booster">BOOST 1</td><td class="fn fn--booster">BOOST 2</td><td class="fn fn--handling">LIFT CUT</td><td class="fn fn--chute">CHUTE</td></tr><tr><th scope="row"><span class="pnum">5</span></th><td class="fn fn--booster">BOOST 1</td><td class="fn fn--booster">BOOST 2</td><td class="fn fn--comms">HORN</td><td class="fn fn--handling">LIFT CUT</td></tr><tr><th scope="row"><span class="pnum">6</span></th><td class="fn fn--handling">LIFT CUT</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--booster">BOOST 2</td><td class="fn fn--chute">CHUTE</td></tr></tbody></table></div></div>
</article>
@@ -518,6 +572,7 @@ td.fn {
<p class="vtv__key">quark</p>
<p class="vtv__load"><span class="chip chip--booster">2× BOOST</span><span class="chip chip--empty">UNARMED</span></p>
<p class="vtv__meta"><span>2 subsystems</span><span>17 mappings</span></p>
<dl class="spec"><div><dt>Acceleration</dt><dd>23.04 kph/s</dd></div><div><dt>Top speed</dt><dd>443 kph</dd></div><div><dt>Impact speed</dt><dd>85 kph</dd></div><div><dt>Armor</dt><dd>50</dd></div><div><dt>Boosts</dt><dd>2&times;11</dd></div><div><dt>Chutes</dt><dd>&mdash;</dd></div></dl>
</header>
<div class="vtv__tables"><div class="tablewrap"><table><caption class="sr-only">Preset assignments</caption><thead><tr><th scope="col"><span class="sr-only">Preset</span></th><th scope="col">TRIGGER</th><th scope="col">THUMB HIGH</th><th scope="col">THUMB LOW</th><th scope="col">PINKY</th></tr></thead><tbody><tr><th scope="row"><span class="pnum">1</span></th><td class="fn fn--booster">BOOST 1</td><td class="fn fn--booster">BOOST 2</td><td class="fn fn--empty"></td><td class="fn fn--empty"></td></tr><tr><th scope="row"><span class="pnum">2</span></th><td class="fn fn--booster">BOOST 1</td><td class="fn fn--booster">BOOST 2</td><td class="fn fn--empty"></td><td class="fn fn--handling">LIFT CUT</td></tr><tr><th scope="row"><span class="pnum">3</span></th><td class="fn fn--booster">BOOST 1</td><td class="fn fn--booster">BOOST 2</td><td class="fn fn--handling">LIFT CUT</td><td class="fn fn--empty"></td></tr><tr><th scope="row"><span class="pnum">4</span></th><td class="fn fn--booster">BOOST 1</td><td class="fn fn--booster">BOOST 2</td><td class="fn fn--handling">LIFT CUT</td><td class="fn fn--empty"></td></tr><tr><th scope="row"><span class="pnum">5</span></th><td class="fn fn--booster">BOOST 1</td><td class="fn fn--booster">BOOST 2</td><td class="fn fn--comms">HORN</td><td class="fn fn--handling">LIFT CUT</td></tr><tr><th scope="row"><span class="pnum">6</span></th><td class="fn fn--handling">LIFT CUT</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--booster">BOOST 2</td><td class="fn fn--empty"></td></tr></tbody></table></div></div>
</article>
@@ -528,6 +583,7 @@ td.fn {
<p class="vtv__key">speck</p>
<p class="vtv__load"><span class="chip chip--booster">2× BOOST</span><span class="chip chip--chute">CHUTE</span><span class="chip chip--empty">UNARMED</span></p>
<p class="vtv__meta"><span>3 subsystems</span><span>23 mappings</span></p>
<dl class="spec"><div><dt>Acceleration</dt><dd>23.04 kph/s</dd></div><div><dt>Top speed</dt><dd>397 kph</dd></div><div><dt>Impact speed</dt><dd>115 kph</dd></div><div><dt>Armor</dt><dd>150</dd></div><div><dt>Boosts</dt><dd>2&times;8</dd></div><div><dt>Chutes</dt><dd>3</dd></div></dl>
</header>
<div class="vtv__tables"><div class="tablewrap"><table><caption class="sr-only">Preset assignments</caption><thead><tr><th scope="col"><span class="sr-only">Preset</span></th><th scope="col">TRIGGER</th><th scope="col">THUMB HIGH</th><th scope="col">THUMB LOW</th><th scope="col">PINKY</th></tr></thead><tbody><tr><th scope="row"><span class="pnum">1</span></th><td class="fn fn--booster">BOOST 1</td><td class="fn fn--booster">BOOST 2</td><td class="fn fn--chute">CHUTE</td><td class="fn fn--empty"></td></tr><tr><th scope="row"><span class="pnum">2</span></th><td class="fn fn--booster">BOOST 1</td><td class="fn fn--booster">BOOST 2</td><td class="fn fn--chute">CHUTE</td><td class="fn fn--handling">LIFT CUT</td></tr><tr><th scope="row"><span class="pnum">3</span></th><td class="fn fn--booster">BOOST 1</td><td class="fn fn--booster">BOOST 2</td><td class="fn fn--handling">LIFT CUT</td><td class="fn fn--empty"></td></tr><tr><th scope="row"><span class="pnum">4</span></th><td class="fn fn--booster">BOOST 1</td><td class="fn fn--booster">BOOST 2</td><td class="fn fn--handling">LIFT CUT</td><td class="fn fn--chute">CHUTE</td></tr><tr><th scope="row"><span class="pnum">5</span></th><td class="fn fn--booster">BOOST 1</td><td class="fn fn--booster">BOOST 2</td><td class="fn fn--comms">HORN</td><td class="fn fn--handling">LIFT CUT</td></tr><tr><th scope="row"><span class="pnum">6</span></th><td class="fn fn--handling">LIFT CUT</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--booster">BOOST 2</td><td class="fn fn--chute">CHUTE</td></tr></tbody></table></div></div>
</article>
@@ -538,6 +594,7 @@ td.fn {
<p class="vtv__key">tarntula</p>
<p class="vtv__load"><span class="chip chip--booster">3× BOOST</span><span class="chip chip--chute">CHUTE</span><span class="chip chip--empty">UNARMED</span></p>
<p class="vtv__meta"><span>4 subsystems</span><span>28 mappings</span></p>
<dl class="spec"><div><dt>Acceleration</dt><dd>20.52 kph/s</dd></div><div><dt>Top speed</dt><dd>326 kph</dd></div><div><dt>Impact speed</dt><dd>425 kph</dd></div><div><dt>Armor</dt><dd>300</dd></div><div><dt>Boosts</dt><dd>3&times;4</dd></div><div><dt>Chutes</dt><dd>3</dd></div></dl>
</header>
<div class="vtv__tables"><div class="tablewrap"><table><caption class="sr-only">Preset assignments</caption><thead><tr><th scope="col"><span class="sr-only">Preset</span></th><th scope="col">TRIGGER</th><th scope="col">THUMB HIGH</th><th scope="col">THUMB LOW</th><th scope="col">PINKY</th></tr></thead><tbody><tr><th scope="row"><span class="pnum">1</span></th><td class="fn fn--booster">BOOST 1</td><td class="fn fn--booster">BOOST 2</td><td class="fn fn--chute">CHUTE</td><td class="fn fn--empty"></td></tr><tr><th scope="row"><span class="pnum">2</span></th><td class="fn fn--booster">BOOST 1</td><td class="fn fn--booster">BOOST 2</td><td class="fn fn--chute">CHUTE</td><td class="fn fn--handling">LIFT CUT</td></tr><tr><th scope="row"><span class="pnum">3</span></th><td class="fn fn--booster">BOOST 1</td><td class="fn fn--booster">BOOST 2</td><td class="fn fn--handling">LIFT CUT</td><td class="fn fn--empty"></td></tr><tr><th scope="row"><span class="pnum">4</span></th><td class="fn fn--booster">BOOST 1</td><td class="fn fn--booster">BOOST 3</td><td class="fn fn--handling">LIFT CUT</td><td class="fn fn--chute">CHUTE</td></tr><tr><th scope="row"><span class="pnum">5</span></th><td class="fn fn--booster">BOOST 1</td><td class="fn fn--booster">BOOST 2</td><td class="fn fn--comms">HORN</td><td class="fn fn--handling">LIFT CUT</td></tr><tr><th scope="row"><span class="pnum">6</span></th><td class="fn fn--handling">LIFT CUT</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--booster">BOOST 2</td><td class="fn fn--chute">CHUTE</td></tr></tbody></table></div></div>
</article>
@@ -548,6 +605,7 @@ td.fn {
<p class="vtv__key">blkrdragon</p>
<p class="vtv__load"><span class="chip chip--booster">2× BOOST</span><span class="chip chip--chute">CHUTE</span><span class="chip chip--weapon">RIVET 1</span><span class="chip chip--weapon">RIVET 2</span><span class="chip chip--weapon">SLAVER</span></p>
<p class="vtv__meta"><span>6 subsystems</span><span>38 mappings</span></p>
<dl class="spec"><div><dt>Acceleration</dt><dd>36.00 kph/s</dd></div><div><dt>Top speed</dt><dd>514 kph</dd></div><div><dt>Impact speed</dt><dd>225 kph</dd></div><div><dt>Armor</dt><dd>300</dd></div><div><dt>Boosts</dt><dd>2&times;96</dd></div><div><dt>Chutes</dt><dd>&mdash;</dd></div><div><dt>Rivet Gun</dt><dd>&times;7</dd></div><div><dt>Rivet Gun</dt><dd>&times;7</dd></div><div><dt>Slaver</dt><dd>&times;8</dd></div></dl>
</header>
<div class="vtv__tables"><div class="tablewrap"><table><caption class="sr-only">Preset assignments</caption><thead><tr><th scope="col"><span class="sr-only">Preset</span></th><th scope="col">TRIGGER</th><th scope="col">THUMB HIGH</th><th scope="col">THUMB LOW</th><th scope="col">PINKY</th></tr></thead><tbody><tr><th scope="row"><span class="pnum">1</span></th><td class="fn fn--weapon">SLAVER</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--chute">CHUTE</td><td class="fn fn--empty"></td></tr><tr><th scope="row"><span class="pnum">2</span></th><td class="fn fn--weapon">SLAVER</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--chute">CHUTE</td><td class="fn fn--handling">LIFT CUT</td></tr><tr><th scope="row"><span class="pnum">3</span></th><td class="fn fn--weapon">SLAVER</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--handling">LIFT CUT</td><td class="fn fn--empty"></td></tr><tr><th scope="row"><span class="pnum">4</span></th><td class="fn fn--weapon">SLAVER</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--handling">LIFT CUT</td><td class="fn fn--empty"></td></tr><tr><th scope="row"><span class="pnum">5</span></th><td class="fn fn--weapon">SLAVER</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--comms">HORN</td><td class="fn fn--handling">LIFT CUT</td></tr><tr><th scope="row"><span class="pnum">6</span></th><td class="fn fn--handling">LIFT CUT</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--empty"></td><td class="fn fn--weapon">SLAVER</td></tr></tbody></table></div></div>
</article>
@@ -558,6 +616,7 @@ td.fn {
<p class="vtv__key">dark</p>
<p class="vtv__load"><span class="chip chip--booster">1× BOOST</span><span class="chip chip--weapon">LASER 2</span><span class="chip chip--weapon">DEMO PACK</span><span class="chip chip--weapon">DEMOPACKDROPPER2</span></p>
<p class="vtv__meta"><span>4 subsystems</span><span>26 mappings</span></p>
<dl class="spec"><div><dt>Acceleration</dt><dd>34.99 kph/s</dd></div><div><dt>Top speed</dt><dd>412 kph</dd></div><div><dt>Impact speed</dt><dd>500 kph</dd></div><div><dt>Armor</dt><dd>100</dd></div><div><dt>Boosts</dt><dd>1&times;96</dd></div><div><dt>Chutes</dt><dd>&mdash;</dd></div><div><dt>Laser Drill</dt><dd>&times;8</dd></div><div><dt>Demopacks</dt><dd>&times;57</dd></div><div><dt>Demopacks</dt><dd>&times;57</dd></div></dl>
</header>
<div class="vtv__tables"><div class="tablewrap"><table><caption class="sr-only">Preset assignments</caption><thead><tr><th scope="col"><span class="sr-only">Preset</span></th><th scope="col">TRIGGER</th><th scope="col">THUMB HIGH</th><th scope="col">THUMB LOW</th><th scope="col">PINKY</th></tr></thead><tbody><tr><th scope="row"><span class="pnum">1</span></th><td class="fn fn--weapon">LASER 2</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--comms">HORN</td><td class="fn fn--empty"></td></tr><tr><th scope="row"><span class="pnum">2</span></th><td class="fn fn--weapon">LASER 2</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--comms">HORN</td><td class="fn fn--handling">LIFT CUT</td></tr><tr><th scope="row"><span class="pnum">3</span></th><td class="fn fn--weapon">LASER 2</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--handling">LIFT CUT</td><td class="fn fn--empty"></td></tr><tr><th scope="row"><span class="pnum">4</span></th><td class="fn fn--weapon">LASER 2</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--handling">LIFT CUT</td><td class="fn fn--comms">HORN</td></tr><tr><th scope="row"><span class="pnum">5</span></th><td class="fn fn--weapon">LASER 2</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--weapon">DEMOPACKDROPPER2</td><td class="fn fn--handling">LIFT CUT</td></tr><tr><th scope="row"><span class="pnum">6</span></th><td class="fn fn--handling">LIFT CUT</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--empty"></td><td class="fn fn--weapon">LASER 2</td></tr></tbody></table></div></div>
</article>
@@ -568,6 +627,7 @@ td.fn {
<p class="vtv__key">blkrpuck</p>
<p class="vtv__load"><span class="chip chip--booster">1× BOOST</span><span class="chip chip--weapon">LASER 2</span></p>
<p class="vtv__meta"><span>2 subsystems</span><span>16 mappings</span></p>
<dl class="spec"><div><dt>Acceleration</dt><dd>34.99 kph/s</dd></div><div><dt>Top speed</dt><dd>412 kph</dd></div><div><dt>Impact speed</dt><dd>425 kph</dd></div><div><dt>Armor</dt><dd>100</dd></div><div><dt>Boosts</dt><dd>1&times;96</dd></div><div><dt>Chutes</dt><dd>&mdash;</dd></div><div><dt>Laser Drill</dt><dd>&times;8</dd></div></dl>
</header>
<div class="vtv__tables"><div class="tablewrap"><table><caption class="sr-only">Preset assignments</caption><thead><tr><th scope="col"><span class="sr-only">Preset</span></th><th scope="col">TRIGGER</th><th scope="col">THUMB HIGH</th><th scope="col">THUMB LOW</th><th scope="col">PINKY</th></tr></thead><tbody><tr><th scope="row"><span class="pnum">1</span></th><td class="fn fn--weapon">LASER 2</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--comms">HORN</td><td class="fn fn--empty"></td></tr><tr><th scope="row"><span class="pnum">2</span></th><td class="fn fn--weapon">LASER 2</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--comms">HORN</td><td class="fn fn--handling">LIFT CUT</td></tr><tr><th scope="row"><span class="pnum">3</span></th><td class="fn fn--weapon">LASER 2</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--handling">LIFT CUT</td><td class="fn fn--empty"></td></tr><tr><th scope="row"><span class="pnum">4</span></th><td class="fn fn--weapon">LASER 2</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--handling">LIFT CUT</td><td class="fn fn--comms">HORN</td></tr><tr><th scope="row"><span class="pnum">5</span></th><td class="fn fn--weapon">LASER 2</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--comms">HORN</td><td class="fn fn--handling">LIFT CUT</td></tr><tr><th scope="row"><span class="pnum">6</span></th><td class="fn fn--handling">LIFT CUT</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--empty"></td><td class="fn fn--weapon">LASER 2</td></tr></tbody></table></div></div>
</article>
@@ -578,6 +638,7 @@ td.fn {
<p class="vtv__key">blkrwasp</p>
<p class="vtv__load"><span class="chip chip--booster">2× BOOST</span><span class="chip chip--chute">CHUTE</span><span class="chip chip--weapon">DEMO PACK</span></p>
<p class="vtv__meta"><span>4 subsystems</span><span>26 mappings</span></p>
<dl class="spec"><div><dt>Acceleration</dt><dd>22.68 kph/s</dd></div><div><dt>Top speed</dt><dd>354 kph</dd></div><div><dt>Impact speed</dt><dd>140 kph</dd></div><div><dt>Armor</dt><dd>200</dd></div><div><dt>Boosts</dt><dd>2&times;48</dd></div><div><dt>Chutes</dt><dd>24</dd></div><div><dt>Demopacks</dt><dd>&times;51</dd></div></dl>
</header>
<div class="vtv__tables"><div class="tablewrap"><table><caption class="sr-only">Preset assignments</caption><thead><tr><th scope="col"><span class="sr-only">Preset</span></th><th scope="col">TRIGGER</th><th scope="col">THUMB HIGH</th><th scope="col">THUMB LOW</th><th scope="col">PINKY</th></tr></thead><tbody><tr><th scope="row"><span class="pnum">1</span></th><td class="fn fn--weapon">DEMO PACK</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--chute">CHUTE</td><td class="fn fn--empty"></td></tr><tr><th scope="row"><span class="pnum">2</span></th><td class="fn fn--weapon">DEMO PACK</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--chute">CHUTE</td><td class="fn fn--handling">LIFT CUT</td></tr><tr><th scope="row"><span class="pnum">3</span></th><td class="fn fn--weapon">DEMO PACK</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--handling">LIFT CUT</td><td class="fn fn--empty"></td></tr><tr><th scope="row"><span class="pnum">4</span></th><td class="fn fn--weapon">DEMO PACK</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--handling">LIFT CUT</td><td class="fn fn--chute">CHUTE</td></tr><tr><th scope="row"><span class="pnum">5</span></th><td class="fn fn--weapon">DEMO PACK</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--comms">HORN</td><td class="fn fn--handling">LIFT CUT</td></tr><tr><th scope="row"><span class="pnum">6</span></th><td class="fn fn--handling">LIFT CUT</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--booster">BOOST 2</td><td class="fn fn--weapon">DEMO PACK</td></tr></tbody></table></div></div>
</article>
@@ -588,6 +649,7 @@ td.fn {
<p class="vtv__key">blkrbroc</p>
<p class="vtv__load"><span class="chip chip--booster">3× BOOST</span><span class="chip chip--chute">CHUTE</span><span class="chip chip--empty">UNARMED</span></p>
<p class="vtv__meta"><span>4 subsystems</span><span>28 mappings</span></p>
<dl class="spec"><div><dt>Acceleration</dt><dd>22.54 kph/s</dd></div><div><dt>Top speed</dt><dd>341 kph</dd></div><div><dt>Impact speed</dt><dd>330 kph</dd></div><div><dt>Armor</dt><dd>250</dd></div><div><dt>Boosts</dt><dd>3&times;32</dd></div><div><dt>Chutes</dt><dd>24</dd></div></dl>
</header>
<div class="vtv__tables"><div class="tablewrap"><table><caption class="sr-only">Preset assignments</caption><thead><tr><th scope="col"><span class="sr-only">Preset</span></th><th scope="col">TRIGGER</th><th scope="col">THUMB HIGH</th><th scope="col">THUMB LOW</th><th scope="col">PINKY</th></tr></thead><tbody><tr><th scope="row"><span class="pnum">1</span></th><td class="fn fn--booster">BOOST 1</td><td class="fn fn--booster">BOOST 2</td><td class="fn fn--chute">CHUTE</td><td class="fn fn--empty"></td></tr><tr><th scope="row"><span class="pnum">2</span></th><td class="fn fn--booster">BOOST 1</td><td class="fn fn--booster">BOOST 2</td><td class="fn fn--chute">CHUTE</td><td class="fn fn--handling">LIFT CUT</td></tr><tr><th scope="row"><span class="pnum">3</span></th><td class="fn fn--booster">BOOST 1</td><td class="fn fn--booster">BOOST 2</td><td class="fn fn--handling">LIFT CUT</td><td class="fn fn--empty"></td></tr><tr><th scope="row"><span class="pnum">4</span></th><td class="fn fn--booster">BOOST 1</td><td class="fn fn--booster">BOOST 3</td><td class="fn fn--handling">LIFT CUT</td><td class="fn fn--chute">CHUTE</td></tr><tr><th scope="row"><span class="pnum">5</span></th><td class="fn fn--booster">BOOST 1</td><td class="fn fn--booster">BOOST 2</td><td class="fn fn--comms">HORN</td><td class="fn fn--handling">LIFT CUT</td></tr><tr><th scope="row"><span class="pnum">6</span></th><td class="fn fn--handling">LIFT CUT</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--booster">BOOST 2</td><td class="fn fn--chute">CHUTE</td></tr></tbody></table></div></div>
</article>
@@ -598,6 +660,7 @@ td.fn {
<p class="vtv__key">blkrlepton</p>
<p class="vtv__load"><span class="chip chip--booster">2× BOOST</span><span class="chip chip--chute">CHUTE</span><span class="chip chip--empty">UNARMED</span></p>
<p class="vtv__meta"><span>3 subsystems</span><span>23 mappings</span></p>
<dl class="spec"><div><dt>Acceleration</dt><dd>23.04 kph/s</dd></div><div><dt>Top speed</dt><dd>443 kph</dd></div><div><dt>Impact speed</dt><dd>85 kph</dd></div><div><dt>Armor</dt><dd>50</dd></div><div><dt>Boosts</dt><dd>2&times;80</dd></div><div><dt>Chutes</dt><dd>32</dd></div></dl>
</header>
<div class="vtv__tables"><div class="tablewrap"><table><caption class="sr-only">Preset assignments</caption><thead><tr><th scope="col"><span class="sr-only">Preset</span></th><th scope="col">TRIGGER</th><th scope="col">THUMB HIGH</th><th scope="col">THUMB LOW</th><th scope="col">PINKY</th></tr></thead><tbody><tr><th scope="row"><span class="pnum">1</span></th><td class="fn fn--booster">BOOST 1</td><td class="fn fn--booster">BOOST 2</td><td class="fn fn--chute">CHUTE</td><td class="fn fn--empty"></td></tr><tr><th scope="row"><span class="pnum">2</span></th><td class="fn fn--booster">BOOST 1</td><td class="fn fn--booster">BOOST 2</td><td class="fn fn--chute">CHUTE</td><td class="fn fn--handling">LIFT CUT</td></tr><tr><th scope="row"><span class="pnum">3</span></th><td class="fn fn--booster">BOOST 1</td><td class="fn fn--booster">BOOST 2</td><td class="fn fn--handling">LIFT CUT</td><td class="fn fn--empty"></td></tr><tr><th scope="row"><span class="pnum">4</span></th><td class="fn fn--booster">BOOST 1</td><td class="fn fn--booster">BOOST 2</td><td class="fn fn--handling">LIFT CUT</td><td class="fn fn--chute">CHUTE</td></tr><tr><th scope="row"><span class="pnum">5</span></th><td class="fn fn--booster">BOOST 1</td><td class="fn fn--booster">BOOST 2</td><td class="fn fn--comms">HORN</td><td class="fn fn--handling">LIFT CUT</td></tr><tr><th scope="row"><span class="pnum">6</span></th><td class="fn fn--handling">LIFT CUT</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--booster">BOOST 2</td><td class="fn fn--chute">CHUTE</td></tr></tbody></table></div></div>
</article>
@@ -608,6 +671,7 @@ td.fn {
<p class="vtv__key">blkrquark</p>
<p class="vtv__load"><span class="chip chip--booster">2× BOOST</span><span class="chip chip--empty">UNARMED</span></p>
<p class="vtv__meta"><span>2 subsystems</span><span>17 mappings</span></p>
<dl class="spec"><div><dt>Acceleration</dt><dd>23.04 kph/s</dd></div><div><dt>Top speed</dt><dd>443 kph</dd></div><div><dt>Impact speed</dt><dd>85 kph</dd></div><div><dt>Armor</dt><dd>50</dd></div><div><dt>Boosts</dt><dd>2&times;88</dd></div><div><dt>Chutes</dt><dd>&mdash;</dd></div></dl>
</header>
<div class="vtv__tables"><div class="tablewrap"><table><caption class="sr-only">Preset assignments</caption><thead><tr><th scope="col"><span class="sr-only">Preset</span></th><th scope="col">TRIGGER</th><th scope="col">THUMB HIGH</th><th scope="col">THUMB LOW</th><th scope="col">PINKY</th></tr></thead><tbody><tr><th scope="row"><span class="pnum">1</span></th><td class="fn fn--booster">BOOST 1</td><td class="fn fn--booster">BOOST 2</td><td class="fn fn--empty"></td><td class="fn fn--empty"></td></tr><tr><th scope="row"><span class="pnum">2</span></th><td class="fn fn--booster">BOOST 1</td><td class="fn fn--booster">BOOST 2</td><td class="fn fn--empty"></td><td class="fn fn--handling">LIFT CUT</td></tr><tr><th scope="row"><span class="pnum">3</span></th><td class="fn fn--booster">BOOST 1</td><td class="fn fn--booster">BOOST 2</td><td class="fn fn--handling">LIFT CUT</td><td class="fn fn--empty"></td></tr><tr><th scope="row"><span class="pnum">4</span></th><td class="fn fn--booster">BOOST 1</td><td class="fn fn--booster">BOOST 2</td><td class="fn fn--handling">LIFT CUT</td><td class="fn fn--empty"></td></tr><tr><th scope="row"><span class="pnum">5</span></th><td class="fn fn--booster">BOOST 1</td><td class="fn fn--booster">BOOST 2</td><td class="fn fn--comms">HORN</td><td class="fn fn--handling">LIFT CUT</td></tr><tr><th scope="row"><span class="pnum">6</span></th><td class="fn fn--handling">LIFT CUT</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--booster">BOOST 2</td><td class="fn fn--empty"></td></tr></tbody></table></div></div>
</article>
@@ -618,6 +682,7 @@ td.fn {
<p class="vtv__key">blkrspk</p>
<p class="vtv__load"><span class="chip chip--booster">3× BOOST</span><span class="chip chip--chute">CHUTE</span><span class="chip chip--empty">UNARMED</span></p>
<p class="vtv__meta"><span>4 subsystems</span><span>28 mappings</span></p>
<dl class="spec"><div><dt>Acceleration</dt><dd>23.04 kph/s</dd></div><div><dt>Top speed</dt><dd>397 kph</dd></div><div><dt>Impact speed</dt><dd>115 kph</dd></div><div><dt>Armor</dt><dd>150</dd></div><div><dt>Boosts</dt><dd>3&times;64</dd></div><div><dt>Chutes</dt><dd>24</dd></div></dl>
</header>
<div class="vtv__tables"><div class="tablewrap"><table><caption class="sr-only">Preset assignments</caption><thead><tr><th scope="col"><span class="sr-only">Preset</span></th><th scope="col">TRIGGER</th><th scope="col">THUMB HIGH</th><th scope="col">THUMB LOW</th><th scope="col">PINKY</th></tr></thead><tbody><tr><th scope="row"><span class="pnum">1</span></th><td class="fn fn--booster">BOOST 1</td><td class="fn fn--booster">BOOST 2</td><td class="fn fn--chute">CHUTE</td><td class="fn fn--empty"></td></tr><tr><th scope="row"><span class="pnum">2</span></th><td class="fn fn--booster">BOOST 1</td><td class="fn fn--booster">BOOST 2</td><td class="fn fn--chute">CHUTE</td><td class="fn fn--handling">LIFT CUT</td></tr><tr><th scope="row"><span class="pnum">3</span></th><td class="fn fn--booster">BOOST 1</td><td class="fn fn--booster">BOOST 2</td><td class="fn fn--handling">LIFT CUT</td><td class="fn fn--empty"></td></tr><tr><th scope="row"><span class="pnum">4</span></th><td class="fn fn--booster">BOOST 1</td><td class="fn fn--booster">BOOST 3</td><td class="fn fn--handling">LIFT CUT</td><td class="fn fn--chute">CHUTE</td></tr><tr><th scope="row"><span class="pnum">5</span></th><td class="fn fn--booster">BOOST 1</td><td class="fn fn--booster">BOOST 2</td><td class="fn fn--comms">HORN</td><td class="fn fn--handling">LIFT CUT</td></tr><tr><th scope="row"><span class="pnum">6</span></th><td class="fn fn--handling">LIFT CUT</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--booster">BOOST 2</td><td class="fn fn--chute">CHUTE</td></tr></tbody></table></div></div>
</article>
@@ -628,6 +693,7 @@ td.fn {
<p class="vtv__key">blkrtran</p>
<p class="vtv__load"><span class="chip chip--booster">4× BOOST</span><span class="chip chip--chute">CHUTE</span><span class="chip chip--empty">UNARMED</span></p>
<p class="vtv__meta"><span>5 subsystems</span><span>33 mappings</span></p>
<dl class="spec"><div><dt>Acceleration</dt><dd>20.52 kph/s</dd></div><div><dt>Top speed</dt><dd>326 kph</dd></div><div><dt>Impact speed</dt><dd>425 kph</dd></div><div><dt>Armor</dt><dd>300</dd></div><div><dt>Boosts</dt><dd>4&times;64</dd></div><div><dt>Chutes</dt><dd>48</dd></div></dl>
</header>
<div class="vtv__tables"><div class="tablewrap"><table><caption class="sr-only">Preset assignments</caption><thead><tr><th scope="col"><span class="sr-only">Preset</span></th><th scope="col">TRIGGER</th><th scope="col">THUMB HIGH</th><th scope="col">THUMB LOW</th><th scope="col">PINKY</th></tr></thead><tbody><tr><th scope="row"><span class="pnum">1</span></th><td class="fn fn--booster">BOOST 2</td><td class="fn fn--empty"></td><td class="fn fn--chute">CHUTE</td><td class="fn fn--empty"></td></tr><tr><th scope="row"><span class="pnum">2</span></th><td class="fn fn--booster">BOOST 2</td><td class="fn fn--empty"></td><td class="fn fn--chute">CHUTE</td><td class="fn fn--handling">LIFT CUT</td></tr><tr><th scope="row"><span class="pnum">3</span></th><td class="fn fn--booster">BOOST 2</td><td class="fn fn--empty"></td><td class="fn fn--handling">LIFT CUT</td><td class="fn fn--empty"></td></tr><tr><th scope="row"><span class="pnum">4</span></th><td class="fn fn--booster">BOOST 2</td><td class="fn fn--booster">BOOST 4</td><td class="fn fn--handling">LIFT CUT</td><td class="fn fn--chute">CHUTE</td></tr><tr><th scope="row"><span class="pnum">5</span></th><td class="fn fn--booster">BOOST 2</td><td class="fn fn--empty"></td><td class="fn fn--comms">HORN</td><td class="fn fn--handling">LIFT CUT</td></tr><tr><th scope="row"><span class="pnum">6</span></th><td class="fn fn--handling">LIFT CUT</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--booster">BOOST 2</td><td class="fn fn--chute">CHUTE</td></tr></tbody></table></div></div>
</article>
@@ -638,6 +704,7 @@ td.fn {
<p class="vtv__key">blkspk</p>
<p class="vtv__load"><span class="chip chip--booster">3× BOOST</span><span class="chip chip--chute">CHUTE</span><span class="chip chip--empty">UNARMED</span></p>
<p class="vtv__meta"><span>4 subsystems</span><span>28 mappings</span></p>
<dl class="spec"><div><dt>Acceleration</dt><dd>23.04 kph/s</dd></div><div><dt>Top speed</dt><dd>397 kph</dd></div><div><dt>Impact speed</dt><dd>115 kph</dd></div><div><dt>Armor</dt><dd>150</dd></div><div><dt>Boosts</dt><dd>3&times;8</dd></div><div><dt>Chutes</dt><dd>3</dd></div></dl>
</header>
<div class="vtv__tables"><div class="tablewrap"><table><caption class="sr-only">Preset assignments</caption><thead><tr><th scope="col"><span class="sr-only">Preset</span></th><th scope="col">TRIGGER</th><th scope="col">THUMB HIGH</th><th scope="col">THUMB LOW</th><th scope="col">PINKY</th></tr></thead><tbody><tr><th scope="row"><span class="pnum">1</span></th><td class="fn fn--booster">BOOST 1</td><td class="fn fn--booster">BOOST 2</td><td class="fn fn--chute">CHUTE</td><td class="fn fn--empty"></td></tr><tr><th scope="row"><span class="pnum">2</span></th><td class="fn fn--booster">BOOST 1</td><td class="fn fn--booster">BOOST 2</td><td class="fn fn--chute">CHUTE</td><td class="fn fn--handling">LIFT CUT</td></tr><tr><th scope="row"><span class="pnum">3</span></th><td class="fn fn--booster">BOOST 1</td><td class="fn fn--booster">BOOST 2</td><td class="fn fn--handling">LIFT CUT</td><td class="fn fn--empty"></td></tr><tr><th scope="row"><span class="pnum">4</span></th><td class="fn fn--booster">BOOST 1</td><td class="fn fn--booster">BOOST 3</td><td class="fn fn--handling">LIFT CUT</td><td class="fn fn--chute">CHUTE</td></tr><tr><th scope="row"><span class="pnum">5</span></th><td class="fn fn--booster">BOOST 1</td><td class="fn fn--booster">BOOST 2</td><td class="fn fn--comms">HORN</td><td class="fn fn--handling">LIFT CUT</td></tr><tr><th scope="row"><span class="pnum">6</span></th><td class="fn fn--handling">LIFT CUT</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--booster">BOOST 2</td><td class="fn fn--chute">CHUTE</td></tr></tbody></table></div></div>
</article>
@@ -648,6 +715,7 @@ td.fn {
<p class="vtv__key">blktrn</p>
<p class="vtv__load"><span class="chip chip--booster">4× BOOST</span><span class="chip chip--chute">CHUTE</span><span class="chip chip--empty">UNARMED</span></p>
<p class="vtv__meta"><span>5 subsystems</span><span>33 mappings</span></p>
<dl class="spec"><div><dt>Acceleration</dt><dd>20.52 kph/s</dd></div><div><dt>Top speed</dt><dd>326 kph</dd></div><div><dt>Impact speed</dt><dd>425 kph</dd></div><div><dt>Armor</dt><dd>300</dd></div><div><dt>Boosts</dt><dd>4&times;4</dd></div><div><dt>Chutes</dt><dd>3</dd></div></dl>
</header>
<div class="vtv__tables"><div class="tablewrap"><table><caption class="sr-only">Preset assignments</caption><thead><tr><th scope="col"><span class="sr-only">Preset</span></th><th scope="col">TRIGGER</th><th scope="col">THUMB HIGH</th><th scope="col">THUMB LOW</th><th scope="col">PINKY</th></tr></thead><tbody><tr><th scope="row"><span class="pnum">1</span></th><td class="fn fn--booster">BOOST 2</td><td class="fn fn--empty"></td><td class="fn fn--chute">CHUTE</td><td class="fn fn--empty"></td></tr><tr><th scope="row"><span class="pnum">2</span></th><td class="fn fn--booster">BOOST 2</td><td class="fn fn--empty"></td><td class="fn fn--chute">CHUTE</td><td class="fn fn--handling">LIFT CUT</td></tr><tr><th scope="row"><span class="pnum">3</span></th><td class="fn fn--booster">BOOST 2</td><td class="fn fn--empty"></td><td class="fn fn--handling">LIFT CUT</td><td class="fn fn--empty"></td></tr><tr><th scope="row"><span class="pnum">4</span></th><td class="fn fn--booster">BOOST 2</td><td class="fn fn--booster">BOOST 4</td><td class="fn fn--handling">LIFT CUT</td><td class="fn fn--chute">CHUTE</td></tr><tr><th scope="row"><span class="pnum">5</span></th><td class="fn fn--booster">BOOST 2</td><td class="fn fn--empty"></td><td class="fn fn--comms">HORN</td><td class="fn fn--handling">LIFT CUT</td></tr><tr><th scope="row"><span class="pnum">6</span></th><td class="fn fn--handling">LIFT CUT</td><td class="fn fn--booster">BOOST 1</td><td class="fn fn--booster">BOOST 2</td><td class="fn fn--chute">CHUTE</td></tr></tbody></table></div></div>
</article></div>
+58 -2
View File
@@ -149,6 +149,31 @@ for name in ORDER:
else:
hull = ''
# Top speed is derived, not stored: terminal velocity, acceleration over
# drag. Neutrino's drag is a seventh of its siblings' and its impact
# speed is uninitialised, so its two derived figures are withheld rather
# than printed as 2880 kph.
ok = v.get('physicsSane', True)
boost = ('%d&times;%d' % (v['boosters'], v['boostCharges'])
if v.get('boostCharges') else
(str(v['boostTotal']) if v.get('boostTotal') else '&mdash;'))
rows = [('Acceleration', '%.2f kph/s' % v['accel']),
('Top speed', '%d kph' % v['topSpeed'] if ok else 'not credible'),
('Impact speed', '%d kph' % v['impact'] if ok else 'not credible'),
('Armor', '%d' % v['armor']),
('Boosts', boost),
('Chutes', str(v['chuteCharges']) if v['chuteCharges'] else '&mdash;')]
for tool in v.get('tools', []):
rows.append((tool['name'], '&times;%d' % tool['charges']))
spec = ('<dl class="spec">'
+ ''.join('<div><dt>%s</dt><dd>%s</dd></div>' % r for r in rows)
+ '</dl>')
if not ok:
spec += ('<p class="spec__warn">Its drag is a seventh of every other '
'Leptons and its impact speed is uninitialised, so the '
'engine would give it a 2880&nbsp;kph top speed. The data is '
'wrong, not the reading.</p>')
cards.append("""
<article class="vtv" data-hull="{hullcode}" data-tags="{tags}" data-search="{search}">
<header class="vtv__id">
@@ -157,13 +182,14 @@ for name in ORDER:
<p class="vtv__key">{key}</p>
<p class="vtv__load">{chips}</p>
<p class="vtv__meta"><span>{nsub} subsystems</span><span>{nrec} mappings</span></p>
{spec}
</header>
<div class="vtv__tables">{l4}</div>
</article>""".format(
tags=tags, hullcode=(code[:1] or '?'),
search=html.escape(search), display=html.escape(display.upper()),
key=html.escape(name), chips=loadout_chips(v), nsub=len(v['subsystems']),
hull=hull, nrec=v['L4']['records'], l4=table(v['L4'])))
hull=hull, nrec=v['L4']['records'], spec=spec, l4=table(v['L4'])))
# Tabs by hull. The first letter of a vehicle's two-letter art code is the
# hull the game actually draws it with; the console's class names are
@@ -336,11 +362,41 @@ h1 em { font-style: normal; color: var(--sys); }
@media (max-width: 46rem) { .vtv { grid-template-columns: 1fr; } }
.vtv[hidden] { display: none; }
.spec {
margin: .75rem 0 0; display: grid; grid-template-columns: 1fr auto;
gap: .2rem .8rem; font: 500 var(--step--1) var(--mono);
}
.spec div { display: contents; }
.spec dt { color: var(--ink-low); letter-spacing: .06em; }
.spec dd {
margin: 0; text-align: right; color: var(--ink);
font-variant-numeric: tabular-nums;
}
.spec__warn {
margin: .5rem 0 0; font: 400 var(--step--1)/1.5 var(--mono);
color: var(--wep);
}
.seg__n {
margin-left: .45em; font-size: .85em; opacity: .55;
font-variant-numeric: tabular-nums;
}
.seg button[aria-pressed="true"] .seg__n { opacity: .75; }
.seg button[aria-pressed="true"] .spec {
margin: .75rem 0 0; display: grid; grid-template-columns: 1fr auto;
gap: .2rem .8rem; font: 500 var(--step--1) var(--mono);
}
.spec div { display: contents; }
.spec dt { color: var(--ink-low); letter-spacing: .06em; }
.spec dd {
margin: 0; text-align: right; color: var(--ink);
font-variant-numeric: tabular-nums;
}
.spec__warn {
margin: .5rem 0 0; font: 400 var(--step--1)/1.5 var(--mono);
color: var(--wep);
}
.seg__n { opacity: .75; }
.vtv__id { padding: 1.1rem 1.25rem; border-right: 1px solid var(--rule); }
@media (max-width: 46rem) { .vtv__id { border-right: 0; border-bottom: 1px solid var(--rule); } }
+69 -24
View File
@@ -107,38 +107,72 @@ def resource_table():
TABLE = resource_table()
# ------------------------------------------------------- subsystem names
RAWNAME = re.compile(rb'([A-Za-z][A-Za-z0-9_]{2,23})\x00')
SUBNAME = re.compile(r'(Booster\d*|Chute\d*|RivetGun\d*|LaserGun\d*|'
r'Demo[Pp]ackDropper\d*|Slaver\d*|Stinger\d*|Eject\d*)$')
def clean(raw):
"""Records are variable length; a float tail can leave printable junk
glued to the front of the next name. Longest valid suffix wins."""
for i in range(len(raw)):
if SUBNAME.fullmatch(raw[i:]):
return raw[i:]
return None
# ------------------------------------------------------------- subsystems
# A record is name[32], then an int type id, the record's own length in
# bytes, and sixteen bytes on, how many charges it carries. Walking by the
# length reads the stream exactly, which beats hunting for printable names
# in the float tails and then guessing where each one really starts.
SUB_TYPE = {2004: 'Booster', 2005: 'Rivet Gun', 2006: 'Laser Drill',
2007: 'Demopacks', 2008: 'Chute'}
def subsystems(veh, warn):
"""-> [(name, type id, charges)] in stream order."""
want = re.compile(r'^%s: Stream of (\d+) Subsystems$' % re.escape(veh))
for res in TABLE.values():
m = want.match(res['desc'])
if not m:
continue
expect = int(m.group(1))
body = RES[res['addr'] + 4:res['addr'] + res['size']]
names = [clean(x.group(1).decode()) for x in RAWNAME.finditer(body)]
names = [n for n in names if n]
if len(names) != expect:
warn.append('subsystem stream lists %d names, header says %d'
% (len(names), expect))
return names
body = RES[res['addr']:res['addr'] + res['size']]
out, o = [], 4
while len(out) < expect and o + 52 <= len(body):
length = struct.unpack_from('<i', body, o + 36)[0]
if not (40 <= length <= 512) or o + length > len(body):
break
out.append((body[o:o + 32].split(b'\x00')[0].decode('latin1'),
struct.unpack_from('<i', body, o + 32)[0],
struct.unpack_from('<i', body, o + 48)[0]))
o += length
if len(out) != expect:
warn.append('subsystem stream walked %d records, header says %d'
% (len(out), expect))
return out
return []
# --------------------------------------------------------------- the specs
# GameModel is a fixed 180-byte block. Top speed is NOT stored: it is
# terminal velocity, acceleration over drag, which is why it comes out as
# the round numbers the arcade quoted. Armor is a float in the DamageZones
# record, past the "dz_vtv" name.
GM_MASS, GM_DRAG, GM_ACCEL, GM_IMPACT = 0, 36, 64, 100
DZ_ARMOR = 35
def specs(veh, warn):
model = next((r for r in TABLE.values()
if r['desc'] == '%s: GameModel' % veh), None)
if model is None:
return {}
mass, drag, accel, impact = (
struct.unpack_from('<f', RES, model['addr'] + o)[0]
for o in (GM_MASS, GM_DRAG, GM_ACCEL, GM_IMPACT))
zone = next((r for r in TABLE.values()
if re.match(r'^%s: Stream of \d+ DamageZones$' % re.escape(veh),
r['desc'])), None)
armor = struct.unpack_from('<f', RES, zone['addr'] + DZ_ARMOR)[0] if zone else 0
top = accel / drag * 3.6 if drag else 0
# Neutrino's drag is 0.008 against 0.052 on every sibling, and its
# impact speed is uninitialised. Say so rather than print it.
sane = 0 < impact < 2000 and 0 < top < 1200
if not sane:
warn.append('physics out of range: top %.0f kph, impact %.3g' % (top, impact))
return {'mass': round(mass), 'accel': round(accel * 3.6, 2),
'topSpeed': round(top), 'impact': round(impact),
'armor': round(armor), 'physicsSane': sane}
# ------------------------------------------------------- mapping streams
def control_streams(veh):
"""The vehicle's ControlsMappings List names its streams by id."""
@@ -195,16 +229,27 @@ for veh in sorted(cfg_veh):
if 'L4' not in streams:
continue # no vehicle resource in this file
warn = warnings.setdefault(veh, [])
subs = subsystems(veh, warn)
if not subs:
records = subsystems(veh, warn)
if not records:
warn.append('no subsystem stream found')
subs = [name for name, _, _ in records] # preset tables index by these
boosts = [c for _, t, c in records if t == 2004]
addr, count = streams['L4']
out[veh] = {
'name': veh, 'subsystems': subs, **cfg_veh[veh],
'boosters': sum(1 for s in subs if s.startswith('Booster')),
'chute': any(s.startswith('Chute') for s in subs),
'boosters': len(boosts),
# "2x6" is two boosters of six charges each. A vehicle whose
# boosters disagree is listed as the sum instead.
'boostCharges': boosts[0] if boosts and len(set(boosts)) == 1 else None,
'boostTotal': sum(boosts),
'chute': any(t == 2008 for _, t, _ in records),
'chuteCharges': next((c for _, t, c in records if t == 2008), 0),
'tools': [{'name': 'Slaver' if n.startswith('Slaver') else SUB_TYPE[t],
'charges': c}
for n, t, c in records if t in (2005, 2006, 2007)],
'weapons': [s for s in subs if not s.startswith(('Booster', 'Chute'))],
'armed': any(not s.startswith(('Booster', 'Chute')) for s in subs),
**specs(veh, warn),
'L4': decode(addr, count, subs, warn),
}