diff options
| author | Cristian Vintila <127750549+cristianvnt@users.noreply.github.com> | 2025-12-31 00:35:07 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-12-30 23:35:07 +0100 |
| commit | 11f56a8a37855fabe128b5fe3a840b732aaefd51 (patch) | |
| tree | 16be48c3ddafa2008df0d1f6051b7af817c2c6fa | |
| parent | e8d4837aba183849b1cf51d22475a6be55b5e1f1 (diff) | |
Scripts/Spells: Implement priest talent Binding Heals (#31452)
| -rw-r--r-- | sql/updates/world/master/2025_12_30_01_world.sql | 7 | ||||
| -rw-r--r-- | src/server/scripts/Spells/spell_priest.cpp | 34 |
2 files changed, 41 insertions, 0 deletions
diff --git a/sql/updates/world/master/2025_12_30_01_world.sql b/sql/updates/world/master/2025_12_30_01_world.sql new file mode 100644 index 00000000000..b8b8356300c --- /dev/null +++ b/sql/updates/world/master/2025_12_30_01_world.sql @@ -0,0 +1,7 @@ +DELETE FROM `spell_proc` WHERE `SpellId` IN (368275); +INSERT INTO `spell_proc` (`SpellId`,`SchoolMask`,`SpellFamilyName`,`SpellFamilyMask0`,`SpellFamilyMask1`,`SpellFamilyMask2`,`SpellFamilyMask3`,`ProcFlags`,`ProcFlags2`,`SpellTypeMask`,`SpellPhaseMask`,`HitMask`,`AttributesMask`,`DisableEffectsMask`,`ProcsPerMinute`,`Chance`,`Cooldown`,`Charges`) VALUES +(368275,0x00,6,0x00001800,0x00000000,0x00000000,0x00000000,0x0,0x0,0x2,0x2,0x0,0x0,0x0,0,0,0,0); -- Binding Heals + +DELETE FROM `spell_script_names` WHERE `ScriptName`='spell_pri_binding_heals'; +INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES +(368275,'spell_pri_binding_heals'); diff --git a/src/server/scripts/Spells/spell_priest.cpp b/src/server/scripts/Spells/spell_priest.cpp index f624db6729f..bb4d07fa971 100644 --- a/src/server/scripts/Spells/spell_priest.cpp +++ b/src/server/scripts/Spells/spell_priest.cpp @@ -54,6 +54,7 @@ enum PriestSpells SPELL_PRIEST_ATONEMENT_EFFECT = 194384, SPELL_PRIEST_ATONEMENT_HEAL = 81751, SPELL_PRIEST_BENEDICTION = 193157, + SPELL_PRIEST_BINDING_HEALS_HEAL = 368276, SPELL_PRIEST_BLAZE_OF_LIGHT = 215768, SPELL_PRIEST_BLAZE_OF_LIGHT_INCREASE = 355851, SPELL_PRIEST_BLAZE_OF_LIGHT_DECREASE = 356084, @@ -723,6 +724,38 @@ class spell_pri_benediction : public SpellScript } }; +// 368275 - Binding Heals +class spell_pri_binding_heals : public AuraScript +{ + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_PRIEST_BINDING_HEALS_HEAL }); + } + + static bool CheckProc(AuraScript const&, ProcEventInfo const& eventInfo) + { + return eventInfo.GetActor() != eventInfo.GetProcTarget(); + } + + static void HandleEffectProc(AuraScript const&, AuraEffect const* aurEff, ProcEventInfo const& eventInfo) + { + Unit* caster = eventInfo.GetActor(); + + caster->CastSpell(caster, SPELL_PRIEST_BINDING_HEALS_HEAL, CastSpellExtraArgsInit{ + .TriggerFlags = TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR, + .TriggeringSpell = eventInfo.GetProcSpell(), + .TriggeringAura = aurEff, + .SpellValueOverrides = { { SPELLVALUE_BASE_POINT0, int32(CalculatePct(eventInfo.GetHealInfo()->GetHeal(), aurEff->GetAmount())) } } + }); + } + + void Register() override + { + DoCheckProc += AuraCheckProcFn(spell_pri_binding_heals::CheckProc); + OnEffectProc += AuraEffectProcFn(spell_pri_binding_heals::HandleEffectProc, EFFECT_0, SPELL_AURA_DUMMY); + } +}; + // 215768 - Blaze of Light class spell_pri_blaze_of_light : public AuraScript { @@ -4232,6 +4265,7 @@ void AddSC_priest_spell_scripts() RegisterSpellScript(spell_pri_atonement_effect_aura); RegisterSpellScript(spell_pri_atonement_passive); RegisterSpellScript(spell_pri_benediction); + RegisterSpellScript(spell_pri_binding_heals); RegisterSpellScript(spell_pri_blaze_of_light); RegisterSpellScript(spell_pri_circle_of_healing); RegisterSpellScript(spell_pri_crystalline_reflection); |
