两文件是流水线流程件而非游戏描述件,此前住在 design/gdd/ 造成三处不适配: gdd_lint 必须为它们逐条关掉体裁规则、格式权威却写在 doc-conventions §12、 与同族的 roadmap(在仓库根)分居两处。迁到根后按 roadmap.md 的无编号风格改名。 - 迁出:design/gdd/06-待办清单.md → 待办清单.md;07-体验验证清单.md → 体验验证清单.md - 指向改写 53 个文件:GDD 各系统文档指路存根、四份规约、02 根索引、README/roadmap/AGENTS - 两份清单自身 74 处出站链接按新基址重指(../art → design/art、systems → design/gdd/systems) - gdd_lint:待办/体验验证两文件的 R1/R3/R5/R7 豁免行随迁删除(已脱离扫描面),后门表清零 - pipeline_gate 默认路径、log_analysis/render_gate 称谓、repo_structure_audit 根文件白名单同步 - 保护面补写:两份清单列入实现批禁写清单(AGENTS 两类批条 / process-conventions §12 / 架构文档域表), 条目状态只由流水线各段推进 - 范围外未动(用户令「全不碰」):reports/ 与 design/research/ 的 22 处历史指向、game/ 两处注释
53 KiB
战斗结算
一句话:轮末结算的编排与逐行兑现 状态:已定稿(自旧体系迁移)
设计目的
玩家在雷图上做的每个决策——挖开的格、落下的封印、踩到的雷——都不会立即生效,而是等轮末由本系统逐行兑换成战斗结果。战斗结算是战斗域的编排与结算中枢:每轮怎么收场、收益怎么折成数值、胜负怎么判定,全部由它编排和裁决。核心循环里那句"自动战斗不是过场,是阅卷"说的就是它——每一行结算都能指回玩家刚才的哪一步棋。
它还是战斗域内唯一的跨系统调用发起方:敌人、状态、奖励、棋盘各系统彼此不直接调用,一切编排从这里走。没有这个枢纽,扫雷攒下的因没有兑付面,战斗的果也无法归因。
系统范围
边界这样划:本系统管"编排与兑现"——从轮末触发到胜负判定的每一步,以及把扫雷事实折算成战斗数值的全部口径。事实怎么产生归排雷玩法,花多少钱归行动经济,数值表本体归数据配置,画成什么样归HUD 框架。
负责:
| 负责 | 说明 |
|---|---|
| 轮次编排 | 战斗开始序列、每轮五段结算、五种出口分发(继续 / 换图 / 挖掘期刷新 / 战斗结束 / 关卡结束) |
| 结算触发与段序 | 轮末自动触发一次整轮结算;五段顺序为冻结结构,改动走文档修订而非调参 |
| 结算队列与判定基线 | 挖掘期动作(开格、封印)入结算队列;封印判定以轮末在场封印为基线,逐行兑付(封印不可逆批 2026-09-19——撤旗动作退役) |
| 明细流水协议 | 结算中的每件事逐行留档并标注来源,是呈现、回放对账、数据导出共读的唯一数据源 |
| 收益对照表 | 一张效果档位对照表归一全部收益的折算口径(详见核心规则) |
| 伤害与治疗边界 | 修正池合成与封顶、溢杀丢弃、治疗封顶、死亡判定时机 |
| 跨系统调用唯一发起方 | 战斗域内对敌人 / 状态 / 奖励 / 棋盘的调用只从本系统发出 |
不负责:
| 不负责 | 归谁 |
|---|---|
| 棋盘事实的产生与棋盘面规则 | 排雷玩法 |
| 行动点价目、停手与刷新扣费 | 行动经济 |
| 棋盘怎么生成 | 棋盘生成 |
| 单位血量递减、行动环与存活判定 | 敌人系统 |
| 增益/减益状态的容器、叠层与效果实例 | 增益状态 |
| 格面资源行值、权重档位与极性字典 | 地图战斗资源 |
| 关卡序列、关卡大奖励与失败 | 冒险结构 |
| 界面呈现与结算动画 | HUD 框架与战斗表现 |
在核心循环中的位置
挖掘期:玩家开格 / 封印 / 停手 ──(事实流 + 系统资源扣费)──▶ 战斗结算(轮末五段兑现)──▶ 胜负 / 换图 / 冒险推进
本系统站在"扫雷结束、结果揭晓"的那一段:挖掘期它只安静缓冲排雷玩法上报的事实流,不做任何兑付;轮末把这一轮攒下的因逐行兑现成战斗的果。再往下游,胜负去向交冒险结构接手,明细交HUD 框架呈现。
核心规则
轮末五段结算:一轮从收场走到判定
玩家行动点花完、主动停手,或开完整张图时,行动经济宣布本轮结束,本系统随即自动发起一次整轮结算。结算严格按五段固定顺序执行;核心相对次序"增益减益先于战斗"不变——先合成修正再动刀,任何结局都能归因。地图奖励与惩罚中的伤害形态兑付一律殿后到战斗段末(2026-10-06 用户裁):授予段只清资源、增益、治疗、行动点、GP 等非伤害单据,刀落完后地图伤害单据才统一落地。
① 授予段 → ② 增益/减益段 → ③ 战斗段 → ④ 衰减段 → ⑤ 判定段
| 段 | 干什么 |
|---|---|
| ① 授予段 | 结算队列先过滤再分批兑换:开格、封印判定、清图,按极性矩阵路由(资源/增益/治疗/行动点/GP 当场兑付;伤害形态单据暂存不兑,详见授予段一节) |
| ② 增益/减益段 | 把主角与敌人身上的活跃效果一次性合成本结算的修正池(同侧百分比修正的加总桶) |
| ③ 战斗段 | 主角先基础攻击一次,随后敌人按行序逐个结算攻击,最后地图奖励与惩罚的伤害兑付在段末统一落地(详见战斗段一节) |
| ④ 衰减段 | 移除到期的临时效果;每轮恰好一次,含末轮——清图奖励先兑付、效果后衰减 |
| ⑤ 判定段 | 先判主角倒下(负),再判敌人清空(胜),都不满足则继续下一轮 |
结算本体是纯逻辑步骤流:零界面依赖、禁止动画等待,随机消费只走封闭随机流。触发只读行动经济的相位读数与轮末标记,这条消息有棋盘路径和停手路径两个发射源,到达先后不承载语义。这些性质共同保证结算可回放:同样的种子、同样的事件序列,跑出的步骤流逐位复现——录像回放与断言复测都建立在它上面。随机消费恰七处(2026-09-16 敌人技能池批由两处扩为三处;2026-09-17 分支节点图批换板入编排后扩为五处;2026-09-20 地形变异首批类型定稿批扩为六处——变异布置;同日 GP+商店房批扩为七处——战斗结束掉落掷定):战斗开始掷骰定敌方实际数量与攻击基线浮动,属于初始化随机、发生在结算步骤流之外;技能摇号属于回合内随机,但时点前置到每轮开轮、同样发生在结算步骤流之外(消费专用 behavior_roll 封闭流,每敌按生成序派生独立子流,单敌出招轨迹可独立复放、互不穿插);护甲等级掷点属于回合内随机、发生在步骤流之内(消费专用 armor_roll 封闭流,逐次掷逐次取号,可逐位回放);奖励格摇号(消费 reward_roll 封闭流,装板期格面资源批派发)、变异布置(消费 variant_place 封闭流,装板与资源预分配之后——棋盘设置顺序第 4 步)与换板棋盘生成(消费 board_gen 封闭流,清图轮换板时点)均属初始化随机、发生在结算步骤流之外;战斗结束掉落掷定属出口随机(消费 gp_drop 封闭流,按战斗节点身份查商店表掷定 GP 掉落,与关级加值、战斗内缓冲合成本战 gp_dropped),发生在结算步骤流之外。七处皆封闭随机流,同种子同输入逐位复现。
举证:五段为流程编排,无计算;段序常量存配置表,加载时校验与定稿顺序完全一致,不一致拒绝启动。
明细流水:每一行都能指回你刚才的哪一步棋
结算过程中每一件事都写一行明细,每行标注来源——哪个安全格、哪处封印、哪颗雷、清图奖励。这份流水是结算明细屏(玩家逐行查看决策兑现结果的界面)的数据源,也是回放对账与数据导出共读的唯一契约。行型封闭为 9 类(2026-09-20 伏击上限删除批下线溢出未生效行),不允许私自增加;新增或下线行型属于行协议变更,必须走本文修订,并同步呈现层的行格式化。
| 行型 | 什么时候写 |
|---|---|
| 效果行 | 增益/减益段每条效果一行:本次授予贡献值与池合成值分列,防误读 |
| 伤害行 | 每次伤害一行:目标、伤害分量、修正终值、击杀标记;吃护甲等级掷点的分量,掷点读数与折扣档位随行留档,nat20 暴击随行标记并金框高亮(行型封闭清单不变) |
| 治疗行 | 治疗生效一行:封顶后的真实回复量 |
| 奖励未生效行 | 满层拒收、满血治疗等合法例外一行 |
| 封印未中行 | 封印落空的零值归因行,每颗雷只记一次;标错的负向兑付另记效果行 |
| 蓄力行 | 敌人本拍蓄力不动手(攒下一击)时记一行 (2026-09-16 敌人技能池批改型为施放行 cast:敌人本拍施放增益技——0 伤害动作、具名技能、不掷不折〔原"不兑付伏击"读怪奖励语义随 2026-09-20 八型批伏击退役作废〕;蓄力语义改写为纯攻击增益技,见敌人系统) |
| 衰减行 | 到期临时效果移除一行 |
| 判定行 | 胜 / 负 / 继续各一行;终局判定行同时是胜负画面的数据锚 |
| 高光行 | 完美排雷成立时一行,只记实际有效兑付 |
每行还携带公共字段:来源类别、来源格、轮次、显示名、数值,以及可空的高光标记(用于强调封印标中、清图奖励这类值得高亮的结果)。没生效也要留痕:两类"未生效"行如实记录合法例外,呈现时聚合计数,不逐行刷屏。
任何一行找不到来源即断言失败——宁可返回错误,也不让"合并到看不出来源"的呈现混过数据层。但有些行天然没有棋盘来源,断言为此留了两层豁免,豁免集合是封闭清单,改动同样走本文修订。
第一层按行型豁免两类:衰减行(到期移除本就是段级动作,不属于任何一格)、判定行(它是胜负出口的结论,不是棋盘事实)。这两类连来源类别都不必填。
第二层按来源类别豁免三类:主角攻击行的来源是主角单位本身,敌方行动行的来源是当时动手的那个敌人单位,清图奖励行的来源是"这张板被清掉"这一整板事实——它们都不指向某个棋盘格,来源格校验因此跳过。
豁免不等于免检:按行型豁免的行仍要带齐公共字段、守住各自的语义约束(如衰减行的数值必须是本次移除的读数),按来源类别豁免的行仍必须写明来源类别,其余行必须指回一个真实存在的棋盘格。豁免只是免掉"来源格必须有效"这一条校验,不是免掉整份行协议。
举证:本节为行协议约定,无计算。
收益对照表:所有收益共用同一把尺子
开安全格给正向、封印标中给正向、踩雷与标错给负向、清图给清图奖励对象——来源不同、形态不同,但玩家必须能回答"挖这一格值不值",所以全部收益用一张效果档位对照表归一换算。折算单位是当量:1 当量等于 1 点主角生命的期望净变化。这张表是行动经济五条经济契约第一条"单一当量"的载体;本系统是全部五条契约的唯一对账责任方(契约本体见该文档,对账现状登记 待办清单)。
结论:单一线性换算全源共用,禁止分源改率;百分比效果按"每个结算的瞬时当量"口径折算。
flat 类(直伤、治疗、行动点): E = 表值本身
percent 类(每结算、每层): E = |层数 × 行值| ÷ 100 × 参考敞口
完美排雷的清图奖励: E = 奖励表值 × 完美乘数 ÷ 100
| 变量 | 含义 | 现行值 |
|---|---|---|
| E | 效果折算当量(主角生命点) | — |
| 参考敞口 | 折算百分比效果所用的代表性伤害敞口,配置值 | 读 settlement.tres equivalence_ref_damage(provisional) |
| 层数 × 行值 | 单条效果的叠层数与行值,读增益状态的实例数据 | 行值归该系统 |
| 完美乘数 | 完美排雷给清图奖励的乘数,配置值 | 读 settlement.tres p_perfect(现行值读表) |
gp / ap 当量口径注记(2026-10-05 判式换代批 T3——口径空白登记):上式 flat 类枚举(直伤、治疗、行动点)不含 gp——现行对账按 gp 当量 = flat power 代理计(GP 袋 3 / 破财 2,方案报告假设 A5);ap 当量 = flat 表值 1,机会成本口径(+1AP ≈ 多挖一格 ≈ E_dig + 进度 + 信息价值)更高,差异仅登记不进主算(假设 A6)。gp 的精确口径应经商店定价换算(1 GP 的边际属性当量),归状态层/商店批复核后换代。封印溢价兑付(条款3 条件二形态 a,settlement.tres flag_hit_premium=125 provisional)按同型正向 ×(1+δ) 兑付——当量换算随同型行口径同步放大,整数量级取整四舍五入(与伤害管线 round_direction=floor 分域,registry 顺带登记)。
授予段兑付:极性路由,四类动作各归各系统资源
授予段消费结算队列。队列与判定基线:挖掘期玩家对格子的动作——开格、封印——都进入结算队列;结算逐批兑付,不走逐动作出栈直算。封印判定以轮末在场封印位为基线:被直接挖开的封印已随挖掘消失、不在基线(零兑付——标中 / 标空让位于挖掘本体结局,见下文封印不可逆四情况);开格事实不可撤(已开格无法回退)。过滤后按触发源分三批兑换,每格受理、每封印判定恰好一次。
兑付走极性矩阵(定义归地图战斗资源):开安全格 → 该格格面资源的正向;开危险格 → 负向;封印标中 → 该危险格资源的正向;标错封印 → 该安全格资源的负向。九型字典里每型各有一行正向、一行负向(gp 型随 2026-09-20 GP+商店房批增补——gp 正负两向兑付 = 战斗内 GP 缓冲,见下方兑付形态表);伏击随 2026-09-20 八型批退役,blast 型负向现况 = 警觉(敌方护甲等级 +1)。
封印不可逆四情况(2026-09-19 用户拍板全套落地,2026-09-18 提案转正):封印印记是一次性承诺、移除动作退役、挖封印格放行——兑付按四情况改判:
| 情况 | 兑付 |
|---|---|
| ① 插危险格、留到轮末判定 | 标中照常(该危险格资源正向) |
| ② 插危险格、再直接挖开 | 只受挖雷一层惩罚(该危险格资源负向照常兑付;挖雷惩罚因惊动触发);标中不发(封印已随挖掘消失、不入判定基线) |
| ③ 插安全格、留到轮末判定 | 标空惩罚照常(该安全格资源负向) |
| ④ 插安全格、再直接挖开 | 零惩罚零奖励——正向兑付作废,记「奖励作废(封印格直接挖开)」归因行(reward_ineffective 行型);标空判定同②自然缺席 |
| 批 | 兑付 |
|---|---|
| 挖格批 | 开到的安全格逐格兑该格资源的正向(封印格直挖除外——四情况④零奖励);开到的危险格逐格兑该格资源的负向(封印危险格照常——四情况②) |
| 封印判定批 | 标中则兑该危险格资源的正向,每颗雷的资格只兑一次;标空则记"封印未中"归因行,并兑该安全格资源的负向 |
| 清图批 | 清图奖励对象恰好发一次;完美排雷追加第二份同身份兑付 |
授予段当场只兑非伤害形态(增益、治疗、行动点、GP 缓冲、警觉加层);伤害形态兑付(爆裂、直伤、反噬)以伤害单据暂存,攒到战斗段末统一结算(2026-10-06 用户裁——地图伤害账殿后,见伤害单据与伤害控制器与战斗段两节)。暂存单在授予段按「将兑付」回报——授予段内依赖兑付读数的流程决策(完美排雷第二份、高光份数)依据开单时点事实判定,该时点敌人存活有保证;战斗段末实际结账若目标已灭,控制器自记「奖励未生效」行。
充能已退役(2026-09-19 用户拍板):原"挖格/标中旗给充能计数 → 战斗段折算穿刺/魔法分量"的弹药系统整体移除——主角攻击回归单分量,克制策略归冒险前配置(主角 attack_type 表值,营地换型 = 改字段;未来冒险前参数面承接策略位)。攻防两条抽象分离纪律保留:攻击类型是伤害的属性轴,棋盘事实只是奖励触发源。
| 兑付形态 | 覆盖 | 兑付方式 | 拒绝语义 |
|---|---|---|---|
| 增益(percent) | attack / defense / weaken 的正负两向 | 进入增益状态的容器,本结算生效 | 叠层已满时拒收,记"奖励未生效"行 |
| 即时全体伤害(flat) | blast 正向 | 战斗段末对全体存活敌各扣表值生命(暂存单殿后统一落地) | 场上无敌可打时零兑付,记"奖励未生效"行 |
| 即时治疗(flat) | heal 正向 | 主角按表值回复并封顶上限 | 满血时零兑付,记"奖励未生效"行 |
| 直伤(flat) | heal 负向 | 主角在战斗段末扣表值生命(暂存单殿后统一落地),不经增益状态 | 主角倒下则地图账整体不兑,逐单留"未生效"行 |
| 警觉加层 | blast 负向 | 敌方全体护甲等级 +1/层(读 reward.tres enemy_alert 行 → status_effects.tres alert 行),入增益状态容器 |
直授无上限;战斗段由防守方护甲等级读数消费 |
| GP 缓冲(flat) | gp 正 / 负向 | GP 袋 / 破财按 power 记入战斗内 GP 缓冲(+power / −power);缓冲随战斗完成折进 battle_finished 的 gp_dropped 统一到账(GP 归冒险结构) | 无拒收态——缓冲只在战斗边界与钱包结算,战斗域零钱包状态 |
| 行动点修正 | action 正/负向 | 下轮行动点 ±power(action_economy 排队,下一轮开始兑现后清零;下限 0) | 排队净值不跨轮保留;明细记效果行(effect_id=ap_delta) |
警觉(blast 负向——2026-09-20 八型批伏击退役换装)为敌方 side-wide 状态:多个敌人共享同一状态值、互不消耗,只活一轮、轮末清零;战斗段由防守方护甲等级读数消费(我打敌 = 敌方 armor_class + Σ敌方侧 ac 型状态)。其余各型负向受池 clamp 与叠层上限承载。
标中资格认雷不认封印:兑付资格以危险格实例为键——封印印记无任何移除手段(移除动作已退役,重复封印被"已有封印"拒绝)、同一颗雷跨轮不重复兑付;换图后新雷是新实例,资格自然重置。同一处封印一直落在雷上,每轮都会重新上报标中,去重是本系统的职责。
标错的惩罚不再是独立机制:标空封印(标了但格不是雷)= 该安全格格面资源的负向兑付(极性矩阵的"标错"分支),类型化、确定性、零额外派生——旧三选一哈希反噬(暴走 / 失衡 / 伏击+2 三池,坐标×板序号哈希派生)随格面资源批(2026-09-15)整段下线,三池内容收编为 attack / defense / blast 三型的负向行。负向兑付与"封印未中"归因行同键去重,每危险格实例只触发一次;叠层已满授予被拒时记"奖励未生效"行,不静默吞掉。
完美排雷全有或全无:一张板零误标且至少一次封印标中,清图奖励加倍(现行倍数读 settlement.tres p_perfect)。完美计数从装板起算、换图重置;高光行只记实际有效兑付(首份加被接受的第二份),首份即零兑付则高光行不发。封印标中的兑付行自带高光标记,与完美排雷的独立高光行构成两个强制高光检查点。
举证:兑付数值全部读配置表,本节无新公式;完美乘数的入账换算见收益对照表一节。
伤害单据与伤害控制器:所有伤害走同一道门
游戏里的每一份伤害——主角先手、敌方技能、穿刺弹/魔法矢、爆裂粉尘与清障炸药、陷阱反噬、地形变异——都是一张伤害单据:它自己声明这是一份什么伤害,然后交由伤害控制器按唯一管线兑现。单据九个栏目:兑付配方(唯一分派键)、来源类别 + 来源格 + 轮次(明细行归因三件)、显示名、通道(战斗段 / 棋盘兑付——声明栏)、攻击类型(普通 / 穿刺 / 魔法 / 无类型——无类型恒不查克制矩阵,是群伤、反噬与地形变异的常态而非缺漏)、威力基数、目标规则、必中附加分量。兑付配方封闭枚举为五种:
| 兑付配方 | 覆盖来源 | 管线步序 |
|---|---|---|
| 主角先手 | 战斗段主角攻击 | 掷点 → 折扣/暴击 → 克制点数 → 主角输出×敌方防御两池乘区 → 下限 → 交付 |
| 敌方伤害技 | 战斗段敌方技能(含普攻) | 掷点 → 折扣/暴击 → 克制恒中性 → 主角防御×敌方输出两池乘区 → 下限 → +必中附加 → 交付 → 执行上报 |
| 单目标克制直伤 | 穿刺弹 / 魔法矢正向 | 必中全额,克制点数进加法核,下限保底 |
| 群伤 | 爆裂粉尘 / 清障炸药 | 无类型恒定表值,全体存活敌逐个交付 |
| 主角直伤 | 陷阱反噬 / 治疗负向 / 地形变异 | 无类型必中,下限保底 |
职责分界一句话:流程决定何时开单、给谁开单;控制器决定一张单经过哪几步。 战斗结算保留全部开单守卫(主角存活且场上有敌才开先手单、主角倒下停开敌方单),掷点、折扣、暴击、克制点数、池乘区、伤害下限、交付与执行上报的算术和次序全部统一到控制器单点——未来新增伤害来源 = 填一张单,新增管线环节 = 控制器一处改动,不再逐调用点各写各的管线。
目标在结账时刻解析:单据只带目标规则(最前存活敌 / 主角 / 全体存活敌),兑现那一刻照规则看现场——前面兑付打死的敌人不会接住后面的单,开单时也不把目标写死在单上。
死亡事件由单位自行宣布:单位生命归零的那一刻自己发出死亡事件(不由流程代查、不由控制器推断)。怪死 → 队列中该敌为来源的未结单据作废(死亡即不动手——静默零行、不进冷却、不进保底计数,同既有口径);主角死 → 兑付终止、余单作废,Game Over 仍归判定段的生命读数路径。
结账时机双模式(结构位,非调参项):单据开出后何时兑现由控制器政策承载。现行 = 段界结账 + 地图账殿后(2026-10-06 用户裁):授予段不开具任何当场兑现的伤害单——全部伤害形态单据暂存(含清图批),战斗段按「主角先手 → 逐敌还手 → 地图账」的顺序补提交,攒到战斗段尾统一兑现;主角在敌方还手中倒下 → 暂存单整体不兑,逐单留「未生效(主角已倒下)」行。清图批的完美第二份与高光份数决策依据开单时点事实(该时点敌人存活有保证),暂存单按「将兑付」回报。保留位 = 开单即结:提交当场兑现,逐位等价 2026-09-24 之前的行为,作回切结构位。两模式同种子同操作均逐位复现(兑现次序 = 开单次序);同一输入在两模式下结果可不同(兑现时机的语义差异),历史基线读数以 2026-10-06 之前的授予段结账口径为准——该口径已随案C退役,新读数一律按地图账殿后重采。切换 = 改控制器政策常量,走代码修订不走调参。
举证:本节为管线编排约定,无新计算;掷点、折扣、克制与池乘区的算术口径见战斗段一节。
战斗段与胜负判定:谁先动手、怎么扣血、怎么定胜负
战斗段是兑现的最后一刀。主角的基础攻击恒存在——这是项目拍板:若基线为零,百分比增益乘上去永远是零,增益系统就空转了。攻击力域 [1, 999]、0 于加载期拒绝,行值读主角表。顺序固定:主角先基础攻击顺位最前的存活敌人,随后按行序逐个存活敌人按本拍摇定技能还手;每个敌人依次走"按技能行兑现、结算伤害、执行上报(技能进冷却 + 保底计数)"三步且恰行动一次,主角不在其列;最后兑地图伤害账——授予段暂存的全部伤害单按授予段事件序补提交,与主角单、敌方单一起攒到战斗段尾统一结账(见伤害单据与伤害控制器一节)。主角中途倒下,剩余敌人全部停手,地图伤害账整体不兑(逐单留「未生效(主角已倒下)」行),直接进判定段。施放技不涉伤害、照旧当场落行。案C 后授予段不产出伤害,主角进入战斗段时恒存活、场上恒有敌——先手必兑。
开轮摇号与敌方技能兑现(2026-09-16 敌人技能池批):敌人每拍做什么由开轮摇号决定——每轮轮次开始时,本系统在换算层排除冷却中技能,按行序逐敌从 behavior_roll 封闭流的独立子流摇定本拍动作写入实例池(首轮同样摇号;每轮恰摇一次;轮内刷新换图不重摇),随后冷却递减。摇定后、兑现前死亡 → 本拍技能作废、不动手(死亡即不动手)。结算战斗段只按技能行兑现:伤害技走三乘法链(见下),增益技记一行施放行并把状态效果按技能行持续回合挂入增益状态容器——0 伤害动作不掷不折。池模板、技能行、冷却与保底语义归敌人系统(引用不转述)。
三乘法链(技能伤害的合成顺序,技能倍率乘在最前,其后既有链一字不动):
① 攻击伤害值 A = 攻击基线 × 技能伤害倍率 (普通攻击倍率恒 1;主角侧恒 1)
② AC 判断值:掷点(骰面读表)vs 防守方护甲等级 → 档位折扣;天然最大面 → 暴击 ×暴击倍率(读表)(量程上下限)
③ 命中伤害 H = (A × a) + 克制修正点数 (克制修正点数读 settlement.tres 甲效矩阵——加法点数非百分比;敌打主角不查矩阵恒中性——矩阵消费面 = 主角侧)
── 以下既有链不动 ──
增益池乘区(含敌方防御池)→ 向下取整 → 伤害下限 max(1,·) → 必中附加分量 rider(2026-09-19 新效应词汇批——伤害技 rider_mult 字段:max(伤害下限, floor(攻击基线 × rider_mult)),独立必中加项、不进乘区、不出暴击;无字段 = 无此步)
主角先手攻击 = 单一基础分量(2026-09-19 充能退役批定稿;量 = 攻击力经增益修正,可被池封顶压到零;类型 = 主角 attack_type 表值——2026-09-18 营地扩展前置批:基础攻击量与攻击类型抽象分离,基础分量不再恒属普通,缺省 normal 向后兼容)。攻击类型是伤害的属性轴——它只决定这个分量查甲效表的哪一行,定义里不含任何棋盘来源。分量查表取整;甲效表把攻击类型与敌方护甲类型交叉成一张 3×3 克制修正矩阵(加法点数)——2026-09-18 加法核换装:每个分量在掷点/暴击折算取整后 + 克制修正点数(原百分比乘区退役):
| 攻击类型 \ 护甲类型 | 轻甲 | 魔法护甲 | 重甲 | 语义 |
|---|---|---|---|---|
| 普通 | 中性 | 克制 | 被克 | 基线分量缺省类型:对轻甲中性、对魔法护甲克制、对重甲被克(基础分量类型可配——换为穿刺/魔法后即按对应行结算,掷点口径不变;增益修正走攻击合计乘区) |
| 穿刺 | 被克 | 克制 | 中性 | 对魔法护甲克制;对轻甲被克;重甲中性(挡得住刀刃、不排斥穿刺——2026-09-18 用户拍板;现行无重甲敌种,纯结构位) |
| 魔法 | 中性 | 被克 | 克制 | 绕得过重甲,被魔法护甲吸收 |
修正三档:克制 +1 / 中性 0 / 被克 −1(加法点数,九格分布读 settlement.tres 甲效矩阵——2026-09-18 加法核换装:量纲由百分比改点数、五档词表退役;三档而非五档的理由 = 攻击基线个位数刻度下 ±2 触伤害下限或翻倍超重,假粒度;攻击成长后可扩弱档)。攻击类型是分量的固有属性(每个分量恒属普通 / 穿刺 / 魔法 之一),护甲类型是防守单位的固有属性,两者都不随层数、来源与轮次漂移;基础分量的类型归属是主角表的可配置值(营地永久强化的换型落点),矩阵键集 3×3 满格、结构冻结,数值 provisional。矩阵消费面 = 主角侧(奖励直伤道具 / 主角攻击基础分量)——敌方攻击现行不查矩阵,主角 armor_type 轴仍休眠、生效待敌方技能攻击类型批。主角增益与乏力经 hero_offense 池修正攻击合计(2026-09-18 结构修复批:普通分量直乘旁路退役;2026-09-19 充能退役后合计 = 单分量,见池乘区公式行)。
主角攻击 = 单一基础分量(2026-09-19 充能退役批):量 = 攻击力基线(表值),类型 = 主角表 attack_type(营地永久强化换型 = 改字段;未来冒险前参数面承接"按关配型"的策略位)。原"普通 + 穿刺/魔法充能三分量"模型整体退役——挖掘期与战斗期之间不再有弹药供给线,克制应对从局内攒桶改为冒险前配型 + 棋盘火力(穿刺弹/魔法矢等直伤奖励道具,消费面不变)。
护甲等级掷点:必中、非归零,只吃基础攻击分量(2026-09-16 定稿落地,判定式与全部数值已拍板;判定对象措辞随敌人技能池批改述)。防守方由此多了一条数值轴——护甲等级(数据键 armor_class):攻击永远命中,没有 miss、没有零收益白回合;只有吃掷点的分量在掷点低于防守方护甲等级时按减伤档位打折,档位再重也不归零。判定式:攻击结算时掷单骰(骰面读表),掷点 ≥ 防守方护甲等级 + 攻击加成 → 全额;掷点 < 护甲等级按缺口(护甲等级 − 掷点)查减伤档位表打折——边界与档值读 settlement.tres 减伤档位表,三档皆非零档。暴击:天然最大面(读表)使该次基础攻击分量 ×暴击倍率(读表),双方同规,且天然最大面恒全额(暴击与折扣互斥;天然最大面〔nat20〕暴击是掷点层概念,与技能重击〔池技能〕严格区分——两层禁止混述)。伤害下限:任何来源的伤害落地至少 damage_floor(读表,全局 max(damage_floor, ·)——2026-09-20 用户拍板扩全来源:攻击双方、棋盘直伤与爆裂、地形变异、负向反噬;伤害取值域 [1, +∞),不设上限)——"被减伤归零 v=0"零值伤害行语义顺带退役,重档折扣的攻击行在行文本记"被压制"。掷点范围:只有基础攻击分量吃掷点——主角先手攻击的基础分量,敌方技能的基础伤害分量(= 攻击基线 × 技能伤害倍率,普通攻击倍率 1 为特例);无伤害分量的技能(增益/妨害类)不掷不折;棋盘来源一律无视护甲等级——爆裂、清障炸药、奖励即时伤害、技能必中附加分量(rider,2026-09-19)全部必中全额不掷,这是本机制的边界切口,与"奖励/惩罚必中"同构。护甲等级(数值轴,掷点打折)与护甲类型(属性轴,克制修正)严格分离:护甲类型不做护甲等级映射,克制修正点数读表、消费面不变,两概念在文档、表字段与代码键中禁止混用。数值载体:主角与敌方护甲等级行值读 hero / enemy 表的 armor_class 列(正式行值归怪物设定批,登记待办清单),ac_up(盾牌加护)在其上加算(幅度/层数读 status_effects.tres)。攻击加成(attack_bonus)为结构位预留字段,切片恒 0,未来归元进度 / 武器附魔投值。掷点时机在结算战斗段内、每次基础攻击伤害计算时判定,消费 armor_roll 封闭流(逐次掷逐次取号,可逐位回放)。
EV 参考数不入正文(派生读数,需要时按判定式与现行表值自行复算);旧 defense_up 的减伤墙已整体退役换装为 AC(无双轨)。微调旋钮 = 档位边界与档位值,不动护甲等级值。换装点锚定:基准 AC(读 hero 表)自带的方向性偏移与难度曲线与Boss已登记的加难杠杆扫描合并处理;其生存链区间模型按掷点带宽口径复核
结论:先合成、再取整、全程非负;吃掷点分量必中非归零、低掷按档位折扣、天然最大面暴击恒全额(倍率读表)、落地伤害保底 ≥ damage_floor(读表);溢杀丢弃、治疗封顶、死亡即时判定。
敌方一次技能攻击 = max(damage_floor, floor( 掷点档位技能基础分量 ) × 主角防御乘数 × 敌方输出乘数 ) + 必中附加分量 rider(若有——2026-09-19 新效应词汇批:max(damage_floor, floor(攻击基线 × rider_mult)),rider 为后置加法不进乘区不掷不折);增益/妨害技 = 0 伤害施放行(不掷不折),妨害状态按状态行 target_side 落主角
主角一次攻击 = max(damage_floor, floor( 攻击合计 × (100 + 主角输出乘数池合成值) ÷ 100 × (100 + 敌方防御乘数池合成值) ÷ 100 ) )——hero_offense(增伤/乏力载体)与 enemy_defense(硬化载体)两池串乘在攻击合计之后(2026-09-19 充能退役后合计 = 单分量)
粒度口径:增益池乘区作用在攻击合计层——合计为个位数时百分比档存在粒度取整(如合计 2 点 ×0.75 → 1,实际约 −33% 大于名义 −25%),为已知行为、接受现状;2026-09-18 数值语言拍板后百分比仅保留增益池 / AC 折扣档 / 暴击三处既有粗档,终值与量纲复核归状态层重设计批
乘数 = 1 + 池合成值 ÷ 100;池内加算、每池独立封顶 ±100 百分点 → 乘数域 [0, 2];四池对称:敌打主角 = hero_defense × enemy_output,主角打敌 = hero_offense × enemy_defense(2026-09-18 结构修复批:hero_offense 乘区接线落地——attack_up 普通分量直乘旁路退役,旧"切片现状"注记销项)
护甲等级掷点:掷单骰(骰面读表),掷点 ≥ 护甲等级 + 攻击加成 → 全额;低掷按缺口查减伤档位表(边界与档值读表,无零档)
暴击:天然最大面(读表)→ 该次基础攻击分量 ×暴击倍率(读表)且恒全额(双方同规;掷点层概念,与技能重击严格区分)
伤害下限:任何来源的伤害落地 ≥ damage_floor(读表,全局 max(damage_floor, ·)——折扣与池归零都不产生 v=0 伤害行;2026-09-20 扩全来源,取值域 [1, +∞))
吃掷点分量 = 主角基础分量 / 敌方技能基础伤害分量;穿刺、魔法、增益/妨害施放、必中附加分量与棋盘来源伤害不掷不折
治疗量 = min( 当前生命 + 表值, 生命上限 )
| 边界 | 规则 |
|---|---|
| 修正池封顶 | 同侧百分比修正加算后每池独立封顶 ±100 百分点;乘数可为 0——输出压制触池底时落地伤害由全局下限保底 damage_floor(读表)(叠满免伤归零的结构面已随护甲等级换装消失) |
| 伤害下限 | 任何来源的伤害落地至少 damage_floor(读表,全局 max(damage_floor, ·)——2026-09-20 扩全来源:攻击双方/棋盘直伤/地形变异/负向反噬,取值域 [1, +∞) 不设上限);"被减伤归零 v=0"零值伤害行语义退役,重档折扣行文本记"被压制"——免伤与零输出仍逐行可见 |
| 护甲等级掷点 | 必中非归零:掷单骰(骰面读表)对防守方护甲等级 + 攻击加成(恒 0),低掷按缺口查减伤档位表(读表)三档折扣、档位不设零档;天然最大面暴击 ×暴击倍率(读表)恒全额;只吃基础攻击分量(主角基础分量、敌方技能基础伤害分量),棋盘来源伤害与增益施放不掷不折 |
| 溢杀 | 一刀超出目标剩余生命的部分丢弃:不转移给下一个敌人、不存续、无负生命中间态 |
| 治疗 | 生命不溢出上限;满血正向治疗零兑付,记"奖励未生效"行 |
| 死亡判定 | 生命归 0 即倒下;敌人受击即死;主角倒下战斗段立即短路;判定段先判主角、再判敌人(防御性次序) |
| 胜负 | 敌人全灭判胜;主角倒下判负;都不满足则继续下一轮 |
举证:裸伤害与存活集由敌人系统供给,池合成值由增益状态供给,表值由数据配置供给。
轮次生命周期:换图、刷新、战斗结束与关卡收束
五段跑完,判定段给出方向,本系统据此推进战斗状态,并把结果发回上游:
判定段结果
├─ 继续(敌未清、主角活着)→ 通知"同图继续" → 下一轮开轮
├─ 换图(本轮清图)→ 旧板退役 → 生成新板 → 装板 → 资源预分配恰一次 → 变异布置(棋盘设置第 4 步)→ 通知"换图" → 下一轮开轮
├─ 战斗结束(胜 / 负)→ 清理敌人与状态 → 发出战斗结束信号 → 休眠,等下一场战斗
└─ 关卡结束(上层显式调用)→ 清空秘宝背包,给出可见反馈
停手与耗尽收轮的回合恒为同图继续;换图指令只允许出现在清图轮,其他轮发换图属于程序错误、立即上抛。秘宝背包以关卡为界:战斗结束不清背包,跨战斗延续;关卡结束时一次性清空,清空前先返回快照计数,作为"剩余秘宝随关卡结束清空"的可见反馈。战斗道具背包已随可选类删除(2026-09-15)下线。(2026-10-09 注:清空对象 = 关卡域库存 treasure_inventory——秘宝过渡形态的机械惰性承载,其投放渠道已随迭代 11 第①批全退役、现行恒空;现行秘宝=营地同调装配件、整局冒险生效不经此域,拆线归实装批——见秘宝沿革节。)
挖掘期刷新是玩家在挖掘中途主动换图,经行动经济扣费:扣费成功后按"旧板退役、生成新板、装板、资源预分配恰一次、变异布置"编排,本轮不打断——没有结算段、没有轮次结束。储备不足被拒是玩家决策的合法结果,不是编排错误。刷新图不发清图奖励,完美排雷计数随装板重置。
战斗开始按固定序列开张:关上配置热重载的闸门、打开增益状态容器、掷骰定敌方实际数量、生成敌人、装板并预分配资源恰一次、变异布置(地形变异——棋盘设置顺序第 4 步:生成棋盘 → 打开状态初始化 → 战斗资源格设置 → 变异格设置,消费 variant_place 封闭流)、发开轮通知并执行开轮摇号(摇定首轮各敌本拍动作)。上一关的大奖励(如血上限提升)经战斗开始入参的覆盖值通道生效,内容归冒险结构。
举证:本节为编排流程,无计算。
依赖与输出
本系统是战斗域的调用枢纽:对上游是全调用面,对下游供数据源。这张表就是删除任何一方时的影响面清单。
| 方向 | 系统 | 接口要点 |
|---|---|---|
| 上游 | 数据配置 | 结算配置表(段序、当量、封顶、甲效与护甲等级掷点参数)的承载与读取,本系统是回填责任方;战斗中热重载被闸门拒绝 |
| 上游 | 行动经济 | 轮末两字段消息的接收方;回发换图指令、结算完成与战斗结束通知;挖掘期刷新经它扣费;五条经济契约的对账责任方 |
| 上游 | 排雷玩法 | 订阅其三事件流(挖开格、封印判定、轮次结束);换图时调用装板与退役 |
| 上游 | 棋盘生成 | 换图时调用其生成接口 |
| 上游 | 敌人系统 | 单位接口全调用面:生成、查询、扣血、摇定写入、执行上报、默认目标、警觉授予、清场;护甲等级(防守方掷点判定读数)随单位数据供给;池模板与技能行数据归它 |
| 上游 | 增益状态 | 状态容器接口全调用面:开域、授予、读值、衰减、闭域 |
| 上游 | 地图战斗资源 | 格面资源接口:预分配、身份查询、受理、清图对象、当量供给投影、映射退役 |
| 上游 | 冒险结构 | 战斗触发、遭遇上下文与主角入参覆盖值(覆盖值通道已随冒险结构实现批正式接线——接口四件套正式侧承载) |
| 下游 | HUD 框架 | 明细流水是结算明细屏的统一数据源(未生效类行须带形状冗余防误读);状态读取走下方呈现只读面 |
| 下游 | 战斗表现 | 结算步骤流是战斗动画回放的脚本源 |
| 下游 | 难度曲线与Boss | 五条经济契约的对账结论是其调参约束输入(对账现状登记 待办清单) |
呈现只读面:呈现层的唯一状态读取出口
切片实现期本系统把协作对象(敌人、状态、奖励)收为私有,呈现层与 headless 自动玩家的全部状态读取只走下表的四个函数与两个信号,禁止链式穿透内部对象(如读取敌方单位容器的内部字段)——这条出口纪律就是"终局画面只消费流水与快照即可复现"断言的契约面。各呈现面的载荷字段清单即消费侧断言的底稿,字段增删走本文修订。
| 呈现面 | 形态 | 载荷与语义 |
|---|---|---|
呈现状态快照 presentation_snapshot |
只读函数,全量 | 轮次、战斗结果、相位、行动点与储备、刷新可用性、主角(生命/上限/攻击/存活)、敌人数组(顺位/显示名/生命/敌种/护甲类型/护甲等级/摇定动作〔pending_skill/type/name〕/敌方增益 effects/存活)、主角活跃效果投影——呈现层唯一的状态读取出口(敌人技能池批批 2 定稿:行为环当前拍/环进度字段随行为环退役拆除——2026-09-16,池与权重不公开) |
战斗进行中谓词 is_battle_live |
只读函数,布尔 | 战斗未出结果且主角在场——组合根高频相位判断的低成本面 |
奖励身份查询 query_reward_identity |
只读函数,单格 | 已开格奖励身份解析的代理,转地图战斗资源的身份查询(就绪相位守卫归对方)——组合根注入棋盘徽章回调 |
结算快照信号 settlement_snapshot |
信号,每次结算末 | 对象销毁前组装的全量状态快照(终局含胜负结果)——测试记录与数值分析消费 |
战斗结束信号 battle_finished |
信号,战斗结束时 | 载荷 = 胜负结果、主角余量生命与本战 GP 掉落 gp_dropped(掉落掷定 + 关级加值 + 战斗内缓冲的合计;销毁前捕获)——呈现层在核心对象销毁后读状态的时序防护,钱包入账归冒险结构 |
另设一个诊断观测面(诊断快照 diagnostic_snapshot)供组合根诊断转储与行为探针消费:它暴露编排内部状态,不属于呈现契约,不作其他用途。
P0 最小闭环
- 战斗开始序列跑完(关闸门、开容器、掷骰定敌数、生成敌人、装板并预分配资源、发开轮通知 + 开轮摇号),进入第一轮挖掘期。
- 挖掘期本系统只缓冲事实流(开格、封印入结算队列),不做任何兑付。
- 轮末自动触发五段结算,触发与事件到达序无关。
- 授予段按判定基线过滤(被挖开的封印不入判定),再按极性矩阵三批兑现:开安全格兑正向(封印安全格直挖 = 四情况④零奖励作废行)、开危险格 / 标错封印兑负向(封印危险格直挖照常——四情况②)、清图发清图奖励对象(完美乘数读 settlement.tres p_perfect)。
- 增益合成、主角先手加逐敌按摇定技能兑付(伤害技三乘法链 / 增益技施放行)加地图伤害账殿后(暂存单随战斗段末统一结账)、衰减恰好一次。
- 判定段先主角后敌人:继续通知同图、清图换图续轮、胜负走战斗结束清理(秘宝背包不清)。
- 明细流水全程落行,供呈现、回放与导出。
P1 / P2 后置
| 优先级 | 内容 | 后置原因 |
|---|---|---|
| P1 | 深度高光形态(封印标中即时动画、音画同步) | 数据面标记与当轮兑付已落,表现形态归战斗表现与美术 |
| P2 | 回放切点续玩 | 依赖存档序列化的快照能力实现 |
调参表
结算用到的全部数值——当量、封顶、乘数、段序常量、甲效与护甲等级掷点参数——都存结算配置表,代码里零数值字面量;改数值就是改表回填。表值以快照进结算,战斗中途改表不生效。已锁字段与数值以 data/schemas/settlement_table.gd 与 data/tables/settlement.tres 为准。
| 参数 | 域 | 现行值 | 说明 |
|---|---|---|---|
| 参考敞口 | int [1, 999] | 读 settlement.tres equivalence_ref_damage(provisional) |
当量折算的代表性敞口;变更须重跑全部对账 |
| 完美乘数 | percent {100, 200} | 读 settlement.tres p_perfect(provisional) |
100 为仅高光、无第二份;域外加载拒绝 |
| 甲效矩阵 | 整数点数 {−1, 0, +1} | 三档加法修正(克制 +1 / 中性 0 / 被克 −1)九格现行值读 settlement.tres(provisional——2026-09-18 加法核换装,量纲 percent 退役) |
键集 = 攻击类型 {普通, 穿刺, 魔法} × 护甲类型 {轻甲, 魔法护甲, 重甲},3×3 满格结构冻结;数值归调参 |
| 护甲等级掷点 | 骰面 int [2,1000] · nat 最大面 [1,骰面] · 暴击倍率 percent [100,999] | 骰面 / nat 最大面 / 暴击倍率读表(2026-09-16 拍板定稿) | 回合内随机:每吃掷点分量逐次掷骰,掷点低于防守方护甲等级 + 攻击加成触发档位折扣;天然最大面暴击 ×暴击倍率(读表)且恒全额(双方同规);消费 armor_roll 封闭流(逐次掷逐次取号) |
| 减伤档位表 | 边界升序 + 档位值降序 percent [1,99],档数 = 边界数 + 1 | 边界与档值读 settlement.tres(roll_tier_bounds / discount 档位,2026-09-16 拍板定稿) |
低掷缺口按边界查档(读表);档位不设零档(非归零);微调旋钮 = 本表,不动护甲等级值 |
伤害下限 damage_floor |
int [1, 999] | 读 settlement.tres damage_floor(2026-09-16 拍板定稿;2026-09-20 扩全来源) |
任何来源的伤害落地全局 max(damage_floor, ·);零值伤害行语义顺带退役 |
攻击加成 attack_bonus |
int [0, 999] | 0(结构位) | 掷点阈值 = 防守方护甲等级 + 攻击加成;切片恒 0,未来归元进度 / 武器附魔投值 |
护甲等级 armor_class(防守方字段) |
int [0, 999] | 主角与敌方现行值读 hero / enemy 表 armor_class 列(暂定) | 字段本体在敌人表与主角表(归敌人系统),行值投值归难度曲线与Boss;敌方正式行值归怪物设定批(见待办清单);与护甲类型(克制属性轴)两概念禁止混用 |
| 段序常量 | 固定五段 | 结构冻结 | 加载期恒等校验,违例拒绝启动 |
| 池封顶 | ±100 百分点 | 结构冻结 | 乘数域随之 [0, 2] |
| 取整方向 | 向下取整 | 结构冻结 | 单一规则,非调参项 |
全部可调参数归难度曲线与Boss所有(均为 provisional),且处于禁独立调参的联动网络中:每次调参须重跑收益对照表与五条经济契约对账。
验收标准
- 五段全序:任一轮结算的明细行按五段顺序排列。
- 触发与到达序无关:同一轮末的两条结束消息按任意先后驱动,结算步骤流逐行相同。
- 挖封印格兑付改判(封印不可逆批 2026-09-19):有封印格直接挖开被受理——封印安全格直挖零奖励(作废归因行恰一次)、封印危险格直挖只吃挖雷惩罚;被挖开的封印不入轮末判定(零标中 / 标空兑付);开格事实不可撤。
- 每事实恰一次:每格受理、每封印判定恰好一次;重复投递不改变结果。
- 极性路由正确:开安全格 / 封印标中只兑正向、开危险格 / 标错封印只兑负向;兑付效果与该格资源类型的字典行一一对应。
- 警觉共享:敌方全体共享同一警觉状态值;blast 负向逐层直授无上限(伏击退役换装——2026-09-20 八型批)。
- 完美排雷:零误标且至少一面标中时第二份兑付恰一次并发高光行;出现误标或零标中则无高光;计数换图重置。
- 开轮摇号:每轮恰摇一次(首轮同样;轮内刷新换图不重摇);摇定后兑现前死亡 → 本拍技能作废(零敌方行动行)、不进冷却不进保底计数;已兑现技能进冷却、保底计数按执行结果更新。
- 战斗段次序:主角先手后逐敌"按摇定技能行兑现、结算伤害、执行上报"各恰一次;主角倒下立即短路,剩余敌人不行动。
- 护甲等级掷点:吃掷点分量(主角基础分量、敌方技能基础伤害分量)逐次掷单骰(骰面读表)——掷点 ≥ 防守方护甲等级 + 攻击加成全额兑付;低掷按缺口查减伤档位表(边界与档值读表),档位不设零档;天然最大面暴击该分量 ×暴击倍率(读表)且恒全额;穿刺/魔法分量与棋盘来源伤害(爆裂、清障炸药、奖励即时)、必中附加分量及增益/妨害施放不掷不折。
- 新效应词汇(2026-09-19):伤害技 rider_mult 行的每次攻击,伤害行携带 rider 值且终值 = max(伤害下限, 主分量链结果) + rider(停手轮零池下逐拍精确复算);rider 键只随带 rider_mult 的技能行出现;妨害技 = 施放行 + 状态按 target_side 落主角(投掷阈值随行可读下调),冷却/保底/死亡作废三闸无一例外。
- 伤害下限与留档:任何来源的伤害落地 ≥ damage_floor(读表,2026-09-20 扩全来源),全流水零 v=0 伤害行、零"被减伤归零"行;掷点读数、护甲等级与档位随伤害行留档,天然最大面(nat20)行带暴击标记。
- 数值边界:伤害下限保底后全程无零值/负值伤害;溢杀丢弃不转移;治疗封顶不溢出。
- 出口分发:先判主角倒下(负)再判敌清空(胜);停手与耗尽轮恒同图,清图轮才允许换图。
- 关卡收束:关卡结束清空秘宝背包(关卡域库存——现行恒空的机械惰性承载,见「轮次生命周期」节注)恰一次并返回清空前计数;战斗结束不清背包。
- 可回放(封闭随机流口径):同种子同输入两遍步骤流逐位复现;随机消费仅限七处封闭随机流——开战掷骰(初始化随机)、技能摇号
behavior_roll(回合内、开轮时点、步骤流之外)、护甲等级掷点armor_roll(回合内、步骤流之内)、奖励格摇号reward_roll(初始化、装板期)、变异布置variant_place(初始化、装板与资源预分配之后)、换板棋盘生成board_gen(初始化、清图轮换板时点)、战斗结束掉落掷定gp_drop(出口随机、战斗结束分支),无未登记随机源、零界面等待;单敌出招轨迹可独立复放、互不穿插。 - 无来源即炸:每行明细都能指回一个来源事实(棋盘格、单位、清图或段级结论);找不到来源即断言失败,行型与来源类别两层豁免清单见明细流水一节,豁免行仍受其它契约约束。
- 行型封闭:流水只出现本文登记的 9 类行型;新增或下线行型必须走本文修订并同步呈现层行格式化,未登记行型禁止落行。
- 伤害单据管线(2026-09-24):全部伤害(主角先手、敌方伤害技、棋盘克制直伤、群伤、反噬、地形变异)经伤害控制器单据管线兑现,兑付配方封闭五种;目标在结账时刻照规则解析;死亡事件由单位自行宣布——怪死其未结单据作废(零行、不进冷却不进保底计数)、主角死兑付终止;段界结账为现行口径、开单即结为回切结构位,两模式各自同种子同输入逐位复现。
- 条款3 对账(2026-10-05 判式换代批 T3——与行动经济 F1 条款3 重立同步):①聚合健康式 (1−ρ̂)·E_dig(u) − ρ̂·V_mine(u) ≥ 0 与 β 比值带 [1.2, 2.5] 判读逐 u 检算(常设重跑入口
tools/clear_dominance_audit.py,读数快照归 registry clause3 重立条);②封印溢价兑付正确:封印标中正向兑付 = 同型正向 ×(1+δ)(δ 读settlement.tresflag_hit_premium,100=无溢价直通零扰动),三类形态全覆盖(flat power / percent 幅度 / gp 缓冲)、标空与挖格兑付不乘溢价、危险格与安全格同池结构零触碰。
待办
本系统待办条目已统一收编至 待办清单,本节不再逐条登记。