外观
D13 · 破界深渊练习场门槛后门 + 破界烙印全伤作用域统一
本轮来源:2026-09-22 策划报障「破界深渊未达到入场门槛却能进」,并要求 「把破界深渊的全伤加成同步到所有玩法」。两处都是规格与实现不一致,一并留痕。
1. 差异现象
1.1 练习模式绕过解锁门槛
RealmAbyssService.startBattle 的解锁校验带 !practice 短路:
java
// 旧:挑战新层才校验解锁双门槛;练习场可自由熟悉任意已解锁层
if (!practice && layer > highestCleared) {
verifyLayerUnlocked(player, state, layer);
}1
2
3
4
2
3
4
- 层数上限
maxStartable = min(MAX_LAYER, highestCleared + 1),所以唯一会走到layer > highestCleared的就是「下一层」; - 但该分支被
!practice挡住后,练习模式对下一层不做任何门槛校验——注释说 「练习场可自由熟悉任意已解锁层」,实现却允许进未解锁层,代码自相矛盾。
线上实例(y0520 = player 10):highest_cleared_layer = 16、六法则总等级 31+45+29+38+21+40 = 204,而 G(16) = 265、G(17) = 310——17 层正式挑战被 7612 拒绝,练习模式却能直接开打。
1.2 破界烙印「全伤 +15%」作用域不统一
AbyssMarkRules.allDamageBonusRate(mask)(满 20 枚 = +15%)在实现里被部分接线:
| 玩法 | 伤害入口 | 旧口径 |
|---|---|---|
| 主世界 / 挂机 / 秘境 / 爬塔 / 长时间战斗 | CombatService 四通道 | ✅ 生效 |
| 炼体秘境 | CombatService.expectedFixedDpsOnly | ✅ 生效 |
| 真伤塔 | PlayerService.towerFixedDamage(TRUE_DAMAGE) | ✅ 生效 |
| 固伤塔 | PlayerService.towerFixedDamage(FIXED_DAMAGE) | ❌ 注释写「法则/烙印不参与」 |
| 世界BOSS | WorldBossRules.challengeDamage | ❌ 只吃世界BOSS +5% |
| 破界深渊自身 | CombatService.expectedAbyssTrueDpsOnly | ❌ 专用破界值公式,刻意排除 |
2. 代码事实(文件:行号+数值)
emberfall-server/src/main/java/com/emberfall/service/RealmAbyssService.java:186(修前)if (!practice && layer > highestCleared);verifyLayerUnlocked在:283-297抛7612(境界段 / 法则总等级两条)。RealmAbyssRules.lawGate:1–5 层 = 0、6 = 30、7 = 40、8 = 55、9 = 70、10 = 90、 11 = 110、12 = 135、13 = 160、14 = 190、15 = 225、16 = 265、17 = 310、18 = 360、 19 = 520、20 = 590;MAX_LAYER = 20。emberfall-server/src/main/java/com/emberfall/service/PlayerService.java:1120-1133(修前)固伤塔直接return calculateFinalFixedDamage(...),烙印只叠在真伤塔分支。emberfall-server/src/main/java/com/emberfall/domain/WorldBossRules.java:220-225(修前)challengeDamage(fourDimAttack, worldBossBonusRate)只乘1 + worldBossDamageBonusRate(满配 ×1.05);防秒杀下限bossOneShotSafetyFloor也只按MAX_WORLD_BOSS_DAMAGE_BONUS_RATE = 0.05反推。AbyssMarkRules.FULL_ALL_DAMAGE_BONUS = 0.15、FULL_WORLD_BOSS_BONUS = 0.05、allDamageBonusRate(mask) = 0.15 × markCount / 20。
3. 旧文档说法(docs/ 文件名)
emberfall-docs/docs/settings/combat/realm-abyss.md§3 原文: 「练习模式:不计次、无奖励、不推进层位与烙印——用来预估能否破下一层」—— 该表述把「练习进未解锁层」写成设计意图,与RealmAbyssService注释 「任意已解锁层」冲突。docs/56_双塔1-200层怪物刻度重标.md§1 摘要与通道表: 「破界烙印全伤加成(满 20 枚 +15%,固伤塔不吃)」「固伤塔 ❌ 不参与」。docs/36/docs/38:同口径的「真伤塔参与、固伤塔不参与」表述。docs/40§3.5 破界烙印:只给「全伤 +15% / 压制减免 20pp / 世界BOSS +5%」三个数字, 未写作用域,世界BOSS 的 +5% 与全伤是否叠加也未定。docs/61§2.2 v3 明确破界深渊自身出伤走「破界值」公式、expectedAbyssTrueDpsOnly刻意不吃烙印全伤——本条保持不变。
4. 影响范围
- 破界深渊:未通关层(下一层)练习/正式同门槛;已通关层仍可自由练习与 farm (farm 补石头不受影响)。受影响玩家 = 法则总等级低于
G(最高已通层 + 1)的人 (线上player 10即为此例)。 - 固伤塔:满配烙印玩家通道固伤 ×1.15(按枚数线性),塔顶卡点相应上移约 4~5 层 (
1.38^(Δ/10) = 1.15),灵砂日额度 =9.4 × 最高已通层随之小幅上升;挂机会话 入场时快照该值,存量会话在重开前仍用旧值。 - 世界BOSS:满配烙印玩家挑战伤害与「预计伤害」由 ×1.05 变为 ×1.20(加法口径); 防秒杀血量下限同步按 ×1.20 反推,保证「一击打不穿」结论继续成立(BOSS 血量只在 当日首次生成时计算,当日已生成的 BOSS 血量不变)。
- 破界深渊自身 / 余烬试炼场 / 烬塔 / 轮回战场 / 打金:数值不变(前者走破界值 专用公式,后者用固定化身 DPS 或破元百分比模型,与玩家面板解耦)。
5. 处理结论
RealmAbyssService.startBattle去掉!practice短路——未通关层一律verifyLayerUnlocked;前端RealmAbyssPanel.vue同步把「开始破界 / 练习模式」 按同一门槛置灰并给出原因文案(后端仍为权威)。PlayerService.towerFixedDamage两塔统一叠烙印全伤乘区(固伤塔不再排除)。WorldBossRules.challengeDamage新增三参重载:1 + worldBossBonusRate + allDamageBonusRate(加法,满配 ×1.20),WorldBossService的challenge与overview预计伤害同源;bossOneShotSafetyFloor改用MAX_WORLD_BOSS_TOTAL_BONUS_RATE = 0.05 + 0.15。- 破界深渊自身破界值口径、固定化身/破元百分比玩法不动。
- 文档同步:
docs/40§3.5 增加「三个出口作用域」表;docs/36/docs/38/docs/56改为「两塔都吃烙印全伤」;docs/42练习场要点补「不豁免解锁门槛」; 设定站realm-abyss/world-boss页同步,并挂本差异注记。 - 回归测试:
RealmAbyssPracticeTest(练习受门槛约束 + 已通关层仍可练习)、PlayerServiceTowerFixedDamageTest(固伤塔 ×1.15 与线性)、WorldBossRulesTest(加法口径与防秒杀下限)。