mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-18 00:18:43 +01:00
Scripts/Spells: Update Vampiric touch script implementing the talent Misery and the dispel fleeing (#29743)
This commit is contained in:
@@ -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)
|
||||
void HandleApplyEffect(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
|
||||
{
|
||||
return eventInfo.GetProcTarget() == GetCaster();
|
||||
}
|
||||
|
||||
void HandleEffectProc(AuraEffect* aurEff, ProcEventInfo& eventInfo)
|
||||
{
|
||||
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);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user