Items

sets

The 35 set parents — partial bonuses by piece count and the full-set stat block that lands when every piece is worn.

sets.txt defines the 35 set families in D2R — Civerb's Vestments, Tal Rasha's Wrappings, Trang-Oul's Avatar, all the way to the post-launch Bane's Garments and Horazon's Splendor. Each row is the umbrella that the individual set pieces (setitems) roll up to: the partial bonuses that activate as you wear more pieces, and the full-set stat block that lands when every piece is equipped.

The whole set system is two tables: this one for set-level bonuses, setitems for the per-piece definitions. They share the same property/parameter/min/max stat-encoding layer used by uniqueitems, magicprefix, magicsuffix, automagic, and runes.

35 rows — 5 Classic sets (version=0) + 27 LoD Expansion sets (version=100) + 3 D2R post-launch additions (Warlord's Glory, Bane's Garments, Horazon's Splendor).

What's in a row

The 67 columns split into three groups: identity, partial-set bonuses (16 stat slots), and full-set bonuses (8 stat slots).

Identity

ColumnMeaning
indexSet's primary key — Civerb's Vestments, Tal Rasha's Wrappings. Referenced by setitems set column.
nameString key for the displayed set name. Almost always identical to index.
version0 = Classic, 100 = Expansion. Of the 35 sets, 5 are Classic and 30 are Expansion / D2R.

Partial-set bonuses

The naming pattern is [Code|Param|Min|Max] + [piece-count] + [a|b]. So PCode2a = the property code for the first bonus that activates when 2 pieces are equipped; PCode4b = the second bonus at 4 pieces.

SlotsWhat activates
PCode2a / PCode2b2-piece partial — fires at any 2 set items equipped.
PCode3a / PCode3b3-piece partial.
PCode4a / PCode4b4-piece partial.
PCode5a / PCode5b5-piece partial.

16 partial slots total (4 piece-count tiers × 2 stats × 4 fields per stat). Bonuses are cumulative — at 4 pieces you have 2-piece + 3-piece + 4-piece bonuses all active. At full set, every partial tier remains active alongside the full-set block.

Not every set fills every tier. Small 3-piece sets (Cleglaw's Brace, Civerb's Vestments) only use the 2- and 3-piece partials. Large 6-piece sets (Tal Rasha's, Immortal King) use 2/3/4/5 partials and a fat full-set block.

Full-set bonuses

Column groupMeaning
FCode1..FCode8 (with FParam/FMin/FMax)Up to 8 stat slots, fires only when every piece is equipped.

8 stats is the largest block in the item-system tables aside from uniqueitems' 12. That density reflects intent: full-set bonuses are the strongest payoff in the set system.

Misc

ColumnMeaning
UIClassUI tier-color override (rarely used).
*eolEnd-of-line marker (engine artifact, not gameplay-relevant).

The property layer

Both PCode* and FCode* follow the same prop/par/min/max encoding used everywhere else in the item-data system:

  • *Code* = property name from Properties.txt (composes one or more itemstatcost stats with display logic).
  • *Param* = parameter (skill ID for oskill, blank for simple stats).
  • *Min* / *Max* = roll range. min == max = fixed. min < max = engine rolls within range each spawn.

A set bonus with min < max rolls per item generation — the partial bonus locks in when the parent set's primary item drops, not at equip time. When reporting set bonuses, always show the range, not the average.

Worked example: Tal Rasha's Wrappings

The canonical Sorceress endgame set — 5 pieces, two-tiered structure where partial bonuses build to a payoff full-set block carrying the +2 to all skills.

TierSlotBonus
2 piecesPCode2aThe first partial bonus (e.g., a stat or skill point).
3 piecesPCode3a / PCode3bSecond partial tier.
4 piecesPCode4a / PCode4bThird tier.
5 piecesPCode5a / PCode5bFourth tier (full set on a 5-piece).
FullFCode1..FCode8Up to 8 stats — the lit-up block.

In tooltip terms: green numbers appear next to bonuses that are currently active; gray ones list partials that activate at higher piece counts. Both halves are stored here.

Variable rolls

Some set bonuses have min < max and roll within range each time the parent piece spawns. Always show the range, not the average, when reporting set numbers.

Cross-references

  • setitems — the per-piece stat rows that point at set parents via set.
  • itemstatcost*Code* resolves to stats here via Properties.txt.
  • uniqueitems / magicprefix / magicsuffix / runes — share the same property/parameter/min/max stat-encoding layer.
  • Properties.txt — defines the property → itemstatcost stat mapping.

Naming gotcha

sets is the set parent table — bonuses by piece count. The individual pieces ("Civerb's Ward", "Tal Rasha's Howling Wind") live in setitems. Don't confuse sets with superuniques (named champion monsters) or with uniqueitems (the unique items table).