Scripts/Spells: Implemented Priest talent Crystalline Reflection
Port From (https://github.com/TrinityCore/TrinityCore/commit/69f2f8cd8cf2d5946bafb294e9b60841271fa875)
This commit is contained in:
@@ -38,6 +38,9 @@ namespace Scripts.Spells.Priest
|
|||||||
public const uint BodyAndSoul = 64129;
|
public const uint BodyAndSoul = 64129;
|
||||||
public const uint BodyAndSoulSpeed = 65081;
|
public const uint BodyAndSoulSpeed = 65081;
|
||||||
public const uint CircleOfHealing = 204883;
|
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 DarkIndulgence = 372972;
|
||||||
public const uint DarkReprimand = 400169;
|
public const uint DarkReprimand = 400169;
|
||||||
public const uint DarkReprimandChannelDamage = 373129;
|
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
|
[Script] // 8092 - Mind Blast
|
||||||
class spell_pri_dark_indulgence : SpellScript
|
class spell_pri_dark_indulgence : SpellScript
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user