mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-16 07:30:42 +01:00
Scripts/Spells: Implement warlock talent Siphon Life (#30159)
This commit is contained in:
7
sql/updates/world/master/2024_09_06_03_world.sql
Normal file
7
sql/updates/world/master/2024_09_06_03_world.sql
Normal file
@@ -0,0 +1,7 @@
|
||||
DELETE FROM `spell_proc` WHERE `SpellId` IN (452999);
|
||||
INSERT INTO `spell_proc` (`SpellId`,`SchoolMask`,`SpellFamilyName`,`SpellFamilyMask0`,`SpellFamilyMask1`,`SpellFamilyMask2`,`SpellFamilyMask3`,`ProcFlags`,`ProcFlags2`,`SpellTypeMask`,`SpellPhaseMask`,`HitMask`,`AttributesMask`,`DisableEffectsMask`,`ProcsPerMinute`,`Chance`,`Cooldown`,`Charges`) VALUES
|
||||
(452999,0x0,5,0x00000002,0x00000000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x0,0x0,0x0,0,0,0,0); -- Siphon Life
|
||||
|
||||
DELETE FROM `spell_script_names` WHERE `ScriptName`='spell_warl_siphon_life';
|
||||
INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES
|
||||
(452999, 'spell_warl_siphon_life');
|
||||
@@ -63,6 +63,7 @@ enum WarlockSpells
|
||||
SPELL_WARLOCK_SEED_OF_CORRUPTION_DAMAGE = 27285,
|
||||
SPELL_WARLOCK_SEED_OF_CORRUPTION_GENERIC = 32865,
|
||||
SPELL_WARLOCK_SHADOW_BOLT_ENERGIZE = 194192,
|
||||
SPELL_WARLOCK_SIPHON_LIFE_HEAL = 453000,
|
||||
SPELL_WARLOCK_SOULSHATTER_EFFECT = 32835,
|
||||
SPELL_WARLOCK_SOUL_SWAP_CD_MARKER = 94229,
|
||||
SPELL_WARLOCK_SOUL_SWAP_OVERRIDE = 86211,
|
||||
@@ -824,6 +825,31 @@ class spell_warl_shadow_bolt : public SpellScript
|
||||
}
|
||||
};
|
||||
|
||||
// 452999 - Siphon Life
|
||||
class spell_warl_siphon_life : public AuraScript
|
||||
{
|
||||
bool Validate(SpellInfo const* /*spellInfo*/) override
|
||||
{
|
||||
return ValidateSpellInfo({ SPELL_WARLOCK_SIPHON_LIFE_HEAL });
|
||||
}
|
||||
|
||||
void HandleProc(AuraEffect const* aurEff, ProcEventInfo const& eventInfo) const
|
||||
{
|
||||
DamageInfo const* damageInfo = eventInfo.GetDamageInfo();
|
||||
if (!damageInfo || !damageInfo->GetDamage())
|
||||
return;
|
||||
|
||||
Unit* caster = GetTarget();
|
||||
caster->CastSpell(caster, SPELL_WARLOCK_SIPHON_LIFE_HEAL, CastSpellExtraArgs(aurEff)
|
||||
.AddSpellMod(SPELLVALUE_BASE_POINT0, CalculatePct(damageInfo->GetDamage(), aurEff->GetAmount())));
|
||||
}
|
||||
|
||||
void Register() override
|
||||
{
|
||||
OnEffectProc += AuraEffectProcFn(spell_warl_siphon_life::HandleProc, EFFECT_1, SPELL_AURA_DUMMY);
|
||||
}
|
||||
};
|
||||
|
||||
// 86121 - Soul Swap
|
||||
class spell_warl_soul_swap : public SpellScript
|
||||
{
|
||||
@@ -1180,6 +1206,7 @@ void AddSC_warlock_spell_scripts()
|
||||
RegisterSpellAndAuraScriptPair(spell_warl_seed_of_corruption_dummy, spell_warl_seed_of_corruption_dummy_aura);
|
||||
RegisterSpellScript(spell_warl_seed_of_corruption_generic);
|
||||
RegisterSpellScript(spell_warl_shadow_bolt);
|
||||
RegisterSpellScript(spell_warl_siphon_life);
|
||||
RegisterSpellScript(spell_warl_soul_swap);
|
||||
RegisterSpellScript(spell_warl_soul_swap_dot_marker);
|
||||
RegisterSpellScript(spell_warl_soul_swap_exhale);
|
||||
|
||||
Reference in New Issue
Block a user