维护提醒

BWIKI 全站将于 9 月 3 日(全天)进行维护,期间无法编辑任何页面或发布新的评论。

全站通知:

模组:工具

来自星露谷物语维基
跳到导航 跳到搜索

物品

此页面解释了游戏如何存储和解析“工具”类型的物品数据。对于物品数据的概述,请参阅模组:物品数据

概览

工具是可以被玩家挥舞或使用、发挥特定功效(挖土、砍树、挤奶、剪毛等)的物品。

工具的物品类型(T) (在 C# 代码中,也写作 ItemRegistry.type_tool),其数据存储在 Data/Tools,其贴图默认存储在 TileSheets/Tools,其代码存储在 StardewValley.Tool 及其子类,例如 StardewValley.Tools.Axe

数据格式

数据素材 Data/Tools 包含一个“字符串 → 模型”查询,其中:

  • 键为非限定性物品ID
  • 值为包含如下字段的数据模型。

工具基本数据

字段 含义
ClassName StardewValley.Tools命名空间下,要创建的C#类的名称。此类必须为StardewValley.Tool的子类,且必须有无参数的构造函数。例如,将此字段的值设为Axe,游戏会自动创建一个StardewValley.Tools.Axe实例。

主要的取值为:

  • 主要工具(AxeFishingRodHoeMeleeWeaponMilkPailPan, PickaxeShearsWandWateringCan);
  • 特殊的GenericTool类型,应用来自Data/Tools的数据,且仅有通用逻辑,因此C#模组可以接入其自定义逻辑;
  • 从游戏中移除的两种工具(LanternRaft)可能无法正常运行。
Name 工具物品的内部名称。
DisplayName
Description
用于显示游戏内名称和描述的模板字符串
AttachmentSlots (可选) 工具的附件槽位数量。注意只有FishingRod工具拥有渲染和使用附件槽位的代码。默认为-1,也就是保持工具物品类所设置的默认值。
SalePrice (可选) 商店中玩家购入此物品的默认售价。默认为-1,此时需要在商店中手动设置售价。
CustomFields 此条目的自定义字段

外观

注意,如果希望在世界中正确绘制工具(即,在玩家使用它时)需要自定义代码。

字段 意图
Texture 贴图集的素材名称。
SpriteIndex 工具在贴图集Texture中的贴图索引。0代表最上一行。
MenuSpriteIndex (可选) Texture中的物品图标索引。默认为SpriteIndex

升级

字段 含义
UpgradeLevel (可选) 工具的升级等级。默认为-1,即保持与工具类所设的默认值相同。
ApplyUpgradeLevelToDisplayName (可选) 是否根据等级调整DisplayName。例如,1级的斧头为“铜斧头”。默认为false。

英语下的显示名称为:

升级等级 显示名称格式
1 Copper <display name>
2 Steel <display name>
3 Gold <display name>
4 Iridium <display name>
ConventionalUpgradeFrom (可选) 若设置,则向 UpgradeFrom 字段的列表最前面添加一条升级要求。具体而言,使用如下规则:(基于 UpgradeLevel 字段,而非基于指定的工具ID的等级):
升级等级 售价 所需物品
1 Gold.png2,000 Copper Bar.png 铜锭(5)
2 Gold.png5,000 Iron Bar.png 铁锭(5)
3 Gold.png10,000 Gold Bar.png 金锭(5)
4 Gold.png25,000 Iridium Bar.png 铱锭(5)

例如,铱斧头指定了如下值:

"ConventionalUpgradeFrom": "(T)GoldAxe"
UpgradeFrom (可选) 从克林特的铁匠铺升级工具所需要求。若指定多个条目,则使用第一个匹配的条目。

此字段为包含如下字段的数据模型所组成的列表。

字段 含义
Price (可选) 购买升级的价格。默认为0。
RequireToolId (可选)限定性或非限定性物品ID。若设置,则背包中必须有指定工具才能升级。购买升级后原工具将被摧毁。
TradeItemId (可选)限定性或非限定性物品ID。若设置,则必须给铁匠指定物品才能升级(例如原版中许多工具需要金属锭)。
TradeItemAmount (可选) 所需的TradeItemId数量。默认为1。
Condition (可选) 指示是否可以升级的游戏状态查询。默认为总是可以。

例如,下列代码相当于钢斧头的升级设置:

"UpgradeFrom": [
    {
        "RequireToolId": "(T)CopperAxe",
        "Price": 5000,
        "TradeItemId": "(O)335", // Iron Bar
        "TradeItemAmount": 5
    }
]

若希望工具总可用,则可忽略这些条件。例如:

"UpgradeFrom": [
    {
        "Price": 5000
    }
]

注意克林特需要几天时间来升级工具。若希望直接卖掉工具,则将其添加到常规商店

游戏逻辑

字段 含义
CanBeLostOnDeath 玩家晕倒后是否丢失此物品。默认为false。

扩展性

字段 含义
ModData (可选) 工具被创建时所用的模组数据值,可通过tool.modData字典获取。例如:
"ModData": {
    "PowerLevel": 9000
}
SetProperties (可选) 设置工具C#类的任意属性。例如,下面示例会禁用工具动画,且禁止工具消耗体力:
"SetProperties": {
    "InstantUse": true,
    "IsEfficient": true
}

另请参阅