public override IEnumerator OnEnd() { yield return(base.OnEnd()); ToolCode prevToolCode = toolsManager.DefaultTool; // Даем мешок с добычей toolsManager.SetDefaultTool(nextTaskDefaultTool); // Определяем правый нижний участок базы - куда будем нести добычу basePositionRequest.MakeRequest(new ParamsObject(baseTile), out List <Vector2> basePositions); Vector2 baseGates = basePositions.Aggregate(basePositions[0], (picked, next) => { return(next.x > picked.x || next.y < picked.y ? next : picked); }); CharacterTask returnToBaseTask = actionData.taskManager.ActivateTask(Utils.MaskToLayer(baseLayer), baseGates); // Ждем пока доставит добычу на базу yield return(returnToBaseTask.Execute()); // Добавляем деньги moneyVariable.Plus(maxIterations * actionData.SkillValue); // Убираем мешок, возвращаем предыдущий иструмент toolsManager.SetDefaultTool(prevToolCode); cellLayoutRequest.MakeRequest(new ParamsObject(actionData.endPosition), out LayerMask newTaskLayer); // После возвращения на базу выполняем новое задание с той же точкой (если ресурсы еще не разработаны - // доразработает, если уже - то дойдет) actionData.taskManager.ExecuteTask(newTaskLayer, actionData.endPosition); }