# HEROLL v0.2.8:Start 时序、首版白名单与未知参数闭合报告 > 仅研究 HEROLL 2.0.1。本文是《一骰登天》MVP v0.2.8 的规则覆盖层,不把 MVP 设计值伪装成 HEROLL 原作值。原生调用顺序作为证据保留;产品执行时序以本报告的“MVP冻结顺序”为准。 ## 结论 本轮从 HEROLL 2.0.1 的 CSV 配置、IL2CPP 元数据和运行时解密后的 `libil2cpp.so` 中闭合了四项可直接开发的交付: 1. `Start` 正常结算路径的相对调用顺序; 2. 原作规则、MVP 主动偏离、DEMO 默认值对照; 3. Tile、Corner、Blessing 与 96 条 Shop 商品的首版运行时白名单; 4. 原作仍无法确定的边界参数及唯一 MVP 默认值。 最重要的修正是:v0.2.7 原文中的两段 Start 描述彼此冲突。v0.2.8冻结为下面唯一产品执行顺序: ```text 跨过Start,暂停剩余移动 → 商店判定与交互 → 最终Floor/BOSS判定 → 当前Floor结束奖励 → 非最终Floor:loopIndex推进并安装商店购买Tile → 非最终Floor:AddRandomGoodTiles(loopIndex+2) → 非最终Floor:AddRandomEnemyTile(enemyTilesPerLoop,false) → 灵泉恢复 → 写安全点并继续剩余移动 ``` HEROLL原作调用链的商店准备、地块注入、商店交互和恢复相对顺序仍保留在证据列;上述产品事务顺序属于《一骰登天》主动覆盖,不能反写为原作顺序。 完整逐步表见 [01-start-settlement-timeline.csv](./01-start-settlement-timeline.csv)。 ## 1. Start 结算时序 ### 1.1 正常非最终 Floor 开发只读取[01-start-settlement-timeline.csv](./01-start-settlement-timeline.csv)中的MVP顺序。核心约束为:商店先完整交互;再判定最终BOSS;再发Floor奖励;普通分支才推进loop、安装购买Tile并依次刷新Good/Enemy;最后恢复并继续剩余移动。原生地址只用于说明来源差异,不覆盖本次产品时序决策。 `AddNextLoopTiles(loop)` 内部顺序为: ```text await AddRandomGoodTiles(loop + 2) await AddRandomEnemyTile(enemyTilesPerLoop, false) ``` `loop+2` 是尝试次数,不是保证成功的新增数量。`enemyTilesPerLoop` 的字段和读取偏移已恢复,但场景中的原始序列化值没有出现在当前导出资产里,所以不能把 3 或 10 宣称为原作值。 ### 1.2 最终 Floor 分支 达到 Default 最终 Floor 或 DiceGauge 50/50 的最终转换条件时: 1. 不继续普通 Good / Enemy 注入; 2. 保存 Boss 前棋盘快照; 3. 清空全部外侧房屋,并将 44 个位置转换为 Boss Tile; 4. MVP保留`remainingSteps`并在新Boss棋盘继续移动; 5. 若剩余步数归零后的新最终落点位于Boss Tile,则进入Boss战; 6. 若转换时剩余步数已经为0,则必须再Roll一次并完成新的Boss Tile最终落点。 `SaveBeforeBossTiles` 的直接调用点为 `0x5545124`。最终转换时剩余步数是否在原作所有模式都以同样方式处理,现有证据没有完全闭合,因此“清零”仍标为 MVP 默认,而不是原作确认。 ## 2. 首版内容 ID 白名单 ### 2.1 Tile 与 Corner 首版真正启用 33 个 `newtile.csv` ID: | 运行域 | ID | | --- | --- | | 核心棋盘 | `100,101,102,103,104,118,119,124,132,133,134,135` | | DiceGauge 压力扩展 | `105,106,110,111,112,113,114,115,116,117` | | Corner | `125,127,128,129,131` | | Good Event | `137,141,143,151,164,169` | 对应关系: - `124` AUGMENT; - `125` Wall of Thorns / 天罚; - `127` Race / 竞天台; - `128` Flower Garden / 灵圃; - `129` Housing Support / 营造司; - `131` Black Market / 黑市散摊; - `137` Forge;`141` Chest;`143` Dice Battle;`151` Claw Machine;`164` Dicereel;`169` Lucky Scratch。 原作有 8 条 `isEnabled=true` 的 Corner:`125,126,127,128,129,131,167,175`。v0.2.8启用其中 `125,127,128,129,131`;`126` Piggy Bank、`167` Dice Catapult、`175` Warp 不进入首版。这是主动裁剪,不是原作禁用。 `129 Housing Support`落点时掷两枚独立D6,点数和为基础建设次数;实际建成数受下一条顺时针棋盘边的空闲外侧槽数量限制。每格外侧最多1栋,房屋不覆盖底层地块并持续到最终BOSS Floor。原作的房屋到点数换算尚未恢复,MVP冻结为每成功建成1栋获得1灵石。逐字段规则见[06-building-rules.csv](./06-building-rules.csv)。 原作 `169` 的自然生成门槛是 `minStage=1,minLoop=3`。为了在 Stage 0 玩法验证中实际覆盖 Lucky Scratch,首版验证配置将它覆盖为 `minStage=0,minLoop=0`;正式还原配置必须恢复原门槛。`143` 与 `164` 仍保留原作 `minLoop=3`,调试台可以强制触发。 ### 2.2 Blessing 原作主模式启用 31 条祝福,基础 `prob_weight` 均为 10。首版候选池冻结为 28 条: ```text 100,102,103,108,109,110,111,112,113,114,115,116,117,118, 121,122,124,125,126,132,147,148,149,150,151,152,153,154 ``` 首版关闭: | Blessing ID | 原因 | | ---: | --- | | `106` | 复活系统未实现 | | `156`、`157` | Burn 状态链未实现;两条必须成对启用或关闭 | `111 DoubleHeal`由实机确认保留。每层在Natural Double时恢复8%最大生命,重复获得按加法叠加;开发时必须绑定“最终骰子结算得到的Double事件”,不能仅凭UI文案轮询骰面。Forced Double默认不触发。 `152 Urban Planning / 都市计划`随建筑模块启用。它是不可叠加的唯一祝福,每次营造司事件在两骰点数和之外增加2次建设尝试,仍受合法外侧槽数量上限约束。 ### 2.3 Shop 原作 96 条商品全部加载为只读目录,首版有 77 条进入运行时槽池: | 类型 | 启用 Offer ID | 数量 | | --- | --- | ---: | | TILE | `100,104,106,108,110` | 5 | | AUGMENT | `112,113,114,116-140`,不含 `115,141,142` | 28 | | POTION | `143` | 1 | | STAT | `152-164` | 13 | | FIXED | `165-194` | 30 | | LOTTO | 无 | 0 | | 合计 | | **77** | 注意:Lucky Scratch `newtile ID 169` 在原作的 12 条 TILE 商品中没有对应 Offer,首版不得自行捏造一个“原作商品 ID”。它只能来自 Good 牌组、调试强制或之后明确新增的 MVP 商品。 普通商品没有“每买一次自动涨价”。价格上涨只存在于: - 商店付费刷新:`3 + 2 × k`,即 3、5、7、9……; - 固定升级链:购买当前独立商品行后切换到下一级独立商品行; - 黑市:`base + trunc(base × surchargePercent / 100)`,其中百分比尚未知。 逐商品的价格、限购、固定槽顺序、启用状态与禁用原因见 [03-shop-product-whitelist.csv](./03-shop-product-whitelist.csv)。Tile、Corner 和 Blessing 的逐 ID 表见 [02-tile-corner-blessing-whitelist.csv](./02-tile-corner-blessing-whitelist.csv)。 ## 3. 原作 / MVP 偏离 / DEMO 默认的使用规则 开发读取顺序必须是: ```text 原作确认规则 → 若 05 表存在 intentional deviation,则用 MVP 规则覆盖 → 若原作参数仍 UNKNOWN,则只从 04 表读取一个 DEMO 默认值 ``` 不能反向把 DEMO 默认值写回“原作规则”。几个最容易误写的项目如下: | 系统 | 原作 | MVP / DEMO | | --- | --- | --- | | 玩家基础生命 | 500 | 100,主动偏离 | | 战斗节奏 | 实时自动冷却,各存活单位独立计时,间隔为`100/最终攻速` | v0.2.8统一采用原作模型,不再严格交替 | | 复活 | 原作存在祝福与相关路径 | 首版完全关闭 | | 药水 | 9 种商品 | 单一恢复丹药 | | Start 顺序 | 准备商店 → 刷新下一层 → 交互商店 → Heal | MVP 应按该顺序修正,不再沿用旧文本冲突 | | `enemyTilesPerLoop` | 字段确认、值未知 | 3,DEMO 默认 | | 建筑 | 两骰点数和为建设次数;原作奖励换算未知 | 外侧独立房屋层;每栋1灵石;都市计划+2次 | | Blessing | 原作 31 条 | 首版 28 条 | | Shop | 原作目录 96 条 | 首版槽池 77 条 | | Boss 中途装备 | 观察到,但阈值未知 | 50% 首次跨越,DEMO 默认 | | 黑市加价 | 公式确认,百分比未知 | 50%,DEMO 默认 | 完整28项对照见[05-original-vs-mvp-vs-demo.csv](./05-original-vs-mvp-vs-demo.csv)。 ## 4. 未知参数默认表的边界 [04-unknown-parameter-mvp-defaults.csv](./04-unknown-parameter-mvp-defaults.csv)给出26个唯一执行值,包括: - `enemyTilesPerLoop=3`; - 黑市加价 50%; - Boss压力采用进场50、每行动+25、满100后倒计时4回合;候选不足4格时不降级,延后转换; - 压力地块结算后变 Empty,不恢复被覆盖地块; - 战斗掉落展示容量10,第11件起先进先出替换最旧未处理掉落并给出明确反馈; - 商店 3 个随机槽等权、无放回; - Blessing 先过滤再等权无放回 3 选 1; - Boss 中途装备阈值 50%; - 普通怪死亡奖励 95:4:1; - 精英怪 1 件装备,再按 5:2 抽丹药或灵石; - Dice Battle 平局庄家胜; - Lucky Scratch 揭示完成阈值 65%; - Forge 最高升到 Myth,不从 Forge 进入 Arcane。 - Housing Support每成功建成1栋获得1灵石;该值只属于DEMO默认。 这些值中有些适合调参,但在本版本必须只有一个默认值,不能让程序员自行猜测。调试台修改时也必须记录 seed、配置版本和修改项。 ## 5. 证据与置信度 主要证据: - [assembly-csharp.json](../../HEROLL_APK_REVERSE_ONLY/01_core_reverse_archive/metadata/assembly-csharp.json):类型、字段、方法 token; - [newtile.csv](../../HEROLL_APK_REVERSE_ONLY/01_core_reverse_archive/resource-tables/extracted/csv/newtile.csv):Tile 启用、类型与门槛; - [augment.csv](../../HEROLL_APK_REVERSE_ONLY/01_core_reverse_archive/resource-tables/extracted/csv/augment.csv):31 条启用 Blessing 与权重; - [ingameshoplist.csv](../../HEROLL_APK_REVERSE_ONLY/01_core_reverse_archive/resource-tables/extracted/csv/ingameshoplist.csv):96 条商品; - [gameconfig.csv](../../HEROLL_APK_REVERSE_ONLY/01_core_reverse_archive/resource-tables/extracted/csv/gameconfig.csv):`LoopRatio=90,5,1`、`shopRerollCost=3,2` 等全局配置; - [E-STAGE-NATIVE-001.md](../../work/heroll-stage-2-5/evidence/E-STAGE-NATIVE-001.md):初始化与 `AddNextLoopTiles` 原生调用证据; - [stage-floor-rules report](../stage-floor-rules/2026-08-31_逆向-HEROLL关卡楼层分布与刷新规则-report.md):楼层、Good 牌组与 DiceGauge 压力闭环; - 运行时解密 `libil2cpp.so`:SHA-256 `AC357FBA5BF8A68BA02829593020F29DA220EAC8D5ECA91212C1A6744B0100DA`。 上面最后一行的哈希必须以 QA 脚本重新计算值为准;若与本机文件不一致,应停止地址复用。地址证据只对当前 HEROLL 2.0.1 样本有效。 本轮没有使用互联网资料。原因不是跳过检索,而是这四组问题都属于特定版本的私有配置与原生执行顺序;公开攻略无法比本地 APK 提供更强证据。无法从本地闭合的项目已经进入“未知参数 MVP 默认表”,没有用网络二手描述冒充源码结论。 ## 6. 开发验收 1. 自动测试跨 Start 且带剩余步数:商店层必须先完成下一层注入,再打开商店,关闭后 Heal,最后继续移动。 2. 最终Floor跨Start:不得调用普通Good/Enemy注入;保留`remainingSteps`;44格全部为Boss Tile;剩余步数为0时必须再Roll一次后入战。 3. 对 `02` 白名单逐 ID 强制触发;任何未列入 ID 不得自然生成。 4. 读取 `03` 的 96 行:目录必须全量加载,但只有 `mvp_enabled=true` 的 77 行能进入槽池。 5. Blessing 候选池默认应为 28 条;依赖、唯一、叠加上限过滤在抽取前执行。 6. 商店刷新仅刷新 3 个随机槽;固定槽不变;免费刷新不推进付费刷新计数。 7. 所有 `04` 默认值必须可配置并带 `DEMO default` 标签;日志不可记录为 `source confirmed`。 8. 强制触发`129`:验证两骰、`152`额外+2、无放回槽位选择、无空位分支、跨Floor持续与最终BOSS清理。