Files
gplan-2/design/gdd/b1-settlement.md
T
2026-09-14 18:18:49 +08:00

99 KiB
Raw Blame History

B1 战斗结算规则(Combat Settlement Rules)

状态:Designed · 版本:v2 · 2026-09-14 一句话:B1 把每轮扫雷的结果逐行兑现为战斗结果,并判定胜负。 推演件:design/gdd/analysis/b1-settlement.md(本文件只收结论,理由在那里) 承载支柱:P2 主("扫雷的因、战斗的果"的兑现面)· P3(雷的双面兑付)· P1(条款③掌控感的经济侧验收)

设计目的

战斗域编排与结算中枢、轮次生命周期唯一 owner。少了它,扫雷每一格的结果没有战斗兑付面,"扫雷的因、战斗的果"无从兑现。

  1. 玩家能在结算明细里逐行看到每行来自哪格/哪旗/哪雷(P2"都是我算出来的");无来源行 = 断言失败。
  2. 挖掘决策的风险不等式与"推到底"支配性由本系统闭合签字(P1"挖下去值得")。
  3. 敌方伏击行与标中旗削弱行同框、同呈现语言(P3"赌桌不是陷阱")。
  4. 完美排雷双份兑付、标中旗行高光("完美被加倍兑现")。

系统范围

负责:

  • 轮次编排:战斗开始序列、每轮七段结算、出口分发(继续/换图/挖掘期刷新/战斗结束/关卡结束)
  • 结算触发与段序;伤害消费侧语义(池合成、clamp、溢杀、死亡判定时机)
  • 明细流水协议(13 类行 + 字段分层)——呈现/回放/导出共读的唯一数据源
  • 统一当量换算(F1)、乘区/地板/取整语义(F2)、clamp/溢杀/死亡判定数值边界(F3)、条款③⑤闭合判据与配对口径(F4/F5)、伤害A/B 充能与甲效结算(F6)、明细行协议的数值字段
  • 上游义务账本(B3×8 / B2×6 / A2×3 / B4×6);A3 条款①②③⑤闭合签字

不负责:

  • 单位状态、hp 递减与 floor 0、Dead 翻转、指针冻结(B2)
  • 状态实例 L×m 合成——B3 原样输出不 clamp,B1 只做池 clamp 收口(B3)
  • 奖励行值/权重/tier/C 量级与差异化分支(B4/C3);库存内容(B4)
  • 行动价目与 RAP 经济(A3);棋盘规则、雷密度/可推理率/雾负担 actuals 分布(A1/A2)
  • 敌我表值曲线 atk/hp/cap/unit_count/pattern(C3,B2 行值供给)
  • 呈现与交互形态(D1/B5)、音频(D4)、教学(D5)
  • 全部 provisional 数值调参(C3);m_w 终值(B4/B1 锚 owner 共裁);P_perfect 数值(C3)
  • 清图总预算"够不够"的判、战斗长度/轮数曲线、遭遇构成(A1/A3 契约、C1/C3)

核心循环

begin_battle(encounter)
  │ ① set_reload_gate(true)        [D2]  调试门置位
  │ ② notify_battle_start()        [B3]  容器开域
  │ ③ encounter 骰                 [RngService]  unit_count 区间均匀骰定本战实际数量(封闭流,恰一 scope)
  │ ④ spawn(L, D, hero_hp, n)      [B2]  行值快照实例化(n = 实际数量 override;定值行 n = unit_count)
  │ ⑤ install_board + roll_board   [A2/B4]  恰一次;资格格清单 = S ∖ R₀
  │ ⑥ notify_round_start()         [A3]  → Active
  ▼
RoundActive(挖掘期,B1 只缓冲事件流)
  ▼
轮末触发:Waiting 相位编排点(只读 A3 相位观测量,不依赖事件到达序)
  ▼
①授予段 ──── cell_revealed 批 → flag_judged 批 → 清图奖励(仅 cleared 轮)
  ▼
②道具使用窗口 ─ 玩家至多选一件或跳过(全流程唯一玩家输入点)
  ▼
③增益/减益段 ─ query_active 双侧读值 → 语义映射 → 效果明细行
  ▼
④道具段 ───── 伤害道具:恒定表值打 default_target;治疗包:clamp 回复
  ▼
⑤战斗段 ───── 主角先手攻击(D_hero 三分量——F3⓪/F6)→ 逐存活敌(行主序):query_attack → apply_damage → advance
  │            ※ hero hp=0 → 立即短路,剩余敌不作用,直入 ⑦
  ▼
⑥衰减段 ───── decay_round() 恰一次(含末轮;先兑付后衰减的时序契约)
  ▼
⑦判定段 ───── hero hp=0 → 失败 │ 存活敌=∅ → 胜利 │ 否则 → 下一轮
结局 触发 动作序列 约束
继续 判定=下一轮 notify_settlement_done(same_board) → notify_round_start() 同图续轮
换图 cleared 轮 retire_board → retire_mapping → A1 generate → install_board → roll_board 恰一次 → notify_settlement_done(new_board) → notify_round_start() stopped/ap_exhausted 恒 same_board,违约 fail-fast
挖掘期刷新 玩家经 D1 发起 A3 request_refresh 扣费 → 换图全序(无结算段、无 round_end、轮次不终结) RAP 不足→拒绝上抛;每轮 cap 2(RoundStart 重置)——与 A3 refresh_cap_per_round / registry rap_rules / D1 同口径,非"每图";刷新图无清图奖励
战斗结束 判定=胜/负 retire_mapping → despawn_all → notify_battle_end → notify_combat_end → set_reload_gate(false) 库存不清(关内延续)
关卡结束 上层显式调用 clear_inventory() 恰一次,清空前快照计数返回 victory/defeat 皆然

编排与触发

状态

状态 进入条件 行为/出口
Uninit 冷启动 / 清理完成 唯一出口 begin_battle
BattleSetup begin_battle 受理 战斗开始序列;任一步拒绝 = fail-fast 上抛
RoundActive notify_round_start 不干预挖掘,只缓冲事件流
RoundWaiting 轮次结束事务达成 执行七段结算;窗口段为唯一玩家输入点
BattleOver 判定段产胜负 战斗结束序列 → Uninit

编排不变式:

  • 同一时刻至多一个结算事务在飞(窗口为事务内暂停点非并发入口)。
  • 段序恒全序执行(战斗段短路是段内规则非跳段)。
  • 全部跨系统调用集中在 B1——任一下游被 B1 以外调用 = 架构违约(AC-43 静态扫描域)。

规则

  • 规则 1:B1 一家发起战斗域全部跨系统调用,B2/B3/B4 相互零直调,绕过 = 架构违约;结算本体三约束 = 零随机、零 UI 依赖、禁 await。唯一随机例外 = 战斗开始 encounter 骰(unit_count 区间均匀骰、封闭流恰一 scope,在结算步骤流之外,可回放性不受影响);将来结算本身若需随机数,必须走数据层新增增流通道并过评审(通道定义见 D2 Rule 5 与 D2 流枚举 encounter)。
  • 规则 2:每轮挖掘结束、回合状态机进入轮末等待相位时,B1 自动发起一次整轮结算;触发只读 A3 相位读数与 last_round_end 标记,不依赖事件到达序;事件订阅 vs 相位轮询留实现期 ADR。
  • 规则 3:挖掘期挖格/插旗事件不立即兑奖,按轮进缓冲区,轮末按 A2 事件规范序统一转化;每条事实从记录到授予恰好处理一次——B3 不去重、B4 幂等仅兜底,正常路径不重复发奖不漏发。
  • 规则 4:每轮结算严格按 ①授予→②道具使用窗口→③增益/减益→④道具→⑤战斗→⑥衰减→⑦判定 全序执行;核心相对次序 = 增益/减益先于道具、道具先于战斗;段序结构冻结(改须走 GDD 修订,不属于调参);窗口每次选择是回放输入的一部分;段序常量存 SettlementTable segment_order,加载期恒等断言。
  • 规则 16:结算用到的全部数值(当量、clamp 界、乘数、段序常量)都在 SettlementTable,B1 代码零数值字面量,调数值只改表不动代码;战斗开始 B1 落下热重载闸门、战斗结束抬起(B1 是唯一调用方),战斗中途的热重载请求被闸门拒绝。

设计意图:编排唯一 + 触发只读相位 + 段序冻结,是可回放性与跨系统归因的结构前提。

授予与高光

规则

  • 规则 5:授予段把挖掘期缓冲的事实分三批兑换,每格受理、每雷转化、每旗判定恰好一次:①挖格批——踩雷格逐颗转化为敌方伏击强化,带奖励资格的安全格按类别分流兑付;②旗判定批——判中 → 敌方削弱当轮生效(每颗雷资格只兑一次),判空 → 零兑付只记"标旗未中"归因行;③清图批——清图奖励恰好发一次,全板零误标且有标中 → 追加第二份同身份兑付。兑付数值读 D2 表值、无新公式。
  • 规则 6:挖开雷格时 B1 向 B2 请求一次伏击授予计划 ambush_grant_plan(mines_r, cap),恰一次调用;granted = min(mines_r, cap),超出的雷不生效只记"溢出未生效"行(含来源);伏击聚成一个池,同一结算多个敌人攻击读同一池值——共享、不均分也不消耗;伏击只活一轮,轮末随衰减清零。
  • 规则 7:道具使用窗口是全流程唯一玩家输入点;窗口清单 = B4 库存投影 + B1 逐件可用性守卫预判;玩家至多选一件或跳过,空库存可整体不弹窗;完整选择序列(含跳过)记入回放;一次提交多件 → 只受理第一件、其余退回并记编排违例诊断。
  • 规则 13:授予段埋两个强制高光检查点(见下表),条件满足必须兑现;呈现分工 = 事件型高光(完美排雷)发独立高光行,属性型强调(标中旗、清图奖励)用行字段标记。
窗口里看到 能否选用
伤害类道具 恒可选(结构前提 = 窗口只在仍有存活敌的轮打开)
治疗包 满血禁选;未满血可选
空库存 可整体不弹窗,按跳过记

规则 5 实现参照——三批转化

批 输入 转化 产出
cell_revealed kind=mine 调 ambush_grant_plan(mines_r, cap),事件规范序逐颗 apply_effect(ambush, source={mine_hit, origin_cell, round_index}) 伏击池 L;溢出颗产"溢出未生效"行(含来源)
cell_revealed kind=safe ∧ reward_eligible 按 category 分流(见下方奖励分流表) 每格受理恰一次(B4 幂等仅兜底)
flag_judged hit=true 且该雷实例资格未消费 apply_effect(weaken, source={flag_hit, origin_cell, round_index}) + 资格消费入集合 标中旗兑付行(highlight=flag_hit)
flag_judged hit=true 且资格已消费 去重跳过(资格以雷格实例为键、跨轮累积;换图后新实例自然重置) 零新增行(+debug 诊断可选)
flag_judged hit=false 零兑付;每雷实例一次去重(A2 逐轮重报零新增行,防惩罚轰炸) "标旗未中"零值行(source=flag_miss、highlight=perfect_broken)
cleared 轮 — grant_clear() 恰一次;完美板(零误标 ∧ ≥1 标中)追加第二份同身份兑付(走既有授予通道) 清图奖励行;完美高光行

规则 5 实现参照——奖励分流

category 兑付方式 拒绝语义
buff apply_effect(入池,结算段生效) 满层 → "奖励未生效"行(可聚合计数),无折算
instant_aoe 全体存活敌各 power 点(逐个 apply_damage、受击即死) 当场兑付,不进库存不出窗口
instant_heal 主角回复 power(clamp) 满血 → "奖励未生效"行零兑付
damage_item / heal_pack stock() 入关卡域库存 窗口选用时兑付
  • reward_eligible=false(initial 通道)格不入奖励库——B1 判定只读 reward_eligible、channel 字段零特判;连锁批量授予溢出 = 显式接受(无转换补偿)。
  • 标错惩罚未上线——标旗未中行是归因痕迹非惩罚;预留语义走接口漂移补(A2 实测后)。

规则 13 实现参照——高光兑现节点(强制检查点)

节点 判定 兑付 呈现
#2 完美排雷(perfect_sweep) 板级谓词:本板自 install 起全部 flag_judged 中 hit=false 计数 = 0 ∧ hit=true ≥ 1(雾内插旗计入误标、零特判;计数随 install 重置) 清图奖励身份第二份兑付:道具类 → stock(同源身份快照) 第二次;buff 类 → apply_effect(同身份) 第二次(满层拒绝照旧);grant_clear 本身仍恰一次;当量 = power × P_perfect ÷ 100(载体域 {100, 200}) 独立高光行,value = 实际有效兑付(首份 + 第二份被接受部分)、禁记名义值;首份即零兑付 → 高光行不发(完美谓词仍成立)
#3 标中旗高光 hit=true 且资格未消费(授予段判定) weaken 当轮即兑付(dur=1 本就当轮生效)——chord 缺席的节拍缺失以"当轮兑付 + 明细强调"组合补偿 兑付行 highlight=flag_hit 字段标记;深度形态(即时 HUD 动画)归 D1/垂直切片

设计意图:每格事实恰一次兑付 + 双高光强制检查点,是"扫雷的因"在战斗里可见可归因的兑付面。

合成、道具与战斗

规则

  • 规则 8:增益/减益段把主角与敌人身上活跃效果一次性合成——从 B3 读两侧活跃效果,按 SettlementTable 语义映射换算成各自修正池并池内加算,供道具段与战斗段使用;每条效果按授予流水逐条记明细行并标注来源授予;敌方侧减益作用于全体存活敌人(side-wide)。
  • 规则 9:道具段执行窗口选中件:伤害道具按表恒定值打默认目标(顺位最前存活敌人),不吃任何池修正;治疗包按表值回复、超出上限 clamp(归 B1 执行);满血使用治疗包 → 拒绝、不消耗;施加时已无存活目标 → 照常消耗、记"已消耗未生效"行(存活判定读 B2 存活集)。
  • 规则 10:战斗段主角先攻击一次(D_hero 三分量——F3⓪/F6),再按行序逐个存活敌人行动:每个敌人依次走 query_attack → apply_damage → advance 三步、恰好推进一次,主角不在推进范围;已死敌人不再行动;主角中途倒下 → 剩余敌人全部停手、直接跳到判定段;伏击池共享读值、多敌攻击互不消耗。
  • 规则 11:衰减段调用一次 decay_round(),把到期临时效果移除并记衰减行;每轮恒定恰好一次,末轮也照跑——"先兑付清图奖励、后衰减"的时序契约由段序保证;容器已空时衰减返回零属合法结果(零明细行)。
  • 规则 12:判定段防御性顺序——先判主角是否倒下(倒下即失败),再判存活敌人是否清空(清空即胜利),都不满足回发"继续"进下一轮;判定结果写成终局判定行(同时是胜负画面的数据锚)。

设计意图:先合成后动刀、主角先手、hero 先判——三步防御性次序让任何结局都可归因。

F2 percent→乘数换算与合成地板(B3 义务③收口)

结论:池内加算 → 每池独立 clamp [−100, +100] → 池间乘算 → floor 单一取整(结构性非 knob);免伤轮(D'=0)是合法设计态——不调 apply_damage、产零值伤害行;Output Range D' ∈ [0, ∞) 整数、零负值分支,MVP 实际域 [0, 20](B2 参考带)。

结算语义映射(effect_pool_map,effect_id 为键):
  attack_up → hero_offense(只乘主角先手攻击基础分量)· defense_up → hero_defense
  weaken → enemy_output · ambush → flat 附加(后置加法、不入乘区)
敌→主单伤害实例(每结算、逐攻击行为):
  P_pool = Σ(同池实例 L×m);P_pool ← clamp(P_pool, −100, +100);M_pool = 1 + P_pool ÷ 100(域 [0, 2])
  D' = floor( D_raw × M_hero_defense × M_enemy_output )
       (整数域 = D_raw × (100+P_h) × (100+P_e) ÷ 10000 向下取整)
  D_raw = query_attack(u, L, m_amb).total(charge 拍 = 0;乘区作用于含伏击分量的全裸伤害)
例 合成值 池 clamp 后 乘数 读法
weaken AP 界(L=8 × m_w,修订后 65) −520% −100 0 该结算全体存活敌输出归零;第 3–8 层边际瞬时当量 = 0(地板吸收)——明细行如实显示合成值与终值两端
weaken 表界(L=16 × m_w) −1040% −100 0 同上——地板规则不区分越域来源,越域深度仅入合成值显示与诊断计数
defense_up 叠满(L=2 × m_d,现行 −30) −60% −60(域内,未触地板) 0.4 该结算 hero 承伤按 0.4× 结算——免伤轮不再由 defense_up 单侧可达
变量 符号 类型 范围 说明
裸伤害 D_raw int [0, ∞) B2 F2 total 分量(charge 拍恒 0)
池合成值 P_pool int(pp) 越域可达 ±1040(修订后);clamp 后 [−100, +100] B3 原样输出 → B1 clamp 收口
池乘数 M_pool 有理数 [0, 2] 1 + P_pool/100
终值 D' int [0, D_raw × 4](结构上界,MVP 不可达) floor 取整

归口:B3 管 L×m 原样输出不 clamp;B1 管池归属映射、clamp、乘区次序、取整方向;C3 管池值强度评估。

F3 伤害合成、clamp/溢杀与死亡判定(B2 义务③成文)

结论:三分支全序(主角先手 → 逐敌循环 → 道具段)+ 负值分支禁令(零负伤害/负治疗/负当量)+ 死亡判定:Dead ⇔ hp=0(无负 hp 中间态)、受击即死、hero 死亡战斗段短路、判定段 hero 先判;Output Range 双向伤害 D ∈ [0, ∞)、hp ∈ [0, max_hp]、零转移零存续。

⓪ 主→敌(战斗段段首,主角先手攻击——基础攻击恒存在〔HeroTable.atk 域 [1,999]、0 加载拒绝〕):
   目标 = B2 default_target()(固定顺位最前存活敌——与道具段同源)
   D_hero_raw = HeroTable.atk ×(1 + attack_up 载荷) + F6 充能分量
   D_hero = 三分量逐项 floor 后相加(基础分量经 hero_offense 池 clamp 地板——F2);D_hero = 0 → 零值伤害行
   D_hero > 0 → apply_damage(target, D_hero);hp 归 0 → Dead(受击即死)
   明细行 source_class = hero_attack;存活敌清空 → 敌方循环空转(零行动行),径入衰减段
① 敌→主(逐存活敌,行主序;调用序钉死 query_attack → apply_damage → advance):
   D_raw = query_attack(u, L, m_amb).total(L = 本结算伏击池读值;charge 拍 = 0)
   D' = F2 换算;D' = 0 → 不调 apply_damage,产零值伤害行(分量二元组 + 终值 0)
   D' > 0 → apply_damage(hero, D');hp' = max(hp − D', 0)
            溢杀部分(D' − 受击前 hp)丢弃——无存续、无转移、无负 hp 态
   hero hp' = 0 → 战斗段立即短路(剩余敌不作用、不产行动明细行)
② 主→敌(道具段,窗口选定件——至多一件,单件制):
   D = power(恒定表值,不吃任何 percent 修正;零乘区);目标 = B2 default_target()(死亡后顺延)
   apply_damage(u, power);hp 归 0 → Dead;溢杀丢弃、不转移下一敌
   施加时已无存活敌 → 照常消耗(Used 不可逆)+ "已消耗未生效"明细行
③ 负值分支禁令:任何公式分支不得产生负伤害/负治疗/负当量——percent 池地板 [−100, +100]、
   flat 值 ≥ 0、hp ∈ [0, max_hp]、治疗 clamp 上界 max_hp(hp' = min(hp + power, max_hp))、
   apply_damage 入参 n ≤ 0 = B2 API 拒绝 + 诊断
④ 死亡判定数值边界:Dead ⇔ hp = 0(无负 hp 中间态);时机 = 受击即时(敌)/ 战斗段短路(hero);
   判定段 = 防御性优先级 hero 先判(双死结构不可达的纵深防御)
变量 符号 类型 范围 说明
裸伤害 D_raw int [0, ∞) B2 F2 total;分量二元组 {baseline, attach} 进伤害行(P2 归因)
乘区终值 D' int [0, ∞) F2 输出;floor 取整
目标 hp hp int [0, max_hp] B2 单位状态;递减与 floor 由 B2 承载
道具威力 power int [1, 999] RewardTable 授予时快照(恒定)
溢杀量 — int [0, D') 丢弃(明细行 value = D'、击杀标记布尔——不记溢出量)

归口:B2 管递减/floor 0/Dead 翻转/指针冻结;B1 管本式全序、调用序、零值行、溢杀丢弃语义、死亡判定时机。

F6 伤害A/B 充能与护甲克制结算(机制与结算归 B1,四字段数值投值归 C3)

结论:伤害A/B 为挖掘期充能、战斗段主角先手攻击一次性消费的 flat 附加分量——池内加算、不吃任何 percent 修正、逐分量查 armor_effectiveness 甲效表后 floor 相加;充能池单轮生命周期(挖掘期累积 → 本轮战斗段消费 → 轮末归零,跨轮零存量);Output Range D_hero ∈ [0, ∞) 整数、零负值分支。

累积(B1 facts 缓冲承载——零新事件、零特判):
  A 池 = min(本轮 cell_revealed{kind=safe} 事件数 × damage_a_per_cell, damage_a_cap)
         (initial/chain/dig 全通道同待遇;cap=0 = 不封顶结构位;damage_a_per_cell=0 = 机制关闭合法极端)
  B 池 = 本轮 flag_judged{hit=true ∧ 资格未消费} 事件数 × damage_b_per_flag
         (与 weaken 兑付同源判定、每雷实例一次去重;无 cap 字段——标中旗吞吐由 AP 预算天然限界)
消费(战斗段主角先手攻击,单结算一次性清池):
  base = floor( atk × (1 + clamp(P_hero_offense, −100, +100)/100) )
  dmg_a = floor( A 池 × 甲效[dmg_a][target.armor_type] ÷ 100 )
  dmg_b = floor( B 池 × 甲效[dmg_b][target.armor_type] ÷ 100 )
  D_hero = base + dmg_a + dmg_b
  甲效表键集 {base, dmg_a, dmg_b} × {none, a, b} 结构冻结;armor_type 映射归 EnemyTable
  轮末:A/B 池清零(与 decay 段同拍——跨轮零存量)
变量 符号 类型 范围 说明
A 池 / B 池 — int [0, damage_a_cap] / [0, ∞) 本轮充能池读值(B1 自持,公开可读——P2 还原面)
伤害A 三参数 damage_a_per_cell / damage_a_cap int ≥ 0 默认 1 / 8(provisional 归 C3) SettlementTable knob;cap=0 = 不封顶
伤害B 参数 damage_b_per_flag int ≥ 0 默认 2(provisional 归 C3) SettlementTable knob
甲效值 e int percent {50, 100, 150}(现行默认矩阵取值域) armor_effectiveness 查表;base 行恒 100
  • cap 截断腿:连锁轮 A 池溢出零充能、无"溢出未生效"行(充能非奖励、无兑付语义),截断仅入诊断计数。
  • P2 归因:明细行 = hero 伤害行分量二元组 {baseline = 基础分量, attach = dmg_a + dmg_b 合计}(A/B 拆分经充能池公开读值可还原);A 池来源 = 开格、B 池来源 = 首次标中旗(与 weaken 同判定批)。

当量换算与条款闭合

术语表

术语 白话定义
乘区 伤害公式里相乘的各段修正(本作两段:主角减伤池 × 敌方削弱池)
池 同一侧百分比修正的加总桶
地板 数值不许越过的下界——本节地板 = 池最低 −100 百分点,即乘数最低 0
免伤轮 主角该结算受到的伤害为 0 的结算
充能池 伤害A/B 的单轮加法分量来源——开格/首次标中雷按表值累积、战斗段主角先手攻击一次性消费、轮末清零
溢杀 一刀超出目标剩余 HP 的部分——直接丢弃,不转移到下一个敌人
当量 统一价值单位,1 当量 = 1 点主角 HP 的期望净变化
瞬时口径 只数一个结算里兑现的价值(裁决口径)
全寿命口径 乘上它存活的结算次数(仅作派生量,不作锚)
残余盲猜端 图上推理不出、只能赌的那一小块
完美排雷(P_perfect) 一张板上没插错一面旗、且至少标中一面时,清图奖励翻倍的乘数
挖穿计价 把残余盲猜区全部安全格挖完时平均会踩到多少雷——按雷与安全格在池中均匀随机交错计算,不是每挖一格按初始比例独立重赌

F0 当量归一口径(weaken 锚裁决)

  • 结论:采用"每结算瞬时当量"口径(每 AP 总暴露分支排除);m_w 值域 [60, 85]、默认 −65;地板交叉层数 = ⌈100/m_w⌉ = 2(值域全域恒 2);B4 参照零漂移,B3 仅行值域修订(registry 回写)。
  • 连带:F2 越域界 = AP 界 8×m_w / 表界 16×m_w(合成值 B3 原样输出、B1 池 clamp 收口);单结算 weaken 池 HP 当量上界 = min(L×m_w, 100)/100 × D_inst(该结算实际裸伤害敞口)。
  • 修订效果量(provisional @ D_ref=12):腿一 7.8 vs 6.0 HP/结算(attack_up 当量,+30%,严格大于 ✓);腿二 7.8 vs E_dig 4.5 HP(+73% ✓);池内字面最低档读法(defense_up 3.6)裕度 2.17×。

F1 效果档位当量对照表(A3 条款①)

结论:单一线性换算全四源共用(分源改率 = 条款①契约违约);E(·) 单位 = 主角 HP 点;Output Range E ∈ [0, +∞)、全表零负值(percent 池饱和后边际 E = 0);weaken 修订后每旗 7.8 HP > defense_up 6.0(条款②腿一通过)。

flat / 道具类(刀、治疗包、ambush):  E = 值本身(ambush 按 k 个攻击拍线性展开)
percent 类(每结算、每层):          E_inst = |L × m| ÷ 100 × D_exp(对照表取参考敞口 D_ref)
完美乘数(显式 ÷100,运行时真实双份载体): E_clear(perfect) = power × P_perfect ÷ 100
时长(显式乘子,非分源改率):        E_life = E_inst × 兑付结算数
D_ref = SettlementTable.equivalence_ref_damage(单行全局 knob,provisional 默认 12)
变量 符号 类型 范围 说明
参考敞口 D_ref int [1, 999] SettlementTable 配置值(D2 回写义务,本 GDD owner);provisional 12;变更触发全对照表 + 条款③⑤重跑
层数 L int [1, max_stack] B3 实例字段(授予快照)
行值 m int percent ∈ [−100,100]∧≠0 / flat ≥ 1 StatusEffectTable 行值快照
兑付结算数 — int [1, duration_settlements] 剩余结算次数轨迹;对照表按满寿命取
道具威力 power int [1, 999] RewardTable 行值快照(恒定表值——已锁)
攻击拍数 k int [0, unit_count] 该结算存活敌中 attack/heavy 拍单位数(B2 F4 供给,确定性可算)
完美乘数 P_perfect percent {100, 200}(域外加载致命) SettlementTable 配置值;provisional 200(换算入账恒 ÷100)
行 源(source_class) 类别 换算式 E_inst(每结算/层) 全寿命 E 注
defense_up_basic safe_cell buff → defense_up E_inst = 0.30 × D_ref;E_life = ×duration 1 3.6 3.6 池内字面最低档 buff 当量(减伤墙批 −30 现行值)
attack_up_basic safe_cell buff → hero_offense E_inst = 0.50 × D_ref 6.0 6.0 锚对照实物(条款②参照对象——registry 回迁口径);消费面 = 主角战斗段先手攻击基础分量(F3⓪)
spark_aoe safe_cell instant_aoe E = power —(当场兑付) 4 全体存活敌各 4 点
heal_minor safe_cell instant_heal E = min(power, max_hp − hp) — ≤ 4 clamp 后真实当量;面值 4 = 上界读法
knife_t1 注入池(active_inject) damage_item E = power —(库存轨迹量) 8 供给控制器注入——非单格期望摊入
knife_adv 注入池(active_inject) damage_item E = power — 16 雾档升级刀
heal_pack 注入池(active_inject) heal_pack E = min(power, max_hp − hp) — ≤ 12 注入池稀缺强治疗
clear_blast clear_default instant_aoe E = power ×(perfect 板 ? P_perfect ÷ 100 : 1) —(当场兑付) 40(完美板 80——真实双份) 条款④⑤载体(F5 消费)
weaken flag_hit debuff → enemy_output E_inst = m_w/100 × D_ref 修订后 65 → 7.8 7.8(dur=1) 修订值域/默认见 F0
ambush mine_hit 敌方增益(flat) E = m_amb × k k=1 → 3;满配 k=3 → 9 同左(dur=1 单结算自然边界) 量纲已定稿(registry ambush_unit_definition)
伤害A 充能 safe_cell(开格——SettlementTable knob,非 RewardTable 行) flat 附加分量 E = min(开格数 × damage_a_per_cell, damage_a_cap) × 甲效/100 每轮 ≤ 8 × 甲效/100(对甲A 12 / 无甲 8 / 对甲B 4) 同左(单轮充能单轮消费) 充能规格见 F6;逐分量查表后 floor
伤害B 充能 flag_hit(首次标中——与 weaken 同判定批) flat 附加分量 E = 首次标中雷数 × damage_b_per_flag × 甲效/100 每雷 2 × 甲效/100(对甲B 3 / 无甲 2 / 对甲A 1) 同左 同 F6;"标中旗双收益线"归 W12③ 对账清单
  • 锚两腿:weaken 修订后每旗 7.8 > attack_up 6.0(严格大于 ✓,裕度 +30%);7.8 ≥ E_dig 4.5 ✓;池内字面最低档 defense_up_basic 3.6 读法裕度 2.17×——三读法均通过。
  • 结构性边界:腿二可满足上界 = m_w=100 ↔ 相对每结算百分点档 ≈1.96:1(percent 瞬时档被 schema 域封顶);处置 = C3 板形参数与 m_w 联动约束,非数值修订可解。
  • 归口:B1 管本表与换算维护、D_ref 与 P_perfect 承载;B4 管行值/权重/tier/C 供给;C3 管全部 provisional 数值;B3 管 L×m 合成原样输出。

F4 条款③挖掘风险不等式闭合(B1 单一闭合 owner;B2 义务④兑现)

结论:现行值链(duration=1 × m_d=−30 × C3 v3 曲线 d0.25/t0.88)下两参考板形破线(锚行口径 L1 ≈0.48× / L2 ≈0.47×;期望口径 0.60×/0.58× 同向);满配 unit_count=3 深度破线(≈0.16×);旧"通过"回执退役为历史记录;破线升格 C3 默认曲线级约束;actuals p10 交付后强制重跑。

配对口径:决策单位 = 单格挖掘;评估点 = 残余盲猜端最坏点(信息端平凡通过,一并登记)
主式:P(安全) × V_safe > P(雷) × V_mine
适用域守卫:(1 − ι) × |S| < 1(残余盲猜集为空)⇒ 主式不评估、信息端平凡腿接管(P(雷) 式在空池退化,禁代入)
P(雷)   = |M| ÷ (|M| + (1 − ι) × |S|)            (残余盲猜端上界)
P(安全) = 1 − P(雷)
V_safe  = E_life(最低档安全格 buff) = (|m_d|/100) × D_ref × duration_d(现行值链:0.30 × 12 × 1 = 3.6)
V_mine  = k_max × m_amb = unit_count × m_amb(默认行值 1×3 = 3;cap 溢出使第 cap+1 颗雷边际当量 = 0)
信息端检查(平凡腿):P(安全) = 1 → V_safe > 0 恒成立
变量 符号 类型 范围 说明
实际雷数 |M| int [1, W×H−9] A1 产物指标/行参数推导
安全格数 |S| int ≥ min_safe_count 同上
可推理率 ι float [0.85, 1] actuals p10(A1 F4 报告 C)——未交付前以行 target 代 = 判式面的保守代理;重跑义务(对账清单 #6)
防御行值/时长 m_d / duration_d int / int −30 / 1(provisional——减伤墙批/两级奖励批现行值) StatusEffectTable defense_up 行
参考敞口 D_ref int [1, 999] provisional 12 → V_safe = 3.6
伏击量纲/单位数 m_amb / unit_count int 3(provisional)/ [1,3] B2 行值
板形 ι(target 代 p10) P(雷) 左臂 = P(安全)×3.6 右臂 = P(雷)×3 裕度 判定
L1(v3:10×10 d0.25,|M|=23,|S|=77) 0.88 23/32.24 ≈ 0.713 1.03 2.14 ≈0.48× ✗ 破线
L2 腿(v3:12×12 d0.25,|M|=34,|S|=110) 0.88 34/47.2 ≈ 0.720 1.01 2.16 ≈0.47× ✗ 破线
满配语境(unit_count=3,V_mine=9,L1 板) 0.88 0.713 1.03 6.42 ≈0.16× ✗ 破线(深度)
  • 结论①:现行值链下两参考板形破线——旧"通过"回执(≈2.0×/2.6×,系 duration=2 / m_d=−50 / v1 曲线旧输入产物)失效;信息端平凡腿不变。
  • 结论②:满配语境 unit_count=3 深度破线(≈0.16×)——原 C3 调参约束维持并升格(见④)。
  • 结论③(敏感性):buff 饱和的结构性零兑付使 V_safe 名义值高估——按 0.6 折减(provisional)复算 L1:左 0.62 vs 右 2.14 → 裕度 ≈0.29×(更薄);折减系数与饱和率随 playtest 重校。
  • 结论④(破线升格——曲线级约束):约束升格为默认曲线的 V_safe 侧杠杆重议——候选杠杆 = m_d 回调 / duration 恢复跨轮 / D_ref 联动上调 / 板形侧密度×ι 联动对 / m_amb 下调;全部处"禁独立调参"联动网络(m_w↔D_ref↔m_d↔duration_d),修正方向须 C3 提案 + B1 闭合对账共裁。

F5 条款⑤清图 vs 弃图支配性闭合(B1 单一闭合 owner)

结论:条款⑤未闭合——挖穿残余池计价下主判式两态为负(L1 仅完美双份翻正 +11.3,非完美态被支配),实现率折减与多敌语境更差;"推到底"的支配性只在残余集小时自然成立;判据函数角色 = C3/B4 调参约束生成器,AC-40 断言输出与登记约束包一致。

主判式(决策点 = "确定格挖完";策略对 = 推到底清图 vs 停手攒 RAP 刷新):
  Δ_clear = [R_res + C_eff] − [X_res + Δr × s_ref] ≥ 0
  n_s    = (1 − ι) × |S|(适用域守卫:n_s < 1 ⇒ 主判式不评估、信息端平凡腿接管)
  E[踩雷] = |M| × n_s ÷ (n_s + 1)(均匀交错模型;n_s 增大时趋近 |M|)
  R_res  = n_s × E_dig
  C_eff  = C × (perfect ? P_perfect ÷ 100 : 1)(C = 清图奖励当量 = power 恒等〔clear_blast = 40〕)
  X_res  = E[踩雷] × V_mine(V_mine 同 F4)
  Δr     = ⌈(n_s + E[踩雷]) ÷ AP_r⌉(安全格 + 踩雷格均耗 AP;雾态增量叠算见注)
  s_ref  = D_ref(同一 D_ref,单一换算)
  E_dig  = (20×6.0 + 16×3.6 + 16×4 + 15×4) ÷ 67 ≈ 4.5 HP(格子池加权;刀/强治疗已移出格子池入注入池不摊入)
显式假设登记:停手侧 RAP 机会收益按零计价(零价假设对"推到底"偏利一分;本假设下 verdict 已为负)
保守地板式:C_eff ≥ X_res + Δr × s_ref
变量 符号 类型 范围 说明
残余盲猜安全格 n_s float [0, |S|] (1−ι)×|S|;域守卫:n_s < 1 ⇒ 主判式不评估(零赌博板形不误判)
挖穿期望踩雷 E[踩雷] float [0, |M|] 均匀交错模型 |M|×n_s/(n_s+1)
清图奖励当量 C int ≥ 1(A3 条款④) B4 供给(clear_blast power=40,provisional)
完美乘数 P_perfect percent {100, 200} SettlementTable 配置值;provisional 200(换算入账恒 ÷100)
单格奖励期望 E_dig float (0, ∞) 格子池加权推导(现行 4.5;评审口径带 ≈4.3–5.1;实现率折减敏感性同 F4③)
轮行动点 AP_r int [1, 32] A3 ActionEconomyTable(默认 8)
雾负担比 fog_burden_ratio float [0, 1] A1 产物指标(付费格分母口径)——雾态 Δr 修正输入
板形 n_s E[踩雷] X_res Δr(代价) R_res Δ_clear(C=40 / 完美 80) 判定
L1 无雾态(v3:10×10 d0.25,ι=0.88,|M|=23,|S|=77) 9.24 20.8 62.3 4(48) 41.6 −28.7 / +11.3 ✗ / ✓
L2 腿(v3:12×12 d0.25,ι=0.88,|M|=34,|S|=110) 13.2 31.6 94.8 6(72) 59.4 −67.4 / −27.4 ✗ / ✗
L1 × 满配语境(unit_count=3,V_mine=9) 9.24 20.8 186.8 4(48) 41.6 −153.2 / −113.2 ✗ / ✗
L2 腿 × 满配语境 13.2 31.6 284.5 6(72) 59.4 −257.1 / −217.1 ✗ / ✗
  • 实现率折减口径(E_dig′ = 2.70 provisional):L1 = −45.3 / −5.3;L2 = −91.2 / −51.2——同向更差(完美翻正腿亦被折减吞没)。
  • 雾态增量:链不可达雾格全价 AP 抬高轮数——Δr 增量 = |U| × dig_ap_cost ÷ AP_r(v3 曲线复算 (29.99 + 4) ÷ 8 = 4.25 → 上取整 5,较无雾基线 Δr=4 +1 轮);actuals fog_burden_ratio p50/p90 交付后重跑(对账清单 #6)。
项 约束 裁决方
① C 量级上调整向 保守地板需求 L1 ≥ 110.3 / L2 ≥ 166.8(v3 曲线重推;现值 C=40 / 完美 80——缺口 70.3 / 126.8;原 46.1/91.8 需求系 v1 曲线旧值链产物,退役为历史记录);任何上调与护栏 B 口径联动复核 B4/C3
② 或裁"清图非严格支配"为设计态 与 A4 定价硬约束②同向;如裁设计态,A3 条款⑤注记的 P1 对冲弱化须同步声明,弃图率雾板分层观测加权监控 C3(①②二选一)
③ 多敌联动 满配语境深度为负与 F4 破线同向——unit_count > 1 行的放行判据 = 条款③⑤在全部登记行组合下同时成立(判据自动收紧至曲线级重议——与 F4 结论④并案) C3(双条款并案)
C3 裁决回执 ② 采信(非支配设计态)+ 计价基元换位重推:clear_default 槽 clear_knife→clear_blast(instant_aoe 当场兑付全体存活敌,C = power = 40)——缺口重推 = 46.1−40 = 6.1(L1)/ 91.8−40 = 51.8(L2,v1 曲线口径);C 量级不上调 ✓;P1 对冲弱化同步声明已落 C3 OQ4、弃图率加权监控持续;actuals 交付后按 clear_blast 语义强制重跑(AC-40 同批口径,registry clause5_dominance.c3_ruling) C3(已裁——①②二选一落定)
B1 重算批重推回执 v3 曲线 × E_dig=4.5 重推:主判式 L1 −28.7/+11.3(完美翻正)、L2 −67.4/−27.4、满配 −153.2/−113.2 与 −257.1/−217.1;保守地板需求 110.3/166.8(缺口 70.3/126.8);裁决② 维持(非完美态负、完美态 L1 翻正、L2 全负——真人零弃图初裁 OQ4 不受读数漂移影响);护栏 A/B 读数挂旧值链——W2 复核随 C3 收口批三选一落档 B1(重算回执登记)
护栏 判据 读数 突破条件
A 雾板净当量优势带(B4 pricing_constraints③ 的 B1 判据) 每链不可达雾格净优势 = (E_fog − E_dig) − s_ref ÷ AP_r 登记读数 (11.1 − 7.2) − 1.5 = +2.4 ∈ (0, 3](v1 曲线/旧格子池口径);重算批方向性复核:E_dig 修正 4.5 + 雾池构成变更 → 读数 ≈ −1.1 < 0,越下界(雾纯税化风险);E_fog 正式重推随 W2 批 E_fog > 11.7 → C3 雾池联动禁区,禁独立调参(判据式不变——阈值随重推复核)
B 防钓鱼——退化板刷清图奖励 上界判据 = ⌈(|S|_min − |R₀|_max) ÷ AP_r⌉ × s_ref ÷ 2 ≈ ⌈(50−20)/8⌉ × 12 ÷ 2 = 24(D_ref 口径——与敌 DPS 无关,读数不受 v3 换锚影响) 登记双读数(v1 曲线口径):D_ref 口径上界 24 → C_eff = 16 ≤ 24 ✓ / DPS 严格读数上界 ≈8 → C_eff = 16 越(clear_knife C=8/完美 16 口径);W2 复核事项:C 提至 clear_blast 40/完美 80 后对两上界越线 1.7–10×——三选一裁决(上界改判/接受+强化监控/回调 C)随 C3 收口批落档 结构承载 = A1 min_safe_count + 布雷数下限 + A2 R₀≠S 三闸(B1 侧判据为对账复核,非运行期校验)
  • 护栏 B 输入登记:|S|_min = min_safe_count 是 A1 行级 knob,调参按当期行集重算、禁写死 50;|R₀|_max = 20 系参考带经验值、无登记供给方 → 登记 A1 产出义务 R₀ 规模分布上界(F4 报告 C 扩列,缺口预检 9);DPS 严格读数参照系 v1 曲线 atk 值,v3 atk 上探后正式重推随 W2 批。
  • P_perfect 默认值:×2(SettlementTable.p_perfect = 200,provisional,调参所有权 C3;运行时载体域 {100, 200})——现参数下唯一使 L1 翻正的杠杆(+8.0);非完美态仍负 → C 量级上调约束不因 P_perfect 消解;上界受护栏 B 约束(完美加成不得触碰钓鱼线)。

设计意图:两个不等式判据函数是 C3 调参的约束生成器——把"挖下去值得/推到底不吃亏"从口号变成每笔调参必须重跑的对账。

明细流水协议

规则

  • 规则 14:结算过程中每一件事写一行明细流水;行型封闭为 13 类、不允许私自增加;每行带公共字段,各行型再补特有字段;这份流水是界面呈现、回放对账、数据导出共读的唯一数据源契约;任何一行找不到来源 = 断言失败(宁炸勿混)。
  • 规则 15:结算完全可回放——同样的随机种子加同样的输入(事件序列 + 窗口选择序列),跑出的步骤流逐行相同;成立前提 = 零随机、确定性输入、数值全部来自表值快照、attempt 重试不额外取随机流号;录像回放、断言复测、切点续玩都建立在它之上(切点见 AC-34)。

明细行类型(封闭枚举,13 类)

行类型 特有字段 产出点 说明
效果行 effect_id pool_value 增益/减益段 value=该次授予贡献值;pool_value=池合成值(防 −130%×2 行误读为 −260%)
伤害行 target 道具段 / 战斗段 分量二元组 + 减伤终值 + 击杀标记
治疗行 — 道具段 clamp 后真实回复量
道具行 target 授予段 / 道具段 入库 / 生效 / 语境注记
奖励未生效行 聚合计数 授予段 满层拒绝、满血、雾板等合法例外
已消耗未生效行 — 道具段 施加时已无存活敌(Used 不可逆)
使用被拒行 — 道具段 满血治疗包守卫
溢出未生效行 — 授予段 伏击/奖励族同名协议
标旗未中行 highlight=perfect_broken 授予段 零值归因行;每雷实例一次去重
蓄力行 — 战斗段 charge 拍零作用
衰减行 — 衰减段 移除数 k(呈现聚合归 D1)
判定行 — 判定段 胜负 / 继续
高光行 — 授予段(清图) 完美排雷;value=实际有效兑付,禁记名义值

公共字段(13 类全必有):type source_class origin_cell(板级行可空)round_index display_name value highlight?。断言:无来源行 = 失败(AC-42)。新增行类型/新字段均为输入的确定函数——回放逐行相等断言语义不受损。

source_class(封闭枚举)

值 来源
safe_cell / flag_hit / mine_hit / clear_default B3 既有四源
道具/判定扩展 B4 交付语义
enemy_action 敌方行动行(伤害/蓄力)
flag_miss 标旗未中零值行
hero_attack 主角先手攻击伤害行

新增值 = 接口漂移,须同步 source_label_map 键集。

highlight(可空枚举)

值 含义
flag_hit 标中旗削弱兑付行强调
clear_reward_h2 清图奖励行强调
perfect_broken 本板完美谓词已破的归因锚

新增值 = 接口漂移。

设计意图:13 类封闭行型 + 无来源即炸,让"合并到看不出来源"的呈现优化在数据层就过不了断言。

边界情况

条件 行为
末图清图即胜利(cleared 与 battle_over 同结算) 授予段先兑付清图奖励(含完美判定)→ 窗口当轮可选用 → 道具段照常 → 战斗段空转(无行动行)→ 衰减照常执行 → 判胜 → battle_over 清理;未选用件随 clear_inventory 消亡 + 反馈行(依据:B4 E15)
战斗段 hero hp=0 立即短路——剩余敌不作用、不产行动明细行,径入判定段判负;短路后衰减段照常执行(结算完整性优先)(依据:Core Rule 10)
判定时 hero 与最后敌同时 hp=0 结构不可达(我方伤敌均先于敌方行动兑付);防御规则 = hero 先判 → 判负(纵深防御)(依据:Core Rule 12)
减伤/削弱合成后 D'=0 不调 apply_damage(B2 对 n≤0 拒绝),改产零值伤害行(分量二元组 + 终值 0)——免伤与零输出必须可见(依据:负值分支禁令)
伤害超过目标剩余 hp(溢杀) 溢出丢弃——无存续、无转移、无负 hp 态;行 value=D'、击杀标记为布尔(不记溢出量)(依据:F3)
敌为 charge 拍而本轮踩雷 伏击授予照常执行(授予段先于战斗段);query_attack 返回零作用 → 本结算伏击池全部蒸发(dur=1 轮末清零);战斗段零伤害;明细 = 授予行 + 蓄力行("这轮踩的雷白喂了"可对照)(依据:B2 EC8)
全体存活敌同拍 charge N 行蓄力行、零 apply_damage、hero 承伤 0——合法状态非错误(依据:B2 EC)
伏击池 L=0 时敌攻击 D_raw = 纯基线 atk(分量二元组 {atk, 0})——零伏击是 L=0 的自然读值非缺失分支(依据:B2 F2)
同窗提交多件 仅首件受理生效,余件零调用 + 编排违例诊断;满血使用守卫保留为纵深防御(跨结算场景仍可达)(依据:Core Rule 7 / AC-16)
治疗包 power 超过当前缺血 hp' = min(hp + power, max_hp) 部分回复、不拒绝(满血 = 零收益拒、超量 = 部分收益——两分支语义互斥)(依据:F3)
选定刀施加时已无存活敌 照常消耗(Used 不可逆)+ 逐件"已消耗未生效"明细行(零效果判定读 B2 存活集);单件制下不可达、逻辑保留为防御分支;战斗段照常空转推进(依据:B4 E10 / AC-20)
窗口打开时库存为空 跳过恒合法;呈现面 D1 可整体不弹窗;结算段序零停顿继续(依据:B4 E8)
挖掘期刷新 RAP 不足 request_refresh 返回 false、状态不变 → refresh_board 原样上抛拒绝(刷新拒绝不是编排错误,是玩家决策的合法结果)(依据:A3 EC13)
同轮多次刷新成功(cap 内) 每次成功独立走 refresh_board 全序(retire → generate → install → roll_board 恰一次/图)——挖掘期当场连刷合法;每次 generate/roll_board 消费新 scope;第三次提交 → cap 拒绝(依据:A3 EC15)
stopped/ap_exhausted 轮 出口分发恒 same_board(本编排无刷新提交面);回发 new_board = B1 违约(绕过 RAP"支出唯一")→ fail-fast 上抛(依据:A3 Rule 11)
换图生成产物带非法产物标记 编排不拒绝产物(玩家永不卡死),上抛玩家侧呈现请求(数据面 = 非法标记;提示/补偿/回退形态归 D1);A2 install_board 若拒绝(不变式违例)= 程序级错误 → fail-fast(非玩家域)(依据:A1 EC5)
battle_over 清理序列中某调用被拒 debug 诊断 + 编排纪律修复;幂等守卫(各侧 false + 诊断)兜底,不中断清理序列剩余步骤(防半清理态跨战斗泄漏)(依据:编排纪律)
战斗中表热重载请求 set_reload_gate(true) 已置位 → D2 门拒绝返回 false(依据:D2 EC8)
衰减段调用时容器已空 decay_round() 返回 0——合法结果、零明细行或聚合零计数(依据:B3 EC13)
清图槽身份为 buff 且授予时已满层 零兑付 + "奖励未生效"行(合法例外);完美板高光行降级不发(完美谓词仍成立,当量入账 = 实际兑付 0);若仅第二份被拒(首份已落地)→ 高光行照发、value = 首份当量 + "奖励未生效"行一条(依据:B4 E11 / Core Rule 13#2)
完美排雷谓词在 RAP 刷新图上 刷新图不产生清图奖励(无兑付点)→ P_perfect 不触发;板级 flag 计数随每次 board install 重置(跨图不累积)(依据:Core Rule 13)
板内既有标中又有误标 完美谓词不成立 → 正常兑付(无高光行)+ 本轮首个误标判定产"标旗未中"零值行(highlight=perfect_broken;重复上报去重)——零误标是全有或全无谓词、无部分完美档(依据:Core Rule 5.2)
多敌(unit_count=3)同结算攻击 行主序逐敌执行循环、共享同一 L(池共享不消耗);任一敌作用后 hero 死亡 → 短路中止剩余敌(顺位即威胁序的可观测面)(依据:Core Rule 10)
道具段击杀造成死亡即不动手 该敌 Dead 后战斗段 query_alive 已不含它——不出现行动行(缺席即指针冻结的明细面);抢杀兑付 = 击杀标记进流水(感知数据前置)(依据:Core Rule 9)
零威胁组合(行 atk=0 ∧ cap=0) 战斗可胜但零风险 = 内容态配置错误(hero atk=0 已被 HeroTable 域下界结构杜绝,战斗恒可定局);护栏 owner = 实现期 ADR/D2 跨字段校验;B1 观测锚 = 战斗轮数异常遥测(进 C3/OQ 清单)(依据:B2 OQ9 并案)
结算开始时 hero hp=0 结构不可达(hp=0 只产生于战斗段 → 短路直入判定段);防御断言:窗口打开前置检查 hero 存活,违反 = debug 断言(编排违例显式暴露)(依据:编排自守)

依赖与输出

方向 系统 性质 接口要点 状态
上游 D2 hard SettlementTable schema 承载(B1 回填 owner)+ ConfigDB 读取 + set_reload_gate() 唯一调用方;零结算随机流(流封闭不变) Approved
上游 A3 hard F1 五条款下游契约(B1 = 条款①②③⑤闭合 owner)+ refresh_board 挖掘期刷新编排 + notify_settlement_done/notify_combat_end 回发 + last_round_end 读取 Approved
上游 A2 hard(订阅) 三事件流订阅(facts 缓冲;A2 唯一回边的订阅端)+ install_board/retire_board 调用方 + Waiting 相位观测量 = 结算触发条件;事件到达序不承载语义 Approved
上游 B2 hard 单位接口全调用面(spawn/query_*/apply_damage/advance/default_target/ambush_grant_plan/despawn_all)+ B2 义务①–⑥ Approved
上游 B3 hard 状态容器五 API 全调用面 + B3 义务①–⑧;weaken 锚红警裁决 owner(F0 检查点) Approved
上游 B4 hard 奖励/库存十 API 全调用面 + B4 义务①–⑥(roll_board 恰一次 / 关卡末清库快照计数 / usable_now 组装) Approved
上游 A1 间接 hard 接线 generate(L, D) 换图编排调用方 + actuals 分布 p10 对账输入(F4 报告 C)+ attempt 边界非 scope 事件 + EC5 零合法板 B1 半边上抛 Approved
上游 A4 对账锚(零运行时接口) 条款⑤三腿入账(雷险消解/信息双向/AP 腿)+ 两方向性护栏 + 雾格零特判(B1 无变异分支) Approved
上游 C1/C2 provisional encounter 上下文 (L, D, hero_hp) 供给(begin_battle 入参);跨战斗 HP 持久性;战斗触发 未设计——MVP 冒烟直供(入参封装隔离)
下游 D1 hard(数据供给,未设计——第 10 位) 结算明细流水 = 统一数据源契约(规则 14 行协议);承接呈现义务台账:A2×6 / B2×4 / B3×4 / B4×5 / B1 新增 ×3(高光行强调、完美排雷呈现、EC5 零合法板提示)——缺项即 blocking,随 D1 GDD 门禁评审核对 —
下游 B5 soft(垂直切片) 结算步骤流 = 战斗动画回放脚本源;溢出行/origin_cell 玩家可读形态(B3×B5×2 数据源) —
下游 D4 soft(Alpha) 音频挂点 = 明细行类型流(B4 音频挂钩点事件源) —
下游 D5 soft(Alpha) 教学口径数据源(来源标注/RAP 清零/库存清空/满层溢出/蓄力拍贪雷——经 B1 流水兑现) —
下游 C3 soft(provisional) 条款③⑤对账结果 = 调参约束输入(unit_count>1 破线约束 / 保守地板缺口 / 护栏 A/B 突破条件);P_perfect/D_ref 调参所有权 —
  • 双向一致性核对(systems-index 依赖分层表):B1 ← A3,B2,B3,B4,D2(第 3 Feature 层)· D1 ← A2,A3,B1 · B5 ← B1,D1 · D4 ← A2,B1 · D5 ← A2,A3,B1 · A2 事件面 referenced_by 含 B1(订阅边)。
  • C3 消费 B1 对账结论的事实依赖成立——C3 GDD 定稿时须回写索引(对账输出 = 调参约束清单,非运行时接口)。
  • B1 是项目首个全部玩法上游均已 Approved 的系统(除 C1/C2 外),无 provisional 上游假设。

呈现数据面义务(B1 无自有渲染面,呈现归 D1/B5)

编号 数据面义务 归属/呈现
1 结算明细屏 = MVP 战斗本体:数据源 = 规则 14 流水行协议;每行 value 数值在暗色底上须高对比(明细屏是 MVP 数字密度最高的屏) 屏级布局/节奏/滚动形态归 D1/B5
2 行类型区分 = 形状+色相双通道:未生效四类行(奖励未生效/已消耗未生效/使用被拒/溢出未生效)必须携带形状冗余(icon/划线等),防色弱玩家把"没生效"误读为普通行 D1/B5
3 高光行数据面:perfect_sweep 高光行、标中旗 highlight 标记、清图奖励行 H2 强调标记——B1 只锁行字段;未生效类行按聚合计数呈现(数据可聚合字段已入协议) 强调形态归 D1;target/effect_id 是多敌归因呈现与 icon/极性映射的直接数据源
4 零值伤害行可见性:免伤轮/零输出轮的零值行不得被"零值不显示"优化吞掉(归因链断点) D1/B5
5 音频挂钩点(D4,Alpha)= 明细行类型流:道具(入库)/效果/伤害/判定/高光行 + 负反馈聚合(未生效类行数 >0 时单次结算至多一次——防逐行惩罚轰炸) 挂点事件源归 B1 流水
6 道具使用窗口载荷 = B4 query_inventory 投影 + B1 组装的 usable_now 预判字段(满血治疗包禁选);选择序收集/跳过/窗口时机指示/触发政策归 D1;窗口选择序列 = 回放输入事件;窗口期输入与棋盘不竞争(单意图帧先例) D1
7 结算明细屏数据锚 = 终局判定行(胜负画面的数据锚) D1
8 UX Flag:本系统有 UI 贡献(结算明细屏 + 道具使用窗口)——Phase 4 运行 /ux-design 为其创建 UX 规格先于编写 epics,引用 design/ux/[screen].md 而非本 GDD systems-index 备忘(Phase 5d)

P0 最小闭环

  1. begin_battle(encounter) 六步开战斗:gate 置位 → 容器开域 → encounter 骰 → spawn → install+roll 恰一次 → round_start。
  2. 挖掘期 B1 只缓冲 A2 三事件流,玩家挖格/插旗/停手。
  3. 轮末 Waiting 相位自动触发七段结算(触发只读相位与 last_round_end)。
  4. 授予段三批兑现:雷→伏击、安全格→奖励分流、旗→削弱/标旗未中行、清图→奖励(完美双份)。
  5. 窗口段玩家至多选一件道具或跳过(唯一输入点,选择入回放)。
  6. 增益合成 → 道具 → 战斗段主角先手 + 逐敌还手 → 衰减恰一次。
  7. 判定段:hero 先判负 / 敌清空判胜 / 否则回发 same_board 进下一轮;cleared 轮换图续轮。
  8. 胜负 → battle_over 清理序列(库存关内延续)→ 明细流水回流 D1 呈现与回放对账。

P1 / P2 后置

优先级 内容 后置原因
P1 flag_miss 标错惩罚源路径(候选"敌方伏击 +1":flag_judged{hit=false} 转化 + B3 source_class 新枚举 + 惩罚重复性裁决) A2 OQ1 实测采纳后才上;当前标旗未中行仅为归因痕迹(缺口预检 12 / OQ8)
P1 深度高光形态(#3 标中旗即时 HUD 反馈动画/音画同步;旗落格高亮/姿态反馈) MVP 已落数据面标记 + 当轮兑付;形态随 art-bible 与战斗表现美术测试定(OQ7)
P1 EC5 零合法板玩家侧呈现形态(提示/补偿/回退三选一;"确定性回退已知好种子"候选归实现期 ADR) B1 数据面已就绪,形态归 D1 裁决(OQ5)
P1 C1/C2 真实遭遇供给接线(begin_battle 入参改真实遭遇上下文 + 跨战斗 HP 持久性) C1/C2 未设计,MVP 冒烟直供(缺口预检 5 / OQ6)
P2 回放切点续玩端到端(快照恢复驱动) 生效条件 = D3 实现(AC-34 deferral)
P2 真 A1 端到端集成冒烟(换图 generate 真实集成、attempt 重试语义、非法产物真分布) 生效条件 = A1 实现落地(缺口预检 10)

调参表

SettlementTable schema(单行全局,B1 回填 owner——Rule 4 豁免:单行全局常量/结构表,HeroTable/ActionEconomyTable 先例)

字段 类型/域 默认 owner 说明
equivalence_ref_damage(D_ref) int [1, 999] 12 C3(provisional) 当量参考敞口(F1);变更触发全对照表 + 条款③⑤对账重跑(联动义务,禁独立调参)
p_perfect percent {100, 200} 200 C3(provisional) 完美排雷清图奖励第二份兑付触发(100 = 仅高光无第二份、200 = 真实双份交付);非整数倍数乘数无运行时载体,域外加载致命;上界受护栏 B 约束(双读数 24 / ≈8——裁决归 C3)
segment_order StringList [grant, item_window, buff_debuff, item, combat, decay, verdict] ✗ 结构冻结 段序骨架的零字面量载体;加载期校验恒等于拍板段序,违例致命(防实现乱序静默漂移)
source_label_map Dictionary(source_class → 文案键) 封闭枚举全覆盖 ✗ 结构冻结 source_class → D1 呈现文案映射键(P2 归因呈现侧数据源);键集 = B3 source_class ∪ {道具/判定扩展, enemy_action, flag_miss, hero_attack};新增键 = 接口漂移
effect_pool_map Dictionary(effect_id → pool) attack_up→hero_offense · defense_up→hero_defense · weaken→enemy_output · ambush→flat_attach ✗ 结构冻结 效果语义映射(F2);新 effect_id 上线须随批登记映射,悬空 effect_id = 加载期致命(引用型字段 dangling_ref_policy)
pool_clamp_lo / pool_clamp_hi int(pp) −100 / +100 ✗ 结构冻结 percent 池地板域(F2);乘数域随之 [0, 2]
round_direction enum {floor} floor ✗ 结构冻结 乘区取整方向(F2——单一取整规则,结构性非 knob)
damage_a_per_cell int ≥ 0 1 C3(provisional) 伤害A 开格充能/格(护甲克制批——充能与结算归 B1 战斗段)
damage_a_cap int ≥ 0 8 C3(provisional) 伤害A 单轮充能封顶(0 = 不封顶——防连锁轮失控)
damage_b_per_flag int ≥ 0 2 C3(provisional) 伤害B 标雷充能/首次标中雷(每雷实例一次去重)
armor_effectiveness Dictionary {base, dmg_a, dmg_b} × {none, a, b} 特化 ×150 / 无甲 ×100 / 对位 ×50 键集 ✗ 结构冻结 / 数值 C3(provisional) 伤害类型 × 护甲克制矩阵——主角攻击三分量各自查表后 floor 相加;敌种甲型映射归 EnemyTable.armor_type
  • 加载校验:effect_id 主键唯一(ConfigDB 既有);effect_pool_map 键 ⊆ StatusEffectTable 活行集(跨表悬空致命——B4→B3 首引激活先例同款);segment_order 违例致命;p_perfect ∈ {100, 200}(载体域,域外加载致命;100 = 完美必须 ≥ 不加倍的机制语义下界)。

Knob 表

Knob 默认 调过高 调过低
equivalence_ref_damage 12 全当量表膨胀 → 条款③左臂虚高、锚裕度失真(重跑强制) 当量坍缩 → weaken 锚第二腿破线(m_w ≥ 60 下界的前提失效)
p_perfect 200 载体域封顶 200(C 量级上调走 B4 clear 池 knob,须与护栏 B 口径联动复核:防钓鱼线 D_ref 读数 24 / DPS 严格读数 ≈8) =100 → 第二份兑付不触发(完美仅剩高光行、无实质增量——情绪奖励感最弱档,机制空转)
  • 非 knob(结构冻结,修订走 GDD 流程非调参):段序骨架、乘区结构(两池乘算)、floor 取整、池 clamp 域、明细行协议、零随机、结算触发 = Waiting 相位、调用序(query_attack→apply_damage→advance)、衰减恒执行。
  • Knob 交互:D_ref × m_w × m_d × duration_d(锚两腿与条款③ V_safe 共用 D_ref——defense_up.magnitude/duration 已纳入"禁独立调参"联动网络;B4/B1 共裁 m_w、C3 投 m_d 时须同步核对 D_ref 并重跑条款②③⑤);p_perfect × C(clear 池当量)——护栏 B 联动;D_ref × 条款⑤ s_ref(同值引用——改 D_ref 即改结算强度参考,两条款重跑);damage_a/b × armor_effectiveness × EnemyTable.armor_type——C3 联动网络 #6(敌种甲型变更须复算 Boss/普通战 K 区间)。
  • 调参所有权:全部 knob provisional 归 C3;每次调参须重跑 F1 对照表 + 条款②③⑤预检并同步 registry(接口漂移义务——B2/B4 同款条款);actuals p10 交付后的强制重跑义务见对账清单 #6。

边界参数总表

参数 边界 默认 出处
percent 池 clamp [−100, +100] pp,每池独立收口 — F2
池乘数域 [0, 2](= 1 + pp/100) — F2
m_w(weaken 行值) [60, 85] −65 F0 裁决(瞬时当量口径)
地板交叉层数 ⌈100/m_w⌉ = 2(值域内恒 2) — F0
P_perfect 载体域 {100, 200},域外加载致命 200(×2 双份交付) 规则 13
D_ref(当量参考敞口) [1, 999] 12 SettlementTable
HeroTable.atk [1, 999],0 加载拒绝 6 2026-09-11 拍板
伤害 D' 整数 [0, ∞),零负值分支 — F3
D' = 0 不调 apply_damage,产零值伤害行 — 负值分支禁令
取整 floor,单一规则(结构性,非 knob) — F2
溢杀 丢弃,不转移、无负 hp 态 — F3
治疗 hp' = min(hp + power, max_hp) — F3
伤害A 充能 单轮池 ≤ damage_a_cap(0 = 不封顶);轮末清零 1/格 · cap 8 F6 / SettlementTable
伤害B 充能 首次标中雷每雷一次去重;无 cap(AP 预算天然限界);轮末清零 2/雷 F6 / SettlementTable
甲效矩阵 键集 {base, dmg_a, dmg_b} × {none, a, b} 结构冻结;逐分量查表 floor 后相加 特化 ×150 / 无甲 ×100 / 对位 ×50 F6 / SettlementTable

验收标准

测试口径

口径 要点
测试载体 Core-Battle 全集成冒烟:godot --headless --script(脚本 extends SceneTree 以获得 quit(code);ConfigDB/RngService autoload 由脚本显式实例化)
真假声明 真 A3(相位机全 API)+ 真 B2/B3/B4(class_name 直引实例化;多敌腿复用 enemy_multi_unit 夹具根)+ 真 A2 规则引擎(板走既有登记规格 b_spawn/b_flag/b_batch/b_chain/b_fog/b_mine_walk;挖掘/插拔/停手经 settle_batch 真驱动——冒烟扮演 D1 提交意图)
A1 桩 程序构造产物桩:换图 generate 调用点按登记序列返回 schema 坐标级程序构造板;每次调用经 open_stream("board_gen") 取号恰一次(与真 A1 取号契约同构,scope 轨迹断言真实);attempt 重试不重开 scope 的语义归真 A1(deferral);真 A1×A2×B1 端到端集成冒烟与 A1×A2 双包含端到端同槽(生效条件 = A1 实现落地)
C1/C2 provisional:begin_battle(encounter) 入参冒烟直供(encounter 坐标复用 B2 行集登记 (L_g,D_g)/(L_a,D_a);hero_hp 按腿直供 max_hp/低值/缺血压值)
D1/B5 断言面 未设计 → 步骤流捕获列表(主断言面)+ 回发捕获(notify_settlement_done/notify_combat_end)+ set_reload_gate 调用捕获;窗口选择与刷新意图 = 冒烟扮演 D1 经 B1 提交面注入
A2 事件载体 事件外发载体(signal vs 回调)归实现期 ADR——依赖真 A2 事件流驱动的 THEN 子集在 ADR 落地前为纸面契约;备选 = A2 半真(事件注入面直喂 facts 缓冲 + A3 真,断言口径不变);本节优先真 A2 全集成,半真仅为 ADR 前过渡载体
被测面 begin_battle(encounter) · 窗口选择提交面 · 刷新意图提交面(refresh_board 挖掘期刷新编排)· 结算事务(内部触发,经 A2/A3 驱动到达);段序断言 = 步骤流行序(授予类行 < 窗口标记 < 效果行 < 道具行 < 伤害/蓄力行 < 衰减行 < 判定行——全序断言)
只读观测量 A3 ap/rap/phase/last_round_end · B2 query_alive/query_beat/query_attack/default_target · B3 query_active(六归因字段+快照载荷)· B4 query_identity/query_inventory · RngService 公开 scope 计数器(board_gen/reward_roll 双流——roll_board/generate 恰一次的观测面)· 诊断收集器
期望值纪律 全部 knob 按当前 ConfigDB 表读值推导、不写死;记号:D_ref(equivalence_ref_damage)/ P_pf(p_perfect)/ m_w(weaken.magnitude)/ m_d/D_a/M_a(defense_up)/ m_amb(ambush.magnitude)/ c_r(所在行 cap)/ a_g/h_g(goblin)/ a_e/h_e/m_e/u_c_f(bugbear)/ M_h(HeroTable.max_hp)/ A_h(HeroTable.atk)/ p_i(RewardTable.power)/ AP_r
结构定值断言 合法集:segment_order = 拍板序、pool_clamp_lo/hi = −100/+100、round_direction = floor、effect_pool_map 四键、armor_effectiveness 键集 {base, dmg_a, dmg_b} × {none, a, b}、行类型封闭枚举 13 类、公共字段 + 行类型特有字段分层、source_label_map 键集封闭(含 enemy_action/flag_miss/hero_attack)
SKIP 与生效前提 依赖修订后基线的腿(如 m_w ≤ −51 使 2 层即越域;m_d=−30 使 defense_up 叠满脱离地板边界读法)前提不满足时输出显式 SKIP 防 CI 静默、不假失败;registry 对账 AC(AC-41)在回执落地前失败 = 裁决未兑现的正确信号(不写软口径)——现行回执在案(F0 裁决批 + 重算批),AC-36/41 按现行值链断言
登记常数 A2 板登记常数与 B2 行集登记坐标直接复用不重制;B1 新增 σ 登记轨迹(身份依赖腿——如"双治疗包""刀全灭敌""清图槽身份",master=42、经 derive_at 测试通道推导、预推进按 B4 时序口径)+ 登记构造序列(板 × 意图序 × 期望行数);登记后第二人独立推导复核,失效处置 = 先复核登记、无误即实现缺陷;每用例先 reset_diagnostics()
夹具策略 默认根 b1_default = D2 全表清单 + SettlementTable 默认行(D_ref=12 / P_pf=200 / 拍板段序 / source_label_map 封闭全覆盖 / effect_pool_map 四键 / clamp −100/+100 / floor / 充能三参数 1·8·2 / 甲效矩阵默认值);致命根 ×3 独立进程:b1_segorder_bad(段序置换)/ b1_poolmap_dangling(ghost_effect 键)/ b1_pperfect_oob(p_perfect=99);SettlementTable schema 程序构造承载域校验全谱;板 = A2 既有板规格复用;行为夹具根经 --data-root= 注入(仅 debug、不入 data/tables/);各 AC 声明其板/根、用例间无顺序依赖
致命类收窄 恰三行致命 manifest(独立 headless 进程、游戏通道):segorder_violation → ≠0 · poolmap_dangling → ≠0 · pperfect_oob → ≠0;负空间声明(编排自守 fail-fast 断言——new_board 违约守卫、窗口打开前置 hero 存活断言、一事件双转化守卫、单一结算事务在飞——违规路径不可由公开 API 构造)不经冒烟断言、不入 manifest,行为级证据 = 正腿断言 + AC-43 静态扫描;其余致命类别由 D2 AC-2 同类别 loader 级夹具承载
out-of-scope D1 呈现全域(生效条件 = D1 义务台账 A2×6/B2×4/B3×4/B4×5/B1×3 登记,缺项即 blocking)· B5 消费与可读形态 · D4/D5 音频教学(数据源 = 本节流水行)· C3 全部 provisional 数值(每次调参重跑 AC-35/36/37/39/40/44 对账族——D_ref × m_w × m_d × duration_d 禁独立调参)· A1 actuals p10 重跑 · 条款⑤护栏 playtest 观测面(弃图率雾板分层/速杀退化/零伤害死局遥测——B1 仅供遥测锚)· m_w 修订终值 · flag_miss 惩罚源路径 · C1/C2 真实供给 · 深度高光形态 · 事件外发载体 ADR · attempt 重试细节

AC 清单(Given-When-Then,编号不变)

AC Given When Then 覆盖
AC-1 b1_default 经 --data-root 注入干净加载 冒烟脚本读 SettlementTable 八字段在位:segment_order ≡ 拍板序 [grant, item_window, buff_debuff, item, combat, decay, verdict](结构定值恒等断言);effect_pool_map 四键逐一 = 定稿映射;clamp −100/+100、round_direction=floor;D_ref 仅域断言 [1,999]、P_pf 域断言 {100,200};source_label_map 键集 ⊇ B3 source_class ∪ {道具/判定扩展, enemy_action, flag_miss, hero_attack};同根跑 B4/B3/B2 默认根加载零跨表冲突诊断 规则 16 / schema 定稿
AC-2 segment_order 置换根 b1_segorder_bad(如 item_window 与 combat 互换) 独立 headless 进程游戏通道加载(collect_only=false) 进程非 0 退出且错误清单含 segment_order 类别(防实现乱序静默漂移的进程级落点) 规则 16/4
AC-3 映射含 ghost_effect 键根 b1_poolmap_dangling 独立进程游戏通道加载 非 0 退出、错误含跨表悬空类别(引用型字段 dangling_ref_policy) 规则 16
AC-4 SettlementTable schema 类直引实例 validate() 作用于 p_perfect ∈ {99, 150, 1000} 各含域错误类别(载体域 {100,200}——非整数倍数无运行时载体);p_perfect = 100 与 200 零诊断;腿 2:b1_pperfect_oob 独立进程加载 → 非 0 退出(manifest pperfect_oob) 规则 16/13
AC-5 全新 B1(Uninit)+ 真 A3(Idle)+ 真 B2/B3/B4 全新实例 + A1 桩登记首板 b_spawn + master=42 begin_battle(encounter) 步骤流/调用捕获全序恰一次:set_reload_gate(true) → B3 notify_battle_start → encounter 骰(unit_count 区间定本战实际数量——遭遇随机化增补) → B2 spawn(override 数量)→ A2 install_board + B4 roll_board → A3 notify_round_start(phase=Active);encounter scope = +1、reward_roll scope = +1、board_gen scope = +1(各恰一 scope);query_alive(enemy) = 本战实际数量个行值快照单位(默认根 unit_count=1 定值行骰退化为 u_c);A2 事件捕获含初始展开批;B3 query_active 双侧空 编排专章战斗开始序列 / 规则 16① / B4 义务⑥ / C3 修订批 X-6
AC-6 构造至 A3 Waiting 且 last_round_end 可用(stopped 轮——经真 A2 settle_batch([stop]) 到达) 腿 1:结算事务受理;腿 2:装载层置换 {flag_judged 批, round_end} 两组到达先后分别驱动(捕获-重放,不增设 B1 注入 API) 腿 1:触发判定只读 A3 相位与 last_round_end(事件捕获序 = A2 管线序,结果正常);腿 2:两遍结算步骤流逐行相同(到达先后不承载语义) 规则 2 / A2 义务①
AC-7 b_flag 满构造结算(挖掘 ≥1 奖励格 + 插 (1,4) hit 旗 + 停手收轮;σ 登记使奖励格含道具类身份) 结算事务解析 步骤流行序全序断言:授予段行 < 窗口标记(open——段界锚)< close/skip < 效果行 < 道具行 < 伤害/蓄力行 < 衰减行 < 判定行;任一段缺行以段界锚与行类型域断言序(空段合法);窗口标记恒存在(零选择 = skip 恒登记);segment_order 表值经 AC-2 恒等拍板序——实现读表驱动非硬编码 规则 4 / B4 义务① / 规则 14
AC-8 b_batch 部分挖掘后 stopped 收轮、结算完成(判定行 = 继续) 出口分发 回发捕获恰一条 notify_settlement_done(same_board) → A3 notify_round_start(Active、ap=AP_r 硬重置、rap 保留);A2 板状态延续(旗集/已开集不变);board_gen/reward_roll scope 计数器零变化 编排专章继续腿 / A3 Rule 5
AC-9 b_flag 登记构造轮(挖掘 n 格含 m₀ 雷格 + 插 f 旗含 h₀ hit) 轮末结算;同轮事件批重复投递(装载层故障注入) 每格受理恰一次:B4 grant 恰 n_safe 次、B2 ambush_grant_plan 恰 1 次、apply_effect(weaken) 恰 h₀ 次、apply_effect(ambush) 恰 granted 次;处理序 ≡ A2 cell_revealed/flag_judged 行主序(B3 义务①落地);重复投递 → 步骤流与容器终态 = 单次投递结果(缓冲去重);B3 不去重、B4 幂等仅兜底(诊断零"重复受理") 规则 3/5 / B3 义务①② / B2 义务② / B4 义务②
AC-10 σ 登记挖掘格身份含 buff 类与道具类各 ≥1(腿 1);b_spawn install 后首轮(初始展开 35 格已发生——channel=initial、reward_eligible=false)(腿 2) 授予段解析 腿 1:buff 格 → apply_effect(effect_id, source={safe_cell, origin_cell, round_index})(六归因字段逐一 = 调用实参);道具格 → stock(item)(库存逐件来源 {cell, round} 可归);即时类当场兑付:instant_aoe = 逐存活敌 apply_damage(u, power) + 单条伤害行(target=all_enemies + count 字段)、instant_heal = clamp 回复 + 治疗行(满血 → "奖励未生效"行零兑付)——零 stock 零窗口;B4 只定"给哪行"、层数语义归 B3 合并(同轮双 buff 格 → 单实例 L=2);腿 2:grant/stock/apply_effect 捕获全零(R₀ 不入奖励库);channel 字段零特判(同板 chain/dig 格正常入库成对照) 规则 5.1 / A2 义务②
AC-11 σ 登记使同轮/邻轮 defense_up 达 M_a 层满 第 M_a+1 层授予受理(B3 apply 返回 false) 产"奖励未生效"行:零折算、携带可聚合计数/批次字段、source 归因完整;B3 容器逐字不变(拒绝原子);连锁批量授予溢出 = 显式接受(b_chain 13 格批量腿:溢出件逐件入行、零转换补偿) 规则 5.1 / B4 义务② / B3 义务⑧邻接
AC-12 b_flag 插 (1,4) hit 收轮(腿 1);续轮再停手(A2 重报 {(1,4), true})(腿 2);拔 (1,4) 重插再收轮(腿 3);AC-28 换图后新板同坐标旗靶(腿 4);插 (0,3) miss 旗收轮(腿 5) 结算 腿 1:apply_effect(weaken, source={flag_hit, (1,4), round_index}) 恰一次 + 效果行携带 highlight 标记 + 资格消费入集合;腿 2:零 weaken 兑付、零明细行(重复兑付从未发生)+ debug 诊断可选、资格集合不变;腿 3:仍零兑付(资格以雷格实例为键);腿 4:兑付恢复(新实例资格重置);腿 5:"标旗未中"零值行恰 1 条(source=flag_miss、value=0、highlight=perfect_broken、聚合计数)+ 续轮重报零新增行(每雷实例一次去重)+ 换图新板重新产行 规则 5.2 / A2 义务③ / 规则 13
AC-13 b_spawn 挖尽未开 8 格触发 cleared + σ 登记清图身份(腿 1);σ 登记清图身份 = defense_up 且已满层(腿 2);AC-28 场景 refresh 图(腿 3) 结算授予段 腿 1:grant_clear() 恰一次(同批次重调幂等兜底——诊断零新增)、兑付分流同 AC-10(source=clear_reward)、当轮窗口即可选用;腿 2:零兑付 + "奖励未生效"行 + 完美板高光行捕获零次(首份即零兑付不发高光;完美谓词仍成立,对账入账 = 实际兑付 0);对照腿:仅第二份被拒(首份落地)→ 高光行在案且 value = 首份实际当量 + "奖励未生效"行一条;腿 3:refresh 图 grant_clear 捕获零次(roll 照常、兑付不调) 规则 5.3 / B4 义务③ / B3 OQ4
AC-14 b_flag 登记构造轮:单轮挖掘雷格 mines_r = 6(登记走位序列;cap = c_r = 4 表读值) 结算授予段 ambush_grant_plan(6, c_r) 恰 1 次 → {granted=4, overflow=2}(守恒);前 4 颗(事件规范序)逐颗 apply_effect(ambush, source={mine_hit, origin_cell, round_index})(B3 伏击池 L=4);overflow 2 颗逐颗产"溢出未生效"行(含来源 + 聚合计数);战斗段各敌伤害行 attach 分量 = 4×m_amb(池读值即时性);轮末衰减行 k 含伏击实例(dur=1 蒸发);重复投递判别同 AC-9 规则 6 / B2 义务②⑥ / B3 义务⑧
AC-15 战斗中 hero 满血 + σ 登记库存含治疗包(腿 1);扮演 D1 强制提交满血治疗包(腿 2);提交多件 [刀₂, 刀₁] / 单件 / 零选择(腿 3);无库存轮(腿 4) 结算到达窗口段 腿 1:窗口清单 = query_inventory 投影 + B1 组装 usable_now(治疗包 false——B1 读 B2 hero hp 判定,B4 诊断零"血量查询"新增);伤害道具恒 true(窗口打开时存活敌 ≥1);腿 2:"使用被拒"行 + 包 InStock 不变(use 未调);腿 3:多件 → 仅首件受理(违例诊断、刀₂生效刀₁不消耗);单件 → 生效;skip → 窗口标记 close/skip、段序零停顿、库存不变;腿 4:窗口标记照常 skip(呈现政策归 D1——数据面 = 窗口清单空) 规则 7 / B4 义务④前半 / D1 义务②对侧
AC-16 begin_battle hero_hp = M_h − 2 + σ 登记库存含治疗包 ×2(power = p_i) 窗口提交 [包₁, 包₂] 仅包₁受理生效(治疗行 hp' = min(M_h−2+p_i, M_h)——部分回复钳满)、包₂零调用(InStock 不变)+ 编排违例诊断("窗口至多选用一件");满血守卫保留为纵深防御(跨结算场景仍可达:本结算被拒后下一结算窗口再判) 规则 7/EC / B4 义务④
AC-17 同轮两次 weaken 授予(互异 origin_cell)(腿 1);defense_up 行与 weaken 行同轮(腿 2);enemy_multi_unit 根同轮 weaken L=1(腿 3) 增益/减益段解析 腿 1:效果行恰 2 条(按 apply_effect 调用流水展开、非按容器单实例),每行 origin_cell 逐一 = 授予值、effect_id=weaken、value = 该次授予贡献值(L×m_w 投影)、pool_value = 池合成值(两行各 −65 贡献、pool_value = −130——合成值不入 value 字段);腿 2:效果行 pool 字段经 effect_pool_map 自 effect_id 派生 = hero_defense / enemy_output;腿 3:全体存活敌伤害行均含减伤合成且 target 逐一可归(side-wide 多敌兼容读法) 规则 8 / B3 义务③⑤⑦
AC-18 同结算 weaken L=1 存活 + σ 登记库存含刀(腿 1);enemy_multi_unit 根 + σ 登记刀 ×3(每结算至多一件、跨结算序列)(腿 2);hp=2 残敌 + p_i=4 刀(腿 3) 道具段 腿 1:伤害行 value = p_i 恒定、零乘区(分量字段无池修正项——"不吃任何 percent 修正"的行级判别);腿 2:每条伤害行 target = default_target() 返回(顺位最前存活敌)、击杀标记出现于目标 hp ≤ p_i 的件、[0] 死后下一结算顺延 [1]→[2]、击杀标记共 3 个;query_beat 冻结(指针冻结进流水);后续结算战斗段 query_alive 不含它、零行动行;腿 3:死、行 value = p_i、击杀标记布尔、无溢出量字段、零转移(下一件打 default_target 后继) 规则 9 / B2 义务⑤ / B4 义务④
AC-19 hero 满血 + 库存治疗包(腿 1);AC-20 场景敌已全灭 + 满血 + 提交治疗包(对照腿) 提交选择 "使用被拒"行、零 use 调用(不烧包);满血守卫 = 表局部判定(max_hp 对比)、敌全灭构造下仍拦截(守卫不读存活集的不对称可判定形式);clamp 部分回复见 AC-16 规则 9 / B4 义务④ / EC
AC-20 单件制 + 窗口结构推论(窗口打开时存活敌 ≥1 ∧ 单件恒打顺位最前存活敌) 负空间声明(违约路径不可由公开 API 构造) 窗口提交的刀恒有目标——"已消耗未生效"行在单件制下不可达;零效果判定逻辑保留为防御分支(读 B2 存活集),恢复多件制时本 AC 随批复活;击杀标记断言由 AC-18 腿 2 承载 规则 9 / B4 义务④ / EC
AC-21 encounter=(L_g,D_g) 单 goblin(腿 1);(L_a,D_a) 连续结算(腿 2);全结算 advance 捕获(腿 3);enemy_multi_unit 根(腿 4) 战斗段解析 腿 1:调用捕获序 = query_attack → apply_damage → advance(每存活敌恰一次 advance)+ 衰减行前完成;腿 2:beat 轨迹 = p_e 序、每结算 advance 恰 1;腿 3:advance 捕获实参 ∈ 敌句柄集、零 hero 句柄(B2 对 hero 句柄拒绝为兜底);腿 4:行动/伤害行序 = 生成序且每行 target 字段可归至对应单位 规则 10 / B2 义务①
AC-22 b_mine_walk 单雷轮(L=1)+ goblin attack(腿 1);登记构造轮 L_amb=2 + weaken L=1 同轮(腿 2);b_flag 双 hit 旗同轮(weaken L=2;非平凡前提 m_w ≤ −51——F0 修订回写后恒满足,不满足时 SKIP 标记)(腿 3);defense_up 叠满同结算 P_pool = 2×m_d(腿 4) 战斗段攻击拍 腿 1:伤害行携带 {baseline=a_g, attach=m_amb, 终值}、source_class=enemy_action、target = 受击单位句柄;L=0 轮 attach=0(自然读值);腿 2:D' = floor(D_raw × (100+P_e)/100 × …) 按表读值推导;腿 3:效果行显合成值 2×m_w 与终值两端、伤害行 value=0、apply_damage 捕获零次、B2 hero hp 不变、诊断零新增;weaken dur=1 轮末蒸发(下轮恢复常态伤害);腿 4:现行 −30 下 P_pool = −60 域内、乘数 0.4 无 clamp 腿——D' = floor(D_raw × 0.4 × …) 按表读值推导(免伤轮现行可达路径 = 腿 3 weaken 饱和;地板恰边界读法 P_pool = −100 由 F2 判据函数输入断言承载——AC-37) 规则 10 / F2 / F3 / B3 义务③ / EC
AC-23 (L_a,D_a) 结算 1 attack 后结算 2 构造挖雷 ×1(L_amb=1)(腿 1);enemy_multi_unit 根同步轮转至 charge 拍(腿 2) 战斗段(charge 拍) 腿 1:蓄力行(数字兑现面)+ query_attack 读值零作用 + 零伤害行、hero hp 不变;授予段伏击授予行在案(先授予后蒸发对照);轮末衰减清池(下轮 attach=0);腿 2:恰 u_c_f 条蓄力行、零 apply_damage、hero 承伤 0(合法状态非错误) 规则 10/EC / B2 EC8 对侧
AC-24 enemy_multi_unit 根 + begin_battle hero_hp = 4 直供 首结算战斗段(敌[0] attack 分量 ≥ 4) 敌[0] 伤害行后 hero hp=0 → 短路:敌[1]/[2] 零行动行、零 advance 捕获、径入衰减段(照常)→ 判定行 = 战斗失败(hero 先判防御腿——双死结构不可达不构造,判定行次序字段可读);battle_over 序列触发 规则 10/12 / EC / B2 义务③
AC-25 enemy_multi_unit 根 + 登记轮 L_amb = 2(双雷) 战斗段逐敌解析 敌[0]/敌[1]/敌[2] 伤害行 attach 分量均为 2×m_amb(共享、非均分/消耗——每敌 query_attack 读同一 L);中途无池写捕获 规则 10 / B2 F2
AC-26 任一 AC 场景(腿 1);末图清图胜利结算(AC-13 腿 1 场景 + 敌已全灭构造)(腿 2);全 dur=1 上轮清空后的结算(腿 3) 结算 腿 1:衰减行恰 1 条/结算(k 记入行值)、decay_round 调用捕获恰 1 次;腿 2:判定行 = 胜利之前衰减行在案(先兑付后衰减时序契约;battle_end 全清兜底使两序同终态、次序钉死为段序);腿 3:衰减行 k=0(合法零行/聚合零计数) 规则 11 / B3 义务④⑥
AC-27 敌全灭结算(腿 1);失败(腿 2);继续(腿 3) 判定段 腿 1:判定行 = 战斗胜利 → battle_over 序列(AC-31);腿 2/3:见 AC-24/AC-8;判定行公共字段 + 终局行在案(胜负画面数据锚) 规则 12
AC-28 b_spawn cleared 判定 + A1 桩登记板序列 [板₂](程序构造、坐标级登记)(腿 1);桩登记返回带非法产物标记板(腿 2) 出口分发 / install 腿 1:调用捕获全序恰一次:A2 retire_board → B4 retire_mapping → A1 generate(board_gen scope +1——attempt 重试零额外取号)→ A2 install_board → B4 roll_board(reward_roll scope +1——每图恰一次)→ notify_settlement_done(new_board) → notify_round_start;新板资格格 roll 照常、grant_clear 零调用;完美计数随 install 重置;腿 2:install accepted(编排不拒产物)→ B1 上抛玩家侧呈现请求(回发捕获含呈现请求事件 + 数据面 = 非法标记,形态归 D1);A2 install 拒绝(不变式违例)= fail-fast 上抛(程序级非玩家域) 编排专章换图腿 / B4 义务⑥ / EC
AC-29 Active 且 rap ≥ rap_refresh_cost(腿 1);同轮第二次提交(腿 2);第三次提交(腿 3);rap < cost(腿 4) 扮演 D1 经 refresh_board 提交刷新 腿 1:A3 request_refresh → true、rap=0、phase 不变(无结算段、无 round_end)→ 换图全序恰一次(A2 retire → A1 generate → A2 install → B4 roll_board;board_gen/reward_roll scope 各 +1);同轮续挖可证新图;腿 2:第二次完整编排;腿 3:拒绝(resource_face——refresh_cap_per_round=2);腿 4:false、状态不变(非编排错误) 编排专章 / A3 Rule 11/EC13/EC15
AC-30 stopped 轮与 ap_exhausted 轮(各构造)(腿 1);cleared 轮(腿 2) 出口分发 腿 1:notify_settlement_done(same_board) 恰一条、new_board 回发零次、retire/generate/roll 捕获全零(本编排无刷新提交面);fail-fast 守卫半 = 自守 debug 断言(内部违约路径不可由公开 API 构造——负空间,契约源 = registry action_economy.rap_rules,存在性由 AC-43 扫描域 + 代码评审承载);腿 2:cleared ⇒ new_board 恰一(AC-28 全序——两腿合成契约全貌) 编排专章 / A3 rap_rules / 强制检查点③
AC-31 判定行 = 胜/负任一(腿 1);末层 victory 或 defeat(腿 2);清理序列注入重复调用(诊断注入构造)(腿 3) battle_over 序列 / level_clear() / 清理中 腿 1:捕获全序恰一次:B4 retire_mapping → B2 despawn_all(query 双侧空)→ B3 notify_battle_end(query 双侧空)→ A3 notify_combat_end(phase=Idle、rap=0)→ set_reload_gate(false);clear_inventory 不在 battle_over 序列中(缺席本身为断言腿:battle_over 后 query_inventory 逐字不变);腿 2:clear_inventory 恰一次 + 返回清空前快照计数("剩余道具 ×N 随关卡结束清空"反馈行数据面;折算结构位归 C2);此后 stock/use → false + 诊断;腿 3:debug 诊断 + 序列剩余步骤照常完成(幂等守卫兜底 false);后续 begin_battle 正常受理(防半清理态泄漏尾腿) 编排专章 battle_over/level_clear 腿 / B4 义务⑤ / EC
AC-32 AC-5 战斗开始序列完成后(gate 捕获 = true 在案)(腿 1);AC-31 battle_over 完成后(腿 2) 经 ConfigDB reload()(debug 构建) 腿 1:返回 false、ConfigDB 值不变、config_reloaded 不发("战斗中真的被置位"由编排真调用承载);战斗中经测试通道换根直调 load_tables(collect_only=true) 读值不受门约束(通道区分);腿 2:reload() → true 且 config_reloaded 恰一次 规则 16 / D2 EC8 / 强制检查点①
AC-33 两套全新全栈实例(同 master=42、同根、同板登记序列、同 encounter);判别腿:仅窗口选择序列不同(同意图) 同一意图序列 + 窗口选择序列驱动两遍(定长场景:含挖掘/连锁/插旗/停手/窗口选用/刷新换图至少各一) 两遍步骤流逐行相同(行数/行序/全字段含 value 与归因——target/effect_id/pool_value 均为输入的确定函数,逐行相等断言域含之);判别腿:仅窗口选择序列不同 → 步骤流在窗口标记处分歧、其前逐行相同(窗口选择序列确为回放输入);确定性来源行为面:B1 全程零 RNG 调用(AC-43)+ 表值快照 + attempt 非 scope 事件 规则 15 / 强制检查点② / D2 AC-15
AC-34 AC-29 腿 2 连环刷图场景 任一结算回放切点取快照(master_seed + 双流 scope 计数器 + 意图序列 + 窗口选择序列) 无在飞流实例跨界(切点时刻双流计数器 = 已完成 install 数);续玩快照恢复驱动 = 端到端集成冒烟 deferral(生效条件 = D3 实现) 编排专章回放切点 / 规则 15
AC-35 b_flag 构造零误标 ∧ ≥1 标中(仅插 (1,4) hit 旗)→ 挖尽 cleared(腿 1);同构造 + 插 (0,3) miss 旗(腿 2);全板零旗 cleared(腿 3);AC-28 换图后新板零 flag_judged(腿 4);b_fog 雾内插旗(腿 5) 清图兑付 / 结算 腿 1:高光行在案(value = 实际有效兑付当量)+ 清图奖励身份第二份兑付捕获恰一次(道具类身份 → stock 恰 2 次 / buff 类身份 → apply_effect 恰 2 次——玩家实得两件;grant_clear 本身仍恰 1 次;等价入账 = power × P_pf ÷ 100 记号推导);腿 2:无高光行、正常兑付 + "标旗未中"零值行在案(highlight=perfect_broken)(全有或全无谓词、无部分完美档);腿 3:无高光行(hit=true = 0 不满足谓词);腿 4:完美谓词域 = 本板自 install 起(跨图不累积——构造前板含误标 + 换图后新板零误标有标中 → 新板 cleared 触发高光,重置判别正腿);刷新图本身零 grant_clear 无兑付点;腿 5:雾内插旗计入误标(hit=false)→ 破完美(无变异分支) 规则 13 / EC×2
AC-36 默认根 + 登记构造(每活行一 B3 实例:defense_up L=1 / weaken L=1 / ambush L=1×k=1;clear_blast 经 grant_clear 快照) 结算兑付读值(query_active 快照载荷 / grant_clear power)经统一换算式 E(·)(SettlementTable D_ref 读值) E_inst 结论与登记对照表一致(F1 重算回执版):E_defense = |m_d|/100 × D_ref、E_attack = 0.50 × D_ref、E_weaken = |m_w|/100 × D_ref、E_ambush(k=1) = m_amb、E_clear = power ×(perfect ? P_pf ÷ 100 : 1)(真实双份——完美板两件实得、总当量 = 2×power;单一线性换算——各行共用同一 D_ref 读值);锚两腿断言:E_weaken > E_attack ∧ E_weaken ≥ E_dig 推导值(登记常数——重算批回执值);attack_up 活行:hero_offense 池映射在位 ∧ 主角先手攻击伤害行 hero_offense 消费点在案(F3⓪ 基础分量——规则 10 / F3 对账;attack_up 活行口径) F1 / 规则 13 / B3 义务⑤
AC-37 F2 闭合判据函数(语义映射 → 池加算 → clamp → 乘区 → floor)+ 登记构造 以登记构造跑 F2 三例读法(weaken AP 界 8×m_w / 表界 16×m_w / defense_up 叠满 2×m_d——全表读值记号) 判据结论逐一与 F2 表一致:两越域例 clamp 后 M=0;叠满例 M = 1 + 2×m_d/100 域内(现行 −60 → 0.4,无 clamp 腿);地板恰边界读法(M=0 未越域)以判据函数对 −100 输入断言承载;地板交叉层数 = ⌈100/|m_w|⌉ = 2(表读值推导);取整方向 = floor 单一规则(半值例断言);行为级交叉锚 = AC-22 腿 3 F2 / B3 义务③
AC-38 F3 判据函数(三分支全序 + 负值禁令 + 死亡边界)+ 登记例(goblin L=2 → weaken → floor 3 记号 / knife_adv p_i vs hp=6 残敌 / D'=0 分支) 以登记例跑判据 结论与 F3 一致:零负值(任意输入组合判据函数输出域 ≥ 0——参数化扫描)、Dead ⇔ hp=0 零负 hp 中间态、hero 先判优先级;行为级交叉锚 = AC-18/20/22/24 F3 / B2 义务③
AC-39 F4 闭合判据函数 + 登记常数(C3 v3 行值总表:10×10 d0.25 → |M|=23/|S|=77、12×12 d0.25 → |M|=34/|S|=110;ι = 行 target 代 p10 乐观代理;m_d/D_a、m_amb、D_ref 全表读值/登记推导) 对 L1/L2 两板形与满配语境(unit_count=3)跑配对主式 结论与登记一致(双口径断言——重算批回执):L1 裕度 ≈0.48× ✗ / L2 ≈0.47× ✗(锚行口径;期望口径 E_dig=4.5 → ≈0.60×/0.58× 同向破线——双口径登记)/ 满配语境 ≈0.16× 深度破线 ✗ → C3 曲线级约束输出(V_safe 侧杠杆重议——联动网络,F4 结论④);适用域守卫腿:登记构造 n_s < 1(残余集为空)→ 主式不评估、信息端平凡腿接管;信息端平凡腿 P(安全)=1 → V_safe > 0 恒真;registry clause3_supply 重算回执存在性断言;A1 actuals p10 交付后强制重跑 F4 / B2 义务④ / 强制检查点条款③
AC-40 F5 闭合判据函数(修后模型:n_s = (1−ι)×|S|、E[踩雷] = |M|×n_s/(n_s+1)、X_res = E[踩雷]×V_mine、Δr = ⌈(n_s+E[踩雷])÷AP_r⌉、C_eff = C×(perfect ? P_pf ÷ 100 : 1))+ 登记常数(v3 曲线板形同 AC-39 / ι / E_dig 格子池加权推导 / C=clear_blast power / P_pf / AP_r / fog_burden_ratio 登记代表值) 主判式对 L1 无雾态/L2 两板形 × {unit_count=1, unit_count=3} 四态组合 × {完美/非完美} 分支跑 结论与登记约束包一致(重算批回执):L1 −28.7/+11.3、L2 −67.4/−27.4、L1 满配 −153.2/−113.2、L2 满配 −257.1/−217.1——条款⑤未闭合(verdict = 未证明的约束生成器;L1 完美翻正腿在案);实现率折减腿(E_dig×0.6)读数在案(L1 −45.3/−5.3、L2 −91.2/−51.2);保守地板需求输出(L1 ≥ 110.3 / L2 ≥ 166.8);停手侧 RAP 零价假设登记存在性(判据函数输入分解可读);护栏 A/B 行断言 = 登记存在性 + 旧值链待重推注记(护栏 A 方向性复核 −1.1 越下界 / 护栏 B C=40 越线——W2 三选一裁决随 C3 收口批,本 AC 不断言其数值);A4 三腿入账核对(雷险消解/信息双向/AP 腿)逐腿在输入分解中可读;全条为对账断言——非 playtest F5 / 强制检查点条款⑤
AC-41 默认根加载 脚本解析 design/registry/entities.yaml ① status_effect.anchor_warning 含 F0 裁决回执注记(瞬时口径 / 值域 [60,85] 默认 65 / 交叉层数 2 / attack_up 参照回迁口径重跑兑现——重算批注记);② weaken 值域修订注记 + clause3_supply.direction_precheck 闭合回执注记(含 2026-09-14 重算回执——现行值链破线读数);③ clause5_dominance 注记存在(含 C3 裁决 + 重算回执);④ settlement_table 条目存在且十二字段名与 SettlementTable schema 逐一相等(pool_clamp_lo/hi 两字段 + 充能三参数与 armor_effectiveness——W3 字段);⑤ knob 活值(D_ref/P_pf/m_w/m_d)不作定值对账 F0(registry 对账形态)/ 规则 16 / 对账清单
AC-42 全部 AC 场景步骤流捕获全集(冒烟汇总断言) 逐行校验 type ∈ 封闭枚举 13 类(封闭枚举即负空间:新增行类型 = 接口漂移);每行公共字段 type/source_class/origin_cell/round_index/display_name/value/highlight? 全在(origin_cell 板级行可空;highlight 可空枚举 {flag_hit, clear_reward_h2, perfect_broken});行类型特有字段:伤害行/道具行(生效)携 target、效果行携 effect_id + pool_value 且 value = 单次授予贡献值语义;source_class 值域 ⊆ source_label_map 键集 ∪ 判定/道具扩展 ∪ {enemy_action, flag_miss}(新增 = 接口漂移的表侧闸);无来源行 = 断言失败(P2 兜底的机器可判定形式);未生效四类 + 标旗未中行各携带聚合计数/批次字段(非空) 规则 14
AC-43 B1 文件集(编排器/判据函数/步骤流/冒烟脚本/夹具规格)与全项目非 tests/ 文件集 静态扫描 ① 零 randomize()/RandomNumberGenerator/自建 RNG;② 零 extends Control/Node2D、零 .tscn preload + AC-5 headless 实跑通过(合成判定);③ 结算路径 await 零命中(逐字面 warning 级 + 人工复核);④ 编排唯一性单向扫描:全项目非 tests/ 文件集中 B2/B3/B4 API 符号命中文件 ⊆ B1 文件集;⑤ D2 AC-14 人工三要素字面量扫描(行为级硬证据 = AC-22/36/39/40 全表读值推导 + AC-41 registry 对账);⑥ A2/B3/B4 相互直调零命中 规则 1 / 编排不变式③
AC-44 b1_default + 登记构造轮(挖掘 ≥10 安全格〔含连锁——cap 腿 >8〕+ 首次标中旗 2 枚 + 目标甲型三腿:goblin none / bugbear a / ogre_chief b;attack_up 授予 ×1 腿与非授予腿对照) 结算战斗段主角先手攻击(表读值记号:da/ca/dbf/甲效矩阵) 三分量读法逐腿与 F6 一致:A 池 = min(开格数×da, ca)、B 池 = 首标数×dbf;base = floor(atk×(1+P_offense/100))、dmg_a/b = floor(池×甲效/100)、D_hero = 三分量相加(表读值推导不写死);甲效三腿读数 = 特化 ×1.5 / 无甲 ×1.0 / 对位 ×0.5(甲B 对策 = dmg_b 腿——C3 联动网络 #6);attack_up 零泄漏腿:P_offense 变更只移动 base、A/B 分量逐字不变;敌方侧 percent 池零作用(hero→敌方向);cap 截断腿:15 格轮 A 池 = ca(截断入诊断计数、零明细行);轮末清零腿:下一结算 A/B 池 = 0;明细行 {baseline, attach} 分量可还原(充能池公开读值) F6 / W3 / C3 联动网络 #6

版本历史

版本 日期 改动
v2 2026-09-14 两件套迁移:按 v2 骨架重排(设计目的/系统范围/核心循环/领域章节/依赖与输出/P0 闭环/P1·P2 后置/调参表/验收标准)——设计推演(F0–F6 推导、候选取舍、体验锚点论证)与审计元数据(复核注记/对账登记义务清单/AC 覆盖矩阵/缺口预检/开放悬案)迁出至 design/gdd/analysis/b1-settlement.md;规则/数值/AC/EC/依赖零变更,AC 编号沿用
跨评审 B1 重算批 2026-09-14 /review-all-gdds 🔴-1 后半(registry 同批重登回执):F0/F1/F4/F5 按现行三输入重推(duration=1〔两级奖励批〕、m_d=−30〔减伤墙批〕、C3 v3 曲线 d0.25/t0.88 换锚——原 A1 参考行退役)——条款③两参考板形翻为破线(锚行 ≈0.48×/0.47×、期望口径 E_dig=4.5 → 0.60×/0.58×;满配 ≈0.16×),旧"通过"回执(≈2.0×/2.6×)退役为历史记录、破线升格 C3 曲线级约束(V_safe 侧杠杆重议——禁独立调参联动网络);E_dig 重推 7.2→4.5(格子池加权,注入池不摊入)· 条款⑤四态重推(L1 −28.7/+11.3 等;保守地板需求 110.3/166.8,C3 裁决②维持)· F1 对照表按现行行集重登(两级行值 8/16/40 + 注入池 + clear_blast;attack_up 死行注记清除——与 Core Rule 10 先手攻击对账;锚对照实物改 attack_up 行〔registry 回迁口径重跑兑现〕)· F6 充能与护甲克制结算规格(W3——累积时点/单轮 cap/不吃 percent/逐分量甲效查表 floor + AC-44 + F1 对照两行)· W6 挖掘期刷新改每轮 cap 2(RoundStart 重置——A3/registry/D1 同口径)· defense_up.magnitude/duration 纳入禁独立调参联动网络 · AC-22/36/37/39/40/41 改写 · 护栏 A/B 读数挂旧值链注记(W2 复核随 C3 收口批)· 悬案 9/缺口预检 3·7 闭合 · 核心规则表增依据列(lint R8 引用列迁移)
C3 修订批回写 2026-09-14 /design-review C3 修订批(X-6 回执,registry 同批):战斗开始序列增 encounter 掷骰步(RngService 封闭流恰一 scope——unit_count 区间骰定本战实际数量,spawn 增 override 参数 n)· Core Rule 1 零随机扩界注记(实例化骰在结算步流之外,可回放性不受影响)· AC-5 增 encounter scope 腿 · SettlementTable +4 字段(damage_a_per_cell / damage_a_cap / damage_b_per_flag / armor_effectiveness——护甲克制批转正,机制与结算归 B1、C3 投值)· 条款⑤ C3 裁决回执行(约束包② 采信 + clear_blast C=40 缺口重推 6.1/51.8)· 敌种键更名 goblin/bugbear(DND 批对齐)
v1.1-lean 2026-09-13 格式迁移:legacy 原稿按 lean 样例重排——修订注记出正文收敛至本表;散文/枚举/边界情况/AC 转表格;流程转字符画;公式、Variables 与验算数据全保留;语义与 Rev 1 及后续拍板批对齐,零规则变更
D4 修订 2026-09-12 刷新决策前移挖掘期:新增"挖掘期刷新"出口(refresh_board 编排——request_refresh 扣费 → 换图全序,无结算段、轮次不终结),原 Waiting 期刷新代理调用弃用
2026-09-11 拍板批 2026-09-11 主角先手攻击(hero_attack 来源 + F3⓪)、两级奖励裁决(instant_aoe/instant_heal 当场兑付)、道具窗口单件制(>1 件 = 编排违例取首件)、库存关内延续(battle_over 不清库、新增关卡末 level_clear 清库编排)
Rev 1 2026-09-10 design-review 8 项 blocking 核销:完美排雷落真实双份交付载体 + 高光行有效兑付语义/零兑付降级;条款⑤计价模型重推为挖穿残余池口径、verdict 翻转 → C3/B4 约束包 + 多敌验算腿 + ι→1 域守卫 + 护栏 B 输入登记与双读数;流水协议 target/effect_id/pool_value 字段分层 + enemy_action/flag_miss 来源枚举;hit=false"标旗未中"零值行(每雷实例一次去重);P_perfect ÷100 换算成文 + 载体域收窄 {100,200};AC-18 腿 2 改写;F4 V_safe 标签更正 + 期望口径敏感性读数;clamp 统一八字段——明细见 reviews/b1-settlement-review-log.md
v1 2026-09-10 一次会话定稿:F0–F5 + 43 条 AC + 23 条上游义务落位;F0 归一口径裁决(每结算瞬时当量,m_w 值域 [60,85]/默认 −65)与高光双落(完美排雷 / 标中旗标记)即定