健康定义 (<HediffDef>)
功能说明
健康定义(HediffDef)用于定义游戏中各种状态效果、增益或减益。它可以是一个临时的加速效果,一个持续的毒素伤害,一个永久的生命值上限提升,或者其他任何能在一段时间内或永久影响实体属性或行为的状态。Hediff可以具有多个发展阶段,并在不同的阶段表现出不同的效果。
可用参数
| 参数名 | 类型 | 默认值 | 说明 |
|---|---|---|---|
defName | 字符串 | 无 | 必需。该健康定义(Hediff)的唯一标识符。 |
label | 字符串 | (空) | 可选。该状态效果在游戏中显示的名称。 |
description | 字符串 | (空) | 可选。该状态效果的详细描述。 |
time | 浮点数 | -1.0 | 必需。状态效果的持续时间(秒)。设置为 -1 表示该效果是永久性的。 |
stages | Hediff阶段定义数组 | 无 | 可选。定义该Hediff在不同时间点所表现出的效果阶段。详见下文**stages 字段**。 |
comps | Hediff组件定义数组 | 无 | 可选。为该Hediff附加额外的功能组件,实现复杂行为。详见下文**comps 字段**。 |
示例
示例1:简单的临时加速效果
<Define>
<HediffDef>
<defName>TemporarySpeedBoost</defName>
<label>加速</label>
<description>暂时提升移动速度。</description>
<time>10</time> <!-- 持续10秒 -->
<stages>
<li>
<start>0</start> <!-- 从 Hediff 出现时立即生效 -->
<attributesOffset>
<moveSpeedPercentOffset>0.5</moveSpeedPercentOffset> <!-- 移动速度提升50% -->
</attributesOffset>
</li>
</stages>
</HediffDef>
</Define>
示例2:具有多个阶段的毒素效果
<Define>
<HediffDef>
<defName>ToxicExposure</defName>
<label>毒素暴露</label>
<description>受到毒素影响,随时间恶化。</description>
<time>30</time> <!-- 总持续30秒 -->
<stages>
<li>
<start>0</start> <!-- 0-10秒:轻微阶段 -->
<label>轻度中毒</label>
<attributesOffset>
<moveSpeedPercentOffset>-0.1</moveSpeedPercentOffset> <!-- 10%减速 -->
</attributesOffset>
</li>
<li>
<start>10</start> <!-- 10-20秒:中度阶段 -->
<label>中度中毒</label>
<attributesOffset>
<moveSpeedPercentOffset>-0.25</moveSpeedPercentOffset> <!-- 25%减速 -->
<healthOffset>-0.1</healthOffset> <!-- 每秒损失0.1生命值(通过Comp实现) -->
</attributesOffset>
</li>
<li>
<start>20</start> <!-- 20-30秒:重度阶段 -->
<label>重度中毒</label>
<attributesOffset>
<moveSpeedPercentOffset>-0.5</moveSpeedPercentOffset> <!-- 50%减速 -->
<attackPercentOffset>-0.2</attackPercentOffset> <!-- 攻击力降低20% -->
<healthOffset>-0.3</healthOffset> <!-- 每秒损失0.3生命值 -->
</attributesOffset>
</li>
</stages>
<comps>
<li>
<!-- 范例:一个自定义组件,负责根据attributesOffset.healthOffset属性造成持续伤害 -->
<compClass>HediffComp_DamageOverTime</compClass>
<properties>{"damageType":"Poison", "tickInterval":1.0}</properties>
</li>
</comps>
</HediffDef>
</Define>
Hediff阶段定义 (<HediffStageDef>)
功能说明
Hediff阶段定义(HediffStageDef)用于描述一个特定状态效果在不同发展阶段的具体属性偏移。一个具有多个阶段的Hediff可以在其持续时间内,随着时间的推移从一个阶段过渡到另一个阶段,从而表现出不同的效果。
可用参数
| 参数名 | 类型 | 默认值 | 说明 |
|---|---|---|---|
defName | 字符串 | 无 | 可选。该阶段的唯一标识符(作为匿名定义时可省略)。 |
label | 字符串 | (空) | 可选。该阶段在游戏中显示的名称。 |
description | 字符串 | (空) | 可选。该阶段的详细描述。 |
start | 浮点数 | 0.0 | 必需。该阶段开始的时间点。例如,如果所属Hediff的总持续时间为10秒,start 为5,则此阶段从Hediff出现5秒后开始生效。对于永久性Hediff (HediffDef.time 为 -1),阶段按其 start 值从小到大顺序匹配,直到某个 start 值大于当前Hediff已持续时间或匹配到最后一个阶段。 |
attributesOffset | 属性偏移定义 | (匿名定义默认值) | 必需。定义此阶段对实体属性造成的偏移量。可以是引用或匿名定义。详见下文**attributesOffset 字段**。 |
复杂参数说明
attributesOffset 字段 (属性偏移定义)
- 说明:这是一个 属性偏移定义 (
<AttributesOffsetDef>) 的匿名定义或引用。它详细说明了该 Hediff 阶段对实体各项属性(如生命值、移动速度、攻击力等)造成的具体影响,包括绝对值偏移和百分比偏移。 - 匿名定义方式:
<attributesOffset> <healthOffset>-5</healthOffset> <!-- 生命值上限减少5 --> <moveSpeedPercentOffset>0.2</moveSpeedPercentOffset> <!-- 移动速度提高20% --> </attributesOffset>
属性偏移定义 (<AttributesOffsetDef>)
功能说明
属性偏移定义(AttributesOffsetDef)是一个辅助定义,通常作为 Hediff阶段定义 (<HediffStageDef>) 中的匿名定义,用于详细指定对实体各项属性的修改量。这些修改可以是直接的数值增减(绝对值偏移),也可以是基于现有属性值的百分比增减(百分比偏移)。
可用参数
| 参数名 | 类型 | 默认值 | 说明 |
|---|---|---|---|
defName | 字符串 | 无 | 可选。该偏移定义的唯一标识符(作为匿名定义时可省略)。 |
label | 字符串 | (空) | 可选。该偏移的描述性标签。 |
description | 字符串 | (空) | 可选。该偏移的详细描述。 |
healthOffset | 浮点数 | 0.0 | 生命值上限的绝对值偏移量。 |
moveSpeedOffset | 浮点数 | 0.0 | 移动速度的绝对值偏移量。 |
attackOffset | 浮点数 | 0.0 | 攻击力的绝对值偏移量。 |
defenseOffset | 浮点数 | 0.0 | 防御力的绝对值偏移量。 |
attackSpeedOffset | 浮点数 | 0.0 | 攻击速度的绝对值偏移量。 |
attackRangeOffset | 浮点数 | 0.0 | 攻击范围的绝对值偏移量。 |
attackTargetCountOffset | 浮点数 | 0.0 | 攻击目标数量的绝对值偏移量。 |
healthPercentOffset | 浮点数 | 0.0 | 生命值上限的百分比偏移量(例如 0.1 表示 +10%,-0.5 表示 -50%)。 |
moveSpeedPercentOffset | 浮点数 | 0.0 | 移动速度的百分比偏移量。 |
attackPercentOffset | 浮点数 | 0.0 | 攻击力的百分比偏移量。 |
defensePercentOffset | 浮点数 | 0.0 | 防御力的百分比偏移量。 |
attackSpeedPercentOffset | 浮点数 | 0.0 | 攻击速度的百分比偏移量。 |
attackRangePercentOffset | 浮点数 | 0.0 | 攻击范围的百分比偏移量。 |
attackTargetCountPercentOffset | 浮点数 | 0.0 | 攻击目标数量的百分比偏移量。 |
示例
<!-- 作为 HediffStageDef 内部的匿名定义 -->
<attributesOffset>
<healthOffset>50</healthOffset> <!-- 生命值上限增加50 -->
<moveSpeedPercentOffset>0.15</moveSpeedPercentOffset> <!-- 移动速度增加15% -->
<attackOffset>10</attackOffset> <!-- 攻击力增加10 -->
<defensePercentOffset>-0.05</defensePercentOffset> <!-- 防御力降低5% -->
</attributesOffset>
Hediff组件定义 (<HediffCompDef>)
功能说明
Hediff组件定义(HediffCompDef)允许你为 健康定义 (<HediffDef>) 附加更复杂和动态的行为逻辑。每个组件都是一个独立的模块,可以实现特定功能,例如持续伤害、特殊效果触发、周期性事件等。
可用参数
| 参数名 | 类型 | 默认值 | 说明 |
|---|---|---|---|
defName | 字符串 | 无 | 可选。该组件定义的唯一标识符(作为匿名定义时可省略)。 |
label | 字符串 | (空) | 可选。该组件的描述性标签。 |
description | 字符串 | (空) | 可选。该组件的详细描述。 |
compClass | 字符串 | 无 | 必需。该组件对应的C#类名。此字符串用于在代码中实例化具体的行为组件。 |
properties | 字符串 | (空) | 可选。一个自定义属性字符串,通常是JSON格式,用于向 compClass 传递配置参数,以进一步定制组件的行为。 |
示例
这是一个定义了一个持续造成伤害的Hediff组件的例子:
<!-- 作为 HediffDef 内部的匿名定义 -->
<comps>
<li>
<compClass>HediffComp_DamageOverTime</compClass>
<properties>
{"damageAmount": 2.5, "damageInterval": 1.0, "damageType": "Burn"}
</properties>
</li>
<li>
<!-- 另一个组件,例如周期性清除其他Debuff -->
<compClass>HediffComp_PeriodicCleanse</compClass>
<properties>
{"cleanseInterval": 5.0, "cleanseChance": 0.8, "targetHediffTags": ["DebuffTag"]}
</properties>
</li>
</comps>
复杂参数说明
properties 字段 (属性字符串)
- 说明:这是一个字符串字段,用于向
compClass指定的组件传递自定义的配置数据。该字符串内容通常期望是JSON格式,以便组件可以在运行时解析这些数据来配置其行为。例如,一个伤害组件可能需要damageAmount和tickInterval参数。 - 示例:
组件的C#代码会负责解析这段JSON字符串并将其映射到自身的属性上。<properties> {"key1": "value1", "key2": 123, "key3": true, "nestedObject": {"subKey": "subValue"}} </properties>