diff options
-rw-r--r-- | sql/updates/world/master/2024_10_12_03_world.sql | 8 | ||||
-rw-r--r-- | src/server/scripts/Spells/spell_dk.cpp | 40 |
2 files changed, 48 insertions, 0 deletions
diff --git a/sql/updates/world/master/2024_10_12_03_world.sql b/sql/updates/world/master/2024_10_12_03_world.sql new file mode 100644 index 00000000000..ef44153ba66 --- /dev/null +++ b/sql/updates/world/master/2024_10_12_03_world.sql @@ -0,0 +1,8 @@ +DELETE FROM `spell_proc` WHERE `SpellId` IN (194878); +INSERT INTO `spell_proc` (`SpellId`,`SchoolMask`,`SpellFamilyName`,`SpellFamilyMask0`,`SpellFamilyMask1`,`SpellFamilyMask2`,`SpellFamilyMask3`,`ProcFlags`,`ProcFlags2`,`SpellTypeMask`,`SpellPhaseMask`,`HitMask`,`AttributesMask`,`DisableEffectsMask`,`ProcsPerMinute`,`Chance`,`Cooldown`,`Charges`) VALUES +(194878,0x00,15,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0,0,0,0); -- Icy Talons + +DELETE FROM `spell_script_names` WHERE `ScriptName` IN ('spell_dk_icy_talons','spell_dk_icy_talons_buff'); +INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES +(194878, 'spell_dk_icy_talons'), +(194879, 'spell_dk_icy_talons_buff'); diff --git a/src/server/scripts/Spells/spell_dk.cpp b/src/server/scripts/Spells/spell_dk.cpp index 5de35a0f760..9c0cbd56ba7 100644 --- a/src/server/scripts/Spells/spell_dk.cpp +++ b/src/server/scripts/Spells/spell_dk.cpp @@ -80,6 +80,7 @@ enum DeathKnightSpells SPELL_DK_RUNIC_RETURN = 61258, SPELL_DK_SLUDGE_BELCHER = 207313, SPELL_DK_SLUDGE_BELCHER_SUMMON = 212027, + SPELL_DK_SMOTHERING_OFFENSE = 435005, SPELL_DK_DEATH_STRIKE_ENABLER = 89832, // Server Side SPELL_DK_TIGHTENING_GRASP = 206970, //SPELL_DK_TIGHTENING_GRASP_SLOW = 143375, // dropped in BfA @@ -750,6 +751,43 @@ class spell_dk_howling_blast : public SpellScript } }; +// 194878 - Icy Talons +class spell_dk_icy_talons : public AuraScript +{ + bool CheckProc(AuraEffect const* /*aurEff*/, ProcEventInfo const& eventInfo) const + { + if (Spell const* procSpell = eventInfo.GetProcSpell()) + return procSpell->GetPowerTypeCostAmount(POWER_RUNIC_POWER) > 0; + + return false; + } + + void Register() override + { + DoCheckEffectProc += AuraCheckEffectProcFn(spell_dk_icy_talons::CheckProc, EFFECT_0, SPELL_AURA_PROC_TRIGGER_SPELL_WITH_VALUE); + } +}; + +// 194879 - Icy Talons +class spell_dk_icy_talons_buff : public SpellScript +{ + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_DK_SMOTHERING_OFFENSE }); + } + + void HandleSmotheringOffense(WorldObject*& target) const + { + if (!GetCaster()->HasAura(SPELL_DK_SMOTHERING_OFFENSE)) + target = nullptr; + } + + void Register() override + { + OnObjectTargetSelect += SpellObjectTargetSelectFn(spell_dk_icy_talons_buff::HandleSmotheringOffense, EFFECT_1, TARGET_UNIT_CASTER); + } +}; + // 206940 - Mark of Blood class spell_dk_mark_of_blood : public AuraScript { @@ -1071,6 +1109,8 @@ void AddSC_deathknight_spell_scripts() RegisterSpellScript(spell_dk_ghoul_explode); RegisterSpellScript(spell_dk_glyph_of_scourge_strike_script); RegisterSpellScript(spell_dk_howling_blast); + RegisterSpellScript(spell_dk_icy_talons); + RegisterSpellScript(spell_dk_icy_talons_buff); RegisterSpellScript(spell_dk_mark_of_blood); RegisterSpellScript(spell_dk_necrosis); RegisterSpellScript(spell_dk_obliteration); |