diff options
-rw-r--r-- | sql/updates/world/master/2024_02_22_03_world.sql | 3 | ||||
-rw-r--r-- | src/server/scripts/Spells/spell_priest.cpp | 38 |
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); |