mirror of
https://github.com/liyunfan1223/azerothcore-wotlk.git
synced 2026-08-08 15:58:04 +00:00
fix(Scripts/BlackTemple): Vengeful Spirit, Shadow of Death Remove (#19432)
* init * shadowremove * Update boss_teron_gorefiend.cpp
This commit is contained in:
@@ -0,0 +1,14 @@
|
|||||||
|
--
|
||||||
|
DELETE FROM `creature_template_spell` WHERE (`CreatureID` = 23109);
|
||||||
|
INSERT INTO `creature_template_spell` (`CreatureID`, `Index`, `Spell`, `VerifiedBuild`) VALUES
|
||||||
|
(23109, 0, 40325, 0),
|
||||||
|
(23109, 2, 40157, 0),
|
||||||
|
(23109, 3, 40175, 0),
|
||||||
|
(23109, 4, 40314, 0),
|
||||||
|
(23109, 6, 40322, 0);
|
||||||
|
|
||||||
|
UPDATE `creature_template` SET `AIName` = '', `ScriptName` = 'npc_vengeful_spirit' WHERE (`entry` = 23109);
|
||||||
|
|
||||||
|
DELETE FROM `spell_script_names` WHERE `spell_id` = 41999 AND `ScriptName` = 'spell_teron_gorefiend_shadow_of_death_remove';
|
||||||
|
INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES
|
||||||
|
(41999, 'spell_teron_gorefiend_shadow_of_death_remove');
|
||||||
@@ -77,7 +77,7 @@ struct boss_teron_gorefiend : public BossAI
|
|||||||
void Reset() override
|
void Reset() override
|
||||||
{
|
{
|
||||||
BossAI::Reset();
|
BossAI::Reset();
|
||||||
me->CastSpell(me, SPELL_SHADOW_OF_DEATH_REMOVE, true);
|
DoCastSelf(SPELL_SHADOW_OF_DEATH_REMOVE, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
void JustEngagedWith(Unit* who) override
|
void JustEngagedWith(Unit* who) override
|
||||||
@@ -155,7 +155,7 @@ struct boss_teron_gorefiend : public BossAI
|
|||||||
{
|
{
|
||||||
BossAI::JustDied(killer);
|
BossAI::JustDied(killer);
|
||||||
Talk(SAY_DEATH);
|
Talk(SAY_DEATH);
|
||||||
me->CastSpell(me, SPELL_SHADOW_OF_DEATH_REMOVE, true);
|
DoCastSelf(SPELL_SHADOW_OF_DEATH_REMOVE, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
void UpdateAI(uint32 diff) override
|
void UpdateAI(uint32 diff) override
|
||||||
@@ -172,6 +172,17 @@ struct boss_teron_gorefiend : public BossAI
|
|||||||
bool _intro;
|
bool _intro;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct npc_vengeful_spirit : public NullCreatureAI
|
||||||
|
{
|
||||||
|
npc_vengeful_spirit(Creature* creature) : NullCreatureAI(creature) { }
|
||||||
|
|
||||||
|
void OnCharmed(bool apply)
|
||||||
|
{
|
||||||
|
if (!apply)
|
||||||
|
me->DespawnOnEvade();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
class spell_teron_gorefiend_shadow_of_death : public AuraScript
|
class spell_teron_gorefiend_shadow_of_death : public AuraScript
|
||||||
{
|
{
|
||||||
PrepareAuraScript(spell_teron_gorefiend_shadow_of_death);
|
PrepareAuraScript(spell_teron_gorefiend_shadow_of_death);
|
||||||
@@ -231,7 +242,7 @@ class spell_teron_gorefiend_spiritual_vengeance : public AuraScript
|
|||||||
{
|
{
|
||||||
PrepareAuraScript(spell_teron_gorefiend_spiritual_vengeance);
|
PrepareAuraScript(spell_teron_gorefiend_spiritual_vengeance);
|
||||||
|
|
||||||
void HandleEffectRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
|
void HandleEffectRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
|
||||||
{
|
{
|
||||||
Unit::Kill(nullptr, GetTarget());
|
Unit::Kill(nullptr, GetTarget());
|
||||||
}
|
}
|
||||||
@@ -276,12 +287,44 @@ class spell_teron_gorefiend_shadowy_construct : public AuraScript
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class spell_teron_gorefiend_shadow_of_death_remove : public SpellScript
|
||||||
|
{
|
||||||
|
PrepareSpellScript(spell_teron_gorefiend_shadow_of_death_remove);
|
||||||
|
|
||||||
|
bool Validate(SpellInfo const* /*spellInfo*/) override
|
||||||
|
{
|
||||||
|
return ValidateSpellInfo(
|
||||||
|
{
|
||||||
|
SPELL_SHADOW_OF_DEATH,
|
||||||
|
SPELL_POSSESS_SPIRIT_IMMUNE,
|
||||||
|
SPELL_SPIRITUAL_VENGEANCE
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
void HandleOnHit()
|
||||||
|
{
|
||||||
|
if (Unit* target = GetHitUnit())
|
||||||
|
{
|
||||||
|
target->RemoveAurasDueToSpell(SPELL_POSSESS_SPIRIT_IMMUNE);
|
||||||
|
target->RemoveAurasDueToSpell(SPELL_SPIRITUAL_VENGEANCE);
|
||||||
|
target->RemoveAurasDueToSpell(SPELL_SHADOW_OF_DEATH);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void Register() override
|
||||||
|
{
|
||||||
|
OnHit += SpellHitFn(spell_teron_gorefiend_shadow_of_death_remove::HandleOnHit);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
void AddSC_boss_teron_gorefiend()
|
void AddSC_boss_teron_gorefiend()
|
||||||
{
|
{
|
||||||
RegisterBlackTempleCreatureAI(boss_teron_gorefiend);
|
RegisterBlackTempleCreatureAI(boss_teron_gorefiend);
|
||||||
|
RegisterBlackTempleCreatureAI(npc_vengeful_spirit);
|
||||||
RegisterSpellScript(spell_teron_gorefiend_shadow_of_death);
|
RegisterSpellScript(spell_teron_gorefiend_shadow_of_death);
|
||||||
RegisterSpellScript(spell_teron_gorefiend_spirit_lance);
|
RegisterSpellScript(spell_teron_gorefiend_spirit_lance);
|
||||||
RegisterSpellScript(spell_teron_gorefiend_spiritual_vengeance);
|
RegisterSpellScript(spell_teron_gorefiend_spiritual_vengeance);
|
||||||
RegisterSpellScript(spell_teron_gorefiend_shadowy_construct);
|
RegisterSpellScript(spell_teron_gorefiend_shadowy_construct);
|
||||||
|
RegisterSpellScript(spell_teron_gorefiend_shadow_of_death_remove);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -104,7 +104,6 @@ public:
|
|||||||
{
|
{
|
||||||
switch (creature->GetEntry())
|
switch (creature->GetEntry())
|
||||||
{
|
{
|
||||||
case NPC_VENGEFUL_SPIRIT:
|
|
||||||
case NPC_SHADOWY_CONSTRUCT:
|
case NPC_SHADOWY_CONSTRUCT:
|
||||||
if (Creature* teron = GetCreature(DATA_TERON_GOREFIEND))
|
if (Creature* teron = GetCreature(DATA_TERON_GOREFIEND))
|
||||||
teron->AI()->JustSummoned(creature);
|
teron->AI()->JustSummoned(creature);
|
||||||
|
|||||||
Reference in New Issue
Block a user