物品定义 (ItemDef)
物品定义用于创建游戏中各种可交互的物品数据。它包含了物品的视觉表现、堆叠行为、稀有度以及可能附带的效果等属性。
参数说明
所有物品定义都必须包含 defName 字段,作为其全局唯一标识。label 和 description 字段是可选的,用于提供更友好的显示名称和详细描述。
-
<defName>- 说明: 物品定义的唯一标识符。
- 类型: 字符串
- 示例:
<defName>basicSword</defName>
-
<label>(可选)- 说明: 物品在游戏内显示的名称。
- 类型: 字符串
- 示例:
<label>新手之剑</label>
-
<description>(可选)- 说明: 物品的详细描述或背景故事。
- 类型: 字符串
- 示例:
<description>一把普通但结实的长剑。</description>
-
<FPS>- 说明: 物品动画的每秒帧数。
- 类型: 浮点数
- 默认值:
3.0 - 示例:
<FPS>6</FPS>
-
<textures>- 说明: 物品使用的纹理定义名列表。这些名称引用了 ImageDef 中已定义的纹理。
- 类型: 字符串数组
- 示例:
<textures> <li>Item_SwordFrame1</li> <li>Item_SwordFrame2</li> </textures>
-
<rarity>- 说明: 物品的稀有度。
- 类型: 枚举
- 可选值:
Common(普通),Uncommon(不寻常),Rare(稀有),Epic(史诗),Legendary(传说) - 默认值:
Common - 示例:
<rarity>Rare</rarity>
-
<maxStack>- 说明: 物品的最大堆叠数量。
- 类型: 整数
- 默认值:
10 - 示例:
<maxStack>99</maxStack>
-
<ssEquippable>- 说明: 物品是否可以被装备。
- 类型: 布尔值
- 默认值:
false - 示例:
<ssEquippable>true</ssEquippable>
-
<hediffs>- 说明: 物品在装备或使用时可能附加的效果列表。每个效果可以是已定义的 HediffDef 引用,也可以是匿名定义。
- 类型: HediffDef 数组
- 默认值: 空
- 示例: 详见下方“复杂参数:
<hediffs>”
示例
<Define>
<defName>healingPotion</defName>
<label>治疗药水</label>
<description>饮用后可以恢复少量生命值。</description>
<FPS>1</FPS>
<textures>
<li>Potion_Red</li>
</textures>
<rarity>Common</rarity>
<maxStack>5</maxStack>
<ssEquippable>false</ssEquippable>
<hediffs>
<li>
<time>5</time> <!-- 效果持续5秒 -->
<stages>
<li>
<start>0</start> <!-- 阶段从0秒开始 -->
<attributesOffset>
<healthOffset>10</healthOffset> <!-- 瞬间恢复10点生命 -->
</attributesOffset>
</li>
</stages>
</li>
</hediffs>
</Define>
<Define>
<defName>advancedSword</defName>
<label>锋利长剑</label>
<description>一把制作精良的长剑,提供额外攻击力。</description>
<FPS>2</FPS>
<textures>
<li>Sword_Advanced_Frame1</li>
<li>Sword_Advanced_Frame2</li>
</textures>
<rarity>Uncommon</rarity>
<maxStack>1</maxStack>
<ssEquippable>true</ssEquippable>
<hediffs>
<!-- 引用已定义的装备效果 -->
<li>Equip_AttackBoost</li>
</hediffs>
</Define>
复杂参数:<hediffs>
<hediffs> 字段是一个列表,用于定义当物品被使用或装备时所能施加的生命体效果(Hediff)。列表中的每个元素可以是 已注册的 HediffDef 定义名,也可以是 直接嵌套定义的匿名 HediffDef。
<HediffDef> (匿名或引用)
关于 HediffDef 的详细说明请参阅 HediffDef 文档。在此处,当作为匿名定义使用时,其包含以下子字段:
-
<time>- 说明: Hediff 的持续时间(秒)。如果设置为
-1,表示效果永久持续(例如装备效果)。 - 类型: 浮点数
- 默认值:
-1.0 - 示例:
<time>10.5</time>
- 说明: Hediff 的持续时间(秒)。如果设置为
-
<stages>- 说明: Hediff 的发展阶段列表。每个阶段定义了效果在不同持续时间段内的属性修改。
- 类型:
HediffStageDef数组 - 示例: 详见下方
<HediffStageDef>说明。
-
<comps>- 说明: 附加到此 Hediff 的组件列表,用于添加更复杂的行为和逻辑。
- 类型:
HediffCompDef数组 - 示例: 详见下方
<HediffCompDef>说明。
<HediffStageDef> (匿名定义)
HediffStageDef 定义了 Hediff 特定阶段的属性修改。它作为 stages 字段的匿名子元素出现。
-
<start>- 说明: 该阶段开始的时间点(从 Hediff 施加开始计算的秒数)。
- 类型: 浮点数
- 示例:
<start>0</start>(表示从Hediff开始时就进入此阶段)
-
<attributesOffset>- 说明: 该阶段对属性的偏移量定义。这是一个匿名
AttributesOffsetDef。 - 类型:
AttributesOffsetDef - 示例: 详见下方
<AttributesOffsetDef>说明。
- 说明: 该阶段对属性的偏移量定义。这是一个匿名
<AttributesOffsetDef> (匿名定义)
AttributesOffsetDef 用于详细定义对角色属性的各种数值和百分比偏移。它作为 attributesOffset 字段的匿名子元素出现。
-
绝对值偏移 (Added/Subtracted directly)
<healthOffset>: 生命值绝对偏移。<moveSpeedOffset>: 移动速度绝对偏移。<attackOffset>: 攻击力绝对偏移。<defenseOffset>: 防御力绝对偏移。<attackSpeedOffset>: 攻击速度绝对偏移。<attackRangeOffset>: 攻击范围绝对偏移。<attackTargetCountOffset>: 攻击目标数量绝对偏移。- 类型: 浮点数
- 默认值:
0.0 - 示例:
<healthOffset>5</healthOffset>(增加5点生命值)
-
百分比偏移 (Multiplied as a factor)
<healthPercentOffset>: 生命值百分比偏移 (例如0.1表示 +10%)。<moveSpeedPercentOffset>: 移动速度百分比偏移。<attackPercentOffset>: 攻击力百分比偏移。<defensePercentOffset>: 防御力百分比偏移。<attackSpeedPercentOffset>: 攻击速度百分比偏移。<attackRangePercentOffset>: 攻击范围百分比偏移。<attackTargetCountPercentOffset>: 攻击目标数量百分比偏移。- 类型: 浮点数
- 默认值:
0.0 - 示例:
<attackPercentOffset>0.25</attackPercentOffset>(增加25%攻击力)
<HediffCompDef> (匿名定义)
HediffCompDef 定义了附加到 Hediff 上的组件,这些组件提供了除属性修改之外的额外行为。它作为 comps 字段的匿名子元素出现。
-
<compClass>- 说明: 组件的类名,用于在运行时创建对应的组件实例。
- 类型: 字符串
- 示例:
<compClass>HediffComp_HealOverTime</compClass>
-
<properties>- 说明: 组件的初始化属性,通常是一个字符串,其具体格式和内容由
compClass决定。 - 类型: 字符串
- 示例:
<properties>amountPerSecond=1</properties>
- 说明: 组件的初始化属性,通常是一个字符串,其具体格式和内容由
<hediffs> 复杂示例
<hediffs>
<li> <!-- 定义一个持续伤害效果 -->
<time>15</time> <!-- 持续15秒 -->
<label>中毒</label>
<description>持续受到毒素伤害。</description>
<stages>
<li> <!-- 第一个阶段:开始时轻微中毒 -->
<start>0</start>
<attributesOffset>
<healthOffset>-0.5</healthOffset> <!-- 每秒损失0.5生命 -->
<moveSpeedPercentOffset>-0.1</moveSpeedPercentOffset> <!-- 移动速度降低10% -->
</attributesOffset>
</li>
<li> <!-- 第二个阶段:5秒后加重中毒 -->
<start>5</start>
<attributesOffset>
<healthOffset>-1.0</healthOffset> <!-- 每秒损失1.0生命 -->
<moveSpeedPercentOffset>-0.2</moveSpeedPercentOffset>
</attributesOffset>
</li>
</stages>
<comps>
<li> <!-- 附加一个每秒播放中毒动画的组件 -->
<compClass>HediffComp_PlayEffect</compClass>
<properties>effectName=PoisonCloud;interval=1</properties>
</li>
</comps>
</li>
<li> <!-- 引用一个已定义的 HediffDef -->
<defName>Hediff_Regeneration</defName>
</li>
</hediffs>