Tactical Reroll
⋯

The Tyranid feature table's dictionary (T-632)

From reports/tiers/2026-10-04-tyranid-features.md , rendered when the site is built.

2026-10-04-tyranid-features.csv: one row per Tyranid unit (52) per form: best (its best solo form at the step-6 baseline, the ledger's ranking row) and cheapest (the best of its solo forms at the fewest models). Our own numbers from the frozen datasheets (BSData 374f505, through tools/ledger-inputs.lock.json) and the effects files; numbers and flags only, never rules text. Written by tools/diagnose.js.

The first columns: unit, form (best or cheapest), formLabel (the ledger's form label: size, loadout name, detachment), detachment, consensus (mean letter over the five headline lists that grade it, S 5 … F 0), graded (how many lists grade it), letter_<list> (each list's letter).

mono: the sign the boosted trees are held to (+1 more is never worse, −1 less is never worse, 0 free). The models read the best row plus the cheapest size's valueCheap, ptsCheap and modelsCheap.

ColumnFamilymonoWhat it is
Mdatasheet+1Move, inches
Tdatasheet+1Toughness
Svdatasheet−1armour save (the number to roll; lower is better)
invdatasheet−1invulnerable save (7 = none)
Wdatasheet+1wounds per model
Lddatasheet−1Leadership (the number to roll; lower is better)
OCdatasheet+1Objective Control per model
modelsdatasheet0models in the form
ptsdatasheet−1points of the form
ptsPerModeldatasheet0points per model
ptsPerWounddatasheet−1points per wound (models × W)
woundsPer100datasheet+1wounds per 100 points
ocPer100datasheet+1OC per 100 points (models × OC)
fnpdatasheet−1Feel No Pain (the number to roll; 7 = none)
damagedBracketdatasheet−1wounds left at which the unit fights damaged (0 = none)
bestR_Aweapons+1best ranged profile: attacks (dice averaged)
bestR_Sweapons+1best ranged profile: Strength
bestR_APweapons+1best ranged profile: AP as a positive number
bestR_Dweapons+1best ranged profile: Damage (dice averaged)
bestR_skillweapons+1best ranged profile: chance to hit (1 for Torrent)
bestR_rangeweapons+1best ranged profile: range, inches
rangedMeq100weapons+1ranged: expected damage per 100 points against a power-armoured trooper (T4 3+ W2), every weapon carried, one volley
rangedVeh100weapons+1ranged: the same against a heavy vehicle (T10 3+ W12)
rangedChaff100weapons+1ranged: the same against a chaff trooper (T3 5+ W1)
rangedAttacks100weapons+1ranged: attacks per 100 points
bestM_Aweapons+1best melee profile: attacks (dice averaged)
bestM_Sweapons+1best melee profile: Strength
bestM_APweapons+1best melee profile: AP as a positive number
bestM_Dweapons+1best melee profile: Damage (dice averaged)
bestM_skillweapons+1best melee profile: chance to hit (1 for Torrent)
meleeMeq100weapons+1melee: expected damage per 100 points against a power-armoured trooper (T4 3+ W2), every weapon carried, one volley
meleeVeh100weapons+1melee: the same against a heavy vehicle (T10 3+ W12)
meleeChaff100weapons+1melee: the same against a chaff trooper (T3 5+ W1)
meleeAttacks100weapons+1melee: attacks per 100 points
maxRangeweapons+1longest ranged weapon, inches (0 = none)
kw_antiweapons0weapons carried with the anti keyword (count of distinct weapons)
kw_devastatingweapons0weapons carried with the devastating keyword (count of distinct weapons)
kw_lethalweapons0weapons carried with the lethal keyword (count of distinct weapons)
kw_sustainedweapons0weapons carried with the sustained keyword (count of distinct weapons)
kw_precisionweapons0weapons carried with the precision keyword (count of distinct weapons)
kw_indirectweapons0weapons carried with the indirect keyword (count of distinct weapons)
kw_torrentweapons0weapons carried with the torrent keyword (count of distinct weapons)
kw_blastweapons0weapons carried with the blast keyword (count of distinct weapons)
kw_meltaweapons0weapons carried with the melta keyword (count of distinct weapons)
kw_twinLinkedweapons0weapons carried with the twinLinked keyword (count of distinct weapons)
kw_ignoresCoverweapons0weapons carried with the ignoresCover keyword (count of distinct weapons)
kw_psychicweapons0weapons carried with the psychic keyword (count of distinct weapons)
kw_heavyweapons0weapons carried with the heavy keyword (count of distinct weapons)
kw_assaultweapons0weapons carried with the assault keyword (count of distinct weapons)
kw_pistolweapons0weapons carried with the pistol keyword (count of distinct weapons)
kw_extraAttacksweapons0weapons carried with the extraAttacks keyword (count of distinct weapons)
has_deepStrikeflags+1carries the core rule Deep Strike (1/0)
has_scoutsflags+1carries the core rule Scouts (1/0)
has_infiltratorsflags+1carries the core rule Infiltrators (1/0)
has_loneOperativeflags+1carries the core rule Lone Operative (1/0)
has_stealthflags+1carries the core rule Stealth (1/0)
has_fightsFirstflags+1carries the core rule Fights First (1/0)
has_synapseflags+1carries the core rule Synapse (1/0)
has_leaderflags+1carries the core rule Leader (1/0)
has_deadlyDemiseflags+1carries the core rule Deadly Demise (1/0)
has_shadowInWarpflags+1carries the core rule Shadow in the Warp (the army-wide Battle-shock test) (1/0)
has_hoverflags+1carries the core rule Hover (1/0)
kw_is_flyflags0keyword Fly (1/0)
kw_is_monsterflags0keyword Monster (1/0)
kw_is_infantryflags0keyword Infantry (1/0)
kw_is_characterflags0keyword Character (1/0)
kw_is_psykerflags0keyword Psyker (1/0)
kw_is_epicHeroflags0keyword Epic Hero (1/0)
kw_is_battlelineflags0keyword Battleline (1/0)
kw_is_transportflags0keyword Transport or Dedicated Transport (1/0)
kw_is_toweringflags0keyword Towering (1/0)
kw_is_titanicflags0keyword Titanic (1/0)
kw_is_beastflags0keyword Beast (1/0)
kw_is_swarmflags0keyword Swarm (1/0)
kw_is_burrowersflags0keyword Burrowers (1/0)
kw_is_vanguardflags0keyword Vanguard Invader (1/0)
leadsCountflags+1how many datasheets it can lead
fx_arrivalflags+1its own abilities (unitfx.json) include a rule of kind "arrival" (1/0)
fx_moveflags+1its own abilities (unitfx.json) include a rule of kind "move" (1/0)
fx_enemyflags+1its own abilities (unitfx.json) include a rule of kind "enemy" (1/0)
fx_shockflags+1its own abilities (unitfx.json) include a rule of kind "shock" (1/0)
fx_mortalflags+1its own abilities (unitfx.json) include a rule of kind "mortal" (1/0)
fx_spawnflags+1its own abilities (unitfx.json) include a rule of kind "spawn" (1/0)
fx_healflags+1its own abilities (unitfx.json) include a rule of kind "heal" (1/0)
fx_cpflags+1its own abilities (unitfx.json) include a rule of kind "cp" (1/0)
fx_auraflags+1its own abilities (unitfx.json) include a rule of kind "aura" (1/0)
fx_markflags+1its own abilities (unitfx.json) include a rule of kind "mark" (1/0)
fx_synapseflags+1its own abilities (unitfx.json) include a rule of kind "synapse" (1/0)
fx_overwatchflags+1its own abilities (unitfx.json) include a rule of kind "overwatch" (1/0)
fx_chosenflags+1its own abilities (unitfx.json) include a rule of kind "chosen" (1/0)
fx_onceflags+1its own abilities (unitfx.json) include a rule of kind "once" (1/0)
fx_ocflags+1its own abilities (unitfx.json) include a rule of kind "oc" (1/0)
fx_leadflags+1its own abilities (unitfx.json) include a rule of kind "lead" (1/0)
fx_listflags+1its own abilities (unitfx.json) include a rule of kind "list" (1/0)
fx_attModsflags+1unitfx.json: dice effects on its own attacks, always on (count)
fx_defModsflags+1unitfx.json: dice effects on attacks against it, always on (count)
lfx_effectsflags+1leaderfx.json: dice effects it gives the unit it leads (count)
buffsOthersflags+1gives other units something: an aura, a leader effect or a lead rule (1/0)
arrivesflags+1can be placed away from its own zone (the ledger's arrival: deep strike, tunnels, scouts, infiltrators…) (1/0)
spawnsflags+1adds units or models during the game (1/0)
lr_synapseflags+1the ledger counts a "synapse" rule multiplier on this form (1/0)
lr_cpflags+1the ledger counts a "cp" rule multiplier on this form (1/0)
lr_firstflags+1the ledger counts a "first" rule multiplier on this form (1/0)
lr_loneflags+1the ledger counts a "lone" rule multiplier on this form (1/0)
lr_buffflags+1the ledger counts a "buff" rule multiplier on this form (1/0)
lr_mortalflags+1the ledger counts a "mortal" rule multiplier on this form (1/0)
lr_movementflags+1the ledger counts a "movement" rule multiplier on this form (1/0)
lr_debuffflags+1the ledger counts a "debuff" rule multiplier on this form (1/0)
lr_healflags+1the ledger counts a "heal" rule multiplier on this form (1/0)
lr_overwatchflags+1the ledger counts a "overwatch" rule multiplier on this form (1/0)
valueledger+1the ledger's Value at the step-6 baseline (per 100 points)
c_killledger+1the ledger's kill line: its contribution to Value at step 6
c_soakledger+1the ledger's soak line: its contribution to Value at step 6
c_scoreledger+1the ledger's score line: its contribution to Value at step 6
c_actionsledger+1the ledger's actions line: its contribution to Value at step 6
c_holdledger+1the ledger's hold line: its contribution to Value at step 6
c_spawnledger+1the ledger's spawn line: its contribution to Value at step 6
c_presenceledger+1the ledger's presence line: its contribution to Value at step 6
line_killRangedledger+1the ledger's ranged Kill (points removed per 100, as measured, before weights)
line_killMeleeledger+1the ledger's melee Kill after the charge's lands (per 100)
soakShootledger+1enemy shooting points per 100 needed to remove it (Soak, shooting)
soakFightledger+1the same in melee
landsledger+1the charge model's share of its melee that lands
multTotalledger+1the ledger's rule multiplier on the whole Value
scarcityledger+1the ledger's role-scarcity factor on Kill
k6_monsterkillclass+1the ledger's Kill into monster at β 6 (per 100 points)
k6_heavy_vehiclekillclass+1the ledger's Kill into heavy vehicle at β 6 (per 100 points)
k6_light_vehiclekillclass+1the ledger's Kill into light vehicle at β 6 (per 100 points)
k6_heavy_infantrykillclass+1the ledger's Kill into heavy infantry at β 6 (per 100 points)
k6_elite_infantrykillclass+1the ledger's Kill into elite infantry at β 6 (per 100 points)
k6_chaffkillclass+1the ledger's Kill into chaff at β 6 (per 100 points)
k6_characterkillclass+1the ledger's Kill into character at β 6 (per 100 points)
k6_cavalry_and_beastskillclass+1the ledger's Kill into cavalry and beasts at β 6 (per 100 points)
valueCheapledger+1the ledger's Value at the cheapest legal size (best such solo form)
ptsCheapdatasheet−1points at the cheapest legal size
modelsCheapdatasheet0models at the cheapest legal size
ix_durLight100interaction+1models × W ÷ (wound chance × failed-save chance) against S5 AP−1 D1, per 100 points: hits to kill it with small arms
ix_durHeavy100interaction+1models × ⌈W ÷ 3⌉ ÷ (wound chance × failed-save chance) against S9 AP−3 D3, per 100 points: hits to kill it with anti-tank
ix_WxSaveinteraction+1W × (7 − Sv): wounds times save quality
ix_invxTinteraction+1(7 − inv) × T: invulnerable save quality times Toughness
ix_killxSoakinteraction+1√(Kill line × Soak line): damage times staying power
ix_MxMeleeinteraction+1Move × melee share of Kill
ix_arrivexMeleeinteraction+1arrives × melee Kill
ix_bodiesxOCinteraction+1models per 100 points × OC per model (the same as ocPer100 at one OC) × Move ÷ 6: bodies that reach objectives