aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sql/updates/world/master/2023_01_29_01_world.sql9
-rw-r--r--src/server/scripts/Spells/spell_monk.cpp46
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);