跳到主要内容

PRD-007 翅膀与外观系统

文档编号:PRD-007
版本:v1.0
状态:已通过
适用端:服务端 / 客户端
关联模块:ScenesServer/Wing.cpp、tbl/Wing.xml、RecordServer

1. 背景与目标​

翅膀是外观与属性兼具的养成线。当前存在升阶失败动画与结果不一致、幻化后属性丢失、外观在他人视角不显示等问题。本 PRD 统一翅膀升阶、幻化、属性与广播。

2. 核心规则​

2.1 翅膀阶段​

  • 翅膀 0–15 阶,每阶分 5 星。
  • 升阶消耗羽毛/翅膀精华,成功率随阶数下降。
  • 失败积累祝福值,满值必成;成功后祝福值清零。
  • 升阶提供属性与外观变化,满阶解锁光效。

2.2 幻化​

  • 已解锁外观可幻化,属性取最高阶翅膀。
  • 幻化只改变模型/特效,不改变阶数。
  • 幻化外观可随时切换,无消耗。
  • 他人视角同步幻化外观。

2.3 属性​

  • 翅膀属性全角色生效,不因幻化改变。
  • 属性类型:攻击、防御、生命、暴击、抗暴。
  • 与装备/坐骑/宠物属性按加法汇总,百分比单独乘区。

3. 服务端设计​

3.1 数据结构​

struct WingData {
uint8_t stage; // 0-15
uint8_t star; // 0-5
uint32_t blessing; // 祝福值
uint32_t skin_id; // 当前幻化
std::vector<uint32_t> unlocked_skins;
};

3.2 协议​

方向协议说明
C→SCS_WingUpgrade升阶/升星
C→SCS_WingSkin幻化切换
S→CSC_WingInfo阶数/祝福/外观
S→CSC_WingResult成功/失败/祝福变化
S→CSC_EntityAppearance广播他人外观

3.3 升阶流程​

CS_WingUpgrade
→ 校验材料/金币/当前阶数
→ 扣材料
→ 计算成功率 + 祝福值
→ 成功:stage/star 提升,祝福清零,解锁外观
→ 失败:祝福增加,达到阈值必成
→ 重算属性
→ 广播 SC_WingResult + SC_EntityAppearance

3.4 外观同步​

  • 玩家进入视野时下发当前翅膀阶数与幻化 ID。
  • 幻化切换只广播 SC_EntityAppearance,不重算属性。
  • 翅膀阶数变化需同时更新属性与外观。

4. 客户端设计​

  • 翅膀面板:阶数、星级、祝福值、属性预览、升阶按钮。
  • 升阶动画:成功光效、失败祝福值增加、必成提示。
  • 外观图鉴:已解锁/未解锁,点击预览/幻化。
  • 角色界面展示翅膀模型,支持隐藏他人翅膀(性能选项)。
  • 属性对比:升阶前后差异。

5. 配置​

Wing.xml:stage、star、success_rate、blessing_max、material_cost、attr、skin_id、unlock_stage。

6. 边界与异常​

场景处理
材料不足拒绝,不扣材料
满阶/满星拒绝,提示已满
升阶中切地图完成当前结算,不中断
幻化未解锁外观拒绝
重复升阶请求幂等/加锁
断线已扣材料的结果保留,重连同步

7. 验收标准​

  • 升阶/升星/祝福值/必成规则正确。
  • 幻化只改外观,属性不变。
  • 他人视角外观同步。
  • 材料扣除与阶数变更事务一致。
  • 客户端动画结果与服务端一致。