aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Spells/SpellMgr.cpp5
-rw-r--r--src/server/game/Spells/SpellMgr.h7
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