Scripts/Spells: Implemented Shadow Priest talent Mind Devourer
Port From (https://github.com/TrinityCore/TrinityCore/commit/79928707f8194814cab168259596f09169fac8ab)
This commit is contained in:
@@ -102,6 +102,8 @@ namespace Scripts.Spells.Priest
|
|||||||
public const uint MasochismTalent = 193063;
|
public const uint MasochismTalent = 193063;
|
||||||
public const uint MasochismPeriodicHeal = 193065;
|
public const uint MasochismPeriodicHeal = 193065;
|
||||||
public const uint MasteryGrace = 271534;
|
public const uint MasteryGrace = 271534;
|
||||||
|
public const uint MindDevourer = 373202;
|
||||||
|
public const uint MindDevourerAura = 373204;
|
||||||
public const uint MindbenderDisc = 123040;
|
public const uint MindbenderDisc = 123040;
|
||||||
public const uint MindbenderShadow = 200174;
|
public const uint MindbenderShadow = 200174;
|
||||||
public const uint Mindgames = 375901;
|
public const uint Mindgames = 375901;
|
||||||
@@ -1606,6 +1608,97 @@ namespace Scripts.Spells.Priest
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 373202 - Mind Devourer
|
||||||
|
[Script] // Triggered by 8092 - Mind Blast
|
||||||
|
class spell_pri_mind_devourer : SpellScript
|
||||||
|
{
|
||||||
|
public override bool Validate(SpellInfo spellInfo)
|
||||||
|
{
|
||||||
|
return ValidateSpellInfo(SpellIds.MindDevourerAura)
|
||||||
|
&& ValidateSpellEffect((SpellIds.MindDevourer, 0));
|
||||||
|
}
|
||||||
|
|
||||||
|
public override bool Load()
|
||||||
|
{
|
||||||
|
return GetCaster().HasAura(SpellIds.MindDevourer);
|
||||||
|
}
|
||||||
|
|
||||||
|
void HandleEffectHitTarget(uint effIndex)
|
||||||
|
{
|
||||||
|
AuraEffect aurEff = GetCaster().GetAuraEffect(SpellIds.MindDevourer, 0);
|
||||||
|
if (aurEff != null && RandomHelper.randChance(aurEff.GetAmount()))
|
||||||
|
GetCaster().CastSpell(GetCaster(), SpellIds.MindDevourerAura, GetSpell());
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void Register()
|
||||||
|
{
|
||||||
|
OnEffectHitTarget.Add(new EffectHandler(HandleEffectHitTarget, 0, SpellEffectName.SchoolDamage));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 373204 - Mind Devourer (Aura)
|
||||||
|
[Script] // Attached to 335467 - Devouring Plague
|
||||||
|
class spell_pri_mind_devourer_buff_aura : AuraScript
|
||||||
|
{
|
||||||
|
public float DamageIncrease;
|
||||||
|
|
||||||
|
void CalculateDamage(AuraEffect aurEff, Unit victim, ref int damage, ref int flatMod, ref float pctMod)
|
||||||
|
{
|
||||||
|
MathFunctions.AddPct(ref pctMod, DamageIncrease);
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void Register()
|
||||||
|
{
|
||||||
|
DoEffectCalcDamageAndHealing.Add(new EffectCalcDamageAndHealingHandler(CalculateDamage, 1, AuraType.PeriodicLeech));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[Script]
|
||||||
|
class spell_pri_mind_devourer_buff : SpellScript
|
||||||
|
{
|
||||||
|
float _damageIncrease;
|
||||||
|
|
||||||
|
public override bool Validate(SpellInfo spellInfo)
|
||||||
|
{
|
||||||
|
return ValidateSpellEffect((SpellIds.MindDevourerAura, 1));
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void OnPrecast()
|
||||||
|
{
|
||||||
|
AuraEffect mindDevourer = GetCaster().GetAuraEffect(SpellIds.MindDevourerAura, 1);
|
||||||
|
if (mindDevourer == null || !GetSpell().m_appliedMods.Contains(mindDevourer.GetBase()))
|
||||||
|
return;
|
||||||
|
|
||||||
|
_damageIncrease = mindDevourer.GetAmount();
|
||||||
|
}
|
||||||
|
|
||||||
|
void CalculateDamage(Unit victim, ref int damage, ref int flatMod, ref float pctMod)
|
||||||
|
{
|
||||||
|
MathFunctions.AddPct(ref pctMod, _damageIncrease);
|
||||||
|
}
|
||||||
|
|
||||||
|
void ModifyAuraValueAndRemoveBuff(uint effIndex)
|
||||||
|
{
|
||||||
|
if (_damageIncrease == 0)
|
||||||
|
return;
|
||||||
|
|
||||||
|
Aura devouringPlague = GetHitAura();
|
||||||
|
if (devouringPlague != null)
|
||||||
|
{
|
||||||
|
spell_pri_mind_devourer_buff_aura script = devouringPlague.GetScript<spell_pri_mind_devourer_buff_aura>();
|
||||||
|
script.DamageIncrease = _damageIncrease;
|
||||||
|
}
|
||||||
|
|
||||||
|
GetCaster().RemoveAurasDueToSpell(SpellIds.MindDevourerAura);
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void Register()
|
||||||
|
{
|
||||||
|
CalcDamage.Add(new DamageAndHealingCalcHandler(CalculateDamage));
|
||||||
|
OnEffectHitTarget.Add(new EffectHandler(ModifyAuraValueAndRemoveBuff, 1, SpellEffectName.ApplyAura));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
[Script] // 390686 - Painful Punishment
|
[Script] // 390686 - Painful Punishment
|
||||||
class spell_pri_painful_punishment : AuraScript
|
class spell_pri_painful_punishment : AuraScript
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user