`spell_proc` 表
此表保存有关某些法术在哪些事件(或触发条件/proc)下被激活的信息。此表中的所有法术都必须带有 SPELL_AURA_PROC_TRIGGER_SPELL (42) 光环。此表中的任何条目都将覆盖法术 DBC 条目中现有的 proc 设置。
表结构
| Field | Type | Attributes | Key | Null | Default | Extra | Comment |
|---|---|---|---|---|---|---|---|
| SpellId | INT | SIGNED | PRI | NO | 0 | Unique | |
| SchoolMask | TINYINT | UNSIGNED | NO | 0 | |||
| SpellFamilyName | SMALLINT | UNSIGNED | NO | 0 | |||
| SpellFamilyMask0 | INT | UNSIGNED | NO | 0 | |||
| SpellFamilyMask1 | INT | UNSIGNED | NO | 0 | |||
| SpellFamilyMask2 | INT | UNSIGNED | NO | 0 | |||
| ProcFlags | INT | UNSIGNED | NO | 0 | |||
| SpellTypeMask | INT | UNSIGNED | NO | 0 | |||
| SpellPhaseMask | INT | UNSIGNED | NO | 0 | |||
| HitMask | INT | UNSIGNED | NO | 0 | |||
| AttributesMask | INT | UNSIGNED | NO | 0 | |||
| DisableEffectsMask | INT | UNSIGNED | NO | 0 | |||
| ProcsPerMinute | FLOAT | NO | 0 | ||||
| Chance | FLOAT | NO | 0 | ||||
| Cooldown | INT | UNSIGNED | NO | 0 | |||
| Charges | TINYINT | UNSIGNED | NO | 0 |
字段说明
能够在某事件上触发(proc)的法术 ID。(对于有层级的法术可以使用负数 spellId)
此字段包含一个位掩码,用于控制可以在哪些类型的法术上触发 proc。例如,某个光环只在其被施加的单位被暗影法术命中时才触发(法术 34914)。要组合多种法术学派,只需将位值相加。
| School ID | Bit | Name |
|---|---|---|
| 0 | 1 | Physical |
| 1 | 2 | Holy |
| 2 | 4 | Fire |
| 3 | 8 | Nature |
| 4 | 16 | Frost |
| 5 | 32 | Shadow |
| 6 | 64 | Arcane |
此字段控制具有何种法术前缀(family name)的法术可以触发该被触发的法术。
| ID | Family Name |
|---|---|
| 0 | Generic |
| 3 | Mage |
| 4 | Warrior |
| 5 | Warlock |
| 6 | Priest |
| 7 | Druid |
| 8 | Rogue |
| 9 | Hunter |
| 10 | Paladin |
| 11 | Shaman |
| 13 | Potion |
| 15 | Death Knight |
| 53 | Monk |
| 107 | Demon Hunter |
此字段控制具有哪些法术家族标志(family flags)的法术可以触发该被触发的法术。
field-no-description|5
field-no-description|6
如果非零,则用于覆盖 DBC 中法术原有的 ProcFlags。
一个位掩码,控制哪些事件会触发该法术。要组合可能的事件,请将各 proc 位相加。
示例: 32+64=96 (PROC_FLAG_TAKEN_MELEE_SPELL_HIT + PROC_FLAG_SUCCESSFUL_RANGED_HIT)
| Event | Flag | Bit value | Comment |
|---|---|---|---|
| PROC_FLAG_NONE | 0 | 0x00000000 | |
| PROC_FLAG_KILLED | 1 | 0x00000001 | 被攻击者击杀 |
| PROC_FLAG_KILL_AND_GET_XP | 2 | 0x00000002 | 击杀可获得经验或荣誉 |
| PROC_FLAG_SUCCESSFUL_MELEE_HIT | 4 | 0x00000004 | 近战攻击命中成功 |
| PROC_FLAG_TAKEN_MELEE_HIT | 8 | 0x00000008 | 受到近战命中造成的伤害 |
| PROC_FLAG_SUCCESSFUL_MELEE_SPELL_HIT | 16 | 0x00000010 | 使用近战武器的法术攻击成功 |
| PROC_FLAG_TAKEN_MELEE_SPELL_HIT | 32 | 0x00000020 | 受到使用近战武器的法术造成的伤害 |
| PROC_FLAG_SUCCESSFUL_RANGED_HIT | 64 | 0x00000040 | 远程攻击命中成功 |
| PROC_FLAG_TAKEN_RANGED_HIT | 128 | 0x00000080 | 受到远程攻击命中造成的伤害 |
| PROC_FLAG_SUCCESSFUL_RANGED_SPELL_HIT | 256 | 0x00000100 | 使用远程武器的法术远程攻击成功 |
| PROC_FLAG_TAKEN_RANGED_SPELL_HIT | 512 | 0x00000200 | 受到使用远程武器的法术造成的伤害 |
| PROC_FLAG_SUCCESSFUL_POSITIVE_AOE_HIT | 1024 | 0x00000400 | AoE 法术命中成功(不能 100% 确定是否未使用) |
| PROC_FLAG_TAKEN_POSITIVE_AOE | 2048 | 0x00000800 | 受到增益性 AoE 法术命中(不能 100% 确定是否未使用) |
| PROC_FLAG_SUCCESSFUL_AOE_SPELL_HIT | 4096 | 0x00001000 | AoE 伤害法术命中成功(不能 100% 确定是否未使用) |
| PROC_FLAG_TAKEN_AOE_SPELL_HIT | 8192 | 0x00002000 | 受到 AoE 伤害法术命中(不能 100% 确定是否未使用) |
| PROC_FLAG_SUCCESSFUL_POSITIVE_SPELL | 16384 | 0x00004000 | 增益性法术施放成功(默认仅在治疗时) |
| PROC_FLAG_TAKEN_POSITIVE_SPELL | 32768 | 0x00008000 | 受到增益性法术命中(默认仅在治疗时) |
| PROC_FLAG_SUCCESSFUL_NEGATIVE_SPELL_HIT | 65536 | 0x00010000 | 伤害性法术施放成功(默认仅在造成伤害时) |
| PROC_FLAG_TAKEN_NEGATIVE_SPELL_HIT | 131072 | 0x00020000 | 受到伤害性法术命中(默认仅在造成伤害时) |
| PROC_FLAG_DONE_PERIODIC | 262144 | 0x00040000 | 造成的周期性伤害/治疗,由标志 14-17 决定 |
| PROC_FLAG_TAKEN_PERIODIC | 524288 | 0x00080000 | 受到的周期性伤害/治疗,由标志 14-17 决定 |
| PROC_FLAG_TAKEN_ANY_DAMAGE | 1048576 | 0x00100000 | 受到任何伤害 |
| PROC_FLAG_ON_TRAP_ACTIVATION | 2097152 | 0x00200000 | 陷阱激活时 |
| PROC_FLAG_TAKEN_OFFHAND_HIT | 4194304 | 0x00400000 | 受到的副手近战攻击(未使用) |
| PROC_FLAG_SUCCESSFUL_OFFHAND_HIT | 8388608 | 0x00800000 | 副手近战攻击成功 |
| PROC_FLAG_DEATH | 16777216 | 0x01000000 | 以任何方式死亡 |
用于选择哪些类型的法术可以触发该 proc,要组合多种类型,只需将位值相加。
| Event | Flag | Bit | Comment |
|---|---|---|---|
| PROC_SPELL_TYPE_NONE | 0 | 0x00000000 | |
| PROC_SPELL_TYPE_DAMAGE | 1 | 0x00000001 | 仅伤害性法术 |
| PROC_SPELL_TYPE_HEAL | 2 | 0x00000002 | 仅治疗法术 |
| PROC_SPELL_TYPE_NO_DMG_HEAL | 4 | 0x00000004 | 所有其他法术 |
| PROC_SPELL_TYPE_MASK_ALL | 7 | 0x00000007 | 所有掩码的组合 |
法术在哪个阶段可以触发该 proc。通常同时使用其中一个,但也可以组合使用。
| Event | Flag | Bit | Comment |
|---|---|---|---|
| PROC_SPELL_PHASE_NONE | 0 | 0x00000000 | |
| PROC_SPELL_PHASE_CAST | 1 | 0x00000001 | 当法术刚刚施放完成时触发 |
| PROC_SPELL_PHASE_HIT | 2 | 0x00000002 | 当法术命中其目标时触发 |
| PROC_SPELL_PHASE_FINISH | 4 | 0x00000004 | 当法术对所有目标完成所有效果之后触发 |
| PROC_SPELL_PHASE_MASK_ALL | 7 | 0x00000007 | 所有掩码的组合 |
用于为法术添加特殊条件,例如某些法术可能只在暴击时触发。
| Event | Flag | Bit | Comment |
|---|---|---|---|
| PROC_HIT_NONE | 0 | 0x00000000 | (特殊,见脚注) |
| PROC_HIT_NORMAL | 1 | 0x00000001 | 仅非暴击命中 |
| PROC_HIT_CRITICAL | 2 | 0x00000002 | 仅暴击命中 |
| PROC_HIT_MISS | 4 | 0x00000004 | 顾名思义 |
| PROC_HIT_FULL_RESIST | 8 | 0x00000008 | 仅在完全抵抗时(无部分抵抗) |
| PROC_HIT_DODGE | 16 | 0x00000010 | 顾名思义 |
| PROC_HIT_PARRY | 32 | 0x00000020 | 顾名思义 |
| PROC_HIT_BLOCK | 64 | 0x00000040 | 部分或完全格挡 |
| PROC_HIT_EVADE | 128 | 0x00000080 | 顾名思义 |
| PROC_HIT_IMMUNE | 256 | 0x00000100 | 顾名思义 |
| PROC_HIT_DEFLECT | 512 | 0x00000200 | 顾名思义 |
| PROC_HIT_ABSORB | 1024 | 0x00000400 | 部分或完全吸收 |
| PROC_HIT_REFLECT | 2048 | 0x00000800 | 顾名思义 |
| PROC_HIT_INTERRUPT | 4096 | 0x00001000 | (目前未使用) |
| PROC_HIT_FULL_BLOCK | 8192 | 0x00002000 | 仅在完全格挡时 |
| PROC_HIT_MASK_ALL | 12287 | 0x00002FFF | 所有掩码的组合 |
PROC_HIT_NONE 将在以下情况触发:
为 proc 添加特殊行为,只有在满足这些条件时法术才能触发 proc。
| Event | Flag | Bit | Comment |
|---|---|---|---|
| PROC_ATTR_REQ_EXP_OR_HONOR | 1 | 0x0000001 | 要求触发目标给予经验或荣誉,光环才能触发 proc |
| PROC_ATTR_TRIGGERED_CAN_PROC | 2 | 0x0000002 | 即使是被触发的法术(triggered spells)也能使光环触发 proc |
| PROC_ATTR_REQ_MANA_COST | 4 | 0x0000004 | 要求触发法术有法力消耗,光环才能触发 proc |
| PROC_ATTR_REQ_SPELLMOD | 8 | 0x0000008 | 要求触发法术受触发 proc 的光环影响,才会消耗层数 |
| PROC_ATTR_USE_STACKS_FOR_CHARGES | 16 | 0x0000010 | 消耗 proc 时从触发 proc 的光环上减少一层叠加,而不是减少充能数 |
| PROC_ATTR_REDUCE_PROC_60 | 128 | 0x0000080 | 如果触发 proc 的角色等级 > 60,光环应有更低的触发概率 |
| PROC_ATTR_CANT_PROC_FROM_ITEM_CAST | 256 | 0x0000100 | 如果 proc 是由物品施放的法术引起,则不允许光环触发 proc |
用于显式禁用特定光环效果触发 proc 的位掩码。这允许对多效果光环的哪些效果可以触发 proc 进行细粒度控制。
| Effect | Flag | Comment |
|---|---|---|
| 0 | 1 | 禁用光环 proc 效果 0 |
| 1 | 2 | 禁用光环 proc 效果 1 |
| 2 | 4 | 禁用光环 proc 效果 2 |
如果非零,此字段控制该法术每分钟应触发的次数。你不应同时设置 ProcsPerMinute 和 Chance;在这种情况下,ProcsPerMinute 优先。
如果非零,表示法术触发的概率。如果 ProcsPerMinute 和 Chance 都留为零,则采用 DBC 中的 ProcChance。
定义该法术的隐藏冷却时间,以毫秒为单位。也称为 proc 的内部冷却时间,或 ICD。
值必须 >=0。如果该值不满足条件,SQL 将在 spell_proc_chk_1 上失败。
如果非零,则覆盖可供触发 proc 的光环充能次数。否则该值取自 DBC。