Scripts/Spells: Update Vampiric touch script implementing the talent Misery and the dispel fleeing

Port From (https://github.com/TrinityCore/TrinityCore/commit/cf026aa62747dfa0528a70badef69fcf33cbf8ba)
This commit is contained in:
hondacrx
2024-02-28 20:35:35 -05:00
parent f3cef28273
commit c7c5b26b16
+18 -40
View File
@@ -107,6 +107,7 @@ namespace Scripts.Spells.Priest
public const uint Mindgames = 375901; public const uint Mindgames = 375901;
public const uint MindgamesVenthyr = 323673; public const uint MindgamesVenthyr = 323673;
public const uint MindBombStun = 226943; public const uint MindBombStun = 226943;
public const uint Misery = 238558;
public const uint OracularHeal = 26170; public const uint OracularHeal = 26170;
public const uint PainTransformation = 372991; public const uint PainTransformation = 372991;
public const uint PainTransformationHeal = 372994; public const uint PainTransformationHeal = 372994;
@@ -149,6 +150,7 @@ namespace Scripts.Spells.Priest
public const uint ShadowWordPain = 589; public const uint ShadowWordPain = 589;
public const uint ShieldDiscipline = 197045; public const uint ShieldDiscipline = 197045;
public const uint ShieldDisciplineEffect = 47755; public const uint ShieldDisciplineEffect = 47755;
public const uint SinAndPunishment = 87204;
public const uint SinsOfTheMany = 280398; public const uint SinsOfTheMany = 280398;
public const uint Smite = 585; public const uint Smite = 585;
public const uint SpiritOfRedemption = 27827; public const uint SpiritOfRedemption = 27827;
@@ -164,8 +166,7 @@ namespace Scripts.Spells.Priest
public const uint UltimatePenitence = 421453; public const uint UltimatePenitence = 421453;
public const uint UltimatePenitenceDamage = 421543; public const uint UltimatePenitenceDamage = 421543;
public const uint UltimatePenitenceHeal = 421544; public const uint UltimatePenitenceHeal = 421544;
public const uint VapiricEmbraceHeal = 15290; public const uint VampiricEmbraceHeal = 15290;
public const uint VapiricTouchDispel = 64085;
public const uint VoidShield = 199144; public const uint VoidShield = 199144;
public const uint VoidShieldEffect = 199145; public const uint VoidShieldEffect = 199145;
public const uint WeakenedSoul = 6788; public const uint WeakenedSoul = 6788;
@@ -173,7 +174,6 @@ namespace Scripts.Spells.Priest
public const uint PvpRulesEnabledHardcoded = 134735; public const uint PvpRulesEnabledHardcoded = 134735;
public const uint VisualPriestPowerWordRadiance = 52872; public const uint VisualPriestPowerWordRadiance = 52872;
public const uint VisualPriestPrayerOfMending = 38945; public const uint VisualPriestPrayerOfMending = 38945;
public const uint GenReplenishment = 57669;
} }
[Script] // 121536 - Angelic Feather talent [Script] // 121536 - Angelic Feather talent
@@ -2999,12 +2999,12 @@ namespace Scripts.Spells.Priest
} }
} }
[Script] // 15286 - Vapiric Embrace [Script] // 15286 - Vampiric Embrace
class spell_pri_vapiric_embrace : AuraScript class spell_pri_vampiric_embrace : AuraScript
{ {
public override bool Validate(SpellInfo spellInfo) public override bool Validate(SpellInfo spellInfo)
{ {
return ValidateSpellInfo(SpellIds.VapiricEmbraceHeal); return ValidateSpellInfo(SpellIds.VampiricEmbraceHeal);
} }
bool CheckProc(ProcEventInfo eventInfo) bool CheckProc(ProcEventInfo eventInfo)
@@ -3026,7 +3026,7 @@ namespace Scripts.Spells.Priest
CastSpellExtraArgs args = new(aurEff); CastSpellExtraArgs args = new(aurEff);
args.AddSpellMod(SpellValueMod.BasePoint0, teamHeal); args.AddSpellMod(SpellValueMod.BasePoint0, teamHeal);
args.AddSpellMod(SpellValueMod.BasePoint1, selfHeal); args.AddSpellMod(SpellValueMod.BasePoint1, selfHeal);
GetTarget().CastSpell(null, SpellIds.VapiricEmbraceHeal, args); GetTarget().CastSpell(null, SpellIds.VampiricEmbraceHeal, args);
} }
public override void Register() public override void Register()
@@ -3036,8 +3036,8 @@ namespace Scripts.Spells.Priest
} }
} }
[Script] // 15290 - Vapiric Embrace (heal) [Script] // 15290 - Vampiric Embrace (heal)
class spell_pri_vapiric_embrace_target : SpellScript class spell_pri_vampiric_embrace_target : SpellScript
{ {
void FilterTargets(List<WorldObject> unitList) void FilterTargets(List<WorldObject> unitList)
{ {
@@ -3050,54 +3050,32 @@ namespace Scripts.Spells.Priest
} }
} }
[Script] // 34914 - VaMathF.PIric Touch [Script] // 34914 - Vampiric Touch
class spell_pri_vapiric_touch : AuraScript class spell_pri_vampiric_touch : AuraScript
{ {
public override bool Validate(SpellInfo spellInfo) public override bool Validate(SpellInfo spellInfo)
{ {
return ValidateSpellInfo(SpellIds.VapiricTouchDispel, SpellIds.GenReplenishment); return ValidateSpellInfo(SpellIds.SinAndPunishment, SpellIds.ShadowWordPain);
} }
void HandleDispel(DispelInfo dispelInfo) void HandleDispel(DispelInfo dispelInfo)
{ {
Unit caster = GetCaster(); Unit caster = GetCaster();
if (caster != null) if (caster != null)
{ caster.CastSpell(dispelInfo.GetDispeller(), SpellIds.SinAndPunishment, true);
Unit target = GetUnitOwner();
if (target != null)
{
AuraEffect aurEff = GetEffect(1);
if (aurEff != null)
{
// backfire damage
int bp = aurEff.GetAmount();
bp = target.SpellDamageBonusTaken(caster, aurEff.GetSpellInfo(), bp, DamageEffectType.DOT);
bp *= 8;
CastSpellExtraArgs args = new(aurEff);
args.AddSpellMod(SpellValueMod.BasePoint0, bp);
caster.CastSpell(target, SpellIds.VapiricTouchDispel, args);
}
}
}
} }
bool CheckProc(ProcEventInfo eventInfo) void HandleApplyEffect(AuraEffect aurEff, AuraEffectHandleModes mode)
{ {
return eventInfo.GetProcTarget() == GetCaster(); Unit caster = GetCaster();
} if (caster != null && caster.HasAura(SpellIds.Misery))
caster.CastSpell(GetTarget(), SpellIds.ShadowWordPain, true);
void HandleEffectProc(AuraEffect aurEff, ProcEventInfo eventInfo)
{
PreventDefaultAction();
eventInfo.GetProcTarget().CastSpell(null, SpellIds.GenReplenishment, aurEff);
} }
public override void Register() public override void Register()
{ {
AfterDispel.Add(new(HandleDispel)); AfterDispel.Add(new(HandleDispel));
DoCheckProc.Add(new(CheckProc)); OnEffectApply.Add(new(HandleApplyEffect, 0, AuraType.Dummy, AuraEffectHandleModes.RealOrReapplyMask));
OnEffectProc.Add(new(HandleEffectProc, 2, AuraType.Dummy));
} }
} }
} }