diff options
author | Teleqraph <nyrdeveloper@gmail.com> | 2023-05-07 17:52:48 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-05-07 17:52:48 +0200 |
commit | b53de1eb4bce8b4a7db823f3273a7fd82abe7fb6 (patch) | |
tree | b68ee60c69157a7e47661af4e27fc6d551eede14 | |
parent | 23f42e09ec34ac6285773b70bd53503ea0986ff6 (diff) |
Scripts/Spells: Implement Dark Reprimand (#28925)
Co-authored-by: Shauren <shauren.trinity@gmail.com>
-rw-r--r-- | sql/updates/world/master/2023_05_07_05_world.sql | 19 | ||||
-rw-r--r-- | src/server/scripts/Spells/spell_priest.cpp | 40 |
2 files changed, 47 insertions, 12 deletions
diff --git a/sql/updates/world/master/2023_05_07_05_world.sql b/sql/updates/world/master/2023_05_07_05_world.sql new file mode 100644 index 00000000000..ddc0f96bc47 --- /dev/null +++ b/sql/updates/world/master/2023_05_07_05_world.sql @@ -0,0 +1,19 @@ +DELETE FROM `spell_script_names` WHERE `spell_id`=400169; +DELETE FROM `spell_script_names` WHERE `ScriptName`='spell_pri_dark_reprimand'; +INSERT INTO `spell_script_names` (`spell_id`,`ScriptName`) VALUES +(400169,'spell_pri_dark_reprimand'); + +DELETE FROM `spell_script_names` WHERE `ScriptName` IN ('spell_pri_penance_channeled','spell_pri_penance_or_dark_reprimand_channeled'); +INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES +(47758,'spell_pri_penance_or_dark_reprimand_channeled'), +(47757,'spell_pri_penance_or_dark_reprimand_channeled'), +(373129,'spell_pri_penance_or_dark_reprimand_channeled'), +(400171,'spell_pri_penance_or_dark_reprimand_channeled'); + +DELETE FROM `spell_script_names` WHERE `spell_id`=373130 AND `ScriptName`='spell_pri_power_of_the_dark_side_damage_bonus'; +INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES +(373130,'spell_pri_power_of_the_dark_side_damage_bonus'); + +DELETE FROM `spell_script_names` WHERE `spell_id`=400187 AND `ScriptName`='spell_pri_power_of_the_dark_side_healing_bonus'; +INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES +(400187,'spell_pri_power_of_the_dark_side_healing_bonus'); diff --git a/src/server/scripts/Spells/spell_priest.cpp b/src/server/scripts/Spells/spell_priest.cpp index 1a78be8d936..9dc3f20cf54 100644 --- a/src/server/scripts/Spells/spell_priest.cpp +++ b/src/server/scripts/Spells/spell_priest.cpp @@ -49,6 +49,11 @@ enum PriestSpells SPELL_PRIEST_BLESSED_HEALING = 70772, SPELL_PRIEST_BODY_AND_SOUL = 64129, SPELL_PRIEST_BODY_AND_SOUL_SPEED = 65081, + SPELL_PRIEST_DARK_REPRIMAND = 400169, + SPELL_PRIEST_DARK_REPRIMAND_CHANNEL_DAMAGE = 373129, + SPELL_PRIEST_DARK_REPRIMAND_CHANNEL_HEALING = 400171, + SPELL_PRIEST_DARK_REPRIMAND_DAMAGE = 373130, + SPELL_PRIEST_DARK_REPRIMAND_HEALING = 400187, SPELL_PRIEST_DIVINE_BLESSING = 40440, SPELL_PRIEST_DIVINE_STAR_HOLY = 110744, SPELL_PRIEST_DIVINE_STAR_SHADOW = 122121, @@ -749,22 +754,25 @@ class spell_pri_mind_bomb : public AuraScript }; // 47540 - Penance +// 400169 - Dark Reprimand class spell_pri_penance : public SpellScript { PrepareSpellScript(spell_pri_penance); +public: + spell_pri_penance(uint32 damageSpellId, uint32 healingSpellId) : _damageSpellId(damageSpellId), _healingSpellId(healingSpellId) + { + } + bool Validate(SpellInfo const* /*spellInfo*/) override { - return ValidateSpellInfo - ({ - SPELL_PRIEST_PENANCE_CHANNEL_DAMAGE, - SPELL_PRIEST_PENANCE_CHANNEL_HEALING - }); + return ValidateSpellInfo({ _damageSpellId, _healingSpellId }); } SpellCastResult CheckCast() { Unit* caster = GetCaster(); + if (Unit* target = GetExplTargetUnit()) { if (!caster->IsFriendlyTo(target)) @@ -787,9 +795,9 @@ class spell_pri_penance : public SpellScript if (Unit* target = GetHitUnit()) { if (caster->IsFriendlyTo(target)) - caster->CastSpell(target, SPELL_PRIEST_PENANCE_CHANNEL_HEALING, CastSpellExtraArgs().SetTriggeringSpell(GetSpell())); + caster->CastSpell(target, _healingSpellId, CastSpellExtraArgs().SetTriggeringSpell(GetSpell())); else - caster->CastSpell(target, SPELL_PRIEST_PENANCE_CHANNEL_DAMAGE, CastSpellExtraArgs().SetTriggeringSpell(GetSpell())); + caster->CastSpell(target, _damageSpellId, CastSpellExtraArgs().SetTriggeringSpell(GetSpell())); } } @@ -798,12 +806,17 @@ class spell_pri_penance : public SpellScript OnCheckCast += SpellCheckCastFn(spell_pri_penance::CheckCast); OnEffectHitTarget += SpellEffectFn(spell_pri_penance::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); } + +private: + uint32 _damageSpellId; + uint32 _healingSpellId; }; // 47758 - Penance (Channel Damage), 47757 - Penance (Channel Healing) -class spell_pri_penance_channeled : public AuraScript +// 373129 - Dark Reprimand (Channel Damage), 400171 - Dark Reprimand (Channel Healing) +class spell_pri_penance_or_dark_reprimand_channeled : public AuraScript { - PrepareAuraScript(spell_pri_penance_channeled); + PrepareAuraScript(spell_pri_penance_or_dark_reprimand_channeled); bool Validate(SpellInfo const* /*spellInfo*/) override { @@ -818,7 +831,7 @@ class spell_pri_penance_channeled : public AuraScript void Register() override { - OnEffectRemove += AuraEffectRemoveFn(spell_pri_penance_channeled::HandleOnRemove, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL); + OnEffectRemove += AuraEffectRemoveFn(spell_pri_penance_or_dark_reprimand_channeled::HandleOnRemove, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL); } }; @@ -852,6 +865,7 @@ class spell_pri_power_of_the_dark_side : public AuraScript }; // 47666 - Penance (Damage) +// 373130 - Dark Reprimand (Damage) class spell_pri_power_of_the_dark_side_damage_bonus : public SpellScript { PrepareSpellScript(spell_pri_power_of_the_dark_side_damage_bonus); @@ -882,6 +896,7 @@ class spell_pri_power_of_the_dark_side_damage_bonus : public SpellScript }; // 47750 - Penance (Healing) +// 400187 - Dark Reprimand (Healing) class spell_pri_power_of_the_dark_side_healing_bonus : public SpellScript { PrepareSpellScript(spell_pri_power_of_the_dark_side_healing_bonus); @@ -1680,8 +1695,9 @@ void AddSC_priest_spell_scripts() RegisterSpellScript(spell_pri_leap_of_faith_effect_trigger); RegisterSpellScript(spell_pri_levitate); RegisterSpellScript(spell_pri_mind_bomb); - RegisterSpellScript(spell_pri_penance); - RegisterSpellScript(spell_pri_penance_channeled); + RegisterSpellScriptWithArgs(spell_pri_penance, "spell_pri_penance", SPELL_PRIEST_PENANCE_CHANNEL_DAMAGE, SPELL_PRIEST_PENANCE_CHANNEL_HEALING); + RegisterSpellScriptWithArgs(spell_pri_penance, "spell_pri_dark_reprimand", SPELL_PRIEST_DARK_REPRIMAND_CHANNEL_DAMAGE, SPELL_PRIEST_DARK_REPRIMAND_CHANNEL_HEALING); + RegisterSpellScript(spell_pri_penance_or_dark_reprimand_channeled); RegisterSpellScript(spell_pri_power_of_the_dark_side); RegisterSpellScript(spell_pri_power_of_the_dark_side_damage_bonus); RegisterSpellScript(spell_pri_power_of_the_dark_side_healing_bonus); |