diff --git a/server/gameserver/base_agent.cc b/server/gameserver/base_agent.cc index 14b87ce8..a89cbaee 100644 --- a/server/gameserver/base_agent.cc +++ b/server/gameserver/base_agent.cc @@ -18,6 +18,16 @@ bool BaseAgent::IsGameOver() return GetOwner()->room->IsGameOver(); } +bool BaseAgent::HasTarget(float range) +{ + Human* enemy = GetOwner()->room->FindEnemy(GetOwner()->AsHuman()); + if (enemy) { + float distance = (enemy->GetPos() - GetOwner()->GetPos()).Norm(); + return distance <= range; + } + return false; +} + behaviac::EBTStatus BaseAgent::DoRunningCb() { if (status_ != behaviac::BT_RUNNING) { diff --git a/server/gameserver/base_agent.h b/server/gameserver/base_agent.h index 49b21f27..aec10f50 100644 --- a/server/gameserver/base_agent.h +++ b/server/gameserver/base_agent.h @@ -14,6 +14,7 @@ public: BEHAVIAC_DECLARE_AGENTTYPE(BaseAgent, behaviac::Agent) bool IsGameOver(); + bool HasTarget(float range); public: void SetOwner(Creature* owner) { owner_ = owner; };