diff options
-rw-r--r-- | sql/updates/world/master/2025_05_05_04_world.sql | 7 | ||||
-rw-r--r-- | src/server/scripts/Spells/spell_hunter.cpp | 32 |
2 files changed, 39 insertions, 0 deletions
diff --git a/sql/updates/world/master/2025_05_05_04_world.sql b/sql/updates/world/master/2025_05_05_04_world.sql new file mode 100644 index 00000000000..f1705ac8af2 --- /dev/null +++ b/sql/updates/world/master/2025_05_05_04_world.sql @@ -0,0 +1,7 @@ +DELETE FROM `spell_script_names` WHERE `ScriptName`='spell_hun_rejuvenating_wind'; +INSERT INTO `spell_script_names` (`spell_id`,`ScriptName`) VALUES +(385539,'spell_hun_rejuvenating_wind'); + +DELETE FROM `spell_proc` WHERE `SpellId`=385539; +INSERT INTO `spell_proc` (`SpellId`,`SchoolMask`,`SpellFamilyName`,`SpellFamilyMask0`,`SpellFamilyMask1`,`SpellFamilyMask2`,`SpellFamilyMask3`,`ProcFlags`,`ProcFlags2`,`SpellTypeMask`,`SpellPhaseMask`,`HitMask`,`AttributesMask`,`DisableEffectsMask`,`ProcsPerMinute`,`Chance`,`Cooldown`,`Charges`) VALUES +(385539,0x00,9,0x00000000,0x00000000,0x00000000,0x00000800,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0,0,0,0); -- Rejuvenating Wind diff --git a/src/server/scripts/Spells/spell_hunter.cpp b/src/server/scripts/Spells/spell_hunter.cpp index f960008d441..f1e96c9cb20 100644 --- a/src/server/scripts/Spells/spell_hunter.cpp +++ b/src/server/scripts/Spells/spell_hunter.cpp @@ -74,6 +74,7 @@ enum HunterSpells SPELL_HUNTER_RAPID_FIRE = 257044, SPELL_HUNTER_RAPID_FIRE_DAMAGE = 257045, SPELL_HUNTER_RAPID_FIRE_ENERGIZE = 263585, + SPELL_HUNTER_REJUVENATING_WIND_HEAL = 385540, SPELL_HUNTER_SCOUTS_INSTINCTS = 459455, SPELL_HUNTER_STEADY_SHOT = 56641, SPELL_HUNTER_STEADY_SHOT_FOCUS = 77443, @@ -773,6 +774,36 @@ class spell_hun_rapid_fire_damage : public SpellScript } }; +// 385539 - Rejuvenating Wind +class spell_hun_rejuvenating_wind : public AuraScript +{ + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_HUNTER_REJUVENATING_WIND_HEAL }) + && sSpellMgr->AssertSpellInfo(SPELL_HUNTER_REJUVENATING_WIND_HEAL, DIFFICULTY_NONE)->GetMaxTicks() > 0; + } + + void HandleProc(AuraEffect const* aurEff, ProcEventInfo const& /*procEvent*/) + { + PreventDefaultAction(); + + Unit* caster = GetTarget(); + + uint32 ticks = sSpellMgr->AssertSpellInfo(SPELL_HUNTER_REJUVENATING_WIND_HEAL, DIFFICULTY_NONE)->GetMaxTicks(); + int32 heal = CalculatePct(caster->GetMaxHealth(), aurEff->GetAmount()) / ticks; + + caster->CastSpell(caster, SPELL_HUNTER_REJUVENATING_WIND_HEAL, CastSpellExtraArgsInit{ + .TriggerFlags = TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR, + .SpellValueOverrides = { { SPELLVALUE_BASE_POINT0, heal } } + }); + } + + void Register() override + { + OnEffectProc += AuraEffectProcFn(spell_hun_rejuvenating_wind::HandleProc, EFFECT_0, SPELL_AURA_DUMMY); + } +}; + // 53480 - Roar of Sacrifice class spell_hun_roar_of_sacrifice : public AuraScript { @@ -1176,6 +1207,7 @@ void AddSC_hunter_spell_scripts() RegisterSpellScript(spell_hun_posthaste); RegisterSpellScript(spell_hun_rapid_fire); RegisterSpellScript(spell_hun_rapid_fire_damage); + RegisterSpellScript(spell_hun_rejuvenating_wind); RegisterSpellScript(spell_hun_roar_of_sacrifice); RegisterSpellScript(spell_hun_scatter_shot); RegisterSpellScript(spell_hun_scouts_instincts); |