维护提醒

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

全站通知:

模组:农作物数据

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

目录

这个页面解释了游戏如何存储和解析农作物数据。这是模组开发人员的高级指南。

原始数据

农作物数据储存在Content\Data\Crops.xnb中,可以解压缩以编辑。作为参考,以下为1.5.1的原始数据:

格式

素材文件 Data\Crops 内含一个“字符串 → 数据模型”查询,其中:

  • 键为种子物品非限定性物品ID
  • 值为包含如下字段的数据模型:
字段 效果
Growth
Seasons 生长季节(任意组合 springsummerfallwinter)。
DaysInPhase 此作物的各生长阶段。为一个整数列表。其中数字代表每天贴图索引增加的步长。(参见 SpriteIndex)。

例如,如果某个作物的此字段为 "DaysInPhase": [ 1, 1, 1, 1 ],则其一共生长 4 天,每天都会移动到下一个贴图。

RegrowDays (可选)重新生长时间,-1 代表不能重新生长。作物会在重新生长期间保持“生长成熟”的贴图(即,DaysInPhase 最后一阶段的贴图)。默认为 -1。
IsRaised (可选)是否为不可穿行的棚架作物。默认为 false。
IsPaddyCrop (可选)此作物是否为水田作物,即,种在水边会有特殊的水田土壤贴图、较短的生长时间和自动灌溉。例如,未碾米芋头都是水田作物。默认为 false。
NeedsWatering (可选)此作物是否需要灌溉(纤维种子无需灌溉)。默认为 true。
收获
HarvestItemId 收获此作物时产出的物品。
HarvestMethod (可选)如何收获。可以为 Grab(徒手)、Scythe镰刀)。默认为 Grab
HarvestMinStack
HarvestMaxStack
(可选)产出 HarvestItemId 最少和最多数量(在 HarvestMaxIncreasePerFarmingLevelExtraHarvestChance 被应用前)。每次收获作物时,会随机选取此区间内的一个数值(包含断电)。最小值默认为 1,最大值默认为最小值。
HarvestMinQuality
HarvestMaxQuality
(可选)若非空,则这两个字段指示作物的最小和最大品质。此字段应用于品质按正常方式计算完成后,以提供品质约束。并不影响初始品质逻辑。
HarvestMaxIncreasePerFarmingLevel (可选)每个耕种冬季提供的额外收获数。会向下取整,并加到 HarvestMaxStack 上面。默认为 0。

例如,此字段取 0.2 代表五级耕种能收获的最大数量比初始多 1 个,十级耕种能收获的最大数量比初始多 2 个。

ExtraHarvestChance (可选)收获作物会产生额外收获物的概率,该值介于 0(从不)和 0.9(几乎总是)之间。这个概率会不断进行判定,直到判定失败,然后将成功判定的次数加到产出数量上。例如,西红柿使用 0.05。默认值为 0。这是一个几何级数,其期望值为 1/(1-ExtraHarvestChance) - 1,所以它会比你预期的更快增长。例如,当值为 0.9 时,这个字段的期望值为九个额外的作物。
外观
Texture 作物的贴图集的素材名称(相对于游戏的 Content 文件夹)。例如,原版作物使用 TileSheets\crops
SpriteIndex (可选)此作物在 Texture 中的贴图索引,其中每行仅有一种作物,而 0 代表第一行的作物。默认为 0。
TintColors (可选)绘制贴图时需要添加的颜色(例如,多彩的花)。每个作物会从此列表中随机取值。参见颜色格式。默认为空。
成就
CountForMonoculture (可选)玩家是否可以售出 300 个此作物来达成“单一栽培”成就。默认为 false。
CountForPolyculture (可选)玩家是否必须售出 15 个此作物才能解锁“混合栽培”成就。默认为 false。
高级
PlantableLocationRules (可选)关于何处可以播种的规则,若适用。会适用第一条匹配的规则。可以用于覆盖地点检查(例如,作物必须种在农场),但不能覆盖内建要求,例如作物需要土壤。】

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

字段 效果
Id 此列表项的唯一字符串ID
Result 若选中此规则,则此字段指示能否再次播种。可用的取值为:
  • Default: 若正常情况下允许,则可以种植。可以用于打断判定更多规则,和/或设置一条自定义的 DeniedMessage(拒绝信息)。
  • Allow: 无论正常情况如何,能够在此处种植此作物。
  • Deny:无论正常情况如何,不能在此处种植此作物。
Condition (可选)一个游戏状态查询,用于指示是否使用此列表项。默认为 true。
PlantedIn (可选)应用此规则的种植上下文。可用的取值为 Ground(直接种在地面上)、GardenPot(种在花盆里)或 Any。默认为 Any.
DeniedMessage (可选)此规则禁止种植种子时向玩家显示的模板字符串(或 null 代表使用该上下文的默认逻辑)。若 ResultDefault 导致不能种植,也会显示此字段。
CustomFields 此条目的自定义字段

下面代码添加了一个自定义的黄瓜作物(假设您已经添加了黄瓜种子和黄瓜的自定义物品):

{
    "Format": "2.7.0",
    "Changes": [
        {
            "Action": "EditData",
            "Target": "Data/Crops",
            "Entries": {
                "Example.Id_CucumberSeeds": {
                    "Seasons": [ "summer" ],
                    "DaysInPhase": [ 1, 2, 2, 2 ], // grows in 7 days with four growing sprites
                    "HarvestItemId": "Example.Id_Cucumber",
                    "Texture": "{{InternalAssetKey: assets/crops.png}}",
                    "SpriteIndex": 0
                }
            }
        }
    ]
}