2010-07-24 22:41:42 +02:00
|
|
|
/*
|
2017-01-01 16:21:30 +01:00
|
|
|
* Copyright (C) 2008-2017 TrinityCore <http://www.trinitycore.org/>
|
2010-07-24 22:41:42 +02:00
|
|
|
*
|
|
|
|
|
* This program is free software; you can redistribute it and/or modify it
|
|
|
|
|
* under the terms of the GNU General Public License as published by the
|
|
|
|
|
* Free Software Foundation; either version 2 of the License, or (at your
|
|
|
|
|
* option) any later version.
|
|
|
|
|
*
|
|
|
|
|
* This program is distributed in the hope that it will be useful, but WITHOUT
|
|
|
|
|
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
|
|
|
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
|
|
|
|
* more details.
|
|
|
|
|
*
|
|
|
|
|
* You should have received a copy of the GNU General Public License along
|
|
|
|
|
* with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Scripts for spells with SPELLFAMILY_PRIEST and SPELLFAMILY_GENERIC spells used by priest players.
|
|
|
|
|
* Ordered alphabetically using scriptname.
|
|
|
|
|
* Scriptnames of files in this file should be prefixed with "spell_pri_".
|
|
|
|
|
*/
|
|
|
|
|
|
2012-11-17 05:18:37 +01:00
|
|
|
#include "Player.h"
|
2012-02-19 16:57:07 +01:00
|
|
|
#include "ScriptMgr.h"
|
|
|
|
|
#include "SpellScript.h"
|
2010-08-06 23:03:43 +06:00
|
|
|
#include "SpellAuraEffects.h"
|
2011-09-01 09:06:24 +02:00
|
|
|
#include "GridNotifiers.h"
|
2010-07-24 22:41:42 +02:00
|
|
|
|
2010-07-27 21:12:40 -07:00
|
|
|
enum PriestSpells
|
|
|
|
|
{
|
2013-07-06 14:48:40 +02:00
|
|
|
SPELL_PRIEST_ABSOLUTION = 33167,
|
2017-03-11 15:55:21 +01:00
|
|
|
SPELL_PRIEST_BODY_AND_SOUL = 64129,
|
2013-07-21 17:46:08 +02:00
|
|
|
SPELL_PRIEST_BODY_AND_SOUL_DISPEL = 64136,
|
|
|
|
|
SPELL_PRIEST_BODY_AND_SOUL_SPEED = 65081,
|
|
|
|
|
SPELL_PRIEST_CURE_DISEASE = 528,
|
2013-07-06 14:48:40 +02:00
|
|
|
SPELL_PRIEST_DISPEL_MAGIC_FRIENDLY = 97690,
|
|
|
|
|
SPELL_PRIEST_DISPEL_MAGIC_HOSTILE = 97691,
|
2013-01-22 00:20:16 +01:00
|
|
|
SPELL_PRIEST_DIVINE_AEGIS = 47753,
|
2013-06-28 22:50:22 +02:00
|
|
|
SPELL_PRIEST_DIVINE_TOUCH = 63544,
|
2014-01-26 02:24:57 +01:00
|
|
|
SPELL_PRIEST_GLYPH_OF_CIRCLE_OF_HEALING = 55675,
|
2013-07-06 14:48:40 +02:00
|
|
|
SPELL_PRIEST_GLYPH_OF_DISPEL_MAGIC = 55677,
|
|
|
|
|
SPELL_PRIEST_GLYPH_OF_DISPEL_MAGIC_HEAL = 56131,
|
2013-01-26 19:48:54 +01:00
|
|
|
SPELL_PRIEST_GLYPH_OF_LIGHTWELL = 55673,
|
|
|
|
|
SPELL_PRIEST_GLYPH_OF_PRAYER_OF_HEALING_HEAL = 56161,
|
2013-01-11 19:10:10 +01:00
|
|
|
SPELL_PRIEST_GLYPH_OF_SHADOW = 107906,
|
|
|
|
|
SPELL_PRIEST_GUARDIAN_SPIRIT_HEAL = 48153,
|
2013-07-18 15:23:09 +02:00
|
|
|
SPELL_PRIEST_ITEM_EFFICIENCY = 37595,
|
2013-01-11 19:10:10 +01:00
|
|
|
SPELL_PRIEST_LEAP_OF_FAITH = 73325,
|
|
|
|
|
SPELL_PRIEST_LEAP_OF_FAITH_EFFECT = 92832,
|
2013-01-28 01:04:37 +00:00
|
|
|
SPELL_PRIEST_LEAP_OF_FAITH_EFFECT_TRIGGER = 92833,
|
|
|
|
|
SPELL_PRIEST_LEAP_OF_FAITH_TRIGGERED = 92572,
|
2017-02-10 23:03:19 +01:00
|
|
|
SPELL_PRIEST_LEVITATE_EFFECT = 111759,
|
2013-01-22 00:20:16 +01:00
|
|
|
SPELL_PRIEST_MANA_LEECH_PROC = 34650,
|
2013-01-11 19:10:10 +01:00
|
|
|
SPELL_PRIEST_PENANCE_R1 = 47540,
|
|
|
|
|
SPELL_PRIEST_PENANCE_R1_DAMAGE = 47758,
|
|
|
|
|
SPELL_PRIEST_PENANCE_R1_HEAL = 47757,
|
|
|
|
|
SPELL_PRIEST_REFLECTIVE_SHIELD_R1 = 33201,
|
2013-01-28 01:04:37 +00:00
|
|
|
SPELL_PRIEST_REFLECTIVE_SHIELD_TRIGGERED = 33619,
|
2017-03-11 15:55:21 +01:00
|
|
|
SPELL_PRIEST_RENEWED_HOPE = 197469,
|
|
|
|
|
SPELL_PRIEST_RENEWED_HOPE_EFFECT = 197470,
|
2013-01-11 19:10:10 +01:00
|
|
|
SPELL_PRIEST_SHADOWFORM_VISUAL_WITHOUT_GLYPH = 107903,
|
|
|
|
|
SPELL_PRIEST_SHADOWFORM_VISUAL_WITH_GLYPH = 107904,
|
2013-01-22 00:20:16 +01:00
|
|
|
SPELL_PRIEST_SHADOW_WORD_DEATH = 32409,
|
2017-03-11 15:55:21 +01:00
|
|
|
SPELL_PRIEST_SHIELD_DISCIPLINE_PASSIVE = 197045,
|
|
|
|
|
SPELL_PRIEST_SHIELD_DISCIPLINE_ENERGIZE = 47755,
|
|
|
|
|
SPELL_PRIEST_STRENGTH_OF_SOUL = 197535,
|
|
|
|
|
SPELL_PRIEST_STRENGTH_OF_SOUL_EFFECT = 197548,
|
2017-02-12 21:46:00 -05:00
|
|
|
SPELL_PRIEST_THE_PENITENT_AURA = 200347,
|
2013-07-25 13:29:29 +02:00
|
|
|
SPELL_PRIEST_TWIN_DISCIPLINES_RANK_1 = 47586,
|
2013-01-11 19:10:10 +01:00
|
|
|
SPELL_PRIEST_T9_HEALING_2P = 67201,
|
2013-07-21 15:28:03 +02:00
|
|
|
SPELL_PRIEST_VAMPIRIC_EMBRACE_HEAL = 15290,
|
2017-03-11 15:55:21 +01:00
|
|
|
SPELL_PRIEST_VAMPIRIC_TOUCH_DISPEL = 64085,
|
|
|
|
|
SPELL_PRIEST_VOID_SHIELD = 199144,
|
|
|
|
|
SPELL_PRIEST_VOID_SHIELD_EFFECT = 199145
|
2010-07-27 21:12:40 -07:00
|
|
|
};
|
|
|
|
|
|
2013-01-11 04:18:02 +01:00
|
|
|
enum PriestSpellIcons
|
|
|
|
|
{
|
2013-01-28 02:54:27 +00:00
|
|
|
PRIEST_ICON_ID_BORROWED_TIME = 2899,
|
2013-06-28 22:50:22 +02:00
|
|
|
PRIEST_ICON_ID_DIVINE_TOUCH_TALENT = 3021,
|
2013-07-25 14:14:30 +02:00
|
|
|
PRIEST_ICON_ID_PAIN_AND_SUFFERING = 2874
|
2010-07-27 21:12:40 -07:00
|
|
|
};
|
|
|
|
|
|
2013-07-21 16:41:13 +02:00
|
|
|
enum MiscSpells
|
|
|
|
|
{
|
|
|
|
|
SPELL_GEN_REPLENISHMENT = 57669
|
|
|
|
|
};
|
|
|
|
|
|
2014-01-26 02:24:57 +01:00
|
|
|
class PowerCheck
|
|
|
|
|
{
|
|
|
|
|
public:
|
2014-01-26 23:56:53 +01:00
|
|
|
explicit PowerCheck(Powers const power) : _power(power) { }
|
2014-01-26 02:24:57 +01:00
|
|
|
|
|
|
|
|
bool operator()(WorldObject* obj) const
|
|
|
|
|
{
|
|
|
|
|
if (Unit* target = obj->ToUnit())
|
|
|
|
|
return target->getPowerType() != _power;
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private:
|
2014-01-26 23:56:53 +01:00
|
|
|
Powers const _power;
|
2014-01-26 02:24:57 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class RaidCheck
|
|
|
|
|
{
|
|
|
|
|
public:
|
|
|
|
|
explicit RaidCheck(Unit const* caster) : _caster(caster) { }
|
|
|
|
|
|
|
|
|
|
bool operator()(WorldObject* obj) const
|
|
|
|
|
{
|
|
|
|
|
if (Unit* target = obj->ToUnit())
|
|
|
|
|
return !_caster->IsInRaidWith(target);
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
Unit const* _caster;
|
|
|
|
|
};
|
|
|
|
|
|
2013-07-21 17:46:08 +02:00
|
|
|
class spell_pri_body_and_soul : public SpellScriptLoader
|
|
|
|
|
{
|
|
|
|
|
public:
|
|
|
|
|
spell_pri_body_and_soul() : SpellScriptLoader("spell_pri_body_and_soul") { }
|
|
|
|
|
|
|
|
|
|
class spell_pri_body_and_soul_AuraScript : public AuraScript
|
|
|
|
|
{
|
|
|
|
|
PrepareAuraScript(spell_pri_body_and_soul_AuraScript);
|
|
|
|
|
|
2014-04-29 20:14:42 +02:00
|
|
|
bool Validate(SpellInfo const* /*spellInfo*/) override
|
2013-07-21 17:46:08 +02:00
|
|
|
{
|
|
|
|
|
if (!sSpellMgr->GetSpellInfo(SPELL_PRIEST_CURE_DISEASE) ||
|
|
|
|
|
!sSpellMgr->GetSpellInfo(SPELL_PRIEST_BODY_AND_SOUL_DISPEL))
|
|
|
|
|
return false;
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void HandleEffectSpeedProc(AuraEffect const* aurEff, ProcEventInfo& eventInfo)
|
|
|
|
|
{
|
|
|
|
|
PreventDefaultAction();
|
2013-07-22 00:13:58 +02:00
|
|
|
// Proc only with Power Word: Shield or Leap of Faith
|
2013-07-21 17:46:08 +02:00
|
|
|
if (!(eventInfo.GetDamageInfo()->GetSpellInfo()->SpellFamilyFlags[0] & 0x1 || eventInfo.GetDamageInfo()->GetSpellInfo()->SpellFamilyFlags[2] & 0x80000))
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
GetTarget()->CastCustomSpell(SPELL_PRIEST_BODY_AND_SOUL_SPEED, SPELLVALUE_BASE_POINT0, aurEff->GetAmount(), eventInfo.GetProcTarget(), true, NULL, aurEff);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void HandleEffectDispelProc(AuraEffect const* aurEff, ProcEventInfo& eventInfo)
|
|
|
|
|
{
|
|
|
|
|
PreventDefaultAction();
|
2013-07-22 00:13:58 +02:00
|
|
|
// Proc only with Cure Disease
|
2013-07-21 17:46:08 +02:00
|
|
|
if (eventInfo.GetDamageInfo()->GetSpellInfo()->Id != SPELL_PRIEST_CURE_DISEASE || eventInfo.GetProcTarget() != GetTarget())
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
if (roll_chance_i(aurEff->GetAmount()))
|
|
|
|
|
GetTarget()->CastSpell(eventInfo.GetProcTarget(), SPELL_PRIEST_BODY_AND_SOUL_DISPEL, true, NULL, aurEff);
|
|
|
|
|
}
|
|
|
|
|
|
2014-04-29 20:14:42 +02:00
|
|
|
void Register() override
|
2013-07-21 17:46:08 +02:00
|
|
|
{
|
|
|
|
|
OnEffectProc += AuraEffectProcFn(spell_pri_body_and_soul_AuraScript::HandleEffectSpeedProc, EFFECT_0, SPELL_AURA_DUMMY);
|
|
|
|
|
OnEffectProc += AuraEffectProcFn(spell_pri_body_and_soul_AuraScript::HandleEffectDispelProc, EFFECT_1, SPELL_AURA_DUMMY);
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
2014-04-29 20:14:42 +02:00
|
|
|
AuraScript* GetAuraScript() const override
|
2013-07-21 17:46:08 +02:00
|
|
|
{
|
|
|
|
|
return new spell_pri_body_and_soul_AuraScript();
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
2014-01-26 18:22:06 +01:00
|
|
|
// 34861 - Circle of Healing
|
2014-01-26 02:24:57 +01:00
|
|
|
class spell_pri_circle_of_healing : public SpellScriptLoader
|
|
|
|
|
{
|
|
|
|
|
public:
|
|
|
|
|
spell_pri_circle_of_healing() : SpellScriptLoader("spell_pri_circle_of_healing") { }
|
|
|
|
|
|
|
|
|
|
class spell_pri_circle_of_healing_SpellScript : public SpellScript
|
|
|
|
|
{
|
|
|
|
|
PrepareSpellScript(spell_pri_circle_of_healing_SpellScript);
|
|
|
|
|
|
2014-04-29 16:35:11 +02:00
|
|
|
bool Validate(SpellInfo const* /*spellInfo*/) override
|
2014-01-26 02:24:57 +01:00
|
|
|
{
|
|
|
|
|
if (!sSpellMgr->GetSpellInfo(SPELL_PRIEST_GLYPH_OF_CIRCLE_OF_HEALING))
|
|
|
|
|
return false;
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void FilterTargets(std::list<WorldObject*>& targets)
|
|
|
|
|
{
|
|
|
|
|
targets.remove_if(RaidCheck(GetCaster()));
|
|
|
|
|
|
|
|
|
|
uint32 const maxTargets = GetCaster()->HasAura(SPELL_PRIEST_GLYPH_OF_CIRCLE_OF_HEALING) ? 6 : 5; // Glyph of Circle of Healing
|
|
|
|
|
|
|
|
|
|
if (targets.size() > maxTargets)
|
|
|
|
|
{
|
|
|
|
|
targets.sort(Trinity::HealthPctOrderPred());
|
|
|
|
|
targets.resize(maxTargets);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2014-04-29 16:35:11 +02:00
|
|
|
void Register() override
|
2014-01-26 02:24:57 +01:00
|
|
|
{
|
|
|
|
|
OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_pri_circle_of_healing_SpellScript::FilterTargets, EFFECT_0, TARGET_UNIT_DEST_AREA_ALLY);
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
2014-04-29 16:35:11 +02:00
|
|
|
SpellScript* GetSpellScript() const override
|
2014-01-26 02:24:57 +01:00
|
|
|
{
|
|
|
|
|
return new spell_pri_circle_of_healing_SpellScript();
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
2013-07-06 14:48:40 +02:00
|
|
|
// 527 - Dispel magic
|
|
|
|
|
class spell_pri_dispel_magic : public SpellScriptLoader
|
|
|
|
|
{
|
|
|
|
|
public:
|
|
|
|
|
spell_pri_dispel_magic() : SpellScriptLoader("spell_pri_dispel_magic") { }
|
|
|
|
|
|
|
|
|
|
class spell_pri_dispel_magic_SpellScript : public SpellScript
|
|
|
|
|
{
|
|
|
|
|
PrepareSpellScript(spell_pri_dispel_magic_SpellScript);
|
|
|
|
|
|
2015-11-15 03:38:02 +01:00
|
|
|
bool Validate(SpellInfo const* /*spellInfo*/) override
|
2013-07-06 14:48:40 +02:00
|
|
|
{
|
|
|
|
|
if (!sSpellMgr->GetSpellInfo(SPELL_PRIEST_ABSOLUTION))
|
|
|
|
|
return false;
|
|
|
|
|
if (!sSpellMgr->GetSpellInfo(SPELL_PRIEST_GLYPH_OF_DISPEL_MAGIC_HEAL))
|
|
|
|
|
return false;
|
|
|
|
|
if (!sSpellMgr->GetSpellInfo(SPELL_PRIEST_GLYPH_OF_DISPEL_MAGIC))
|
|
|
|
|
return false;
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
SpellCastResult CheckCast()
|
|
|
|
|
{
|
|
|
|
|
Unit* caster = GetCaster();
|
|
|
|
|
Unit* target = GetExplTargetUnit();
|
|
|
|
|
|
|
|
|
|
if (!target || (!caster->HasAura(SPELL_PRIEST_ABSOLUTION) && caster != target && target->IsFriendlyTo(caster)))
|
|
|
|
|
return SPELL_FAILED_BAD_TARGETS;
|
|
|
|
|
return SPELL_CAST_OK;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void AfterEffectHit(SpellEffIndex /*effIndex*/)
|
|
|
|
|
{
|
|
|
|
|
if (GetHitUnit()->IsFriendlyTo(GetCaster()))
|
|
|
|
|
{
|
|
|
|
|
GetCaster()->CastSpell(GetHitUnit(), SPELL_PRIEST_DISPEL_MAGIC_FRIENDLY, true);
|
2013-07-20 23:40:32 +02:00
|
|
|
if (AuraEffect const* aurEff = GetHitUnit()->GetAuraEffect(SPELL_PRIEST_GLYPH_OF_DISPEL_MAGIC, EFFECT_0))
|
2013-07-06 14:48:40 +02:00
|
|
|
{
|
2013-07-20 23:40:32 +02:00
|
|
|
int32 heal = GetHitUnit()->CountPctFromMaxHealth(aurEff->GetAmount());
|
|
|
|
|
GetCaster()->CastCustomSpell(SPELL_PRIEST_GLYPH_OF_DISPEL_MAGIC_HEAL, SPELLVALUE_BASE_POINT0, heal, GetHitUnit());
|
2013-07-06 14:48:40 +02:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
GetCaster()->CastSpell(GetHitUnit(), SPELL_PRIEST_DISPEL_MAGIC_HOSTILE, true);
|
|
|
|
|
}
|
|
|
|
|
|
2015-11-15 03:38:02 +01:00
|
|
|
void Register() override
|
2013-07-06 14:48:40 +02:00
|
|
|
{
|
|
|
|
|
OnCheckCast += SpellCheckCastFn(spell_pri_dispel_magic_SpellScript::CheckCast);
|
|
|
|
|
OnEffectHitTarget += SpellEffectFn(spell_pri_dispel_magic_SpellScript::AfterEffectHit, EFFECT_0, SPELL_EFFECT_DUMMY);
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
2015-11-15 03:38:02 +01:00
|
|
|
SpellScript* GetSpellScript() const override
|
2013-07-06 14:48:40 +02:00
|
|
|
{
|
|
|
|
|
return new spell_pri_dispel_magic_SpellScript();
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
2013-01-22 00:20:16 +01:00
|
|
|
// -47509 - Divine Aegis
|
|
|
|
|
class spell_pri_divine_aegis : public SpellScriptLoader
|
|
|
|
|
{
|
|
|
|
|
public:
|
|
|
|
|
spell_pri_divine_aegis() : SpellScriptLoader("spell_pri_divine_aegis") { }
|
|
|
|
|
|
|
|
|
|
class spell_pri_divine_aegis_AuraScript : public AuraScript
|
|
|
|
|
{
|
|
|
|
|
PrepareAuraScript(spell_pri_divine_aegis_AuraScript);
|
|
|
|
|
|
2014-04-29 16:35:11 +02:00
|
|
|
bool Validate(SpellInfo const* /*spellInfo*/) override
|
2013-01-22 00:20:16 +01:00
|
|
|
{
|
|
|
|
|
if (!sSpellMgr->GetSpellInfo(SPELL_PRIEST_DIVINE_AEGIS))
|
|
|
|
|
return false;
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool CheckProc(ProcEventInfo& eventInfo)
|
|
|
|
|
{
|
2014-07-17 15:42:57 +02:00
|
|
|
return eventInfo.GetProcTarget() != nullptr;
|
2013-01-22 00:20:16 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void HandleProc(AuraEffect const* aurEff, ProcEventInfo& eventInfo)
|
|
|
|
|
{
|
|
|
|
|
PreventDefaultAction();
|
|
|
|
|
|
|
|
|
|
int32 absorb = CalculatePct(int32(eventInfo.GetHealInfo()->GetHeal()), aurEff->GetAmount());
|
|
|
|
|
|
|
|
|
|
// Multiple effects stack, so let's try to find this aura.
|
|
|
|
|
if (AuraEffect const* aegis = eventInfo.GetProcTarget()->GetAuraEffect(SPELL_PRIEST_DIVINE_AEGIS, EFFECT_0))
|
|
|
|
|
absorb += aegis->GetAmount();
|
|
|
|
|
|
|
|
|
|
absorb = std::min(absorb, eventInfo.GetProcTarget()->getLevel() * 125);
|
|
|
|
|
|
|
|
|
|
GetTarget()->CastCustomSpell(SPELL_PRIEST_DIVINE_AEGIS, SPELLVALUE_BASE_POINT0, absorb, eventInfo.GetProcTarget(), true, NULL, aurEff);
|
|
|
|
|
}
|
|
|
|
|
|
2014-04-29 16:35:11 +02:00
|
|
|
void Register() override
|
2013-01-22 00:20:16 +01:00
|
|
|
{
|
|
|
|
|
DoCheckProc += AuraCheckProcFn(spell_pri_divine_aegis_AuraScript::CheckProc);
|
|
|
|
|
OnEffectProc += AuraEffectProcFn(spell_pri_divine_aegis_AuraScript::HandleProc, EFFECT_0, SPELL_AURA_DUMMY);
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
2014-04-29 16:35:11 +02:00
|
|
|
AuraScript* GetAuraScript() const override
|
2013-01-22 00:20:16 +01:00
|
|
|
{
|
|
|
|
|
return new spell_pri_divine_aegis_AuraScript();
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
2014-01-26 02:24:57 +01:00
|
|
|
// 64844 - Divine Hymn
|
|
|
|
|
class spell_pri_divine_hymn : public SpellScriptLoader
|
|
|
|
|
{
|
|
|
|
|
public:
|
|
|
|
|
spell_pri_divine_hymn() : SpellScriptLoader("spell_pri_divine_hymn") { }
|
|
|
|
|
|
|
|
|
|
class spell_pri_divine_hymn_SpellScript : public SpellScript
|
|
|
|
|
{
|
|
|
|
|
PrepareSpellScript(spell_pri_divine_hymn_SpellScript);
|
|
|
|
|
|
|
|
|
|
void FilterTargets(std::list<WorldObject*>& targets)
|
|
|
|
|
{
|
|
|
|
|
targets.remove_if(RaidCheck(GetCaster()));
|
|
|
|
|
|
|
|
|
|
uint32 const maxTargets = 3;
|
|
|
|
|
|
|
|
|
|
if (targets.size() > maxTargets)
|
|
|
|
|
{
|
|
|
|
|
targets.sort(Trinity::HealthPctOrderPred());
|
|
|
|
|
targets.resize(maxTargets);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2014-04-29 16:35:11 +02:00
|
|
|
void Register() override
|
2014-01-26 02:24:57 +01:00
|
|
|
{
|
2014-05-26 20:42:53 +01:00
|
|
|
OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_pri_divine_hymn_SpellScript::FilterTargets, EFFECT_ALL, TARGET_UNIT_SRC_AREA_ALLY);
|
2014-01-26 02:24:57 +01:00
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
2014-04-29 16:35:11 +02:00
|
|
|
SpellScript* GetSpellScript() const override
|
2014-01-26 02:24:57 +01:00
|
|
|
{
|
|
|
|
|
return new spell_pri_divine_hymn_SpellScript();
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
2013-01-22 00:20:16 +01:00
|
|
|
// 55680 - Glyph of Prayer of Healing
|
|
|
|
|
class spell_pri_glyph_of_prayer_of_healing : public SpellScriptLoader
|
|
|
|
|
{
|
|
|
|
|
public:
|
|
|
|
|
spell_pri_glyph_of_prayer_of_healing() : SpellScriptLoader("spell_pri_glyph_of_prayer_of_healing") { }
|
|
|
|
|
|
|
|
|
|
class spell_pri_glyph_of_prayer_of_healing_AuraScript : public AuraScript
|
|
|
|
|
{
|
|
|
|
|
PrepareAuraScript(spell_pri_glyph_of_prayer_of_healing_AuraScript);
|
|
|
|
|
|
2014-04-29 16:35:11 +02:00
|
|
|
bool Validate(SpellInfo const* /*spellInfo*/) override
|
2013-01-22 00:20:16 +01:00
|
|
|
{
|
2013-01-26 19:48:54 +01:00
|
|
|
if (!sSpellMgr->GetSpellInfo(SPELL_PRIEST_GLYPH_OF_PRAYER_OF_HEALING_HEAL))
|
2013-01-22 00:20:16 +01:00
|
|
|
return false;
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void HandleProc(AuraEffect const* aurEff, ProcEventInfo& eventInfo)
|
|
|
|
|
{
|
|
|
|
|
PreventDefaultAction();
|
|
|
|
|
|
2015-02-08 19:40:03 +01:00
|
|
|
SpellInfo const* triggeredSpellInfo = sSpellMgr->AssertSpellInfo(SPELL_PRIEST_GLYPH_OF_PRAYER_OF_HEALING_HEAL);
|
2014-11-24 18:57:49 +01:00
|
|
|
int32 heal = int32(CalculatePct(int32(eventInfo.GetHealInfo()->GetHeal()), aurEff->GetAmount()) / triggeredSpellInfo->GetMaxTicks(DIFFICULTY_NONE));
|
2013-01-26 19:48:54 +01:00
|
|
|
GetTarget()->CastCustomSpell(SPELL_PRIEST_GLYPH_OF_PRAYER_OF_HEALING_HEAL, SPELLVALUE_BASE_POINT0, heal, eventInfo.GetProcTarget(), true, NULL, aurEff);
|
2013-01-22 00:20:16 +01:00
|
|
|
}
|
|
|
|
|
|
2014-04-29 16:35:11 +02:00
|
|
|
void Register() override
|
2013-01-22 00:20:16 +01:00
|
|
|
{
|
|
|
|
|
OnEffectProc += AuraEffectProcFn(spell_pri_glyph_of_prayer_of_healing_AuraScript::HandleProc, EFFECT_0, SPELL_AURA_DUMMY);
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
2014-04-29 16:35:11 +02:00
|
|
|
AuraScript* GetAuraScript() const override
|
2013-01-22 00:20:16 +01:00
|
|
|
{
|
|
|
|
|
return new spell_pri_glyph_of_prayer_of_healing_AuraScript();
|
|
|
|
|
}
|
2010-07-27 21:12:40 -07:00
|
|
|
};
|
|
|
|
|
|
2017-02-12 21:46:00 -05:00
|
|
|
// 24191 - Improved Power Word Shield
|
2013-07-24 02:32:52 +02:00
|
|
|
class spell_pri_improved_power_word_shield : public SpellScriptLoader
|
|
|
|
|
{
|
|
|
|
|
public:
|
|
|
|
|
spell_pri_improved_power_word_shield() : SpellScriptLoader("spell_pri_improved_power_word_shield") { }
|
|
|
|
|
|
|
|
|
|
class spell_pri_improved_power_word_shield_AuraScript : public AuraScript
|
|
|
|
|
{
|
|
|
|
|
PrepareAuraScript(spell_pri_improved_power_word_shield_AuraScript);
|
|
|
|
|
|
|
|
|
|
void HandleEffectCalcSpellMod(AuraEffect const* aurEff, SpellModifier*& spellMod)
|
|
|
|
|
{
|
|
|
|
|
if (!spellMod)
|
|
|
|
|
{
|
|
|
|
|
spellMod = new SpellModifier(GetAura());
|
|
|
|
|
spellMod->op = SpellModOp(aurEff->GetMiscValue());
|
|
|
|
|
spellMod->type = SPELLMOD_PCT;
|
|
|
|
|
spellMod->spellId = GetId();
|
2014-11-24 18:57:49 +01:00
|
|
|
spellMod->mask = GetSpellInfo()->GetEffect(aurEff->GetEffIndex())->SpellClassMask;
|
2013-07-24 02:32:52 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
spellMod->value = aurEff->GetAmount();
|
|
|
|
|
}
|
|
|
|
|
|
2014-04-29 20:14:42 +02:00
|
|
|
void Register() override
|
2013-07-24 02:32:52 +02:00
|
|
|
{
|
|
|
|
|
DoEffectCalcSpellMod += AuraEffectCalcSpellModFn(spell_pri_improved_power_word_shield_AuraScript::HandleEffectCalcSpellMod, EFFECT_0, SPELL_AURA_DUMMY);
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
2014-04-29 20:14:42 +02:00
|
|
|
AuraScript* GetAuraScript() const override
|
2013-07-24 02:32:52 +02:00
|
|
|
{
|
|
|
|
|
return new spell_pri_improved_power_word_shield_AuraScript();
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
2013-07-18 15:23:09 +02:00
|
|
|
// 37594 - Greater Heal Refund
|
|
|
|
|
class spell_pri_item_greater_heal_refund : public SpellScriptLoader
|
|
|
|
|
{
|
|
|
|
|
public:
|
|
|
|
|
spell_pri_item_greater_heal_refund() : SpellScriptLoader("spell_pri_item_greater_heal_refund") { }
|
|
|
|
|
|
|
|
|
|
class spell_pri_item_greater_heal_refund_AuraScript : public AuraScript
|
|
|
|
|
{
|
|
|
|
|
PrepareAuraScript(spell_pri_item_greater_heal_refund_AuraScript);
|
|
|
|
|
|
2014-04-29 20:14:42 +02:00
|
|
|
bool Validate(SpellInfo const* /*spellInfo*/) override
|
2013-07-18 15:23:09 +02:00
|
|
|
{
|
|
|
|
|
if (!sSpellMgr->GetSpellInfo(SPELL_PRIEST_ITEM_EFFICIENCY))
|
|
|
|
|
return false;
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
2013-07-20 01:46:12 +02:00
|
|
|
void OnProc(AuraEffect const* aurEff, ProcEventInfo& /*eventInfo*/)
|
2013-07-18 15:23:09 +02:00
|
|
|
{
|
|
|
|
|
PreventDefaultAction();
|
|
|
|
|
GetTarget()->CastSpell(GetTarget(), SPELL_PRIEST_ITEM_EFFICIENCY, true, NULL, aurEff);
|
|
|
|
|
}
|
|
|
|
|
|
2014-04-29 20:14:42 +02:00
|
|
|
void Register() override
|
2013-07-18 15:23:09 +02:00
|
|
|
{
|
|
|
|
|
OnEffectProc += AuraEffectProcFn(spell_pri_item_greater_heal_refund_AuraScript::OnProc, EFFECT_0, SPELL_AURA_PROC_TRIGGER_SPELL);
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
2014-04-29 20:14:42 +02:00
|
|
|
AuraScript* GetAuraScript() const override
|
2013-07-18 15:23:09 +02:00
|
|
|
{
|
|
|
|
|
return new spell_pri_item_greater_heal_refund_AuraScript();
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
2013-01-11 19:10:10 +01:00
|
|
|
// 47788 - Guardian Spirit
|
2010-12-30 02:03:46 +01:00
|
|
|
class spell_pri_guardian_spirit : public SpellScriptLoader
|
|
|
|
|
{
|
2011-01-22 17:21:24 +01:00
|
|
|
public:
|
|
|
|
|
spell_pri_guardian_spirit() : SpellScriptLoader("spell_pri_guardian_spirit") { }
|
2010-12-30 02:03:46 +01:00
|
|
|
|
2011-01-22 17:21:24 +01:00
|
|
|
class spell_pri_guardian_spirit_AuraScript : public AuraScript
|
|
|
|
|
{
|
|
|
|
|
PrepareAuraScript(spell_pri_guardian_spirit_AuraScript);
|
2010-12-30 02:03:46 +01:00
|
|
|
|
2014-09-25 21:10:00 +02:00
|
|
|
public:
|
|
|
|
|
spell_pri_guardian_spirit_AuraScript()
|
|
|
|
|
{
|
|
|
|
|
healPct = 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private:
|
2011-01-22 17:21:24 +01:00
|
|
|
uint32 healPct;
|
2010-12-30 02:03:46 +01:00
|
|
|
|
2014-04-29 16:35:11 +02:00
|
|
|
bool Validate(SpellInfo const* /*spellInfo*/) override
|
2011-01-22 17:21:24 +01:00
|
|
|
{
|
2013-01-11 04:18:02 +01:00
|
|
|
if (!sSpellMgr->GetSpellInfo(SPELL_PRIEST_GUARDIAN_SPIRIT_HEAL))
|
2012-02-18 12:12:49 +01:00
|
|
|
return false;
|
|
|
|
|
return true;
|
2011-01-22 17:21:24 +01:00
|
|
|
}
|
2010-12-30 02:03:46 +01:00
|
|
|
|
2014-04-29 16:35:11 +02:00
|
|
|
bool Load() override
|
2011-01-22 17:21:24 +01:00
|
|
|
{
|
2014-11-24 18:57:49 +01:00
|
|
|
healPct = GetSpellInfo()->GetEffect(EFFECT_1)->CalcValue();
|
2011-01-22 17:21:24 +01:00
|
|
|
return true;
|
|
|
|
|
}
|
2010-12-30 02:03:46 +01:00
|
|
|
|
2011-06-11 22:35:29 +02:00
|
|
|
void CalculateAmount(AuraEffect const* /*aurEff*/, int32 & amount, bool & /*canBeRecalculated*/)
|
2011-01-22 17:21:24 +01:00
|
|
|
{
|
|
|
|
|
// Set absorbtion amount to unlimited
|
|
|
|
|
amount = -1;
|
|
|
|
|
}
|
2010-12-30 02:03:46 +01:00
|
|
|
|
2011-09-29 09:32:55 +02:00
|
|
|
void Absorb(AuraEffect* /*aurEff*/, DamageInfo & dmgInfo, uint32 & absorbAmount)
|
2011-01-22 17:21:24 +01:00
|
|
|
{
|
2011-06-11 22:35:29 +02:00
|
|
|
Unit* target = GetTarget();
|
2011-01-22 17:21:24 +01:00
|
|
|
if (dmgInfo.GetDamage() < target->GetHealth())
|
|
|
|
|
return;
|
2010-12-30 02:03:46 +01:00
|
|
|
|
2011-01-22 17:21:24 +01:00
|
|
|
int32 healAmount = int32(target->CountPctFromMaxHealth(healPct));
|
|
|
|
|
// remove the aura now, we don't want 40% healing bonus
|
|
|
|
|
Remove(AURA_REMOVE_BY_ENEMY_SPELL);
|
2013-01-11 04:18:02 +01:00
|
|
|
target->CastCustomSpell(target, SPELL_PRIEST_GUARDIAN_SPIRIT_HEAL, &healAmount, NULL, NULL, true);
|
2011-01-22 17:21:24 +01:00
|
|
|
absorbAmount = dmgInfo.GetDamage();
|
|
|
|
|
}
|
|
|
|
|
|
2014-04-29 16:35:11 +02:00
|
|
|
void Register() override
|
2011-01-22 17:21:24 +01:00
|
|
|
{
|
|
|
|
|
DoEffectCalcAmount += AuraEffectCalcAmountFn(spell_pri_guardian_spirit_AuraScript::CalculateAmount, EFFECT_1, SPELL_AURA_SCHOOL_ABSORB);
|
|
|
|
|
OnEffectAbsorb += AuraEffectAbsorbFn(spell_pri_guardian_spirit_AuraScript::Absorb, EFFECT_1);
|
|
|
|
|
}
|
|
|
|
|
};
|
2010-12-30 02:03:46 +01:00
|
|
|
|
2014-04-29 16:35:11 +02:00
|
|
|
AuraScript* GetAuraScript() const override
|
2010-12-30 02:03:46 +01:00
|
|
|
{
|
2011-01-22 17:21:24 +01:00
|
|
|
return new spell_pri_guardian_spirit_AuraScript();
|
2010-12-30 02:03:46 +01:00
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
2014-01-26 02:24:57 +01:00
|
|
|
// 64904 - Hymn of Hope
|
|
|
|
|
class spell_pri_hymn_of_hope : public SpellScriptLoader
|
|
|
|
|
{
|
|
|
|
|
public:
|
|
|
|
|
spell_pri_hymn_of_hope() : SpellScriptLoader("spell_pri_hymn_of_hope") { }
|
|
|
|
|
|
|
|
|
|
class spell_pri_hymn_of_hope_SpellScript : public SpellScript
|
|
|
|
|
{
|
|
|
|
|
PrepareSpellScript(spell_pri_hymn_of_hope_SpellScript);
|
|
|
|
|
|
|
|
|
|
void FilterTargets(std::list<WorldObject*>& targets)
|
|
|
|
|
{
|
|
|
|
|
targets.remove_if(PowerCheck(POWER_MANA));
|
|
|
|
|
targets.remove_if(RaidCheck(GetCaster()));
|
|
|
|
|
|
|
|
|
|
uint32 const maxTargets = 3;
|
|
|
|
|
|
|
|
|
|
if (targets.size() > maxTargets)
|
|
|
|
|
{
|
|
|
|
|
targets.sort(Trinity::PowerPctOrderPred(POWER_MANA));
|
|
|
|
|
targets.resize(maxTargets);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2014-04-29 16:35:11 +02:00
|
|
|
void Register() override
|
2014-01-26 02:24:57 +01:00
|
|
|
{
|
2014-05-26 20:42:53 +01:00
|
|
|
OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_pri_hymn_of_hope_SpellScript::FilterTargets, EFFECT_ALL, TARGET_UNIT_SRC_AREA_ALLY);
|
2014-01-26 02:24:57 +01:00
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
2014-04-29 16:35:11 +02:00
|
|
|
SpellScript* GetSpellScript() const override
|
2014-01-26 02:24:57 +01:00
|
|
|
{
|
|
|
|
|
return new spell_pri_hymn_of_hope_SpellScript();
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
2013-01-11 19:10:10 +01:00
|
|
|
// 92833 - Leap of Faith
|
2012-11-25 21:07:08 +01:00
|
|
|
class spell_pri_leap_of_faith_effect_trigger : public SpellScriptLoader
|
|
|
|
|
{
|
2013-01-11 19:10:10 +01:00
|
|
|
public:
|
|
|
|
|
spell_pri_leap_of_faith_effect_trigger() : SpellScriptLoader("spell_pri_leap_of_faith_effect_trigger") { }
|
2012-11-25 21:07:08 +01:00
|
|
|
|
2013-01-11 19:10:10 +01:00
|
|
|
class spell_pri_leap_of_faith_effect_trigger_SpellScript : public SpellScript
|
2012-11-25 21:07:08 +01:00
|
|
|
{
|
2013-01-11 19:10:10 +01:00
|
|
|
PrepareSpellScript(spell_pri_leap_of_faith_effect_trigger_SpellScript);
|
2012-11-25 21:07:08 +01:00
|
|
|
|
2014-04-29 16:35:11 +02:00
|
|
|
bool Validate(SpellInfo const* /*spellInfo*/) override
|
2013-01-11 19:10:10 +01:00
|
|
|
{
|
|
|
|
|
if (!sSpellMgr->GetSpellInfo(SPELL_PRIEST_LEAP_OF_FAITH_EFFECT))
|
|
|
|
|
return false;
|
|
|
|
|
return true;
|
|
|
|
|
}
|
2012-11-25 21:07:08 +01:00
|
|
|
|
2013-01-11 19:10:10 +01:00
|
|
|
void HandleEffectDummy(SpellEffIndex /*effIndex*/)
|
|
|
|
|
{
|
2014-04-25 23:42:40 +02:00
|
|
|
Position destPos = GetHitDest()->GetPosition();
|
2012-11-25 21:07:08 +01:00
|
|
|
|
2013-01-11 19:10:10 +01:00
|
|
|
SpellCastTargets targets;
|
|
|
|
|
targets.SetDst(destPos);
|
|
|
|
|
targets.SetUnitTarget(GetCaster());
|
|
|
|
|
GetHitUnit()->CastSpell(targets, sSpellMgr->GetSpellInfo(GetEffectValue()), NULL);
|
|
|
|
|
}
|
|
|
|
|
|
2014-04-29 16:35:11 +02:00
|
|
|
void Register() override
|
2013-01-11 19:10:10 +01:00
|
|
|
{
|
|
|
|
|
OnEffectHitTarget += SpellEffectFn(spell_pri_leap_of_faith_effect_trigger_SpellScript::HandleEffectDummy, EFFECT_0, SPELL_EFFECT_DUMMY);
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
2014-04-29 20:14:42 +02:00
|
|
|
SpellScript* GetSpellScript() const override
|
2012-11-25 21:07:08 +01:00
|
|
|
{
|
2013-01-11 19:10:10 +01:00
|
|
|
return new spell_pri_leap_of_faith_effect_trigger_SpellScript();
|
2012-11-25 21:07:08 +01:00
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
2017-02-10 23:03:19 +01:00
|
|
|
// 1706 - Levitate
|
|
|
|
|
class spell_pri_levitate : public SpellScriptLoader
|
|
|
|
|
{
|
|
|
|
|
public:
|
|
|
|
|
spell_pri_levitate() : SpellScriptLoader("spell_pri_levitate") { }
|
|
|
|
|
|
|
|
|
|
class spell_pri_levitate_SpellScript : public SpellScript
|
|
|
|
|
{
|
|
|
|
|
PrepareSpellScript(spell_pri_levitate_SpellScript);
|
|
|
|
|
|
|
|
|
|
bool Validate(SpellInfo const* /*spellInfo*/) override
|
|
|
|
|
{
|
|
|
|
|
if (!sSpellMgr->GetSpellInfo(SPELL_PRIEST_LEVITATE_EFFECT))
|
|
|
|
|
return false;
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void HandleDummy(SpellEffIndex /*effIndex*/)
|
|
|
|
|
{
|
|
|
|
|
GetCaster()->CastSpell(GetHitUnit(), SPELL_PRIEST_LEVITATE_EFFECT, true);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void Register() override
|
|
|
|
|
{
|
|
|
|
|
OnEffectHitTarget += SpellEffectFn(spell_pri_levitate_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY);
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
SpellScript* GetSpellScript() const
|
|
|
|
|
{
|
|
|
|
|
return new spell_pri_levitate_SpellScript;
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
2013-07-25 14:14:30 +02:00
|
|
|
// 7001 - Lightwell Renew
|
2013-01-20 04:30:17 +01:00
|
|
|
class spell_pri_lightwell_renew : public SpellScriptLoader
|
|
|
|
|
{
|
|
|
|
|
public:
|
|
|
|
|
spell_pri_lightwell_renew() : SpellScriptLoader("spell_pri_lightwell_renew") { }
|
|
|
|
|
|
|
|
|
|
class spell_pri_lightwell_renew_AuraScript : public AuraScript
|
|
|
|
|
{
|
|
|
|
|
PrepareAuraScript(spell_pri_lightwell_renew_AuraScript);
|
|
|
|
|
|
|
|
|
|
void CalculateAmount(AuraEffect const* /*aurEff*/, int32& amount, bool& /*canBeRecalculated*/)
|
|
|
|
|
{
|
|
|
|
|
if (Unit* caster = GetCaster())
|
|
|
|
|
{
|
|
|
|
|
// Bonus from Glyph of Lightwell
|
2013-01-26 19:48:54 +01:00
|
|
|
if (AuraEffect* modHealing = caster->GetAuraEffect(SPELL_PRIEST_GLYPH_OF_LIGHTWELL, EFFECT_0))
|
2013-01-20 04:30:17 +01:00
|
|
|
AddPct(amount, modHealing->GetAmount());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2014-04-29 16:35:11 +02:00
|
|
|
void Register() override
|
2013-01-20 04:30:17 +01:00
|
|
|
{
|
|
|
|
|
DoEffectCalcAmount += AuraEffectCalcAmountFn(spell_pri_lightwell_renew_AuraScript::CalculateAmount, EFFECT_0, SPELL_AURA_PERIODIC_HEAL);
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
2014-04-29 16:35:11 +02:00
|
|
|
AuraScript* GetAuraScript() const override
|
2013-01-20 04:30:17 +01:00
|
|
|
{
|
|
|
|
|
return new spell_pri_lightwell_renew_AuraScript();
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
2013-01-11 19:10:10 +01:00
|
|
|
// 8129 - Mana Burn
|
2010-09-18 19:26:34 -07:00
|
|
|
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
|
|
|
|
|
{
|
2011-01-22 17:21:24 +01:00
|
|
|
PrepareSpellScript(spell_pri_mana_burn_SpellScript);
|
2010-09-18 19:26:34 -07:00
|
|
|
|
|
|
|
|
void HandleAfterHit()
|
|
|
|
|
{
|
2012-02-18 12:12:49 +01:00
|
|
|
if (Unit* unitTarget = GetHitUnit())
|
|
|
|
|
unitTarget->RemoveAurasWithMechanic((1 << MECHANIC_FEAR) | (1 << MECHANIC_POLYMORPH));
|
2010-09-18 19:26:34 -07:00
|
|
|
}
|
|
|
|
|
|
2014-04-29 16:35:11 +02:00
|
|
|
void Register() override
|
2010-09-18 19:26:34 -07:00
|
|
|
{
|
|
|
|
|
AfterHit += SpellHitFn(spell_pri_mana_burn_SpellScript::HandleAfterHit);
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
2014-04-29 16:35:11 +02:00
|
|
|
SpellScript* GetSpellScript() const override
|
2010-09-18 19:26:34 -07:00
|
|
|
{
|
|
|
|
|
return new spell_pri_mana_burn_SpellScript;
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
2013-01-22 00:20:16 +01:00
|
|
|
// 28305 - Mana Leech (Passive) (Priest Pet Aura)
|
|
|
|
|
class spell_pri_mana_leech : public SpellScriptLoader
|
|
|
|
|
{
|
|
|
|
|
public:
|
|
|
|
|
spell_pri_mana_leech() : SpellScriptLoader("spell_pri_mana_leech") { }
|
|
|
|
|
|
|
|
|
|
class spell_pri_mana_leech_AuraScript : public AuraScript
|
|
|
|
|
{
|
|
|
|
|
PrepareAuraScript(spell_pri_mana_leech_AuraScript);
|
|
|
|
|
|
2014-09-25 21:10:00 +02:00
|
|
|
public:
|
|
|
|
|
spell_pri_mana_leech_AuraScript()
|
2013-01-22 00:20:16 +01:00
|
|
|
{
|
2014-09-25 21:10:00 +02:00
|
|
|
_procTarget = nullptr;
|
2013-01-22 00:20:16 +01:00
|
|
|
}
|
|
|
|
|
|
2014-09-25 21:10:00 +02:00
|
|
|
private:
|
|
|
|
|
bool Validate(SpellInfo const* /*spellInfo*/) override
|
2013-01-22 00:20:16 +01:00
|
|
|
{
|
2014-09-25 21:10:00 +02:00
|
|
|
if (!sSpellMgr->GetSpellInfo(SPELL_PRIEST_MANA_LEECH_PROC))
|
|
|
|
|
return false;
|
2013-01-22 00:20:16 +01:00
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool CheckProc(ProcEventInfo& /*eventInfo*/)
|
|
|
|
|
{
|
|
|
|
|
_procTarget = GetTarget()->GetOwner();
|
2014-07-17 15:42:57 +02:00
|
|
|
return _procTarget != nullptr;
|
2013-01-22 00:20:16 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void HandleProc(AuraEffect const* aurEff, ProcEventInfo& /*eventInfo*/)
|
|
|
|
|
{
|
|
|
|
|
PreventDefaultAction();
|
|
|
|
|
GetTarget()->CastSpell(_procTarget, SPELL_PRIEST_MANA_LEECH_PROC, true, NULL, aurEff);
|
|
|
|
|
}
|
|
|
|
|
|
2014-04-29 16:35:11 +02:00
|
|
|
void Register() override
|
2013-01-22 00:20:16 +01:00
|
|
|
{
|
|
|
|
|
DoCheckProc += AuraCheckProcFn(spell_pri_mana_leech_AuraScript::CheckProc);
|
|
|
|
|
OnEffectProc += AuraEffectProcFn(spell_pri_mana_leech_AuraScript::HandleProc, EFFECT_0, SPELL_AURA_DUMMY);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
Unit* _procTarget;
|
|
|
|
|
};
|
|
|
|
|
|
2014-04-29 16:35:11 +02:00
|
|
|
AuraScript* GetAuraScript() const override
|
2013-01-22 00:20:16 +01:00
|
|
|
{
|
|
|
|
|
return new spell_pri_mana_leech_AuraScript();
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
2013-01-11 19:10:10 +01:00
|
|
|
// 49821 - Mind Sear
|
2011-01-22 17:21:24 +01:00
|
|
|
class spell_pri_mind_sear : public SpellScriptLoader
|
|
|
|
|
{
|
|
|
|
|
public:
|
|
|
|
|
spell_pri_mind_sear() : SpellScriptLoader("spell_pri_mind_sear") { }
|
|
|
|
|
|
|
|
|
|
class spell_pri_mind_sear_SpellScript : public SpellScript
|
|
|
|
|
{
|
|
|
|
|
PrepareSpellScript(spell_pri_mind_sear_SpellScript);
|
|
|
|
|
|
2012-06-29 21:53:35 +02:00
|
|
|
void FilterTargets(std::list<WorldObject*>& unitList)
|
2011-01-22 17:21:24 +01:00
|
|
|
{
|
2014-09-14 16:14:12 +02:00
|
|
|
unitList.remove_if(Trinity::ObjectGUIDCheck(GetCaster()->GetChannelObjectGuid()));
|
2011-01-22 17:21:24 +01:00
|
|
|
}
|
|
|
|
|
|
2014-04-29 16:35:11 +02:00
|
|
|
void Register() override
|
2011-01-22 17:21:24 +01:00
|
|
|
{
|
2012-06-29 21:53:35 +02:00
|
|
|
OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_pri_mind_sear_SpellScript::FilterTargets, EFFECT_0, TARGET_UNIT_DEST_AREA_ENEMY);
|
2011-01-22 17:21:24 +01:00
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
2014-04-29 16:35:11 +02:00
|
|
|
SpellScript* GetSpellScript() const override
|
2011-01-22 17:21:24 +01:00
|
|
|
{
|
|
|
|
|
return new spell_pri_mind_sear_SpellScript();
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
2013-01-11 04:18:02 +01:00
|
|
|
// 47948 - Pain and Suffering (Proc)
|
2010-08-24 00:10:49 +02:00
|
|
|
class spell_pri_pain_and_suffering_proc : public SpellScriptLoader
|
2010-08-06 23:03:43 +06:00
|
|
|
{
|
2010-08-06 11:35:39 -07:00
|
|
|
public:
|
2010-08-24 00:10:49 +02:00
|
|
|
spell_pri_pain_and_suffering_proc() : SpellScriptLoader("spell_pri_pain_and_suffering_proc") { }
|
2010-08-06 11:35:39 -07:00
|
|
|
|
|
|
|
|
class spell_pri_pain_and_suffering_proc_SpellScript : public SpellScript
|
|
|
|
|
{
|
2011-01-22 17:21:24 +01:00
|
|
|
PrepareSpellScript(spell_pri_pain_and_suffering_proc_SpellScript);
|
|
|
|
|
|
2010-08-23 14:10:24 +02:00
|
|
|
void HandleEffectScriptEffect(SpellEffIndex /*effIndex*/)
|
2010-08-06 11:35:39 -07:00
|
|
|
{
|
2014-06-04 15:49:48 +02:00
|
|
|
Unit* caster = GetCaster();
|
2010-08-06 11:35:39 -07:00
|
|
|
// Refresh Shadow Word: Pain on target
|
2014-06-04 15:49:48 +02:00
|
|
|
if (Unit* target = GetHitUnit())
|
2015-04-27 00:33:27 +02:00
|
|
|
if (AuraEffect* aur = target->GetAuraEffect(SPELL_AURA_PERIODIC_DAMAGE, SPELLFAMILY_PRIEST, flag128(0x8000, 0, 0), caster->GetGUID()))
|
2014-06-04 15:49:48 +02:00
|
|
|
{
|
|
|
|
|
uint32 damage = std::max(aur->GetAmount(), 0);
|
|
|
|
|
sScriptMgr->ModifyPeriodicDamageAurasTick(target, caster, damage);
|
2014-12-19 23:52:29 +01:00
|
|
|
aur->SetDamage(caster->SpellDamageBonusDone(target, aur->GetSpellInfo(), damage, DOT, aur->GetSpellEffectInfo()) * aur->GetDonePct());
|
2014-06-04 15:49:48 +02:00
|
|
|
aur->CalculatePeriodic(caster, false, false);
|
2010-08-06 11:35:39 -07:00
|
|
|
aur->GetBase()->RefreshDuration();
|
2014-06-04 15:49:48 +02:00
|
|
|
}
|
2010-08-06 11:35:39 -07:00
|
|
|
}
|
|
|
|
|
|
2014-04-29 16:35:11 +02:00
|
|
|
void Register() override
|
2010-08-06 11:35:39 -07:00
|
|
|
{
|
2011-09-25 13:29:17 +02:00
|
|
|
OnEffectHitTarget += SpellEffectFn(spell_pri_pain_and_suffering_proc_SpellScript::HandleEffectScriptEffect, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
|
2010-08-06 11:35:39 -07:00
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
2014-04-29 16:35:11 +02:00
|
|
|
SpellScript* GetSpellScript() const override
|
2010-08-06 11:35:39 -07:00
|
|
|
{
|
|
|
|
|
return new spell_pri_pain_and_suffering_proc_SpellScript;
|
|
|
|
|
}
|
2010-08-06 23:03:43 +06:00
|
|
|
};
|
|
|
|
|
|
2013-01-11 19:10:10 +01:00
|
|
|
// 47540 - Penance
|
2010-08-24 00:10:49 +02:00
|
|
|
class spell_pri_penance : public SpellScriptLoader
|
2010-08-06 23:03:43 +06:00
|
|
|
{
|
2010-08-06 11:35:39 -07:00
|
|
|
public:
|
2010-08-24 00:10:49 +02:00
|
|
|
spell_pri_penance() : SpellScriptLoader("spell_pri_penance") { }
|
2010-08-06 11:35:39 -07:00
|
|
|
|
|
|
|
|
class spell_pri_penance_SpellScript : public SpellScript
|
|
|
|
|
{
|
2011-01-22 17:21:24 +01:00
|
|
|
PrepareSpellScript(spell_pri_penance_SpellScript);
|
|
|
|
|
|
2014-04-29 16:35:11 +02:00
|
|
|
bool Load() override
|
2012-03-28 08:29:42 -04:00
|
|
|
{
|
|
|
|
|
return GetCaster()->GetTypeId() == TYPEID_PLAYER;
|
|
|
|
|
}
|
|
|
|
|
|
2014-04-29 16:35:11 +02:00
|
|
|
bool Validate(SpellInfo const* spellInfo) override
|
2010-08-06 11:35:39 -07:00
|
|
|
{
|
2013-07-21 13:37:34 +02:00
|
|
|
SpellInfo const* firstRankSpellInfo = sSpellMgr->GetSpellInfo(SPELL_PRIEST_PENANCE_R1);
|
|
|
|
|
if (!firstRankSpellInfo)
|
2010-08-06 11:35:39 -07:00
|
|
|
return false;
|
2013-07-21 13:37:34 +02:00
|
|
|
|
2010-08-06 11:35:39 -07:00
|
|
|
// can't use other spell than this penance due to spell_ranks dependency
|
2013-07-21 13:37:34 +02:00
|
|
|
if (!spellInfo->IsRankOf(firstRankSpellInfo))
|
2010-08-06 11:35:39 -07:00
|
|
|
return false;
|
|
|
|
|
|
2013-07-21 13:37:34 +02:00
|
|
|
uint8 rank = spellInfo->GetRank();
|
2013-01-11 04:18:02 +01:00
|
|
|
if (!sSpellMgr->GetSpellWithRank(SPELL_PRIEST_PENANCE_R1_DAMAGE, rank, true))
|
2010-08-06 11:35:39 -07:00
|
|
|
return false;
|
2013-01-11 04:18:02 +01:00
|
|
|
if (!sSpellMgr->GetSpellWithRank(SPELL_PRIEST_PENANCE_R1_HEAL, rank, true))
|
2010-08-06 11:35:39 -07:00
|
|
|
return false;
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
2010-08-23 14:10:24 +02:00
|
|
|
void HandleDummy(SpellEffIndex /*effIndex*/)
|
2010-08-06 11:35:39 -07:00
|
|
|
{
|
2011-06-30 14:24:56 +02:00
|
|
|
Unit* caster = GetCaster();
|
2017-02-12 21:46:00 -05:00
|
|
|
if (Unit* target = GetHitUnit())
|
2012-02-18 12:12:49 +01:00
|
|
|
{
|
2017-02-12 21:46:00 -05:00
|
|
|
if (!target->IsAlive())
|
2012-02-18 12:12:49 +01:00
|
|
|
return;
|
2010-08-06 11:35:39 -07:00
|
|
|
|
2013-07-21 13:37:34 +02:00
|
|
|
uint8 rank = GetSpellInfo()->GetRank();
|
2010-08-06 11:35:39 -07:00
|
|
|
|
2017-02-12 21:46:00 -05:00
|
|
|
if (caster->IsFriendlyTo(target))
|
|
|
|
|
caster->CastSpell(target, sSpellMgr->GetSpellWithRank(SPELL_PRIEST_PENANCE_R1_HEAL, rank), false);
|
2012-02-18 12:12:49 +01:00
|
|
|
else
|
2017-02-12 21:46:00 -05:00
|
|
|
caster->CastSpell(target, sSpellMgr->GetSpellWithRank(SPELL_PRIEST_PENANCE_R1_DAMAGE, rank), false);
|
2012-02-18 12:12:49 +01:00
|
|
|
}
|
2010-08-06 11:35:39 -07:00
|
|
|
}
|
|
|
|
|
|
2012-03-28 08:29:42 -04:00
|
|
|
SpellCastResult CheckCast()
|
|
|
|
|
{
|
|
|
|
|
Player* caster = GetCaster()->ToPlayer();
|
2012-04-28 14:53:40 +02:00
|
|
|
if (Unit* target = GetExplTargetUnit())
|
2017-02-12 21:46:00 -05:00
|
|
|
{
|
2015-12-19 11:32:25 +01:00
|
|
|
if (!caster->IsFriendlyTo(target))
|
|
|
|
|
{
|
|
|
|
|
if (!caster->IsValidAttackTarget(target))
|
|
|
|
|
return SPELL_FAILED_BAD_TARGETS;
|
2017-03-11 15:55:21 +01:00
|
|
|
|
2015-12-19 11:32:25 +01:00
|
|
|
if (!caster->isInFront(target))
|
|
|
|
|
return SPELL_FAILED_UNIT_NOT_INFRONT;
|
|
|
|
|
}
|
2017-02-12 21:46:00 -05:00
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
//Support for modifications of this spell in Legion with The Penitent talent (7.1.5)
|
|
|
|
|
if(!caster->HasAura(SPELL_PRIEST_THE_PENITENT_AURA))
|
|
|
|
|
return SPELL_FAILED_BAD_TARGETS;
|
|
|
|
|
|
|
|
|
|
if (!caster->isInFront(target))
|
|
|
|
|
return SPELL_FAILED_UNIT_NOT_INFRONT;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2012-03-28 08:29:42 -04:00
|
|
|
return SPELL_CAST_OK;
|
|
|
|
|
}
|
|
|
|
|
|
2014-04-29 16:35:11 +02:00
|
|
|
void Register() override
|
2010-08-06 11:35:39 -07:00
|
|
|
{
|
2011-09-25 13:29:17 +02:00
|
|
|
OnEffectHitTarget += SpellEffectFn(spell_pri_penance_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY);
|
2012-03-28 08:29:42 -04:00
|
|
|
OnCheckCast += SpellCheckCastFn(spell_pri_penance_SpellScript::CheckCast);
|
2010-08-06 11:35:39 -07:00
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
2014-04-29 16:35:11 +02:00
|
|
|
SpellScript* GetSpellScript() const override
|
2010-08-06 11:35:39 -07:00
|
|
|
{
|
|
|
|
|
return new spell_pri_penance_SpellScript;
|
|
|
|
|
}
|
2010-07-27 21:12:40 -07:00
|
|
|
};
|
|
|
|
|
|
2013-07-21 14:09:16 +02:00
|
|
|
// -47569 - Phantasm
|
|
|
|
|
class spell_pri_phantasm : public SpellScriptLoader
|
|
|
|
|
{
|
|
|
|
|
public:
|
|
|
|
|
spell_pri_phantasm() : SpellScriptLoader("spell_pri_phantasm") { }
|
|
|
|
|
|
|
|
|
|
class spell_pri_phantasm_AuraScript : public AuraScript
|
|
|
|
|
{
|
|
|
|
|
PrepareAuraScript(spell_pri_phantasm_AuraScript);
|
|
|
|
|
|
|
|
|
|
bool CheckProc(ProcEventInfo& /*eventInfo*/)
|
|
|
|
|
{
|
|
|
|
|
return roll_chance_i(GetEffect(EFFECT_0)->GetAmount());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void HandleEffectProc(AuraEffect const* /*aurEff*/, ProcEventInfo& /*eventInfo*/)
|
|
|
|
|
{
|
|
|
|
|
PreventDefaultAction();
|
|
|
|
|
GetTarget()->RemoveMovementImpairingAuras();
|
|
|
|
|
}
|
|
|
|
|
|
2014-04-29 20:14:42 +02:00
|
|
|
void Register() override
|
2013-07-21 14:09:16 +02:00
|
|
|
{
|
|
|
|
|
DoCheckProc += AuraCheckProcFn(spell_pri_phantasm_AuraScript::CheckProc);
|
|
|
|
|
OnEffectProc += AuraEffectProcFn(spell_pri_phantasm_AuraScript::HandleEffectProc, EFFECT_0, SPELL_AURA_DUMMY);
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
2014-04-29 20:14:42 +02:00
|
|
|
AuraScript* GetAuraScript() const override
|
2013-07-21 14:09:16 +02:00
|
|
|
{
|
|
|
|
|
return new spell_pri_phantasm_AuraScript();
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
2017-03-11 15:55:21 +01:00
|
|
|
// 17 - Power Word: Shield
|
|
|
|
|
class spell_pri_power_word_shield : public SpellScriptLoader
|
|
|
|
|
{
|
|
|
|
|
public:
|
|
|
|
|
spell_pri_power_word_shield() : SpellScriptLoader("spell_pri_power_word_shield") { }
|
|
|
|
|
|
|
|
|
|
class spell_pri_power_word_shield_AuraScript : public AuraScript
|
|
|
|
|
{
|
|
|
|
|
PrepareAuraScript(spell_pri_power_word_shield_AuraScript);
|
|
|
|
|
|
|
|
|
|
void CalculateAmount(AuraEffect const* /*auraEffect*/, int32& amount, bool& canBeRecalculated)
|
|
|
|
|
{
|
|
|
|
|
canBeRecalculated = false;
|
|
|
|
|
|
|
|
|
|
if (Player* player = GetCaster()->ToPlayer())
|
|
|
|
|
{
|
|
|
|
|
int32 playerMastery = player->GetRatingBonusValue(CR_MASTERY);
|
|
|
|
|
int32 playerSpellPower = player->SpellBaseDamageBonusDone(SPELL_SCHOOL_MASK_HOLY);
|
|
|
|
|
int32 playerVersatileDamage = player->GetRatingBonusValue(CR_VERSATILITY_DAMAGE_DONE);
|
|
|
|
|
|
|
|
|
|
//Formula taken from SpellWork
|
|
|
|
|
amount = (int32)((playerSpellPower * 5.5f) + playerMastery) * (1 + playerVersatileDamage);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void OnApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
|
|
|
|
|
{
|
|
|
|
|
Unit* caster = GetCaster();
|
|
|
|
|
Unit* target = GetTarget();
|
|
|
|
|
if (!caster)
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
if (caster->HasAura(SPELL_PRIEST_BODY_AND_SOUL))
|
|
|
|
|
caster->CastSpell(target, SPELL_PRIEST_BODY_AND_SOUL_SPEED, true);
|
|
|
|
|
if (caster->HasAura(SPELL_PRIEST_STRENGTH_OF_SOUL))
|
|
|
|
|
caster->CastSpell(target, SPELL_PRIEST_STRENGTH_OF_SOUL_EFFECT, true);
|
|
|
|
|
if (caster->HasAura(SPELL_PRIEST_RENEWED_HOPE))
|
|
|
|
|
caster->CastSpell(target, SPELL_PRIEST_RENEWED_HOPE_EFFECT, true);
|
|
|
|
|
if (caster->HasAura(SPELL_PRIEST_VOID_SHIELD) && caster == target)
|
|
|
|
|
caster->CastSpell(target, SPELL_PRIEST_VOID_SHIELD_EFFECT, true);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void HandleOnRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
|
|
|
|
|
{
|
|
|
|
|
GetTarget()->RemoveAura(SPELL_PRIEST_STRENGTH_OF_SOUL_EFFECT);
|
|
|
|
|
if (Unit* caster = GetCaster())
|
|
|
|
|
if (GetTargetApplication()->GetRemoveMode() == AURA_REMOVE_BY_ENEMY_SPELL && caster->HasAura(SPELL_PRIEST_SHIELD_DISCIPLINE_PASSIVE))
|
|
|
|
|
caster->CastSpell(caster, SPELL_PRIEST_SHIELD_DISCIPLINE_ENERGIZE, true);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void Register() override
|
|
|
|
|
{
|
|
|
|
|
DoEffectCalcAmount += AuraEffectCalcAmountFn(spell_pri_power_word_shield_AuraScript::CalculateAmount, EFFECT_0, SPELL_AURA_SCHOOL_ABSORB);
|
|
|
|
|
OnEffectApply += AuraEffectApplyFn(spell_pri_power_word_shield_AuraScript::OnApply, EFFECT_0, SPELL_AURA_SCHOOL_ABSORB, AURA_EFFECT_HANDLE_REAL);
|
|
|
|
|
AfterEffectRemove += AuraEffectRemoveFn(spell_pri_power_word_shield_AuraScript::HandleOnRemove, EFFECT_0, AuraType::SPELL_AURA_SCHOOL_ABSORB, AURA_EFFECT_HANDLE_REAL);
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
AuraScript* GetAuraScript() const override
|
|
|
|
|
{
|
|
|
|
|
return new spell_pri_power_word_shield_AuraScript();
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
2013-01-11 04:18:02 +01:00
|
|
|
// 33110 - Prayer of Mending Heal
|
|
|
|
|
class spell_pri_prayer_of_mending_heal : public SpellScriptLoader
|
2010-12-30 02:03:46 +01:00
|
|
|
{
|
2011-01-22 17:21:24 +01:00
|
|
|
public:
|
2013-01-11 04:18:02 +01:00
|
|
|
spell_pri_prayer_of_mending_heal() : SpellScriptLoader("spell_pri_prayer_of_mending_heal") { }
|
2010-12-30 02:03:46 +01:00
|
|
|
|
2013-01-11 04:18:02 +01:00
|
|
|
class spell_pri_prayer_of_mending_heal_SpellScript : public SpellScript
|
2010-12-30 02:03:46 +01:00
|
|
|
{
|
2013-01-11 04:18:02 +01:00
|
|
|
PrepareSpellScript(spell_pri_prayer_of_mending_heal_SpellScript);
|
2010-12-30 02:03:46 +01:00
|
|
|
|
2013-01-11 04:18:02 +01:00
|
|
|
void HandleHeal(SpellEffIndex /*effIndex*/)
|
2011-01-22 17:21:24 +01:00
|
|
|
{
|
2013-01-11 04:18:02 +01:00
|
|
|
if (Unit* caster = GetOriginalCaster())
|
|
|
|
|
{
|
|
|
|
|
if (AuraEffect* aurEff = caster->GetAuraEffect(SPELL_PRIEST_T9_HEALING_2P, EFFECT_0))
|
2012-02-18 12:12:49 +01:00
|
|
|
{
|
2013-01-11 04:18:02 +01:00
|
|
|
int32 heal = GetHitHeal();
|
|
|
|
|
AddPct(heal, aurEff->GetAmount());
|
|
|
|
|
SetHitHeal(heal);
|
2012-02-18 12:12:49 +01:00
|
|
|
}
|
2013-01-11 04:18:02 +01:00
|
|
|
}
|
2010-12-30 02:03:46 +01:00
|
|
|
}
|
|
|
|
|
|
2014-04-29 16:35:11 +02:00
|
|
|
void Register() override
|
2011-01-22 17:21:24 +01:00
|
|
|
{
|
2013-01-11 04:18:02 +01:00
|
|
|
OnEffectHitTarget += SpellEffectFn(spell_pri_prayer_of_mending_heal_SpellScript::HandleHeal, EFFECT_0, SPELL_EFFECT_HEAL);
|
2011-01-22 17:21:24 +01:00
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
2014-04-29 16:35:11 +02:00
|
|
|
SpellScript* GetSpellScript() const override
|
2012-04-25 09:02:09 -04:00
|
|
|
{
|
2013-01-11 04:18:02 +01:00
|
|
|
return new spell_pri_prayer_of_mending_heal_SpellScript();
|
2012-04-25 09:02:09 -04:00
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
2013-01-11 19:10:10 +01:00
|
|
|
// 139 - Renew
|
2012-11-25 21:07:08 +01:00
|
|
|
class spell_pri_renew : public SpellScriptLoader
|
2012-06-09 00:14:55 +02:00
|
|
|
{
|
|
|
|
|
public:
|
2012-11-25 21:07:08 +01:00
|
|
|
spell_pri_renew() : SpellScriptLoader("spell_pri_renew") { }
|
2012-06-09 00:14:55 +02:00
|
|
|
|
2012-11-25 21:07:08 +01:00
|
|
|
class spell_pri_renew_AuraScript : public AuraScript
|
2012-06-09 00:14:55 +02:00
|
|
|
{
|
2012-11-25 21:07:08 +01:00
|
|
|
PrepareAuraScript(spell_pri_renew_AuraScript);
|
2012-06-09 00:14:55 +02:00
|
|
|
|
2014-04-29 20:14:42 +02:00
|
|
|
bool Validate(SpellInfo const* /*spellInfo*/) override
|
2013-06-28 22:50:22 +02:00
|
|
|
{
|
|
|
|
|
if (!sSpellMgr->GetSpellInfo(SPELL_PRIEST_DIVINE_TOUCH))
|
|
|
|
|
return false;
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
2014-04-29 16:35:11 +02:00
|
|
|
bool Load() override
|
2012-06-09 00:14:55 +02:00
|
|
|
{
|
|
|
|
|
return GetCaster() && GetCaster()->GetTypeId() == TYPEID_PLAYER;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void HandleApplyEffect(AuraEffect const* aurEff, AuraEffectHandleModes /*mode*/)
|
|
|
|
|
{
|
|
|
|
|
if (Unit* caster = GetCaster())
|
|
|
|
|
{
|
2013-06-28 22:50:22 +02:00
|
|
|
// Divine Touch
|
|
|
|
|
if (AuraEffect const* empoweredRenewAurEff = caster->GetDummyAuraEffect(SPELLFAMILY_PRIEST, PRIEST_ICON_ID_DIVINE_TOUCH_TALENT, EFFECT_0))
|
2012-06-09 00:14:55 +02:00
|
|
|
{
|
2014-12-19 23:52:29 +01:00
|
|
|
uint32 heal = caster->SpellHealingBonusDone(GetTarget(), GetSpellInfo(), aurEff->GetAmount(), DOT, aurEff->GetSpellEffectInfo());
|
|
|
|
|
heal = GetTarget()->SpellHealingBonusTaken(caster, GetSpellInfo(), heal, DOT, aurEff->GetSpellEffectInfo());
|
2013-06-28 22:50:22 +02:00
|
|
|
int32 basepoints0 = CalculatePct(int32(heal) * aurEff->GetTotalTicks(), empoweredRenewAurEff->GetAmount());
|
|
|
|
|
caster->CastCustomSpell(GetTarget(), SPELL_PRIEST_DIVINE_TOUCH, &basepoints0, NULL, NULL, true, NULL, aurEff);
|
2012-06-09 00:14:55 +02:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2014-04-29 16:35:11 +02:00
|
|
|
void Register() override
|
2012-06-09 00:14:55 +02:00
|
|
|
{
|
2012-11-25 21:07:08 +01:00
|
|
|
OnEffectApply += AuraEffectApplyFn(spell_pri_renew_AuraScript::HandleApplyEffect, EFFECT_0, SPELL_AURA_PERIODIC_HEAL, AURA_EFFECT_HANDLE_REAL_OR_REAPPLY_MASK);
|
2012-06-09 00:14:55 +02:00
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
2014-04-29 16:35:11 +02:00
|
|
|
AuraScript* GetAuraScript() const override
|
2012-06-09 00:14:55 +02:00
|
|
|
{
|
2012-11-25 21:07:08 +01:00
|
|
|
return new spell_pri_renew_AuraScript();
|
2012-06-09 00:14:55 +02:00
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
2013-01-11 19:10:10 +01:00
|
|
|
// 32379 - Shadow Word Death
|
2012-07-10 22:27:29 +02:00
|
|
|
class spell_pri_shadow_word_death : public SpellScriptLoader
|
|
|
|
|
{
|
|
|
|
|
public:
|
|
|
|
|
spell_pri_shadow_word_death() : SpellScriptLoader("spell_pri_shadow_word_death") { }
|
|
|
|
|
|
|
|
|
|
class spell_pri_shadow_word_death_SpellScript : public SpellScript
|
|
|
|
|
{
|
|
|
|
|
PrepareSpellScript(spell_pri_shadow_word_death_SpellScript);
|
|
|
|
|
|
|
|
|
|
void HandleDamage()
|
|
|
|
|
{
|
|
|
|
|
int32 damage = GetHitDamage();
|
|
|
|
|
|
|
|
|
|
// Pain and Suffering reduces damage
|
|
|
|
|
if (AuraEffect* aurEff = GetCaster()->GetDummyAuraEffect(SPELLFAMILY_PRIEST, PRIEST_ICON_ID_PAIN_AND_SUFFERING, EFFECT_1))
|
2012-10-02 12:17:42 +02:00
|
|
|
AddPct(damage, aurEff->GetAmount());
|
2012-07-10 22:27:29 +02:00
|
|
|
|
2014-08-09 21:32:26 +01:00
|
|
|
GetCaster()->CastCustomSpell(GetCaster(), SPELL_PRIEST_SHADOW_WORD_DEATH, &damage, nullptr, nullptr, true);
|
2012-07-10 22:27:29 +02:00
|
|
|
}
|
|
|
|
|
|
2014-04-29 16:35:11 +02:00
|
|
|
void Register() override
|
2012-07-10 22:27:29 +02:00
|
|
|
{
|
|
|
|
|
OnHit += SpellHitFn(spell_pri_shadow_word_death_SpellScript::HandleDamage);
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
2014-04-29 16:35:11 +02:00
|
|
|
SpellScript* GetSpellScript() const override
|
2012-07-10 22:27:29 +02:00
|
|
|
{
|
|
|
|
|
return new spell_pri_shadow_word_death_SpellScript();
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
2013-01-11 19:10:10 +01:00
|
|
|
// 15473 - Shadowform
|
2012-08-26 04:43:08 +02:00
|
|
|
class spell_pri_shadowform : public SpellScriptLoader
|
|
|
|
|
{
|
|
|
|
|
public:
|
|
|
|
|
spell_pri_shadowform() : SpellScriptLoader("spell_pri_shadowform") { }
|
|
|
|
|
|
|
|
|
|
class spell_pri_shadowform_AuraScript : public AuraScript
|
|
|
|
|
{
|
|
|
|
|
PrepareAuraScript(spell_pri_shadowform_AuraScript);
|
|
|
|
|
|
2014-04-29 20:14:42 +02:00
|
|
|
bool Validate(SpellInfo const* /*spellInfo*/) override
|
2012-08-26 04:43:08 +02:00
|
|
|
{
|
2013-01-11 19:10:10 +01:00
|
|
|
if (!sSpellMgr->GetSpellInfo(SPELL_PRIEST_SHADOWFORM_VISUAL_WITHOUT_GLYPH) ||
|
|
|
|
|
!sSpellMgr->GetSpellInfo(SPELL_PRIEST_SHADOWFORM_VISUAL_WITH_GLYPH))
|
2012-08-26 04:43:08 +02:00
|
|
|
return false;
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void HandleEffectApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
|
|
|
|
|
{
|
2013-01-11 19:10:10 +01:00
|
|
|
GetTarget()->CastSpell(GetTarget(), GetTarget()->HasAura(SPELL_PRIEST_GLYPH_OF_SHADOW) ? SPELL_PRIEST_SHADOWFORM_VISUAL_WITH_GLYPH : SPELL_PRIEST_SHADOWFORM_VISUAL_WITHOUT_GLYPH, true);
|
2012-08-26 04:43:08 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void HandleEffectRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
|
|
|
|
|
{
|
2013-01-11 19:10:10 +01:00
|
|
|
GetTarget()->RemoveAurasDueToSpell(GetTarget()->HasAura(SPELL_PRIEST_GLYPH_OF_SHADOW) ? SPELL_PRIEST_SHADOWFORM_VISUAL_WITH_GLYPH : SPELL_PRIEST_SHADOWFORM_VISUAL_WITHOUT_GLYPH);
|
2012-08-26 04:43:08 +02:00
|
|
|
}
|
|
|
|
|
|
2014-04-29 20:14:42 +02:00
|
|
|
void Register() override
|
2012-08-26 04:43:08 +02:00
|
|
|
{
|
|
|
|
|
AfterEffectApply += AuraEffectApplyFn(spell_pri_shadowform_AuraScript::HandleEffectApply, EFFECT_0, SPELL_AURA_MOD_SHAPESHIFT, AURA_EFFECT_HANDLE_REAL_OR_REAPPLY_MASK);
|
|
|
|
|
AfterEffectRemove += AuraEffectRemoveFn(spell_pri_shadowform_AuraScript::HandleEffectRemove, EFFECT_0, SPELL_AURA_MOD_SHAPESHIFT, AURA_EFFECT_HANDLE_REAL_OR_REAPPLY_MASK);
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
2014-04-29 20:14:42 +02:00
|
|
|
AuraScript* GetAuraScript() const override
|
2012-08-26 04:43:08 +02:00
|
|
|
{
|
|
|
|
|
return new spell_pri_shadowform_AuraScript();
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
2013-07-21 13:36:32 +02:00
|
|
|
// 15286 - Vampiric Embrace
|
|
|
|
|
class spell_pri_vampiric_embrace : public SpellScriptLoader
|
|
|
|
|
{
|
|
|
|
|
public:
|
|
|
|
|
spell_pri_vampiric_embrace() : SpellScriptLoader("spell_pri_vampiric_embrace") { }
|
|
|
|
|
|
|
|
|
|
class spell_pri_vampiric_embrace_AuraScript : public AuraScript
|
|
|
|
|
{
|
|
|
|
|
PrepareAuraScript(spell_pri_vampiric_embrace_AuraScript);
|
|
|
|
|
|
2014-04-29 20:14:42 +02:00
|
|
|
bool Validate(SpellInfo const* /*spellInfo*/) override
|
2013-07-21 13:36:32 +02:00
|
|
|
{
|
2013-07-21 15:28:03 +02:00
|
|
|
if (!sSpellMgr->GetSpellInfo(SPELL_PRIEST_VAMPIRIC_EMBRACE_HEAL))
|
2013-07-21 13:36:32 +02:00
|
|
|
return false;
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool CheckProc(ProcEventInfo& eventInfo)
|
|
|
|
|
{
|
|
|
|
|
// Not proc from Mind Sear
|
|
|
|
|
return !(eventInfo.GetDamageInfo()->GetSpellInfo()->SpellFamilyFlags[1] & 0x80000);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void HandleEffectProc(AuraEffect const* aurEff, ProcEventInfo& eventInfo)
|
|
|
|
|
{
|
|
|
|
|
PreventDefaultAction();
|
|
|
|
|
int32 self = int32(CalculatePct(eventInfo.GetDamageInfo()->GetDamage(), aurEff->GetAmount()));
|
|
|
|
|
int32 team = int32(CalculatePct(eventInfo.GetDamageInfo()->GetDamage(), aurEff->GetAmount() / 2));
|
|
|
|
|
|
2013-07-21 15:28:03 +02:00
|
|
|
GetTarget()->CastCustomSpell((Unit*)NULL, SPELL_PRIEST_VAMPIRIC_EMBRACE_HEAL, &team, &self, NULL, true, NULL, aurEff);
|
2013-07-21 13:36:32 +02:00
|
|
|
}
|
|
|
|
|
|
2014-04-29 20:14:42 +02:00
|
|
|
void Register() override
|
2013-07-21 13:36:32 +02:00
|
|
|
{
|
|
|
|
|
DoCheckProc += AuraCheckProcFn(spell_pri_vampiric_embrace_AuraScript::CheckProc);
|
|
|
|
|
OnEffectProc += AuraEffectProcFn(spell_pri_vampiric_embrace_AuraScript::HandleEffectProc, EFFECT_0, SPELL_AURA_DUMMY);
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
2014-04-29 20:14:42 +02:00
|
|
|
AuraScript* GetAuraScript() const override
|
2013-07-21 13:36:32 +02:00
|
|
|
{
|
|
|
|
|
return new spell_pri_vampiric_embrace_AuraScript();
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
// 15290 - Vampiric Embrace (heal)
|
|
|
|
|
class spell_pri_vampiric_embrace_target : public SpellScriptLoader
|
|
|
|
|
{
|
|
|
|
|
public:
|
|
|
|
|
spell_pri_vampiric_embrace_target() : SpellScriptLoader("spell_pri_vampiric_embrace_target") { }
|
|
|
|
|
|
|
|
|
|
class spell_pri_vampiric_embrace_target_SpellScript : public SpellScript
|
|
|
|
|
{
|
|
|
|
|
PrepareSpellScript(spell_pri_vampiric_embrace_target_SpellScript);
|
|
|
|
|
|
|
|
|
|
void FilterTargets(std::list<WorldObject*>& unitList)
|
|
|
|
|
{
|
|
|
|
|
unitList.remove(GetCaster());
|
|
|
|
|
}
|
|
|
|
|
|
2014-04-29 20:14:42 +02:00
|
|
|
void Register() override
|
2013-07-21 13:36:32 +02:00
|
|
|
{
|
|
|
|
|
OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_pri_vampiric_embrace_target_SpellScript::FilterTargets, EFFECT_0, TARGET_UNIT_CASTER_AREA_PARTY);
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
2014-04-29 20:14:42 +02:00
|
|
|
SpellScript* GetSpellScript() const override
|
2013-07-21 13:36:32 +02:00
|
|
|
{
|
|
|
|
|
return new spell_pri_vampiric_embrace_target_SpellScript();
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
2013-01-11 19:10:10 +01:00
|
|
|
// 34914 - Vampiric Touch
|
2013-01-11 04:18:02 +01:00
|
|
|
class spell_pri_vampiric_touch : public SpellScriptLoader
|
|
|
|
|
{
|
|
|
|
|
public:
|
|
|
|
|
spell_pri_vampiric_touch() : SpellScriptLoader("spell_pri_vampiric_touch") { }
|
|
|
|
|
|
|
|
|
|
class spell_pri_vampiric_touch_AuraScript : public AuraScript
|
|
|
|
|
{
|
|
|
|
|
PrepareAuraScript(spell_pri_vampiric_touch_AuraScript);
|
|
|
|
|
|
2014-04-29 16:35:11 +02:00
|
|
|
bool Validate(SpellInfo const* /*spellInfo*/) override
|
2013-01-11 04:18:02 +01:00
|
|
|
{
|
2013-07-21 16:41:13 +02:00
|
|
|
if (!sSpellMgr->GetSpellInfo(SPELL_PRIEST_VAMPIRIC_TOUCH_DISPEL) ||
|
|
|
|
|
!sSpellMgr->GetSpellInfo(SPELL_GEN_REPLENISHMENT))
|
2013-01-11 04:18:02 +01:00
|
|
|
return false;
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void HandleDispel(DispelInfo* /*dispelInfo*/)
|
|
|
|
|
{
|
|
|
|
|
if (Unit* caster = GetCaster())
|
|
|
|
|
if (Unit* target = GetUnitOwner())
|
|
|
|
|
if (AuraEffect const* aurEff = GetEffect(EFFECT_1))
|
|
|
|
|
{
|
|
|
|
|
int32 damage = aurEff->GetAmount() * 8;
|
|
|
|
|
// backfire damage
|
|
|
|
|
caster->CastCustomSpell(target, SPELL_PRIEST_VAMPIRIC_TOUCH_DISPEL, &damage, NULL, NULL, true, NULL, aurEff);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2013-07-21 16:41:13 +02:00
|
|
|
bool CheckProc(ProcEventInfo& eventInfo)
|
|
|
|
|
{
|
|
|
|
|
return eventInfo.GetProcTarget() == GetCaster();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void HandleEffectProc(AuraEffect const* aurEff, ProcEventInfo& eventInfo)
|
|
|
|
|
{
|
|
|
|
|
eventInfo.GetProcTarget()->CastSpell((Unit*)NULL, SPELL_GEN_REPLENISHMENT, true, NULL, aurEff);
|
|
|
|
|
}
|
|
|
|
|
|
2014-04-29 16:35:11 +02:00
|
|
|
void Register() override
|
2013-01-11 04:18:02 +01:00
|
|
|
{
|
|
|
|
|
AfterDispel += AuraDispelFn(spell_pri_vampiric_touch_AuraScript::HandleDispel);
|
2013-07-21 16:41:13 +02:00
|
|
|
DoCheckProc += AuraCheckProcFn(spell_pri_vampiric_touch_AuraScript::CheckProc);
|
|
|
|
|
OnEffectProc += AuraEffectProcFn(spell_pri_vampiric_touch_AuraScript::HandleEffectProc, EFFECT_2, SPELL_AURA_DUMMY);
|
2013-01-11 04:18:02 +01:00
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
2014-04-29 16:35:11 +02:00
|
|
|
AuraScript* GetAuraScript() const override
|
2013-01-11 04:18:02 +01:00
|
|
|
{
|
|
|
|
|
return new spell_pri_vampiric_touch_AuraScript();
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
2010-07-24 22:41:42 +02:00
|
|
|
void AddSC_priest_spell_scripts()
|
|
|
|
|
{
|
2013-07-21 17:46:08 +02:00
|
|
|
new spell_pri_body_and_soul();
|
2014-01-26 02:24:57 +01:00
|
|
|
new spell_pri_circle_of_healing();
|
2013-07-06 14:48:40 +02:00
|
|
|
new spell_pri_dispel_magic();
|
2013-01-22 00:20:16 +01:00
|
|
|
new spell_pri_divine_aegis();
|
2014-01-26 02:24:57 +01:00
|
|
|
new spell_pri_divine_hymn();
|
2013-01-22 00:20:16 +01:00
|
|
|
new spell_pri_glyph_of_prayer_of_healing();
|
2014-01-26 02:24:57 +01:00
|
|
|
new spell_pri_hymn_of_hope();
|
2013-07-24 02:32:52 +02:00
|
|
|
new spell_pri_improved_power_word_shield();
|
2013-07-18 15:23:09 +02:00
|
|
|
new spell_pri_item_greater_heal_refund();
|
2010-12-30 02:03:46 +01:00
|
|
|
new spell_pri_guardian_spirit();
|
2012-11-25 21:07:08 +01:00
|
|
|
new spell_pri_leap_of_faith_effect_trigger();
|
2017-02-10 23:03:19 +01:00
|
|
|
new spell_pri_levitate();
|
2013-01-20 04:30:17 +01:00
|
|
|
new spell_pri_lightwell_renew();
|
2012-04-25 09:02:09 -04:00
|
|
|
new spell_pri_mana_burn();
|
2013-01-22 00:20:16 +01:00
|
|
|
new spell_pri_mana_leech();
|
2013-01-11 04:18:02 +01:00
|
|
|
new spell_pri_mind_sear();
|
2012-04-25 09:02:09 -04:00
|
|
|
new spell_pri_pain_and_suffering_proc();
|
|
|
|
|
new spell_pri_penance();
|
2013-07-21 14:09:16 +02:00
|
|
|
new spell_pri_phantasm();
|
2013-01-20 04:30:17 +01:00
|
|
|
new spell_pri_power_word_shield();
|
2012-04-25 09:02:09 -04:00
|
|
|
new spell_pri_prayer_of_mending_heal();
|
2012-11-25 21:07:08 +01:00
|
|
|
new spell_pri_renew();
|
2012-07-10 22:27:29 +02:00
|
|
|
new spell_pri_shadow_word_death();
|
2012-08-26 04:43:08 +02:00
|
|
|
new spell_pri_shadowform();
|
2013-07-21 13:36:32 +02:00
|
|
|
new spell_pri_vampiric_embrace();
|
|
|
|
|
new spell_pri_vampiric_embrace_target();
|
2013-01-11 04:18:02 +01:00
|
|
|
new spell_pri_vampiric_touch();
|
2010-07-27 21:12:40 -07:00
|
|
|
}
|