# HEROLL 2.0.1 局内装备等级、词条、星级与 Boss 中途掉落逆向报告 > 范围:仅 HEROLL 2.0.1 Unity IL2CPP 版本;仅用于本机内部玩法验证。 > 标签:`[源码确认]` 可直接还原;`[实机观察]` 来自用户/录像;`[验证版新增]` 是原作证据不足时的明确设计选择。 > 样本:`libil2cpp.runtime-decrypted.so`,SHA-256 `AC357FBA5BF8A68BA02829593020F29DA220EAC8D5ECA91212C1A6744B0100DA`。 ## 结论摘要 | 问题 | 可实施结论 | 证据等级 | |---|---|---| | 装备等级 | `GearLevel = max(1, Floor + Δ)`;普通主线 `Δ={0,1,2}`,权重 `90:5:1`,即 `93.75% / 5.2083% / 1.0417%` | `[源码确认]` | | 六品质影响 | 品质不使用全局倍率直接放大局内装备;它决定副词条数、星级分配,且仅 Myth 主属性多 1 个有效等级 | `[源码确认]` | | 部位词条池 | 四个局内部位共用同一组 9 个副词条,抽取不重复;没有发现部位过滤 | `[源码确认]` | | 星级维度 | 星级是每条 `Status.plusLevel`,不是装备等级、品质或另一套 Affix Tier;每星把该词条的有效等级提高 1 | `[源码确认]` | | Boss 中途掉装 | 已观察存在,但未恢复 `boss_0` 可审计阈值;验证版采用首次向下越过 50% HP 时追加 1 件 | `[实机观察] + [验证版新增]` | ## 1. 装备等级公式 配置 `gameconfig.csv` 给出: ```text LoopRatio = 90, 5, 1 ``` `BattleController.GetWeaponLoop @ 0x55BE240` 构造三项权重并抽取偏移;函数尾部把当前零基圈数加一,再加抽到的偏移。因此普通主线可写为: \[ Floor = LoopIndex + 1 \] \[ GearLevel = \max(1, Floor + \Delta) \] | Δ | 权重 | 归一化概率 | Floor 10 示例 | |---:|---:|---:|---:| | 0 | 90 | 93.7500% | Lv.10 | | 1 | 5 | 5.2083% | Lv.11 | | 2 | 1 | 1.0417% | Lv.12 | 这与实机观察“Floor 10 不低于 Lv.10、最高 Lv.12”一致。原生函数还含模式/研究相关的下限或上限分支;本地玩法验证版没有局外研究,故应使用上表作为普通主线基线,不引入元成长修正。 ## 2. 品质、主属性和副词条 ### 2.1 六品质 | enum | 品质 | 基础权重 | 基础概率 | 副词条数 | 主属性特殊规则 | |---:|---|---:|---:|---:|---| | 0 | Normal / 灰 | 210 | 68.4039% | 0 | 无 | | 1 | Rare / 绿 | 60 | 19.5440% | 1 | 无 | | 2 | Epic / 蓝 | 28 | 9.1205% | 2 | 无 | | 3 | Legend / 金 | 4 | 1.3029% | 3 | 无 | | 4 | Myth / 彩 | 1 | 0.3257% | 3 | 主属性有效等级 +1 | | 5 | Arcane / 红 | 4 | 1.3029% | 3 | 无;一条副词条带 Arcane 隐藏/观察标记 | 这些百分比是无其他修正时的基础品质分布。`GrageMultiplier=1,2,4,8,16` 虽存在于 `gameconfig.csv`,但没有进入本报告追踪到的局内 `GetMonoWeaponData → GetStatus` 数值路径,不能把它当作局内品质乘区。 ### 2.2 四部位主属性 | 局内部位 | 固定主属性 | |---|---| | Ingame_Weapon | ATTACK_POWER | | Ingame_Ring | HEALTH | | Ingame_Gauntlet | AIM | | Ingame_Boots | DEFENSE | 先抽 40 件装备之一,再独立生成品质、等级和属性;装备 ID 与品质不是预组合的独立掉落项。 ### 2.3 属性值公式 对 `weaponstatus.csv` 中任意属性 `s`: \[ EffectiveLevel_{main}=GearLevel-1+MythBonus+ResearchBonus \] 其中 `MythBonus=1` 仅品质 enum 4 生效;验证版 `ResearchBonus=0`。 \[ EffectiveLevel_{affix}=GearLevel+Star-1 \] \[ MinValue=BaseMin_s+PlusValue_s\times EffectiveLevel \] \[ MaxValue=BaseMax_s+PlusValue_s\times EffectiveLevel \] 随后在 `[MinValue, MaxValue]` 内取随机值。`isFloat=true` 保留 1 位小数,`isFloat=false` 取整数。源码内部生成两个有间距的候选值,当前调用链采用第一个;要做逐 seed 精确复刻时,必须保持原随机流调用次数。 ## 3. 四部位允许的随机副词条 原生生成器显式建立枚举集合 `{6,5,7,8,9,10,11,12,13}`,对应下列 9 项;四个部位均使用此池,单件装备内无重复。 | 副词条 | Base 范围 | 每星 Plus | 百分比 | 小数 | |---|---:|---:|---|---| | EVASION | 14–20 | 7 | 否 | 否 | | REGEN_PER_SECOND | 1–2 | 2.4 | 否 | 是 | | TOTAL_DAMAGE | 1–2 | 1 | 否 | 是 | | TRUE_DAMAGE | 1–2.5 | 1.7 | 否 | 否 | | KILL_HEAL | 6–9 | 2.5 | 否 | 否 | | COUNTER_ATTACK | 7–9 | 1.5 | 是 | 否 | | ATTACK_SPEED | 7–9 | 1.4 | 是 | 否 | | CRITICAL_RATE | 10–12 | 1.5 | 是 | 否 | | LIFE_STEAL | 4.5–7.5 | 1.5 | 是 | 否 | 注意:`HEALTH` 不是随机副词条,而是 Ring 固定主属性;`ATTACK_POWER/AIM/DEFENSE` 同理属于各自部位主属性。 ## 4. 星级的真实含义及品质分配 运行时数据没有独立 `AffixTier` 字段。每条属性使用 `Status.plusLevel` 表达星级;因此实现中不要再叠加一套隐藏 T1/T2/T3。 | 品质 | 生成结果(副词条星级) | 精确规则 | |---|---|---| | Normal | 无 | 0 条副词条 | | Rare | `[1]` | 1 条,初始 1 星 | | Epic | `[1,1]` | 2 条,各 1 星 | | Legend | `[2,1,1]` | 3 条各 1 星,再随机给其中一条 +1 | | Myth | 见下表 | 3 条各 1 星,再独立随机分配 3 个星点,可重复命中 | | Arcane | `[4,1,1]` | 3 条各 1 星;随机选一条集中获得 +3,并设置 Arcane 标记 | Myth 的排序后分布: | 星级组合 | 概率 | |---|---:| | `[4,1,1]` | 1/9 = 11.1111% | | `[3,2,1]` | 2/3 = 66.6667% | | `[2,2,2]` | 2/9 = 22.2222% | 原生额外星点循环调用 `Common.Roll(1.0)`;该条件恒真,所以 Legend 精确增加 1 点,Myth/Arcane 精确增加 3 点,不是“最多增加”。Arcane 被选中的 4 星词条还会设置 `isHideStatusIndex=true`、`arcaneWatchIndex=0`;本报告不把尚未闭环的 UI 揭示时序扩写成规则。 ## 5. Boss HP 中途追加装备 用户实机观察表明 Boss 在战斗中 HP 降低到某阶段时会追加 1 件装备。当前逆向可以确认多个 `SpawnRandomWeapon` 调用入口,也能确认 `GoldCarriageEnemy` 有独立阈值奖励结构,但没有恢复到足以证明 `boss_0` HP 百分比的专属调用链。因此不能把任意百分比标成原作事实。 玩法验证版采用以下覆盖规则: ```text [验证版新增] boss_0 首次由 HP > 50% 向下越过 HP <= 50% 时,追加生成 1 件装备。 midBossGearDropped 为单场战斗幂等标记;复活不重置。 若一击同时越过 50% 并致死,先产生中途装备,再执行死亡结算。 Boss 死亡掉落与该追加掉落是两个独立来源。 ``` 这个选择可见、易测、不会伪装成原作恢复结论。若未来动态 Hook 得到真实阈值,只替换配置,不改变事务结构。 ## 生成流程图 ```mermaid flowchart TD A[当前 Floor] --> B[GetWeaponLoop] B --> C{Δ 加权抽取 90:5:1} C --> D[GearLevel = Floor + Δ] D --> E[抽 40 件装备之一] E --> F[抽六品质] F --> G[部位固定主属性] F --> H[按品质确定副词条数] H --> I[四部位共享 9 词条池\n单件不重复] I --> J[按品质分配 plusLevel 星级] G --> K[GetStatus 数值区间] J --> K K --> L[按 isFloat 整数或 1 位小数] ``` ## Evidence → Finding → Path ### Findings - `F-DROP-001`(validated,高):普通主线装备等级为 `Floor + Weighted(0,1,2; 90,5,1)`。`evidence_ids: [E-DROP-LEVEL-001]` - `F-DROP-002`(validated,高):六品质通过副词条数量、星级分配和 Myth 主属性 +1 有效等级影响属性,不在此路径使用全局品质倍率。`evidence_ids: [E-DROP-AFFIX-001]` - `F-DROP-003`(validated,高):四局内部位共用 9 项无重复副词条池。`evidence_ids: [E-DROP-AFFIX-001]` - `F-DROP-004`(validated,高):星级等于每条 `Status.plusLevel`,每星提升该词条一个有效等级;没有独立 Affix Tier。`evidence_ids: [E-DROP-AFFIX-001]` - `F-DROP-005`(partial,中):Boss 中途追加装备被实机观察支持,但 `boss_0` 精确 HP 阈值尚未由静态调用链闭环;50% 是验证版新增。`evidence_ids: [E-DROP-BOSS-001]` ### Path - `P-DROP-001` - `path_type: callflow` - steps: `gameconfig.LoopRatio → BattleController.GetWeaponLoop → GetMonoWeaponData → status generator → GetStatus → GetRandomValues` - `evidence_ids: [E-DROP-LEVEL-001, E-DROP-AFFIX-001]` ## 复现入口 ```powershell rg -n "LoopRatio|GrageMultiplier" HEROLL_APK_REVERSE_ONLY/01_core_reverse_archive/resource-tables/extracted/csv/gameconfig.csv rg -n "ATTACK_POWER|EVASION|LIFE_STEAL" HEROLL_APK_REVERSE_ONLY/01_core_reverse_archive/resource-tables/extracted/csv/weaponstatus.csv radare2 -q -c "s 0x55BE240; pd 420" work/heroll-stage-2-5/libil2cpp.runtime-decrypted.so radare2 -q -c "s 0x55BDCC0; pd 1450" work/heroll-stage-2-5/libil2cpp.runtime-decrypted.so radare2 -q -c "s 0x55C0840; pd 360" work/heroll-stage-2-5/libil2cpp.runtime-decrypted.so radare2 -q -c "s 0x55C0D70; pd 320" work/heroll-stage-2-5/libil2cpp.runtime-decrypted.so ``` ## 互联网交叉检索 公开资料没有给出上述局内精确权重或公式。Google Play 只描述掷骰、战斗和装备循环;社区 Wiki 的 Equipment 页面主要是局外持久装备系统,不能与本报告的局内 `MonoWeaponData/Status.plusLevel` 混用。社区讨论“等级通常比稀有度更重要”仅与本报告的线性等级增长方向相容,不构成公式证据。 - Google Play:https://play.google.com/store/apps/details?hl=en_SG&id=com.percent.aos.rollinghero - Heroll Wiki Equipment:https://heroll.fandom.com/wiki/Equipment - Reddit 社区讨论:https://www.reddit.com/r/heroll/comments/1l1x8qx ## 限制 - Arcane 词条的完整 UI 揭示/观察生命周期尚未闭环,本报告只保留已确认字段语义。 - `boss_0` 的原作中途掉落阈值尚未闭环;50% 仅为验证版配置。 - 模式和局外研究可能给 `GetWeaponLoop/GetStatus` 增加修正;本报告的实现目标是无局外成长的主线玩法验证版。