public override NodeState GetState()
    {
        if (!bot.attackTarget)
        {
            return(NodeState.Failure);
        }
        if (!started)
        {
            started   = true;
            target    = bot.attackTarget.transform;
            targetPos = (Vector2)target.position + (Random.insideUnitCircle * randoDist);

            swingMax   = Random.Range(0.2f, maxWig);
            swingTimer = swingMax;
        }
        swingTimer -= Time.deltaTime;
        if (swingTimer <= 0)
        {
            swingTimer = swingMax;
            if (target)
            {
                targetPos = (Vector2)target.position + (Random.insideUnitCircle * randoDist);
            }
        }
        bot.Move(targetPos);
        timer -= Time.deltaTime;
        if (timer <= 0)
        {
            timer   = timerMax;
            started = false;
            return(NodeState.Success);
        }
        return(NodeState.Running);
    }
 public override NodeState GetState()
 {
     if (!target)
     {
         return(NodeState.Failure);
     }
     //if (Vector2.Distance(target.position, bot.gameObject.transform.position) > bot.squad.SquadRadius) {
     bot.Move(target.position);
     return(NodeState.Success);
 }
 public override NodeState GetState()
 {
     if (!bot.attackTarget)
     {
         return(NodeState.Failure);
     }
     if (!started)
     {
         started = true;
     }
     timer -= Time.deltaTime;
     bot.Dash();
     bot.Move(bot.attackTarget.transform.position);
     if (timer <= 0)
     {
         timer   = timerMax;
         started = false;
         return(NodeState.Success);
     }
     return(NodeState.Running);
 }
 public override NodeState GetState()
 {
     if (!started)
     {
         started = true;
         //target = bot.squad.FindMedic();
     }
     if (target == null)
     {
         return(NodeState.Failure);
     }
     if (Vector2.Distance(target.position, pos.position) > 0.5f)
     {
         bot.Move(target.position);
         return(NodeState.Running);
     }
     else
     {
         started = false;
         return(NodeState.Success);
     }
 }
 public override NodeState GetState()
 {
     if (!bot.attackTarget)
     {
         return(NodeState.Failure);
     }
     if (!started)
     {
         target         = bot.attackTarget.transform;
         recenterTarget = (Vector2)target.position + (Random.insideUnitCircle * recenterDist);
         started        = true;
     }
     timer -= Time.deltaTime;
     bot.Dash();
     bot.Move(recenterTarget);
     if (timer <= 0)
     {
         timer   = timerMax + Random.Range(-1f, 1f);
         started = false;
         return(NodeState.Success);
     }
     return(NodeState.Running);
 }
 public override NodeState GetState()
 {
     if (!bot.attackTarget)
     {
         return(NodeState.Failure);
     }
     if (!started)
     {
         target = bot.attackTarget.transform;
         Vector2 worldTarget = (target.position - bot.transform.position).normalized * 50;
         chargeTarget = bot.transform.TransformPoint(worldTarget);
         started      = true;
     }
     timer -= Time.deltaTime;
     bot.Dash();
     bot.Move(chargeTarget);
     if (timer <= 0)
     {
         timer   = timerMax + Random.Range(-1f, 1f);
         started = false;
         return(NodeState.Success);
     }
     return(NodeState.Running);
 }
 public override NodeState GetState()
 {
     if (!bot.attackTarget)
     {
         return(NodeState.Failure);
     }
     if (!started)
     {
         bot.Hold();
         started = true;
     }
     timer    -= Time.deltaTime;
     target    = bot.attackTarget.transform;
     targetPos = (pos.position - target.position).normalized * prefDist;
     bot.Move(targetPos);
     if (timer <= 0)
     {
         timer   = timerMax;
         started = false;
         bot.Hold(false);
         return((Mathf.Abs(prefDist - Vector2.Distance(pos.position, targetPos)) < leeway) ? NodeState.Success : NodeState.Failure);
     }
     return(NodeState.Running);
 }
 public override NodeState GetState()
 {
     if (!bot.attackTarget)
     {
         return(NodeState.Failure);
     }
     if (!started)
     {
         started = true;
         Vector2 target = ((Vector2)bot.attackTarget.transform.position - body.weapon.pointer.ForcePoint).normalized;
         target = bot.transform.InverseTransformDirection(target);
         target = new Vector2(target.x + UnityEngine.Random.Range(-0.1f, 0.1f), target.y).normalized;
         bot.Move(bot.transform.TransformDirection(target));
     }
     timer -= Time.deltaTime;
     bot.Brace();
     if (timer <= 0)
     {
         timer   = UnityEngine.Random.Range(0.4f, timerMax);
         started = false;
         return(NodeState.Success);
     }
     return(NodeState.Running);
 }
 public override NodeState GetState()
 {
     bot.Move(new Vector2(bot.transform.position.x, bot.squad.direction * -10000));
     bot.Dash();
     return(NodeState.Running);
 }