aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sql/updates/world/master/2022_01_17_00_world_warlock_chaos_bolt.sql2
-rw-r--r--src/server/scripts/Spells/spell_warlock.cpp28
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();