Example #1
0
        protected override void DoAction(UnitStateController controller)
        {
            Unit unit = controller.unit;

            if (!unit)
            {
                return;
            }

            WorldObject chaseTarget = controller.chaseTarget;

            if (chaseTarget && !unit.holdingPosition && !WorkManager.ObjectCanReachTarget(unit, chaseTarget))
            {
                var newDestination = WorkManager.FindDistinationPointByTarget(chaseTarget, unit);

                if (newDestination.HasValue)
                {
                    unit.StartMove(newDestination.Value);
                }
            }
            else
            {
                unit.StopMove();
            }
        }
Example #2
0
        protected override void DoAction(UnitStateController controller)
        {
            Unit        unit        = controller.unit;
            WorldObject chaseTarget = controller.chaseTarget;

            if (chaseTarget && !WorkManager.ObjectCanReachTargetWithAbility(unit, controller.abilityToUse, chaseTarget))
            {
                var newDestination = WorkManager.FindDistinationPointByTarget(chaseTarget, unit);

                if (newDestination.HasValue)
                {
                    unit.StartMove(newDestination.Value);
                }
            }
            else
            {
                controller.unit.StopMove();
            }
        }
        protected override void DoAction(UnitStateController controller)
        {
            Unit unit = controller.unit;

            var chaseTarget = AttackUtil.SetClosestEnemyAsTarget(controller);

            if (chaseTarget && !unit.holdingPosition && !WorkManager.ObjectCanReachTarget(unit, chaseTarget))
            {
                var newDestination = WorkManager.FindDistinationPointByTarget(controller.chaseTarget, unit);

                if (newDestination.HasValue)
                {
                    unit.StartMove(newDestination.Value);
                }
            }
            else
            {
                controller.unit.StopMove();
            }
        }