aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rwxr-xr-xsrc/server/game/Entities/Unit/Unit.cpp17
1 files changed, 5 insertions, 12 deletions
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp
index b03657b73bf..b2d44e0a8a8 100755
--- a/src/server/game/Entities/Unit/Unit.cpp
+++ b/src/server/game/Entities/Unit/Unit.cpp
@@ -14454,14 +14454,10 @@ Unit* Unit::SelectNearbyTarget(float dist) const
targets.remove(getVictim());
// remove not LoS targets
- for (std::list<Unit *>::iterator tIter = targets.begin(); tIter != targets.end();)
+ for (std::list<Unit*>::iterator tIter = targets.begin(); tIter != targets.end();)
{
- if (!IsWithinLOSInMap(*tIter))
- {
- std::list<Unit *>::iterator tIter2 = tIter;
- ++tIter;
- targets.erase(tIter2);
- }
+ if (!IsWithinLOSInMap(*tIter) || (*tIter)->isTotem() || (*tIter)->isSpiritService() || (*tIter)->GetCreatureType() == CREATURE_TYPE_CRITTER)
+ targets.erase(tIter++);
else
++tIter;
}
@@ -14471,11 +14467,8 @@ Unit* Unit::SelectNearbyTarget(float dist) const
return NULL;
// select random
- uint32 rIdx = urand(0,targets.size()-1);
- std::list<Unit *>::const_iterator tcIter = targets.begin();
- for (uint32 i = 0; i < rIdx; ++i)
- ++tcIter;
-
+ std::list<Unit*>::const_iterator tcIter = targets.begin();
+ std::advance(tcIter, urand(0, targets.size()-1));
return *tcIter;
}