diff --git a/data/sql/updates/pending_db_world/rev_1734727331005061017.sql b/data/sql/updates/pending_db_world/rev_1734727331005061017.sql new file mode 100644 index 0000000000..3314a707b2 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1734727331005061017.sql @@ -0,0 +1,6 @@ +-- +UPDATE `creature_template_addon` SET `auras` = '28305 8273 57989' WHERE (`entry` = 19668); +DELETE FROM `spell_script_names` WHERE `spell_id` = 57989 AND `ScriptName` = 'spell_pri_shadowfiend_death'; +INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES +(57989, 'spell_pri_shadowfiend_death'); +UPDATE `creature_template` SET `ScriptName` = '' WHERE (`entry` = 19668); diff --git a/src/server/scripts/Pet/pet_priest.cpp b/src/server/scripts/Pet/pet_priest.cpp index 43ce08fbd4..4dd38d8fc7 100644 --- a/src/server/scripts/Pet/pet_priest.cpp +++ b/src/server/scripts/Pet/pet_priest.cpp @@ -27,10 +27,7 @@ enum PriestSpells { - SPELL_PRIEST_GLYPH_OF_SHADOWFIEND = 58228, - SPELL_PRIEST_GLYPH_OF_SHADOWFIEND_MANA = 58227, - SPELL_PRIEST_SHADOWFIEND_DODGE = 8273, - SPELL_PRIEST_LIGHTWELL_CHARGES = 59907 + SPELL_PRIEST_LIGHTWELL_CHARGES = 59907, }; struct npc_pet_pri_lightwell : public TotemAI @@ -55,31 +52,7 @@ struct npc_pet_pri_lightwell : public TotemAI } }; -struct npc_pet_pri_shadowfiend : public PetAI -{ - npc_pet_pri_shadowfiend(Creature* creature) : PetAI(creature) { } - - void Reset() override - { - PetAI::Reset(); - if (!me->HasAura(SPELL_PRIEST_SHADOWFIEND_DODGE)) - me->AddAura(SPELL_PRIEST_SHADOWFIEND_DODGE, me); - - if (Unit* target = me->SelectNearestTarget(15.0f)) - AttackStart(target); - } - - void JustDied(Unit* /*killer*/) override - { - if (me->IsSummon()) - if (Unit* owner = me->ToTempSummon()->GetSummonerUnit()) - if (owner->HasAura(SPELL_PRIEST_GLYPH_OF_SHADOWFIEND)) - owner->CastSpell(owner, SPELL_PRIEST_GLYPH_OF_SHADOWFIEND_MANA, true); - } -}; - void AddSC_priest_pet_scripts() { RegisterCreatureAI(npc_pet_pri_lightwell); - RegisterCreatureAI(npc_pet_pri_shadowfiend); } diff --git a/src/server/scripts/Spells/spell_priest.cpp b/src/server/scripts/Spells/spell_priest.cpp index 9253d52876..dcc482ff8a 100644 --- a/src/server/scripts/Spells/spell_priest.cpp +++ b/src/server/scripts/Spells/spell_priest.cpp @@ -49,6 +49,8 @@ enum PriestSpells SPELL_PRIEST_T9_HEALING_2P = 67201, SPELL_PRIEST_VAMPIRIC_TOUCH_DISPEL = 64085, SPELL_PRIEST_T4_4P_FLEXIBILITY = 37565, + SPELL_PRIEST_GLYPH_OF_SHADOWFIEND = 58228, + SPELL_PRIEST_GLYPH_OF_SHADOWFIEND_MANA = 58227, SPELL_GENERIC_ARENA_DAMPENING = 74410, SPELL_GENERIC_BATTLEGROUND_DAMPENING = 74411, @@ -949,6 +951,38 @@ class spell_pri_t4_4p_bonus : public AuraScript } }; +// 57989 - Shadowfiend Death +class spell_pri_shadowfiend_death : public AuraScript +{ + PrepareAuraScript(spell_pri_shadowfiend_death); + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_PRIEST_GLYPH_OF_SHADOWFIEND_MANA }); + } + + bool AfterCheckProc(ProcEventInfo& eventInfo, bool isTriggeredAtSpellProcEvent) + { + if (!isTriggeredAtSpellProcEvent) + return false; + return eventInfo.GetTypeMask() & PROC_FLAG_KILLED; + } + + void HandleProc(AuraEffect const* /*aurEff*/, ProcEventInfo& /*eventInfo*/) + { + PreventDefaultAction(); + if (Unit* owner = GetTarget()->GetOwner()) + if (owner->HasAura(SPELL_PRIEST_GLYPH_OF_SHADOWFIEND)) + owner->CastSpell(owner, SPELL_PRIEST_GLYPH_OF_SHADOWFIEND_MANA, true); + } + + void Register() override + { + DoAfterCheckProc += AuraAfterCheckProcFn(spell_pri_shadowfiend_death::AfterCheckProc); + OnEffectProc += AuraEffectProcFn(spell_pri_shadowfiend_death::HandleProc, EFFECT_0, SPELL_AURA_DUMMY); + } +}; + void AddSC_priest_spell_scripts() { RegisterSpellScript(spell_pri_shadowfiend_scaling); @@ -973,4 +1007,5 @@ void AddSC_priest_spell_scripts() RegisterSpellScript(spell_pri_vampiric_touch); RegisterSpellScript(spell_pri_mind_control); RegisterSpellScript(spell_pri_t4_4p_bonus); + RegisterSpellScript(spell_pri_shadowfiend_death); }