diff options
Diffstat (limited to 'src/game/TargetedMovementGenerator.cpp')
-rw-r--r-- | src/game/TargetedMovementGenerator.cpp | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/src/game/TargetedMovementGenerator.cpp b/src/game/TargetedMovementGenerator.cpp index 231b5a74e24..c5ef0d5be87 100644 --- a/src/game/TargetedMovementGenerator.cpp +++ b/src/game/TargetedMovementGenerator.cpp @@ -66,8 +66,21 @@ TargetedMovementGenerator<T>::_setTargetLocation(T &owner) if(i_destinationHolder.HasArrived()) { // prevent redundant micro-movement - if(i_offset ? i_target->IsWithinDistInMap(&owner, i_offset + 1.0f) : i_target->IsWithinMeleeRange(&owner)) - return false; + if(!i_offset) + { + if(i_target->IsWithinMeleeRange(&owner)) + return false; + } + else if(!i_angle && !owner.hasUnitState(UNIT_STAT_FOLLOW)) + { + if(i_target->IsWithinDistInMap(&owner, i_offset)) + return false; + } + else + { + if(i_target->IsWithinDistInMap(&owner, i_offset + 1.0f)) + return false; + } } else { @@ -79,7 +92,7 @@ TargetedMovementGenerator<T>::_setTargetLocation(T &owner) } else if(!i_angle && !owner.hasUnitState(UNIT_STAT_FOLLOW)) { - if(i_target->IsWithinDist(&owner, i_offset * 0.8)) + if(i_target->IsWithinDist(&owner, i_offset * 0.8f)) stop = true; } @@ -105,7 +118,7 @@ TargetedMovementGenerator<T>::_setTargetLocation(T &owner) else if(!i_angle && !owner.hasUnitState(UNIT_STAT_FOLLOW)) { // caster chase - i_target->GetContactPoint(&owner, x, y, z, i_offset * urand(80, 100) * 0.01f); + i_target->GetContactPoint(&owner, x, y, z, i_offset * urand(80, 95) * 0.01f); } else { |