75 lines
3.5 KiB
Markdown
75 lines
3.5 KiB
Markdown
# HEROLL 丹药与 Boss 循环逆向纠错报告
|
||
|
||
> 日期:2026-08-24
|
||
> 工具链:IL2CPP 元数据、runtime-decrypted `libil2cpp.so`、radare2 6.2.0、配置表、公开资料交叉检索、TypeScript/Playwright
|
||
> Scope:[case scope](../work/20260824-heroll-potion-gauge/scope.md) · [timeline](../work/20260824-heroll-potion-gauge/timeline.md)
|
||
|
||
## 结论
|
||
|
||
1. `potion.csv` 的 `HealLevel.value=50/80/110…650` 是固定 HP,不是最大生命百分比。独立的 `Potion_PercentHeal(valueA=10)` 才额外增加 10% 最大生命恢复。
|
||
2. Boss 循环按负责人实机确认实现:玩家 ROLL 2 次后开启 4 次 ROLL 倒计时;倒计时结束逐个把 4 个非祝福玩家地块变成怪物地块,然后回到 0/2。
|
||
3. 旧双击启动器闪退来自 LF-only UTF-8 CMD 与 Windows PowerShell 5.1 的 BOM-less UTF-8 解码问题;已改为 ASCII+CRLF CMD、UTF-8 BOM+CRLF PS1,并加入错误留窗和端到端自测。
|
||
|
||
## Evidence
|
||
|
||
| ID | 证据 | 复现 | Hash |
|
||
|---|---|---|---|
|
||
| E-001 | `potion.csv` 的 21 级曲线 | 见 [E-001](../work/20260824-heroll-potion-gauge/evidence/E-001.md) | `8049…EFA99` |
|
||
| E-002 | `GetPotionFinalHeal @ 0x5473568` native 方法体 | 见 [E-002](../work/20260824-heroll-potion-gauge/evidence/E-002.md) | `AC35…00DA` |
|
||
| E-003 | Gauge 更新、spawn 调用与清零链 | 见 [E-003](../work/20260824-heroll-potion-gauge/evidence/E-003.md) | `43CE…5CD` |
|
||
| E-004 | 公开资料没有精确基础公式 | 见 [E-004](../work/20260824-heroll-potion-gauge/evidence/E-004.md) | n/a |
|
||
| E-005 | 负责人实机 2+4+4 规则确认 | 见 [E-005](../work/20260824-heroll-potion-gauge/evidence/E-005.md) | n/a |
|
||
| E-006 | MVP、浏览器与启动器验收 | 见 [E-006](../work/20260824-heroll-potion-gauge/evidence/E-006.md) | n/a |
|
||
|
||
## Findings
|
||
|
||
| ID | 状态 | 置信度 | 结论 |
|
||
|---|---|---|---|
|
||
| F-001 | validated | high | HealLevel 是固定 HP;PercentHeal 是独立百分比加项 |
|
||
| F-002 | validated | high | Boss 是 2 ROLL 蓄势 + 4 ROLL 倒计时 + 转换 4 格 |
|
||
| F-003 | validated | high | 启动器故障由 CMD/PS1 编码与换行兼容性造成 |
|
||
|
||
完整字段见 [findings.md](../work/20260824-heroll-potion-gauge/findings.md)。
|
||
|
||
## Path
|
||
|
||
```mermaid
|
||
flowchart LR
|
||
cfg["HealLevel 固定值"] --> base["基础恢复 HP"]
|
||
pct["PercentHeal 10% Max HP"] --> add["额外恢复"]
|
||
base --> sum["相加"]
|
||
add --> sum
|
||
adaptive["Adaptive multiplier"] --> final["除以 100 后取整"]
|
||
sum --> final --> clamp["生命上限钳制"]
|
||
```
|
||
|
||
```mermaid
|
||
stateDiagram-v2
|
||
[*] --> Build0
|
||
Build0 --> Build1: ROLL 1
|
||
Build1 --> Countdown4: ROLL 2
|
||
Countdown4 --> Countdown3: ROLL 3
|
||
Countdown3 --> Countdown2: ROLL 4
|
||
Countdown2 --> Countdown1: ROLL 5
|
||
Countdown1 --> BossAction: ROLL 6
|
||
BossAction --> Convert4: 逐格感染动画
|
||
Convert4 --> Build0: 重置循环
|
||
```
|
||
|
||
完整调用路径见 [path.md](../work/20260824-heroll-potion-gauge/path.md)。
|
||
|
||
## 复现命令
|
||
|
||
```powershell
|
||
C:\Users\toshio\Tools\radare2\bin\radare2.exe -q -c "e asm.lines=false; s 0x5473568; af; pdf; q" work\heroll-stage-2-5\libil2cpp.runtime-decrypted.so
|
||
cd mvp
|
||
.\Validate-Heroll-MVP.ps1
|
||
cd ..
|
||
cmd.exe /d /c "set HEROLL_MVP_SELF_TEST=1&& call HEROLL_MVP_双击启动.cmd"
|
||
```
|
||
|
||
## 遗留边界
|
||
|
||
- `2 + 4 + 转换 4 格` 的精确时序来自负责人实机确认;bounded native 证据只闭环 Gauge 增量、范围、spawn 调用和清零。
|
||
- 其他丹药强化若需要宣称“原作完整还原”,仍应逐个恢复 native 消费者;当前 MVP 保留已实现的验证语义。
|