aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVincent-Michael <Vincent_Michael@gmx.de>2013-07-23 02:39:25 +0200
committerVincent-Michael <Vincent_Michael@gmx.de>2013-07-23 02:39:25 +0200
commit7f7852b750967834f3a6360fa6ab3db14e565568 (patch)
treed6e57edeb37aa68f4c87c3b34311c149596e4815
parentaca68428c28bf47fbe2fc08415ae99156a4c4aa6 (diff)
Core/Spells: Fix warlock talent "Improved Soul Fire"
-rw-r--r--sql/updates/world/2013_07_23_00_world_spell_spell_misc_434.sql13
-rw-r--r--src/server/scripts/Spells/spell_warlock.cpp40
2 files changed, 53 insertions, 0 deletions
diff --git a/sql/updates/world/2013_07_23_00_world_spell_spell_misc_434.sql b/sql/updates/world/2013_07_23_00_world_spell_spell_misc_434.sql
new file mode 100644
index 00000000000..51c18dc11ca
--- /dev/null
+++ b/sql/updates/world/2013_07_23_00_world_spell_spell_misc_434.sql
@@ -0,0 +1,13 @@
+DELETE FROM `spell_script_names` WHERE `spell_id`=-18119;
+INSERT INTO `spell_script_names`(`spell_id`, `ScriptName`) VALUES
+(-18119,'spell_warl_improved_soul_fire');
+
+DELETE FROM `spell_ranks` WHERE `first_spell_id`=18119;
+INSERT INTO `spell_ranks` (`first_spell_id`, `spell_id`, `rank`) VALUES
+(18119, 18119, 1),
+(18119, 18120, 2);
+
+DELETE FROM `spell_proc_event` WHERE `entry` IN (18119,18120);
+INSERT INTO `spell_proc_event` (`entry`, `SchoolMask`, `SpellFamilyName`, `SpellFamilyMask0`, `SpellFamilyMask1`, `SpellFamilyMask2`, `procFlags`, `procEx`, `ppmRate`, `CustomChance`, `Cooldown`) VALUES
+(18119, 0, 5, 0, 0x80, 0, 0x10000, 0, 0, 100, 0),
+(18120, 0, 5, 0, 0x80, 0, 0x10000, 0, 0, 100, 0);
diff --git a/src/server/scripts/Spells/spell_warlock.cpp b/src/server/scripts/Spells/spell_warlock.cpp
index b4eed9c527a..a66d49d8c8e 100644
--- a/src/server/scripts/Spells/spell_warlock.cpp
+++ b/src/server/scripts/Spells/spell_warlock.cpp
@@ -57,6 +57,8 @@ enum WarlockSpells
SPELL_WARLOCK_IMPROVED_HEALTH_FUNNEL_BUFF_R2 = 60956,
SPELL_WARLOCK_IMPROVED_HEALTH_FUNNEL_R1 = 18703,
SPELL_WARLOCK_IMPROVED_HEALTH_FUNNEL_R2 = 18704,
+ SPELL_WARLOCK_IMPROVED_SOUL_FIRE_PCT = 85383,
+ SPELL_WARLOCK_IMPROVED_SOUL_FIRE_STATE = 85385,
SPELL_WARLOCK_LIFE_TAP_ENERGIZE = 31818,
SPELL_WARLOCK_LIFE_TAP_ENERGIZE_2 = 32553,
SPELL_WARLOCK_RAIN_OF_FIRE = 42223,
@@ -811,6 +813,43 @@ class spell_warl_healthstone_heal : public SpellScriptLoader
}
};
+// -18119 - Improved Soul Fire
+class spell_warl_improved_soul_fire : public SpellScriptLoader
+{
+ public:
+ spell_warl_improved_soul_fire() : SpellScriptLoader("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
+ {
+ if (!sSpellMgr->GetSpellInfo(SPELL_WARLOCK_IMPROVED_SOUL_FIRE_PCT) ||
+ !sSpellMgr->GetSpellInfo(SPELL_WARLOCK_IMPROVED_SOUL_FIRE_STATE))
+ return false;
+ return true;
+ }
+
+ void OnProc(AuraEffect const* aurEff, ProcEventInfo& /*eventInfo*/)
+ {
+ PreventDefaultAction();
+ GetTarget()->CastCustomSpell(SPELL_WARLOCK_IMPROVED_SOUL_FIRE_PCT, SPELLVALUE_BASE_POINT0, aurEff->GetAmount(), GetTarget(), true, NULL, aurEff);
+ GetTarget()->CastSpell(GetTarget(), SPELL_WARLOCK_IMPROVED_SOUL_FIRE_STATE, true, NULL, 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();
+ }
+};
+
// 1454 - Life Tap
/// Updated 4.3.4
class spell_warl_life_tap : public SpellScriptLoader
@@ -1186,6 +1225,7 @@ 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();
new spell_warl_life_tap();
new spell_warl_ritual_of_doom_effect();
new spell_warl_seduction();