diff --git a/server/gameserver/android_agent.cc b/server/gameserver/android_agent.cc index da01125f..5f93b6fc 100644 --- a/server/gameserver/android_agent.cc +++ b/server/gameserver/android_agent.cc @@ -116,7 +116,7 @@ behaviac::EBTStatus AndroidAgent::DoAttack() if (status_ == behaviac::BT_RUNNING) { return DoRunningCb(); } - Human* enemy = GetOwner()->room->FindEnemy(GetOwner()->AsHuman()); + Human* enemy = GetOwner()->room->FindEnemy(GetOwner()->AsHuman(), 300); if (!enemy) { return behaviac::BT_FAILURE; } @@ -154,7 +154,7 @@ behaviac::EBTStatus AndroidAgent::DoPursuit() if (status_ == behaviac::BT_RUNNING) { return DoRunningCb(); } - Human* enemy = GetOwner()->room->FindEnemy(GetOwner()->AsHuman()); + Human* enemy = GetOwner()->room->FindEnemy(GetOwner()->AsHuman(), 500); if (!enemy) { return behaviac::BT_FAILURE; } diff --git a/server/gameserver/base_agent.cc b/server/gameserver/base_agent.cc index 4887210f..bde9fb01 100644 --- a/server/gameserver/base_agent.cc +++ b/server/gameserver/base_agent.cc @@ -21,12 +21,8 @@ bool BaseAgent::IsGameOver() bool BaseAgent::HasTarget(float range) { - Human* enemy = GetOwner()->room->FindEnemy(GetOwner()->AsHuman()); - if (enemy) { - float distance = enemy->GetPos().Distance(GetOwner()->GetPos()); - return distance <= range; - } - return false; + Human* enemy = GetOwner()->room->FindEnemy(GetOwner()->AsHuman(), range); + return enemy != nullptr; } behaviac::EBTStatus BaseAgent::DoRunningCb() diff --git a/server/gameserver/room.cc b/server/gameserver/room.cc index 2b05254e..794127b3 100644 --- a/server/gameserver/room.cc +++ b/server/gameserver/room.cc @@ -413,7 +413,7 @@ void Room::CreateAndroid(int robot_num) NotifyUiUpdate(); } -Human* Room::FindEnemy(Human* hum) +Human* Room::FindEnemy(Human* hum, float range) { std::vector enemys; enemys.reserve(50); diff --git a/server/gameserver/room.h b/server/gameserver/room.h index 7dd7128b..eaa69d4c 100644 --- a/server/gameserver/room.h +++ b/server/gameserver/room.h @@ -138,7 +138,7 @@ public: Player* NewPlayer(); void AddPlayer(Player* hum, BornPoint* init_born_point = nullptr, bool no_matchteam = false); - Human* FindEnemy(Human* hum); + Human* FindEnemy(Human* hum, float range); void AddTeam(class MatchTeam* team);