public virtual IEnumerator TakeTurn(BoardCreator board) { if (!CanMove()) { ResetMove(); } else { if (nonNullAttackTarget != null) { AttackPattern pattern = GetComponent <AttackPattern>(); yield return(StartCoroutine(pattern.Attack(nonNullAttackTarget))); pattern.SetData(GetComponent <UnitStats>().unitInfo.WeaponMain); yield return(StartCoroutine(pattern.HitUnits(board, attackTarget, moveTarget))); attackTarget = null; nonNullAttackTarget = null; } else { SetNextMove(board); Movement m = GetComponent <Movement>(); yield return(StartCoroutine(m.Traverse(moveTarget))); } } }