PRD-005 师徒系统
文档编号:PRD-005
版本:v1.0
状态:已通过
适用端:服务端 / 客户端
关联模块:SessionServer/Mentor.cpp、RecordServer、tbl/Mentor.xml
1. 背景与目标
师徒系统用于新手带教与老玩家留存。当前存在师傅收徒数量超限、出师奖励重复领取、解除关系后任务残留等问题。本 PRD 统一拜师、师徒任务、出师、奖励与解除。
2. 核心规则
2.1 关系条件
- 师傅等级 ≥ 50,徒弟等级 ≤ 30,等级差 ≥ 20。
- 师傅同时最多 3 个徒弟,徒弟只能有 1 个师傅。
- 双方不在同一队伍/帮会不限制,但需在线确认。
- 拜师后 24 小时内不可解除。
2.2 师徒任务
- 师徒共同完成指定任务(副本、杀怪、答题)获得师德/师徒值。
- 徒弟升级、出师时师傅获得师德。
- 师德可兑换商店道具,每周上限。
- 徒弟出师后任务关闭,未领取奖励邮件补发。
2.3 出师
- 徒弟等级 ≥ 50 且完成出师任务即可出师。
- 出师后双方获得一次性奖励,关系保留为“已出师”。
- 已出师徒弟不占师傅收徒名额(可配置)。
- 出师奖励按徒弟等级/任务完成度分档。
2.4 解除
- 师傅可单方面解除,需 24 小时确认期。
- 徒弟可申请解除,师傅 72 小时未处理自动解除。
- 解除后师徒任务进度清零,师德保留。
3. 服务端设计
3.1 数据结构
struct MentorRelation {
uint64_t master_id;
uint64_t apprentice_id;
uint8_t state; // pending/active/graduated/ended
uint32_t start_time;
uint32_t graduated_time;
uint32_t mentor_points;
};
3.2 协议
| 方向 | 协议 | 说明 |
|---|---|---|
| C→S | CS_MentorApply | 拜师/收徒申请 |
| C→S | CS_MentorReply | 同意/拒绝 |
| C→S | CS_MentorTask | 师徒任务 |
| C→S | CS_MentorGraduate | 出师 |
| C→S | CS_MentorEnd | 解除 |
| S→C | SC_MentorInfo | 关系/任务/师德 |
| S→C | SC_MentorResult | 结果 |
3.3 校验与事务
- 拜师/收徒双方确认后写关系,检查双方名额。
- 师徒任务进度由 EventBus 驱动,双方都在线/同图才计数(可配置)。
- 出师事务:更新关系、发双方奖励、写日志。
- 解除事务:清理任务、通知双方、保留师德。
4. 客户端设计
- 师徒面板:关系、任务、师德、出师进度。
- 拜师/收徒推荐:按等级/职业/在线筛选。
- 师徒任务列表:目标、进度、奖励、前往。
- 出师仪式:弹窗、奖励展示、称号。
- 解除确认:说明冷却与影响。
5. 配置
Mentor.xml:master_level、apprentice_level、level_gap、max_apprentices、graduate_level、reward_group、end_cooldown。
6. 边界与异常
| 场景 | 处理 |
|---|---|
| 师傅名额已满 | 拒绝 |
| 徒弟已有师傅 | 拒绝 |
| 双方等级变化不满足 | 已建立关系不强制解除,新申请校验 |
| 出师时徒弟离线 | 师傅可代为领取,邮件通知 |
| 重复出师 | 幂等 |
| 解除后重新拜师 | 按冷却限制 |
7. 验收标准
- 拜师/收徒/任务/出师/解除全流程正确。
- 名额、等级、冷却校验完整。
- 师徒任务双方计数一致,无单独刷进度。
- 出师奖励不重复发放。
- 解除后任务/称号/关系正确清理。