1- 一级药物-精品药剂 -制作-5药草,1零部件- -数据-意识,数据处理,视觉能力,听觉能力,移动能力,操作能力,语言能力,进食能力,呼吸能力,血液过滤,液体过滤[,血液循环,动力供给,消化能力全部+20%
时间: 2025-07-21 14:57:39 AIGC 浏览: 22
<think>好的,用户现在需要为他们的RimWorld模组“旧日文明的遗产”添加一级药物“精品药剂”,并详细定义其制作材料和属性加成。首先,我需要回顾之前的对话,用户提到所有药品无副作用、时效永久且可叠加效果,现在具体到一级药物,需要处理制作配方、XML定义以及属性加成的实现。
首先,制作材料是5药草和1零部件,这需要在ThingDef中定义其制作配方,可能需要用到RecipeDef。然后,精品药剂需要提升多个属性各20%,这些属性可能包括游戏内置的或者用户自定义的,比如意识、数据处理等。需要确认哪些是游戏已有的属性,哪些需要自定义。
接下来,HediffDef部分需要确保效果永久、可叠加,并且每个叠加层级增加20%的属性。之前的示例中使用了statOffsets,但如果是百分比加成,可能需要用statFactors,因为statOffsets是固定数值,而statFactors是乘数。例如,如果基础属性是1,statFactor=1.2会使其变为1.2,叠加的话每次增加0.2的因子,或者每次乘以1.2,需要根据用户需求调整。
另外,用户提到“全部+20%”,可能是指每个属性提升20个百分点,还是基础值的20%。如果是后者,应该用statFactors。需要明确这一点,但根据用户描述,可能是指每个叠加层级增加20%的加成,所以可能需要用statFactors,并在Hediff的comp中处理叠加的severity与因子的关系。
然后,XML结构方面,ThingDef需要继承BaseDrug,定义制作配方,可能需要在RecipeDef中添加制作该药剂的配方,指定所需材料和数量。同时,HediffDef需要设置为永久,无副作用,并且compClasses包括处理叠加的组件,比如HediffComp_SeverityPerDay来控制最大叠加次数,或者使用自定义的comp来处理叠加时的属性变化。
还需要考虑药品的市场价值、图形路径等基本属性。此外,用户可能需要药剂在使用后立即应用效果,并且可以多次使用叠加效果,所以Hediff的severity需要每次使用增加,比如每次使用severity+1,而每个severity对应20%的属性加成。
最后,需要确保所有定义符合RimWorld的Mod结构,比如正确的文件路径和标签使用,避免语法错误。同时,可能需要处理自定义属性的StatDef,比如“数据处理能力”如果游戏中没有,需要单独定义。
总结步骤:1. 定义ThingDef,包括标签、描述、图形、制作配方;2. 定义HediffDef,设置永久效果、叠加机制和属性加成;3. 处理可能的自定义StatDef;4. 确保配方正确关联到制作站或研究。
</think>
针对一级药物「精品药剂」的需求,以下是具体的XML和逻辑实现方案(基于RimWorld 1.4+版本,兼容叠加、无副作用、永久生效特性):
### 一、药品基础定义(ThingDef)
#### 1. 药品本体(Defs/ThingDefs_Items.xml)
```xml
<ThingDef ParentName="BaseDrug">
<defName>Ancient_PremiumPotion</defName>
<label>精品药剂</label>
<description>旧日文明的基础强化药剂,永久提升多项生理与认知能力(可叠加,每级+20%)。</description>
<graphicData>
<texPath>Things/Item/Drug/Ancient_PremiumPotion</texPath> <!-- 替换为实际贴图路径 -->
<drawSize>(0.7,0.7)</drawSize>
</graphicData>
<statBases>
<MarketValue>600</MarketValue> <!-- 基于材料成本设定价值 -->
<Mass>0.3</Mass> <!-- 轻便药剂 -->
</statBases>
<ingestible>
<ingestEffect>Ancient_PremiumHediff</ingestEffect> <!-- 关联的Hediff效果 -->
<ingestSound>Chemical_Inject</ingestSound>
<outcomeDoers>
<li Class="IngestOutcomeDoer_GiveHediff">
<hediffDef>Ancient_PremiumHediff</hediffDef>
<severity>1</severity> <!-- 初始叠加等级(每使用一次+1) -->
</li>
</outcomeDoers>
</ingestible>
</ThingDef>
```
### 二、制作配方定义(RecipeDef)
需定义如何制作「精品药剂」,材料为5药草+1零部件(假设在制药台制作):
```xml
<RecipeDef>
<defName>Make_Ancient_PremiumPotion</defName>
<label>制作精品药剂</label>
<jobString>正在调配旧日文明的精品药剂...</jobString>
<workSpeedStat>SmithingSpeed</workSpeedStat> <!-- 依赖锻造速度(或自定义) -->
<workAmount>800</workAmount> <!-- 制作耗时 -->
<ingredients>
<li>
<filter>
<thingDefs>
<li>Plant_Herbs</li> <!-- 药草 -->
</thingDefs>
</filter>
<count>5</count>
</li>
<li>
<filter>
<thingDefs>
<li>ComponentIndustrial</li> <!-- 工业零部件 -->
</thingDefs>
</filter>
<count>1</count>
</li>
</ingredients>
<products>
<li>
<thingDef>Ancient_PremiumPotion</thingDef>
<count>1</count>
</li>
</products>
<requiredGiverWorkType>Chemistry</requiredGiverWorkType> <!-- 需要化学技能的殖民者 -->
<fixedBillGiverDefs>
<li>ChemistryStation</li> <!-- 在化学台制作 -->
</fixedBillGiverDefs>
</RecipeDef>
```
### 三、永久叠加效果(HediffDef)
核心是通过`severity`控制叠加等级(每使用一次+1),并通过`statFactors`实现每级20%的属性提升(`statFactors`为乘数,如`1.2`即+20%):
```xml
<HediffDef>
<defName>Ancient_PremiumHediff</defName>
<label>旧日精品强化</label>
<hediffClass>HediffWithComps</hediffClass>
<compClasses>
<li>HediffComp_Permanent</li> <!-- 永久效果 -->
<li>HediffComp_SeverityPerDay</li> <!-- 控制叠加上限 -->
</compClasses>
<compProps>
<li Class="HediffCompProperties_Permanent">
<canEverRemit>false</canEverRemit> <!-- 无法消除 -->
</li>
<li Class="HediffCompProperties_SeverityPerDay">
<severityPerDay>0</severityPerDay> <!-- 强度不随时间变化 -->
<maxSeverity>999</maxSeverity> <!-- 无叠加上限(可调整) -->
</li>
</compProps>
<statFactors>
<!-- 游戏内置属性 -->
<Consciousness>1.2</Consciousness> <!-- 意识(每级+20%) -->
<Sight>1.2</Sight> <!-- 视觉能力 -->
<Hearing>1.2</Hearing> <!-- 听觉能力 -->
<MoveSpeed>1.2</MoveSpeed> <!-- 移动能力 -->
<Manipulation>1.2</Manipulation> <!-- 操作能力 -->
<Speaking>1.2</Speaking> <!-- 语言能力 -->
<Eating>1.2</Eating> <!-- 进食能力 -->
<Breathing>1.2</Breathing> <!-- 呼吸能力 -->
<!-- 自定义属性(需先定义StatDef) -->
<Ancient_BloodFilter>1.2</Ancient_BloodFilter> <!-- 血液过滤 -->
<Ancient_LiquidFilter>1.2</Ancient_LiquidFilter> <!-- 液体过滤 -->
<Ancient_BloodCirculation>1.2</Ancient_BloodCirculation> <!-- 血液循环 -->
<Ancient_PowerSupply>1.2</Ancient_PowerSupply> <!-- 动力供给 -->
<Ancient_Digestion>1.2</Ancient_Digestion> <!-- 消化能力 -->
<Ancient_DataProcessing>1.2</Ancient_DataProcessing> <!-- 数据处理能力 -->
</statFactors>
</HediffDef>
```
### 四、自定义属性补充(StatDef)
若游戏无「血液过滤」等属性,需在`Defs/StatDefs.xml`中定义(以「血液过滤能力」为例):
```xml
<StatDef>
<defName>Ancient_BloodFilter</defName>
<label>血液过滤能力</label>
<category>Pawn</category>
<baseValue>1</baseValue>
<description>角色血液净化有害物质的效率(受旧日药剂强化影响)。</description>
<workerClass>StatWorker_Pawn_Biological</workerClass> <!-- 生物属性类型 -->
</StatDef>
```
### 关键说明
- **叠加逻辑**:每次使用药剂,Hediff的`severity`+1(通过`IngestOutcomeDoer_GiveHediff`的`severity`参数控制),而`statFactors`的乘数会自动根据`severity`计算(如`1.2^severity`)。若需线性叠加(每级固定+20%),需修改为`statOffsets`(如`<Consciousness>0.2</Consciousness>`),并确保`severity`与属性提升正相关。
- **无副作用**:HediffDef中未添加任何疾病触发(`hediffGivers`)或负面效果组件(如中毒)。
- **版本适配**:1.5+版本需检查`HediffComp_Permanent`是否被弃用(可能需替换为`HediffComp_Immunizable`并设置`immunityGainPerDay=0`)。
阅读全文
相关推荐




















