diff --git a/server/gameserver/base_agent.cc b/server/gameserver/base_agent.cc index bde9fb01..8b876130 100644 --- a/server/gameserver/base_agent.cc +++ b/server/gameserver/base_agent.cc @@ -36,3 +36,18 @@ behaviac::EBTStatus BaseAgent::DoRunningCb() } return status_; } + + +behaviac::EBTStatus BaseAgent::CoAttackTarget(int target_id) +{ + if (status_ == behaviac::BT_RUNNING) { + return DoRunningCb(); + } + status_runing_cb_ = + [this] () mutable + { + return status_; + }; + status_ = behaviac::BT_RUNNING; + return status_; +} diff --git a/server/gameserver/base_agent.h b/server/gameserver/base_agent.h index aec10f50..29c696ef 100644 --- a/server/gameserver/base_agent.h +++ b/server/gameserver/base_agent.h @@ -16,6 +16,8 @@ public: bool IsGameOver(); bool HasTarget(float range); + behaviac::EBTStatus CoAttackTarget(int target_id); + public: void SetOwner(Creature* owner) { owner_ = owner; }; Creature* GetOwner() { return owner_; };