外观
传承继承 · 技术实现
「玩家设定 →」
1. 代码位置
| 层 | 类 | 职责 |
|---|---|---|
| Controller | controller/MountController(POST /api/player/mount/inherit)、controller/WingController(POST /api/player/wing/inherit)、controller/PetController(POST /api/player/pet/inherit) | 三系换新继承接口 |
| Service | service/MountService.inherit、service/WingService.inherit、service/PetService.inherit | 继承结算:档位校验、等级继承、材料返还 |
| domain | domain/InheritRules | 档位排序 FREE < MONTHLY < LIFETIME < VIP < NAMING(禁止平级/降级);等级继承 80%(向下取整,下限 1);进阶材料返还 50%(按累计消耗取整) |
| domain | domain/CompanionGrowthRules | 目标档位等级上限(levelCapForAdvance)封顶 |
2. 数据表
| 表 | 关键列 | 说明 |
|---|---|---|
player_mount | player_id、mount_id、grade_key、level、advance_level | 源/目标坐骑(V22/V23/V26 档位列) |
player_wing | 同上 | 翅膀(V24/V26) |
player_pet | 同上 | 灵兽(V35/V37) |
player_privilege | player_id、vip_level、monthly_card_expire_at、lifetime_card_expire_at、naming_expire_at | 档位判定依据(V8/V10/V57) |
3. 配置与常量
- 继承规则:
名称 数值 说明 levelInheritRateLEVEL_INHERIT_RATE 0.8D — materialReturnRateMATERIAL_RETURN_RATE 0.5D — gradeRankGRADE_RANK Map.of( "FREE", 0, "MONTHLY", 1, "LIFETIME", 2, "VIP", 3, "NAMING", 4 ) — 来源:emberfall-server/src/main/java/com/emberfall/domain/InheritRules.java· commit5916da43b88f343400acfdb20c97a5cc7927fdbd - 累计进阶成本(九阶整合):emberfall-server/src/main/java/com/emberfall/domain/InheritRules.java:48源码读取失败,片段不可用
- yml 键:无
4. 数据流简述
POST /api/player/mount/inherit 传入源坐骑与目标坐骑 ID,MountService 先经 InheritRules.gradeRank 校验目标档位严格高于源档位(FREE<MONTHLY<LIFETIME<VIP<NAMING)。继承后等级 = max(目标原等级, floor(源等级 × 0.8)),并按 levelCapForAdvance(目标阶) 封顶;源坐骑累计进阶材料按 50% 返还为同类材料(refundedMaterialQuantity)。事务内更新两张表并返回 InheritResultDto。三系规则一致。
5. 已知差异
无(继承规则与 V72 九阶成本整合一致)
6. 相关代码
- 坐骑/翅膀/灵兽(
CompanionGrowthRules:等级上限与九阶) - 特权档位(
PlayerPrivilege:MONTHLY/LIFETIME/VIP/NAMING 判定) - 打金权益(
PrivilegeTier:档位枚举同源概念)