在Pawn_JobTracker.StartJob()中通过Pawn_JobTracker.curJob的MakeDriver()函数创造JobDriver(工作驱动器)。所有的JobDriver都存储则在每个Pawn的Pawn_JobTracker的属性里(Pawn.Pawn_JobTracker.curDriver)。每个Job对应的JobDriver可以在xml文件里面找到。

JobDriver中最重点的就是MakeNewToils()这个函数。每个Toil指一个步骤。如JobDriver_Goto类的MakeNewToils()中返回两个Toil。第一个Toil是负责的是否可以到达目标(不能到达就直接标记直接结束,取消后续任务)以及走达目标的过程。第二个Toil是到达后发出信号。比如安排小人去参加仪式时,标记修改人数,人满了就开始。MakeNewToils()这个函数返回为IEnumerable<Toil>的迭代器。