aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTeleqraph <nyrdeveloper@gmail.com>2023-05-07 17:52:48 +0200
committerGitHub <noreply@github.com>2023-05-07 17:52:48 +0200
commitb53de1eb4bce8b4a7db823f3273a7fd82abe7fb6 (patch)
treeb68ee60c69157a7e47661af4e27fc6d551eede14
parent23f42e09ec34ac6285773b70bd53503ea0986ff6 (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.sql19
-rw-r--r--src/server/scripts/Spells/spell_priest.cpp40
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);