物品定义 (ItemDef)

物品定义用于创建游戏中各种可交互的物品数据。它包含了物品的视觉表现、堆叠行为、稀有度以及可能附带的效果等属性。

参数说明

所有物品定义都必须包含 defName 字段,作为其全局唯一标识。labeldescription 字段是可选的,用于提供更友好的显示名称和详细描述。

  • <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>
  • <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>