维护提醒

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

全站通知:

模组:物体

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

物品数据

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

概览

物体是放在背包或世界中的物品的默认类型。根据具体数据,它们能够被放在地上、捡起、食用、售出等。

饰品的物品类型(O) (在 C# 代码中,也写作 ItemRegistry.type_object),其数据存储在 Data/Objects,其原版贴图存储在 Maps/springobjectsTileSheets\Objects_2,其代码存储在 StardewValley.Object。参见物体的贴图和索引列表

数据格式

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

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

基本信息

字段 含义
Name 物品内部名称
DisplayName
Description
用于游戏内显示名称和描述的模板字符串
Type 物品大体上的类型,比如Arch(古物)或 Minerals(矿物)。原版类型为:BasicArch(古物)、Litter(杂物等)、 MineralsQuestCraftingFishCookingSeedsRinginteractive 以及像 asdf 这样的占位值。
Category 物品类别
Price (可选) 玩家售出该物品的价格。注意:这不是玩家从商店购买的价格。默认为0。

外观

字段 含义
Texture 包含此物品贴图的素材名称。默认为Maps/springobjects
SpriteIndex Texture中的贴图索引,其中0对应左上角的贴图。

可食用性

字段 含义
Edibility (可选) 一个数值,用于决定食用该物品可以回复多少点能量(可食用性 × 2.5)和生命(可食用性 × 1.125)。可食用性为-300的物品不可食用,而-299至-1之间的值会减少生命值和能量,取值为0的物品也可食用,但不会改变生命值/能量。默认为-300。
IsDrink (可选) 该物品是否为饮品(而非食品)。默认为false。
Buffs (可选) 玩家食用该物品可能获得的诸效果。默认为none。

本字段的值为包含如下字段的一些数据模型所组成的列表:

字段 含义
Id 列表中此项目的唯一字符串ID
Duration (若设置了BuffId,则可选)效果持续时长,为游戏内的分钟数。可以设为-2,代表效果将在当天一直持续下去。
BuffId (可选) 欲应用效果的唯一ID,此ID来自Data/Buffs。也可设为null,这样就会忽略Data/Buffs,并将ID设置根据物品的IsDrink字段设为fooddrink

若应用了来自Data/Buffs的效果,且指定了其他字段,则效果数据会按如下规则混合:

字段 效果
Duration
IconTexture
SpriteIndex
GlowColor
若指定此字段,则使用Data/Objects中的数据,而不是Data/Buffs中的数据。若忽略,则默认使用来自Data/Buffs的数据。
CustomAttributes 同时使用来自Data/ObjectsData/Buffs的数值。(例如,Data/Objects中的速度+1和Data/Buffs中的速度+1会导致速度+2)。
IsDebuff 使用Data/Objects中的数值。
IsDebuff (可选) 此效果是否为负面效果,若是,则戴上结实戒指会减免一半时长。默认为false。
IconTexture (可选) 欲加载的图标所在的资源名称。该资源必须包含一个或以上的16x16图标。当资源包含多个图标时,这些图标需要排布在一个尺寸任意的网格中。若忽略,则会基于BuffIdCustomAttributes字段绘制默认图标。
SpriteIndex (可选) 效果图标在IconTexture中的索引。0代表左上角。默认为0。
GlowColor (可选) 玩家获得此效果后的辉光颜色。参见颜色格式。默认为none。
CustomAttributes 自定义效果参数(若有)。

此字段的值为一个包含如下字段的数据模型,它由下列中的某些字段组成:

字段 含义
FarmingLevel
FishingLevel
ForagingLevel
LuckLevel
MiningLevel
(可选) 效果对技能等级的增量。负面效果此值为负。默认为0。
Attack
Defense
MagneticRadius
MaxStamina
Speed
(可选) 效果对玩家攻击防御磁性半径、最大体力速度的增量。负面效果此值为负。默认为0。
CustomFields (可选) 此条目的 自定义字段

晶球、远古斑点

字段 含义
GeodeDrops
GeodeDropsDefaultItems
(可选) 将此物品(如晶球)敲开时可能掉落的物品。只需指定二者其一,即可自动启用该物品的晶球行为。

您可以仅指定其中一个字段,也可同时指定两个字段:

  • GeodeDrops应设为可能掉落的物品。默认为none。此字段的值为包含以下字段的数据模型:
    字段 含义
    公共字段 参见物品生成字段以获得晶球掉落物的通用物品字段。

    若此字段被设为返回多个物品的物品查询,则随机返回一个掉落物。

    Chance (可选) 在其他字段均匹配的条件下,掉落该物品的概率。为 0(不可能)至 1(必然)之间的小数。默认为1。
    SetFlagOnPickup (可选) 当玩家捡起该掉落物时,设置的信件标识
    Precedence (可选) 检查该掉落物在所有可能掉落物中的优先级。越小,优先级越高。可以为负值。具有相同优先级的掉落物会按其在列表中的顺序依次检查。默认为0。

    为了一致性,原版掉落物主要使用如下数值:

    • -1000:特殊物品,例如金色头盔
    • 0:正常物品。
  • GeodeDropsDefaultItems 是否从默认的晶球的掉落物中随机选取(例如粘土煤炭铜矿石铱矿石等)。默认为false。

若同时指定两个字段,则会以50%的概率给出自定义掉落物或默认掉落物。但若指定了自定义掉落物GeodeDrops字段,却没有任何匹配的掉落物,则强制使用默认掉落物GeodeDropsDefaultItems,无论该字段是否为true。

ArtifactSpotChances (可选) 若为古物(即Type字段为Arch),挖掘远古斑点获得它的概率。

该字段为一个“字符串 → 数据模型”查询,其中:

  • 键为的地点内部名称;
  • 值为若检查到此物品,生成此物品的概率,为0(不可能)至 1(必然)之间的小数。

上下文标签 & 排除规则

field purpose
ContextTags (可选) 欲为该物品添加的自定义#上下文标签。此处“自定义”是相对于那些自动添加的上下文标签而言的。此字段应为一个列表,例如:
"ContextTags": [ "color_yellow", "fish_ocean", "fish_upright", "season_summer" ]
CanBeGivenAsGift (可选)此物品是否可以赠送给 NPC 。默认为 true。
CanBeTrashed (可选)此物品是否能放进背包的垃圾桶。默认为 true。
ExcludeFromRandomSale (可选) 商店选取随机物品售卖时,是否排除该物品。默认为 false。
ExcludeFromFishingCollection
ExcludeFromShippingCollection
(可选) 是否将此物品从“钓鱼”/“售出的物品”收集品菜单中排除,也会影响完美。默认为false,此时会使用通常情况的要求(例如,古物通常情况下不会计入“售出的物品”)。

高级

字段 含义
CustomFields (可选) 此条目的自定义字段

不可获得物品

贴图集和数据素材中存在某些物品正常情况下无法放进玩家背包(例如 twig 和 lumber),且有一些贴图没有对应的物品数据。数据素材中存在多个名为 WeedsStone 的条目,但是玩家正常情况下只能获取一种 Stone(ID 为 390 的“石头”),不能获取 Weeds

对于C#模组

StardewValley.Object 类型表示了物体类型的物品。

此类型提供了许多用于简化通用逻辑的方法。如下是一些值得注意的例子:

方法 效果
object.IsBar() 此物品是否为铜锭铁锭金锭铱锭放射性矿锭之一。
object.IsBreakableStone() 此物品是否为可以被十字镐敲碎的石头类杂物。
object.IsFence() 此物品是否为fence.
object.IsFruitTreeSapling() 此物品是否为果树树苗。此方法检查 Data\fruitTrees 字段,因此也适用于自定义果树。
object.IsHeldOverHead() 玩家在物品栏中选中该物品时,是否显示举着此物品的图像。默认为 true(除了家具)。
object.IsIncubator() 此物品放置在建筑中时是否可以孵化农场动物
object.IsTapper() 此物品是否为树液采集器重型树液采集器
object.IsTeaSapling() 此物品是否为茶苗
object.IsTwig() 此物品是否为树枝类杂物。
object.IsWeeds() 此物品是否为杂草类杂物。

另请参阅