Scripts/Spells: Implement Ysera's Gift
Port From (https://github.com/TrinityCore/TrinityCore/commit/001ac7aa5bd6e34189c79f53e1e012fee8e2d3e1)
This commit is contained in:
@@ -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));
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user