diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/server/scripts/Spells/spell_generic.cpp | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/src/server/scripts/Spells/spell_generic.cpp b/src/server/scripts/Spells/spell_generic.cpp index 52d83ee79bc..e9dd70754cb 100644 --- a/src/server/scripts/Spells/spell_generic.cpp +++ b/src/server/scripts/Spells/spell_generic.cpp @@ -504,6 +504,46 @@ class spell_gen_bandage : public SpellScript } }; +enum BlackMagicSpellIconId +{ + SPELLICON_DRUID_INFECTED_WOUNDS = 2857 +}; + +// 59630 - Black Magic +class spell_gen_black_magic : public AuraScript +{ + PrepareAuraScript(spell_gen_black_magic); + + bool CheckProc(ProcEventInfo& eventInfo) + { + SpellInfo const* spellInfo = eventInfo.GetSpellInfo(); + uint32 typeMask = eventInfo.GetTypeMask(); + if (!spellInfo) + return false; + + if (typeMask & PROC_FLAG_DONE_SPELL_MAGIC_DMG_CLASS_NEG) + return true; + else if (typeMask & PROC_FLAG_DONE_SPELL_MELEE_DMG_CLASS) + { + // Shred and Mangle (Cat) + if (spellInfo->SpellFamilyName == SPELLFAMILY_DRUID && (spellInfo->SpellFamilyFlags[0] == 0x00008000 || spellInfo->SpellFamilyFlags[1] == 0x00000400)) + return true; + } + else if (typeMask & PROC_FLAG_DONE_SPELL_NONE_DMG_CLASS_NEG) + { + if (spellInfo->SpellFamilyName == SPELLFAMILY_DRUID && spellInfo->SpellIconID == SPELLICON_DRUID_INFECTED_WOUNDS) + return true; + } + + return false; + } + + void Register() override + { + DoCheckProc += AuraCheckProcFn(spell_gen_black_magic::CheckProc); + } +}; + // Blood Reserve - 64568 enum BloodReserve { @@ -4367,6 +4407,7 @@ void AddSC_generic_spell_scripts() RegisterAuraScript(spell_gen_aura_service_uniform); RegisterAuraScript(spell_gen_av_drekthar_presence); RegisterSpellScript(spell_gen_bandage); + RegisterAuraScript(spell_gen_black_magic); RegisterAuraScript(spell_gen_blood_reserve); RegisterAuraScript(spell_gen_blade_warding); RegisterSpellScript(spell_gen_bonked); |