aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAqua Deus <95978183+aquadeus@users.noreply.github.com>2023-07-26 01:07:43 +0200
committerGitHub <noreply@github.com>2023-07-26 01:07:43 +0200
commitfb7bf0bfecfd258019a3809ef1fef71621176f98 (patch)
treefa19318d54d83c4e859f617803179ae75b9dbadf
parent1ed8bfa08017b69d59f2cb7703f59ab4a0a3bf79 (diff)
Scripts/Spells: Implement Devastator talent (#29164)
-rw-r--r--sql/updates/world/master/2023_07_26_00_world.sql7
-rw-r--r--src/server/scripts/Spells/spell_warrior.cpp29
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);