diff --git a/Source/Framework/Constants/Spells/SpellConst.cs b/Source/Framework/Constants/Spells/SpellConst.cs index 9c9d71d0d..0fdce2583 100644 --- a/Source/Framework/Constants/Spells/SpellConst.cs +++ b/Source/Framework/Constants/Spells/SpellConst.cs @@ -2540,7 +2540,9 @@ namespace Framework.Constants ReqPowerCost = 0x04, // requires triggering spell to have a power cost for aura proc ReqSpellmod = 0x08, // requires triggering spell to be affected by proccing aura to drop charges UseStacksForCharges = 0x10, // consuming proc drops a stack from proccing aura instead of charge - ReduceProc60 = 0x80 // aura should have a reduced chance to proc if level of proc Actor > 60 + ReduceProc60 = 0x80, // aura should have a reduced chance to proc if level of proc Actor > 60 + + AllAllowed = ReqExpOrHonor | TriggeredCanProc | ReqPowerCost | ReqSpellmod | UseStacksForCharges | ReduceProc60 } // Spell aura states diff --git a/Source/Game/Spells/SpellManager.cs b/Source/Game/Spells/SpellManager.cs index a50378c16..9de2fc0fe 100644 --- a/Source/Game/Spells/SpellManager.cs +++ b/Source/Game/Spells/SpellManager.cs @@ -1431,6 +1431,11 @@ namespace Game.Entities if (!found) Log.outError(LogFilter.Sql, $"The `spell_proc` table entry for spellId {spellInfo.Id} has Attribute PROC_ATTR_REQ_SPELLMOD, but spell has no spell mods. Proc will not be triggered"); } + if ((procEntry.AttributesMask & ~ProcAttributes.AllAllowed) != 0) + { + Log.outError(LogFilter.Sql, $"The `spell_proc` table entry for spellId {spellInfo.Id} has `AttributesMask` value specifying invalid attributes 0x{procEntry.AttributesMask & ~ProcAttributes.AllAllowed:X2}."); + procEntry.AttributesMask &= ProcAttributes.AllAllowed; + } mSpellProcMap.Add((spellInfo.Id, spellInfo.Difficulty), procEntry); ++count;