diff options
author | Naddley <64811442+Naddley@users.noreply.github.com> | 2023-01-29 20:40:39 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-01-29 20:40:39 +0100 |
commit | b73330999f447a2c4893d50b3d24fd77b2500178 (patch) | |
tree | c54174ad740dd62156ae4ea5c06090ca7300ae77 | |
parent | 97d413c9b4be6af296490580f7acc1d66e606ca9 (diff) |
Scripts/Monk: Implement Power Strikes (#28794)
-rw-r--r-- | sql/updates/world/master/2023_01_29_01_world.sql | 9 | ||||
-rw-r--r-- | src/server/scripts/Spells/spell_monk.cpp | 46 |
2 files changed, 55 insertions, 0 deletions
diff --git a/sql/updates/world/master/2023_01_29_01_world.sql b/sql/updates/world/master/2023_01_29_01_world.sql new file mode 100644 index 00000000000..72c253e7ffd --- /dev/null +++ b/sql/updates/world/master/2023_01_29_01_world.sql @@ -0,0 +1,9 @@ +-- Power Strikes +DELETE FROM `spell_proc` WHERE `SpellId` IN (129914); +INSERT INTO `spell_proc` (`SpellId`,`SchoolMask`,`SpellFamilyName`,`SpellFamilyMask0`,`SpellFamilyMask1`,`SpellFamilyMask2`,`SpellFamilyMask3`,`ProcFlags`,`ProcFlags2`,`SpellTypeMask`,`SpellPhaseMask`,`HitMask`,`AttributesMask`,`DisableEffectsMask`,`ProcsPerMinute`,`Chance`,`Cooldown`,`Charges`) VALUES +(129914,0x00,53,0x00000400,0x00000000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x0,0x10,0x0,0,0,0,0); -- Power Strikes (consume procc) + +DELETE FROM `spell_script_names` WHERE `ScriptName` IN ('spell_monk_power_strike_periodic', 'spell_monk_power_strike_proc'); +INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES +(121817, 'spell_monk_power_strike_periodic'), +(129914, 'spell_monk_power_strike_proc'); diff --git a/src/server/scripts/Spells/spell_monk.cpp b/src/server/scripts/Spells/spell_monk.cpp index 7ac66095f98..10de007c8a2 100644 --- a/src/server/scripts/Spells/spell_monk.cpp +++ b/src/server/scripts/Spells/spell_monk.cpp @@ -35,6 +35,8 @@ enum MonkSpells SPELL_MONK_CRACKLING_JADE_LIGHTNING_CHI_PROC = 123333, SPELL_MONK_CRACKLING_JADE_LIGHTNING_KNOCKBACK = 117962, SPELL_MONK_CRACKLING_JADE_LIGHTNING_KNOCKBACK_CD = 117953, + SPELL_MONK_POWER_STRIKE_PROC = 129914, + SPELL_MONK_POWER_STRIKE_ENERGIZE = 121283, SPELL_MONK_PROVOKE_SINGLE_TARGET = 116189, SPELL_MONK_PROVOKE_AOE = 118635, SPELL_MONK_NO_FEATHER_FALL = 79636, @@ -118,6 +120,48 @@ class spell_monk_crackling_jade_lightning_knockback_proc_aura : public AuraScrip } }; +// 121817 - Power Strike +class spell_monk_power_strike_periodic : public AuraScript +{ + PrepareAuraScript(spell_monk_power_strike_periodic); + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_MONK_POWER_STRIKE_PROC }); + } + + void HandlePeriodic(AuraEffect const* /*aurEff*/) + { + GetTarget()->CastSpell(GetTarget(), SPELL_MONK_POWER_STRIKE_PROC, true); + } + + void Register() override + { + OnEffectPeriodic += AuraEffectPeriodicFn(spell_monk_power_strike_periodic::HandlePeriodic, EFFECT_0, SPELL_AURA_PERIODIC_DUMMY); + } +}; + +// 129914 - Power Strike Proc +class spell_monk_power_strike_proc : public AuraScript +{ + PrepareAuraScript(spell_monk_power_strike_proc); + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_MONK_POWER_STRIKE_ENERGIZE }); + } + + void HandleProc(AuraEffect* /*aurEff*/, ProcEventInfo& /*eventInfo*/) + { + GetTarget()->CastSpell(GetTarget(), SPELL_MONK_POWER_STRIKE_ENERGIZE, true); + } + + void Register() override + { + OnEffectProc += AuraEffectProcFn(spell_monk_power_strike_proc::HandleProc, EFFECT_0, SPELL_AURA_DUMMY); + } +}; + // 115546 - Provoke class spell_monk_provoke : public SpellScript { @@ -465,6 +509,8 @@ void AddSC_monk_spell_scripts() { RegisterSpellScript(spell_monk_crackling_jade_lightning); RegisterSpellScript(spell_monk_crackling_jade_lightning_knockback_proc_aura); + RegisterSpellScript(spell_monk_power_strike_periodic); + RegisterSpellScript(spell_monk_power_strike_proc); RegisterSpellScript(spell_monk_provoke); RegisterSpellScript(spell_monk_roll); RegisterSpellScript(spell_monk_roll_aura); |