The `spell_proc` table
This table holds information on what events (or procs) certain spells are activated. All spells in this table must have apply a SPELL_AURA_PROC_TRIGGER_SPELL (42) aura. Any entries in this table will overwrite the existing proc settings in the spell's DBC entry.
Table Structure
| 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 |
Description of the fields
The Spell ID that is capable to proc on an event. (Can use negative spellId for ranked spells)
This field contains a bitmask that controls on what types of spells the proc can be triggered. For example if an aura procs only when the unit it is casted upon is hit by shadow spells (spell 34914). To combine spell schools, just add the bit values.
| 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 |
This field controls what family name spells can proc the triggered spell.
| 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 |
This field controls what spells' family flags can proc the triggered spell.
Second 32 bits of the spell family mask. See SpellFamilyMask0.
Third 32 bits of the spell family mask. See SpellFamilyMask0.
If non-zero, used to override the original spell ProcFlags in DBC.
A bitmask controlling what events trigger the spell. To combine possible events, add the proc bits together.
Example: 32+64=96 (PROC_FLAG_TAKEN_SPELL_MELEE_DMG_CLASS + PROC_FLAG_DONE_RANGED_AUTO_ATTACK)
| Event | Flag | Bit value | Comment |
|---|---|---|---|
| PROC_FLAG_NONE | 0 | 0x00000000 | |
| PROC_FLAG_KILLED | 1 | 0x00000001 | Killed by an aggressor |
| PROC_FLAG_KILL | 2 | 0x00000002 | Killed a target, in most cases one that gives experience or honor |
| PROC_FLAG_DONE_MELEE_AUTO_ATTACK | 4 | 0x00000004 | Done a melee auto attack |
| PROC_FLAG_TAKEN_MELEE_AUTO_ATTACK | 8 | 0x00000008 | Taken a melee auto attack |
| PROC_FLAG_DONE_SPELL_MELEE_DMG_CLASS | 16 | 0x00000010 | Done an attack with a spell of the melee damage class |
| PROC_FLAG_TAKEN_SPELL_MELEE_DMG_CLASS | 32 | 0x00000020 | Taken an attack from a spell of the melee damage class |
| PROC_FLAG_DONE_RANGED_AUTO_ATTACK | 64 | 0x00000040 | Done a ranged auto attack |
| PROC_FLAG_TAKEN_RANGED_AUTO_ATTACK | 128 | 0x00000080 | Taken a ranged auto attack |
| PROC_FLAG_DONE_SPELL_RANGED_DMG_CLASS | 256 | 0x00000100 | Done an attack with a spell of the ranged damage class |
| PROC_FLAG_TAKEN_SPELL_RANGED_DMG_CLASS | 512 | 0x00000200 | Taken an attack from a spell of the ranged damage class |
| PROC_FLAG_DONE_SPELL_NONE_DMG_CLASS_POS | 1024 | 0x00000400 | Done a positive spell of damage class none |
| PROC_FLAG_TAKEN_SPELL_NONE_DMG_CLASS_POS | 2048 | 0x00000800 | Taken a positive spell of damage class none |
| PROC_FLAG_DONE_SPELL_NONE_DMG_CLASS_NEG | 4096 | 0x00001000 | Done a negative spell of damage class none |
| PROC_FLAG_TAKEN_SPELL_NONE_DMG_CLASS_NEG | 8192 | 0x00002000 | Taken a negative spell of damage class none |
| PROC_FLAG_DONE_SPELL_MAGIC_DMG_CLASS_POS | 16384 | 0x00004000 | Done a positive spell of the magic damage class |
| PROC_FLAG_TAKEN_SPELL_MAGIC_DMG_CLASS_POS | 32768 | 0x00008000 | Taken a positive spell of the magic damage class |
| PROC_FLAG_DONE_SPELL_MAGIC_DMG_CLASS_NEG | 65536 | 0x00010000 | Done a negative spell of the magic damage class |
| PROC_FLAG_TAKEN_SPELL_MAGIC_DMG_CLASS_NEG | 131072 | 0x00020000 | Taken a negative spell of the magic damage class |
| PROC_FLAG_DONE_PERIODIC | 262144 | 0x00040000 | Done periodic damage or healing |
| PROC_FLAG_TAKEN_PERIODIC | 524288 | 0x00080000 | Taken periodic damage or healing |
| PROC_FLAG_TAKEN_DAMAGE | 1048576 | 0x00100000 | Taken any damage |
| PROC_FLAG_DONE_TRAP_ACTIVATION | 2097152 | 0x00200000 | On trap activation |
| PROC_FLAG_DONE_MAINHAND_ATTACK | 4194304 | 0x00400000 | Done a main-hand melee attack, spell or auto attack |
| PROC_FLAG_DONE_OFFHAND_ATTACK | 8388608 | 0x00800000 | Done an off-hand melee attack, spell or auto attack |
| PROC_FLAG_DEATH | 16777216 | 0x01000000 | Died in any way |
Used to choose what types of spells may trigger the proc, to combine, just add the bit values.
| Event | Flag | Bit | Comment |
|---|---|---|---|
| PROC_SPELL_TYPE_NONE | 0 | 0x00000000 | |
| PROC_SPELL_TYPE_DAMAGE | 1 | 0x00000001 | only damaging spells |
| PROC_SPELL_TYPE_HEAL | 2 | 0x00000002 | only healing spells |
| PROC_SPELL_TYPE_NO_DMG_HEAL | 4 | 0x00000004 | all other spells |
| PROC_SPELL_TYPE_MASK_ALL | 7 | 0x00000007 | All masks combined |
At which phase may the spell trigger the proc, Normally one of them is used at the same time, but they might be combined too.
| Event | Flag | Bit | Comment |
|---|---|---|---|
| PROC_SPELL_PHASE_NONE | 0 | 0x00000000 | |
| PROC_SPELL_PHASE_CAST | 1 | 0x00000001 | trigger when spell has just finished casting |
| PROC_SPELL_PHASE_HIT | 2 | 0x00000002 | trigger when the spell hits its target |
| PROC_SPELL_PHASE_FINISH | 4 | 0x00000004 | trigger after spell has done all its effects on all targets |
| PROC_SPELL_PHASE_MASK_ALL | 7 | 0x00000007 | All masks combined |
Used to add special conditions to spells, some spells might trigger only on critical strikes, for example.
| Event | Flag | Bit | Comment |
|---|---|---|---|
| PROC_HIT_NONE | 0 | 0x00000000 | (special see footnote) |
| PROC_HIT_NORMAL | 1 | 0x00000001 | only non-critical hits |
| PROC_HIT_CRITICAL | 2 | 0x00000002 | only critical hits |
| PROC_HIT_MISS | 4 | 0x00000004 | self-explanatory |
| PROC_HIT_FULL_RESIST | 8 | 0x00000008 | only on full resist (no partial) |
| PROC_HIT_DODGE | 16 | 0x00000010 | self-explanatory |
| PROC_HIT_PARRY | 32 | 0x00000020 | self-explanatory |
| PROC_HIT_BLOCK | 64 | 0x00000040 | partial or full block |
| PROC_HIT_EVADE | 128 | 0x00000080 | self-explanatory |
| PROC_HIT_IMMUNE | 256 | 0x00000100 | self-explanatory |
| PROC_HIT_DEFLECT | 512 | 0x00000200 | self-explanatory |
| PROC_HIT_ABSORB | 1024 | 0x00000400 | partial or full absorb |
| PROC_HIT_REFLECT | 2048 | 0x00000800 | self-explanatory |
| PROC_HIT_INTERRUPT | 4096 | 0x00001000 | (not used atm) |
| PROC_HIT_FULL_BLOCK | 8192 | 0x00002000 | only on full block |
| PROC_HIT_MASK_ALL | 12287 | 0x00002FFF | All masks combined |
PROC_HIT_NONE will trigger on:
Adds special behaviour to the proc, spell might trigger proc only if these conditions are fulfilled.
| Event | Flag | Bit | Comment |
|---|---|---|---|
| PROC_ATTR_REQ_EXP_OR_HONOR | 1 | 0x0000001 | requires proc target to give exp or honor for aura proc |
| PROC_ATTR_TRIGGERED_CAN_PROC | 2 | 0x0000002 | aura can proc even with triggered spells |
| PROC_ATTR_REQ_MANA_COST | 4 | 0x0000004 | requires triggering spell to have a mana cost for aura proc |
| PROC_ATTR_REQ_SPELLMOD | 8 | 0x0000008 | requires triggering spell to be affected by proccing aura to drop charges |
| PROC_ATTR_USE_STACKS_FOR_CHARGES | 16 | 0x0000010 | consuming proc drops a stack from proccing aura instead of charge |
| PROC_ATTR_REDUCE_PROC_60 | 128 | 0x0000080 | aura should have a reduced chance to proc if level of proc actor > 60 |
| PROC_ATTR_CANT_PROC_FROM_ITEM_CAST | 256 | 0x0000100 | do not allow aura proc if proc is caused by a spell casted by item |
Bitmask to explicitly disable specific aura effects from triggering the proc. This allows fine-grained control over which effects of a multi-effect aura can proc.
| Effect | Flag | Comment |
|---|---|---|
| 0 | 1 | Disables aura proc effect 0 |
| 1 | 2 | Disables aura proc effect 1 |
| 2 | 4 | Disables aura proc effect 2 |
If non-zero, this field controls the times per minute that the spell should proc. You might not set both ProcsPerMinute and Chance. in that case ProcsPerMinute takes precedence.
If non-zero, chance for spell to trigger. If both ProcsPerMinute and Chance are left in zero, takes ProcChance from DBC.
Define hidden cooldowns on the spell, in milliseconds. Also known as the proc's internal cooldown, or ICD.
Value must be >=0. If the value does not meet the condition the SQL will fail on spell_proc_chk_1.
If non-zero, overrides amount of aura charges available to proc. Else this value is taken from DBC.