aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/scripts/Spells/spell_generic.cpp41
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);