📖 表说明
法术触发事件表定义了法术触发的具体条件和参数。这个表补充了spell_proc表,提供更详细的触发条件控制,包括法术类型、触发标志、触发几率等。
数据来源: 本文档基于AzerothCore官方Wiki和官方数据表借鉴.sql编写。
📊 表结构
| 字段名 | 数据类型 | 属性 | 键 | 默认值 | 描述 |
|---|---|---|---|---|---|
| entry | int | 不为空 | 主键 | 0 | 法术ID,对应Spell.dbc |
| SchoolMask | tinyint | 不为空 | 0 | 法术学派掩码 | |
| SpellFamilyName | smallint UNSIGNED | 不为空 | 0 | 法术家族名称 | |
| SpellFamilyMask0 | int UNSIGNED | 不为空 | 0 | 法术家族掩码0 | |
| SpellFamilyMask1 | int UNSIGNED | 不为空 | 0 | 法术家族掩码1 | |
| SpellFamilyMask2 | int UNSIGNED | 不为空 | 0 | 法术家族掩码2 | |
| procFlags | int UNSIGNED | 不为空 | 0 | 触发标志 | |
| procEx | int UNSIGNED | 不为空 | 0 | 扩展触发标志 | |
| procPhase | int UNSIGNED | 不为空 | 0 | 触发阶段 | |
| ppmRate | float | 不为空 | 0 | 每分钟触发次数 | |
| CustomChance | float | 不为空 | 0 | 自定义触发几率 | |
| Cooldown | int UNSIGNED | 不为空 | 0 | 冷却时间(毫秒) |
主键: entry
🔑 核心字段详解
🆔 entry - 法术ID
详细说明:触发法术的ID,对应Spell.dbc文件中的法术记录。
取值范围:对应Spell.dbc中的法术ID
- 主键字段,标识触发法术
- 对应Spell.dbc中的法术ID
- 用于定义法术的触发条件
- 与spell_proc表配合使用
示例:
- entry=12345 - 特定触发法术
⚡ procFlags - 触发标志
详细说明:定义法术触发的条件和时机。
取值范围:位掩码值(整数)
- 定义法术何时触发
- 例如:攻击时触发、被攻击时触发等
- 使用位掩码组合多个触发条件
- 与procEx配合使用
示例:
- procFlags=0x00000001 - 攻击时触发
- procFlags=0x00000002 - 被攻击时触发
📊 ppmRate - 每分钟触发次数
详细说明:定义法术每分钟的平均触发次数。
取值范围:浮点数,通常为0-10
- 定义法术的平均触发频率
- 值为0表示不使用PPM机制
- 值为1表示每分钟平均触发1次
- 用于平衡触发法术的频率
示例:
- ppmRate=1 - 每分钟平均触发1次
- ppmRate=3 - 每分钟平均触发3次
其他字段说明
SchoolMask: 法术学派掩码,定义触发法术的学派类型。
SpellFamilyName/Mask: 法术家族相关字段,用于定义法术的家族分类。
procEx: 扩展触发标志,提供更详细的触发条件控制。
CustomChance: 自定义触发几率(百分比),覆盖默认几率。
Cooldown: 触发冷却时间(毫秒),防止连续触发。
💡 实际案例
触发 攻击触发配置
配置法术在攻击时触发
-- 攻击触发配置
DELETE FROM spell_proc_event WHERE entry = 12345;
INSERT INTO spell_proc_event VALUES
(12345, 0, 0, 0, 0, 0, 1, 0, 0, 1.0, 0, 0);
效果: 法术12345在攻击时触发,每分钟平均触发1次。
🔗 相关表格
- spell_proc - 法术触发表
- spell_dbc - 法术数据表