From 3f07cd57146164f588249279d964c668a9c61e2c Mon Sep 17 00:00:00 2001 From: hondacrx Date: Mon, 21 Aug 2023 07:55:54 -0400 Subject: [PATCH] Scripts/Warlock: Implemented Dark Pact Port From (https://github.com/TrinityCore/TrinityCore/commit/4aaf82539c1c8222f31de8f1185b7daad7e82fb6) --- Source/Scripts/Spells/Warlock.cs | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/Source/Scripts/Spells/Warlock.cs b/Source/Scripts/Spells/Warlock.cs index 083e5ac0f..b376598c6 100644 --- a/Source/Scripts/Spells/Warlock.cs +++ b/Source/Scripts/Spells/Warlock.cs @@ -151,6 +151,33 @@ namespace Scripts.Spells.Warlock } } + [Script] // 108416 - Dark Pact + class spell_warl_dark_pact : AuraScript + { + public override bool Validate(SpellInfo spellInfo) + { + return ValidateSpellEffect((spellInfo.Id, 1), (spellInfo.Id, 2)); + } + + void CalculateAmount(AuraEffect aurEff, ref int amount, ref bool canBeRecalculated) + { + canBeRecalculated = false; + Unit caster = GetCaster(); + if (caster != null) + { + float extraAmount = caster.SpellBaseDamageBonusDone(GetSpellInfo().GetSchoolMask()) * 2.5f; + ulong absorb = caster.CountPctFromCurHealth(GetEffectInfo(1).CalcValue(caster)); + caster.SetHealth(caster.GetHealth() - absorb); + amount = (int)(MathFunctions.CalculatePct(absorb, GetEffectInfo(2).CalcValue(caster)) + extraAmount); + } + } + + public override void Register() + { + DoEffectCalcAmount.Add(new EffectCalcAmountHandler(CalculateAmount, 0, AuraType.SchoolAbsorb)); + } + } + [Script] // 48018 - Demonic Circle: Summon class spell_warl_demonic_circle_summon : AuraScript {