diff options
| author | Vincent-Michael <Vincent_Michael@gmx.de> | 2013-07-23 02:39:25 +0200 |
|---|---|---|
| committer | Vincent-Michael <Vincent_Michael@gmx.de> | 2013-07-23 02:39:25 +0200 |
| commit | 7f7852b750967834f3a6360fa6ab3db14e565568 (patch) | |
| tree | d6e57edeb37aa68f4c87c3b34311c149596e4815 | |
| parent | aca68428c28bf47fbe2fc08415ae99156a4c4aa6 (diff) | |
Core/Spells: Fix warlock talent "Improved Soul Fire"
| -rw-r--r-- | sql/updates/world/2013_07_23_00_world_spell_spell_misc_434.sql | 13 | ||||
| -rw-r--r-- | src/server/scripts/Spells/spell_warlock.cpp | 40 |
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(); |
