diff options
| -rw-r--r-- | sql/updates/world/master/2021_02_17_00_world_druid_gore.sql | 10 | ||||
| -rw-r--r-- | src/server/scripts/Spells/spell_druid.cpp | 34 |
2 files changed, 43 insertions, 1 deletions
diff --git a/sql/updates/world/master/2021_02_17_00_world_druid_gore.sql b/sql/updates/world/master/2021_02_17_00_world_druid_gore.sql new file mode 100644 index 00000000000..e439455dcd9 --- /dev/null +++ b/sql/updates/world/master/2021_02_17_00_world_druid_gore.sql @@ -0,0 +1,10 @@ +-- Attach druid's gore spell script +DELETE FROM `spell_script_names` WHERE `ScriptName`='spell_dru_gore'; +INSERT INTO `spell_script_names` (`spell_id`,`ScriptName`) VALUES +(210706,'spell_dru_gore'); + +-- Override Gore spell proc flags +DELETE FROM `spell_proc` WHERE `SpellId` IN (210706,93622); +INSERT INTO `spell_proc` (`SpellId`,`SchoolMask`,`SpellFamilyName`,`SpellFamilyMask0`,`SpellFamilyMask1`,`SpellFamilyMask2`,`SpellFamilyMask3`,`ProcFlags`,`SpellTypeMask`,`SpellPhaseMask`,`HitMask`,`AttributesMask`,`DisableEffectsMask`,`ProcsPerMinute`,`Chance`,`Cooldown`,`Charges`) VALUES +(210706,0,7,0x00200800,0x00100000,0x08000000,0x0,0,1,1,0x403,0,0,0,0,0,0), +(93622,0,7,0x0,0x40,0x0,0x0,0,1,2,0x403,0x8,0,0,0,0,0); diff --git a/src/server/scripts/Spells/spell_druid.cpp b/src/server/scripts/Spells/spell_druid.cpp index 49f120cc00c..86ccca984f8 100644 --- a/src/server/scripts/Spells/spell_druid.cpp +++ b/src/server/scripts/Spells/spell_druid.cpp @@ -69,7 +69,9 @@ enum DruidSpells SPELL_DRUID_RESTORATION_T10_2P_BONUS = 70658, SPELL_DRUID_SUNFIRE_DAMAGE = 164815, SPELL_DRUID_SURVIVAL_INSTINCTS = 50322, - SPELL_DRUID_CAT_FORM = 768 + SPELL_DRUID_CAT_FORM = 768, + SPELL_DRUID_GORE_PROC = 93622, + SPELL_DRUID_MANGLE = 33917, }; // 1850 - Dash @@ -218,6 +220,35 @@ public: } }; +// 210706 - Gore +class spell_dru_gore : public AuraScript +{ + PrepareAuraScript(spell_dru_gore); + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_DRUID_GORE_PROC, SPELL_DRUID_MANGLE }); + } + + bool CheckEffectProc(AuraEffect const* aurEff, ProcEventInfo& /*eventInfo*/) + { + return roll_chance_i(aurEff->GetAmount()); + } + + void HandleProc(AuraEffect* /*aurEff*/, ProcEventInfo& /*procInfo*/) + { + Unit* owner = GetTarget(); + owner->CastSpell(owner, SPELL_DRUID_GORE_PROC); + owner->GetSpellHistory()->ResetCooldown(SPELL_DRUID_MANGLE, true); + } + + void Register() override + { + DoCheckEffectProc += AuraCheckEffectProcFn(spell_dru_gore::CheckEffectProc, EFFECT_0, SPELL_AURA_DUMMY); + OnEffectProc += AuraEffectProcFn(spell_dru_gore::HandleProc, EFFECT_0, SPELL_AURA_DUMMY); + } +}; + // 34246 - Idol of the Emerald Queen // 60779 - Idol of Lush Moss class spell_dru_idol_lifebloom : public SpellScriptLoader @@ -1515,6 +1546,7 @@ void AddSC_druid_spell_scripts() new spell_dru_dash(); new spell_dru_flight_form(); new spell_dru_forms_trinket(); + RegisterAuraScript(spell_dru_gore); new spell_dru_idol_lifebloom(); new spell_dru_innervate(); new spell_dru_lifebloom(); |
