跳到主要内容

PRD-004 情缘与结婚系统

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

1. 背景与目标​

情缘/结婚系统承载社交与外观付费。当前存在求婚重复扣费、婚礼场景掉线后无法重进、夫妻技能属性叠加异常等问题。本 PRD 统一求婚、婚礼、夫妻技能、纪念日与离婚。

2. 核心规则​

2.1 前置条件​

  • 双方等级 ≥ 30,单身,亲密度 ≥ 1000。
  • 亲密度通过组队、赠礼、共同副本获得,每日上限。
  • 求婚需消耗戒指/道具,对方 72 小时内答复。
  • 已婚/冷却期内不可再次求婚。

2.2 婚礼​

类型花费宾客奖励
简约金币10称号、纪念品
豪华元宝50外观、双人坐骑
限定活动道具100限时场景、全服公告
  • 婚礼场景独立实例,宾客可传送进入。
  • 婚礼持续 30 分钟,可提前结束。
  • 掉线可重进,婚礼结束后传出。

2.3 夫妻权益​

  • 夫妻技能:传送、复活、属性加成,需双方在线。
  • 夫妻任务:每日/周常,奖励共享。
  • 纪念日:结婚周年邮件奖励。
  • 离婚后技能/称号/任务失效。

2.4 离婚​

  • 协议离婚:双方确认,无冷却。
  • 单方强制:消耗道具,7 天冷却。
  • 离婚后亲密度保留 50%,称号回收,婚礼外观保留(可配置)。

3. 服务端设计​

3.1 数据结构​

struct Marriage {
uint64_t role_a, role_b;
uint32_t marry_time;
uint32_t intimacy;
uint8_t wedding_type;
uint8_t state; // proposing/married/divorced
};

struct Proposal {
uint64_t from_id, to_id;
uint32_t expire_ms;
uint32_t item_uid;
};

3.2 协议​

方向协议说明
C→SCS_Propose求婚
C→SCS_ProposeReply答复
C→SCS_WeddingCreate创建婚礼
C→SCS_WeddingEnter进入婚礼
C→SCS_Divorce离婚
S→CSC_MarriageInfo夫妻信息/亲密度
S→CSC_WeddingState婚礼状态

3.3 事务与一致性​

  • 求婚扣戒指与创建提案在同一事务;拒绝/过期退还(可配置)。
  • 结婚写双方关系、发称号、公告,必须原子完成。
  • 婚礼场景由 MiniServer 创建,结束后销毁。
  • 离婚清理夫妻技能、任务、称号,保留亲密度按配置。

4. 客户端设计​

  • 求婚:选择目标、赠送戒指、写寄语、确认。
  • 婚礼:场景入口、宾客列表、仪式流程、红包/礼物。
  • 夫妻面板:亲密度、纪念日、夫妻技能、任务。
  • 夫妻技能快捷栏,传送需对方确认。
  • 离婚:协议/强制页签,显示冷却与后果。

5. 配置​

Marriage.xml:min_level、intimacy_max、propose_expire、wedding_types、divorce_cooldown、skill_ids。

6. 边界与异常​

场景处理
对方已婚拒绝
求婚重复幂等,返回已有提案
婚礼中掉线可重进,结束传出
一方删除角色自动解除,邮件通知
离婚时婚礼进行中禁止,需结束婚礼
亲密度异常以服务端记录为准

7. 验收标准​

  • 求婚/答复/婚礼/夫妻技能/离婚全流程正确。
  • 亲密度、冷却、等级校验生效。
  • 婚礼场景掉线重进、结束清理正确。
  • 离婚后技能/称号/任务失效。
  • 扣费与关系变更事务一致。

相关阅读: