Scripts/Spells: Implemented Priest talent Crystalline Reflection

Port From (https://github.com/TrinityCore/TrinityCore/commit/69f2f8cd8cf2d5946bafb294e9b60841271fa875)
This commit is contained in:
hondacrx
2024-02-28 18:43:18 -05:00
parent cc8643b1cd
commit 0303981c65
+50
View File
@@ -38,6 +38,9 @@ namespace Scripts.Spells.Priest
public const uint BodyAndSoul = 64129;
public const uint BodyAndSoulSpeed = 65081;
public const uint CircleOfHealing = 204883;
public const uint CrystallineReflection = 373457;
public const uint CrystallineReflectionHeal = 373462;
public const uint CrystallineReflectionReflect = 373464;
public const uint DarkIndulgence = 372972;
public const uint DarkReprimand = 400169;
public const uint DarkReprimandChannelDamage = 373129;
@@ -640,6 +643,53 @@ namespace Scripts.Spells.Priest
}
}
[Script] // 17 - Power Word: Shield
class spell_pri_crystalline_reflection : AuraScript
{
public override bool Validate(SpellInfo spellInfo)
{
return ValidateSpellInfo(SpellIds.CrystallineReflection, SpellIds.CrystallineReflectionHeal, SpellIds.CrystallineReflectionReflect)
&& ValidateSpellEffect((SpellIds.CrystallineReflection, 0));
}
void HandleOnApply(AuraEffect aurEff, AuraEffectHandleModes mode)
{
Unit caster = GetCaster();
if (caster == null)
return;
// Crystalline Reflection Heal
if (caster.HasAura(SpellIds.CrystallineReflection))
caster.CastSpell(GetTarget(), SpellIds.CrystallineReflectionHeal, new CastSpellExtraArgs(aurEff)
.SetTriggerFlags(TriggerCastFlags.IgnoreCastInProgress | TriggerCastFlags.DontReportCastError));
}
void HandleAfterAbsorb(AuraEffect aurEff, DamageInfo dmgInfo, ref uint absorbAmount)
{
Unit caster = GetCaster();
if (caster == null)
return;
AuraEffect auraEff = caster.GetAuraEffect(SpellIds.CrystallineReflection, 0);
if (auraEff == null)
return;
Unit attacker = dmgInfo.GetAttacker();
if (attacker == null)
return;
CastSpellExtraArgs args = new(TriggerCastFlags.DontReportCastError);
args.AddSpellMod(SpellValueMod.BasePoint0, (int)MathFunctions.CalculatePct(absorbAmount, auraEff.GetAmount()));
caster.CastSpell(attacker, SpellIds.CrystallineReflectionReflect, args);
}
public override void Register()
{
AfterEffectApply.Add(new(HandleOnApply, 0, AuraType.SchoolAbsorb, AuraEffectHandleModes.RealOrReapplyMask));
AfterEffectAbsorb.Add(new(HandleAfterAbsorb, 0));
}
}
[Script] // 8092 - Mind Blast
class spell_pri_dark_indulgence : SpellScript
{