“spell_proc_event” table

The spell_proc_event table holds informations, under which conditions spells will be triggered.

This applies to all spells that have a SPELL_AURA_PROC_TRIGGER_SPELL aura in their definition, and includes e.g. spells such as shaman shields.

Table structure

Field Type Null Key Default Extra
entry mediumint(8) unsigned NO PRI 0  
SchoolMask tinyint(4) unsigned NO   0  
SpellFamilyName smallint(5) unsigned NO   0  
SpellFamilyMask0 bigint(40) unsigned NO   0  
SpellFamilyMask1 bigint(40) unsigned NO   0  
SpellFamilyMask2 bigint(40) unsigned NO   0  
procFlags int(10) unsigned NO   0  
procEx int(10) unsigned NO   0  
ppmRate float NO   0  
CustomChance float NO   0  
Cooldown int(10) unsigned NO   0  

Fields

entry

The spell identifier. The value has to match with a spell identifier defined in Spell.dbc.

SchoolMask

This field contains a bit-mask that controls on what types of spell damages the proc can be triggered. The following table lists spell schools and matching bit masks.

School ID Bit School name
0 1 Physical
1 2 Holy
2 4 Fire
3 8 Nature
4 16 Frost
5 32 Shadow
6 64 Arcane

Note

Multiple school masks can be combined to have spell trigger on more than one spell school.

SpellFamilyName

A spell class identifier. The value has to match with a spell class identifier from Spell.dbc, and references the spellClassSet field in that file.

SpellFamilyMask0

A spell class mask. The value has to match with a spell class mask from Spell.dbc, and references the spellClassMask1 or spellClassMask2 field in that file.

SpellFamilyMask1

A spell class mask. The value has to match with a spell class mask from Spell.dbc, and references the spellClassMask1 or spellClassMask2 field in that file.

SpellFamilyMask2

A spell class mask. The value has to match with a spell class mask from Spell.dbc, and references the spellClassMask1 or spellClassMask2 field in that file.

procFlags

A bit-mask controlling what events trigger the spell. To combine possible events, add the proc bits together. The following table lists available events.

Event Bit-mask Description
PROC_FLAG_NONE 0x00000000  
PROC_FLAG_KILLED 0x00000001 Killed by aggressor
PROC_FLAG_KILL 0x00000002 Kill target (in most cases need XP/Honor reward, see Unit::IsTriggeredAtSpellProcEvent for additinoal check)
PROC_FLAG_SUCCESSFUL_MELEE_HIT 0x00000004 Successful melee auto attack
PROC_FLAG_TAKEN_MELEE_HIT 0x00000008 Taken damage from melee auto attack hit
PROC_FLAG_SUCCESSFUL_MELEE_SPELL_HIT 0x00000010 Successful attack by Spell that use melee weapon
PROC_FLAG_TAKEN_MELEE_SPELL_HIT 0x00000020 Taken damage by Spell that use melee weapon
PROC_FLAG_SUCCESSFUL_RANGED_HIT 0x00000040 Successful Ranged auto attack
PROC_FLAG_TAKEN_RANGED_HIT 0x00000080 Taken damage from ranged auto attack
PROC_FLAG_SUCCESSFUL_RANGED_SPELL_HIT 0x00000100 Successful Ranged attack by Spell that use ranged weapon
PROC_FLAG_TAKEN_RANGED_SPELL_HIT 0x00000200 Taken damage by Spell that use ranged weapon
PROC_FLAG_SUCCESSFUL_POSITIVE_AOE_HIT 0x00000400 Successful AoE (not 100% sure unused)
PROC_FLAG_TAKEN_POSITIVE_AOE 0x00000800 Taken AoE (not 100% sure unused)
PROC_FLAG_SUCCESSFUL_AOE_SPELL_HIT 0x00001000 Successful AoE damage spell hit (not 100% sure unused)
PROC_FLAG_TAKEN_AOE_SPELL_HIT 0x00002000 Taken AoE damage spell hit (not 100% sure unused)
PROC_FLAG_SUCCESSFUL_POSITIVE_SPELL 0x00004000 Successful cast positive spell (by default only on healing)
PROC_FLAG_TAKEN_POSITIVE_SPELL 0x00008000 Taken positive spell hit (by default only on healing)
PROC_FLAG_SUCCESSFUL_NEGATIVE_SPELL_HIT 0x00010000 Successful negative spell cast (by default only on damage)
PROC_FLAG_TAKEN_NEGATIVE_SPELL_HIT 0x00020000 Taken negative spell (by default only on damage)
PROC_FLAG_ON_DO_PERIODIC 0x00040000 Successful do periodic (damage / healing, determined by PROC_EX_PERIODIC_POSITIVE or negative if no procEx)
PROC_FLAG_ON_TAKE_PERIODIC 0x00080000 Taken spell periodic (damage / healing, determined by PROC_EX_PERIODIC_POSITIVE or negative if no procEx)
PROC_FLAG_TAKEN_ANY_DAMAGE 0x00100000 Taken any damage
PROC_FLAG_ON_TRAP_ACTIVATION 0x00200000 On trap activation
PROC_FLAG_TAKEN_OFFHAND_HIT 0x00400000 Taken off-hand melee attacks(not used)
PROC_FLAG_SUCCESSFUL_OFFHAND_HIT 0x00800000 Successful off-hand melee attacks

procEx

A bit-mask controlling events for melee based triggers. The following tables contains available flags.

Name Bit-mask Description
PROC_EX_NONE 0x0000000 If none can trigger on Hit/Crit only (passive spells MUST defined by SpellFamily flag)
PROC_EX_NORMAL_HIT 0x0000001 If set only from normal hit (only damage spells)
PROC_EX_CRITICAL_HIT 0x0000002  
PROC_EX_MISS 0x0000004  
PROC_EX_RESIST 0x0000008  
PROC_EX_DODGE 0x0000010  
PROC_EX_PARRY 0x0000020  
PROC_EX_BLOCK 0x0000040  
PROC_EX_EVADE 0x0000080  
PROC_EX_IMMUNE 0x0000100  
PROC_EX_DEFLECT 0x0000200  
PROC_EX_ABSORB 0x0000400  
PROC_EX_REFLECT 0x0000800  
PROC_EX_INTERRUPT 0x0001000 Melee hit result can be Interrupt (not used)
PROC_EX_RESERVED1 0x0002000  
PROC_EX_RESERVED2 0x0004000  
PROC_EX_RESERVED3 0x0008000  
PROC_EX_EX_TRIGGER_ALWAYS 0x0010000 If set trigger always ( no matter another flags) used for drop charges
PROC_EX_EX_ONE_TIME_TRIGGER 0x0020000 If set trigger always but only one time (not used)
PROC_EX_PERIODIC_POSITIVE 0x0040000 For periodic heal

ppmRate

This field controls the times per minute that the spell should proc. If zero, then the value is taken from the DBC entry.

CustomChance

Custom chance for triggering, given in percentage.

Cooldown

Define hidden cooldowns on the spell, given in seconds. Also known as the proc’s internal cooldown, or ICD.