Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Loading...
Searching...
No Matches
spell_priest.cpp
Go to the documentation of this file.
1/*
2* This file is part of Project SkyFire https://www.projectskyfire.org.
3* See LICENSE.md file for Copyright information
4*/
5
6/*
7 * Scripts for spells with SPELLFAMILY_PRIEST and SPELLFAMILY_GENERIC spells used by priest players.
8 * Ordered alphabetically using scriptname.
9 * Scriptnames of files in this file should be prefixed with "spell_pri_".
10 */
11
12#include "Player.h"
13#include "ScriptMgr.h"
14#include "SpellScript.h"
15#include "SpellAuraEffects.h"
16#include "GridNotifiers.h"
17
47
54
59
61{
62public:
63 spell_pri_prayer_of_healing() : SpellScriptLoader("spell_pri_prayer_of_healing") { }
84
85 SpellScript* GetSpellScript() const override
86 {
88 }
89};
90
92{
93public:
94 spell_pri_greater_heal() : SpellScriptLoader("spell_pri_greater_heal") { }
96 {
98
99 bool Validate(SpellInfo const* /*spellInfo*/) override
100 {
101 if (!sSpellMgr->GetSpellInfo(SPELL_PRIEST_INNER_FOCUS))
102 return false;
103 return true;
104 }
114 };
115
116 SpellScript* GetSpellScript() const override
117 {
119 }
120};
121
123{
124public:
125 spell_pri_flash_heal() : SpellScriptLoader("spell_pri_flash_heal") { }
127 {
129
130 bool Validate(SpellInfo const* /*spellInfo*/) override
131 {
132 if (!sSpellMgr->GetSpellInfo(SPELL_PRIEST_INNER_FOCUS))
133 return false;
134 return true;
135 }
145 };
146
147 SpellScript* GetSpellScript() const override
148 {
150 }
151};
152
154{
155public:
156 spell_pri_evangelism() : SpellScriptLoader("spell_pri_evangelism") { }
157
159 {
161
162 bool Validate(SpellInfo const* /*spellInfo*/) OVERRIDE
163 {
164 if (!sSpellMgr->GetSpellInfo(SPELL_PRIEST_EVANGELISM_PROC))
165 return false;
166 return true;
167 }
168 void HandleEffectStackProc(AuraEffect const* aurEff, ProcEventInfo& eventInfo)
169 {
171 // Proc only with Penance, Holy Fire, Smite
172 if (!(eventInfo.GetDamageInfo()->GetSpellInfo()->SpellFamilyFlags[1] & 0x00800000 ||
173 eventInfo.GetDamageInfo()->GetSpellInfo()->SpellFamilyFlags[0] & 0x00100000 ||
174 eventInfo.GetDamageInfo()->GetSpellInfo()->SpellFamilyFlags[0] & 0x00000080))
175 return;
176
178 }
183 };
185 {
187 }
188};
189
190// 47515 - Divine Aegis
192{
193public:
194 spell_pri_divine_aegis() : SpellScriptLoader("spell_pri_divine_aegis") { }
195
197 {
199
200 bool Validate(SpellInfo const* /*spellInfo*/) OVERRIDE
201 {
202 if (!sSpellMgr->GetSpellInfo(SPELL_PRIEST_DIVINE_AEGIS))
203 return false;
204 return true;
205 }
206
207 bool CheckProc(ProcEventInfo& eventInfo)
208 {
209 return eventInfo.GetProcTarget();
210 }
211
212 void HandleProc(AuraEffect const* aurEff, ProcEventInfo& eventInfo)
213 {
215
216 int32 absorb = CalculatePct(int32(eventInfo.GetHealInfo()->GetHeal()), aurEff->GetAmount());
217
218 // Multiple effects stack, so let's try to find this aura.
220 absorb += aegis->GetAmount();
221
222 absorb = std::min(absorb, eventInfo.GetProcTarget()->getLevel() * 125);
223
224 GetTarget()->CastCustomSpell(SPELL_PRIEST_DIVINE_AEGIS, SPELLVALUE_BASE_POINT0, absorb, eventInfo.GetProcTarget(), true, NULL, aurEff);
225 }
226
232 };
233
238};
239
240// 37594 - Greater Heal Refund
242{
243public:
244 spell_pri_item_greater_heal_refund() : SpellScriptLoader("spell_pri_item_greater_heal_refund") { }
245
268
273};
274
275// 73325 - Leap of Faith
277{
278public:
279 spell_pri_leap_of_faith() : SpellScriptLoader("spell_pri_leap_of_faith") { }
280
282 {
284
285 bool Validate(SpellInfo const* /*spellInfo*/) OVERRIDE
286 {
288 return false;
290 return false;
292 return false;
294 return false;
295 return true;
296 }
297
299 {
300 Position destPos;
301 GetHitDest()->GetPosition(&destPos);
302
303 SpellCastTargets targets;
304 targets.SetDst(destPos);
305 targets.SetUnitTarget(GetCaster());
306 GetHitUnit()->CastSpell(targets, sSpellMgr->GetSpellInfo(SPELL_PRIEST_LEAP_OF_FAITH_EFFECT), NULL);
307
310
313 }
314
315
320 };
321
326};
327
328// 7001 - Lightwell Renew
330{
331public:
332 spell_pri_lightwell_renew() : SpellScriptLoader("spell_pri_lightwell_renew") { }
333
335 {
337
338 void CalculateAmount(AuraEffect const* /*aurEff*/, int32& amount, bool& /*canBeRecalculated*/)
339 {
340 if (Unit* caster = GetCaster())
341 {
342 // Bonus from Glyph of Lightwell
343 if (AuraEffect* modHealing = caster->GetAuraEffect(SPELL_PRIEST_GLYPH_OF_LIGHTWELL, EFFECT_0))
344 AddPct(amount, modHealing->GetAmount());
345 }
346 }
347
352 };
353
358};
359
360// 28305 - Mana Leech (Passive) (Priest Pet Aura)
362{
363public:
364 spell_pri_mana_leech() : SpellScriptLoader("spell_pri_mana_leech") { }
365
367 {
369
370 bool Validate(SpellInfo const* /*spellInfo*/) OVERRIDE
371 {
372 if (!sSpellMgr->GetSpellInfo(SPELL_PRIEST_MANA_LEECH_PROC))
373 return false;
374 return true;
375 }
376
378 {
379 _procTarget = NULL;
380 return true;
381 }
382
383 bool CheckProc(ProcEventInfo& /*eventInfo*/)
384 {
386 return _procTarget;
387 }
388
389 void HandleProc(AuraEffect const* aurEff, ProcEventInfo& /*eventInfo*/)
390 {
393 }
394
400
401 private:
403 };
404
406 {
408 }
409};
410
411// 49821 - Mind Sear
437
438// 47540 - Penance
440{
441public:
442 spell_pri_penance() : SpellScriptLoader("spell_pri_penance") { }
443
445 {
447
449 {
451 }
452
453 bool Validate(SpellInfo const* spellInfo) OVERRIDE
454 {
455 SpellInfo const* firstRankSpellInfo = sSpellMgr->GetSpellInfo(SPELL_PRIEST_PENANCE_R1);
456 if (!firstRankSpellInfo)
457 return false;
458
459 // can't use other spell than this penance due to spell_ranks dependency
460 if (!spellInfo->IsRankOf(firstRankSpellInfo))
461 return false;
462
463 uint8 rank = spellInfo->GetRank();
464 if (!sSpellMgr->GetSpellWithRank(SPELL_PRIEST_PENANCE_R1_DAMAGE, rank, true))
465 return false;
466 if (!sSpellMgr->GetSpellWithRank(SPELL_PRIEST_PENANCE_R1_HEAL, rank, true))
467 return false;
468
469 return true;
470 }
471
472 void HandleDummy(SpellEffIndex /*effIndex*/)
473 {
474 Unit* caster = GetCaster();
475 if (Unit* unitTarget = GetHitUnit())
476 {
477 if (!unitTarget->IsAlive())
478 return;
479
480 uint8 rank = GetSpellInfo()->GetRank();
481
482 if (caster->IsFriendlyTo(unitTarget))
483 caster->CastSpell(unitTarget, sSpellMgr->GetSpellWithRank(SPELL_PRIEST_PENANCE_R1_HEAL, rank), false);
484 else
485 caster->CastSpell(unitTarget, sSpellMgr->GetSpellWithRank(SPELL_PRIEST_PENANCE_R1_DAMAGE, rank), false);
486 }
487 }
488
490 {
491 Player* caster = GetCaster()->ToPlayer();
492 if (Unit* target = GetExplTargetUnit())
493 if (!caster->IsFriendlyTo(target) && !caster->IsValidAttackTarget(target))
496 }
497
503 };
504
509};
510
511// 17 - Power Word: Shield
513{
514public:
515 spell_pri_power_word_shield() : SpellScriptLoader("spell_pri_power_word_shield") { }
516
518 {
520
521 bool Validate(SpellInfo const* /*spellInfo*/) OVERRIDE
522 {
524 return false;
526 return false;
528 return false;
529 if (!sSpellMgr->GetSpellInfo(SPELL_PRIEST_WEAKENED_SOUL))
530 return false;
531 return true;
532 }
533
534 void CalculateAmount(AuraEffect const* aurEff, int32& amount, bool& canBeRecalculated)
535 {
536 canBeRecalculated = false;
537 if (Unit* caster = GetCaster())
538 {
539 // +80.68% from sp bonus
540 float bonus = 0.8068f;
541
542 // Borrowed Time
543 if (AuraEffect const* borrowedTime = caster->GetDummyAuraEffect(SPELLFAMILY_PRIEST, PRIEST_ICON_ID_BORROWED_TIME, EFFECT_1))
544 bonus += CalculatePct(1.0f, borrowedTime->GetAmount());
545
546 bonus *= caster->SpellBaseHealingBonusDone(GetSpellInfo()->GetSchoolMask());
547
548 // Improved PW: Shield: its weird having a SPELLMOD_ALL_EFFECTS here but its blizzards doing :)
549 // Improved PW: Shield is only applied at the spell healing bonus because it was already applied to the base value in CalculateSpellDamage
550 bonus = caster->ApplyEffectModifiers(GetSpellInfo(), aurEff->GetEffIndex(), bonus);
551 bonus *= caster->CalculateLevelPenalty(GetSpellInfo());
552
553 amount += int32(bonus);
554
555 // Focused Power
556 amount *= caster->GetTotalAuraMultiplier(SPELL_AURA_MOD_HEALING_DONE_PERCENT);
557 }
558 }
559
560 void ReflectDamage(AuraEffect* aurEff, DamageInfo& dmgInfo, uint32& absorbAmount)
561 {
562 Unit* target = GetTarget();
563 if (dmgInfo.GetAttacker() == target)
564 return;
565
567 {
568 int32 bp = CalculatePct(absorbAmount, glyphAurEff->GetAmount());
569 target->CastCustomSpell(dmgInfo.GetAttacker(), SPELL_PRIEST_REFLECTIVE_SHIELD_TRIGGERED, &bp, NULL, NULL, true, NULL, aurEff);
570 }
571 }
572
574 {
576
577 // body and soul
578 if (AuraEffect const* bodyandsoul = GetCaster()->GetAuraEffectOfRankedSpell(64129, EFFECT_0))
579 {
580 int32 bp = bodyandsoul->GetAmount();
582 }
583 }
584
591 };
592
597};
598
599// 33110 - Prayer of Mending Heal
601{
602public:
603 spell_pri_prayer_of_mending_heal() : SpellScriptLoader("spell_pri_prayer_of_mending_heal") { }
604
606 {
608
609 void HandleHeal(SpellEffIndex /*effIndex*/)
610 {
611 if (Unit* caster = GetOriginalCaster())
612 {
613 if (AuraEffect* aurEff = caster->GetAuraEffect(SPELL_PRIEST_T9_HEALING_2P, EFFECT_0))
614 {
615 int32 heal = GetHitHeal();
616 AddPct(heal, aurEff->GetAmount());
617 SetHitHeal(heal);
618 }
619 }
620 }
621
626 };
627
632};
633
634// 139 - Renew
636{
637public:
638 spell_pri_renew() : SpellScriptLoader("spell_pri_renew") { }
639
641 {
643
644 bool Validate(SpellInfo const* /*spellInfo*/) OVERRIDE
645 {
646 if (!sSpellMgr->GetSpellInfo(SPELL_PRIEST_DIVINE_TOUCH))
647 return false;
648 return true;
649 }
650
652 {
654 }
655
657 {
658 if (Unit* caster = GetCaster())
659 {
660 // Divine Touch
661 if (AuraEffect const* empoweredRenewAurEff = caster->GetDummyAuraEffect(SPELLFAMILY_PRIEST, PRIEST_ICON_ID_DIVINE_TOUCH_TALENT, EFFECT_0))
662 {
663 uint32 heal = caster->SpellHealingBonusDone(GetTarget(), GetSpellInfo(), aurEff->GetAmount(), DOT);
664 heal = GetTarget()->SpellHealingBonusTaken(caster, GetSpellInfo(), heal, DOT);
665 int32 basepoints0 = CalculatePct(int32(heal) * aurEff->GetTotalTicks(), empoweredRenewAurEff->GetAmount());
666 caster->CastCustomSpell(GetTarget(), SPELL_PRIEST_DIVINE_TOUCH, &basepoints0, NULL, NULL, true, NULL, aurEff);
667 }
668 }
669 }
670
675 };
676
678 {
679 return new spell_pri_renew_AuraScript();
680 }
681};
682
683// 32379 - Shadow Word Death
710
711// 15473 - Shadowform
713{
714public:
715 spell_pri_shadowform() : SpellScriptLoader("spell_pri_shadowform") { }
716
745
747 {
749 }
750};
751
752// 15286 - Vampiric Embrace
754{
755public:
756 spell_pri_vampiric_embrace() : SpellScriptLoader("spell_pri_vampiric_embrace") { }
757
759 {
761
762 bool Validate(SpellInfo const* /*spellInfo*/) OVERRIDE
763 {
765 return false;
766 return true;
767 }
768
769 bool CheckProc(ProcEventInfo& eventInfo)
770 {
771 // Not proc from Mind Sear
772 return !(eventInfo.GetDamageInfo()->GetSpellInfo()->SpellFamilyFlags[1] & 0x80000);
773 }
774
775 void HandleEffectProc(AuraEffect const* aurEff, ProcEventInfo& eventInfo)
776 {
778 int32 self = int32(CalculatePct(eventInfo.GetDamageInfo()->GetDamage(), aurEff->GetAmount()));
779 int32 team = int32(CalculatePct(eventInfo.GetDamageInfo()->GetDamage(), aurEff->GetAmount() / 2));
780
781 GetTarget()->CastCustomSpell((Unit*)NULL, SPELL_PRIEST_VAMPIRIC_EMBRACE_HEAL, &team, &self, NULL, true, NULL, aurEff);
782 }
783
789 };
790
795};
796
797// 15290 - Vampiric Embrace (heal)
823
824// 34914 - Vampiric Touch
826{
827public:
828 spell_pri_vampiric_touch() : SpellScriptLoader("spell_pri_vampiric_touch") { }
829
831 {
833
834 bool Validate(SpellInfo const* /*spellInfo*/) OVERRIDE
835 {
836 if (!sSpellMgr->GetSpellInfo(SPELL_GEN_REPLENISHMENT))
837 return false;
838 return true;
839 }
840
841 bool CheckProc(ProcEventInfo& eventInfo)
842 {
843 return eventInfo.GetProcTarget() == GetCaster();
844 }
845
846 void HandleEffectProc(AuraEffect const* aurEff, ProcEventInfo& eventInfo)
847 {
848 eventInfo.GetProcTarget()->CastSpell((Unit*)NULL, SPELL_GEN_REPLENISHMENT, true, NULL, aurEff);
849 }
850
856 };
857
862};
863
std::int32_t int32
Definition Define.h:73
std::uint8_t uint8
Definition Define.h:79
std::uint32_t uint32
Definition Define.h:77
#define OVERRIDE
Definition Define.h:60
@ TYPEID_PLAYER
Definition Object.h:55
SpellEffIndex
@ EFFECT_1
@ EFFECT_0
@ SPELL_EFFECT_DUMMY
@ SPELL_EFFECT_SCRIPT_EFFECT
@ SPELL_EFFECT_HEAL
@ TARGET_UNIT_DEST_AREA_ENEMY
@ TARGET_UNIT_CASTER_AREA_RAID
@ SPELLFAMILY_PRIEST
SpellCastResult
@ SPELL_AURA_MOD_SHAPESHIFT
@ SPELL_AURA_PROC_TRIGGER_SPELL
@ SPELL_AURA_MOD_HEALING_DONE_PERCENT
@ SPELL_AURA_PERIODIC_HEAL
@ SPELL_AURA_DUMMY
@ SPELL_AURA_SCHOOL_ABSORB
AuraEffectHandleModes
@ AURA_EFFECT_HANDLE_REAL_OR_REAPPLY_MASK
#define sSpellMgr
Definition SpellMgr.h:744
#define SpellCheckCastFn(F)
#define AuraEffectProcFn(F, I, N)
#define SpellEffectFn(F, I, N)
#define AuraEffectCalcAmountFn(F, I, N)
#define SpellObjectAreaTargetSelectFn(F, I, N)
#define AuraEffectAbsorbFn(F, I)
#define AuraEffectApplyFn(F, I, N, M)
#define AuraCheckProcFn(F)
#define SpellHitFn(F)
#define AuraEffectRemoveFn(F, I, N, M)
@ SPELLVALUE_BASE_POINT0
Definition Unit.h:114
@ DOT
Definition Unit.h:616
@ UNIT_FIELD_CHANNEL_OBJECT
T AddPct(T &base, U pct)
Definition Util.h:109
T CalculatePct(T base, U pct)
Definition Util.h:103
int32 GetTotalTicks() const
uint32 GetEffIndex() const
int32 GetAmount() const
void PreventDefaultAction()
HookList< EffectApplyHandler > AfterEffectRemove
SpellInfo const * GetSpellInfo() const
HookList< EffectApplyHandler > AfterEffectApply
HookList< EffectAbsorbHandler > AfterEffectAbsorb
HookList< EffectCalcAmountHandler > DoEffectCalcAmount
Unit * GetCaster() const
Unit * GetTarget() const
HookList< CheckProcHandler > DoCheckProc
HookList< EffectProcHandler > OnEffectProc
HookList< EffectApplyHandler > OnEffectApply
Unit * GetAttacker() const
Definition Unit.h:899
SpellInfo const * GetSpellInfo() const
Definition Unit.h:907
uint32 GetDamage() const
Definition Unit.h:923
uint32 GetHeal() const
Definition Unit.h:959
Player * ToPlayer()
Definition Object.h:204
TypeID GetTypeId() const
Definition Object.h:131
HealInfo * GetHealInfo() const
Definition Unit.h:986
DamageInfo * GetDamageInfo() const
Definition Unit.h:985
Unit * GetProcTarget() const
Definition Unit.h:974
void SetDst(float x, float y, float z, float orientation, uint32 mapId=MAPID_INVALID)
Definition Spell.cpp:388
void SetUnitTarget(Unit *target)
Definition Spell.cpp:228
uint8 GetRank() const
flag128 SpellFamilyFlags
Definition SpellInfo.h:227
Unit * GetExplTargetUnit()
HookList< CheckCastHandler > OnCheckCast
SpellInfo const * GetSpellInfo()
HookList< HitHandler > OnHit
HookList< EffectHandler > OnEffectHitTarget
Unit * GetHitUnit()
WorldLocation * GetHitDest()
void SetHitHeal(int32 heal)
Unit * GetOriginalCaster()
int32 GetHitHeal()
Unit * GetCaster()
HookList< ObjectAreaTargetSelectHandler > OnObjectAreaTargetSelect
int32 GetHitDamage()
SpellScriptLoader(const char *name)
Definition Unit.h:1367
Unit * GetOwner() const
Definition Unit.cpp:2339
bool IsValidAttackTarget(Unit const *target) const
Definition Unit.cpp:3810
void RemoveAura(AuraApplicationMap::iterator &i, AuraRemoveMode mode=AURA_REMOVE_BY_DEFAULT)
void CastSpell(SpellCastTargets const &targets, SpellInfo const *spellInfo, CustomSpellValues const *value, TriggerCastFlags triggerFlags=TRIGGERED_NONE, Item *castItem=NULL, AuraEffect const *triggeredByAura=NULL, uint64 originalCaster=0)
void RemoveAurasDueToSpell(uint32 spellId, uint64 casterGUID=0, uint32 reqEffMask=0, AuraRemoveMode removeMode=AURA_REMOVE_BY_DEFAULT)
AuraEffect * GetAuraEffectOfRankedSpell(uint32 spellId, uint8 effIndex, uint64 casterGUID=0) const
uint32 SpellHealingBonusTaken(Unit *caster, SpellInfo const *spellProto, uint32 healamount, DamageEffectType damagetype, uint32 stack=1) const
AuraEffect * GetAuraEffect(uint32 spellId, uint8 effIndex, uint64 casterGUID=0) const
void CastCustomSpell(Unit *victim, uint32 spellId, int32 const *bp0, int32 const *bp1, int32 const *bp2, bool triggered, Item *castItem=NULL, AuraEffect const *triggeredByAura=NULL, uint64 originalCaster=0)
bool IsFriendlyTo(Unit const *unit) const
Definition Unit.cpp:2283
uint8 getLevel() const
Definition Unit.h:1528
void RemoveMovementImpairingAuras()
void HandleProc(AuraEffect const *aurEff, ProcEventInfo &eventInfo)
PrepareAuraScript(spell_pri_divine_aegis_AuraScript)
AuraScript * GetAuraScript() const OVERRIDE
PrepareAuraScript(spell_pri_evangelism_AuraScript)
void HandleEffectStackProc(AuraEffect const *aurEff, ProcEventInfo &eventInfo)
AuraScript * GetAuraScript() const OVERRIDE
PrepareSpellScript(spell_pri_flash_heal_SpellScript)
SpellScript * GetSpellScript() const override
PrepareSpellScript(spell_pri_greater_heal_SpellScript)
SpellScript * GetSpellScript() const override
AuraScript * GetAuraScript() const OVERRIDE
PrepareSpellScript(spell_pri_leap_of_faith_SpellScript)
SpellScript * GetSpellScript() const OVERRIDE
PrepareAuraScript(spell_pri_lightwell_renew_AuraScript)
void CalculateAmount(AuraEffect const *, int32 &amount, bool &)
AuraScript * GetAuraScript() const OVERRIDE
void HandleProc(AuraEffect const *aurEff, ProcEventInfo &)
PrepareAuraScript(spell_pri_mana_leech_AuraScript)
AuraScript * GetAuraScript() const OVERRIDE
PrepareSpellScript(spell_pri_mind_sear_SpellScript)
void FilterTargets(std::list< WorldObject * > &unitList)
SpellScript * GetSpellScript() const OVERRIDE
bool Validate(SpellInfo const *spellInfo) OVERRIDE
PrepareSpellScript(spell_pri_penance_SpellScript)
SpellScript * GetSpellScript() const OVERRIDE
void HandleOnEffectApply(AuraEffect const *aurEff, AuraEffectHandleModes)
void CalculateAmount(AuraEffect const *aurEff, int32 &amount, bool &canBeRecalculated)
void ReflectDamage(AuraEffect *aurEff, DamageInfo &dmgInfo, uint32 &absorbAmount)
AuraScript * GetAuraScript() const OVERRIDE
PrepareSpellScript(spell_pri_prayer_of_healing_SpellScript)
SpellScript * GetSpellScript() const override
SpellScript * GetSpellScript() const OVERRIDE
void HandleApplyEffect(AuraEffect const *aurEff, AuraEffectHandleModes)
PrepareAuraScript(spell_pri_renew_AuraScript)
bool Validate(SpellInfo const *) OVERRIDE
AuraScript * GetAuraScript() const OVERRIDE
PrepareSpellScript(spell_pri_shadow_word_death_SpellScript)
SpellScript * GetSpellScript() const OVERRIDE
void HandleEffectApply(AuraEffect const *, AuraEffectHandleModes)
PrepareAuraScript(spell_pri_shadowform_AuraScript)
void HandleEffectRemove(AuraEffect const *, AuraEffectHandleModes)
AuraScript * GetAuraScript() const OVERRIDE
PrepareAuraScript(spell_pri_vampiric_embrace_AuraScript)
void HandleEffectProc(AuraEffect const *aurEff, ProcEventInfo &eventInfo)
SpellScript * GetSpellScript() const OVERRIDE
AuraScript * GetAuraScript() const OVERRIDE
PrepareAuraScript(spell_pri_vampiric_touch_AuraScript)
void HandleEffectProc(AuraEffect const *aurEff, ProcEventInfo &eventInfo)
AuraScript * GetAuraScript() const OVERRIDE
PriestSpells
MiscSpells
@ SPELL_PRIEST_SHADOW_WORD_DEATH
void AddSC_priest_spell_scripts()
@ SPELL_GEN_REPLENISHMENT
@ SPELL_PRIEST_INNER_FOCUS
@ SPELL_PRIEST_BODY_AND_SOUL_PASSIVE
@ SPELL_PRIEST_GLYPH_OF_LIGHTWELL
@ SPELL_PRIEST_DIVINE_TOUCH
@ SPELL_PRIEST_REFLECTIVE_SHIELD_GLYPH
@ SPELL_PRIEST_REFLECTIVE_SHIELD_TRIGGERED
@ SPELL_PRIEST_BODY_AND_SOUL_SPEED
@ SPELL_PRIEST_SHADOWFORM_VISUAL_WITH_GLYPH
@ SPELL_PRIEST_DIVINE_AEGIS
@ SPELL_PRIEST_MANA_LEECH_PROC
@ SPELL_PRIEST_GLYPH_OF_SHADOW
@ SPELL_PRIEST_VAMPIRIC_EMBRACE_HEAL
@ SPELL_PRIEST_PENANCE_R1_DAMAGE
@ SPELL_PRIEST_WEAKENED_SOUL
@ SPELL_PRIEST_PENANCE_R1
@ SPELL_PRIEST_ITEM_EFFICIENCY
@ SPELL_PRIEST_SHADOW_WORD_DEATH
@ SPELL_PRIEST_EVANGELISM_PROC
@ SPELL_PRIEST_T9_HEALING_2P
@ SPELL_PRIEST_LEAP_OF_FAITH_EFFECT
@ SPELL_PRIEST_LEAP_OF_FAITH_GLYPH
@ SPELL_PRIEST_PENANCE_R1_HEAL
@ SPELL_PRIEST_SHADOWFORM_VISUAL_WITHOUT_GLYPH
PriestSpellIcons
@ PRIEST_ICON_ID_BORROWED_TIME
@ PRIEST_ICON_ID_PAIN_AND_SUFFERING
@ PRIEST_ICON_ID_DIVINE_TOUCH_TALENT
void GetPosition(float &x, float &y) const
Definition Object.h:333