diff options
-rw-r--r-- | src/server/scripts/Spells/spell_priest.cpp | 44 |
1 files changed, 10 insertions, 34 deletions
diff --git a/src/server/scripts/Spells/spell_priest.cpp b/src/server/scripts/Spells/spell_priest.cpp index c7a02d829f0..297d90ff26a 100644 --- a/src/server/scripts/Spells/spell_priest.cpp +++ b/src/server/scripts/Spells/spell_priest.cpp @@ -129,6 +129,7 @@ enum PriestSpells SPELL_PRIEST_MINDGAMES = 375901, SPELL_PRIEST_MINDGAMES_VENTHYR = 323673, SPELL_PRIEST_MIND_BOMB_STUN = 226943, + SPELL_PRIEST_MISERY = 238558, SPELL_PRIEST_ORACULAR_HEAL = 26170, SPELL_PRIEST_PAIN_TRANSFORMATION = 372991, SPELL_PRIEST_PAIN_TRANSFORMATION_HEAL = 372994, @@ -171,6 +172,7 @@ enum PriestSpells SPELL_PRIEST_SHADOW_WORD_PAIN = 589, SPELL_PRIEST_SHIELD_DISCIPLINE = 197045, SPELL_PRIEST_SHIELD_DISCIPLINE_EFFECT = 47755, + SPELL_PRIEST_SIN_AND_PUNISHMENT = 87204, SPELL_PRIEST_SINS_OF_THE_MANY = 280398, SPELL_PRIEST_SMITE = 585, SPELL_PRIEST_SPIRIT_OF_REDEMPTION = 27827, @@ -187,7 +189,6 @@ enum PriestSpells SPELL_PRIEST_ULTIMATE_PENITENCE_DAMAGE = 421543, SPELL_PRIEST_ULTIMATE_PENITENCE_HEAL = 421544, SPELL_PRIEST_VAMPIRIC_EMBRACE_HEAL = 15290, - SPELL_PRIEST_VAMPIRIC_TOUCH_DISPEL = 64085, SPELL_PRIEST_VOID_SHIELD = 199144, SPELL_PRIEST_VOID_SHIELD_EFFECT = 199145, SPELL_PRIEST_WEAKENED_SOUL = 6788, @@ -207,11 +208,6 @@ enum PriestSummons NPC_PRIEST_SHADOWFIEND = 19668 }; -enum MiscSpells -{ - SPELL_GEN_REPLENISHMENT = 57669 -}; - class RaidCheck { public: @@ -3158,46 +3154,26 @@ class spell_pri_vampiric_touch : public AuraScript { bool Validate(SpellInfo const* /*spellInfo*/) override { - return ValidateSpellInfo({ SPELL_PRIEST_VAMPIRIC_TOUCH_DISPEL, SPELL_GEN_REPLENISHMENT }); + return ValidateSpellInfo({ SPELL_PRIEST_SIN_AND_PUNISHMENT, SPELL_PRIEST_SHADOW_WORD_PAIN }); } - void HandleDispel(DispelInfo* /*dispelInfo*/) + void HandleDispel(DispelInfo* dispelInfo) { if (Unit* caster = GetCaster()) - { - if (Unit* target = GetUnitOwner()) - { - if (AuraEffect const* aurEff = GetEffect(EFFECT_1)) - { - // backfire damage - int32 bp = aurEff->GetAmount(); - bp = target->SpellDamageBonusTaken(caster, aurEff->GetSpellInfo(), bp, DOT); - bp *= 8; - - CastSpellExtraArgs args(aurEff); - args.AddSpellBP0(bp); - caster->CastSpell(target, SPELL_PRIEST_VAMPIRIC_TOUCH_DISPEL, args); - } - } - } + caster->CastSpell(dispelInfo->GetDispeller(), SPELL_PRIEST_SIN_AND_PUNISHMENT, true); } - bool CheckProc(ProcEventInfo& eventInfo) - { - return eventInfo.GetProcTarget() == GetCaster(); - } - - void HandleEffectProc(AuraEffect* aurEff, ProcEventInfo& eventInfo) + void HandleApplyEffect(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) { - PreventDefaultAction(); - eventInfo.GetProcTarget()->CastSpell(nullptr, SPELL_GEN_REPLENISHMENT, aurEff); + if (Unit* caster = GetCaster()) + if (caster->HasAura(SPELL_PRIEST_MISERY)) + caster->CastSpell(GetTarget(), SPELL_PRIEST_SHADOW_WORD_PAIN, true); } void Register() override { AfterDispel += AuraDispelFn(spell_pri_vampiric_touch::HandleDispel); - DoCheckProc += AuraCheckProcFn(spell_pri_vampiric_touch::CheckProc); - OnEffectProc += AuraEffectProcFn(spell_pri_vampiric_touch::HandleEffectProc, EFFECT_2, SPELL_AURA_DUMMY); + OnEffectApply += AuraEffectApplyFn(spell_pri_vampiric_touch::HandleApplyEffect, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL_OR_REAPPLY_MASK); } }; |