diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/server/game/Spells/Auras/SpellAuraEffects.h | 12 | ||||
| -rw-r--r-- | src/server/scripts/Spells/spell_priest.cpp | 31 |
2 files changed, 43 insertions, 0 deletions
diff --git a/src/server/game/Spells/Auras/SpellAuraEffects.h b/src/server/game/Spells/Auras/SpellAuraEffects.h index 3603d9ca82d..c6fd34f17c6 100644 --- a/src/server/game/Spells/Auras/SpellAuraEffects.h +++ b/src/server/game/Spells/Auras/SpellAuraEffects.h @@ -361,6 +361,18 @@ namespace Trinity if (spellProtoB->Id == 7812) return false; + // Cauterize (must be last) + if (spellProtoA->Id == 86949) + return false; + if (spellProtoB->Id == 86949) + return true; + + // Spirit of Redemption (must be last) + if (spellProtoA->Id == 20711) + return false; + if (spellProtoB->Id == 20711) + return true; + return false; } }; diff --git a/src/server/scripts/Spells/spell_priest.cpp b/src/server/scripts/Spells/spell_priest.cpp index 21f848ce570..4b40ba278c7 100644 --- a/src/server/scripts/Spells/spell_priest.cpp +++ b/src/server/scripts/Spells/spell_priest.cpp @@ -76,6 +76,7 @@ enum PriestSpells SPELL_PRIEST_SHADOWFORM_VISUAL_WITHOUT_GLYPH = 107903, SPELL_PRIEST_SHIELD_DISCIPLINE_ENERGIZE = 47755, SPELL_PRIEST_SHIELD_DISCIPLINE_PASSIVE = 197045, + SPELL_PRIEST_SPIRIT_OF_REDEMPTION = 27827, SPELL_PRIEST_STRENGTH_OF_SOUL = 197535, SPELL_PRIEST_STRENGTH_OF_SOUL_EFFECT = 197548, SPELL_PRIEST_T9_HEALING_2P = 67201, @@ -1209,6 +1210,35 @@ class spell_pri_shadowform : public SpellScriptLoader } }; +// 20711 - Spirit of Redemption +class spell_priest_spirit_of_redemption : public AuraScript +{ + PrepareAuraScript(spell_priest_spirit_of_redemption); + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_PRIEST_SPIRIT_OF_REDEMPTION }); + } + + void HandleAbsorb(AuraEffect* aurEff, DamageInfo& dmgInfo, uint32& /*absorbAmount*/) + { + Unit* target = GetTarget(); + if (dmgInfo.GetDamage() >= target->GetHealth()) + { + target->CastSpell(target, SPELL_PRIEST_SPIRIT_OF_REDEMPTION, TRIGGERED_FULL_MASK, nullptr, aurEff); + target->SetFullHealth(); + return; + } + + PreventDefaultAction(); + } + + void Register() override + { + OnEffectAbsorb += AuraEffectAbsorbFn(spell_priest_spirit_of_redemption::HandleAbsorb, EFFECT_0); + } +}; + // 28809 - Greater Heal class spell_pri_t3_4p_bonus : public SpellScriptLoader { @@ -1577,6 +1607,7 @@ void AddSC_priest_spell_scripts() new spell_pri_power_word_shield(); new spell_pri_prayer_of_mending_heal(); new spell_pri_shadowform(); + RegisterAuraScript(spell_priest_spirit_of_redemption); new spell_pri_t3_4p_bonus(); new spell_pri_t5_heal_2p_bonus(); new spell_pri_t10_heal_2p_bonus(); |
