mirror of
https://github.com/mangosfour/server.git
synced 2025-12-21 10:37:06 +00:00
[11535] More wide use IsFitToFamilyMask
Simplify check for one from cases base at recheck spell data.
This commit is contained in:
parent
2cbde12458
commit
78a4460501
6 changed files with 47 additions and 57 deletions
|
|
@ -6812,24 +6812,24 @@ void Aura::HandleSchoolAbsorb(bool apply, bool Real)
|
|||
break;
|
||||
case SPELLFAMILY_MAGE:
|
||||
// Frost Ward, Fire Ward
|
||||
if (spellProto->SpellFamilyFlags & UI64LIT(0x0000000000000108))
|
||||
if (spellProto->IsFitToFamilyMask(UI64LIT(0x0000000000000108)))
|
||||
//+10% from +spell bonus
|
||||
DoneActualBenefit = caster->SpellBaseDamageBonusDone(GetSpellSchoolMask(spellProto)) * 0.1f;
|
||||
// Ice Barrier
|
||||
else if (spellProto->SpellFamilyFlags & UI64LIT(0x0000000100000000))
|
||||
else if (spellProto->IsFitToFamilyMask(UI64LIT(0x0000000100000000)))
|
||||
//+80.67% from +spell bonus
|
||||
DoneActualBenefit = caster->SpellBaseDamageBonusDone(GetSpellSchoolMask(spellProto)) * 0.8067f;
|
||||
break;
|
||||
case SPELLFAMILY_WARLOCK:
|
||||
// Shadow Ward
|
||||
if (spellProto->SpellFamilyFlags2 & 0x00000040)
|
||||
if (spellProto->IsFitToFamilyMask(UI64LIT(0x0000000000000000), 0x00000040))
|
||||
//+30% from +spell bonus
|
||||
DoneActualBenefit = caster->SpellBaseDamageBonusDone(GetSpellSchoolMask(spellProto)) * 0.30f;
|
||||
break;
|
||||
case SPELLFAMILY_PALADIN:
|
||||
// Sacred Shield
|
||||
// (check not strictly needed, only Sacred Shield has SPELL_AURA_SCHOOL_ABSORB in SPELLFAMILY_PALADIN at this time)
|
||||
if (spellProto->SpellFamilyFlags & UI64LIT(0x0008000000000000))
|
||||
if (spellProto->IsFitToFamilyMask(UI64LIT(0x0008000000000000)))
|
||||
{
|
||||
// +75% from spell power
|
||||
DoneActualBenefit = caster->SpellBaseHealingBonusDone(GetSpellSchoolMask(spellProto)) * 0.75f;
|
||||
|
|
@ -8484,31 +8484,27 @@ void SpellAuraHolder::_AddSpellAuraHolder()
|
|||
m_target->ModifyAuraState(AURA_STATE_JUDGEMENT, true);
|
||||
|
||||
// Conflagrate aura state on Immolate and Shadowflame
|
||||
if (m_spellProto->SpellFamilyName == SPELLFAMILY_WARLOCK &&
|
||||
// Immolate
|
||||
((m_spellProto->SpellFamilyFlags & UI64LIT(0x0000000000000004)) ||
|
||||
// Shadowflame
|
||||
(m_spellProto->SpellFamilyFlags2 & 0x00000002)))
|
||||
if (m_spellProto->IsFitToFamily(SPELLFAMILY_WARLOCK, UI64LIT(0x0000000000000004), 0x00000002))
|
||||
m_target->ModifyAuraState(AURA_STATE_CONFLAGRATE, true);
|
||||
|
||||
// Faerie Fire (druid versions)
|
||||
if (m_spellProto->SpellFamilyName == SPELLFAMILY_DRUID && (m_spellProto->SpellFamilyFlags & UI64LIT(0x0000000000000400)))
|
||||
if (m_spellProto->IsFitToFamily(SPELLFAMILY_DRUID, UI64LIT(0x0000000000000400)))
|
||||
m_target->ModifyAuraState(AURA_STATE_FAERIE_FIRE, true);
|
||||
|
||||
// Victorious
|
||||
if (m_spellProto->SpellFamilyName == SPELLFAMILY_WARRIOR && (m_spellProto->SpellFamilyFlags & UI64LIT(0x0004000000000000)))
|
||||
if (m_spellProto->IsFitToFamily(SPELLFAMILY_WARRIOR, UI64LIT(0x0004000000000000)))
|
||||
m_target->ModifyAuraState(AURA_STATE_WARRIOR_VICTORY_RUSH, true);
|
||||
|
||||
// Swiftmend state on Regrowth & Rejuvenation
|
||||
if (m_spellProto->SpellFamilyName == SPELLFAMILY_DRUID && (m_spellProto->SpellFamilyFlags & UI64LIT(0x50)))
|
||||
if (m_spellProto->IsFitToFamily(SPELLFAMILY_DRUID, UI64LIT(0x0000000000000050)))
|
||||
m_target->ModifyAuraState(AURA_STATE_SWIFTMEND, true);
|
||||
|
||||
// Deadly poison aura state
|
||||
if(m_spellProto->SpellFamilyName == SPELLFAMILY_ROGUE && (m_spellProto->SpellFamilyFlags & UI64LIT(0x10000)))
|
||||
if (m_spellProto->IsFitToFamily(SPELLFAMILY_ROGUE, UI64LIT(0x0000000000010000)))
|
||||
m_target->ModifyAuraState(AURA_STATE_DEADLY_POISON, true);
|
||||
|
||||
// Enrage aura state
|
||||
if(m_spellProto->Dispel == DISPEL_ENRAGE)
|
||||
if (m_spellProto->Dispel == DISPEL_ENRAGE)
|
||||
m_target->ModifyAuraState(AURA_STATE_ENRAGE, true);
|
||||
|
||||
// Bleeding aura state
|
||||
|
|
@ -8598,8 +8594,7 @@ void SpellAuraHolder::_RemoveSpellAuraHolder()
|
|||
break;
|
||||
case SPELLFAMILY_WARLOCK:
|
||||
// Conflagrate aura state on Immolate and Shadowflame,
|
||||
if ((m_spellProto->SpellFamilyFlags & UI64LIT(0x0000000000000004)) ||
|
||||
(m_spellProto->SpellFamilyFlags2 & 0x00000002))
|
||||
if (m_spellProto->IsFitToFamilyMask(UI64LIT(0x0000000000000004), 0x00000002))
|
||||
{
|
||||
removeFamilyFlag = UI64LIT(0x0000000000000004);
|
||||
removeFamilyFlag2 = 0x00000002;
|
||||
|
|
@ -8607,24 +8602,24 @@ void SpellAuraHolder::_RemoveSpellAuraHolder()
|
|||
}
|
||||
break;
|
||||
case SPELLFAMILY_DRUID:
|
||||
if(m_spellProto->SpellFamilyFlags & UI64LIT(0x0000000000000400))
|
||||
if (m_spellProto->IsFitToFamilyMask(UI64LIT(0x0000000000000400)))
|
||||
removeState = AURA_STATE_FAERIE_FIRE; // Faerie Fire (druid versions)
|
||||
else if(m_spellProto->SpellFamilyFlags & UI64LIT(0x50))
|
||||
else if (m_spellProto->IsFitToFamilyMask(UI64LIT(0x0000000000000050)))
|
||||
{
|
||||
removeFamilyFlag = 0x50;
|
||||
removeState = AURA_STATE_SWIFTMEND; // Swiftmend aura state
|
||||
}
|
||||
break;
|
||||
case SPELLFAMILY_WARRIOR:
|
||||
if(m_spellProto->SpellFamilyFlags & UI64LIT(0x0004000000000000))
|
||||
if (m_spellProto->IsFitToFamilyMask(UI64LIT(0x0004000000000000)))
|
||||
removeState = AURA_STATE_WARRIOR_VICTORY_RUSH; // Victorious
|
||||
break;
|
||||
case SPELLFAMILY_ROGUE:
|
||||
if(m_spellProto->SpellFamilyFlags & UI64LIT(0x10000))
|
||||
if (m_spellProto->IsFitToFamilyMask(UI64LIT(0x0000000000010000)))
|
||||
removeState = AURA_STATE_DEADLY_POISON; // Deadly poison aura state
|
||||
break;
|
||||
case SPELLFAMILY_HUNTER:
|
||||
if(m_spellProto->SpellFamilyFlags & UI64LIT(0x1000000000000000))
|
||||
if (m_spellProto->IsFitToFamilyMask(UI64LIT(0x1000000000000000)))
|
||||
removeState = AURA_STATE_FAERIE_FIRE; // Sting (hunter versions)
|
||||
}
|
||||
|
||||
|
|
@ -8636,8 +8631,7 @@ void SpellAuraHolder::_RemoveSpellAuraHolder()
|
|||
for (Unit::SpellAuraHolderMap::const_iterator i = holders.begin(); i != holders.end(); ++i)
|
||||
{
|
||||
SpellEntry const *auraSpellInfo = (*i).second->GetSpellProto();
|
||||
if(auraSpellInfo->SpellFamilyName == m_spellProto->SpellFamilyName &&
|
||||
(auraSpellInfo->SpellFamilyFlags & removeFamilyFlag || auraSpellInfo->SpellFamilyFlags2 & removeFamilyFlag2))
|
||||
if (auraSpellInfo->IsFitToFamily(SpellFamily(m_spellProto->SpellFamilyName), removeFamilyFlag, removeFamilyFlag2))
|
||||
{
|
||||
found = true;
|
||||
break;
|
||||
|
|
@ -9031,7 +9025,7 @@ void SpellAuraHolder::HandleSpellSpecificBoosts(bool apply)
|
|||
return;
|
||||
}
|
||||
// Shadowflame (DoT)
|
||||
else if (m_spellProto->SpellFamilyFlags2 & 0x00000002)
|
||||
else if (m_spellProto->IsFitToFamilyMask(UI64LIT(0x0000000000000000), 0x00000002))
|
||||
{
|
||||
// Glyph of Shadowflame
|
||||
Unit* caster;
|
||||
|
|
@ -9222,7 +9216,7 @@ void SpellAuraHolder::HandleSpellSpecificBoosts(bool apply)
|
|||
return;
|
||||
}
|
||||
// Aspect of the Dragonhawk dodge
|
||||
else if (GetSpellProto()->SpellFamilyFlags2 & 0x00001000)
|
||||
else if (GetSpellProto()->IsFitToFamilyMask(UI64LIT(0x0000000000000000), 0x00001000))
|
||||
{
|
||||
spellId1 = 61848;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue