分支树系统
强化分支树允许玩家在特定星级选择不同的强化路线,实现装备的差异化成长。
概念
- 分支节点:强化路径中的分叉点,玩家需要选择一条路线继续。
- 分支路径:玩家选择的路线记录,存储在装备状态中。
- 路线影响:不同路线提供不同的属性加成、技能和展示效果。
text
+1 → +2 → +3 → +4 → +5 ─┬─ [锋利] +6 → +7 → +8
└─ [致命] +6 → +7 → +8配置结构
在强化配方中通过 branch_tree 配置分支:
yaml
id: weapon_physical
branch_tree:
fork_at: 5
branches:
sharp:
display_name: "<yellow>锋利路线"
description:
- "<gray>提升物理攻击和攻击速度"
stages:
6:
stats:
physical_attack: "15 + star * 3"
attack_speed: 2
7:
stats:
physical_attack: "20 + star * 4"
attack_speed: 3
lethal:
display_name: "<red>致命路线"
description:
- "<gray>提升暴击率和暴击伤害"
stages:
6:
stats:
physical_crit_rate: 5
physical_crit_damage: 15
7:
stats:
physical_crit_rate: 8
physical_crit_damage: 25字段说明
| 字段 | 类型 | 说明 |
|---|---|---|
branch_tree.fork_at | integer | 分叉点星级。到达此星级时玩家需要选择分支。 |
branch_tree.branches | map | 分支定义,key 为分支 ID。 |
branches.<id>.display_name | string | 分支显示名。 |
branches.<id>.description | list | 分支描述。 |
branches.<id>.stages | map | 该分支的星级阶段配置。 |
分支选择
当装备到达 fork_at 星级时:
- GUI 中显示可选分支列表。
- 玩家选择一条路线。
- 选择结果写入装备状态(
StrengthenState.branchPath)。 - 后续强化按所选分支的 stages 配置执行。
分支选择后不可更改。设计时应确保各路线有明确的定位差异。
分支对装备的影响
选择分支后,该分支的配置会影响:
- 属性累计:按分支 stages 中的 stats 累计属性。
- 技能绑定:分支 stages 中的
skillIds绑定技能。 - 展示效果:分支 stages 中的
structuredPresentation控制展示。 - 名称/Lore 操作:分支 stages 中的
nameActions/loreActions修改外观。
分支配方文件
默认资源中包含 recipes/example_branch_recipe.yml,可作为分支强化配方的参考。分支配方适合用于以下设计:
- 武器在中高星后选择输出路线,例如攻速、暴击、穿透。
- 防具在特定星级选择防御、生命、韧性或抗性路线。
- 饰品根据职业定位选择资源、技能或功能属性。
建议把普通线性强化和分支强化拆成不同配方,避免一个文件同时承担过多规则。分支节点越多,玩家理解成本越高,通常 1~2 次分叉更容易维护。
强化转移
运行时包含强化转移服务,用于把一件装备的强化状态迁移到另一件装备。转移设计通常需要额外规则约束:
- 源装备和目标装备是否必须匹配同一配方。
- 是否允许跨装备类型转移。
- 星级、锻印、分支路径和里程碑是否完整继承。
- 转移是否需要材料、货币或权限。
- 转移后源装备是否清空强化状态。
在正式开放转移玩法前,应先用低价值装备测试状态回退、属性刷新和物品展示重建,避免出现双份强化属性或旧 Lore 残留。
里程碑标记
装备状态中的 milestoneFlags 记录历史上首次达到的星级集合,用于:
- 防止重复触发广播。
- 记录装备成长历程。
- 支持成就系统集成。