模组:动物数据

来自Stardew Valley Wiki
跳到导航 跳到搜索

目录


数据格式

您可以通过编辑Data/FarmAnimals asset添加或编辑农场动物。

这包括一个“字符串 → 数据模型”查询,其中:

  • 键为农场动物类型的唯一字符串ID
  • 值为包含如下字段的数据模型。

主要信息

字段 效果
DisplayName 用于显示动物名称的模板字符串
House 饲养该动物的建筑的建筑物ID。动物也可以被饲养在ValidOccupantTypes字段包含相应值的建筑中。
Gender (可选) 这种动物可能的性别,现在只影响购买动物后显示的文字。比如"非常好!我马上送小<名字>去[他/她]的新家。". 默认为Female

可取的值为

效果
Male
Female
这种家畜将一直是雄性或雌性
MaleOrFemale 每个动物的性别会基于它的内部ID随机化

动物商店

此字段影响动物类型在玛妮的动物商店显示的方式。若动物具有可用的 PurchasePrice数值,则将在目录中自动列出。

字段 效果
PurchasePrice (若不可购买,则可选) 购买该动物价格的一半(真实价格是其两倍),或取负值代表不可购买此动物。默认为-1。
ShopTexture (若不可购买,则可选) 商店中展示的动物图标的素材名称。默认为LooseSprites/CursorsLooseSprites/Cursors2,这基于动物在已加载数据中的位置(如果动物可以购买,则不推荐使用默认值)。
ShopSourceRect (若不可购买,则可选) ShopTexture中欲绘制的像素区域,需指定为一个包括X, Y, WidthHeight字段的对象。应当32像素宽、16像素高。若未设置ShopTexture则忽略。
RequiredBuilding (可选) 购买该动物所需的农场建筑。由该字段的建筑升级而来的建筑亦可饲养此动物。默认为none。
UnlockCondition (可选) 指示农场动物是否出现在商店菜单中的游戏状态查询。默认为总是解锁。
ShopDisplayName (可选) 用作商店菜单中显示名称的模板字符串。默认为DisplayName字段。
ShopDescription (可选) 用作商店菜单中信息框内“描述”的模板字符串。默认为none。
ShopMissingBuildingDescription (可选)RequiredBuilding还没有建造,则使用模板字符串重写samp>ShopDescription。 默认为none。
AlternatePurchaseTypes (可选) 此动物的可能变体(例如棕色、白色、蓝色是鸡的三个变种)。此字段为包含如下字段的数据模型所组成的列表:
字段 效果
ID 当前列表中该变体的唯一字符串ID
AnimalIDs 待生成动物ID组成的列表。动物生成依赖于此字段而非ID字段。若列出多个条目,则随机选取其一。
Condition (可选) 指示该变体是否可以购买的游戏状态查询。默认为总可购买。

若列出了多个模型,则返回第一个可用的动物变体。默认为none。

孵化

字段 效果
EggItemIds (可选) 能够被放入孵化器鸵鸟孵化器以孵化此动物的物品ID。若该动物的House字段不匹配当前建筑,则自动忽略此字段。默认为none。
IncubationTime (可选) 孵化用时。默认9000分钟。
IncubatorParentSheetOffset (可选) 一个偏移量。用于设置孵化器被放入蛋后的贴图。默认为1。

原版取值为:

偏移 孵化器 鸵鸟孵化器
0 空置孵化器 空置孵化器
1 放着一个小白蛋的孵化器 放着一个大棕蛋的孵化器
2 放着一个小棕蛋的孵化器 无效(会显示祝尼魔箱贴图)
BirthText (可选) 当动物成功孵化后第一次进入农舍显示的提示信息。为模板字符串。默认为“???”。

生长

字段 效果
DaysToMature (可选) 动物成年用时。默认为1。
CanGetPregnant (可选) 动物是否可生育(无关乎性别)。默认为false。

产出

字段 效果
ProduceItemIds
DeluxeProduceItemIds
(可选) 成年动物产出的物品。只有当Deluxe*匹配成功时,DeluxeProduceItemIds字段才有效。两个字段都默认为none。

此字段由包含如下字段的数据模型组成:

字段 效果
ItemId 待产出物品的非限定性物品ID
Condition (可选) 指示当前是否可以产出该物品的游戏状态查询。默认为总可产出。
MinimumFriendship (可选) 产出该物品的最低友谊值。默认为0。

若指定多个产出物品,则每次随机选取一个物品(若高级产品适用,则优先产出高级产品)。

DaysToProduce (可选) 物品产出间隔的天数。设为1代表每天产出。默认为1。
ProduceOnMature (可选) 动物成年当日是否可产出此物品。默认为false。
FriendshipForFasterProduce (可选) 使DaysToProduce减一所需的最小友谊值。
DeluxeProduceMinimumFriendship (可选) 产出DeluxeProduceItemId所需的最小友谊值。默认为200。
DeluxeProduceCareDivisor
DeluxeProduceLuckMultiplier
(可选) 用于修饰DeluxeProduceItemId产出的数量修饰器。基于以下公式:
if happiness > 200:
   happiness_modifier = happiness * 1.5
else if happiness > 100:
   happiness_modifier = 0
else
   happiness_modifier = happiness - 100

((friendship + happiness_modifier) / DeluxeProduceCareDivisor) + (daily_luck * DeluxeProduceLuckMultiplier)

特别地:

  • DeluxeProduceCareDivisor削减友谊值和心情值的加成,因此此字段数值越低,产出高级物品的概率就越高。默认为1200。
  • DeluxeProduceLuckMultiplier增强每日运气的影响。默认为0。

例如,某动物友谊值为102,心情值为150,则默认概率为((102 + 0) / 1200) + (daily_luck * 0) = (102 / 1200) = 0.085,也就是8.5%的概率。

参见动物产出以获得更多计算信息。

HarvestType (可选) 如何收集动物产品。可用取值为:
效果
DropOvernight 过夜在动物建筑的地板上生成。
HarvestWithTool 基于HarvestTool字段,直接从动物身上收集。
DigUp 农场动物会在一天之中随机挖出它,与猪找松露逻辑相同,但产出品由ProduceItemIdsDeluxeProduceItemIds给定。

默认为DropOvernight.

HarvestTool (可选) 收集该动物产品所用工具的ID。需预先将HarvestType设为HarvestWithTool。原版能识别的工具为Milk PailShears。默认为none。
CanEatGoldenCrackers (可选) 是否可以用金色动物饼干以获取双倍输出。默认为true。

音频 & 贴图

字段 effect
Sound (可选) 动物(如抚摸时)叫声的声音提示ID。默认为none。
BabySound (可选) 动物婴儿期的叫声。重写Sound字段。若不指定Sound则无效。默认为none。
Texture (可选) 动物贴图集的素材名称。默认为Animals/<ID> (例如山羊的此字段为Animals/Goat)。即使您使用了下文提及的Skins字段,也必须确保此处的素材名称有效,因为默认外观会被自动认定为一种可用的皮肤。参见贴图集布局
HarvestedTexture (可选) 若动物当前没有待收集的产品,则使用此字段的贴图以代替Texture字段(例如给绵羊剪毛后的贴图)。默认为none。
BabyTexture (可选) 动物婴儿期的贴图,重写TextureHarvestedTexture字段。默认为none。
UseFlippedRightForLeft (可选) 当动物面向左边,是否使用它面向右边贴图的水平翻转。参见贴图集布局以获取更多信息。默认为false。
SpriteWidth
SpriteHeight
(可选) 动物贴图的像素高度和宽度(不考虑游戏内的像素缩放)。默认为16。
EmoteOffset (可选) 用于动物表情的像素位移。为一个具有XY字段的对象。默认为0。
SwimOffset (可选) 用于游泳动物贴图的像素位移。为一个具有XY字段的对象。默认为"X": 0, "Y": 112
Skins (可选) 皮肤列表。若指定该字段,则每次购入或孵化动物时都会依据Weight权重选择随机皮肤。默认的皮肤是Texture中的贴图,其权重为1。

该字段由包含如下字段的数据模型的列表组成:

字段 效果
ID 当前列表中此皮肤的唯一字符串ID
Weight (可选) 购买动物时抽取到该皮肤的权重。例如2.0的皮肤抽到的权重是1.0皮肤的两倍。默认为1.0
Texture
HarvestedTexture
BabyTexture
(可选) 若选择此皮肤,则重写主字段的对应字段。默认为主字段的值。
SleepFrame (可选) 睡觉贴图的贴图集ID。默认为12。
UseDoubleUniqueAnimationFrames (可选) 该贴图集的“特殊”动画部分是否有2帧(默认为1帧)。参见贴图集布局以获取更多信息。默认为false。

特殊动画的贴图集索引为:

  • 若为false:13(下)、14(右)、 12(左,仅当UseFlippedRightForLeft为false时可用)和 15(上)。
  • 若为true:16(下)、18(右)、22(左)和 20(上)。
ShadowWhenBaby
ShadowWhenBabySwims
ShadowWhenAdult
ShadowWhenAdultSwims
(可选) 在动物下方绘制的阴影。Baby字段仅适用于婴儿动物,而Adult字段仅适用于成体动物(例如,即使相应字段缺失,婴儿动物也不会自动使用来自成体动物字段的信息)。当动物游泳时,会使用Swims变体(若已设置),否则默认使用非游泳变体。

该字段由一个包含以下字段的数据模型组成:

字段 效果
Visible (可选) 是否绘制阴影。默认为true。
Offset (可选) 阴影位置的像素唯一。为一个有XY字段的模型。默认为0。
Scale (可选) 绘制阴影的比例。默认为2.5(游泳婴儿)、3(婴儿)、3.5(游泳成体)或 4(成体)。

玩家职业效果

字段 效果
ProfessionForFasterProduce (可选) 一个职业内部ID,能够将DaysToProduce减一。默认为none。
ProfessionForHappinessBoost (可选) 一个职业内部ID,使和动物建立好感更容易。默认为none。
ProfessionForQualityBoost (可选) 一个职业内部ID,使产生高品质产品概率更高。默认为none。

行为

字段 效果
CanSwim (可选) 农场动物被抚摸后是否可以在水里游泳。默认为false。
BabiesFollowAdults (可选) 婴儿动物是否会跟随附近的成体动物。默认为false。
GrassEatAmount (可选) 动物每天吃的草量。设为0会使动物无需进食。默认为2。
HappinessDrain (可选) 如果当天没有抚摸动物或冬天没有加热器,所减少的心情值。默认为none。
SellPrice (可选) 动物基础售价,即未经过友谊值修正的售价。默认为0。

实际售价会乘一个0.3(0心)至1.3(满心)之间的数值。

CustomFields 此条目的自定义字段

其他

字段 效果
ShowInSummitCredits (可选) 是否在玩家达成完美后的顶峰过场动画中显示该动物。默认为false。
StatToIncrementOnProduce (可选) 当动物产出物品时,游戏统计的增量。默认为none。该字段为包含如下字段的数据模型所组成的列表:
字段 效果
ID 当前列表中此模型的唯一字符串ID
StatName Game1.stats中的统计计数器字段名称。
RequiredTags (可选) 必需的上下文标签列表。只有当产出品满足该列表的所有条目时,对应的统计数据才会增加。可以使用!以反向筛选标签(例如bone_item,!fossil_item会筛选所有非化石的骨头物品)。默认为总是允许。
UpDownPetHitboxTileSize
LeftRightPetHitboxTileSize
(可选) 动物贴图在世界中的地块尺寸。用于抚摸动物。需形如<width>, <height>的。当动物面朝上下时,使用UpDownPetHitboxTileSize的尺寸;当动物面朝左右时,使用LeftRightPetHitboxTileSize的尺寸。数值可以为分数(例如奶牛的宽度为1.75)。默认为1×1地块。
BabyUpDownPetHitboxTileSize
BabyLeftRightPetHitboxTileSize
(可选) 当动物未成年时,这两个字段会重写UpDownPetHitboxTileSizeLeftRightPetHitboxTileSize字段。默认为1×1地块。

贴图集布局

解释

每个农场动物的贴图集必须正好有4列,且至少有5-7行(依赖于数据字段)。贴图尺寸依赖于SpriteWidthSpriteHeight字段;例如,默认的16像素贴图意味着贴图集必须正好为4 × 16 = 64像素宽。

所需的各行分别为

  1. 下移;
  2. 右移;
  3. 上移;
  4. 左移(仅当UseFlippedRightForLeft为false时可用);
  5. 特殊1;
  6. 特殊2 (仅当UseDoubleUniqueAnimationFrames为true时可用);
  7. 进食。

例如,默认布局(UseFlippedRightForLeftUseDoubleUniqueAnimationFrames均为false)如下:

0(向下移动1) 1(向下移动2) 2(向下移动3) 3(向下移动4)
4(向右移动1) 5(向右移动2) 6(向右移动3) 7(向右移动4)
8(向上移动) 9(向上移动) 10(向上移动) 11(向上移动)
12(未使用 13(特殊下移) 14(特殊右移) 15(特殊上移)
16(进食1) 17(进食1) 18(进食1) 19(进食1)

两字段均为true,则为

0(向下移动1) 1(向下移动2) 2(向下移动3) 3(向下移动4)
4(向右移动1) 5(向右移动2) 6(向右移动3) 7(向右移动4)
8(向上移动) 9(向上移动) 10(向上移动) 11(向上移动)
12(向左移动) 13(向左移动) 14(向左移动) 15(向左移动)
16(特殊下移1) 17(特殊下移2) 18(特殊右移1) 19(特殊右移2)
20(特殊上移1) 21(特殊上移1) 22(特殊左移1) 23(特殊左移2)
24(进食1) 25(进食1) 26(进食1) 27(进食1)

早于1.6原版布局

1.6版本前,按动物生活在畜棚还是鸡舍中有两个主要的贴图集布局。若您希望匹配先前版本的贴图集布局(例如升级一个早于1.6版本中的动物),则需要设置如下选项:

// 畜棚
"UseFlippedRightForLeft": true,
"UseDoubleUniqueAnimationFrames": false

// 鸡舍
"UseFlippedRightForLeft": false,
"UseDoubleUniqueAnimationFrames": true