From 4cbe846d2221dc861598c473394e810942cde210 Mon Sep 17 00:00:00 2001 From: UltraNix <80540499+UltraNix@users.noreply.github.com> Date: Sun, 26 Jun 2022 20:07:25 +0200 Subject: [PATCH] fix(Scripts/ZulGurub): Gri'lek should pursuit random targets. (#12194) Fixes #12088 --- .../EasternKingdoms/ZulGurub/boss_grilek.cpp | 30 +++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_grilek.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_grilek.cpp index 0c7fef454..6fd79576d 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_grilek.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_grilek.cpp @@ -38,7 +38,8 @@ enum Events EVENT_AVATAR = 1, EVENT_GROUND_TREMOR = 2, EVENT_START_PURSUIT = 3, - EVENT_ENTANGLING_ROOTS = 4 + EVENT_STOP_PURSUIT = 4, + EVENT_ENTANGLING_ROOTS = 5 }; class boss_grilek : public CreatureScript // grilek @@ -52,6 +53,12 @@ public: { } + void Reset() override + { + _pursuitTargetGUID.Clear(); + BossAI::Reset(); + } + void EnterCombat(Unit* /*who*/) override { _EnterCombat(); @@ -75,10 +82,15 @@ public: switch (eventId) { case EVENT_AVATAR: + if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0)) + { + _pursuitTargetGUID = target->GetGUID(); + } DoCast(me, SPELL_AVATAR); - DoResetThreat(); me->SetReactState(REACT_PASSIVE); + DoResetThreat(); events.ScheduleEvent(EVENT_START_PURSUIT, 2s); + events.ScheduleEvent(EVENT_STOP_PURSUIT, 15s); events.ScheduleEvent(EVENT_AVATAR, 45s, 50s); break; case EVENT_GROUND_TREMOR: @@ -87,6 +99,17 @@ public: break; case EVENT_START_PURSUIT: me->SetReactState(REACT_AGGRESSIVE); + if (Unit* pursuitTarget = ObjectAccessor::GetUnit(*me, _pursuitTargetGUID)) + { + me->GetThreatMgr().addThreat(pursuitTarget, 1000000.f); + } + break; + case EVENT_STOP_PURSUIT: + if (Unit* pursuitTarget = ObjectAccessor::GetUnit(*me, _pursuitTargetGUID)) + { + _pursuitTargetGUID.Clear(); + me->GetThreatMgr().addThreat(pursuitTarget, -1000000.f); + } break; case EVENT_ENTANGLING_ROOTS: DoCastVictim(SPELL_ENTANGLING_ROOTS); @@ -99,6 +122,9 @@ public: DoMeleeAttackIfReady(); } + + private: + ObjectGuid _pursuitTargetGUID; }; CreatureAI* GetAI(Creature* creature) const override