CreatureType.dbc
生物类型定义表(生物类型),定义游戏中的生物分类体系。根据 CHM 中文详解,该表共有 19 列:编号(1)、多语言名称(16列,第2-17列)、标识(第18列,一般都为 16712190)、无经验标识(第19列,1=小动物/非战斗宠物/气体云雾,0=其他)。
文件概述
CreatureType.dbc 定义了魔兽世界中的生物类型分类。每个生物在 creature_template 中都有一个 unit_class(CreatureType)字段,决定它属于哪种类型。生物类型影响许多游戏机制,包括:控制类法术的生效条件、猎人可驯服对象、特定技能的伤害加成等。根据 CHM 中文详解,该文件结构简洁:第1列为编号,第2-17列为各国语言的名称,第18列为标识(一般都为 16712190),第19列为无经验标识。
列结构
| 列号 | 字段名 | 类型 | 描述 |
|---|---|---|---|
| 1 | ID | int | 编号(CHM:编号)。类型唯一标识符。1=野兽 2=龙类 3=恶魔 4=元素 5=巨人 6=亡灵 7=人形 8=小动物 9=机械 10=未指定 11=图腾 12=非战斗宠物 13=气体云雾 |
| 2-17 | Name_Lang_* | varchar(100) | 名称(CHM:名称,共16列)。16种语言的生物类型名称(enUS, enGB, koKR, frFR, deDE, enCN, zhCN, enTW, zhTW, esES, esMX, ruRU, ptPT, ptBR, itIT, Unk) |
| 18 | Flags | int | 标识(CHM:标识,一般都为 16712190)。固定标识值,具体用途待研究 |
| 19 | NoExperience | int | 无经验(CHM:无经验,1=小动物、非战斗宠物和气体云雾,0=其他)。击杀是否无经验 |
生物类型速查
| ID | 名称 | 说明 | NoExperience | 可驯服 |
|---|---|---|---|---|
| 1 | Beast(野兽) | 野生动物、普通怪物 | 0 | 是 |
| 2 | Dragonkin(龙类) | 龙、龙人、幼龙等 | 0 | 否 |
| 3 | Demon(恶魔) | 恶魔生物 | 0 | 是(术士) |
| 4 | Elemental(元素) | 元素生物 | 0 | 否 |
| 5 | Giant(巨人) | 巨人类生物 | 0 | 否 |
| 6 | Undead(亡灵) | 亡灵/不死族 | 0 | 是(特定) |
| 7 | Humanoid(人形) | 人形生物 | 0 | 否 |
| 8 | Critter(小动物) | 环境小动物 | 1 | 否 |
| 9 | Mechanical(机械) | 机械/构造体 | 0 | 否 |
| 10 | Not specified | 未指定类型 | 0 | 否 |
| 11 | Totem(图腾) | 萨满图腾类 | 0 | 否 |
| 12 | Non-Combat Pet | 非战斗宠物 | 1 | 否 |
| 13 | Gas Cloud(气体云) | 气体形态生物 | 1 | 否 |
重要字段详解
类型对游戏机制的影响
- 控制法术:牧师的控制亡灵只对 Undead(6) 类型生效;术士的放逐只对 Demon(3) 和 Elemental(4) 生效
- 驯服:猎人的驯服野兽只对 Beast(1) 类型生效
- 追踪:小地图追踪技能按类型分类(追踪人形、追踪亡灵等)
- 武器/技能加成:某些武器和技能对特定类型有额外伤害(如屠魔对恶魔)
- 剥皮:剥皮技能只适用于部分 Beast(1) 和 Dragonkin(2) 类型
NoExperience(无经验)
CHM 详解明确说明:1=小动物、非战斗宠物和气体云雾,0=其他。控制击杀该类型生物是否获得经验值:
- 0 正常获得经验值(野兽、龙类、恶魔、元素等常规战斗生物)
- 1 不获得经验值(小动物、非战斗宠物、气体云雾——环境非战斗实体)
标识字段(Flags,第18列)
CHM 详解指出该字段"一般都为 16712190",是一个固定值标识。该值在大多数版本的 CreatureType.dbc 中保持不变,可能用于客户端校验或版本标记。
多语言名称结构(第2-17列)
CHM 详解显示第2-17列为16种语言的名称字段,覆盖了魔兽世界支持的全部语言区域。16种语言顺序为:enUS(英语-美国)、enGB(英语-英国)、koKR(韩语)、frFR(法语)、deDE(德语)、enCN(英语-简体中文)、zhCN(简体中文)、enTW(英语-繁体中文)、zhTW(繁体中文)、esES(西班牙语)、esMX(西班牙语-墨西哥)、ruRU(俄语)、ptPT(葡萄牙语)、ptBR(葡萄牙语-巴西)、itIT(意大利语)、Unk(未知/保留)。
使用技巧
统计某地图中各类型生物数量:
SELECT ct.Name_Lang_zhCN AS 生物类型, COUNT(*) AS 数量
FROM creature_template t
JOIN creaturetype_dbc ct ON t.unit_class = ct.ID
WHERE t.map = 0
GROUP BY ct.Name_Lang_zhCN;
查询所有无经验的生物类型(CHM定义):
SELECT ID, Name_Lang_zhCN AS 类型名称, NoExperience AS 无经验
FROM creaturetype_dbc
WHERE NoExperience = 1; -- 1=小动物、非战斗宠物、气体云雾