diff options
| -rw-r--r-- | src/server/game/AI/CoreAI/UnitAI.h | 18 | 
1 files changed, 13 insertions, 5 deletions
| diff --git a/src/server/game/AI/CoreAI/UnitAI.h b/src/server/game/AI/CoreAI/UnitAI.h index f4ed318dbe2..0dd09bc8051 100644 --- a/src/server/game/AI/CoreAI/UnitAI.h +++ b/src/server/game/AI/CoreAI/UnitAI.h @@ -151,15 +151,23 @@ class TC_GAME_API UnitAI                  return nullptr;              std::list<Unit*> targetList; -            Unit* currentVictim = me->getThreatManager().getCurrentVictim()->getTarget(); +            Unit* currentVictim = nullptr; +            if (auto currentVictimReference = me->getThreatManager().getCurrentVictim()) +            { +                currentVictim = currentVictimReference->getTarget(); -            // Current victim always goes first -            if (predicate(currentVictim)) -                targetList.push_back(currentVictim); +                // Current victim always goes first +                if (currentVictim && predicate(currentVictim)) +                    targetList.push_back(currentVictim); +            }              for (ThreatContainer::StorageType::const_iterator itr = threatlist.begin(); itr != threatlist.end(); ++itr) -                if ((*itr)->getTarget() != currentVictim && predicate((*itr)->getTarget())) +            { +                if (currentVictim != nullptr && (*itr)->getTarget() != currentVictim && predicate((*itr)->getTarget()))                      targetList.push_back((*itr)->getTarget()); +                else if (currentVictim == nullptr && predicate((*itr)->getTarget())) +                    targetList.push_back((*itr)->getTarget()); +            }              if (position >= targetList.size())                  return nullptr; | 
