Files
HEROLL/HEROLL_RULES_v0.2.8/06-天道赐福/祝福装备商店综合逆向报告.md

10 KiB
Raw Permalink Blame History

HEROLL 2.0.1 祝福、装备与局内商店逆向清单

范围:仅 HEROLL 2.0.1。结论来自本地 XAPK/Unity 配置、本地化资产及解密后的 libil2cpp;未混用其他项目资料。本文用于内部玩法验证,不代表发行授权。

1. 结论摘要

模块 逆向结论 置信度
祝福 augment.csv 共 58 行,其中原作启用 31 条;名称和效果模板均已从原作简中本地化资产还原 高
装备 局内装备 40 件,武器/戒指/护手/鞋子各 10 件;装备 ID 不绑定品质与随机词条 高
品质 六档:灰/绿/蓝/金/彩/红;基础权重 210/60/28/4/1/4,副词条数 0/1/2/3/3/3 高
装备等级 普通关卡 GearLevel = Floor + Weighted(0,1,2; 90,5,1) 高
商店 源码商品 96 条:地块 12、祝福 31、药水 9、属性 13、固定升级 30、彩票 1 高
刷新 商店打开时付费刷新计数归零;第 k 次付费刷新价格为 3 + 2k,所以依次为 3、5、7、9…… 高
重复购买 没有通用“重复购买涨价”。普通商品只减少剩余购买次数,价格不变;固定升级通过不同等级商品行形成预设价格链 高
黑市 独立加价公式 最终价 = 基础价 + trunc(基础价 × 加价百分比 / 100);当前样本未闭合序列化的百分比常量 中高

完整逐行数据见同目录的 tables/ CSV 和 Excel 工作簿。

2. 启用祝福列表(31 条)

效果文字保留原作占位符:{n} 为数值、{sec} 为秒数、{stat} 为属性名。升级数组、可叠加标志、触发概率、图标和依赖字段在完整表中保留。

ID 祝福 原作简中效果模板 配置值
100 守护一击 每攻击敌人 {n} 次,获得防护罩 6
102 吸血 额外恢复 {n}% 暴击伤害 15/20/25/30
103 攻击弱点 暴击攻击力 +{n}% 30/35/40
106 奇迹骰子 濒临死亡时,当骰子总和大于 {n},将复活 4
108 起始一击 首次攻击伤害 +{n}% 70/80/90
109 攻击力加速 开始战斗 3 秒后,攻击力 +{n}% 30
110 攻击速度加速 开始战斗 3 秒后,攻击速度 +{n}% 30
111 恢复骰子 当骰子双倍时,恢复 {n}% 生命值 8
112 战斗狂 每失去 5% 生命值,攻击速度 +{n}% 3
113 祝福的开始 战斗开始时,以 {n}% 概率恢复所有生命值 10
114 快速回避 被攻击时,以 {n}% 概率仅受到 1 点伤害 4
115 幸运骰子 当骰子总和为 7,攻击力 +{n}% 30/40/50
116 守护骰子 当骰子总和为 6 以上,获得防护罩 1
117 吸收灵魂 每次击杀敌人,生命值永久增加 {n} 5
118 腐蚀一击 每次攻击命中,使敌人防御力降低 {n}% 10/20/30
121 多多益善 战斗开始时,按敌人数量使 {stat} +{n}% 8
122 奇数骰子 当所有骰子点数为奇数时,暴击率 +{n}% 20
124 掠夺者 在 {sec} 秒内击杀敌人时,获得装备 0(时间字段另存)
125 顽强生命 战斗开始 {sec} 秒后,恢复 {n}% 已损生命值 20
126 呼唤闪电 每 {sec} 秒以 {n}% 概率召唤一次闪电 10
132 质重于量 每击杀 {n} 个敌人,获得英雄阶级装备 10
147 调整数量 移除所有各 1 个敌人 0
148 支援金 该回合结束时,获得 {n} 点数 20
149 补充骰子 当骰子总和大于 11,补充 1 个药水 0
150 掠夺药水 每击杀 {n} 个敌人,获得 1 个药水 10
151 领袖气质 每次进入商店时,增加 {n} 次免费刷新 1
152 都市计划 于空地建设时,额外建设 {n} 个建筑 2
153 刺激 回避时,恢复生命值上限的 {n}% 1/2/3
154 战后休息 战斗结束后,恢复生命值上限的 {n}% 10
156 残火 受到烧伤的敌人死亡时爆炸,对全体造成攻击力 {n}% 的伤害 150
157 点燃 战斗开始时,以 {n}% 概率使所有敌人烧伤 +1 10

说明:表内对繁体/异体字做了便于开发阅读的简体规范化;CSV 中保留原始 zh-cn 文本和英文模板。

3. 装备列表与生成规则

3.1 40 件装备本体

部位 主属性 10 件原作装备
武器 ATTACK_POWER 冒险者匕首、誓约匕首、破碎匕首、樵夫匕首、亡者匕首、神圣匕首、霜光匕首、光之匕首、祭坛匕首、烈火匕首
戒指 HEALTH 冒险者戒指、誓约戒指、星星戒指、樵夫戒指、亡者戒指、龙之戒指、霜光戒指、幸运戒指、堕落戒指、永存戒指
护手 AIM 冒险者手套、誓约手套、古代手套、樵夫手套、神圣手套、龙之手套、霜光手套、幸运手套、侏儒手套、永劫手套
鞋子 DEFENSE 冒险者靴子、誓约靴子、古代靴子、樵夫靴子、神圣靴子、猎龙者靴子、霜光靴子、幸运靴子、堕落靴子、永劫靴子

3.2 品质、等级与词条

装备本体、品质、等级和随机词条是分阶段生成,不能把某件装备固化成某个品质。

品质 基础权重 无修正基础概率 副词条数
Normal(灰) 210 68.40% 0
Rare(绿) 60 19.54% 1
Epic(蓝) 28 9.12% 2
Legend(金) 4 1.30% 3
Myth(彩) 1 0.33% 3
Arcane(红) 4 1.30% 3
  • 等级:Floor + Δ,Δ=0/1/2 的权重为 90/5/1;归一化概率约为 93.75%/5.21%/1.04%。
  • 所有四个部位共享九项不重复随机副词条池:闪避、每秒恢复、总伤害、真实伤害、击杀恢复、反击、攻击速度、暴击率、生命偷取。
  • 星级是 Status.plusLevel,属于词条强化层,不是装备等级或品质的别名。
  • 品质决定副词条数量及可用强化资源,但装备名称本身不决定品质、等级或词条。
  • 主属性/副词条数值公式和星级分配证据已在既有掉落规则报告闭合,本清单直接复用,不重复创造一套规则。

4. 商店商品(96 条)

4.1 商品构成

类型 数量 ID 范围 定价/限购方式
地块 TILE 12 100–111 每行固定价格;通常限购 1
祝福 AUGMENT 31 112–142 每行固定价格;限购 1
药水 POTION 9 143–151 每行固定价格;限购 1
直接属性 STAT 13 152–164 每行固定价格;限购 3/5/10
固定升级 FIXED 30 165–194 等级链逐行预设价格;末项药水补充可重复购买
彩票 LOTTO 1 195 价格 5;限购 1

96 条商品的中文名称、效果、价格、buyCount、等级和键值见 tables/shop-catalog.csv。

4.2 刷新机制

原生函数确认如下:

打开商店:paidRerollCount = 0

当前付费刷新价:
nowRerollCost = 3 + 2 * paidRerollCount

点击刷新:
if freeRerollCount >= 1:
    freeRerollCount -= 1
    不扣点数,不增加 paidRerollCount
else:
    扣除 nowRerollCost
    paidRerollCount += 1

因此每次进入商店后的付费刷新序列是 3、5、7、9、11……。免费刷新优先消耗,不推进付费价格。刷新随机商品槽;固定升级槽的进度不因刷新重置。

4.3 重复购买与价格增长

这里需要纠正一个常见误解:源码不存在“同一普通商品每买一次按百分比涨价”的通用逻辑。

  • 普通商品购买成功后,只执行 remainBuyCount -= 1;归零后售罄,价格字段不变化。
  • 直接属性商品可购买多次,但每次价格仍是该商品行的固定价格,直到达到限购。
  • 固定升级看似“重复购买涨价”,实际是买完当前等级后切换到下一条预配置商品行。

固定升级价格链:

升级族 价格序列 相邻涨幅
药水持有上限 potionCount 10, 15, 21, 28, 36, 45, 55, 66, 78 +5,+6,+7,+8,+9,+10,+11,+12
药水恢复量 potionHeal 7, 11, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95, 100 +4,+4,+5,之后每级 +5
补充 1 瓶药水 potionAdd 5 无限次;单价不增长

黑市加价是另一套机制,与购买次数无关:

price = basePrice + trunc(basePrice × surchargePercent / 100)

当前逆向样本已恢复公式和字段 priceSurchargePer,但没有足够证据确定所有场景使用的序列化百分比,因此不填猜测值。

5. Evidence → Finding → Design Path

本轮证据记录:E-CATALOG-BLESSING-001、E-CATALOG-EQUIP-001、E-CATALOG-SHOP-001、E-SHOP-RUNTIME-001。

Evidence Finding 可实施规则
augment.csv + 本地化资产 31 条启用祝福及原作文本 祝福池严格取启用行,展示文案按键值格式化
weapondrop.csv + weaponstatus.csv + 原生生成函数 40 件装备、四部位主属性、动态品质/词条 装备本体与品质/等级/词条分离抽取
ingameshoplist.csv + 关联表 96 条商品、价格和购买上限 以商品行作为唯一配置源,不自行拼价
gameconfig.shopRerollCost=3,2 + 0x54E1FD4 刷新成本为线性公式 每次进店重置付费计数;免费刷新优先
BuyItem @ 0x54DE518 购买只递减剩余次数 普通重复购买不涨价
SetSurcharge @ 0x54DE0A4 黑市使用独立百分比加价 不把黑市加价误写成重复购买涨价

6. 复现、限制与来源

  • 结构化抽取脚本:analysis/catalog-reverse/scripts/extract_catalogs.py
  • 原生刷新公式:IngameShopView 方法 0x06002CD2 @ 0x54E1FD4,核心 madd 位于约 0x54E2188。
  • 刷新动作:0x06002CD3 @ 0x54E2250;免费次数优先分支约 0x54E22F0–0x54E23A4。
  • 购买计数:IngameShopItemSlot.BuyItem @ 0x54DE518,递减与售罄约 0x54DE724–0x54DE74C。
  • 黑市加价:IngameShopItemSlot.SetSurcharge @ 0x54DE0A4。
  • 未使用互联网补全:本地逆向数据已足够回答清单、刷新、价格和购买增长问题;唯一未闭合的黑市加价百分比明确保留为未知,没有以网络二手资料替代源码证据。