跳转至

变异

职责

mutation 子系统定义 mutation type/branch、前置与冲突、category、variant、enchantment、 attack、身体变化、激活、获得/移除,以及 trait 如何修改 Character。

入口点

阅读 src/mutation.h、src/mutation.cpp、src/mutation_data.cpp。JSON 加载到 mutation_branch 等注册表;角色应用和 UI 位于聚焦 mutation/character 文件。

数据所有权

注册表拥有不可变 mutation 定义。Character 拥有已获得 trait、variant、激活与 charge; trait 派生缓存属于角色,必须通过常规 mutation API 失效。

依赖

mutation 依赖 JSON ID、body part、enchantment、effect、vitamin、item、martial art、spell、 角色属性、event 和存档迁移。

生命周期

定义加载、check、finalize;选择流程解析前置/冲突和 category;角色应用或移除 trait; active mutation 处理消耗;结果随角色持久化。

不变量

引用 ID 可解析;前置/冲突图有效;trait 状态与身体/属性派生缓存一致;激活消耗不能 下溢;variant 身份在存档往返后保持。

扩展点

优先使用 mutation JSON、EOC、enchantment 与既有效果。只有数据无法表达的可复用行为 才进入原生代码,并提供图验证和 character 测试。

序列化

定义从数据反序列化;已获得 trait 及状态随 character 存档。新持久状态需为旧 trait 表示提供默认与迁移。

测试

使用 mutation 测试,并按需增加 character modifier、body、enchantment、vitamin、 effect 与存档测试。覆盖获得/移除对称性和每条被改前置/冲突边。

性能

trait 派生计算出现在角色更新与 UI 路径。mutation 集合变化时失效窄缓存,不要每回合 重扫全部定义。

CCB 差异

CCB mutation 数据与旧 Mod ID 是兼容边界。上游 mutation 必须对 CCB 数据集核对依赖 图、body part 与存档。

技术债务

mutation 效果横跨数据、character cache、UI 和硬编码 hook。应把可复用行为逐步迁往 声明式契约,同时不能悄然改变已有 trait。