PRD-024 装备强化与升星
文档编号:PRD-024
版本:v1.0
状态:已通过
适用端:服务端 / 客户端
关联模块:ScenesServer/Item.cpp、tbl/EquipEnhance.xml、RecordServer
1. 背景与目标
强化是装备线的主要消耗点。当前存在成功率不透明、失败降级无提示、连续强化请求可绕过材料校验等问题。本 PRD 定义强化/升星的等级、消耗、成功率、保底、降级与转移规则。
目标
- 强化等级 0–15,升星 0–5,成功率与消耗可配置。
- 失败是否降级、是否碎装由配置决定,客户端明确提示。
- 支持一键强化到目标等级,中途可停止。
2. 核心规则
2.1 强化等级
| 等级段 | 成功率 | 失败处理 | 消耗 |
|---|---|---|---|
| +0 → +5 | 100% | 无 | 强化石 + 金币 |
| +6 → +10 | 60% → 35% | 失败降 1 级 | 强化石 + 金币 + 保护符(可选) |
| +11 → +15 | 30% → 10% | 失败降 2 级或碎装 | 高级强化石 + 保护符 |
2.2 保底
- 连续失败 N 次后,下一次成功率提升
pity_bonus,成功后重置计数。 - 保底计数按角色 + 装备槽位记录,不随装备替换清空(可配置)。
- 使用保护符时失败不降级,但保底计数仍累计。
2.3 升星
- 升星消耗同名装备碎片/星石,成功率独立于强化。
- 升星失败只扣材料,不降强化等级。
- 星级提供固定属性与特殊效果,满星解锁外观。
2.4 转移
- 强化等级可转移到同部位、同品质的新装备。
- 转移消耗转移石,目标装备继承强化等级,原装备清零。
- 星级不可转移,避免低阶装备刷星。
3. 服务端设计
3.1 模块职责
| 模块 | 职责 |
|---|---|
EnhanceManager | 强化/升星/转移逻辑 |
ItemManager | 材料扣除、装备状态更新 |
ProbabilityService | 随机与保底 |
RecordServer | 强化等级、保底计数、日志 |
3.2 数据结构
struct EnhanceState {
uint64_t item_uid;
uint8_t level; // 0-15
uint8_t star; // 0-5
uint32_t pity_count; // 连续失败次数
};
struct EnhanceRequest {
uint64_t item_uid;
uint32_t target_level; // 一键强化目标
bool use_protect;
uint32_t request_id;
};
3.3 协议
| 方向 | 协议 | 说明 |
|---|---|---|
| C→S | CS_Enhance | 单次/一键强化 |
| C→S | CS_EnhanceStop | 停止一键强化 |
| C→S | CS_StarUp | 升星 |
| C→S | CS_EnhanceTransfer | 强化转移 |
| S→C | SC_EnhanceResult | 成功/失败/降级/碎装 |
| S→C | SC_EnhanceState | 当前等级、保底计数 |
3.4 强化流程
CS_Enhance
→ 校验装备已穿戴/未锁定、目标等级合法
→ 校验材料/金币/保护符
→ 扣除材料(事务)
→ 计算成功率 + 保底加成
→ 随机判定
→ 成功:等级 +1,重置保底
→ 失败:按配置降级/碎装/不变,保底 +1
→ 更新属性、广播 SC_EnhanceResult
→ 写日志(材料、概率、结果、种子)
3.5 一键强化
- 服务端循环执行,每次单独扣材料、单独判定。
- 达到目标等级、材料不足、失败降级到阈值、玩家停止时结束。
- 一键强化过程中断线,已执行的结果保留,未执行的不扣材料。
- 客户端每收到一次结果刷新一次,不等待全部完成。
4. 客户端设计
- 强化面板:左侧装备槽,中间等级/属性预览,右侧材料与保护符。
- 成功率展示:基础成功率 + 保底加成,实时刷新。
- 动画:成功金光、失败碎裂、降级红字、碎装确认。
- 一键强化:设置目标等级、是否使用保护符、是否失败即停。
- 预览:显示强化到目标等级的属性差与预计消耗。
5. 配置与数值
tbl/EquipEnhance.xml 字段:
| 字段 | 说明 |
|---|---|
level | 当前等级 |
success_rate | 基础成功率 |
fail_downgrade | 失败降级数 |
fail_destroy | 是否碎装 |
material_group | 材料组 |
gold_cost | 金币消耗 |
pity_threshold | 保底次数 |
pity_bonus | 保底加成 |
attr_bonus | 强化属性加成 |
6. 边界与异常
| 场景 | 处理 |
|---|---|
| 连续点击强化 | 按 request_id 幂等,处理中锁定按钮 |
| 材料不足 | 拒绝,不扣任何材料 |
| 强化中装备被替换 | 锁定装备,替换请求排队或拒绝 |
| 降级到 0 以下 | 夹到 0 |
| 碎装 | 装备消失,材料不返还,邮件通知 |
| 断线 | 已扣材料的结果保留,重连同步等级 |
| 一键强化中目标等级降低 | 以当前请求为准,执行到目标或停止 |
7. 埋点与运营
- 各等级成功率、平均消耗、保底触发率、碎装率。
- 强化材料产出/消耗比,市场价格监控。
- 后台可调整成功率、保底、材料、公告。
8. 验收标准
- 强化/升星/转移按配置扣材料并更新属性。
- 失败降级、碎装、保护符、保底均正确。
- 一键强化可停止,断线不重复扣材料。
- 客户端成功率、消耗、结果与服务端一致。
- 强化日志可按角色/装备追溯。