From 0097af183087110f848408e5c5cb020fddcd5f6d Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Tue, 4 Apr 2023 10:34:36 +0800 Subject: [PATCH] 1 --- server/gameserver/hero_agent.cc | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/server/gameserver/hero_agent.cc b/server/gameserver/hero_agent.cc index 47369a95..ecec9939 100644 --- a/server/gameserver/hero_agent.cc +++ b/server/gameserver/hero_agent.cc @@ -8,6 +8,9 @@ #include "movement.h" #include "trigger.h" #include "glmhelper.h" +#include "mapinstance.h" + +#include "mt/Map.h" HeroAgent::HeroAgent():BaseAgent() { @@ -446,7 +449,25 @@ behaviac::EBTStatus HeroAgent::DoHelpAttack(int target_uniid) behaviac::EBTStatus HeroAgent::FlyToMasterAround() { - + if (!GetOwner()->AsHero()->master.Get()) { + return behaviac::BT_FAILURE; + } + glm::vec3 ref_point = GetOwner()->AsHero()->master.Get()->GetPos().ToGlmVec3(); + glm::vec3 point = GetOwner()->AsHero()->master.Get()->GetPos().ToGlmVec3(); + GetOwner()->room->map_instance->Scale(ref_point); + if (GetOwner()->room->map_instance->FindRandomPointAroundCircle + ( + ref_point, + 30 * GetOwner()->room->GetMapMeta()->scale(), + point + )) { + GetOwner()->room->map_instance->UnScale(point); + } + Global::Instance()->verify_set_pos = 1; + GetOwner()->GetMutablePos().FromGlmVec3(point); + Global::Instance()->verify_set_pos = 0; + GetOwner()->room->grid_service->MoveCreature(GetOwner()); + return behaviac::BT_SUCCESS; } behaviac::EBTStatus HeroAgent::FollowMaster()