aboutsummaryrefslogtreecommitdiff
path: root/src/server
diff options
context:
space:
mode:
authorAqua Deus <95978183+aquadeus@users.noreply.github.com>2024-02-24 16:35:42 +0100
committerGitHub <noreply@github.com>2024-02-24 16:35:42 +0100
commitcf026aa62747dfa0528a70badef69fcf33cbf8ba (patch)
treede8145ba7b570c9aeed14a1e9845e523953e287d /src/server
parentdd15d763cc0529afc9b7f077817645d875608626 (diff)
Scripts/Spells: Update Vampiric touch script implementing the talent Misery and the dispel fleeing (#29743)
Diffstat (limited to 'src/server')
-rw-r--r--src/server/scripts/Spells/spell_priest.cpp44
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);
}
};