跳转至

EOC 契约与生命周期

EOC(effect on condition)把条件解析、效果解析和触发生命周期组合起来。当前机器清单 分别索引275 个条件键和 310 个效果键。注册覆盖完整,但 handler 级参数分类仍不完整。

effect_on_condition 对象

源码清单已把该对象的字段契约标为 partial:

  • id 是明确的 mandatory 字段。
  • eoc_type 可选;无 recurrence 时默认 activation,有 recurrence 时走 recurring 规则。
  • condition、deactivate_condition、effect、false_effect 由存在性分支读取。
  • global 和 run_for_npcs 有 false 默认值。
  • required_event 只在 EVENT 分支中 mandatory;不能脱离分支把它解释为所有 EOC 都必填。

生命周期类型来自 effect_on_condition.h/.cpp:ACTIVATION、RECURRING、 AVATAR_DEATH、NPC_DEATH、PREVENT_DEATH 和 EVENT。每种类型的 talker 和上下文 来源不同,必须查对应触发路径和测试。

解析边界

  • 条件按“第一个匹配解析器获胜”的顺序分派。未知对象条件抛出 JsonError;未知字符串 条件生成恒 false predicate。
  • 效果容器接受 string、object 或 array,并同样按首个匹配解析器分派;未知效果抛出 JsonError。
  • 条件清单只有 and、or、not 三个逻辑键完全分类;其余 272 个为 partial。
  • 310 个效果键全部为 partial。这不表示它们不可用,只表示参数、默认值、嵌套、talker、 变量或上下文尚未全部获得源码级分类。

继续阅读 Talker 路由、变量与上下文、 嵌套规则,并用完整示例 Mod建立最小验证链。