diff options
Diffstat (limited to 'src')
-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); + } + } + } + } } } |