From cde3843afdfdcafa508eaa03a4ac78589cc5c685 Mon Sep 17 00:00:00 2001 From: hondacrx Date: Thu, 4 Aug 2022 18:58:30 -0400 Subject: [PATCH] Scripts/Spells: Priest - Power of the Dark Side fixed Port From (https://github.com/TrinityCore/TrinityCore/commit/22625e82ba994ccf197592f71b877a14e2c53390) --- Source/Scripts/Spells/Priest.cs | 112 ++++++++++++++++++ .../world/master/2022_08_02_02_world.sql | 10 ++ 2 files changed, 122 insertions(+) create mode 100644 sql/updates/world/master/2022_08_02_02_world.sql diff --git a/Source/Scripts/Spells/Priest.cs b/Source/Scripts/Spells/Priest.cs index 2e2e97f08..00730158b 100644 --- a/Source/Scripts/Spells/Priest.cs +++ b/Source/Scripts/Spells/Priest.cs @@ -60,6 +60,10 @@ namespace Scripts.Spells.Priest public const uint Penance = 47540; public const uint PenanceChannelDamage = 47758; public const uint PenanceChannelHealing = 47757; + public const uint PenanceDamage = 47666; + public const uint SPELL_PRIEST_PENANCE_HEALING = 47750; + public const uint PowerOfTheDarkSide = 198069; + public const uint PowerOfTheDarkSideTint = 225795; public const uint PowerWordShield = 17; public const uint PowerWordSolaceEnergize = 129253; public const uint PrayerOfMendingAura = 41635; @@ -579,6 +583,114 @@ namespace Scripts.Spells.Priest } } + [Script] // 47758 - Penance (Channel Damage), 47757 - Penance (Channel Healing) + class spell_pri_penance_channeled : AuraScript + { + public override bool Validate(SpellInfo spellInfo) + { + return ValidateSpellInfo(SpellIds.PowerOfTheDarkSide); + } + + void HandleOnRemove(AuraEffect aurEff, AuraEffectHandleModes mode) + { + Unit caster = GetCaster(); + if (caster != null) + caster.RemoveAura(SpellIds.PowerOfTheDarkSide); + } + + public override void Register() + { + OnEffectRemove.Add(new EffectApplyHandler(HandleOnRemove, 0, AuraType.Dummy, AuraEffectHandleModes.Real)); + } + } + + [Script] // 198069 - Power of the Dark Side + class spell_pri_power_of_the_dark_side : AuraScript + { + public override bool Validate(SpellInfo spellInfo) + { + return ValidateSpellInfo(SpellIds.PowerOfTheDarkSideTint); + } + + void HandleOnApply(AuraEffect aurEff, AuraEffectHandleModes mode) + { + Unit caster = GetCaster(); + if (caster != null) + caster.CastSpell(caster, SpellIds.PowerOfTheDarkSideTint, true); + } + + void HandleOnRemove(AuraEffect aurEff, AuraEffectHandleModes mode) + { + Unit caster = GetCaster(); + if (caster != null) + caster.RemoveAura(SpellIds.PowerOfTheDarkSideTint); + } + + public override void Register() + { + OnEffectApply.Add(new EffectApplyHandler(HandleOnApply, 0, AuraType.Dummy, AuraEffectHandleModes.Real)); + OnEffectRemove.Add(new EffectApplyHandler(HandleOnRemove, 0, AuraType.Dummy, AuraEffectHandleModes.Real)); + } + } + + [Script] // 47666 - Penance (Damage) + class spell_pri_power_of_the_dark_side_damage_bonus : SpellScript + { + public override bool Validate(SpellInfo spellInfo) + { + return ValidateSpellInfo(SpellIds.PowerOfTheDarkSide); + } + + void HandleLaunchTarget(uint effIndex) + { + AuraEffect powerOfTheDarkSide = GetCaster().GetAuraEffect(SpellIds.PowerOfTheDarkSide, 0); + if (powerOfTheDarkSide != null) + { + PreventHitDefaultEffect(effIndex); + + float damageBonus = GetCaster().SpellDamageBonusDone(GetHitUnit(), GetSpellInfo(), (uint)GetEffectValue(), DamageEffectType.SpellDirect, GetEffectInfo()); + float value = damageBonus + damageBonus * GetEffectVariance(); + value *= 1.0f + (powerOfTheDarkSide.GetAmount() / 100.0f); + value = GetHitUnit().SpellDamageBonusTaken(GetCaster(), GetSpellInfo(), (uint)value, DamageEffectType.SpellDirect); + SetHitDamage((int)value); + } + } + + public override void Register() + { + OnEffectLaunchTarget.Add(new EffectHandler(HandleLaunchTarget, 0, SpellEffectName.SchoolDamage)); + } + } + + [Script] // 47750 - Penance (Healing) + class spell_pri_power_of_the_dark_side_healing_bonus : SpellScript + { + public override bool Validate(SpellInfo spellInfo) + { + return ValidateSpellInfo(SpellIds.PowerOfTheDarkSide); + } + + void HandleLaunchTarget(uint effIndex) + { + AuraEffect powerOfTheDarkSide = GetCaster().GetAuraEffect(SpellIds.PowerOfTheDarkSide, 0); + if (powerOfTheDarkSide != null) + { + PreventHitDefaultEffect(effIndex); + + float healingBonus = GetCaster().SpellHealingBonusDone(GetHitUnit(), GetSpellInfo(), (uint)GetEffectValue(), DamageEffectType.Heal, GetEffectInfo()); + float value = healingBonus + healingBonus * GetEffectVariance(); + value *= 1.0f + (powerOfTheDarkSide.GetAmount() / 100.0f); + value = GetHitUnit().SpellHealingBonusTaken(GetCaster(), GetSpellInfo(), (uint)value, DamageEffectType.Heal); + SetHitHeal((int)value); + } + } + + public override void Register() + { + OnEffectLaunchTarget.Add(new EffectHandler(HandleLaunchTarget, 0, SpellEffectName.Heal)); + } + } + [Script] // 194509 - Power Word: Radiance class spell_pri_power_word_radiance : SpellScript { diff --git a/sql/updates/world/master/2022_08_02_02_world.sql b/sql/updates/world/master/2022_08_02_02_world.sql new file mode 100644 index 000000000..cd5d33f65 --- /dev/null +++ b/sql/updates/world/master/2022_08_02_02_world.sql @@ -0,0 +1,10 @@ +DELETE FROM `spell_script_names` WHERE `ScriptName`='spell_pri_power_of_the_dark_side_damage_bonus'; +DELETE FROM `spell_script_names` WHERE `ScriptName`='spell_pri_power_of_the_dark_side_healing_bonus'; +DELETE FROM `spell_script_names` WHERE `ScriptName`='spell_pri_penance_channeled'; +DELETE FROM `spell_script_names` WHERE `ScriptName`='spell_pri_power_of_the_dark_side'; +INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES +(47666, 'spell_pri_power_of_the_dark_side_damage_bonus'), +(47750, 'spell_pri_power_of_the_dark_side_healing_bonus'), +(47758, 'spell_pri_penance_channeled'), +(47757, 'spell_pri_penance_channeled'), +(198069, 'spell_pri_power_of_the_dark_side');