diff options
-rw-r--r-- | sql/updates/world/master/2022_01_17_00_world_warlock_chaos_bolt.sql | 2 | ||||
-rw-r--r-- | src/server/scripts/Spells/spell_warlock.cpp | 28 |
2 files changed, 30 insertions, 0 deletions
diff --git a/sql/updates/world/master/2022_01_17_00_world_warlock_chaos_bolt.sql b/sql/updates/world/master/2022_01_17_00_world_warlock_chaos_bolt.sql new file mode 100644 index 00000000000..ca5d7036575 --- /dev/null +++ b/sql/updates/world/master/2022_01_17_00_world_warlock_chaos_bolt.sql @@ -0,0 +1,2 @@ +DELETE FROM `spell_script_names` WHERE `ScriptName` = 'spell_warl_chaos_bolt'; +INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES (116858, 'spell_warl_chaos_bolt'); diff --git a/src/server/scripts/Spells/spell_warlock.cpp b/src/server/scripts/Spells/spell_warlock.cpp index 767d78c63f3..03c1c2d2a29 100644 --- a/src/server/scripts/Spells/spell_warlock.cpp +++ b/src/server/scripts/Spells/spell_warlock.cpp @@ -110,6 +110,33 @@ class spell_warl_banish : public SpellScriptLoader } }; +// 116858 - Chaos Bolt +class spell_warl_chaos_bolt : public SpellScript +{ + PrepareSpellScript(spell_warl_chaos_bolt); + + bool Load() override + { + return GetCaster()->GetTypeId() == TYPEID_PLAYER; + } + + void HandleDummy(SpellEffIndex /*effIndex*/) + { + SetHitDamage(GetHitDamage() + CalculatePct(GetHitDamage(), GetCaster()->ToPlayer()->m_activePlayerData->SpellCritPercentage)); + } + + void CalcCritChance(Unit const* /*victim*/, float& critChance) + { + critChance = 100.0f; + } + + void Register() override + { + OnEffectHitTarget += SpellEffectFn(spell_warl_chaos_bolt::HandleDummy, EFFECT_0, SPELL_EFFECT_SCHOOL_DAMAGE); + OnCalcCritChance += SpellOnCalcCritChanceFn(spell_warl_chaos_bolt::CalcCritChance); + } +}; + // 77220 - Mastery: Chaotic Energies class spell_warl_chaotic_energies : public AuraScript { @@ -1042,6 +1069,7 @@ public: void AddSC_warlock_spell_scripts() { new spell_warl_banish(); + RegisterSpellScript(spell_warl_chaos_bolt); RegisterAuraScript(spell_warl_chaotic_energies); new spell_warl_create_healthstone(); new spell_warl_demonic_circle_summon(); |