diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Spells/SpellMgr.cpp | 5 | ||||
-rw-r--r-- | src/server/game/Spells/SpellMgr.h | 7 |
2 files changed, 12 insertions, 0 deletions
diff --git a/src/server/game/Spells/SpellMgr.cpp b/src/server/game/Spells/SpellMgr.cpp index 5599e0cea39..6860f0e9347 100644 --- a/src/server/game/Spells/SpellMgr.cpp +++ b/src/server/game/Spells/SpellMgr.cpp @@ -1626,6 +1626,11 @@ void SpellMgr::LoadSpellProcs() if (!found) TC_LOG_ERROR("sql.sql", "The `spell_proc` table entry for spellId %u has Attribute PROC_ATTR_REQ_SPELLMOD, but spell has no spell mods. Proc will not be triggered", spellInfo->Id); } + if (procEntry.AttributesMask & ~PROC_ATTR_ALL_ALLOWED) + { + TC_LOG_ERROR("sql.sql", "The `spell_proc` table entry for spellId %u has `AttributesMask` value specifying invalid attributes 0x%02X.", spellInfo->Id, procEntry.AttributesMask & ~PROC_ATTR_ALL_ALLOWED); + procEntry.AttributesMask &= PROC_ATTR_ALL_ALLOWED; + } mSpellProcMap[{ spellInfo->Id, spellInfo->Difficulty }] = procEntry; diff --git a/src/server/game/Spells/SpellMgr.h b/src/server/game/Spells/SpellMgr.h index 00b93cb18fd..85bf5367a2d 100644 --- a/src/server/game/Spells/SpellMgr.h +++ b/src/server/game/Spells/SpellMgr.h @@ -272,6 +272,13 @@ enum ProcAttributes PROC_ATTR_REDUCE_PROC_60 = 0x0000080 // aura should have a reduced chance to proc if level of proc Actor > 60 }; +#define PROC_ATTR_ALL_ALLOWED (PROC_ATTR_REQ_EXP_OR_HONOR | \ + PROC_ATTR_TRIGGERED_CAN_PROC | \ + PROC_ATTR_REQ_POWER_COST | \ + PROC_ATTR_REQ_SPELLMOD | \ + PROC_ATTR_USE_STACKS_FOR_CHARGES | \ + PROC_ATTR_REDUCE_PROC_60) + struct SpellProcEntry { uint32 SchoolMask; // if nonzero - bitmask for matching proc condition based on spell's school |