技能树数据
为 Puffish 技能节点添加解锁条件,并通过奖励授予本地可习得能力。
技能条件为现有技能树节点增加一项解锁检查。独立的奖励桥接会在 Puffish Skills 更新该定义的解锁数量时授予 Origins 能力;这两种格式本身都不创建技能图。
文件放在哪里
条件从 data/<namespace>/skill_requirement/*.json 加载,包含子目录。文件以类别 ID 为键,每个类别再将节点 ID 映射到条件。文件的命名空间不决定目标类别,类别键才决定。
同一资源 ID 由常规数据包优先级选取。不同文件可共同提供目录,但不要在多个文件定义同一类别与节点组合:注册表不会合并条件,也没有稳定的覆盖结果。
Puffish Skills 管理 data/<namespace>/puffish_skills/categories/<category>/ 下的图形格式。内置主树为 isekaiskills:main。本页介绍本地条件格式及 isekaiexpansion:learnable_power 奖励数据;类别、定义和连接格式属于 Puffish,本次依据版本 0.18.2+1.20 核对相关行为。
最小示例
这是内置主条件文件的首项:
{
"isekaiskills:main": {
"aegis_t1_gate": {
"condition_type": "level",
"condition_value": 10
}
}
}
将它用作 data/isekaiexpansion/skill_requirement/main.json 的覆盖文件,会替换整个被选中的文件,因此其他内置条件也会消失。只修改这一关口时,应保留其余条目。新类别应填写真实类别 ID 与节点 ID;条件键指向节点,不是可复用的定义 ID。
字段
| 字段 | 类型 | 默认值 | 含义与限制 |
|---|---|---|---|
<category-id> | object | 条目可省略;接受空根对象 | Puffish 类别的资源标识符;示例为 isekaiskills:main。语法无效会中止当前文件。 |
<node-id> | object | 条目可省略 | 该类别技能数据中的精确节点键;示例为 aegis_t1_gate。此处不检查节点是否存在。 |
condition_type | string | 必填 | 下表中的精确小写名称;未知名称报错。 |
condition_value | integer / number / string | 必填 | 类型由条件决定。数字转换不限制游戏数值范围,也不钳制为非负值。 |
identifier | string | attribute 与 talent 必填;其他条件默认无 | 属性或天赋的资源 ID。其他条件若提供此键,仍需能解析,但不会影响检查。 |
condition_type | condition_value | identifier | 检查 |
|---|---|---|---|
level | 整数玩家等级 | 不使用 | 当前 IsekaiCore 等级达到门槛。 |
origin | 种族标识符字符串 | 不使用 | 当前种族 ID 与值相等。 |
class | 职业标识符字符串 | 不使用 | 当前职业 ID 与值相等。 |
profession | 技艺标识符字符串 | 不使用 | 当前技艺 ID 与值相等。 |
xp_amount | 整数经验数量 | 不使用 | 已储存的原版总经验达到门槛。 |
xp_level | 整数经验等级 | 不使用 | 当前原版经验等级达到门槛。 |
destiny | 整数命运值 | 不使用 | 当前命运值达到门槛。 |
adventurer_rank | 整数阶级值 | 不使用 | IsekaiCore 的阶级检查接受该门槛。 |
attribute | 数值属性门槛 | 必填属性 ID | 当前属性值达到门槛;实体没有该属性时失败。 |
talent | 整数天赋阶级 | 必填天赋 ID | 当前天赋阶级达到门槛。 |
条件不会消耗经验、命运或属性。它限制新的解锁,不限制已解锁节点的持续持有。每个条目只包含一项条件;不能通过重复条目表达 AND 或 OR。
可习得能力奖励
将以下奖励条目放入 Puffish 技能定义的奖励列表。内置鉴定定义也使用此奖励:
{
"type": "isekaiexpansion:learnable_power",
"data": {
"power": "isekaiskills:spassive_appraisal"
}
}
| 字段 | 类型 | 默认值 | 含义与限制 |
|---|---|---|---|
type | string | 必填 | 奖励类型 isekaiexpansion:learnable_power。 |
data | object | 必填 | 本地奖励负载;内部未使用的键会被拒绝。 |
power | string | 必填 | 语法有效的 Origins 能力 ID;应用奖励时才解析能力是否存在。 |
Puffish Skills 统计共用同一定义的已解锁节点,并将数量传给奖励。本地桥接通过 isekaiexpansion:learnables 来源授予能力;可升级能力以该数量作为等级,受其声明的最大等级限制。数量为 0 时移除该来源。桥接会忽略不存在的能力类型,因此奖励解析成功仍可能没有授予任何能力。
主树主动能力使用 meta.max_level、meta.cooldown 与 meta.energy,不是旧的同名顶层字段。技能树运行时介绍当前主动能力的制作路径;其现有效果见命运轮环。
校验
| 输入 | 条件加载器的行为 |
|---|---|
| 缺少必填字段、对象结构错误、未知条件名称、标识符语法错误 | 记录该资源的错误并停止处理当前文件后续内容。此前已注册的条目保留,其他资源继续加载。 |
| 条件对象中的未知字段 | 忽略;不会形成额外条件。 |
| 未知类别或节点 | 接受为查询键;只有使用完全相同类别与节点组合时才会生效。 |
| 语法有效但未注册的身份 ID | 加载时不拒绝;身份相等检查通常无法匹配。 |
| 未知属性或天赋 ID | 加载时不检查。应使用已注册 ID;之后的解析由属性或天赋系统负责,不属于加载器校验保证。 |
| 负数或过大的数字门槛 | 此处不检查范围,比较使用解析后的数值。整数条件应填写整数 JSON 数字。 |
| 跨资源重复定义类别与节点 | 独立对象并存,查询从集合中取任意首个匹配项。没有条件合并或确定性覆盖。 |
| 空根对象 | 接受,不贡献条件;重载仍会先清空旧注册表。 |
| 空文本或 JSON 语法错误 | 不是有效的条件文档;不要用它禁用条目。 |
重载不具备事务性。错误的替换可能留下部分目录,而不是保留旧目录。奖励数据采用另一种处理方式:缺少 power、标识符无效或负载中有未使用的键时,解析器将错误返回给 Puffish 类别加载流程。
重载
服务器数据重载会重建条件注册表。客户端在加入时接收完整的本地条件目录;当前接线没有对应的重载广播。修改条件后重新连接,才能让客户端提示与资格判断同步到服务器的新数据。
服务器解锁时会重新检查条件,包括依赖提供的强制解锁请求。图形重载与已保存的解锁状态由 Puffish Skills 管理;图形加载成功不代表独立的本地条件目录已经发给在线客户端。