Rimworld Mod教程 清单Recipe篇 第一讲:使用recipeMaker自动生成清单

本讲以栓动步枪为例,讲解如何使用recipeMaker进行制作清单的自动生成。
栓动步枪def所在的位置:Core\Defs\ThingDefs_Misc\Weapons/RangedIndustrial.xml 
在606~673行,defName为Gun_PumpShotgun
首先看到的是606行处的

<ThingDef ParentName="BaseHumanMakeableGun">

根据基础篇第四讲已经讲述过,此处为父定义,所以让我们先看到父定义

父定义所在位置:Core\Defs\ThingDefs_Misc\Weapons/BaseWeapons.xml

  

<ThingDef Name="BaseHumanMakeableGun" ParentName="BaseMakeableGun" Abstract="True">

    <weaponTags>

      <li>Gun</li>

    </weaponTags>

    <tradeTags>

      <li>WeaponRanged</li>

    </tradeTags>

    <comps>

      <li Class="CompProperties_Biocodable"/>

    </comps>

  </ThingDef>

再看父定义的父定义:

  

<ThingDef Name="BaseMakeableGun" ParentName="BaseGunWithQuality" Abstract="True">

    <recipeMaker>

      <workSpeedStat>GeneralLaborSpeed</workSpeedStat>

      <workSkill>Crafting</workSkill>

      <effectWorking>Smith</effectWorking>

      <soundWorking>Recipe_Smith</soundWorking>

      <recipeUsers>

        <li>TableMachining</li>

      </recipeUsers>

      <unfinishedThingDef>UnfinishedGun</unfinishedThingDef>

      <researchPrerequisite>Gunsmithing</researchPrerequisite>

    </recipeMaker>

  </ThingDef>

这里就出现了recipeMaker,也就是我们本次教程所讲述的对象。至于该父定义的父定义已经与本次内容无关,故不再研究。让我们聚焦于BaseMakeableGun

>workSpeedStat:与该清单制作速度相关的小人属性,比如制作栓动步枪与全局工作速度相关

>workSkill:相关的小人技能,比如制作栓动步枪与“制作”技能相关

>effectWorking:制作时的特效,Smith是冶炼使用的一个特效,仅与视觉效果相关

>soundWorking:制作时的音效,Recipe_Smith是冶炼使用的一个特效,仅与听觉效果相关

>recipeUsers:可用的工作台,是一个list,元素内容为某个工作台的defName,比如栓动步枪可以在TableMachining(机械加工台)处制作

>researchPrerequisite:清单所需的研究项目,栓动步枪所需的研究是Gunsmithing(枪械制作)

>unfinishedThingDef:制作未完成时使用的ThingDef。也就是:

使用的unfinishedThingDef不会影响成品。

>>这个一般不自己写一个新的,直接套用原版的几个。这里为大家准备了原版的:

>>UnfinishedSculpture:未完成的雕塑

>>UnfinishedGun:未完成的枪

>>UnfinishedWeapon:未完成的武器

>>UnfinishedArmor:未完成的盔甲

>>UnfinishedTechArmor:未完成的高科技护甲

>>UnfinishedMetallicTechArmor:未完成的金属护甲

>>UnfinishedApparel:未完成的衣物

>>UnfinishedBelt:未完成的腰带

>>UnfinishedPack:未完成的背包

>>UnfinishedComponent:未完成的零部件

>>UnfinishedHealthItemProsthetic:未完成的假体

>>UnfinishedHealthItemBionic:未完成的仿生体

回到栓动步枪的def,会发现它也有自己的recipeMaker

<recipeMaker>

      <skillRequirements>

        <Crafting>5</Crafting>

      </skillRequirements>

      <displayPriority>430</displayPriority>

</recipeMaker>

此处的recipeMaker会与所有父对象的进行合并。

>skillRequirements:该清单所需的技能要求,是一个list,元素是<技能名>技能最低要求等级</技能名>,比如栓动步枪就要求最低5级手工。

>displayPriority:显示优先级,指的是在目标工作台的清单栏里,该配方的显示优先级。

除了上述提到的属性以外,recipeMaker还有一些其他的数据,这里一并送给大家:

>label:清单的名字,放空的话由系统自动生成

>productCount:产品数量,默认为1

>targetCountAdjustment:这个可以把“维持X个”型清单的基础倍率改掉

默认为1:

填50的时候:

>bulkRecipeCount:这个可以让代码帮你复制一份批量制作版本的,比如医药的为4,那就:

>useIngredientsForColor:是否把原材料的颜色作为产物的颜色,注意这个要与材料颜色区分开。

>workAmount:工作量

>defaultIngredientFilter:清单筛选器,另开一讲进行讲解

>workSkillLearnPerTick:执行该清单时每tick的学习量,是float,默认为1,也就是每秒学习60

>memePrerequisitesAny:文化DLC内容,前置的meme的def,是一个list

>researchPrerequisites:与上面提到的researchPrerequisite类似,但是这个是list,两者选一个使用

>factionPrerequisiteTags:与派系相关的tag,目前看到战争面罩啥的有这个

>mechanitorOnlyRecipe:是否只有机械师能进行该清单

>fromIdeoBuildingPreceptOnly:是否只有当前文化接受时可以制作

recipeMaker分析完毕,但还有其他参数也参与了清单的生成。

在栓动步枪的def:

<costList>

      <Steel>60</Steel>

      <ComponentIndustrial>3</ComponentIndustrial>

</costList>

这里就指出了栓动步枪的造价:60x钢铁,3x零部件

以及:

<statBases>

      <WorkToMake>12000</WorkToMake>

      <Mass>3.4</Mass>

      <AccuracyTouch>0.80</AccuracyTouch>

      <AccuracyShort>0.87</AccuracyShort>

      <AccuracyMedium>0.77</AccuracyMedium>

      <AccuracyLong>0.64</AccuracyLong>

      <RangedWeapon_Cooldown>1.25</RangedWeapon_Cooldown>

</statBases>

这里就指出了栓动步枪的工作量,注意此处的工作量单位为tick,而游戏里工作量单位为s,有一个1s=60tick的换算

  • 14
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值