diff --git a/server/gameserver/creature.cc b/server/gameserver/creature.cc index be46ec05..b68fd0d0 100644 --- a/server/gameserver/creature.cc +++ b/server/gameserver/creature.cc @@ -3021,9 +3021,10 @@ std::shared_ptr> Creature::CalcReporterList(const mt::Equip* weapo case IS_RPG: { float nearest_distance = FLT_MAX; + Creature* nearest_hum = nullptr; TraverseCreatures ( - [] (Creature*c, bool& stop) + [nearest_distance, nearest_hum] (Creature*c, bool& stop) mutable { if (!c->IsHuman()) { return; @@ -3034,6 +3035,15 @@ std::shared_ptr> Creature::CalcReporterList(const mt::Equip* weapo if (c->dead) { return; } + float distance = std::fabs(c->GetPos().GetX() - c->GetPos().GetX()) + std::fabs(c->GetPos().GetZ() - c->GetPos().GetZ()); + if (c->IsPlayer()) { + if (c->AsHuman()->socket_handle) { + if (distance < nearest_distance) { + nearest_distance = distance; + nearest_hum = c; + } + } + } }); } break;