diff options
author | Aqua Deus <95978183+aquadeus@users.noreply.github.com> | 2025-08-23 00:54:05 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-08-23 00:54:05 +0200 |
commit | ae0602e23fa82293e543ae980ad41623f1e6f235 (patch) | |
tree | 6415ca47e51d9548f1ab40d4773bf80434000344 | |
parent | 6f574a2bfcf6669aee52a68cfaf5c999b7473d76 (diff) |
Scripts/Spells: Implement druid talent Ursoc's Fury (#30776)
-rw-r--r-- | sql/updates/world/master/2025_08_22_01_world.sql | 7 | ||||
-rw-r--r-- | src/server/scripts/Spells/spell_druid.cpp | 31 |
2 files changed, 38 insertions, 0 deletions
diff --git a/sql/updates/world/master/2025_08_22_01_world.sql b/sql/updates/world/master/2025_08_22_01_world.sql new file mode 100644 index 00000000000..10e2172a354 --- /dev/null +++ b/sql/updates/world/master/2025_08_22_01_world.sql @@ -0,0 +1,7 @@ +DELETE FROM `spell_proc` WHERE `SpellId` IN (377210); +INSERT INTO `spell_proc` (`SpellId`,`SchoolMask`,`SpellFamilyName`,`SpellFamilyMask0`,`SpellFamilyMask1`,`SpellFamilyMask2`,`SpellFamilyMask3`,`ProcFlags`,`ProcFlags2`,`SpellTypeMask`,`SpellPhaseMask`,`HitMask`,`AttributesMask`,`DisableEffectsMask`,`ProcsPerMinute`,`Chance`,`Cooldown`,`Charges`) VALUES +(377210,0x00,7,0x00000800,0x00000000,0x08000000,0x00000000,0x0,0x0,0x1,0x2,0x0,0x0,0x0,0,0,0,0); -- Ursoc's Fury + +DELETE FROM `spell_script_names` WHERE `ScriptName`='spell_dru_ursocs_fury'; +INSERT INTO `spell_script_names` (`spell_id`,`ScriptName`) VALUES +(377210,'spell_dru_ursocs_fury'); diff --git a/src/server/scripts/Spells/spell_druid.cpp b/src/server/scripts/Spells/spell_druid.cpp index abba7934f48..46fc1d6c0a4 100644 --- a/src/server/scripts/Spells/spell_druid.cpp +++ b/src/server/scripts/Spells/spell_druid.cpp @@ -141,6 +141,7 @@ enum DruidSpells SPELL_DRUID_THRASH_BEAR = 77758, SPELL_DRUID_THRASH_BEAR_AURA = 192090, SPELL_DRUID_THRASH_CAT = 106830, + SPELL_DRUID_URSOCS_FURY_SHIELD = 372505, SPELL_DRUID_YSERAS_GIFT_HEAL_PARTY = 145110, SPELL_DRUID_YSERAS_GIFT_HEAL_SELF = 145109 }; @@ -2313,6 +2314,35 @@ class spell_dru_tiger_dash_aura : public AuraScript } }; +// 377210 - Ursoc's Fury +class spell_dru_ursocs_fury : public AuraScript +{ + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_DRUID_URSOCS_FURY_SHIELD }); + } + + static void HandleProc(AuraScript const&, AuraEffect const* aurEff, ProcEventInfo const& eventInfo) + { + DamageInfo* damageInfo = eventInfo.GetDamageInfo(); + if (!damageInfo || !damageInfo->GetDamage()) + return; + + Unit* caster = eventInfo.GetActor(); + int32 amount = CalculatePct(damageInfo->GetDamage(), aurEff->GetAmount()); + + caster->CastSpell(caster, SPELL_DRUID_URSOCS_FURY_SHIELD, CastSpellExtraArgsInit{ + .TriggerFlags = TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR, + .SpellValueOverrides = { { SPELLVALUE_BASE_POINT0, amount } } + }); + } + + void Register() override + { + OnEffectProc += AuraEffectProcFn(spell_dru_ursocs_fury::HandleProc, EFFECT_0, SPELL_AURA_DUMMY); + } +}; + // 48438 - Wild Growth class spell_dru_wild_growth : public SpellScript { @@ -2487,6 +2517,7 @@ void AddSC_druid_spell_scripts() RegisterSpellScript(spell_dru_travel_form); RegisterSpellAndAuraScriptPair(spell_dru_travel_form_dummy, spell_dru_travel_form_dummy_aura); RegisterSpellAndAuraScriptPair(spell_dru_tiger_dash, spell_dru_tiger_dash_aura); + RegisterSpellScript(spell_dru_ursocs_fury); RegisterSpellAndAuraScriptPair(spell_dru_wild_growth, spell_dru_wild_growth_aura); RegisterSpellScript(spell_dru_yseras_gift); RegisterSpellScript(spell_dru_yseras_gift_group_heal); |