维护提醒

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

全站通知:

模组:宠物

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

目录

此页面介绍了游戏如何存储和解析宠物数据。这是面向模组开发者的高级指南。

数据格式

您可以通过编辑 Data/Pets 素材来创建和个性化宠物或宠物变体。

此文件内含一个“字符串 → 数据模型”查询,其中:

  • 键为宠物的唯一字符串ID(而非宠物变体)。原版 ID 为 CatDog
  • 值为包含如下字段的数据模型。

基本信息

字段 效果
DisplayName 一个模板字符串,用于显示宠物名称(例如“猫”或“狗”)。原版的收养宠物事件中,玛妮会询问您收养猫还是狗。

音频和贴图

字段 效果
BarkSound 宠物偶尔发出的叫声的声音提示ID
ContentSound 抚摸宠物时叫声的声音提示ID
RepeatContentSoundAfter (可选)两次 ContentSound 间隔的毫秒数。主要用于狗,抚摸狗时会喘气两次。默认为 -1(不重复)。
EmoteOffset (可选)画在宠物贴图上的表情的像素偏移。为一个包含 XY 字段的数据模型。例如,这影响抚摸宠物后显示的爱心。默认为空。

事件

字段 效果
EventOffset (可选)宠物出现在玛妮的收养事件等事件中的像素偏移,为一个包含 XY 字段的数据模型。默认为空。
AdoptionEventLocation
AdoptionEventId
(可选)若同时设置两个字段,则可指定收养此宠物的地点和事件ID。若事件的前提条件尚未满足,则会在 20 天后强制播放此事件。默认为 Farm 和 none。
SummitPerfectionEvent (可选)在顶峰完美过场动画中如何渲染宠物。若未设置此字段,则宠物不会出现在过场动画中。

此字段为包含如下字段的数据模型:

字段 效果
SourceRect 欲显示的宠物贴图集中的矩形区域。
AnimationLength SourceRect开始算起,播放的帧数。
Motion 应用于宠物贴图的动作。
Flipped (可选)是否左右翻转宠物贴图。默认为 false。
PingPong (可选)是否在宠物贴图动画中使用“乒乓”特效。默认为false。

礼物

字段 效果
GiftChance (可选)宠物每天在互动时给出礼物的概率,礼物来自 Gifts 列表。为介于 0(从不)到 1(总是)之间的值。默认为 .2(20% 概率)。
Gifts (可选)若 GiftChance 判定成功,宠物可能给出的礼物。默认为空。

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

字段 效果
Id 此礼物的唯一字符串ID
QualifiedItemID 此礼物的限定性物品ID
Stack (可选)礼物的物品堆叠数。默认为 1。
MinimumFriendshipThreshold (可选)产出此礼物所需的友谊等级。默认为 1000(最大友谊)。
Weight (可选)随机选择礼物的权重,相对于其他礼物而言(例如,此字段为 2 的礼物被选中的概率是此字段为 1 的两倍)。默认为 1。

行为

字段 效果
Id 此列表项的唯一字符串ID
MoveSpeed (可选)宠物运动速度。默认为 2。
SleepOnBedChance
SleepNearBedChance
SleepOnRugChance
(可选)宠物在相应地点过夜的概率,为介于 0(从不)到 1(总是)之间的小数。检查顺序为“床上 > 床边 > 地毯”,若中途匹配成功则打断。若没有匹配成功,则宠物会尝试在农舍内寻找一个随机空地点;若没有空地点,则会在外面的宠物碗边上过夜。
Behaviors 此宠物可能的动作和行为,定义为状态机中的状态。任意给定时间,宠物基本上会处于一个状态,这也决定了他们可能转移到的下个状态。例如,猫能够从 Walk 转移到 BeginSitDown,但不能立刻从 Walk 转移到 SitDownLick

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

所需字段
字段 效果
Id 此状态的唯一ID。只需要在当前宠物类型内唯一即可(例如 CatDog 可以有重名的状态ID)。
方向
字段 效果
Direction (可选)此状态开始时面部朝向(取 leftrightupdown),除非被 RandomizeDirection 覆盖。
RandomizeDirection (可选)是否在此状态的开始随机指定面部朝向(若是,则覆盖 Direction)。默认为 false。
IsSideBehavior (可选)当此状态激活时是否限制面部朝向为左或右。默认为 false。
移动
字段 效果
WalkInDirection (可选)是否向面朝方向走过去。默认为 false。
MoveSpeed (可选)此状态激活时,覆盖 MoveSpeed 字段。默认为 -1(即,使用 MoveSpeed 值)。
音频
字段 效果
SoundOnStart (可选)此状态开始时播放的声音提示ID。若设为 BARK,则使用此宠物的 BarkSound 字段(或变体的 BarkOverride 字段)。默认为空。
SoundRange
SoundRangeFromBorder
(可选)若设置此字段,则只有宠物于玩家相距指定地块以内(SoundRange)或穿过屏幕边界(SoundRangeFromBorder)才会播放 SoundOnStart 。默认为 -1(没有距离检查)。
SoundIsVoice (可选)当开启“动物静音”选项时是否将 SoundOnStart 也静音。默认为 false。
状态转移:
字段 效果
AnimationEndBehaviorChanges
TimeoutBehaviorChanges
PlayerNearbyBehaviorChanges
RandomBehaviorChanges
JumpLandBehaviorChanges
(可选)一个列表,列出了条件具备时可能发生的状态转移。若列出了多条状态转移,则随机选取一条。若忽略,不会影响状态转移。

AnimationEndBehaviorChanges 用于当前行为动画结束时,TimeoutBehaviorChanges 用于设定的时间间隔结束时,PlayerNearbyBehaviorChanges 用于玩家与宠物相距两格以内时, RandomBehaviorChanges 用于每帧开始时随机选择(基于 RandomBehaviorChangeChance 字段),JumpLandBehaviorChanges 用于宠物跳跃完毕时。

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

字段 效果
Behavior
LeftBehavior
RightBehavior
UpBehavior
DownBehavior
欲开始的行为的ID。宠物首先会检查匹配器当前面部朝向的行为字段,然后尝试 Behavior。若都为空,则持续当前状态。
OutsideOnly (可选)宠物在室外是否可以进行状态转移。默认为 false。
Weight (可选)随机选择行为时此选项的权重,相对于列表中的其他项(例如,此字段为 2 的礼物被选中的概率是此字段为 1 的两倍)。默认为 1。
Duration
MinimumDuration
MaximumDuration
(可选)宠物转移到 TimeoutBehaviorChanges 字段中行为的持续时间(毫秒),若已设置。您必须指定一个具体的持续时间,或者一个包含最小值到最大值的范围,游戏将在其中选择一个随机持续时间。如果省略,则行为将没有持续时间限制。
RandomBehaviorChangeChance (可选)每一帧开始时,宠物转移到 RandomBehaviorChanges 字段中的随机行为的概率(若设置)。为介于 0(从不)到 1(总是)之间的取值。默认为 0。
动画和每帧音效:
字段 效果
Animation (可选)此状态活跃期间播放的动画帧。此字段为包含如下字段的数据模型所组成的列表:
字段 效果
Frame 动画中的帧索引。应当为从 0 开始的递增的整数。
Duration 此帧在屏幕上的停留时间(毫秒)。
HitGround (可选)当此帧开始时,是否播放宠物所在地块的脚步声音效。默认为 false。
Jump (可选)开启此帧时宠物是否要调一下,包括一个音效。默认为 false。
Sound (可选)当动画开始或循环时,播放的声音提示ID。若设为 BARK 则使用宠物的 BarkSound(或变体的 BarkOverride)字段。默认为空。
SoundRange
SoundRangeFromBorder
SoundIsVoice
参见等价行为字段的描述,这些字段无非是那些字段在此帧的类比。
Shake (可选)此状态开始时宠物颤抖的时间(毫秒)。默认为 0。
LoopMode (可选)当到达动画的最后一帧而此状态尚未结束时要做些什么。可用的取值为 Hold(保持最后一阵,直到动画结束)、Loop (从第一帧重新开始)或 None(相当于 Loop)。默认为 None
AnimationMinimumLoops
AnimationMaximumLoops
(可选)播放此动画的最短和最长时间。两个字段都必须有所作用。游戏会在它们之间(包含断电)随机选取一个值。两字段都默认为 -1(不循环)。

变体

字段 效果
Breeds 创建存档时,在自定义角色界面可以选择的外观变体。此字段为包含如下字段的数据模型所组成的列表:
字段 效果
Id 此宠物变体相对于此宠物种类的唯一ID。
Texture 此宠物变体的贴图集素材名称。贴图集应当 128 像素宽,256(猫)或 288(狗)像素高。
IconTexture 此变种图标贴图的素材名称,此图标会出现在开头的自定义角色菜单中和游戏的目录中。应当为 16x16 像素的贴图。
IconSourceRect 此图标在 IconTexture 中的像素区域,为包含 XYWidthHeight 字段的数据模型。
CanBeChosenAtStart (可选)此宠物是否可以在自定义角色界面被选为初始宠物。默认为 true。
CanBeAdoptedFromMarnie (可选)此宠物在玛妮刚开始提供宠物时是否可以被收养。默认为 true。
AdoptionPrice (可选)在玛妮的商店购入此宠物所需价格(若可收养)。默认为 Gold.png40,000
BarkOverride (可选)重写此变体的 BarkSound 字段(若设置)。
VoicePitch (可选)附加于宠物叫声的音调,为相对 1 的小数。默认为 1。

高级

字段 效果
CustomFields 此宠物的自定义字段

贴图集布局

解释

每个农场动画的贴图集必须恰有 4 列。贴图大小要求为 32x32。

各行依次为:

  1. 朝下运动;
  2. 朝右运动;
  3. 朝上运动;
  4. 朝左运动
  5. 特殊动画 1;
  6. 特殊动画 2;
  7. 特殊动画 3;
  8. 睡眠和特殊动画 4;
  9. 特殊动画 5

例如,默认布局为:

0 (朝下运动 1) 1 (朝下运动 2) 2 (朝下运动 3) 3 (朝下运动 4)
4 (朝右运动 1) 5 (朝右运动 2) 6 (朝右运动 3) 7 (朝右运动 4)
8 (朝上运动 1) 9 (朝上运动 2) 10 (朝上运动 3) 11 (朝上运动 4)
12 (朝左运动 1) 13 (朝左运动 2) 14 (朝左运动 3) 15 (朝左运动 4)
16 (特殊动画) 17 (特殊动画) 18 (特殊动画) 19 (特殊动画)
20 (特殊动画) 21 (特殊动画) 22 (特殊动画) 23 (特殊动画)
24 (特殊动画) 25 (特殊动画) 26 (特殊动画) 27 (特殊动画)
28 (睡眠 1) 29 (睡眠 2) 30 (特殊动画) 31 (特殊动画)
32 (特殊动画) 33 (特殊动画) 34 (特殊动画) 35 (特殊动画)

当从猫、狗或乌龟复制行走行为时,将会使用向下、向右、向上和向左的行。如果您不使用此行为,则可以放置其他内容。然而,在没有定义任何行为的情况下,宠物仍将使用帧 28 和 29 来睡觉,当被推动时,它将根据玩家推动的方向使用帧 0、4、8或12(例如,如果从左侧推动以朝右运动,宠物将面向右侧,使用帧 4)。