diff options
| -rw-r--r-- | src/game/SpellAuras.cpp | 49 | 
1 files changed, 47 insertions, 2 deletions
diff --git a/src/game/SpellAuras.cpp b/src/game/SpellAuras.cpp index 9767ddc04a8..77b21f17562 100644 --- a/src/game/SpellAuras.cpp +++ b/src/game/SpellAuras.cpp @@ -975,7 +975,30 @@ void Aura::HandleAuraSpecificMods(bool apply)          if (m_spellProto->SpellFamilyName == SPELLFAMILY_MAGE)          { -            if (m_spellProto->SpellFamilyFlags[0] & 0x00000001 && m_spellProto->SpellFamilyFlags[2] & 0x00000008) +            if (m_spellProto->SpellFamilyFlags[1] & 0x00000002 && m_spellProto->SpellFamilyFlags[2] & 0x00000008) +            { +                // Arcane Potency +                if (Unit * caster = GetCaster()) +                { +                    if (AuraEffect* aureff = caster->GetAuraEffect(SPELL_AURA_DUMMY, SPELLFAMILY_MAGE, 2120, 0)) +                    { +                        if (roll_chance_i(aureff->GetAmount())) +                        { +                            uint32 spell_id = 0; + +                            switch (aureff->GetId()) +                            { +                                case 31571: spell_id = 57529; break; +                                case 31572: spell_id = 57531; break; +                                default: return; +                            } +                            if(spell_id) +                                caster->CastSpell(caster,spell_id,true); +                        } +                    } +                } +            } +            else if (m_spellProto->SpellFamilyFlags[0] & 0x00000001 && m_spellProto->SpellFamilyFlags[2] & 0x00000008)              {                  // Glyph of Fireball                  if (Unit * caster = GetCaster()) @@ -1318,7 +1341,7 @@ void Aura::HandleAuraSpecificMods(bool apply)              m_target->CastSpell(m_target, GetPartAura(0)->GetAmount(), true, NULL, GetPartAura(0));          }          // Curse of Doom -        else if(m_spellProto->SpellFamilyName==SPELLFAMILY_WARLOCK && m_spellProto->SpellFamilyFlags[1] & 0x02) +        else if (m_spellProto->SpellFamilyName==SPELLFAMILY_WARLOCK && m_spellProto->SpellFamilyFlags[1] & 0x02)          {              if (GetRemoveMode()==AURA_REMOVE_BY_DEATH)              { @@ -1329,6 +1352,28 @@ void Aura::HandleAuraSpecificMods(bool apply)                  }              }          } +        // Improved Fear +        else if (m_spellProto->SpellFamilyName==SPELLFAMILY_WARLOCK && m_spellProto->SpellFamilyFlags[1] & 0x00000400) +        { +            if (Unit * caster = GetCaster()) +            { +                if (caster->GetTypeId() != TYPEID_PLAYER) +                { +                    if (AuraEffect* aureff = caster->GetAuraEffect(SPELL_AURA_DUMMY, SPELLFAMILY_WARLOCK, 98, 0)) +                    { +                        uint32 spell_id = 0; +                        switch (aureff->GetId()) +                        { +                            case 53759: spell_id = 60947; break; +                            case 53754: spell_id = 60946; break; +                            default: return; +                        } +                        if (spell_id) +                            caster->CastSpell(caster,spell_id,true); +                    } +                } +            } +        }      }  }  | 
