mirror of
https://github.com/mod-playerbots/azerothcore-wotlk.git
synced 2026-01-18 11:25:42 +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
|
||||
{
|
||||
BossAI::Reset();
|
||||
me->CastSpell(me, SPELL_SHADOW_OF_DEATH_REMOVE, true);
|
||||
DoCastSelf(SPELL_SHADOW_OF_DEATH_REMOVE, true);
|
||||
}
|
||||
|
||||
void JustEngagedWith(Unit* who) override
|
||||
@@ -155,7 +155,7 @@ struct boss_teron_gorefiend : public BossAI
|
||||
{
|
||||
BossAI::JustDied(killer);
|
||||
Talk(SAY_DEATH);
|
||||
me->CastSpell(me, SPELL_SHADOW_OF_DEATH_REMOVE, true);
|
||||
DoCastSelf(SPELL_SHADOW_OF_DEATH_REMOVE, true);
|
||||
}
|
||||
|
||||
void UpdateAI(uint32 diff) override
|
||||
@@ -172,6 +172,17 @@ struct boss_teron_gorefiend : public BossAI
|
||||
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
|
||||
{
|
||||
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);
|
||||
|
||||
void HandleEffectRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
|
||||
void HandleEffectRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
|
||||
{
|
||||
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()
|
||||
{
|
||||
RegisterBlackTempleCreatureAI(boss_teron_gorefiend);
|
||||
RegisterBlackTempleCreatureAI(npc_vengeful_spirit);
|
||||
RegisterSpellScript(spell_teron_gorefiend_shadow_of_death);
|
||||
RegisterSpellScript(spell_teron_gorefiend_spirit_lance);
|
||||
RegisterSpellScript(spell_teron_gorefiend_spiritual_vengeance);
|
||||
RegisterSpellScript(spell_teron_gorefiend_shadowy_construct);
|
||||
RegisterSpellScript(spell_teron_gorefiend_shadow_of_death_remove);
|
||||
}
|
||||
|
||||
|
||||
@@ -104,7 +104,6 @@ public:
|
||||
{
|
||||
switch (creature->GetEntry())
|
||||
{
|
||||
case NPC_VENGEFUL_SPIRIT:
|
||||
case NPC_SHADOWY_CONSTRUCT:
|
||||
if (Creature* teron = GetCreature(DATA_TERON_GOREFIEND))
|
||||
teron->AI()->JustSummoned(creature);
|
||||
|
||||
Reference in New Issue
Block a user