diff options
-rw-r--r-- | sql/updates/world/master/2021_02_15_00_world_druid_prowl.sql | 4 | ||||
-rw-r--r-- | src/server/scripts/Spells/spell_druid.cpp | 27 |
2 files changed, 30 insertions, 1 deletions
diff --git a/sql/updates/world/master/2021_02_15_00_world_druid_prowl.sql b/sql/updates/world/master/2021_02_15_00_world_druid_prowl.sql new file mode 100644 index 00000000000..0e82783e7d3 --- /dev/null +++ b/sql/updates/world/master/2021_02_15_00_world_druid_prowl.sql @@ -0,0 +1,4 @@ +-- Add prowl spell script +DELETE FROM `spell_script_names` WHERE `ScriptName`='spell_dru_prowl'; +INSERT INTO `spell_script_names` (`spell_id`,`ScriptName`) VALUES +(5215,'spell_dru_prowl'); diff --git a/src/server/scripts/Spells/spell_druid.cpp b/src/server/scripts/Spells/spell_druid.cpp index 9455ba2b6bc..49f120cc00c 100644 --- a/src/server/scripts/Spells/spell_druid.cpp +++ b/src/server/scripts/Spells/spell_druid.cpp @@ -68,7 +68,8 @@ enum DruidSpells SPELL_DRUID_BALANCE_T10_BONUS_PROC = 70721, SPELL_DRUID_RESTORATION_T10_2P_BONUS = 70658, SPELL_DRUID_SUNFIRE_DAMAGE = 164815, - SPELL_DRUID_SURVIVAL_INSTINCTS = 50322 + SPELL_DRUID_SURVIVAL_INSTINCTS = 50322, + SPELL_DRUID_CAT_FORM = 768 }; // 1850 - Dash @@ -494,6 +495,29 @@ public: } }; +// 5215 - Prowl +class spell_dru_prowl : public SpellScript +{ + PrepareSpellScript(spell_dru_prowl); + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_DRUID_CAT_FORM }); + } + + void HandleOnCast() + { + // Change into cat form + if (GetCaster()->GetShapeshiftForm() != FORM_CAT_FORM) + GetCaster()->CastSpell(GetCaster(), SPELL_DRUID_CAT_FORM); + } + + void Register() override + { + BeforeCast += SpellCastFn(spell_dru_prowl::HandleOnCast); + } +}; + // 1079 - Rip class spell_dru_rip : public SpellScriptLoader { @@ -1499,6 +1523,7 @@ void AddSC_druid_spell_scripts() new spell_dru_moonfire(); new spell_dru_omen_of_clarity(); new spell_dru_predatory_strikes(); + RegisterSpellScript(spell_dru_prowl); new spell_dru_rip(); new spell_dru_savage_roar(); new spell_dru_stampede(); |