OptionalaliasesAlternate names this unit is known by (e.g. spelling variants in other tools' roster exports). Consulted by name lookup so an import matches despite a spelling difference; never displayed.
OptionalroleBattlefield role from the datasheet header. Unit types (Infantry, Vehicle, etc.) belong in keywords.
Optionalattachment_Character attachment role (11e). 'support' implies the unit is only legal when attached to a host unit (cannot be taken solo); 'leader' is valid as a standalone list entry. null/absent for non-attaching units.
OptionalpointsLowest model count this tier's cost applies to. For a single-size tier this is the only size; for a GW range-priced tier (block pricing) it is the range floor and models_max is the ceiling. baseUnitPoints prices a squad at the highest models threshold its count reaches.
Optionalmodels_max?: numberInclusive upper model count for a range-priced tier (GW block pricing, e.g. Venatari Custodians are 4–6 models for 320). models is the range floor; every size in [models, models_max] costs cost. Absent when the tier prices a single size (equivalent to models_max == models).
Optionalunit_count_min?: number11e per-army-ordinal pricing: the first army-copy count (1-based) this tier's cost applies to. Absent (together with unit_count_max) means the cost applies to every copy — the common case. Present only for datasheets the MFM prices by how many you have taken (e.g. 'your 1st-2nd units cost X, your 3rd+ unit costs Y').
Optionalunit_count_max?: number | nullInclusive upper army-copy count for this tier's band, or null for an open-ended top band ('3rd+ unit'). Absent when unit_count_min is absent.
Optionalallied_11e: alternate point costs that apply only when this unit is included in a host army of another faction (e.g. an Agents of the Imperium unit allied into any IMPERIUM army). Each entry mirrors a points tier but is scoped to a host_faction. Absent for the common case where the unit costs the same everywhere; consumers that don't model allied pricing read points (the native cost) and ignore this.
Kebab-case identifier
Optionalmodels_max?: numberOptionalunit_count_min?: numberOptionalunit_count_max?: number | nullOptionalpoints_True when point costs are carried over provisionally (e.g. seeded from a prior edition during migration) and not yet confirmed against the current dataslate.
Optionalwargear_Per-item MFM wargear prices that the option-level additional_cost on wargear-option records cannot express: priced default-loadout items (e.g. a Terminator Assault Squad's thunder hammers, which are the default with only a swap-away option to hang a cost on) and heterogeneous choice groups where only some items in a group cost points. Each entry charges cost points for every copy of item_id in the unit's FINAL loadout (defaults included). Additive and optional — a consumer that ignores it prices this wargear as free, exactly as before. Sourced authoritatively from the MFM dump (wargear_option.points).
Kebab-case identifier
Points charged per copy of item_id present in the final loadout.
OptionalkeywordsOptionalfaction_Optionalexcluded_Faction keywords whose armies are barred from taking this otherwise-generic unit. Used where the game removes a generic unit from a specific sub-faction without printing a replacement (e.g. Black Templars cannot field Librarians; Deathwatch cannot field the generic Tactical Squad). An army may take this unit only if none of its faction keywords appear here. Absent/empty = available to every keyword-eligible army. Distinct from faction_keywords, which is the positive access list; this is the negative one for the rare exclusions a flat shared pool cannot otherwise express.
Optionalbase_The unit's representative base (the most-numerous model's base). Mixed-model units carry the full per-model breakdown in unit-composition; this top-level value is a convenience for consumers that need a single base.
Optionalmodel_Optionalweapon_Optionalability_Optionalwargear_Limited-wargear squad allowances the per-weapon bounds cannot express: a GW limited_wargear_choice_set that is either (a) SHARED across several weapons (a 'for every N models, one model can take one of A/B/C' line) or (b) a FLAT per-unit cap ('up to 1 per unit'). A loadout is legal only if the summed count of a budget's items is at most the cap: floor(model_count * count / per_models) for a ratio, or just count when per_models is 0 (a flat per-unit cap). Single-weapon per-N allowances are NOT budgets — the per-weapon bounds already model them (they correctly sum a weapon's capacity across the model types that may take it).
Models per count allowance; 0 means a flat per-unit cap of count (independent of squad size).
Optionalduplicate_limit?: numberOptional per-item sub-cap: at most this many copies of any SINGLE item in the set — floor(model_count * duplicate_limit / per_models) for a ratio, or duplicate_limit when per_models is 0. Absent means the shared count cap is the only bound (any one item may fill the whole allowance).
Optionaltransport_Optionalis_Optionalgame_
A unit datasheet entry with stat profiles and point costs.
This interface was referenced by
0KdcBundledSchemas's JSON-Schema via thedefinition"unit".