From 0dd5fdafbd8a701351a34b6f6443d0f2ddd8ac34 Mon Sep 17 00:00:00 2001 From: Ovahlord Date: Sun, 8 Dec 2019 20:23:51 +0100 Subject: [PATCH] Core/Spells: * corrected crit chance bonus for Last Word Talent * fixed Improved Searing Pain talent * removed hackfix for Improved Mind Blast * moved Incerate damage bonus hack into proper spell script * updated and fixed Afterpath proc * fixed Shadow and Fame proc * updated Backdraft proc * fixed Burning Embers talent * fixed Empowered Imp talent * fixed Fire and Brimstone damage bonus for Incenerate and Chaos Bolt * updated several spell scripts to new model --- .../custom/custom_2019_12_08_03_world.sql | 41 +++ src/server/game/Entities/Unit/Unit.cpp | 20 +- src/server/game/Spells/SpellEffects.cpp | 36 --- src/server/game/Spells/SpellMgr.cpp | 9 - src/server/scripts/Spells/spell_warlock.cpp | 269 ++++++++++++------ 5 files changed, 239 insertions(+), 136 deletions(-) create mode 100644 sql/updates/world/custom/custom_2019_12_08_03_world.sql diff --git a/sql/updates/world/custom/custom_2019_12_08_03_world.sql b/sql/updates/world/custom/custom_2019_12_08_03_world.sql new file mode 100644 index 00000000000..b34236b59c7 --- /dev/null +++ b/sql/updates/world/custom/custom_2019_12_08_03_world.sql @@ -0,0 +1,41 @@ +-- Shadow and Flame +UPDATE `spell_proc` SET `SpellFamilyMask1`= 0x00000040, `SpellTypeMask`= 1 WHERE `SpellId`= -17793; +-- Aftermath +UPDATE `spell_proc` SET `ProcFlags`= 0, `SpellFamilyMask1`= 0x00800000, `SpellFamilyMask0`= 0x00000020 WHERE `SpellID`= -85113; +-- Improved Soul Fire +DELETE FROM `spell_proc` WHERE `SpellId`= -18119; +INSERT INTO `spell_proc` (`SpellId`, `SpellFamilyName`, `SpellFamilyMask0`, `SpellFamilyMask1`, `SpellFamilyMask2`, `ProcFlags`, `SpellTypeMask`, `SpellPhaseMask`, `HitMask`, `Chance`) VALUES +(-18119, 5, 0, 0x00000080, 0, 0x00010000, 1, 2, 0, 100); +-- Backdraft +UPDATE `spell_proc` SET `SpellTypeMask`= 1, `SpellFamilyMask1`= 0x00800000 WHERE `SpellId`= -47258; +-- Burning Embers +DELETE FROM `spell_proc` WHERE `SpellId`= -91986; +INSERT INTO `spell_proc` (`SpellId`, `SpellFamilyName`, `SpellFamilyMask0`, `SpellFamilyMask1`, `SpellFamilyMask2`, `ProcFlags`, `SpellTypeMask`, `SpellPhaseMask`, `HitMask`, `Chance`, `AttributesMask`) VALUES +(-91986, 5, 0x00001000, 0x00000080, 0, 0, 1, 2, 0, 0, 32); +-- Empowered Imp +DELETE FROM `spell_proc` WHERE `SpellId`= 54278; +INSERT INTO `spell_proc` (`SpellId`, `SpellFamilyName`, `SpellFamilyMask0`, `SpellFamilyMask1`, `SpellFamilyMask2`, `ProcFlags`, `SpellTypeMask`, `SpellPhaseMask`, `HitMask`, `Chance`) VALUES +(54278, 5, 0x00001000, 0, 0, 0, 1, 2, 0, 0); +-- Empowered Imp Proc +DELETE FROM `spell_proc` WHERE `SpellId`= 47283; +INSERT INTO `spell_proc` (`SpellId`, `SpellFamilyName`, `SpellFamilyMask0`, `SpellFamilyMask1`, `SpellFamilyMask2`, `ProcFlags`, `SpellTypeMask`, `SpellPhaseMask`, `HitMask`, `Chance`, `Charges`) VALUES +(47283, 5, 0, 0x00000080, 0, 0x00010000, 1, 1, 0, 100, 1); + +DELETE FROM `spell_script_names` WHERE `ScriptName` IN +('spell_warl_incinerate', +'spell_warl_shadowburn', +'spell_warl_burning_embers', +'spell_warl_chaos_bolt'); + +INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES +(29722, 'spell_warl_incinerate'), +(29341, 'spell_warl_shadowburn'), +(-91986, 'spell_warl_burning_embers'), +(50796, 'spell_warl_chaos_bolt'); + +DELETE FROM `spell_pet_auras` WHERE `spell` IN (85112, 91986, 47220, 47221); +INSERT INTO `spell_pet_auras` (`spell`, `effectId`, `pet`, `aura`) VALUES +(85112, 0, 416, 85112), +(91986, 0, 416, 91986), +(47220, 0, 416, 47220), +(47221, 0, 416, 47221); diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index 1f4648a8e8b..df864323aed 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -7139,10 +7139,6 @@ float Unit::GetUnitSpellCriticalChance(Unit* victim, SpellInfo const* spellProto if (GetAuraEffect(SPELL_AURA_ABILITY_IGNORE_AURASTATE, SPELLFAMILY_MAGE, 0, 0, 0x0000000A, GetGUID())) crit_chance *= 2; break; - case 7: // Last Word - if (victim->HasAuraState(AURA_STATE_HEALTHLESS_35_PERCENT, spellProto, this)) - crit_chance += (*i)->GetAmount(); - break; case 57470: // Renewed Hope case 57472: if (victim->HasAura(6788) || victim->HasAura(47930)) @@ -7183,6 +7179,12 @@ float Unit::GetUnitSpellCriticalChance(Unit* victim, SpellInfo const* spellProto return 100.0f; break; } + + // Last Word + if (AuraEffect const* effect = GetDummyAuraEffect(SPELLFAMILY_PALADIN, 2139, EFFECT_0)) + if (effect->IsAffectingSpell(spellProto)) + if (victim->HasAuraState(AURA_STATE_HEALTHLESS_35_PERCENT)) + crit_chance += effect->GetAmount(); break; case SPELLFAMILY_SHAMAN: // Lava Burst @@ -7198,8 +7200,16 @@ float Unit::GetUnitSpellCriticalChance(Unit* victim, SpellInfo const* spellProto { // Searing Pain - Soulburn bonus if (spellProto->SpellFamilyFlags[0] & 0x00000100) - if (HasAura(74434)) + if (HasAura(74434, GetGUID())) return 100.0f; + + // Improved Searing Pain + if (AuraEffect const* effect = GetDummyAuraEffect(SPELLFAMILY_WARLOCK, 816, EFFECT_0)) + { + if (effect->IsAffectingSpell(spellProto)) + if (victim->GetHealthPct() <= effect->GetSpellInfo()->Effects[EFFECT_1].CalcValue()) + crit_chance += effect->GetAmount(); + } break; } } diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp index f9f0f588b71..56fb2a0c618 100644 --- a/src/server/game/Spells/SpellEffects.cpp +++ b/src/server/game/Spells/SpellEffects.cpp @@ -397,42 +397,6 @@ void Spell::EffectSchoolDMG(SpellEffIndex effIndex) } break; } - case SPELLFAMILY_WARLOCK: - { - // Incinerate Rank 1 & 2 - if ((m_spellInfo->SpellFamilyFlags[1] & 0x000040) && m_spellInfo->SpellIconID == 2128) - { - // Incinerate does more dmg (dmg/6) if the target have Immolate debuff. - // Check aura state for speed but aura state set not only for Immolate spell - if (unitTarget->HasAuraState(AURA_STATE_CONFLAGRATE)) - { - if (unitTarget->GetAuraEffect(SPELL_AURA_PERIODIC_DAMAGE, SPELLFAMILY_WARLOCK, 0x4, 0, 0)) - damage += damage / 6; - } - } - break; - } - case SPELLFAMILY_PRIEST: - { - // Improved Mind Blast (Mind Blast in shadow form bonus) - if (m_caster->GetShapeshiftForm() == FORM_SHADOW && (m_spellInfo->SpellFamilyFlags[0] & 0x00002000)) - { - Unit::AuraEffectList const& ImprMindBlast = m_caster->GetAuraEffectsByType(SPELL_AURA_ADD_FLAT_MODIFIER); - for (Unit::AuraEffectList::const_iterator i = ImprMindBlast.begin(); i != ImprMindBlast.end(); ++i) - { - if ((*i)->GetSpellInfo()->SpellFamilyName == SPELLFAMILY_PRIEST && - ((*i)->GetSpellInfo()->SpellIconID == 95)) - { - int chance = (*i)->GetSpellInfo()->Effects[EFFECT_1].CalcValue(m_caster); - if (roll_chance_i(chance)) - // Mind Trauma - m_caster->CastSpell(unitTarget, 48301, true, nullptr); - break; - } - } - } - break; - } case SPELLFAMILY_DEATHKNIGHT: { // Blood Boil - bonus for diseased targets diff --git a/src/server/game/Spells/SpellMgr.cpp b/src/server/game/Spells/SpellMgr.cpp index dd1e2a37502..81dcc85269c 100644 --- a/src/server/game/Spells/SpellMgr.cpp +++ b/src/server/game/Spells/SpellMgr.cpp @@ -5617,15 +5617,6 @@ void SpellMgr::LoadSpellInfoCorrections() spellInfo->Effects[EFFECT_0].ApplyAuraName = SPELL_AURA_DUMMY; }); - // Last Word - ApplySpellFix({ - 20234, - 20235, - }, [](SpellInfo* spellInfo) - { - spellInfo->Effects[EFFECT_0].ApplyAuraName = SPELL_AURA_OVERRIDE_CLASS_SCRIPTS; - }); - for (uint32 i = 0; i < GetSpellInfoStoreSize(); ++i) { SpellInfo* spellInfo = mSpellInfoMap[i]; diff --git a/src/server/scripts/Spells/spell_warlock.cpp b/src/server/scripts/Spells/spell_warlock.cpp index 86a5f8f4f5d..f52fe458b96 100644 --- a/src/server/scripts/Spells/spell_warlock.cpp +++ b/src/server/scripts/Spells/spell_warlock.cpp @@ -37,6 +37,7 @@ enum WarlockSpells { SPELL_WARLOCK_AFTERMATH_STUN = 85387, SPELL_WARLOCK_BANE_OF_DOOM_EFFECT = 18662, + SPELL_WARLOCK_BURNING_EMBERS_DAMAGE = 85421, SPELL_WARLOCK_CREATE_HEALTHSTONE = 34130, SPELL_WARLOCK_CORRUPTION_TRIGGERED = 87389, SPELL_WARLOCK_CURSE_OF_DOOM_EFFECT = 18662, @@ -106,7 +107,8 @@ enum WarlockSpellIcons WARLOCK_ICON_ID_MANA_FEED = 1982, WARLOCK_ICON_ID_DEATHS_EMBRACE = 3223, WARLOCK_ICON_ID_SOUL_SIPHON = 5001, - WARLOCK_ICON_ID_SOULBURN_SEED_OF_CORRUPTION = 1932 + WARLOCK_ICON_ID_SOULBURN_SEED_OF_CORRUPTION = 1932, + WARLOCK_ICON_ID_FIRE_AND_BRIMSTONE = 3173 }; enum WarlockSkillIds @@ -121,41 +123,33 @@ enum MiscSpells }; // -85113 - Aftermath -class spell_warl_aftermath : public SpellScriptLoader +class spell_warl_aftermath : public AuraScript { - public: - spell_warl_aftermath() : SpellScriptLoader("spell_warl_aftermath") { } + PrepareAuraScript(spell_warl_aftermath); - class spell_warl_aftermath_AuraScript : public AuraScript + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo( + { + SPELL_WARLOCK_AFTERMATH_STUN, + SPELL_WARLOCK_RAIN_OF_FIRE, + }); + } + + void HandleProc(AuraEffect const* aurEff, ProcEventInfo& eventInfo) + { + if (eventInfo.GetSpellInfo()->Id == SPELL_WARLOCK_RAIN_OF_FIRE) { - PrepareAuraScript(spell_warl_aftermath_AuraScript); - - bool Validate(SpellInfo const* /*spellInfo*/) override - { - return ValidateSpellInfo({ SPELL_WARLOCK_AFTERMATH_STUN }); - } - - void HandleProc(AuraEffect const* aurEff, ProcEventInfo& eventInfo) - { - if (eventInfo.GetDamageInfo()->GetSpellInfo()->Id == SPELL_WARLOCK_RAIN_OF_FIRE) - { - PreventDefaultAction(); - - if (eventInfo.GetProcTarget() && roll_chance_i(aurEff->GetAmount())) - GetTarget()->CastSpell(eventInfo.GetProcTarget(), SPELL_WARLOCK_AFTERMATH_STUN, true, nullptr, aurEff); - } - } - - void Register() override - { - OnEffectProc += AuraEffectProcFn(spell_warl_aftermath_AuraScript::HandleProc, EFFECT_0, SPELL_AURA_PROC_TRIGGER_SPELL); - } - }; - - AuraScript* GetAuraScript() const override - { - return new spell_warl_aftermath_AuraScript(); + PreventDefaultAction(); + if (eventInfo.GetProcTarget() && roll_chance_i(aurEff->GetAmount())) + GetTarget()->CastSpell(eventInfo.GetProcTarget(), SPELL_WARLOCK_AFTERMATH_STUN, true, nullptr, aurEff); } + } + + void Register() override + { + OnEffectProc += AuraEffectProcFn(spell_warl_aftermath::HandleProc, EFFECT_0, SPELL_AURA_PROC_TRIGGER_SPELL); + } }; // 710 - Banish @@ -846,37 +840,30 @@ class spell_warl_healthstone_heal : public SpellScriptLoader }; // -18119 - Improved Soul Fire -class spell_warl_improved_soul_fire : public SpellScriptLoader +class spell_warl_improved_soul_fire : public AuraScript { - public: - spell_warl_improved_soul_fire() : SpellScriptLoader("spell_warl_improved_soul_fire") { } + PrepareAuraScript(spell_warl_improved_soul_fire); - class spell_warl_improved_soul_fire_AuraScript : public AuraScript - { - PrepareAuraScript(spell_warl_improved_soul_fire_AuraScript); - - bool Validate(SpellInfo const* /*spellInfo*/) override + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo( { - return ValidateSpellInfo({ SPELL_WARLOCK_IMPROVED_SOUL_FIRE_PCT, SPELL_WARLOCK_IMPROVED_SOUL_FIRE_STATE }); - } + SPELL_WARLOCK_IMPROVED_SOUL_FIRE_PCT, + SPELL_WARLOCK_IMPROVED_SOUL_FIRE_STATE + }); + } - void OnProc(AuraEffect const* aurEff, ProcEventInfo& /*eventInfo*/) - { - PreventDefaultAction(); - GetTarget()->CastCustomSpell(SPELL_WARLOCK_IMPROVED_SOUL_FIRE_PCT, SPELLVALUE_BASE_POINT0, aurEff->GetAmount(), GetTarget(), true, nullptr, aurEff); - GetTarget()->CastSpell(GetTarget(), SPELL_WARLOCK_IMPROVED_SOUL_FIRE_STATE, true, nullptr, aurEff); - } + void HandleProc(AuraEffect const* aurEff, ProcEventInfo& /*eventInfo*/) + { + PreventDefaultAction(); + GetTarget()->CastCustomSpell(SPELL_WARLOCK_IMPROVED_SOUL_FIRE_PCT, SPELLVALUE_BASE_POINT0, aurEff->GetAmount(), GetTarget(), true, nullptr, aurEff); + GetTarget()->CastSpell(GetTarget(), SPELL_WARLOCK_IMPROVED_SOUL_FIRE_STATE, true, nullptr, aurEff); + } - void Register() override - { - OnEffectProc += AuraEffectProcFn(spell_warl_improved_soul_fire_AuraScript::OnProc, EFFECT_0, SPELL_AURA_DUMMY); - } - }; - - AuraScript* GetAuraScript() const override - { - return new spell_warl_improved_soul_fire_AuraScript(); - } + void Register() override + { + OnEffectProc += AuraEffectProcFn(spell_warl_improved_soul_fire::HandleProc, EFFECT_0, SPELL_AURA_DUMMY); + } }; // 1454 - Life Tap @@ -1216,35 +1203,24 @@ class spell_warl_shadow_ward : public AuraScript }; // -30293 - Soul Leech -class spell_warl_soul_leech : public SpellScriptLoader +class spell_warl_soul_leech : public AuraScript { - public: - spell_warl_soul_leech() : SpellScriptLoader("spell_warl_soul_leech") { } + PrepareAuraScript(spell_warl_soul_leech); - class spell_warl_soul_leech_AuraScript : public AuraScript - { - PrepareAuraScript(spell_warl_soul_leech_AuraScript); + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_GEN_REPLENISHMENT }); + } - bool Validate(SpellInfo const* /*spellInfo*/) override - { - return ValidateSpellInfo({ SPELL_GEN_REPLENISHMENT }); - } + void OnProc(AuraEffect const* aurEff, ProcEventInfo& /*eventInfo*/) + { + GetTarget()->CastSpell((Unit*)nullptr, SPELL_GEN_REPLENISHMENT, true, nullptr, aurEff); + } - void OnProc(AuraEffect const* aurEff, ProcEventInfo& /*eventInfo*/) - { - GetTarget()->CastSpell((Unit*)nullptr, SPELL_GEN_REPLENISHMENT, true, nullptr, aurEff); - } - - void Register() override - { - OnEffectProc += AuraEffectProcFn(spell_warl_soul_leech_AuraScript::OnProc, EFFECT_0, SPELL_AURA_PROC_TRIGGER_SPELL_WITH_VALUE); - } - }; - - AuraScript* GetAuraScript() const override - { - return new spell_warl_soul_leech_AuraScript(); - } + void Register() override + { + OnEffectProc += AuraEffectProcFn(spell_warl_soul_leech::OnProc, EFFECT_0, SPELL_AURA_PROC_TRIGGER_SPELL_WITH_VALUE); + } }; // 86121 - Soul Swap @@ -1809,11 +1785,130 @@ class spell_warl_soulburn : public AuraScript } }; +// 29722 - Incinerate +class spell_warl_incinerate : public SpellScript +{ + PrepareSpellScript(spell_warl_incinerate); + + void HandleDamageBonus(SpellEffIndex /*effIndex*/) + { + int32 bp = GetEffectValue(); + if (Unit* target = GetHitUnit()) + { + if (target->HasAuraState(AURA_STATE_CONFLAGRATE)) + { + if (target->GetAuraEffect(SPELL_AURA_PERIODIC_DAMAGE, SPELLFAMILY_WARLOCK, 0x4, 0, 0)) + { + bp += bp / 6; + if (AuraEffect const* aurEff = GetCaster()->GetDummyAuraEffect(SPELLFAMILY_WARLOCK, WARLOCK_ICON_ID_FIRE_AND_BRIMSTONE, EFFECT_0)) + AddPct(bp, aurEff->GetAmount()); + } + } + } + + SetEffectValue(bp); + } + + void Register() override + { + OnEffectLaunchTarget += SpellEffectFn(spell_warl_incinerate::HandleDamageBonus, EFFECT_0, SPELL_EFFECT_SCHOOL_DAMAGE); + } +}; + +// 29341 - Shadowburn +class spell_warl_shadowburn : public AuraScript +{ + PrepareAuraScript(spell_warl_shadowburn); + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_WARLOCK_SOUL_SHARD }); + } + + void OnAuraRemoveHandler(AuraEffect const* aurEff, AuraEffectHandleModes /*mode*/) + { + Unit* caster = GetCaster(); + if (!caster || !caster->IsPlayer()) + return; + + if (GetTargetApplication()->GetRemoveMode() == AURA_REMOVE_BY_DEATH) + if (caster->ToPlayer()->isHonorOrXPTarget(GetTarget())) + caster->CastCustomSpell(SPELL_WARLOCK_SOUL_SHARD, SPELLVALUE_BASE_POINT0, aurEff->GetAmount(), caster, true, nullptr, aurEff); + } + + void Register() override + { + AfterEffectRemove += AuraEffectRemoveFn(spell_warl_shadowburn::OnAuraRemoveHandler, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL); + } +}; + +// -91986 - Burning Embers +class spell_warl_burning_embers : public AuraScript +{ + PrepareAuraScript(spell_warl_burning_embers); + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_WARLOCK_BURNING_EMBERS_DAMAGE }); + } + + bool CheckProc(ProcEventInfo& eventInfo) + { + return eventInfo.GetDamageInfo() && eventInfo.GetProcTarget(); + } + + void HandleProc(AuraEffect const* aurEff, ProcEventInfo& eventInfo) + { + PreventDefaultAction(); + Unit* target = GetTarget(); + if (target->IsCreature() && target->GetOwner()) + target = GetTarget()->GetOwner(); + + uint8 maxTicks = sSpellMgr->AssertSpellInfo(SPELL_WARLOCK_BURNING_EMBERS_DAMAGE)->GetMaxTicks(); + int32 damageBp = CalculatePct(eventInfo.GetDamageInfo()->GetDamage(), aurEff->GetAmount()) / maxTicks; + float coefficient = GetSpellInfo()->GetRank() * 0.7f; + int32 damageCap = (target->SpellBaseDamageBonusDone(SPELL_SCHOOL_MASK_FIRE) * coefficient + GetSpellInfo()->Effects[EFFECT_1].CalcValue(target)) / maxTicks; + int32 bp = std::min(damageBp, damageCap); + target->CastCustomSpell(SPELL_WARLOCK_BURNING_EMBERS_DAMAGE, SPELLVALUE_BASE_POINT0, bp, eventInfo.GetProcTarget(), true, nullptr, aurEff); + } + + void Register() override + { + DoCheckProc += AuraCheckProcFn(spell_warl_burning_embers::CheckProc); + OnEffectProc += AuraEffectProcFn(spell_warl_burning_embers::HandleProc, EFFECT_0, SPELL_AURA_DUMMY); + } +}; + +// 50796 - Chaos Bolt +class spell_warl_chaos_bolt : public SpellScript +{ + PrepareSpellScript(spell_warl_chaos_bolt); + + void HandleDamageBonus(SpellEffIndex /*effIndex*/) + { + int32 bp = GetEffectValue(); + if (Unit* target = GetHitUnit()) + if (target->HasAuraState(AURA_STATE_CONFLAGRATE)) + if (target->GetAuraEffect(SPELL_AURA_PERIODIC_DAMAGE, SPELLFAMILY_WARLOCK, 0x4, 0, 0)) + if (AuraEffect const* aurEff = GetCaster()->GetDummyAuraEffect(SPELLFAMILY_WARLOCK, WARLOCK_ICON_ID_FIRE_AND_BRIMSTONE, EFFECT_0)) + AddPct(bp, aurEff->GetAmount()); + + SetEffectValue(bp); + } + + void Register() override + { + OnEffectLaunchTarget += SpellEffectFn(spell_warl_chaos_bolt::HandleDamageBonus, EFFECT_0, SPELL_EFFECT_SCHOOL_DAMAGE); + } +}; + void AddSC_warlock_spell_scripts() { - new spell_warl_aftermath(); + RegisterAuraScript(spell_warl_aftermath); new spell_warl_bane_of_doom(); new spell_warl_banish(); + RegisterAuraScript(spell_warl_burning_embers); + RegisterSpellScript(spell_warl_chaos_bolt); RegisterSpellScript(spell_warl_conflagrate); new spell_warl_create_healthstone(); new spell_warl_demonic_circle_summon(); @@ -1831,7 +1926,8 @@ void AddSC_warlock_spell_scripts() new spell_warl_haunt(); new spell_warl_health_funnel(); new spell_warl_healthstone_heal(); - new spell_warl_improved_soul_fire(); + RegisterAuraScript(spell_warl_improved_soul_fire); + RegisterSpellScript(spell_warl_incinerate); new spell_warl_life_tap(); new spell_warl_nether_ward_overrride(); new spell_warl_seduction(); @@ -1841,7 +1937,8 @@ void AddSC_warlock_spell_scripts() RegisterAuraScript(spell_warl_shadow_ward); RegisterAuraScript(spell_warl_soulburn); RegisterAuraScript(spell_warl_soul_harvest); - new spell_warl_soul_leech(); + RegisterAuraScript(spell_warl_soul_leech); + RegisterAuraScript(spell_warl_shadowburn); new spell_warl_soul_swap(); new spell_warl_soul_swap_dot_marker(); new spell_warl_soul_swap_exhale();