维护提醒

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

全站通知:

模组:被动节日

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

目录

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

概览

被动节日(passive festival)就是夜市这样的节日,其会在特定时期取代一个地点,在此期间玩家可以随时出入节日地点,且时间正常流动。

您可以通过编辑 Data/PassiveFestivals 数据素材来添加或修改被动节日。

数据格式

Data/PassiveFestivals 素材文件内含一个“字符串 → 数据模型”查询,其中:

字段 效果
DisplayName 一个模板字符串,用于在日历上显示节日名称。
Season 节日启动的季节
StartDay
EndDay
节日在当月的起止日期。
StartTime 节日每天的起始时间
StartMessage 一个模板字符串,用于在节日开始时显示一则弹出式通知
MapReplacements 节日取代的地点。虽然此字段名为替换“地图”,实际上替换的却是地点(例如,可以使用 Content PatcherCustomLocations 添加)。

此字段为一个“字符串 → 字符串”查询,其中键名为欲替代的地点,值为新地点。键和值都应当使用地点内部名称,可使用 Debug Mode 模组查看地点内部名称。下面的示例会在夜市期间将 Beach 替换为 BeachNightMarket 地点:

"MapReplacements": {
    "Beach": "BeachNightMarket"
}
Condition (可选)一个游戏状态查询,指示此节日是否可用(受其他字段限制,如 StartDayEndDay)。默认为总是可用。
ShowOnCalendar (可选)节日是否会出现在日历上,会使用与夜市相同的铱星图标。默认为 true。
DailySetupMethod
CleanupMethod
(可选)一个 C# 方法,可以在节日每天开始时(DailySetupMethod)和/或节日最后一天结束后过夜时(CleanupMethod)执行自定义逻辑。

此字段格式必须为 <full type name>: <method name>(例如 ExampleMod.Namespace.Type, ExampleMod: MethodName)。方法必须为静态方法、零参数、空返回值。

CustomFields 此节日的唯一字符串 ID

NPC日程

当一个被动节日启动时,NPC 会按如下顺序检查日程键

语法 概述
<festival ID>_<festival day> 应用于指定日期。参数 <festival day> 时相对的,因此 1 对应于节日的 StartDay
示例: NightMarket_3marriage_NightMarket_3
<festival ID> 若没有具体日期的条目,则应用此条目。
示例:NightMarketmarriage_NightMarket

若 NPC 已婚,则会向日程键添加一个 marriage_ 前缀(例如 marriage_<festival ID>_<festival day>),并忽略无此前缀的键。

另请参阅