SpellDispelType.dbc
驱散类型定义表。定义游戏中所有可被驱散的魔法效果类型(魔法、诅咒、疾病、毒等)的属性,包括位掩码和免疫标志。该表共12条记录,21个字段。
文件概述
SpellDispelType.dbc 定义了游戏中所有驱散类型的属性。DBC文件头信息:12条记录,21个字段,每条记录84字节,字符串块161字节。
该表规定了每个驱散类型的基本属性:名称(如"Magic"、"Curse")、位掩码(用于DispelTypeMask位运算)、以及免疫可能性标志。驱散系统(如驱散魔法、清洁术、净化等)通过此表的位掩码来判断某个法术效果是否可以被特定驱散技能移除。
列结构
| 列号 | 字段名 | 类型 | 描述 |
|---|---|---|---|
| 1 | ID | int | 编号。驱散类型唯一标识符 |
| 2 | Name | string | 名称。驱散类型的显示名称(英文内部名称) |
| 3 | Mask | int | 位掩码。用于DispelTypeMask位运算的值,每个驱散类型占一个位 |
| 4 | ImmunityPossible | int | 免疫可能性。该类型是否允许生物/玩家获得免疫(0=不可免疫,1=可免疫) |
| 5-21 | ClassImmunityMasks | int[17] | 各职业免疫掩码。每列对应一个职业的特定免疫标志 |
驱散类型速查表
| ID | 驱散类型 | 位掩码(Mask) | 典型驱散技能 | 说明 |
|---|---|---|---|---|
| 0 | 无(None) | 0x0 | - | 不会被驱散的效果 |
| 1 | 魔法(Magic) | 0x1 | 驱散魔法(Dispel Magic) | 最常见的驱散类型,法师/牧师/萨满等可驱散 |
| 2 | 诅咒(Curse) | 0x2 | 解除诅咒(Remove Curse) | 法师/德鲁伊专属驱散 |
| 3 | 疾病(Disease) | 0x4 | 祛病术(Cure Disease) | 圣骑士/牧师专属驱散 |
| 4 | 中毒(Poison) | 0x8 | 消毒术(Cure Poison) | 德鲁伊/圣骑士/萨满可驱散 |
| 5 | 偷取(Steal) | 0x10 | 法术偷取(Spellsteal) | 法师专属偷取而非驱散 |
| 6 | 激怒(Enrage) | 0x20 | 宁神射击(Tranquilizing Shot) | 猎人专属驱散激怒效果 |
重要字段详解
Mask / 位掩码(第3列)
每个驱散类型的位掩码值,用于DispelTypeMask的位运算逻辑。当Spell.dbc中定义法术的DispelType列时,系统使用此掩码进行匹配:
- 魔法 = 0x1 (二进制: 000001)
- 诅咒 = 0x2 (二进制: 000010)
- 疾病 = 0x4 (二进制: 000100)
- 中毒 = 0x8 (二进制: 001000)
- 偷取 = 0x10 (二进制: 010000)
- 激怒 = 0x20 (二进制: 100000)
组合掩码示例:驱散魔法+诅咒 = 0x3
ImmunityPossible / 免疫可能性(第4列)
定义该驱散类型是否允许生物拥有免疫能力。例如,某些首领级生物可能免疫魔法的驱散效果,但可以被驱散诅咒。该标志控制了游戏机制中"免疫驱散"的判定逻辑。
使用技巧
驱散系统的完整工作流程
- Spell.dbc 中的法术定义了其 DispelType(引用此表的 Mask 位)
- 驱散法术(如"驱散魔法")检查目标的Buff/Debuff的 DispelType Mask
- 系统通过位运算
DispelTypeMask & DispelSpellMask != 0判断是否可驱散 - ImmunityPossible 控制生物是否可对该类型获得免疫
关联表
- Spell.dbc(Dispel字段引用Mask)——定义每个法术属于哪种驱散类型
- SpellCategory.dbc——部分驱散类型与法术分类关联