Core/Spell: apply SPELLFAMILY_GENERIC mods to all spells by default
This commit is contained in:
@@ -587,15 +587,12 @@ namespace Game.Spells
|
||||
{
|
||||
if (spell == null)
|
||||
return false;
|
||||
// Check family name
|
||||
if (spell.SpellFamilyName != m_spellInfo.SpellFamilyName)
|
||||
|
||||
// Check family name and EffectClassMask
|
||||
if (!spell.IsAffected(m_spellInfo.SpellFamilyName, GetSpellEffectInfo().SpellClassMask))
|
||||
return false;
|
||||
|
||||
// Check EffectClassMask
|
||||
if (GetSpellEffectInfo().SpellClassMask & spell.SpellFamilyFlags)
|
||||
return true;
|
||||
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
void SendTickImmune(Unit target, Unit caster)
|
||||
|
||||
@@ -597,6 +597,20 @@ namespace Game.Spells
|
||||
return !(HasAttribute(SpellAttr1.NoThreat) || HasAttribute(SpellAttr3.NoInitialAggro));
|
||||
}
|
||||
|
||||
public bool IsAffected(SpellFamilyNames familyName, FlagArray128 familyFlags)
|
||||
{
|
||||
if (familyName == 0)
|
||||
return true;
|
||||
|
||||
if (familyName != SpellFamilyName)
|
||||
return false;
|
||||
|
||||
if (familyFlags && !(familyFlags & SpellFamilyFlags))
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool IsAffectedBySpellMods()
|
||||
{
|
||||
return !HasAttribute(SpellAttr3.NoDoneBonus);
|
||||
@@ -608,15 +622,10 @@ namespace Game.Spells
|
||||
return false;
|
||||
|
||||
SpellInfo affectSpell = Global.SpellMgr.GetSpellInfo(mod.spellId);
|
||||
// False if affect_spell == NULL or spellFamily not equal
|
||||
if (affectSpell == null || affectSpell.SpellFamilyName != SpellFamilyName)
|
||||
if (affectSpell == null)
|
||||
return false;
|
||||
|
||||
// true
|
||||
if (mod.mask & SpellFamilyFlags)
|
||||
return true;
|
||||
|
||||
return false;
|
||||
return IsAffected(affectSpell.SpellFamilyName, mod.mask);
|
||||
}
|
||||
|
||||
public bool CanPierceImmuneAura(SpellInfo aura)
|
||||
|
||||
@@ -505,12 +505,9 @@ namespace Game.Entities
|
||||
if (eventInfo.GetTypeMask().HasAnyFlag(ProcFlags.PeriodicMask | ProcFlags.SpellMask))
|
||||
{
|
||||
SpellInfo eventSpellInfo = eventInfo.GetSpellInfo();
|
||||
|
||||
if (procEntry.SpellFamilyName != 0 && eventSpellInfo != null && (procEntry.SpellFamilyName != eventSpellInfo.SpellFamilyName))
|
||||
return false;
|
||||
|
||||
if (eventSpellInfo != null && !(procEntry.SpellFamilyMask & eventSpellInfo.SpellFamilyFlags))
|
||||
return false;
|
||||
if (eventSpellInfo != null)
|
||||
if (!eventSpellInfo.IsAffected(procEntry.SpellFamilyName, procEntry.SpellFamilyMask))
|
||||
return false;
|
||||
}
|
||||
|
||||
// check spell type mask (if set)
|
||||
|
||||
Reference in New Issue
Block a user