Items

belts

Belt-category UI definitions — the table that answers "how many potions does each belt hold?". 15 rows defining the potion-grid layout (4, 8, 12, or 16 slots) and per-column auto-fill defaults for each belt category.

The 15-row table that drives the belt's potion grid at the bottom of the HUD. Every belt base in armor.txt resolves through this table (via the armor.belt integer column, which is a row index here) to determine how many potions the belt holds, where each potion icon renders, and what the auto-fill button puts in each column by default.

74 columns total — 1 name, 1 capacity (numboxes), 64 per-slot pixel coordinates (4 numbers × 16 slots), and 8 auto-fill defaults (4 item-type/item-code pairs).

The single most-asked question — slot counts per belt category

SlotsBelt categoryarmor.txt bases
4default (no belt equipped)— (the no-belt state)
8sash, light beltSash (lbl), Light Belt (vbl)
12belt, heavy beltBelt (mbl), Heavy Belt (tbl)
16girdle, uber beltPlated Belt (hbl); all exceptional/elite belts (War, Mesh, Demonhide Sash, Sharkskin, Battle); all unique-tier belts (Colossus Girdle, Spiderweb Sash, Mithril Coil, Troll, Vampirefang)

Plated Belt jumps from 12 to 16 — that's the single tier-up in the normal-quality belt progression. Everything in the exceptional and elite tier inherits the uber belt (16 slots) category.

How armor.txt belt maps to belts.txt rows

armor.txt carries an integer belt column on each belt base (0–6). That integer is the row index into this table:

armor.belt valuebelts.txt rownumboxes
0belt12
1sash8
(2)default4 (not assigned to any belt — represents no-belt state)
3girdle16
4light belt8
5heavy belt12
6uber belt16

This indirection is why every Plated Belt and every elite/unique belt shares the same 16-slot capacity — they all carry armor.belt=3 (Plated Belt → girdle) or armor.belt=6 (everything else → uber belt).

Locbones coverage

Documented at locbones D2R Data Guide § Belts.txt. The columns listed there are name, numboxes, the per-box pixel coordinates, and the auto-fill defaults — matching the 74-column file exactly.

Columns

Identity and capacity

ColumnMeaning
nameBelt-category reference name. The set is closed: belt, sash, default, girdle, light belt, heavy belt, uber belt, plus an Expansion sentinel and a mirror of all 7 with a 2 suffix (used at a different HUD position).
numboxesNumber of potion slots. Always 4, 8, 12, or 16.

Per-slot pixel coordinates

Column patternMeaning
box1left, box1right, box1top, box1bottombox16left/right/top/bottomPixel coordinates of each potion icon on the HUD. Used for rendering only; mathematically the grid is always 4-wide and (numboxes/4)-tall.

The bottom row of potions (the always-keybound row) anchors at box1top=442, box1bottom=471. Higher rows are 32 px above each: row 2 at top=410, row 3 at top=378, row 4 at top=346.

Auto-fill defaults

The four defaultItemType / defaultItemCode pairs drive the auto-fill button: when clicked, the engine puts these item types into each visible column.

ColumnAlways equalsMeaning
defaultItemTypeCol1hpotColumn 1: healing potion.
defaultItemTypeCol2mpotColumn 2: mana potion.
defaultItemTypeCol3rpotColumn 3: rejuvenation potion.
defaultItemTypeCol4scroColumn 4: scroll (any).
defaultItemCodeCol4tscColumn 4 specifically defaults to Town Portal Scrolls.
defaultItemCodeCol1 / defaultItemCodeCol2 / defaultItemCodeCol3(blank)Generic — auto-fill picks any potion of the typed kind.

The defaultItemCodeCol4=tsc is the only specific item-code default — auto-fill prefers TP scrolls over Identify scrolls in column 4.

Why the table has 15 rows for 7 categories

The 15 rows split into:

  • 7 primary rows (rows 0–6): the actual belt categories that armor.txt references.
  • 1 Expansion sentinel (row 7): blank-data marker separating Classic and Expansion rows in the .txt source.
  • 7 mirror rows (rows 8–14, suffixed 2): same categories with different pixel coordinates, used for the inventory-tab belt grid that renders at a separate HUD position when the inventory pane is open.

Only the primary rows are referenced by armor.belt. The mirrors are looked up by the engine when rendering the inventory's belt-on-character display.

Cross-references

  • armorbelt column references this table by positional row index. Every belt base's potion capacity is belts[armor.belt].numboxes.
  • misc — potion items (hpot, mpot, rpot) and scroll items (scro, tsc) the auto-fill defaults reference.