字段介绍
- 这个表格包含了某些法术被激活的事件(或过程)信息
- 此表中的所有法术都必须具有 SPELL_AURA_PROC_TRIGGER_SPELL(42)光环
- 此表中的任何条目都将覆盖该法术的 DBC 条目中的触发设置
spell_proc
- SpellId
- 在事件中触发的法术 ID(对法术链的法术应使用等级为1的 - SpellID)
- SchoolMask
- 这个字段控制什么类型的法术可以触发这个效果。例如,只有当该法术的施放目标被暗影法术(法术34914)击中时才会触发
-
取值参考源码 SharedDefines.h 的 SpellSchoolMask 定义
- 此值为位掩码,要应用多个,只需将他们相加
Value | Mask | Comment | Name |
---|---|---|---|
1 | 0x01 | 普通伤害 | SPELL_SCHOOL_NORMAL |
2 | 0x02 | 神圣伤害 | SPELL_SCHOOL_HOLY |
4 | 0x04 | 火焰伤害 | SPELL_SCHOOL_FIRE |
8 | 0x08 | 自然伤害 | SPELL_SCHOOL_NATURE |
16 | 0x10 | 冰霜伤害 | SPELL_SCHOOL_FROST |
32 | 0x20 | 暗影伤害 | SPELL_SCHOOL_SHADOW |
64 | 0x40 | 奥术伤害 | SPELL_SCHOOL_ARCANE |
- SpellFamilyName
- 这个字段控制哪些类别的法术可以触发被触发的法术
- 取值参考源码 SharedDefines.h 的 SpellFamilyNames 定义
ID | Name | Comment | Comment |
---|---|---|---|
0 | SPELLFAMILY_GENERIC | 普通 | Generic |
1 | SPELLFAMILY_UNK1 | 事件、假日等 | Unk1 - events, holidays, ... |
3 | SPELLFAMILY_MAGE | 法师 | Mage |
4 | SPELLFAMILY_WARRIOR | 战士 | Warrior |
5 | SPELLFAMILY_WARLOCK | 术士 | Warlock |
6 | SPELLFAMILY_PRIEST | 牧师 | Priest |
7 | SPELLFAMILY_DRUID | 德鲁伊 | Druid |
8 | SPELLFAMILY_ROGUE | 盗贼 | Rogue |
9 | SPELLFAMILY_HUNTER | 猎人 | Hunter |
10 | SPELLFAMILY_PALADIN | 骑士 | Paladin |
11 | SPELLFAMILY_SHAMAN | 萨满 | Shaman |
12 | SPELLFAMILY_UNK2 | Unk2 - Silence resistance? | |
13 | SPELLFAMILY_POTION | 药剂 | Potion |
15 | SPELLFAMILY_DEATHKNIGHT | 死亡骑士 | Death Knight |
17 | SPELLFAMILY_PET | 宠物 | Pet |
50 | SPELLFAMILY_TOTEMS | 图腾 | Totems |
53 | SPELLFAMILY_MONK | 武僧 | Monk |
57 | SPELLFAMILY_WARLOCK_PET | WarLock Pet | |
66 | SPELLFAMILY_UNK66 | ||
71 | SPELLFAMILY_UNK71 | ||
78 | SPELLFAMILY_UNK78 | ||
91 | SPELLFAMILY_UNK91 | ||
100 | SPELLFAMILY_UNK100 | ||
107 | SPELLFAMILY_DEMON_HUNTER | 恶魔猎手 | Demon Hunter |
224 | SPELLFAMILY_EVOKER | 唤魔师 | Evoker |
- SpellFamilyMask[0-2]
- 这个字段控制哪些法术的 family flags 可以触发被触发的法术
-
取值参考源码 SpellMgr.h 的 SpellFamilyFlag 定义
SpellFamilyFlag | Mask | Value | Comment |
SPELLFAMILYFLAG_ROGUE_VANISH | 0x00000800 | 2048 | Rogue(Vanish) |
SPELLFAMILYFLAG_ROGUE_VAN_EVAS_SPRINT | 0x00000860 | 2144 | Rogue(Vanish, Evasion, Sprint) |
SPELLFAMILYFLAG1_ROGUE_COLDB_SHADOWSTEP | 0x00000240 | 576 | Rogue(Cold Blood, Shadowstep) |
SPELLFAMILYFLAG_ROGUE_KICK | 0x00000010 | 16 | Rogue(Kick) |
SPELLFAMILYFLAG1_ROGUE_DISMANTLE | 0x00100000 | 1048576 | Rogue(Dismantle) |
SPELLFAMILYFLAG_ROGUE_BLADE_FLURRY | 0x40000000 | 1073741824 | Rogue(Blade Flurry) |
SPELLFAMILYFLAG1_ROGUE_BLADE_FLURRY | 0x00000800 | 2048 | Rogue(Blade Flurry) |
SPELLFAMILYFLAG_WARRIOR_CHARGE | 0x00000001 | 1 | Warrior(Charge) |
SPELLFAMILYFLAG_WARRIOR_SLAM | 0x00200000 | 2097152 | Warrior(Slam) |
SPELLFAMILYFLAG_WARRIOR_EXECUTE | 0x20000000 | 536870912 | Warrior(Execute) |
SPELLFAMILYFLAG_WARRIOR_CONCUSSION_BLOW | 0x04000000 | 67108864 | Warrior(Concussion,Blow) |
SPELLFAMILYFLAG_WARLOCK_LIFETAP | 0x00040000 | 262144 | Warlock(Lifetap) |
SPELLFAMILYFLAG1_HUNTER_EXPLOSIVE_SHOT | 0x80000000 | 2147483648 | Hunter(Explosive Shot) |
SPELLFAMILYFLAG2_DRUID_STARFALL | 0x00000100 | 256 | Druid(Starfall) |
SPELLFAMILYFLAG1_PALADIN_DIVINESTORM | 0x00020000 | 131072 | Paladin(Divinestorm) |
SPELLFAMILYFLAG_SHAMAN_FROST_SHOCK | 0x80000000 | 2147483648 | Shaman(Frost Shock) |
SPELLFAMILYFLAG_SHAMAN_HEALING_STREAM | 0x00002000 | 8192 | Shaman(Healing Steam) |
SPELLFAMILYFLAG_SHAMAN_MANA_SPRING | 0x00004000 | 16384 | Shaman(Mana Spring) |
SPELLFAMILYFLAG2_SHAMAN_LAVA_LASH | 0x00000004 | 4 | Shaman(Lava Lash) |
SPELLFAMILYFLAG_SHAMAN_FIRE_NOVA | 0x28000000 | 671088640 | Shaman(Fire Nava) |
SPELLFAMILYFLAG_SHAMAN_TOTEM_EFFECTS | 0x04000000 | 67108864 | Shaman(Totem Effects) |
SPELLFAMILYFLAG_DK_DEATH_STRIKE | 0x00000010 | 16 | Deathknight(Death Strike) |
SPELLFAMILYFLAG_DK_DEATH_COIL | 0x00002000 | 8192 | Deathknight(Death Coil) |
- ProcFlags
- 取值参考源码 SpellMgr.h 的 ProcFlags 定义
- 如果非零,将覆盖 DBC | DB2 中的原始法术 ProcFlags
- 此值为位掩码,要应用多个,只需将他们相加
Value | Flag | Name | Comment |
---|---|---|---|
1 | 0x00000001 | PROC_FLAG_KILLED | 00 Killed by agressor - not sure about this flag |
2 | 0x00000002 | PROC_FLAG_KILL | 01 Kill target (in most cases need XP/Honor reward) |
4 | 0x00000004 | PROC_FLAG_DONE_MELEE_AUTO_ATTACK | 02 Done melee auto attack |
8 | 0x00000008 | PROC_FLAG_TAKEN_MELEE_AUTO_ATTACK | 03 Taken melee auto attack |
16 | 0x00000010 | PROC_FLAG_DONE_SPELL_MELEE_DMG_CLASS | 04 Done attack by Spell that has dmg class melee |
32 | 0x00000020 | PROC_FLAG_TAKEN_SPELL_MELEE_DMG_CLASS | 05 Taken attack by Spell that has dmg class melee |
64 | 0x00000040 | PROC_FLAG_DONE_RANGED_AUTO_ATTACK | 06 Done ranged auto attack |
128 | 0x00000080 | PROC_FLAG_TAKEN_RANGED_AUTO_ATTACK | 07 Taken ranged auto attack |
256 | 0x00000100 | PROC_FLAG_DONE_SPELL_RANGED_DMG_CLASS | 08 Done attack by Spell that has dmg class ranged |
512 | 0x00000200 | PROC_FLAG_TAKEN_SPELL_RANGED_DMG_CLASS | 09 Taken attack by Spell that has dmg class ranged |
1024 | 0x00000400 | PROC_FLAG_DONE_SPELL_NONE_DMG_CLASS_POS | 10 Done positive spell that has dmg class none |
2048 | 0x00000800 | PROC_FLAG_TAKEN_SPELL_NONE_DMG_CLASS_POS | 11 Taken positive spell that has dmg class none |
4096 | 0x00001000 | PROC_FLAG_DONE_SPELL_NONE_DMG_CLASS_NEG | 12 Done negative spell that has dmg class none |
8192 | 0x00002000 | PROC_FLAG_TAKEN_SPELL_NONE_DMG_CLASS_NEG | 13 Taken negative spell that has dmg class none |
16384 | 0x00004000 | PROC_FLAG_DONE_SPELL_MAGIC_DMG_CLASS_POS | 14 Done positive spell that has dmg class magic |
32768 | 0x00008000 | PROC_FLAG_TAKEN_SPELL_MAGIC_DMG_CLASS_POS | 15 Taken positive spell that has dmg class magic |
65536 | 0x00010000 | PROC_FLAG_DONE_SPELL_MAGIC_DMG_CLASS_NEG | 16 Done negative spell that has dmg class magic |
131072 | 0x00020000 | PROC_FLAG_TAKEN_SPELL_MAGIC_DMG_CLASS_NEG | 17 Taken negative spell that has dmg class magic |
262144 | 0x00040000 | PROC_FLAG_DONE_PERIODIC | 18 Successful do periodic (damage / healing) |
524288 | 0x00080000 | PROC_FLAG_TAKEN_PERIODIC | 19 Taken spell periodic (damage / healing) |
1048576 | 0x00100000 | PROC_FLAG_TAKEN_DAMAGE | 20 Taken any damage |
2097152 | 0x00200000 | PROC_FLAG_DONE_TRAP_ACTIVATION | 21 On trap activation (possibly needs name change to ON_GAMEOBJECT_CAST or USE) |
4194304 | 0x00400000 | PROC_FLAG_DONE_MAINHAND_ATTACK | 22 Done main-hand melee attacks (spell and autoattack) |
8388608 | 0x00800000 | PROC_FLAG_DONE_OFFHAND_ATTACK | 23 Done off-hand melee attacks (spell and autoattack) |
16777216 | 0x01000000 | PROC_FLAG_DEATH | 24 Died in any way |
204 | 0x000000CC | AUTO_ATTACK_PROC_FLAG_MASK | Any auto attack |
12582972 | 0x00C0003C | MELEE_PROC_FLAG_MASK | Any melee attack |
960 | 0x000003C0 | RANGED_PROC_FLAG_MASK | Any ranged attack |
3145712 | 0x002FFFF0 | SPELL_PROC_FLAG_MASK | Any spell attack |
15029588 | 0x00E55554 | DONE_HIT_PROC_FLAG_MASK | Any dealt attack |
1747624 | 0x001AAAA8 | TAKEN_HIT_PROC_FLAG_MASK | Any taken attack |
2446672 | 0x00255550 | REQ_SPELL_PHASE_PROC_FLAG_MASK |
- SpellTypeMask
- 这个字段控制什么类型的法术可以触发
- 取值参考源码 SpellMgr.h 的 ProcFlagsSpellType 定义
- 此值为位掩码,要应用多个,只需将他们相加
Value | Flag | Name | Comment |
---|---|---|---|
0 | 0x00 | PROC_SPELL_TYPE_NONE | 无 |
1 | 0x01 | PROC_SPELL_TYPE_DAMAGE | 仅伤害类法术 |
2 | 0x02 | PROC_SPELL_TYPE_HEAL | 仅治疗类法术 |
4 | 0x04 | PROC_SPELL_TYPE_NO_DMG_HEAL | 所有其他法术 |
- SpellPhaseMask
- 这个字段控制在哪个阶段法术可以触发触发效果
- 取值参考源码 SpellMgr.h 的 ProcFlagsSpellPhase 定义
- 此值为位掩码,要应用多个,只需将他们相加
Value | Flag | Name | Comment |
---|---|---|---|
1 | 0x01 | PROC_SPELL_PHASE_CAST | 法术施放完毕时触发 |
2 | 0x02 | PROC_SPELL_PHASE_HIT | 法术击中目标时触发 |
4 | 0x04 | PROC_SPELL_PHASE_FINISH | 在法术对所有目标产生所有效果后触发 |
- HitMask
- 用于为法术添加特殊条件,例如,要求法术仅在触发致命一击时触发
- 取值参考源码 SpellMgr.h 的 ProcFlagsHit 定义
- 此值为位掩码,要应用多个,只需将他们相加
Value | Flag | Name | Comment |
---|---|---|---|
0 | 0x0000 | PROC_HIT_NONE | procs on: PROC_HIT_NORMAL | PROC_HIT_CRITICAL for TAKEN proc type PROC_HIT_NORMAL | PROC_HIT_CRITICAL | PROC_HIT_ABSORB for DONE |
1 | 0x0001 | PROC_HIT_NORMAL | 普通一击(非致命一击) |
2 | 0x0002 | PROC_HIT_CRITICAL | 致命一击 |
4 | 0x0004 | PROC_HIT_MISS | 未击中 |
8 | 0x0008 | PROC_HIT_FULL_RESIST | 被完全抵抗 |
16 | 0x0010 | PROC_HIT_DODGE | 被躲闪 |
32 | 0x0020 | PROC_HIT_PARRY | 被躲避 |
64 | 0x0040 | PROC_HIT_BLOCK | 被(部分或完全)格挡 |
128 | 0x0080 | PROC_HIT_EVADE | 被规避 |
256 | 0x0100 | PROC_HIT_IMMUNE | 被免疫 |
512 | 0x0200 | PROC_HIT_DEFLECT | 被偏斜 |
1024 | 0x0400 | PROC_HIT_ABSORB | 被(部分或完全)吸收 |
2048 | 0x0800 | PROC_HIT_REFLECT | 被反射 |
4096 | 0x1000 | PROC_HIT_INTERRUPT | 被打断 |
8192 | 0x2000 | PROC_HIT_FULL_BLOCK | 完全格挡 |
16384 | 0x4000 | PROC_HIT_DISPEL | 被驱散 |
- AttributesMask
- 为法术触发增加特殊行为,只有当这些条件满足时,法术才能触发触发
- 不同的端、不同的版本可能略有区别,取值参考源码 SpellMgr.h 的 ProcAttributes 定义
- 此值为位掩码,要应用多个,只需将他们相加
Value | Flag | Name | Comment |
---|---|---|---|
0 | 0x0000 | PROC_ATTR_NONE | None |
1 | 0x0001 | PROC_ATTR_REQ_EXP_OR_HONOR | requires proc target to give exp or honor for aura proc |
2 | 0x0002 | PROC_ATTR_TRIGGERED_CAN_PROC | aura can proc even with triggered spells |
4 | 0x0004 | PROC_ATTR_REQ_MANA_COST | requires triggering spell to have a mana cost for aura proc |
8 | 0x0008 | PROC_ATTR_REQ_SPELLMOD | requires triggering spell to be affected by proccing aura to drop charges |
128 | 0x0080 | PROC_ATTR_REDUCE_PROC_60 | aura should have a reduced chance to proc if level of proc Actor > 60 |
256 | 0x0100 | PROC_ATTR_CANT_PROC_FROM_ITEM_CAST | do not allow aura proc if proc is caused by a spell casted by item |
- DisableEffectsMask
- 用以禁用法术效果触发
- 此值为位掩码,要应用多个,只需将他们相加
Value | Mask | Name |
---|---|---|
1 | 0x01 | EFFECT_1 |
2 | 0x02 | EFFECT_2 |
4 | 0x04 | EFFECT_3 |
- ProcsPerMinute
chance = (ProcsPerMinute * delay) / 600
- 取值链接 item_template.delay
- Chance
- 每次命中或施法的绝对几率(当 ProcsPerMinute为0时)
- 如果 Chance 和 ProcsPerMinute 均为0,则使用 Spell.dbc 中的 ProcChance 的默认值
- Cooldown
- 定义法术的隐藏冷却时间,毫秒为单位,也被称为法术触发的内部冷却时间,或 ICD
- Charges
- 触发法术的激活次数
- 如果值为 0,则使用 Spell.dbc 中的 ProcCharges 的默认值