internal IEnumerator UnitNodeActionCoroutine(Node targetNode) { if ( targetNode.CurrentUnit && SelectedUnit._standardAttack && SelectedUnit._standardAttack.CanInitiateAttack && targetNode.CurrentUnit._standardHealth && targetNode.CurrentUnit.Side != SelectedUnit.Side && SelectedUnit._standardAttack.NodeInRange(targetNode) ) { yield return(SelectedUnit.StartCoroutine(SelectedUnit._standardAttack.AttackCoroutine(targetNode.CurrentUnit._standardHealth, StandardAttack.AttackType.Instigation))); if (targetNode.CurrentUnit._standardHealth.CurrentHealthPoints > 0) { if (SelectedUnit._standardAttack.TriggersRetaliation && targetNode.CurrentUnit._standardAttack.NodeInRange(SelectedUnit._standardMovement.CurrentNode)) { yield return(targetNode.CurrentUnit.StartCoroutine(targetNode.CurrentUnit._standardAttack.AttackCoroutine(SelectedUnit._standardHealth, StandardAttack.AttackType.Retaliation))); } } } else if (SelectedUnit._standardMovement && !SelectedUnit._standardMovement.CurrentConnection) { //var path = SelectedUnit._standardMovement.GetPathToNode(node); var path = Pathfinder.GetPathOfTypeForUnit ( SelectedUnit._standardMovement.CurrentNode, targetNode, Pathfinder.PathfindingType.Ground, SelectedUnit ); if (path != null) { SelectedUnit._standardMovement.SetPath(path); } } SelectedUnit.TaskInProgress = null; }