aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sql/updates/world/master/2021_02_17_00_world_druid_gore.sql10
-rw-r--r--src/server/scripts/Spells/spell_druid.cpp34
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();