setitems.txt defines every individual set piece in D2R — Civerb's Ward (the shield), Tal Rasha's Howling Wind (the amulet), Sigon's Visor (the helm), all the way to the post-launch Bane's Garments and Horazon's Splendor pieces. 141 rows total. Each row points at its parent set (sets index) and at its base item (weapons / armor / Misc.txt).
Three layers of stats per set piece
Every equipped set item layers stats from three sources. Understanding the layering is half the table:
- Per-piece base stats —
prop1..prop9here. Always active, regardless of how many other set pieces are worn. Civerb's Ward always carries +15 defense and +15% block. - Per-piece "added" green-text bonuses —
aprop1a/aprop1b..aprop5a/aprop5bhere. Activate as more other set pieces are equipped (the green text on the tooltip beyond the base stats). - Set parent's partial / full bonuses —
PCode*/FCode*on the matchingsetsrow.
The 9 base props plus 10 added "green" props (5 piece-count tiers × 2 slots), plus the parent set's 16 partials and 8 full-set slots, is why a fully-equipped set can stack a wall of green text in one tooltip.
What's in a row
The 100+ columns split into identity, drop eligibility, base stats, the added-bonus block, and visual/audio overrides.
Identity
| Column | Meaning |
|---|---|
index | Set piece's primary key — Civerb's Ward, Sigon's Visor. |
*ID | Comment column — original row index, not read by the engine. |
*ItemName | Comment column — display name for human reference. |
set | Parent set (sets index). Connects this piece to its set-level bonuses. |
item | Base item code (weapons code, armor code, or Misc.txt). lrg = Large Shield, amu = Amulet, etc. |
lvl | Item level — monsters / containers must roll ilvl ≥ this for the piece to drop. |
lvl req | Character level required to equip. |
Drop eligibility
Same four-gate model as uniqueitems:
| Column | Meaning |
|---|---|
disabled | 1 = piece cannot drop. Empty / 0 = eligible. |
spawnable | 1 = appears in standard gameplay. |
disableChronicle | 1 = suppressed in Chronicles game mode (D2R-era). |
firstLadderSeason / lastLadderSeason | Ladder-season window. Both empty = no ladder restriction. Same convention as uniqueitems and runes. |
DropConditionCalc | Engine calc-DSL gate (rarely used). |
rarity | Relative pick weight when multiple set pieces share a base. |
Per-piece base stats — prop1..prop9
The familiar prop / par / min / max encoding, 9 slots here (uniqueitems extends to 12).
| Columns | Meaning |
|---|---|
prop1..prop9 | Property code from Properties.txt. Empty = no stat. |
par1..par9 | Parameter (skill ID for oskill, blank for simple stats). |
min1..min9 | Minimum roll. |
max1..max9 | Maximum roll. min == max = fixed; min < max = roll range. |
These are always active — the floor of stats the piece carries regardless of what else is worn.
Per-piece "added" bonuses — aprop1a through aprop5b
The set-piece tooltip's green text comes from this block. Indexed by piece count and slot letter:
| Threshold | Slots | Activates when |
|---|---|---|
aprop1a / aprop1b | 2 stat slots | 1 other set piece is equipped (total ≥ 2). |
aprop2a / aprop2b | 2 slots | 2 others equipped (total ≥ 3). |
aprop3a / aprop3b | 2 slots | 3 others (total ≥ 4). |
aprop4a / aprop4b | 2 slots | 4 others (total ≥ 5). |
aprop5a / aprop5b | 2 slots | 5 others (total ≥ 6 — full 6-piece set). |
The a and b are two stat slots per piece-count threshold. Empty cells = no bonus at that piece-count tier. Combined across all 6 pieces of a 6-piece set, this block alone produces 60 stat-slots of green-text "as you wear more" bonuses — separate from the parent set's PCode* block in sets.
Visual & audio overrides
| Column | Meaning |
|---|---|
chrtransform / invtransform | Color shifts for character and inventory icon. The signature green color of set items comes from these. |
flippyfile / invfile | Drop animation / inventory icon overrides. |
dropsound / dropsfxframe / usesound | Audio overrides. |
Economy
| Column | Meaning |
|---|---|
cost mult / cost add | Buy/sell/repair cost modifiers. |
add func | Bonus distribution function (engine-internal). |
diablocloneweight | DClone progress weight when sold to an NPC. Same mechanism as uniqueitems. |
Worked example: Civerb's Ward
The shield piece of the 3-piece Civerb's Vestments Classic set:
| Field | Value | Interpretation |
|---|---|---|
index | Civerb's Ward | Display key. |
set | Civerb's Vestments | Parent set. |
item | lrg | Large Shield base. |
lvl / lvl req | 7 / 9 | Drops at ilvl ≥ 7; equips at clvl 9. |
prop1 / min1 / max1 | ac / 15 / 15 | +15 defense (always active). |
prop2 / min2 / max2 | block / 15 / 15 | +15% block (always active). |
aprop2a / amin2a / amax2a | mana / 21 / 22 | +21–22 mana when 2 others equipped (variable roll, 3-piece tier). |
aprop2b / amin2b / amax2b | res-pois / 25 / 26 | +25–26 poison resist at the 3-piece tier. |
The "+21-22 mana" green-text bonus is a variable roll — locks in at item generation, not at equip time. When reporting set-piece bonuses, always show the range, not the average.
Variable rolls
Many set pieces have min < max on at least one slot — most commonly on the per-piece base stats and the lower-tier added bonuses. The roll happens once at item generation; afterward the piece carries that fixed value forever.
Cross-references
sets— the parent set's partial- and full-set bonuses; this table'ssetcolumn points there.weapons/armor—itemresolves into one of these (orMisc.txtfor charms / jewels / amulets / rings).itemtypes— base items inherit from itypes.uniqueitems— same encoding (extended to 12 slots there).itemstatcost—prop*ultimately resolves to stats here viaProperties.txt.
Naming gotcha
setitems is the individual set pieces table — one row per wearable item. Set-level bonuses (the partials by piece count, the full-set stat block) are in sets. Don't confuse this with uniqueitems (the unique items) or magicprefix / magicsuffix (magic-item affix pools).