← 目录
此页面介绍了游戏如何存储和解析宠物数据。这是面向模组开发者的高级指南。
数据格式
您可以通过编辑 Data/Pets 素材来创建和个性化宠物或宠物变体。
此文件内含一个“字符串 → 数据模型”查询,其中:
- 键为宠物的唯一字符串ID(而非宠物变体)。原版 ID 为 Cat 和 Dog。
- 值为包含如下字段的数据模型。
基本信息
字段
|
效果
|
DisplayName
|
一个模板字符串,用于显示宠物名称(例如“猫”或“狗”)。原版的收养宠物事件中,玛妮会询问您收养猫还是狗。
|
音频和贴图
字段
|
效果
|
BarkSound
|
宠物偶尔发出的叫声的声音提示ID。
|
ContentSound
|
抚摸宠物时叫声的声音提示ID。
|
RepeatContentSoundAfter
|
(可选)两次 ContentSound 间隔的毫秒数。主要用于狗,抚摸狗时会喘气两次。默认为 -1(不重复)。
|
EmoteOffset
|
(可选)画在宠物贴图上的表情的像素偏移。为一个包含 X 和 Y 字段的数据模型。例如,这影响抚摸宠物后显示的爱心。默认为空。
|
事件
字段
|
效果
|
EventOffset
|
(可选)宠物出现在玛妮的收养事件等事件中的像素偏移,为一个包含 X 和 Y 字段的数据模型。默认为空。
|
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。只需要在当前宠物类型内唯一即可(例如 Cat 和 Dog 可以有重名的状态ID)。
|
- 方向
-
字段
|
效果
|
Direction
|
(可选)此状态开始时面部朝向(取 left、right、up 或 down),除非被 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 中的像素区域,为包含 X、Y、 Width 和 Height 字段的数据模型。
|
CanBeChosenAtStart
|
(可选)此宠物是否可以在自定义角色界面被选为初始宠物。默认为 true。
|
CanBeAdoptedFromMarnie
|
(可选)此宠物在玛妮刚开始提供宠物时是否可以被收养。默认为 true。
|
AdoptionPrice
|
(可选)在玛妮的商店购入此宠物所需价格(若可收养)。默认为 40,000。
|
BarkOverride
|
(可选)重写此变体的 BarkSound 字段(若设置)。
|
VoicePitch
|
(可选)附加于宠物叫声的音调,为相对 1 的小数。默认为 1。
|
|
高级
字段
|
效果
|
CustomFields
|
此宠物的自定义字段。
|
贴图集布局
解释
每个农场动画的贴图集必须恰有 4 列。贴图大小要求为 32x32。
各行依次为:
- 朝下运动;
- 朝右运动;
- 朝上运动;
- 朝左运动
- 特殊动画 1;
- 特殊动画 2;
- 特殊动画 3;
- 睡眠和特殊动画 4;
- 特殊动画 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)。
Modding:Pets