210 lines
12 KiB
Markdown
210 lines
12 KiB
Markdown
# 修炼系统设计(D5:修炼循环 + D9:大境界突破)
|
||
|
||
> 对应开发计划表 D5(8/7):① 修为随时间增长(资质×灵气)② 境界门槛 ③ 突破判定;D9(8/11)追加大境界突破。
|
||
> 交付标准:弟子自动修炼,可突破;练气圆满后玩家手动花费灵石突破大境界。
|
||
> 本文档只描述设计,不包含代码。
|
||
> 状态:D5 部分已实现(每日结算 → 修为达门槛升层 → 瓶颈掷骰判定,失败扣 20%;13 层圆满封顶;修为进度已在管理界面展示);大境界突破已实现(练气圆满 → 手动花费灵石 → 筑基及以上大境界,失败灵石不返还 + 修为倒退;配置驱动,详见第四章)
|
||
|
||
---
|
||
|
||
## 一、核心循环
|
||
|
||
```
|
||
每日推进 → 修为增长(资质×灵根容量×天灵根×灵气浓度)→ 达到层门槛 → 升层/突破判定 → 境界推进
|
||
```
|
||
|
||
- 纯挂机机制:弟子自动修炼,玩家无需操作
|
||
- 修炼只在游戏时间推进时进行(TimeSystem.day_passed),暂停/弹窗期间冻结
|
||
|
||
---
|
||
|
||
## 二、修炼速度
|
||
|
||
**每日修为增量 = 基础速度 × 资质倍率 × 灵根容量倍率 × 天灵根加成 × 灵气浓度**
|
||
|
||
| 因子 | 来源 | 说明 |
|
||
|------|------|------|
|
||
| 基础速度 | 配置 `base_speed`(默认 10) | 修为/游戏日 |
|
||
| 资质倍率 | 配置 `aptitude_speed`([0.6, 1.0, 1.5, 2.0]) | 按下品/中品/上品/天骄索引 |
|
||
| 灵根容量倍率 | 固定公式 `1 ÷ 根数`(无配置) | 1根=1.0、2根=0.5、3根=1/3、4根=0.25、5根=0.2 |
|
||
| 天灵根加成 | 配置 `heavenly_bonus`(1.5) | 仅在 is_heavenly 时乘入 |
|
||
| 灵气浓度 | 配置 `qi_concentration`(默认 1.0) | D5 固定值;D6 建筑系统接入后动态化 |
|
||
|
||
> 所有修炼数值统一从 GameConfig 读取(Disciple 不内置倍率常量),避免双份数值漂移。
|
||
|
||
### 含义
|
||
|
||
- **资质定天赋上限**:决定倍率主体(0.6~2.0)
|
||
- **灵根数量定灵气容量**:容量 = 1 ÷ 灵根数(硬规则,不提供配置)。单灵根 1 单位灵气即充满(×1.0),双灵根只充 1/2(×0.5),三灵根 1/3,四灵根 1/4,五灵根 1/5,根数越多同一单位灵气分摊越薄
|
||
- **天灵根是稀缺加成**:强制单根(满容量)+ 额外 ×1.5,三个维度独立掷骰
|
||
- **无灵根(体修路线预留)**:容量为 0,无法练气;暂不生成,待体修系统(炼体)接入后另行结算
|
||
|
||
组合示例(天骄资质 + 五灵根 = 2.0 × 0.2 = 0.4,慢于 上品资质 + 单灵根 = 1.5 × 1.0 = 1.5)
|
||
|
||
修为存储用 float(允许小数积累),显示时取整。
|
||
|
||
---
|
||
|
||
## 三、境界门槛(本期:练气 1–13 层)
|
||
|
||
| 层 | 需求修为(配置 `level_thresholds`) | 是否瓶颈 |
|
||
|----|----------------------------------|---------|
|
||
| 1→2 | 100 | 否 |
|
||
| 2→3 | 200 | 否 |
|
||
| 3→4 | 350 | **是** |
|
||
| 4→5 | 550 | 否 |
|
||
| 5→6 | 800 | 否 |
|
||
| 6→7 | 1100 | **是** |
|
||
| 7→8 | 1500 | 否 |
|
||
| 8→9 | 2000 | 否 |
|
||
| 9→10 | 2600 | **是** |
|
||
| 10→11 | 3300 | 否 |
|
||
| 11→12 | 4100 | 否 |
|
||
| 12→13 | 5000 | **是** |
|
||
|
||
- **非瓶颈层**:修为满门槛 → 自动升层(无失败)
|
||
- **瓶颈层**(3→4 / 6→7 / 9→10 / 12→13):修为满后进入突破判定
|
||
- 13 层圆满:修为封顶,显示"练气圆满";**大境界突破见第四章**(玩家手动花费灵石突破至筑基)
|
||
|
||
> 数值均为示例,正式数值在 D9 平衡调整,只改配置不动代码。
|
||
|
||
---
|
||
|
||
## 四、大境界突破(D9 追加:手动花费灵石)
|
||
|
||
### 4.1 总览
|
||
|
||
练气圆满(13 层)后,玩家可在**弟子详情面板手动操作**:花费灵石尝试突破至下一大境界(练气→筑基→金丹→元婴→化神)。
|
||
|
||
```
|
||
练气13层圆满 ── 手动花费灵石 + 成功率判定 ──> 筑基初期 ── 小境自动推进 ── 筑基圆满 ──> 金丹初期 …
|
||
```
|
||
|
||
- 与练气期小突破(自动挂机)不同:**大境界突破是玩家主动行为**,消耗灵石、有失败折损
|
||
- 大境界序列沿用 `Disciple.REALM_NAMES`(练气/筑基/金丹/元婴/化神),`realm_index` 表示大境界
|
||
|
||
### 4.2 触发条件
|
||
|
||
| 条件 | 说明 |
|
||
|------|------|
|
||
| 修为满 | 练气期:13 层圆满(修为封顶);筑基及以上:修为 ≥ 当前大境界圆满阈值(见 4.3) |
|
||
| 灵石足够 | 当前宗门灵石 ≥ 目标大境界花费(配置 `realm_breakthrough_costs`) |
|
||
| 玩家操作 | 详情面板点击"大境界突破"按钮(满足条件时可用) |
|
||
|
||
### 4.3 筑基及以上的小境推进
|
||
|
||
- 筑基/金丹/元婴/化神各有 4 小境(初期/中期/后期/圆满),显示沿用现有 `get_realm_text()`
|
||
- 修为每日继续按同一公式增长(不再以 13 层封顶);满小境门槛**自动推进小境**(挂机,无失败)
|
||
- 小境门槛统一读配置 `realm_sub_thresholds`(3 项:初期→中期 / 中期→后期 / 后期→圆满),各大大境界通用
|
||
- **圆满**:修为达到圆满小境门槛后封顶,解锁"大境界突破"按钮
|
||
|
||
### 4.4 突破判定(手动)
|
||
|
||
1. 玩家点击"大境界突破"→ 扣除灵石(一次性,成功失败都不退还)
|
||
2. 掷骰:成功率按**目标大境界**读配置 `realm_breakthrough_chances`(升筑基 0.6 / 升金丹 0.5 / 升元婴 0.4 / 升化神 0.3,越往上越难)
|
||
3. **成功** → `realm_index+1`、`sub_realm_index=0`(新大境界初期)、修为清零;控制台与信号广播"X 突破至 筑基初期"
|
||
4. **失败** → **修为倒退**(配置 `realm_breakthrough_fail_drop` 步,默认 3):倒退限于当前大境界内——练气期倒推层数(如 13 层圆满 → 10 层),筑基及以上倒推小境(圆满 → 后期 → 中期 → 初期);倒退后修为清零重新积累;控制台提示"X 突破失败,灵石化为乌有,修为倒退至 练气10层"
|
||
5. 失败后修为照常继续增长(无冷却;冷却规则后续版本再考虑)
|
||
|
||
**设计意图**:为灵石提供经营消耗出口(建筑产出 → 突破消耗形成闭环),并保留"攒灵石 → 点突破"的手动决策感与成败反馈;**失败代价是境界倒退**(练气 13 层 → 10 层意味重新冲 3 个瓶颈层),比单纯扣修为更能制造挫折与经营压力。
|
||
|
||
### 4.5 灵石不足
|
||
|
||
- 按钮置灰并显示所需灵石("突破(需 500 灵石)")
|
||
- 灵石不足不可点击,不弹窗
|
||
|
||
---
|
||
|
||
## 五、突破判定(瓶颈层)
|
||
|
||
1. 修为 ≥ 瓶颈层门槛时,每日结算后自动尝试突破
|
||
2. 掷骰:成功概率**按瓶颈层分别配置**(`breakthrough_chances`,与 `bottleneck_levels` 一一对应:升 4 层 0.85 / 升 7 层 0.8 / 升 10 层 0.75 / 升 13 层 0.6,越往上越难)
|
||
3. **成功** → 升层,控制台打印"X 突破至 练气4层"
|
||
4. **失败** → 修为扣减 20%(冲关损耗),次日再尝试;控制台打印失败信息
|
||
5. 失败不连续重试(每天最多判定一次)
|
||
|
||
**设计意图**:挂机友好(全自动),但瓶颈制造节奏感与"卡关→等积累"的经营反馈;损耗惩罚避免无脑挂到顶。
|
||
|
||
---
|
||
|
||
## 六、CultivationManager(新 Autoload)
|
||
|
||
存放位置:`src/Character/CultivationManager.gd`(与 DiscipleManager 同域,注册顺序在 DiscipleManager 之后、声明于 project.godot)
|
||
|
||
| 接口 | 说明 |
|
||
|------|------|
|
||
| 监听 `TimeSystem.day_passed` | 每日结算全体弟子 |
|
||
| 私有 `_gain_exp(d)` | 按公式累计修为(所有大境界通用;练气圆满/大境界圆满封顶) |
|
||
| 私有 `_check_breakthrough(d)` | 练气期门槛判定 + 瓶颈掷骰 |
|
||
| 私有 `_check_sub_realm(d)` | 筑基及以上小境门槛判定(自动推进,无失败) |
|
||
| **公开 `try_realm_breakthrough(d)`** | **大境界突破入口:校验灵石 → 扣费 → 掷骰 → 成功升大境界/失败修为倒退(`realm_breakthrough_fail_drop` 步),返回 bool** |
|
||
| 信号 `realm_changed(d)` | 境界变化(详情面板刷新用) |
|
||
| 信号 `cultivation_log(text)` | 修炼日志文本(控制台打印/后续日志系统) |
|
||
|
||
**注意**:只在 `disciples` 名录内结算,候选池不修炼;大境界突破必须从 UI 手动调用(挂机不自动花灵石)。
|
||
|
||
---
|
||
|
||
## 七、配置节(game_config.cfg [cultivation])
|
||
|
||
```ini
|
||
[cultivation]
|
||
base_speed=10 ; 基础修为/日
|
||
qi_concentration=1.0 ; 宗门灵气浓度(D6 动态化)
|
||
aptitude_speed=[0.6, 1.0, 1.5, 2.0] ; 资质倍率(下品/中品/上品/天骄)
|
||
heavenly_bonus=1.5 ; 天灵根额外倍率
|
||
breakthrough_chances=[0.85, 0.8, 0.75, 0.6] ; 各瓶颈层突破成功率(与 bottleneck_levels 一一对应)
|
||
level_thresholds=[100, 200, 350, 550, 800, 1100, 1500, 2000, 2600, 3300, 4100, 5000] ; 练气 1→2 到 12→13 各层所需修为
|
||
bottleneck_levels=[4, 7, 10, 13] ; 瓶颈目标层(升到这些层需突破判定)
|
||
realm_breakthrough_costs=[500, 4000, 12000, 60000] ; 大境界突破灵石花费(索引 0~3 = 升筑基/金丹/元婴/化神)
|
||
realm_breakthrough_chances=[0.6, 0.5, 0.4, 0.3] ; 大境界突破成功率(与 costs 一一对应)
|
||
realm_breakthrough_fail_drop=3 ; 突破失败倒退步数(练气倒推层数/筑基+倒推小境,默认 3)
|
||
realm_sub_thresholds=[6000, 12000, 24000] ; 筑基及以上小境门槛(初期→中期/中期→后期/后期→圆满)
|
||
```
|
||
|
||
- `aptitude_speed`:与资质枚举一一对应,必须 4 项
|
||
- `level_thresholds`:练气 1→2 到 12→13 共 12 个门槛值
|
||
- `bottleneck_levels`:升到这些层时需要突破判定
|
||
- `realm_breakthrough_costs/chances`:索引 0 = 练气圆满→筑基,1 = 筑基圆满→金丹,2 = 金丹圆满→元婴,3 = 元婴圆满→化神;两个数组长度必须一致(4 项)
|
||
- `realm_breakthrough_fail_drop`:失败倒退步数,练气期退层数、筑基+退小境,均不跨大境界
|
||
- `realm_sub_thresholds`:筑基及以上通用,3 项;修为达到即自动进小境
|
||
|
||
---
|
||
|
||
## 八、UI 接入(D4 预留区填充)
|
||
|
||
- **名录列表**(DisciplesPanel):条目追加"修为"列(如 "1234 / 800",当前修为/本层门槛;13 层显示"练气圆满";大境界圆满显示"筑基圆满")
|
||
- **详情弹窗**:信息区追加"修为:1234 / 2000"(当前/本层门槛;练气圆满显示"练气圆满")
|
||
- 追加"**大境界突破**"按钮:满足触发条件(修为圆满 + 灵石足够)时可点击;按钮文案带花费("大境界突破(500 灵石)");灵石不足置灰
|
||
- 点击后直接执行判定(成功/失败均无二次确认),结果通过修炼日志与控制台可见
|
||
- 面板打开时暂停时间,进度静态展示;修炼日志:控制台 print(本期不做日志界面)
|
||
|
||
---
|
||
|
||
## 九、实现拆解(小步可验证)
|
||
|
||
1. 配置节追加 3 项 + GameConfig 读取(默认值与 cfg 同步)
|
||
2. Disciple 辅助:`is_realm_ready()`(修为圆满判定)、突破花费查询、进度文本支持筑基及以上
|
||
3. CultivationManager:`_gain_exp` 放开到筑基及以上 + 小境自动推进 `_check_sub_realm`
|
||
4. `try_realm_breakthrough(d)`:校验 → 扣灵石 → 掷骰 → 成功/失败结算
|
||
5. 详情面板"大境界突破"按钮(可用性 = 条件 + 灵石;文案含花费)
|
||
6. 挂机验证(加速时间观察筑基圆满 → 手动突破金丹)+ 提交
|
||
|
||
---
|
||
|
||
## 十、验收清单(D5 交付标准 + D9 追加)
|
||
|
||
- [x] 挂机时弟子修为逐日增长,速度随资质/天灵根不同(下品慢、天骄快)
|
||
- [x] 非瓶颈层修为满自动升层,无失败
|
||
- [x] 瓶颈层(4/7/10/13 层)需突破判定,控制台有成败日志,失败扣 20% 修为
|
||
- [x] 练气 13 层圆满后修为封顶,显示"练气圆满"
|
||
- [x] 详情面板显示修为进度,突破后实时刷新
|
||
- [x] 修改配置(速度/概率/门槛)重启生效
|
||
- [x] 详情面板常驻"大境界突破"按钮:修为圆满 + 灵石足够可点击(文案显示所需灵石),否则置灰(未圆满/灵石不足/已至巅峰)
|
||
- [x] 点击突破:扣灵石 → 成功升大境界(realm_index+1,显示"筑基初期")或失败**修为倒退**(练气退层/筑基+退小境,配置 `realm_breakthrough_fail_drop` 步),控制台有日志
|
||
- [x] 灵石不足时按钮置灰不可点击
|
||
- [x] 筑基及以上:修为继续增长,满 `realm_sub_thresholds` 自动推进小境(初期→中期→后期→圆满),圆满后可再大境界突破
|
||
- [x] 修改配置(花费/成功率/小境门槛)重启生效
|
||
|
||
> 注:修为显示("当前/本层门槛")待详情面板接入(拆解第 6 步)。
|