维护提醒

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

全站通知:

模组:节日数据

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

目录

此页面解释游戏如何存储和使用节日数据。这是面向模组开发者的高级指南。

数据文件

每个节日都有一个位于 Content/Data/Festivals/<season><day of month> 的数据文件。游戏使用此素材以决定当日是否有节日(若存在对应素材)、节日时间地点和 NPC 位置/对话/行为。

原始数据

节日数据可以解包以编辑。例如,如下是 1.5.4 版本的 Content/Data/Festivals/fall27 原始数据,以供参考:

格式

字段键名 解释
name 节日名称。用于显示文本,例如日历信息框或节日已开始的消息。
conditions 节日的时间地点。格式为 <location>/<start time> <end time>,其中 <location> 为内部地点名称,时间为 26 小时制(即,600 代表当日早 6 时,2600 代表次日凌晨 2 时)。
mainEvent 主事件脚本。当玩家询问节日主持人(通常为刘易斯)时触发此脚本。对于不需要询问的事件或者与刘易斯对话不触发新场景的情形,应当省略此字段。
shop 节日商店售卖的物品。参见下文商店格式
set-up 玩家第一次进入此节日触发的事件脚本。这包括将玩家传送到节日地图。此字段支持年变体
Set-Up_additionalCharacters 加载节日时生成的 NPC。这应当为四个由空格分隔的字段,形如 <NPC name> <tile X> <tile Y> <facing direction>,而不同 NPC 之间用 / 分隔。其中 <facing direction>up0down2left3,以及 right1。此属性会通过地图文件添加到生成的 NPC 上。例如,下面的代码会将阿比盖尔和莉亚并排放置,面朝下:
"Set-Up_additionalCharacters": "Abigail 15 6 down/Leah 16 6 down"
此字段支持年变体
MainEvent_additionalCharacters,或
Main-Event_additionalCharacters 以用于 冰雪节
此节日的 mainEvent 脚本运行时生成的 NPC。就像 mainEvent,对于那些不需要询问是否要启动新场景的节日而言,此字段应当被忽略。此字段格式与上文的 Set-Up_additionalCharacters 相同。
此字段支持年变体
<NPC name>_roommate 指定 NPC 如果是玩家的室友,其与玩家交谈的对话台词。此字段支持年变体,不支持花舞节,不支持 #$e# 。若未指定,则下面将使用 <NPC name>_spouse
<NPC name>_spouse 指定 NPC 如果是玩家的配偶,其与玩家交谈的对话台词。此字段支持年变体,不支持花舞节,不支持 #$e#
<NPC name> 指定 NPC 与玩家交谈的对话台词,前提是 <NPC name>_spouse 不存在或未应用。此字段支持年变体

另一个条目为节日期间过场动画的事件数据。在夏威夷宴会等情况下,这些都是相联系的。

年变体

某些字段允许使用年变体(见上表)。可以通过在键名末尾添加 _y<year variant> 来使用年变体,其中 <year variant> 为从 1 开始的逐次加 1 的、无上限的整数。例如,set-up_y1set-up_y2 会交替出现(第 1 年 set-up_y1,第 2 年 set-up_y2,第 3 年 set-up_y1,以此类推)。若一个键存在年变体,则无年变体的原始版本会被忽略(例如,假如有形如 set-up_y* 的键,则永远不会使用 set-up)。

推荐对 Set-Up_additionalCharactersMainEvent_additionalCharacters 字段使用年变体,即便您不希望使用它。
这些键对于节日数据而言是全局的,如果任何模组追加了年变体,则非变体键会失效,导致相应 NPC 无法生成。

商店格式

节日商店的每种物品都有空格分开的四个字段 <item type> <item ID> <cost> <count available>,并且此结构重复出现,以对应多个物品。字段格式:

字段 解释
<item type> 物品类型。可用取值为 BBoots(靴子)、BLBlueprint(蓝图)、BBLBBlBigBlueprint(大型蓝图)、BOBigObject (大型打造品)、F(家具)、HHat(帽子)、 OObject(物体)、RRing(戒指)、WWeapon(武器)。
<item id> 物品的贴图集索引。
<cost> 购买价格,单位为金。对于种子,这会基于利润率进行修改。
<count available> 一共能从商店购买多少物品。可设为 -1 代表无限。

地图

Many festivals use a separate map file located in the Content/Maps folder. The map to use is specified in the data file's set-up field using the changeToTemporaryMap command.

生成NPC

此功能非常脆弱,不建议用于自定义 NPC 或 节日。
请考虑转而使用数据文件下的 Set-Up_additionalCharacters 字段。

可以通过在特定图层上使用地图地块索引来将NPC添加到节日中。这可以通过在数据文件set-up 字段中使用 loadActors <layer name> 命令来启用。对于图层上存在的每个地块,地块索引将映射到 Data\NPCDispositions 素材中 NPC 索引的 4 倍,同时有一个偏移量用于确定面向方向(0 = 向上,1 = 向右,2 = 向下,或 3 = 向左)。

例如,假设该图层有一个地块索引为61的地块。那么这就是 Data\NPCDispositions 中索引为 61 / 4 = 15 的NPC,即第16个NPC,也就是莉亚。偏移量是61 % 4 = 1,所以她面向右侧。当节日加载时,Leah将被添加到该地块位置,面向右侧。

硬编码逻辑

几个原版事件在游戏代码中有硬编码的脚本逻辑。例如,刘易斯在星露谷展览会上评价农夫的摊位是在游戏代码中处理的,而不是本文记录的内容素材。

夜市的处理方式也与其他节日不同。虽然有单独的夜市地图,但 NPC 数据并不存在于这些地图上。相反,NPC会通过日程数据动态地进入和离开节日。