From 197b053eb4b43ef6c32806f50477ba487d5196ce Mon Sep 17 00:00:00 2001 From: UltraNix <80540499+UltraNix@users.noreply.github.com> Date: Fri, 21 Apr 2023 13:29:32 +0200 Subject: [PATCH] fix(Scripts/ShadowLabirynth): Fixed Blackheart's Incite Chaos. (#15583) --- .../game/Entities/Player/PlayerUpdates.cpp | 2 +- .../boss_blackheart_the_inciter.cpp | 21 +++++++++++++++---- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/src/server/game/Entities/Player/PlayerUpdates.cpp b/src/server/game/Entities/Player/PlayerUpdates.cpp index ba60bf392..71b31db10 100644 --- a/src/server/game/Entities/Player/PlayerUpdates.cpp +++ b/src/server/game/Entities/Player/PlayerUpdates.cpp @@ -1977,7 +1977,7 @@ void Player::UpdateCharmedAI() if (!target || !IsValidAttackTarget(target)) { - target = SelectNearbyTarget(nullptr, 30); + target = SelectNearbyTarget(nullptr, GetMap()->IsDungeon() ? 100.f : 30.f); if (!target) { if (!HasUnitState(UNIT_STATE_FOLLOW)) diff --git a/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/boss_blackheart_the_inciter.cpp b/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/boss_blackheart_the_inciter.cpp index 02d840c46..ddf0fe2de 100644 --- a/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/boss_blackheart_the_inciter.cpp +++ b/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/boss_blackheart_the_inciter.cpp @@ -35,7 +35,10 @@ enum BlackheartTheInciter EVENT_SPELL_INCITE = 1, EVENT_INCITE_WAIT = 2, EVENT_SPELL_CHARGE = 3, - EVENT_SPELL_WAR_STOMP = 4 + EVENT_SPELL_KNOCKBACK = 4, + EVENT_SPELL_WAR_STOMP = 5, + + NPC_INCITE_TRIGGER = 19300 }; class boss_blackheart_the_inciter : public CreatureScript @@ -61,6 +64,7 @@ public: void Reset() override { + me->SetImmuneToPC(false); InciteChaos = false; events.Reset(); if (instance) @@ -110,30 +114,39 @@ public: void UpdateAI(uint32 diff) override { - if (!UpdateVictim()) + if (!UpdateVictim() && !InciteChaos) + { return; + } events.Update(diff); switch (events.ExecuteEvent()) { case EVENT_INCITE_WAIT: + me->SetImmuneToPC(false); InciteChaos = false; break; case EVENT_SPELL_INCITE: { DoCastAOE(SPELL_INCITE_CHAOS); + uint32 inciteTriggerID = NPC_INCITE_TRIGGER; std::list t_list = me->GetThreatMgr().GetThreatList(); for (std::list::const_iterator itr = t_list.begin(); itr != t_list.end(); ++itr) { Unit* target = ObjectAccessor::GetUnit(*me, (*itr)->getUnitGuid()); - if (target && target->GetTypeId() == TYPEID_PLAYER) + + if (target && target->IsPlayer()) { - me->CastSpell(target, SPELL_INCITE_CHAOS_B, true); + if (Creature* inciteTrigger = me->SummonCreature(inciteTriggerID++, *target, TEMPSUMMON_TIMED_DESPAWN, 15 * IN_MILLISECONDS)) + { + inciteTrigger->CastSpell(target, SPELL_INCITE_CHAOS_B, true); + } } } DoResetThreatList(); + me->SetImmuneToPC(true); InciteChaos = true; events.DelayEvents(15000); events.RepeatEvent(urand(50000, 70000));