外观
炼体秘境 · 技术实现
「玩家设定 →」
1. 代码位置
| 层 | 类 | 职责 |
|---|---|---|
| Controller | controller/BodyTemperingController(/api/dungeon/body-tempering) | overview / start / fight / choice / state / claim / abandon + growth:weight-upgrade / perfect-claim(压力档已删除,start 仅 realm+practice;托管已下线) |
| Service | service/BodyTemperingService | 渡劫会话状态机(单 OPEN 唯一键幂等)、逐道确定性结算、天劫二选一、结算扣次发奖、淬体值消费(金刚体魄/圆满)、旧进度迁移 |
| domain | domain/ForgeTrialRules | 10 境块映射(realmBlock)、9 道劫云表生成、评级与结算系数(评级 / 技术 / 连击中位;压力档函数已删除)、ForgeRuntime(format=2 运行态) |
| domain | domain/TribulationCloudRules | 劫云数值口径:CLOUD_COUNT=9、血量 = 固伤通道 DPS × 30s、攻击 = 0.5×双防低值 + 生命/270s、isChoiceAfter(前 3 道二选一) |
| domain | domain/ForgeGrowthRules | 金刚体魄(90 重 × 500 淬体值,固伤 +1000/重、每 15 重减伤 +1%)、圆满(10 次 × 1500,固伤 +1%/次) |
| domain | domain/BodyTemperingLayer / BodyTemperingRules | 境块元数据(所需肉身阶位、怪物境界)与材料掉落基准 |
| domain | domain/StoneStrengthRules | 力量磐石减伤档(渡劫内减伤来源之一) |
2. 数据表
| 表 | 关键列 | 说明 |
|---|---|---|
player_forge_session | player_id、session_id、status、realm、pressure_tier(恒 1,仅兼容保留)、wave_table_json(劫云表)、stance_history_json(ForgeRuntime)、sky_omens_json(已选增益)、settlement_id、reward_payload_json | 渡劫会话;「每玩家单 OPEN」唯一键保证并发开局幂等 |
player_forge_growth | purchased_weight、total_forge_value、perfect_mask/claimed_mask | 金刚体魄与圆满成长(淬体值余额 FOR UPDATE 串行化消费) |
player_body_tempering_progress | 旧 300 层进度 | 只读迁移源(首通折算 + 固伤灵砂缺口补发,migration_log 幂等) |
player_forge_migration_log | player_id、source | 迁移一次性标记(BODY_TEMPERING / BODY_TEMPERING_CAP_MATERIAL) |
3. 结算与次数
- 每日次数:
DungeonType.BODY_TEMPERING,固定 3/日(baseLimit=3,无月卡/VIP/冠名加成);claim时consumeForgeDailyLimit扣次(放弃不消耗),练习场不计次。 - 淬体值 =
forgeValueBase(70+8×(境−1) × 已破道数比例)× 评级 × 技术系数 × 连击中位;失败按已破道数 × 50% 保底。 - 金刚体魄购买支持
count连购(POST /growth/weight-upgrade,500 淬体值/重平价、90 重封顶,淬体值不足按可负担重数部分成功)。 - 材料:强化石精华 / 妖兽精血 = 境位基准 × 评级;五彩神石基础 + 首通;固伤灵砂第 2 境起首通发放。
4. 数据流简述
GET /overview 汇总次数快照、境位解锁、金刚体魄成长与 OPEN 会话(断线重连由 /state 还原);POST /start 校验境位解锁 + 渡劫减伤点数门槛(drillFlatReduction + entryBuff.getFlatReduction() ≥ (N−1)×10,不足 7612 拒绝)→ 生成 9 道劫云表(三维 ×MONSTER_STAT_MULTIPLIER=1.5)与 ForgeRuntime 落库;POST /fight FOR UPDATE 串行化后单道结算(expectedFixedDpsOnly;承伤 = max(0, 每次伤害 − 减伤点数) × (1 − min(0.45, 减免)),血量跨道延续);击破前 3 道挂起二选一(减免已选后不再返回该选项),POST /choice 落库后才放行下一道;POST /claim 以 settlement_id 原子抢占结算(扣次 → 发奖 → 写成长 → 首通进度)。
5. 相关代码
- 破界深渊(
RealmAbyssService:同构劫云体系,单场化后无二选一;不走 1.5 倍) - 金刚体魄(
ForgeGrowthRules.flatDamageReduction:每 15 重 +10 点减伤) - 磐石之力(
StoneStrengthRules.drTierFlatReduction:10 点/档,满 9 档 90 点) - 局内减免(
TribulationCloudRules.mitigationBonus:45% 上限,整局一次) - 次数中枢(
DungeonLimitService/GameRepository.consumeDailyLimit)
6. 已知差异
(减伤由「百分比、可叠加、封顶 90%」改为固定点数抵扣;新增独立的减免百分比 45%、整局仅一次;主世界百分比减伤经CombatEffectProfile.withDamageReductionRate(0) 退出渡劫结算;劫云三维 ×1.5)