Items

setitems

The 141 individual set pieces — each row is one wearable, with per-piece base stats and per-piece "added" green-text bonuses keyed by piece count.

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:

  1. Per-piece base statsprop1..prop9 here. Always active, regardless of how many other set pieces are worn. Civerb's Ward always carries +15 defense and +15% block.
  2. Per-piece "added" green-text bonusesaprop1a/aprop1b .. aprop5a/aprop5b here. Activate as more other set pieces are equipped (the green text on the tooltip beyond the base stats).
  3. Set parent's partial / full bonusesPCode* / FCode* on the matching sets row.

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

ColumnMeaning
indexSet piece's primary key — Civerb's Ward, Sigon's Visor.
*IDComment column — original row index, not read by the engine.
*ItemNameComment column — display name for human reference.
setParent set (sets index). Connects this piece to its set-level bonuses.
itemBase item code (weapons code, armor code, or Misc.txt). lrg = Large Shield, amu = Amulet, etc.
lvlItem level — monsters / containers must roll ilvl ≥ this for the piece to drop.
lvl reqCharacter level required to equip.

Drop eligibility

Same four-gate model as uniqueitems:

ColumnMeaning
disabled1 = piece cannot drop. Empty / 0 = eligible.
spawnable1 = appears in standard gameplay.
disableChronicle1 = suppressed in Chronicles game mode (D2R-era).
firstLadderSeason / lastLadderSeasonLadder-season window. Both empty = no ladder restriction. Same convention as uniqueitems and runes.
DropConditionCalcEngine calc-DSL gate (rarely used).
rarityRelative 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).

ColumnsMeaning
prop1..prop9Property code from Properties.txt. Empty = no stat.
par1..par9Parameter (skill ID for oskill, blank for simple stats).
min1..min9Minimum roll.
max1..max9Maximum 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:

ThresholdSlotsActivates when
aprop1a / aprop1b2 stat slots1 other set piece is equipped (total ≥ 2).
aprop2a / aprop2b2 slots2 others equipped (total ≥ 3).
aprop3a / aprop3b2 slots3 others (total ≥ 4).
aprop4a / aprop4b2 slots4 others (total ≥ 5).
aprop5a / aprop5b2 slots5 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

ColumnMeaning
chrtransform / invtransformColor shifts for character and inventory icon. The signature green color of set items comes from these.
flippyfile / invfileDrop animation / inventory icon overrides.
dropsound / dropsfxframe / usesoundAudio overrides.

Economy

ColumnMeaning
cost mult / cost addBuy/sell/repair cost modifiers.
add funcBonus distribution function (engine-internal).
diablocloneweightDClone 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:

FieldValueInterpretation
indexCiverb's WardDisplay key.
setCiverb's VestmentsParent set.
itemlrgLarge Shield base.
lvl / lvl req7 / 9Drops at ilvl ≥ 7; equips at clvl 9.
prop1 / min1 / max1ac / 15 / 15+15 defense (always active).
prop2 / min2 / max2block / 15 / 15+15% block (always active).
aprop2a / amin2a / amax2amana / 21 / 22+21–22 mana when 2 others equipped (variable roll, 3-piece tier).
aprop2b / amin2b / amax2bres-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's set column points there.
  • weapons / armoritem resolves into one of these (or Misc.txt for charms / jewels / amulets / rings).
  • itemtypes — base items inherit from itypes.
  • uniqueitems — same encoding (extended to 12 slots there).
  • itemstatcostprop* ultimately resolves to stats here via Properties.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).