From 1b650a4bb1799343fb605d334823f35392cdf8b9 Mon Sep 17 00:00:00 2001 From: Ovahlord Date: Tue, 23 Jul 2019 22:44:01 +0200 Subject: [PATCH] Core/Spells: * Thunderstruck will now only proc from Thunder Clap * Bloodsurge will now only get triggered by Bloodthirst * The Bloodsurge proc effect will now get consumed by Slam * Silenced Unshackled Fury mastery console message spam * Meat Cleaver will now only proc from Whirlwind and Cleave * fixed Single-Minded Fury offhand attack effect for Slam --- .../custom/custom_2019_07_23_00_world.sql | 7 +++ src/server/scripts/Spells/spell_warrior.cpp | 56 ++++++++++--------- 2 files changed, 36 insertions(+), 27 deletions(-) create mode 100644 sql/updates/world/custom/custom_2019_07_23_00_world.sql diff --git a/sql/updates/world/custom/custom_2019_07_23_00_world.sql b/sql/updates/world/custom/custom_2019_07_23_00_world.sql new file mode 100644 index 00000000000..8016ce9afde --- /dev/null +++ b/sql/updates/world/custom/custom_2019_07_23_00_world.sql @@ -0,0 +1,7 @@ +DELETE FROM `spell_proc` WHERE `SpellId` IN (-80979, -46913, 46916, 76856, -12329); +INSERT INTO `spell_proc` (`SpellId`, `SpellFamilyName`, `SpellFamilyMask0`, `SpellFamilyMask1`, `SpellFamilyMask2`, `ProcFlags`, `SpellTypeMask`, `SpellPhaseMask`, `HitMask`, `AttributesMask`, `Cooldown`, `Charges`) VALUES +(-80979, 4, 0x00000080, 0, 0, 0x00001110, 1, 1, 0, 0, 0, 0), +(-46913, 4, 0, 0x00000400, 0, 0x00000010, 1, 2, 0, 0, 0, 0), +(46916, 4, 0x00200000, 0, 0, 0x00000010, 1, 1, 0, 2, 0, 1), +(76856, 0, 0, 0, 0, 0, 0, 1, 0, 16 | 32 | 64, 0, 0), +(-12329, 4, 0x00400000, 0x00000004, 0, 0x00001010, 1, 2, 0, 0, 0, 0); diff --git a/src/server/scripts/Spells/spell_warrior.cpp b/src/server/scripts/Spells/spell_warrior.cpp index bb31a746cd2..87a24d95f7f 100644 --- a/src/server/scripts/Spells/spell_warrior.cpp +++ b/src/server/scripts/Spells/spell_warrior.cpp @@ -61,7 +61,8 @@ enum WarriorSpells SPELL_WARRIOR_SECOND_WIND_TRIGGER_RANK_1 = 29841, SPELL_WARRIOR_SECOND_WIND_TRIGGER_RANK_2 = 29842, SPELL_WARRIOR_SHIELD_SLAM = 23922, - SPELL_WARRIOR_SLAM = 50782, + SPELL_WARRIOR_SLAM_MAIN_HAND = 50782, + SPELL_WARRIOR_SLAM_OFF_HAND = 97992, SPELL_WARRIOR_SUNDER_ARMOR = 58567, SPELL_WARRIOR_SWEEPING_STRIKES_EXTRA_ATTACK_1 = 12723, SPELL_WARRIOR_SWEEPING_STRIKES_EXTRA_ATTACK_2 = 26654, @@ -79,7 +80,8 @@ enum WarriorSpells enum WarriorSpellIcons { WARRIOR_ICON_ID_SUDDEN_DEATH = 1989, - WARRIOR_ICON_ID_BLOOD_AND_THUNDER = 5057 + WARRIOR_ICON_ID_BLOOD_AND_THUNDER = 5057, + WARRIOR_ICON_ID_SINGLE_MINDED_FURY = 4975 }; @@ -679,36 +681,36 @@ class spell_warr_shattering_throw : public SpellScriptLoader }; /// Updated 4.3.4 -class spell_warr_slam : public SpellScriptLoader +class spell_warr_slam : public SpellScript { - public: - spell_warr_slam() : SpellScriptLoader("spell_warr_slam") { } + PrepareSpellScript(spell_warr_slam); - class spell_warr_slam_SpellScript : public SpellScript - { - PrepareSpellScript(spell_warr_slam_SpellScript); - - bool Validate(SpellInfo const* /*spellInfo*/) override + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo( { - return ValidateSpellInfo({ SPELL_WARRIOR_SLAM }); - } + SPELL_WARRIOR_SLAM_MAIN_HAND, + SPELL_WARRIOR_SLAM_OFF_HAND + }); + } - void HandleDummy(SpellEffIndex /*effIndex*/) - { - if (GetHitUnit()) - GetCaster()->CastCustomSpell(SPELL_WARRIOR_SLAM, SPELLVALUE_BASE_POINT0, GetEffectValue(), GetHitUnit(), TRIGGERED_FULL_MASK); - } + void HandleDummy(SpellEffIndex /*effIndex*/) + { + Unit* caster = GetCaster(); + if (!caster) + return; - void Register() override - { - OnEffectHitTarget += SpellEffectFn(spell_warr_slam_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); - } - }; + Unit* target = GetHitUnit(); + caster->CastCustomSpell(SPELL_WARRIOR_SLAM_MAIN_HAND, SPELLVALUE_BASE_POINT0, GetEffectValue(), target, true); - SpellScript* GetSpellScript() const override - { - return new spell_warr_slam_SpellScript(); - } + if (caster->GetAuraEffect(SPELL_AURA_MOD_DAMAGE_PERCENT_DONE, SPELLFAMILY_WARRIOR, WARRIOR_ICON_ID_SINGLE_MINDED_FURY, EFFECT_0)) + caster->CastCustomSpell(SPELL_WARRIOR_SLAM_OFF_HAND, SPELLVALUE_BASE_POINT0, GetEffectValue(), target, true); + } + + void Register() override + { + OnEffectHitTarget += SpellEffectFn(spell_warr_slam::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); + } }; class spell_warr_second_wind_proc : public SpellScriptLoader @@ -1242,7 +1244,7 @@ void AddSC_warrior_spell_scripts() new spell_warr_shattering_throw(); RegisterAuraScript(spell_warr_shield_specialization); RegisterSpellScript(spell_warr_shockwave); - new spell_warr_slam(); + RegisterSpellScript(spell_warr_slam); RegisterAuraScript(spell_warr_strikes_of_opportunity); new spell_warr_sudden_death(); new spell_warr_sweeping_strikes();