fix(Core/AI): creature leashing behavior. (#19897)
* Update Unit.cpp * Update TargetedMovementGenerator.cpp * Update Unit.cpp * Update Unit.cpp
This commit is contained in:
@@ -148,15 +148,16 @@ bool ChaseMovementGenerator<T>::DoUpdate(T* owner, uint32 time_diff)
|
|||||||
owner->ClearUnitState(UNIT_STATE_CHASE_MOVE);
|
owner->ClearUnitState(UNIT_STATE_CHASE_MOVE);
|
||||||
owner->SetInFront(target);
|
owner->SetInFront(target);
|
||||||
MovementInform(owner);
|
MovementInform(owner);
|
||||||
|
}
|
||||||
|
|
||||||
// Mobs should chase you infinitely if you stop and wait every few seconds.
|
// Mobs should chase you infinitely if you stop and wait every few seconds.
|
||||||
i_leashExtensionTimer.Update(time_diff);
|
i_leashExtensionTimer.Update(time_diff);
|
||||||
if (i_leashExtensionTimer.Passed())
|
if (i_leashExtensionTimer.Passed())
|
||||||
{
|
{
|
||||||
i_leashExtensionTimer.Reset(5000);
|
i_leashExtensionTimer.Reset(5000);
|
||||||
|
if (owner->HasUnitState(UNIT_STATE_CHASE) && owner->movespline->Finalized() && !target->isMoving())
|
||||||
if (Creature* creature = owner->ToCreature())
|
if (Creature* creature = owner->ToCreature())
|
||||||
creature->UpdateLeashExtensionTime();
|
creature->UpdateLeashExtensionTime();
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// if the target moved, we have to consider whether to adjust
|
// if the target moved, we have to consider whether to adjust
|
||||||
|
|||||||
Reference in New Issue
Block a user