How items are defined and wired together. The master table is
item_template; every physical item in play is an
item_instance row in the characters database.
The full class table (0-15, from enum ItemClass) lives on the
item_template page together with the rest of its columns.
Field Groups of item_template
| Group | Fields | Purpose |
|---|---|---|
| Identity | entry, patch, class, subclass, name, displayid, quality/inventory |
what it is and looks like |
| Requirements | ItemLevel, RequiredLevel, RequiredSkill, RequiredSpell, RequiredReputation*, AllowedClasses? |
who can use it |
| Combat | armor, block, weapon damage fields (dmg_min1..5, dmg_type1..5, delay), stat blocks (stat_type1..10, stat_value1..10) |
combat contribution |
| Resistances | holy_res … arcane_res |
passive resists |
| Spells | spellid_1..5, spelltrigger_1..5, spellcharges_*, spellcooldown_*, spellcategory* |
on-use/on-equip effects |
| Enchant / disenchant | RandomProperty group id, DisenchantID |
see below and Loot System |
| Economy | BuyPrice, SellPrice, MaxCount, BuyCount, vendor references via npc_vendor |
trade rules |
| Loot containers | item_loot via item_loot_template |
clams etc. |
item_template.RandomProperty selects a weighted pool in
item_enchantment_template; one entry of that pool becomes
the item's random_property_id.
Column-level details (stat ids, spell triggers, bonding, and the full
flags table) live on the
item_template page.
- Vendors:
npc_vendor/npc_vendor_templatereference item entries; rows may carry a condition. - Loot: every
*_loot_template.itemmust exist here - the loader reports missing ones. - Quests:
quest_template.ReqItemId*/RewItemId*. - Forbidden items:
forbidden_itemshides items per progression patch, also filtering loot rolls. - Instances: each owned copy is an
item_instance; charges/durability live there, not in the template.
- Loot System
- Mail System - attachments