diff --git a/server/gameserver/hero_agent.cc b/server/gameserver/hero_agent.cc index 4cc9d5c3..d00a0edd 100644 --- a/server/gameserver/hero_agent.cc +++ b/server/gameserver/hero_agent.cc @@ -961,13 +961,16 @@ behaviac::EBTStatus HeroAgent::CoGetRunAwayPoint() out_point0 = gas_center; return behaviac::BT_SUCCESS; } - glm::vec3 dir = gas_center - owner_->GetPos().ToGlmVec3(); GlmHelper::Normalize(dir); context->step_len = a8::RandEx(200, 300); - glm::vec3 center = owner_->GetPos().ToGlmVec3() + - dir * (50.0f + (float)context->step_len); + glm::vec3 center = gas_center; + if (owner_->room->GetGasData().gas_progress > context->step_len + 50) { + center = gas_center + dir * (owner_->room->GetGasData().gas_progress - context->step_len); + } + GlmHelper::RotateY(dir, (10 + rand() % 360)/ 180.0f); + center = center + dir * (float)context->step_len; owner_->room->map_instance->Scale(center); glm::vec3 point; bool ok = owner_->room->map_instance->FindConnectableNearestPoint(center, 50, point);