维护提醒

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

全站通知:

模组:电话

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

目录

此页面解释如何编辑和创建电话(来电和去电)。这是面向模组开发者的高级指南。

来电

您可以通过编辑 Data/IncomingPhoneCalls 素材来添加或自定义来电。

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

  • 键名为此来电的唯一字符串 ID
  • 值为包含如下字段的数据模型所组成的列表:
字段 效果
Dialogue 玩家接电话时显示的对话文本。可以使用完整的对话格式(包括问题和回答选项)。
FromNpc (可选)来电 NPC 的内部名称。若指定此字段,则会显示此 NPC 的姓名和肖像。
FromPortrait (可选)欲显示的肖像的贴图集素材名称(例如 Portraits/Abigail)。若也指定了 FromNpc,则此字段的肖像会覆盖来电 NPC 的默认肖像。若 FromNpcFromDisplayName 都为空,则会显示此字段指定的肖像,而姓名显示为 ??? 。
FromDisplayName (可选)一个模板字符串,用于显示来电 NPC 的姓名。若指定了 FromNpc,则此字段的姓名会覆盖来电 NPC 的默认姓名。
MaxCalls (可选)玩家能收到此来电的最大次数。设为 -1 代表无限制,默认为 1。
TriggerCondition
RingCondition
(可选)一个游戏状态查询,指示是否可以发起此来电(TriggerCondition)或此来电是否响铃(RingCondition)。

玩家是否能接到电话取决于这两个字段: 在将来电推送给全部玩家之前,首先会检查房主的 TriggerCondition,然后再分别检查每个玩家的 RingCondition 字段,以决定其电话是否响铃。

IgnoreBaseChance (可选)此字段若为 true,则游戏在检查是否要触发来电时,会忽略 1% 的基础概率判断,而仅检查此来电是否可用。默认为 false。
SimpleDialogueSplitBy (可选,专用)若设置此字段,则认为此电话不需要 NPC 姓名和肖像,且使用此字段指定的字符来折行。例如,"SimpleDialogueSplitBy": "#" 会将 Box A#Box B#Box C 分为三个依次出现的对话框。

大多数情况您应当忽略此字段。如有需要,请使用 Dialogue 中的常规对话格式。此字段主要用于支持旧版来电。

CustomFields 此来电的自定义字段

C#自定义处理器

C# 模组可以实现 StardewValley.PhoneCalls.IPhoneHandler 并将其添加至 Phone.PhoneHandlers,以控制来电和去电:

/// <summary>The mod entry point.</summary>
internal sealed class ModEntry : Mod
{
    /// <inheritdoc />
    public override void Entry(IModHelper helper)
    {
        Phone.PhoneHandlers.Add(new CustomPhoneHandler());
    }
}

/// <summary>A custom phone handler.</summary>
internal sealed class CustomPhoneHandler : IPhoneHandler
{
    ...
}

参见反编译代码中的 StardewValley.PhoneCalls.DefaultPhoneHandler 以获得实现的示例。