diff options
-rw-r--r-- | sql/updates/world/master/2023_07_26_00_world.sql | 7 | ||||
-rw-r--r-- | src/server/scripts/Spells/spell_warrior.cpp | 29 |
2 files changed, 36 insertions, 0 deletions
diff --git a/sql/updates/world/master/2023_07_26_00_world.sql b/sql/updates/world/master/2023_07_26_00_world.sql new file mode 100644 index 00000000000..f12a57e0ae9 --- /dev/null +++ b/sql/updates/world/master/2023_07_26_00_world.sql @@ -0,0 +1,7 @@ +DELETE FROM `spell_proc` WHERE `SpellId` IN (224324); +INSERT INTO `spell_proc` (`SpellId`,`SchoolMask`,`SpellFamilyName`,`SpellFamilyMask0`,`SpellFamilyMask1`,`SpellFamilyMask2`,`SpellFamilyMask3`,`ProcFlags`,`ProcFlags2`,`SpellTypeMask`,`SpellPhaseMask`,`HitMask`,`AttributesMask`,`DisableEffectsMask`,`ProcsPerMinute`,`Chance`,`Cooldown`,`Charges`) VALUES +(224324,0x00,4,0x00000000,0x00000200,0x00000000,0x00000000,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0,0,0,0); -- Shield Slam! + +DELETE FROM `spell_script_names` WHERE `ScriptName`='spell_warr_devastator'; +INSERT INTO `spell_script_names` (`spell_id`,`ScriptName`) VALUES +(236279,'spell_warr_devastator'); diff --git a/src/server/scripts/Spells/spell_warrior.cpp b/src/server/scripts/Spells/spell_warrior.cpp index 90272352e5e..9ea8f2cf89a 100644 --- a/src/server/scripts/Spells/spell_warrior.cpp +++ b/src/server/scripts/Spells/spell_warrior.cpp @@ -62,6 +62,8 @@ enum WarriorSpells SPELL_WARRIOR_RALLYING_CRY = 97463, SPELL_WARRIOR_SHIELD_BLOCK_AURA = 132404, SPELL_WARRIOR_SHIELD_CHARGE_EFFECT = 385953, + SPELL_WARRIOR_SHIELD_SLAM = 23922, + SPELL_WARRIOR_SHIELD_SLAM_MARKER = 224324, SPELL_WARRIOR_SHOCKWAVE = 46968, SPELL_WARRIOR_SHOCKWAVE_STUN = 132168, SPELL_WARRIOR_STOICISM = 70845, @@ -283,6 +285,32 @@ class spell_warr_critical_thinking : public AuraScript } }; +// 236279 - Devastator +class spell_warr_devastator : public AuraScript +{ + bool Validate(SpellInfo const* spellInfo) override + { + return ValidateSpellEffect({ { spellInfo->Id, EFFECT_1 } }) && ValidateSpellInfo({ SPELL_WARRIOR_SHIELD_SLAM, SPELL_WARRIOR_SHIELD_SLAM_MARKER }); + } + + void OnProc(AuraEffect const* /*aurEff*/, ProcEventInfo const& /*eventInfo*/) const + { + if (GetTarget()->GetSpellHistory()->HasCooldown(SPELL_WARRIOR_SHIELD_SLAM)) + { + if (roll_chance_i(GetEffectInfo(EFFECT_1).CalcValue())) + { + GetTarget()->GetSpellHistory()->ResetCooldown(SPELL_WARRIOR_SHIELD_SLAM, true); + GetTarget()->CastSpell(GetTarget(), SPELL_WARRIOR_SHIELD_SLAM_MARKER, TRIGGERED_IGNORE_CAST_IN_PROGRESS); + } + } + } + + void Register() override + { + OnEffectProc += AuraEffectProcFn(spell_warr_devastator::OnProc, EFFECT_0, SPELL_AURA_PROC_TRIGGER_SPELL); + } +}; + // 383103 - Fueled by Violence class spell_warr_fueled_by_violence : public AuraScript { @@ -770,6 +798,7 @@ void AddSC_warrior_spell_scripts() RegisterSpellScript(spell_warr_charge_effect); RegisterSpellScript(spell_warr_colossus_smash); RegisterSpellScript(spell_warr_critical_thinking); + RegisterSpellScript(spell_warr_devastator); RegisterSpellScript(spell_warr_fueled_by_violence); RegisterSpellScript(spell_warr_heroic_leap); RegisterSpellScript(spell_warr_heroic_leap_jump); |