Kzeroko KTM2

身份与进阶

种族进化、职业晋升与技艺进阶——三张独立的图,一套共用规则。

更新于 2026/9/1 3 分钟阅读 种族职业技艺

「你是谁」在 KTM2 里分三层,每一层都是独立的 Origins 层,各自带一张进阶图:

模式它回答的问题
种族进化你生下来是什么
职业晋升你怎么打
技艺晋升你靠什么吃饭

三层各自推进。矮人族可以是魔法师,魔法师也可以是铁匠。

一张图是怎么运作的

每张图都是节点与边构成的有向无环图:节点是一个身份,边是一条合法的转换路径。同一层里的目标身份全部收在这一层的图上,不会在两张图里重复出现。

  1. 每一层从一个 base 节点开始。

  2. 与你当前身份相连的节点会显示出来,并各自列出需求。

  3. 满足全部需求,然后按住确认控件,按满该节点的 hold_ticks(限制在 10–200 之间)。

  4. 松手之后才提交。提交时需求、路径与目标身份会重新核对一遍,核对不过就不生效。

需求类型

需求是否消耗示例
player_level{ "type": "player_level", "amount": 20 }
experience_level可选{ "type": "experience_level", "amount": 12, "consume": true }
advancement{ "type": "advancement", "target": "minecraft:story/enter_the_nether" }
item可选{ "type": "item", "target": "minecraft:amethyst_shard", "amount": 8, "consume": true }

只有 experience_levelitem 能设 consume。玩家等级和进度成就是检查,不是代价。

当前进度

三张图都已经存在,但只有种族图是完整连通的——里面有「龙人族 → 上位龙族」这条测试分支。职业与技艺目前只有互不相连的 base 节点。这是内容还没补完,不是功能没做:把节点和边写上去,它们就会连起来。

给数据包作者

定义放在 data/<命名空间>/progression_graphs/<路径>.json

{
  "layer": "origins:origin",
  "mode": "evolution",
  "nodes": [
    {
      "id": "human_base",
      "target": "isekaiorigins:human",
      "rank": "base",
      "position": [0, 0],
      "hold_ticks": 30,
      "icon": "isekaiexpansion:textures/item/icons/hdicon_human.png",
      "name": "optional.translation.key",
      "description": "optional.translation.key",
      "requirements": []
    }
  ],
  "edges": [{ "from": "human_base", "to": "future_human_evolution" }]
}

节点 ID 是图内局部的稳定键,玩家进度按它保存——改名等于把已保存的进度弄丢。坐标是归一化的 -44,缩放与平移由界面自己处理。