ItemSet.dbc
套装定义表(套装),定义了游戏中所有装备套装。包含套装编号、各国语言名称、物品成员列表(最多10件,参考item_template.entry)、技能编号(最多8个套装技能)、触发技能(最多8个触发条件)、需要专业和需要专业等级等核心数据。CHM 详解揭示了第18列为标识(未使用),第29-35列为未知(都为0)。
文件概述
ItemSet.dbc 是装备套装系统的核心文件。根据 CHM 中文详解,每个套装由编号、多语言名称(第2-17列)、物品编号(第19-28列,最多10件,参考 item_template 表的 entry 字段)、技能编号(第36-43列,最多8个)、触发技能(第44-51列,最多8个)组成。套装需要特定件数才能触发特效(SetSpell),特效法术和触发阈值是该文件的核心数据。CHM 还特别指出第29-35列为未知(都为0),第18列为标识(未使用),第52列为需要专业,第53列为需要专业等级。
数据库对应表:world.itemset_dbc。物品通过 item_template.itemset 字段关联到套装。
列结构
| 序号 | 字段名 | 类型 | 说明 |
|---|---|---|---|
| 1 | ID | int | 编号(CHM:编号)。套装唯一ID (主键) |
| 2-17 | Name_Lang_* | varchar(100) | 名称(CHM:各国语言名称)。套装名称多语言文本(16种语言) |
| 18 | Name_Lang_Mask | int | 标识(CHM:标识,未使用)。固定值标记 |
| 19-28 | ItemID_1 ~ ItemID_10 | int | 物品编号(CHM:物品编号,最多10件,参考 item_template 表的 entry 字段)。套装成员物品ID |
| 29-35 | Unknown_Block | int | 未知(CHM:未知,都为0)。7个字段的预留块,值全部为0 |
| 36-43 | SetSpellID_1 ~ SetSpellID_8 | int | 技能编号(CHM:技能编号)。套装特效法术ID(最多8种),关联 Spell.dbc |
| 44-51 | SetThreshold_1 ~ SetThreshold_8 | int | 触发技能(CHM:触发技能)。触发对应特效需要的装备件数阈值 |
| 52 | RequiredSkill | int | 需要专业(CHM:需要专业)。所需技能ID |
| 53 | RequiredSkillRank | int | 需要专业等级(CHM:需要专业等级)。所需技能等级 |
重要字段详解
套装特效触发机制
CHM 详解指出每个特效分为"技能编号"(SetSpellID)和"触发技能"(SetThreshold)两部分:
CHM 详解指出每个特效分为"技能编号"(SetSpellID)和"触发技能"(SetThreshold)两部分:
- 技能编号(第36-43列):套装触发的具体法术ID,关联 Spell.dbc
- 触发技能(第44-51列):触发对应技能需要的装备件数阈值
- 例如:T10法师套装的4件套效果:SetThreshold = 4,装备4件时触发
- 典型的套装阈值:2件、4件、6件、8件(取决于套装大小)
- 最多可定义 8 组技能-阈值配对
SetThreshold 举例
以 T10 死亡骑士套装为例:
以 T10 死亡骑士套装为例:
| 特效 | SetSpellID | SetThreshold | 说明 |
|---|---|---|---|
| 2件套 | 70655 | 2 | 提高湮没和天灾打击的伤害 |
| 4件套 | 70656 | 4 | 提高血魄打击和心脏打击的爆击几率 |
ItemID 关联体系
- ItemSet.dbc.ItemID_* → item_template.entry(物品本身的entry,CHM 确认)
- item_template.itemset → ItemSet.dbc.ID(反向关联)
- 套装名称使用多语言字段(Name_Lang_zhCN 等)
- item_set_names 表提供集内每个物品的特定名称
未知字段块(第29-35列)
CHM 详解特别指出第29-35列为"未知,都为0"。这7个连续的0值字段可能为未来扩展预留或已弃用的字段位置。
CHM 详解特别指出第29-35列为"未知,都为0"。这7个连续的0值字段可能为未来扩展预留或已弃用的字段位置。
使用技巧
查询某套装的所有成员物品和特效:
SELECT s.Name_Lang_zhCN AS 套装名,
s.SetSpellID_1, s.SetThreshold_1,
s.SetSpellID_2, s.SetThreshold_2,
it.entry, it.name
FROM itemset_dbc s
JOIN item_template it ON it.itemset = s.ID
WHERE s.ID = 891; -- T10死亡骑士套装
创建自定义套装:
-- 1. 在 itemset_dbc 创建套装定义
INSERT INTO itemset_dbc (ID, Name_Lang_zhCN, ItemID_1, ItemID_2,
SetSpellID_1, SetThreshold_1)
VALUES (9999, '测试套装', 12345, 12346, 99999, 2);
-- 2. 更新物品关联到套装
UPDATE item_template SET itemset = 9999 WHERE entry IN (12345, 12346);
- 套装大小灵活:不必填满10个ItemID槽位(CHM指出共10件物品槽),0表示不使用
- 命名规范:使用 item_set_names 表为套装中的每件物品设置特定名称
- 阈值递增:特效应按阈值从小到大排列(2件→4件→6件)
- 验证套装:确保 ItemID 存在且物品的 itemset 字段指向正确的套装 ID