本讲讲的是WorkGiver,一个用于给殖民者分配工作的东西,也是让工作台正常工作不必可少的东西。许多小伙伴在制作一个新的工作台后,会出现小人完全无法与其互动的情况,也无法强制小人进行工作台的操作,这就是缺少WorkGiver
如上图所示,下面的“医生”、“修养”、“保育”等等的均为工作类型,把光标放在上面可以看见该类型下对应的所有的WorkGiver
原版所有的WorkGiver在这个文件:Core\Defs\WorkGiverDefs\WorkGivers.xml当然WorkGiver与多种工作都有关系,本期仅讲述与工作台相关的
本期以炉灶相关的WorkGiver为例,也就是上图中“烹饪”类型下的第一个WorkGiver“在炉灶烹饪食物”。看到文件的第490行至506行
<WorkGiverDef>
<defName>DoBillsCook</defName>
<label>cook meals at stove</label>
<giverClass>WorkGiver_DoBill</giverClass>
<workType>Cooking</workType>
<priorityInType>100</priorityInType>
<fixedBillGiverDefs>
<li>ElectricStove</li>
<li>FueledStove</li>
</fixedBillGiverDefs>
<verb>cook</verb>
<gerund>cooking at</gerund>
<requiredCapacities>
<li>Manipulation</li>
</requiredCapacities>
<prioritizeSustains>true</prioritizeSustains>
</WorkGiverDef>
defName与label是def基本功,不再讲述。这里的label会显示在“工作一栏”,本文第一张图片的“在炉灶烹饪食物”、“屠宰尸体”就是label了
giverClass:WorkGiver_DoBill是与工作台相关的class,直接使用即可
workType:工作类型,也就是上文提到的工作类型。原版给出了20种工作类型,与工作台相关的工作类型直接给出给大家:Cooking烹饪,Smithing锻造,Tailoring缝制,Art艺术,Crafting制作,注意区分大小写。
priorityInType:优先度,指的是同一个工作类型下不同WorkGiver的优先度。优先度越高,小人越会优先去执行该工作,同时该工作label显示也越靠前。
fixedBillGiverDefs:是一个List,在工作台这里,把相关的所有工作台defName塞进去
verb:填文本,例子中原版翻译是“烹饪”
gerund:填文本,例子中原版翻译是“烹饪于”
requiredCapacities:需求的小人健康状态,例子中的Manipulation指的是小人的“操作能力”,如果对应的需求无法满足,就不会给这个小人分配任务。
prioritizeSustains:小人会把该任务作为优先任务,不会被打断。