外观
称号副本 · 技术实现
「玩家设定 →」
1. 代码位置
| 层 | 类 | 职责 |
|---|---|---|
| Controller | controller/TitleController(/api/title) | 副本开始(TitleDungeonStartRequest)、结算查询 |
| Service | service/TitleService | 打金结算(3 秒一跳)、挂机产出、难度(1~10 阶) |
| domain | domain/TitleRules | 副本常量:DUNGEON_TICK_SECONDS=3(3 秒一跳)、MAX_IDLE_SECONDS=86400(挂机上限)、SAND_PER_STONE=100(金沙/神石折算)、NAMING_REWARD_MULTIPLIER=6(冠名 6 倍产出) |
| domain | domain/TitleProgress | 副本状态(dungeon_active/dungeon_difficulty/dungeon_last_settle_at/dungeon_carry_seconds) |
2. 数据表
| 表 | 关键列 | 说明 |
|---|---|---|
player_title_progress | player_id、dungeon_active、dungeon_difficulty(1-10)、dungeon_last_settle_at、dungeon_carry_seconds | 副本挂机状态(V68) |
player | gold | 通用金币(V68 起唯一产出源 = 称号副本) |
player_dungeon_daily | player_id、dungeon_date、dungeon_type | 每日副本限次(V39) |
3. 配置与常量
- 副本 tick 与挂机上限:
名称 数值 说明 maxLevelMAX_LEVEL 1_000 — maxTierMAX_TIER 10 — levelsPerTierLEVELS_PER_TIER 100 — fourDimPerLevelFOUR_DIM_PER_LEVEL 5_000 — panelBonusPerLevelPANEL_BONUS_PER_LEVEL 0.001D — damagePctPerLevelDAMAGE_PCT_PER_LEVEL 0.001D 称谓对磐石之力固伤 / 天道法则真伤的百分比增幅:每级 +0.1%,满级 1000 级 = +100%。 见 docs/30 §4.4。 dungeonTickSecondsDUNGEON_TICK_SECONDS 3 — maxIdleSecondsMAX_IDLE_SECONDS 86_400L — sandPerStoneSAND_PER_STONE 100 — namingRewardMultiplierNAMING_REWARD_MULTIPLIER 6 — titlesTITLES { "", "菜鸟", "强壮的菜鸟", "小有名气", "名震一方", "威名远播", "一代宗师", "举世闻名", "传奇人物", "神话传说", "人间主宰" } — 来源:emberfall-server/src/main/java/com/emberfall/domain/TitleRules.java· commit5916da43b88f343400acfdb20c97a5cc7927fdbd - V68 金币收敛:emberfall-server/src/main/resources/db/migration/V68__title_system_and_gold_reset.sql:1源码读取失败,片段不可用
- yml 键:无
4. 数据流简述
POST /api/title/dungeon/start 选择难度(1~10 阶)并校验每日限次(player_dungeon_daily),置 dungeon_active=1。挂机期间 TitleService 每 3 秒一跳结算金币与名望(金沙按 SAND_PER_STONE 折算神石),冠名玩家产出 ×6(NAMING_REWARD_MULTIPLIER),累计挂机上限 86400 秒、跨日结转记 dungeon_carry_seconds。收益写 player.gold 与 player_title_progress,主动结算后 dungeon_active=0。
5. 已知差异
无(V68 后通用金币仅称号副本产出,其余来源已清零)
6. 相关代码
- 称号养成(
TitleService、title) - 通用金币经济(
player.gold唯一产出源) - 每日限额(
player_dungeon_daily、DailyLimitPool)