aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sql/updates/world/master/2024_02_22_03_world.sql3
-rw-r--r--src/server/scripts/Spells/spell_priest.cpp38
2 files changed, 41 insertions, 0 deletions
diff --git a/sql/updates/world/master/2024_02_22_03_world.sql b/sql/updates/world/master/2024_02_22_03_world.sql
new file mode 100644
index 00000000000..16390a73006
--- /dev/null
+++ b/sql/updates/world/master/2024_02_22_03_world.sql
@@ -0,0 +1,3 @@
+DELETE FROM `spell_script_names` WHERE `ScriptName` IN ('spell_pri_pain_transformation');
+INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES
+(33206, 'spell_pri_pain_transformation');
diff --git a/src/server/scripts/Spells/spell_priest.cpp b/src/server/scripts/Spells/spell_priest.cpp
index 4f3afaa747e..c7a02d829f0 100644
--- a/src/server/scripts/Spells/spell_priest.cpp
+++ b/src/server/scripts/Spells/spell_priest.cpp
@@ -130,6 +130,8 @@ enum PriestSpells
SPELL_PRIEST_MINDGAMES_VENTHYR = 323673,
SPELL_PRIEST_MIND_BOMB_STUN = 226943,
SPELL_PRIEST_ORACULAR_HEAL = 26170,
+ SPELL_PRIEST_PAIN_TRANSFORMATION = 372991,
+ SPELL_PRIEST_PAIN_TRANSFORMATION_HEAL = 372994,
SPELL_PRIEST_PENANCE = 47540,
SPELL_PRIEST_PENANCE_CHANNEL_DAMAGE = 47758,
SPELL_PRIEST_PENANCE_CHANNEL_HEALING = 47757,
@@ -1736,6 +1738,41 @@ class spell_pri_painful_punishment : public AuraScript
}
};
+// 372991 - Pain Transformation
+// Triggered by 33206 - Pain Suppression
+class spell_pri_pain_transformation : public SpellScript
+{
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo
+ ({
+ SPELL_PRIEST_ATONEMENT_EFFECT,
+ SPELL_PRIEST_TRINITY,
+ SPELL_PRIEST_PAIN_TRANSFORMATION,
+ SPELL_PRIEST_PAIN_TRANSFORMATION_HEAL
+ });
+ }
+
+ bool Load() override
+ {
+ return GetCaster()->HasAura(SPELL_PRIEST_PAIN_TRANSFORMATION) && !GetCaster()->HasAura(SPELL_PRIEST_TRINITY);
+ }
+
+ void HandleHit(SpellEffIndex /*effIndex*/) const
+ {
+ CastSpellExtraArgs args(GetSpell());
+ args.SetTriggerFlags(TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR);
+
+ GetCaster()->CastSpell(GetHitUnit(), SPELL_PRIEST_PAIN_TRANSFORMATION_HEAL, args);
+ GetCaster()->CastSpell(GetHitUnit(), SPELL_PRIEST_ATONEMENT_EFFECT, args);
+ }
+
+ void Register() override
+ {
+ OnEffectHitTarget += SpellEffectFn(spell_pri_pain_transformation::HandleHit, EFFECT_0, SPELL_EFFECT_APPLY_AURA);
+ }
+};
+
// 47540 - Penance
// 400169 - Dark Reprimand
class spell_pri_penance : public SpellScript
@@ -3207,6 +3244,7 @@ void AddSC_priest_spell_scripts()
RegisterSpellScript(spell_pri_lights_wrath);
RegisterSpellScript(spell_pri_mind_bomb);
RegisterSpellScript(spell_pri_painful_punishment);
+ RegisterSpellScript(spell_pri_pain_transformation);
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);