Scripts/Spells: Implement Ysera's Gift

Port From (https://github.com/TrinityCore/TrinityCore/commit/001ac7aa5bd6e34189c79f53e1e012fee8e2d3e1)
This commit is contained in:
hondacrx
2023-08-28 11:35:00 -04:00
parent b6b558f03a
commit efd91bfd57
+45 -5
View File
@@ -76,6 +76,8 @@ namespace Scripts.Spells.Druid
public const uint ThrashBear = 77758; public const uint ThrashBear = 77758;
public const uint ThrashBearAura = 192090; public const uint ThrashBearAura = 192090;
public const uint ThrashCat = 106830; public const uint ThrashCat = 106830;
public const uint YserasGiftHealParty = 145110;
public const uint YserasGiftHealSelf = 145109;
} }
[Script] // 22812 - Barkskin [Script] // 22812 - Barkskin
@@ -629,10 +631,10 @@ namespace Scripts.Spells.Druid
{ {
AuraEffect innervateR2 = caster.GetAuraEffect(SpellIds.InnervateRank2, 0); AuraEffect innervateR2 = caster.GetAuraEffect(SpellIds.InnervateRank2, 0);
if (innervateR2 != null) if (innervateR2 != null)
caster.CastSpell(caster, SpellIds.Innervate, caster.CastSpell(caster, SpellIds.Innervate,
new CastSpellExtraArgs(TriggerCastFlags.IgnoreSpellAndCategoryCD | TriggerCastFlags.IgnoreCastInProgress) new CastSpellExtraArgs(TriggerCastFlags.IgnoreSpellAndCategoryCD | TriggerCastFlags.IgnoreCastInProgress)
.SetTriggeringSpell(GetSpell()) .SetTriggeringSpell(GetSpell())
.AddSpellMod(SpellValueMod.BasePoint0, -innervateR2.GetAmount())); .AddSpellMod(SpellValueMod.BasePoint0, -innervateR2.GetAmount()));
} }
} }
@@ -1085,7 +1087,7 @@ namespace Scripts.Spells.Druid
return; return;
int amount = MathFunctions.CalculatePct(spellPowerCost.Amount, aurEff.GetAmount()); int amount = MathFunctions.CalculatePct(spellPowerCost.Amount, aurEff.GetAmount());
CastSpellExtraArgs args = new (aurEff); CastSpellExtraArgs args = new(aurEff);
args.AddSpellMod(SpellValueMod.BasePoint0, amount); args.AddSpellMod(SpellValueMod.BasePoint0, amount);
caster.CastSpell((Unit)null, SpellIds.Exhilarate, args); caster.CastSpell((Unit)null, SpellIds.Exhilarate, args);
} }
@@ -1547,4 +1549,42 @@ namespace Scripts.Spells.Druid
OnEffectUpdatePeriodic.Add(new EffectUpdatePeriodicHandler(HandleTickUpdate, 0, AuraType.PeriodicHeal)); OnEffectUpdatePeriodic.Add(new EffectUpdatePeriodicHandler(HandleTickUpdate, 0, AuraType.PeriodicHeal));
} }
} }
[Script] // 145108 - Ysera's Gift
class spell_dru_yseras_gift : AuraScript
{
public override bool Validate(SpellInfo spellInfo)
{
return ValidateSpellInfo(SpellIds.YserasGiftHealSelf, SpellIds.YserasGiftHealParty);
}
void HandleEffectPeriodic(AuraEffect aurEff)
{
int healAmount = (int)GetTarget().CountPctFromMaxHealth(aurEff.GetAmount());
if (!GetTarget().IsFullHealth())
GetTarget().CastSpell(GetTarget(), SpellIds.YserasGiftHealSelf, new CastSpellExtraArgs(aurEff).AddSpellMod(SpellValueMod.BasePoint0, healAmount));
else
GetTarget().CastSpell(GetTarget(), SpellIds.YserasGiftHealParty, new CastSpellExtraArgs(aurEff).AddSpellMod(SpellValueMod.BasePoint0, healAmount));
}
public override void Register()
{
OnEffectPeriodic.Add(new EffectPeriodicHandler(HandleEffectPeriodic, 0, AuraType.PeriodicDummy));
}
}
[Script] // 145110 - Ysera's Gift (heal)
class spell_dru_yseras_gift_group_heal : SpellScript
{
void SelectTargets(List<WorldObject> targets)
{
SelectRandomInjuredTargets(targets, 1, true);
}
public override void Register()
{
OnObjectAreaTargetSelect.Add(new ObjectAreaTargetSelectHandler(SelectTargets, 0, Targets.UnitCasterAreaRaid));
}
}
} }