diff --git a/server/gameserver/hero_agent.h b/server/gameserver/hero_agent.h index 7bee868c..7496985d 100644 --- a/server/gameserver/hero_agent.h +++ b/server/gameserver/hero_agent.h @@ -16,6 +16,7 @@ class RoomAgent; class TeamAgent; class TargetAgent; class MasterAgent; +class TeammateAgent; class HeroAgent : public BaseAgent { public: @@ -121,6 +122,7 @@ public: TeamAgent* team_agent = nullptr; MasterAgent* master_agent = nullptr; TargetAgent* current_target_agent = nullptr; + TeammateAgent* current_teammate_agent = nullptr; float task_param0 = 0.0f; float task_param1 = 0.0f; float task_param2 = 0.0f; diff --git a/server/gameserver/teammate_agent.cc b/server/gameserver/teammate_agent.cc new file mode 100644 index 00000000..14acb4e2 --- /dev/null +++ b/server/gameserver/teammate_agent.cc @@ -0,0 +1,20 @@ +#include "precompile.h" + +#include "teammate_agent.h" +#include "room.h" + +#include "creature.h" + +TeammateAgent::TeammateAgent():BaseAgent() +{ + +} + +TeammateAgent::~TeammateAgent() +{ +} + +Room* TeammateAgent::GetRoom() +{ + return owner_->room; +} diff --git a/server/gameserver/teammate_agent.h b/server/gameserver/teammate_agent.h new file mode 100644 index 00000000..b203740e --- /dev/null +++ b/server/gameserver/teammate_agent.h @@ -0,0 +1,21 @@ +#pragma once + +#include "base_agent.h" + +#include "creature.h" + +class TeammateAgent : public BaseAgent +{ +public: + TeammateAgent(); + + virtual ~TeammateAgent(); + + BEHAVIAC_DECLARE_AGENTTYPE(TeammateAgent, BaseAgent) + + virtual Room* GetRoom() override; + +private: + CreatureWeakPtr target_; + Creature* owner_ = nullptr; +};