Critfall

Critfall

Critfall将Minecraft的伤害转化为骰子判定。每次造成伤害的动作都会掷一个d20,并加上修正值,对比目标的护甲等级。未命中则不造成任何伤害;命中则掷伤害骰,如2d6+3,而非固定数值。自然20为暴击,自然1为失误。

Critfall

为 Minecraft 打造的桌面角色扮演风格 d20 战斗系统 / 完全数据驱动。

Critfall 将 Minecraft 的伤害转化为骰子判定。每次造成伤害的动作都会掷出
d20 并加上调整值,与目标的护甲等级(AC)进行比较。未命中则不造成伤害;命中则掷出
伤害骰子,如 2d6+3,而非固定数值。自然 20 为暴击,自然 1 为失误。

核心特性

  • 近战、投射物和法术的命中判定均基于护甲等级,且全部在服务端运行。
  • 伤害骰子支持完整的表达式解析器(NdM+K、取最高/最低、优势/劣势)。
  • 可配置的暴击机制(最大骰面 / 双倍骰子 / 双倍总值),以及一个带权重的、可组合的失误
      系统(耐久损耗、击中最近盟友、自伤、掉落武器、绊倒、状态效果、
      击退)。
  • 针对范围效果类法术伤害的豁免检定。
  • 优雅的回退机制:未知生物会根据其护甲属性推导出护甲等级,未知武器会根据其攻击伤害
      推导出骰子设定,因此无需任何配置即可在任何整合包中正常工作。

为整合包开发者打造

  • critfall generate — 为整合包中每个生物和武器生成一个完整且可编辑的派生配置数据包,然后微调数值。
  • critfall report — 导出 CSV/JSON 格式的覆盖表(已配置 vs 回退 + 有效数值)。
  • 试运行模式 — 在保留原版伤害的同时查看掷骰结果,以便在不破坏整合包的情况下进行校准。
  • critfall inspect 和 critfall check — 查看哪个配置被选用以及原因。
  • 每项机制都是独立的开关;关闭其中一个只会恢复该机制的原版行为。提供了三种预设:Tempered、Classic、Lite。
  • 基于标签的匹配机制,支持优先级解析和命名空间通配符。

为模组开发者打造

一个稳定的公共 API(studio.modroll.critfall.api),外加可选的 KubeJS 绑定:掷骰子、在完整上下文驱动下
进行攻击、查询有效配置、触发结果表、按实体抑制自动化流水线,并支持与加载器无关的
掷骰前/后、暴击和失误事件。

加载器

支持 NeoForge 和 Fabric,适用于 Minecraft 1.21.1,并通过两者共用的游戏内测试套件验证了兼容性。

兼容性

Critfall 会拦截伤害事件,因此它位于大多数战斗模组的下游,并能与之组合使用。对于已标记伤害类型的法术模组,会进行通用处理。Iron's Spells 'n Spellbooks
和 Ars Nouveau 已被研究,并在文档中附有目标设定和调优指南,可将其作为在整合包中验证的
测试起点,而非完美集成的承诺。该工作仍在进行中。绕过伤害事件(直接设置生命值 / 自定义流水线)的模组
将不会被拦截。

采用 MIT 许可证。文档、示例数据包和 JSON 模式均可在仓库中找到。