Kzeroko KTM2

命运天平

建角色时分配的祝福与负担预算,以及每一对内置选项到底改变了什么。

更新于 2026/9/1 4 分钟阅读 建角特质

命运天平是你在还没开始玩之前就要花掉的特质系统。它是一份点数预算:祝福花点数,负担返点数,不平衡的方案提交不了。

在厄达斯没有白拿的好处,要想的是你愿意付哪一种代价。

编辑器怎么运作

  1. 选项按分类分组,每个分类有自己的排序权重。
  2. 每个选项都有极性(祝福或负担)、点数,以及严重度(轻微、标准等)。
  3. 选项之间可以互斥、归入排他组,或设有前置要求
  4. 调整过程中允许暂时冲突或超支,这是故意的。只有合法的方案才能提交。
  5. 提交时整份方案会重新算一遍,算不过就提交不了。

内置选项对

大多数选项挂的是普通的属性修正器。少数几项由对应的系统自己去读,因此不会出现在属性面板上,要等那个系统下一次结算才看得到效果。

食量

选项最大饱食效果
hearty_appetite(大胃)26饿死之前多 30% 储备
birdlike_appetite(小鸟胃)14更快吃饱,储备少 30%

Isekai Core 关掉了基于饱食度的自然回血,所以食量选项只改变储备,不影响恢复速度。

性格

舒适度系统在计算获取、损失与衰减时读取。

选项舒适度获取舒适度损失自然衰减
optimistic_nature(乐观)×1.20×0.80×0.80
pessimistic_nature(悲观)×0.80×1.20×1.25

气场

按阵营分别判定,只在该阵营的声望已经低到通缉线时生效。一张讨喜的脸帮不了本来就喜欢你的人。

选项效果
kind_countenance(和善)在声望低谷时缓和阵营反应
fierce_countenance(凶悍)让反应更严厉

阵营声望如何计算见声望

社交

NPC 对话的门槛由两条互相独立的社交属性判定:

属性衡量的东西选项对幅度
isekaiexpansion:eloquence(口才)言语说服与辩论silver_tongue / tongue_tied±8
isekaiexpansion:charm(魅力)存在感、亲和力、第一印象captivating_presence / unassuming_presence±8

两者分开判定。把卫兵说动和让店主对你有好感是两种能力,一套配装完全可以只擅长其中一种。

给附属模组作者

命运天平的定义是通用端内容:同一份定义既要支撑客户端的草稿预览,也要支撑服务端的校验,所以可用性判定必须在两个逻辑端上都安全。

fabric.mod.json 中声明专用入口点:

{
  "entrypoints": {
    "isekaiexpansion:fate_balance": ["example.addon.ExampleFateBalance"]
  }
}
public final class ExampleFateBalance implements FateBalanceEntrypoint {
    private static final Identifier CATEGORY = new Identifier("example", "fate_balance/traveler");
    private static final Identifier BLESSING = new Identifier("example", "sure_footed");
    private static final Identifier BURDEN = new Identifier("example", "restless_sleep");

    @Override
    public void register(FateBalanceRegistrar registrar) {
        registrar.registerCategory(new FateBalanceCategory(
                CATEGORY, "screen.example.fate_balance.category.traveler", 20));

        registrar.registerChoice(FateBalanceChoice.builder(BLESSING, FateBalancePolarity.BLESSING, 2)
                .category(CATEGORY)
                .severity(FateBalanceSeverity.STANDARD)
                .tags("travel", "movement")
                .build());

        registrar.registerChoice(FateBalanceChoice.builder(BURDEN, FateBalancePolarity.BURDEN, 1)
                .category(CATEGORY)
                .severity(FateBalanceSeverity.MINOR)
                .conflictsWith(BLESSING)
                .build());
    }
}

翻译键默认取 fate_balance.<命名空间>.<路径>….description,可用 nameKeydescriptionKey 覆盖。自定义图标使用 16×16 的源材质。

让选项产生效果

定义本身不带任何回调。订阅 FateBalanceEvents.PROFILE_CHANGED,根据事件给出的「前一组」与「当前组」不可变标识符集合去对账。监听器在同步组件更新之后运行,必须保证幂等。

只读的玩法判定用 FateBalanceApi.isSelected(player, choiceId)。受信任的服务端系统可以调用 FateBalanceApi.commit,复用与选择界面完全相同的校验、持久化、同步与事件链路。

跨选项规则通过 registerRule 注册;规则返回本地化的 FateBalanceProblem不得修改玩家状态