From 99b39e50452e5a5f0362765860fc7c8280f251c0 Mon Sep 17 00:00:00 2001 From: Andrew <47818697+Nyeriah@users.noreply.github.com> Date: Sun, 15 Sep 2024 07:46:55 -0300 Subject: [PATCH] =?UTF-8?q?fix(Scripts/BlackTemple):=20Parasitic=20Shadowf?= =?UTF-8?q?iends=20should=20not=20target=20pl=E2=80=A6=20(#19944)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix(Scripts/BlackTemple): Parasitic Shadowfiends should not target players affected with debuff * Update boss_illidan.cpp * Update src/server/scripts/Outland/BlackTemple/boss_illidan.cpp * make it simple --- .../Outland/BlackTemple/boss_illidan.cpp | 27 +++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/src/server/scripts/Outland/BlackTemple/boss_illidan.cpp b/src/server/scripts/Outland/BlackTemple/boss_illidan.cpp index 60873db141e57a..a181d6fba8f6ed 100644 --- a/src/server/scripts/Outland/BlackTemple/boss_illidan.cpp +++ b/src/server/scripts/Outland/BlackTemple/boss_illidan.cpp @@ -1186,14 +1186,37 @@ struct npc_parasitic_shadowfiend : public ScriptedAI { npc_parasitic_shadowfiend(Creature* creature) : ScriptedAI(creature) { } + bool CanAIAttack(Unit const* who) const override + { + return !who->HasAura(SPELL_PARASITIC_SHADOWFIEND) && !who->HasAura(SPELL_PARASITIC_SHADOWFIEND_TRIGGER); + } + + void EnterEvadeMode(EvadeReason /*why*/) override + { + me->DespawnOrUnsummon(); + } + void IsSummonedBy(WorldObject* /*summoner*/) override { // Simulate blizz-like AI delay to avoid extreme overpopulation of adds me->SetReactState(REACT_DEFENSIVE); - me->m_Events.AddEventAtOffset([&] { + + scheduler.Schedule(2400ms, [this](TaskContext context) + { me->SetReactState(REACT_AGGRESSIVE); me->SetInCombatWithZone(); - }, 2400ms); + context.Repeat(); + }); + } + + void UpdateAI(uint32 diff) override + { + scheduler.Update(diff); + + if (!UpdateVictim()) + return; + + DoMeleeAttackIfReady(); } };