aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sql/updates/9988_world_spell_script_names.sql3
-rw-r--r--src/server/scripts/Spells/spell_priest.cpp34
2 files changed, 37 insertions, 0 deletions
diff --git a/sql/updates/9988_world_spell_script_names.sql b/sql/updates/9988_world_spell_script_names.sql
new file mode 100644
index 00000000000..810fc602318
--- /dev/null
+++ b/sql/updates/9988_world_spell_script_names.sql
@@ -0,0 +1,3 @@
+DELETE FROM `spell_script_names` WHERE `spell_id`=-8129 AND `ScriptName`='spell_pri_mana_burn';
+INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES
+(-8129,'spell_pri_mana_burn');
diff --git a/src/server/scripts/Spells/spell_priest.cpp b/src/server/scripts/Spells/spell_priest.cpp
index f923274f1ef..41f0a893c1c 100644
--- a/src/server/scripts/Spells/spell_priest.cpp
+++ b/src/server/scripts/Spells/spell_priest.cpp
@@ -31,6 +31,39 @@ enum PriestSpells
PRIEST_SPELL_PENANCE_R1_HEAL = 47757,
};
+class spell_pri_mana_burn : public SpellScriptLoader
+{
+ public:
+ spell_pri_mana_burn() : SpellScriptLoader("spell_pri_mana_burn") { }
+
+ class spell_pri_mana_burn_SpellScript : public SpellScript
+ {
+ bool Validate(SpellEntry const * spellEntry)
+ {
+ return true;
+ }
+
+ void HandleAfterHit()
+ {
+ Unit * unitTarget = GetHitUnit();
+ if (!unitTarget)
+ return;
+
+ unitTarget->RemoveAurasWithMechanic((1 << MECHANIC_FEAR) | (1 << MECHANIC_POLYMORPH));
+ }
+
+ void Register()
+ {
+ AfterHit += SpellHitFn(spell_pri_mana_burn_SpellScript::HandleAfterHit);
+ }
+ };
+
+ SpellScript * GetSpellScript() const
+ {
+ return new spell_pri_mana_burn_SpellScript;
+ }
+};
+
class spell_pri_pain_and_suffering_proc : public SpellScriptLoader
{
public:
@@ -114,6 +147,7 @@ class spell_pri_penance : public SpellScriptLoader
void AddSC_priest_spell_scripts()
{
+ new spell_pri_mana_burn;
new spell_pri_pain_and_suffering_proc;
new spell_pri_penance;
}