diff --git a/zone/client_packet.cpp b/zone/client_packet.cpp index 2be564058..8d583985d 100644 --- a/zone/client_packet.cpp +++ b/zone/client_packet.cpp @@ -905,6 +905,8 @@ void Client::CompleteConnect() entity_list.RefreshClientXTargets(this); worldserver.RequestTellQueue(GetName()); + + entity_list.ScanCloseMobs(close_mobs, this); } // connecting opcode handlers diff --git a/zone/client_process.cpp b/zone/client_process.cpp index 14b2036cf..d8ec451a9 100644 --- a/zone/client_process.cpp +++ b/zone/client_process.cpp @@ -256,28 +256,7 @@ bool Client::Process() { * Used in aggro checks */ if (mob_close_scan_timer.Check()) { - close_mobs.clear(); - - float scan_range = RuleI(Range, MobCloseScanDistance) * RuleI(Range, MobCloseScanDistance); - auto &mob_list = entity_list.GetMobList(); - - for (auto itr : mob_list) { - Mob *mob = itr.second; - float distance = DistanceSquared(m_Position, mob->GetPosition()); - - if (mob->GetID() <= 0) { - continue; - } - - if (mob->IsNPC() || mob->IsClient()) { - if (distance <= scan_range) { - close_mobs.insert(std::pair(mob->GetID(), mob)); - } - else if ((mob->GetAggroRange() * mob->GetAggroRange()) > scan_range) { - close_mobs.insert(std::pair(mob->GetID(), mob)); - } - } - } + entity_list.ScanCloseMobs(close_mobs, this); } bool may_use_attacks = false; diff --git a/zone/entity.cpp b/zone/entity.cpp index adb29011f..dc90a41b1 100644 --- a/zone/entity.cpp +++ b/zone/entity.cpp @@ -2654,7 +2654,12 @@ void EntityList::ScanCloseMobs(std::unordered_map &close_mobs, Mo } } - LogAIScanClose("Close List Size [{}] for mob [{}]", close_mobs.size(), scanning_mob->GetCleanName()); + LogAIScanClose( + "[{}] Scanning Close List | list_size [{}] moving [{}]", + scanning_mob->GetCleanName(), + close_mobs.size(), + scanning_mob->IsMoving() ? "true" : "false" + ); } bool EntityList::RemoveMerc(uint16 delete_id) diff --git a/zone/npc.cpp b/zone/npc.cpp index 8b4996177..ed5f37bb5 100644 --- a/zone/npc.cpp +++ b/zone/npc.cpp @@ -705,12 +705,6 @@ bool NPC::Process() SpellProcess(); if (mob_scan_close.Check()) { - LogAIScanClose( - "is_moving [{}] npc [{}] timer [{}]", - moving ? "true" : "false", - GetCleanName(), - mob_scan_close.GetDuration() - ); entity_list.ScanCloseMobs(close_mobs, this);