From fafd351e44b4556b9ceda4bfaa72c6e5f22c3f78 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A4=A9=E9=B9=BF?= <18535853+PkllonG@users.noreply.github.com> Date: Mon, 9 Sep 2024 18:07:11 +0800 Subject: [PATCH] fix(Core/AI): creature leashing behavior. (#19897) * Update Unit.cpp * Update TargetedMovementGenerator.cpp * Update Unit.cpp * Update Unit.cpp --- .../TargetedMovementGenerator.cpp | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/server/game/Movement/MovementGenerators/TargetedMovementGenerator.cpp b/src/server/game/Movement/MovementGenerators/TargetedMovementGenerator.cpp index 4dc2f55bd..a394c7758 100644 --- a/src/server/game/Movement/MovementGenerators/TargetedMovementGenerator.cpp +++ b/src/server/game/Movement/MovementGenerators/TargetedMovementGenerator.cpp @@ -148,15 +148,16 @@ bool ChaseMovementGenerator::DoUpdate(T* owner, uint32 time_diff) owner->ClearUnitState(UNIT_STATE_CHASE_MOVE); owner->SetInFront(target); MovementInform(owner); + } - // Mobs should chase you infinitely if you stop and wait every few seconds. - i_leashExtensionTimer.Update(time_diff); - if (i_leashExtensionTimer.Passed()) - { - i_leashExtensionTimer.Reset(5000); + // Mobs should chase you infinitely if you stop and wait every few seconds. + i_leashExtensionTimer.Update(time_diff); + if (i_leashExtensionTimer.Passed()) + { + i_leashExtensionTimer.Reset(5000); + if (owner->HasUnitState(UNIT_STATE_CHASE) && owner->movespline->Finalized() && !target->isMoving()) if (Creature* creature = owner->ToCreature()) creature->UpdateLeashExtensionTime(); - } } // if the target moved, we have to consider whether to adjust