Files
HEROLL/HEROLL_RULES_v0.2.8/08-BOSS与局内结束/2026-08-24_逆向-HEROLL丹药与Boss循环-report.md

75 lines
3.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 保留已实现的验证语义。