feat(combat): 主角增益只续时不叠层批——attack_up/ac_up stack→refresh(2026-09-20 用户拍板,台账 101)

用户裁决:主角增益与减益统一『只续时不叠层』(对齐削弱 2026-09-18 续时定案),
变相削弱主角性能已知悉接受。

- status_effects.tres:attack_up/ac_up 两行 stack_policy stack→refresh
  (duration=1/max_stack=2 表值不动——refresh 下 max_stack 不消费,weaken 先例)
- 容器/池/AC 消费侧零代码改动(refresh 容器既有)
- 行为影响:增伤不再 +100%、护甲强化不再 +2 AC(局内可达 AC 上限 11)
- 增益状态 v0.11:合并策略表/例子表/调参表/联动纪律/验收条同步
- registry 两行 + 06「叠层不续命的读感」解决移除(44→43 条)
- 冒烟 355 项 0 失败三闸全过(AC12 采样探针随行降 AC11)
This commit is contained in:
DKChan committed 2026-09-20 04:09:44 +08:00
1 parent 6a9f5901c1
commit 0ffb1de6f2
6 files changed
+34 -33

No files matched your search

-8
View File
@@ -143,14 +143,6 @@
### 增益状态
#### 叠层不续命的读感
**现状**:同种状态叠层只加层数、剩余次数不动("重复拿同款不续命")。旧体系把这条登记为试玩证伪项(配套教学口径"同轮拿满优于跨轮叠"),实测是否读得懂、要不要改成叠层顺带续命,尚未执行、尚未裁决
**归属**:增益状态(随批实测裁决)
**状态**:待办
#### 削弱档位的最终数值
**现状**:削弱取值域 [60,85] 与投值 −65 来自旧体系裁决;"标中旗必须比随便挖一格更值"的当量终值由[战斗结算](systems/战斗循环/战斗结算.md)与[地图战斗资源](systems/战斗循环/地图战斗资源.md)共裁,尚未闭合。**语义侧已定案(2026-09-18 盘问会话,结构修复批落地)**:削弱叠层改续时——同名重复授予只刷新剩余结算数、层数恒 1(结构性消饱和,×2 叠满池触底 ×0 的免伤轮从根杜绝);现行表值为临时值(provisional),duration 终值与当量锚复算归状态层重设计批
@@ -8,7 +8,7 @@
战斗里有一类效果不在当场一次性用掉,而要管上几次结算:挖开安全格拿到的主角增益、标中旗带来的怪物削弱、踩雷喂给怪物的增强、标错旗招来的反噬,都是这类。本文把它们统称"状态":发给主角的有益效果叫增益(标错反噬的失衡是个例外——它是发给主角的减益),发给敌人的负面效果叫减益;惊动巢穴或反噬喂给怪物的增强同样是状态——几个方向共用一本账。
增益状态就是这本账:一个容器收下全部状态,用同一套规矩管理——发入、叠层(同一种效果重复拿到时层数加一)、衰减(每次结算后剩余次数减一,减到零效果消失)、清空(战斗结束全部清除)。没有它,几类效果得各写一套计时逻辑,结算明细也无法逐行指回"这效果是我哪步棋带来的"。容器管机制、不管数值从哪来:某个效果该多大,由各收益系统的表去定,容器只照章入账、按次衰减。
增益状态就是这本账:一个容器收下全部状态,用同一套规矩管理——发入、合并(同一种效果重复拿到时按表行策略处理:叠层加一,或只刷新剩余次数——读 `status_effects.tres` 逐行 stack_policy)、衰减(每次结算后剩余次数减一,减到零效果消失)、清空(战斗结束全部清除)。没有它,几类效果得各写一套计时逻辑,结算明细也无法逐行指回"这效果是我哪步棋带来的"。容器管机制、不管数值从哪来:某个效果该多大,由各收益系统的表去定,容器只照章入账、按次衰减。
## 系统范围
@@ -85,7 +85,7 @@
| 合并策略 | 重复授予时发生什么 | 说明 |
|---|---|---|
| 叠加 | 层数加一;剩余结算次数不动——只有首次授予定钟 | 现行内容行多数用叠加(逐行合并策略读 `status_effects.tres`) |
| 刷新 | 剩余结算次数重置为该实例首次授予时的初始值,层数不变 | 刷新类内容行已就位(增益技行 empower / fortify、削弱行 weaken——2026-09-18 续时定案;逐行读 `status_effects.tres`) |
| 刷新 | 剩余结算次数重置为该实例首次授予时的初始值,层数不变 | 刷新类内容行已就位——削弱行 weaken(2026-09-18 续时定案)、增益技行 empower / fortify、**主角增益行 attack_up / ac_up(2026-09-20 用户拍板「只续时不叠层」,全状态表增益/减益两侧合并语义就此统一为:主角可重复获取的增益与减益一律续时、不叠层)**;逐行读 `status_effects.tres` |
| 并存 | 新建一份独立实例,两份各算各的 | 同上 |
并存分支没有满层上限,但容器规模天然有界:实例数的上界就是受理过的授予数——多受理一份就多一份实例,多少份在授予那一刻就完全确定,不会无限膨胀。
@@ -98,7 +98,7 @@
### 剩余次数怎么倒数:按结算次数衰减
每个状态实例自带一个倒数计数——剩余结算次数(本文说的"衰减"就是它逐次递减、归零消失)。它不承诺"活几轮",而是数"经历过几次轮末结算":每轮结算先让状态起作用,随后计数减一,减到零状态即被移除。持续 1 的状态就是"一次性":在授予它的那轮结算里生效一次,轮末消失。MVP 时期六行内容均为一次性(削弱后改续时——见版本历史);跨轮持续的状态,寿命由表行初始值表达,给几就活几次结算。
每个状态实例自带一个倒数计数——剩余结算次数(本文说的"衰减"就是它逐次递减、归零消失)。它不承诺"活几轮",而是数"经历过几次轮末结算":每轮结算先让状态起作用,随后计数减一,减到零状态即被移除。持续 1 的状态就是"一次性":在授予它的那轮结算里生效一次,轮末消失。MVP 时期六行内容均为一次性(削弱后改续时——见版本历史;2026-09-20 起主角增益两行也走续时、duration 表值仍为 1——重复拿等于重新获得一次当轮增益);跨轮持续的状态,寿命由表行初始值表达,给几就活几次结算。
```
一轮结算:查询生效清单 → 逐行兑付(层数 × 行值)→ 轮末衰减(全部实例剩余次数 −1)→ 归零实例移除
@@ -116,7 +116,7 @@
### 幅度与量纲:容器只做加法,换算归结算
容器对每个状态只记两件数值的事:幅度(一个整数)和量纲(百分比还是固定值)。百分比量纲的叠层是纯加法——两层合计 = 2 × 单行幅度(读 `status_effects.tres` attack_up 行),不是 1.5 的平方;固定值量纲几层就乘几。
容器对每个状态只记两件数值的事:幅度(一个整数)和量纲(百分比还是固定值)。百分比量纲的叠层是纯加法——两层合计 = 2 × 单行幅度(叠层策略行,读 `status_effects.tres` 暴走 enrage 行),不是 1.5 的平方;固定值量纲几层就乘几。
**结论**:容器输出的有效值 = 层数 × 行值,原样给出、不封顶不保底;把百分比合计换算成乘数、并在 −100 个百分点处设地板,是[战斗结算](战斗结算.md)的消费侧规则——地板保证减益不会把属性打到绝对负值,最低压到"归零"为止。
@@ -129,7 +129,7 @@
| 例子 | 容器输出 | 消费侧读法 |
|---|---|---|
| 暴走叠两层 | +(2 × enrage 行幅度)(读表;越出单行取值域,原样输出) | 压在天花板 +100% 上:敌方输出乘区封顶 ×2(削弱已改续时——"叠两层压地板 −100% 归零"的读法随 2026-09-18 结构修复批退役,见版本历史) |
| 主角护甲强化叠两层 | 每层 +1 AC(读 ac_up 行)× 2 层 | 不经任何池:掷点判定阈值 = 主角基准(读 hero 表)+ 层数 |
| 主角护甲强化再拿一份 | 层数恒 1、剩余结算次数重置(refresh——2026-09-20 主角增益续时批) | 不经任何池:掷点判定阈值 = 主角基准(读 hero 表)+ 层数(现行 +1——上限 2 层叠读取法退役,局内可达 AC 上限 11) |
容器还有一条快照纪律:实例的幅度、初始次数、量纲在授予那一刻从表行拷贝。战斗中配置表即使被重载,已授予实例不受任何影响,只影响后续授予。
@@ -219,12 +219,12 @@ empower 与 fortify 是敌方技能池增益技在容器侧的数据落点(技
| sapped 幅度 | 百分比 [−100,100] 且非 0 | percent 行 magnitude | 乏力;雷格负向 weaken 型,进主角输出修正池(2026-09-15 格面资源批补登记) |
| empower 幅度 | 百分比 [−100,100] 且非 0 | percent 行 magnitude | 蓄力;敌方技能池增益技载体,进敌方输出修正池 |
| fortify 幅度 | 百分比 [−100,100] 且非 0 | percent 行 magnitude | 硬化;敌方技能池增益技载体,进**敌方防御池 enemy_defense**(负值 = 减伤方向——2026-09-18 符号纠正) |
| 初始剩余次数 | 整数 [1,99] | duration_settlements | 六行一次性语义;weaken 与 empower/fortify duration 读表(weaken 续时 = 2026-09-18 定案;empower/fortify = 1 个有效增益拍——先兑付后衰减含施放当轮);拉长 = 恢复跨轮延续、规划变简单 |
| 叠层上限 | 整数 [1,16] | max_stack | 仅叠加策略消费;刷新行层数恒 1——weaken 表值上限在续时语义下不消费(2026-09-18),empower/fortify ×1(冷却闸下不可能自叠加) |
| 初始剩余次数 | 整数 [1,99] | duration_settlements | 一次性语义行逐行读表;续时行 = weaken(2026-09-18 定案,duration 2)+ empower/fortify(1 个有效增益拍——先兑付后衰减含施放当轮)+ **attack_up / ac_up(2026-09-20 主角增益续时批,duration 表值 1 维持——续时语义在 dur=1 下表现为重复拿重置当轮倒数;跨轮延续随将来 duration 拉长自然显形,数值归状态层重设计批)**;拉长 = 恢复跨轮延续、规划变简单 |
| 叠层上限 | 整数 [1,16] | max_stack | 仅叠加策略消费;刷新行层数恒 1——weaken / attack_up / ac_up 表值上限在续时语义下不消费(2026-09-18 / 2026-09-20),empower/fortify ×1(冷却闸下不可能自叠加) |
非调参的冻结项:三类合并策略语义、两种量纲语义、来源类别枚举、"先兑付后衰减"时序、拒绝原子性、零随机——改动走本文修订流程,不走调参。
联动纪律:增伤与削弱是当量锚的两端;护甲强化与[难度曲线与Boss](../冒险循环/难度曲线与Boss.md)的承伤预期联动(掷点折扣轴——AC 行值变更须复算生存链区间);削弱改续时后"单轮层数上限受[行动经济](../排雷循环/行动经济.md)行动点约束"的联动随之失效(2026-09-18 续时定案——同名重复标中只刷新剩余次数、层数恒 1)。这些联动值禁止独立调参,修订须重跑锚对照并同步 registry。
联动纪律:增伤与削弱是当量锚的两端;护甲强化与[难度曲线与Boss](../冒险循环/难度曲线与Boss.md)的承伤预期联动(掷点折扣轴——AC 行值变更须复算生存链区间;2026-09-20 主角增益续时批后 ac_up 层数恒 1、局内可达 AC 上限 11,复算随调参批);削弱改续时后"单轮层数上限受[行动经济](../排雷循环/行动经济.md)行动点约束"的联动随之失效(2026-09-18 续时定案——同名重复标中只刷新剩余次数、层数恒 1;2026-09-20 起主角侧 attack_up / ac_up 同口径)。这些联动值禁止独立调参,修订须重跑锚对照并同步 registry。
## 验收标准
@@ -232,7 +232,7 @@ empower 与 fortify 是敌方技能池增益技在容器侧的数据落点(技
- 多向同构:主角侧增益与减益、敌方侧增强与削弱共用同一套受理、合并、倒数、清除语义,不存在第二套计时逻辑。
- 授予即生效:状态发入当轮结算即兑付第一次,无"待生效"中间态。
- 只记账不去重:同一事实被转化两次授予,入账两层——去重责任在战斗结算。
- 叠层不减钟:叠加只加层数,剩余次数保持首次授予定下的轨迹不变。
- 叠层不减钟:叠加策略行叠加只加层数,剩余次数保持首次授予定下的轨迹不变(刷新策略行则相反——层数不变、只重置剩余次数;两策略逐行读表)。
- 满层拒绝原子且留痕:叠满后再授予返回失败、容器逐字不变;结算明细多一行"溢出未生效"(含来源)。
- 先兑付后衰减:每轮结算恰做一次衰减,归零实例当轮移除;停手轮、弃图刷新轮照常衰减。
- 合成不收口:容器输出的有效值恒等于层数 × 行值,越出百分比域不封顶不保底;地板在战斗结算侧。
@@ -257,3 +257,4 @@ empower 与 fortify 是敌方技能池增益技在容器侧的数据落点(技
| v0.8 | 2026-09-17 | **数值纪律收口批:正文与调参表 knob 现行值改指路存根(事实源 `data/tables/*.tres` 与 registry),8 处失同步值修正**——幅度例"两层 +50% 合计 +100"改"2 × 单行幅度(读表)";削弱例"−130 个百分点"改"−(2 × weaken 行幅度)(读表)";护甲例"AC10 → AC12(期望减免 21.25% → 28.75%)"改"基准 AC(读 hero 表)+ 层数"、派生读数删除;状态行表"时限/合并"列 1 次/×2/×16/×1 字面量改读表措辞;defense_up 退役条目删"−30%"数值;"两行 duration = 2"改"duration 表值(读表)";empower"×2"幅度与调参表"AC10 → 11 → 12"、"2 次 = 1 个有效增益拍"同步指路化 |
| v0.9 | 2026-09-18 | **战斗数值结构修复批(2026-09-18 盘问会话用户拍板,与战斗结算 / registry / 切片代码同批)**:三行语义改写(数值全部 provisional 归状态层重设计批)——① off_guard(失衡)换装 AC 轴:unit percent→ac、退出 hero_defense 池(effect_pool_map 删键,池清空结构保留),状态行表与调参表同步,"标错反噬三池"措辞改"三行";② fortify(硬化)符号纠正:旧正值入池实际 ×2 翻倍与"硬化=减伤"语义相反,改负值后主角攻击折半(正负号语义成文:负值 = 减伤方向);③ weaken(削弱)叠层改续时:stack→refresh、duration 表值 2——同名重复授予只刷新剩余次数、层数恒 1,×2 叠满池触底 ×0 的免伤轮结构性根治;消费侧例子表"削弱叠两层压地板"改"暴走叠两层封顶 ×2"(削弱叠层读法退役);"叠层不续命"对削弱不再适用,行动经济联动句随之失效;调参表一次性/叠层上限两行措辞同步 |
| v0.10 | 2026-09-19 | **技能池新效应词汇批(用户拍板——设计权威 docs/proposal-status-vocabulary.md v1.0,与 敌人系统 / 战斗结算 / registry / 切片代码同批)**:off_guard(失衡)新增第二来源类别 = 敌方技能施放(妨害技"蛛网束缚"的容器落点——首实装于 L2 Boss 蛛化卓尔精灵池;duration 由技能行 buff_duration=2 覆盖 = 1 个有效结算,empower/fortify 同款口径);容器语义零改动——同构实例、side 路由照常,妨害技零新状态行(乏力 sapped 留作妨害第二词汇,暂无载体) |
| v0.11 | 2026-09-20 | **主角增益只续时不叠层批(用户拍板「主角的其实也一样,都是按照叙事的方式,不要有叠层;只续时不叠层,变相削弱主角性能可接受」;与 status_effects.tres / smoke / registry / 06 清单同批,台账 101)**:① attack_up(增伤)/ ac_up(护甲强化)两行 stack_policy stack→refresh——重复授予层数恒 1、剩余结算次数重置,对齐削弱 2026-09-18 续时定案;至此主角可重复获取的增益与减益合并语义统一(叠层策略仅剩敌侧 ambush / enrage / off_guard / sapped 等行);② duration 表值 1 与 max_stack 2 不动(refresh 下 max_stack 不消费——weaken 先例;dur=1 下续时表现为重复拿重置当轮倒数,跨轮延续随 duration 拉长自然显形,数值归状态层重设计批);③ 影响面:增伤不再 +100%(hero_offense 池单层封顶 +50)、护甲强化不再 +2 AC(局内可达 AC 上限 11,AC12 折扣档采样探针随行降为 AC11)、"溢出未生效"行对这两行不再可达;④ 同名状态合并策略表/幅度量纲例子表/调参表两行/联动纪律句/验收"叠层不减钟"条改述;06 清单「叠层不续命的读感」条目解决移除(45→44 条);冒烟 355 项 0 失败(ac_up 行断言与 AC 探针改形,无净增断言) |
+2 -2
View File
@@ -127,8 +127,8 @@ entities:
stack_policy: enum {stack, refresh, independent}
max_stack: int [1,16](仅 stack 消费——refresh/independent 行内容约定恒 1,非校验项)
mvp_content:
attack_up: { display_name: 增伤, target_side: hero, unit: percent, duration_settlements: 1, max_stack: 2, stack_policy: stack, source_class: safe_cell, magnitude_ref: data/tables/status_effects.tres } # 2026-09-17 数值压缩批·文档同步:magnitude 从现行值列改指路存根(数值事实源 = data/tables/status_effects.tres);schema 字段保留以承载元数据
ac_up: { display_name: 护甲强化, target_side: hero, unit: ac, duration_settlements: 1, max_stack: 2, stack_policy: stack, source_class: safe_cell, magnitude_ref: data/tables/status_effects.tres } # 2026-09-16 护甲等级掷点批换装(原 defense_up 减伤 −30 percent ×2 层整行退役、无双轨——unit=ac 新量纲〔护甲等级阈值轴 [−20,20] 且非 0〕,不入 effect_pool_map 任何池,消费面 = 战斗结算掷点判定);2026-09-17 数值压缩批:magnitude 改指路存根
attack_up: { display_name: 增伤, target_side: hero, unit: percent, duration_settlements: 1, max_stack: 2, stack_policy: refresh, source_class: safe_cell, magnitude_ref: data/tables/status_effects.tres } # 2026-09-17 数值压缩批·文档同步:magnitude 从现行值列改指路存根(数值事实源 = data/tables/status_effects.tres);**2026-09-20 主角增益续时批:stack→refresh(层数恒 1、重复授予重置剩余结算数——max_stack 不消费)**
ac_up: { display_name: 护甲强化, target_side: hero, unit: ac, duration_settlements: 1, max_stack: 2, stack_policy: refresh, source_class: safe_cell, magnitude_ref: data/tables/status_effects.tres } # 2026-09-16 护甲等级掷点批换装(原 defense_up 减伤 −30 percent ×2 层整行退役、无双轨——unit=ac 新量纲〔护甲等级阈值轴 [−20,20] 且非 0〕,不入 effect_pool_map 任何池,消费面 = 战斗结算掷点判定);2026-09-17 数值压缩批:magnitude 改指路存根;**2026-09-20 主角增益续时批:stack→refresh(层数恒 1——局内可达 AC 上限 11,原 ×2 层叠读取法退役)**
ambush: { display_name: 伏击(敌方增益), target_side: enemy, unit: flat, duration_settlements: 1, max_stack: 16, stack_policy: stack, source_class: mine_hit, magnitude_ref: data/tables/status_effects.tres } # 2026-09-17 数值压缩批:magnitude +3 → +1 flat(量纲未变,参见 status_effects.tres ambush_unit_definition)
weaken: { display_name: 削弱(标中旗 debuff), target_side: enemy, unit: percent, duration_settlements: 2, max_stack: 16, stack_policy: refresh, source_class: flag_hit, magnitude_ref: data/tables/status_effects.tres } # 2026-09-17 数值压缩批:magnitude 改指路存根;**2026-09-18 结构修复批:叠层改续时——stack→refresh · duration 1→2**〔同名重复授予只刷新剩余结算数、层数恒 1——结构性消饱和,×2 叠满池触底 ×0 免伤轮根治;表值上限 16 在续时语义下不消费;duration 终值 provisional 归 状态层重设计批〕
enrage: { display_name: 暴走(敌方增伤), target_side: enemy, unit: percent, duration_settlements: 1, max_stack: 16, stack_policy: stack, source_class: flag_miss, magnitude_ref: data/tables/status_effects.tres } # 2026-09-12 标错反噬批上线——三池之一(进 enemy_output 池);2026-09-17 数值压缩批:magnitude 改指路存根