Initial import of HEROLL source and design documents

This commit is contained in:
toshiocn
2026-10-26 16:05:39 +08:00
commit fdb55672c1
1846 changed files with 290692 additions and 0 deletions
@@ -0,0 +1,136 @@
# HEROLL 2.0.1 Good Tile 与 Corner 规则逆向报告
> 仅限本机内部玩法验证。本文只分析 HEROLL;其他项目资料不构成证据。
## 结论摘要
用户指定的六个 Good Tile 已闭合为六套独立状态机:Chest、Forge、Dice Battle、Lucky Scratch、Claw Machine、Dicereel。用户所说的“四类 Corner”不是 `newtile.csv` 中全部 Corner,而是 `ingamereward.csv` 基础四项 `126–129`:Piggy Bank、Race、Flower Garden、Housing Support。原作另有 Wall of Thorns、Black Market、Dice Catapult、Warp;本文列出它们用于防止配置误归类,但不把它们伪装成基础四类。
最重要的纠错:
- Chest 一次生成 **3 件**随机局内装备,不是旧验证表中的 1 件。
- Dice Battle 没有“支付 3 点下注”的证据。配置 `3,10,2.5,5,10` 与原生字段更支持“开局 3 骰、首胜 10 点、连胜倍率 2.5/5/10”。
- Lucky Scratch 对应 `GoodEventSpito(169)`,不是 `GoodEventLotto(142)`;后者是另一个 Drawing Lots/抽签事件。
- Claw 2.0.1 配置为基础 `1` 次、`15` 秒;截图中的 2 次处于额外继续入口。社区资料所称“两次基础抓取”属于版本冲突,开发还原以本 APK 为准。
- Dicereel 的 `value` 列不是概率。奖励由三骰配对/三连模式决定;不能拿 `20,25,50...` 归一化成掉率。
完整结构化规则见 [good-tile-rules.csv](tables/good-tile-rules.csv)、[corner-rules.csv](tables/corner-rules.csv) 与 [event-reward-tables.csv](tables/event-reward-tables.csv)。
## 1. 统一进入与退出框架
```text
完成普通移动
→ HandlePlayerTileLanding(tile)
→ GetETileEvent(ETileEvent)
→ ExecuteAsync(tile)
→ 锁定下一次掷骰/移动
→ 事件 UI 或被动 Corner 状态机
→ 结果写入角色/棋盘状态
→ 完成动画与回调
→ ExecuteAsync 返回
→ 恢复棋盘操作
```
自然生成资格先受 `newtile.isEnabled/minStage/minLoop` 过滤;玩家安装地块则来自 `OutGameTile.refNewTileId` 牌组。两条入口进入的是同一事件执行器。`minLoop` 为零基索引,因此 `minLoop=3` 对应内部第 4 个 Loop,而不是可随意解释为 UI 第 3 层。
原作普遍使用 `isClick/isPicking/isRolling/canGrab/isResetting` 做重复输入保护。没有证据显示 2.0.1 会给局内小游戏建立独立、可恢复的事务快照;因此“进程被杀后精确恢复半局小游戏”不能写成原作规则。复刻时应在结果 RNG 产生后、表现前保存 `eventInstanceId + result + committed`,但这是工程防护,不是逆向确认的原作功能。
## 2. Good Tile 详细规则
### 2.1 Chest(141)
- 条件:启用,`minStage=0/minLoop=0`;默认 Good Tile 牌组也包含其 Rare 版本。
- 操作:打开宝箱;一次生成 3 个独立装备实例。装备使用正常局内生成器,因此等级、品质、词条仍服从装备掉落报告,而不是 Chest 专属固定表。
- 成败:必定完成,无空奖失败分支。
- 奖励:3 件装备同时进入常规掉落/比较流程;是否装备由玩家后续决定,未选择项按正常掉落处理。
- 退出:三次生成与飞入表现结束后,事件回调返回;不能在只生成 1–2 件时恢复棋盘。
- 异常:打开按钮需幂等;如果资产或生成器异常,原生只有空引用防崩路径,没有补偿表。复刻应把三件实例作为一个原子批次保存。
### 2.2 Forge(137)
- 条件:启用,`minStage=0/minLoop=0`;落地创建一件 Normal 候选装备。
- 操作:玩家在“直接领取”和“挑战强化”之间选择。强化成功后仍可领取或继续挑战。
- 概率:当前 2.0.1/GDD 证据链采用 `80% → 50% → 30% → 10%` 四步。它支持从 Normal 逐步向更高品质推进;Arcane 是否可由 Forge 获得没有闭环,不能擅自加入。
- 成功:候选装备升一档,继续显示下一档概率。
- 失败:候选销毁,事件立即结束,不获得该装备。
- 奖励:只有“直接领取”或最终停止时的当前候选装备。
- 异常:强化点击必须在 RNG 结果写入后锁死;返回/重复点击不得重投。社区旧页记录 `80/50/10`,与当前四步版本冲突,本文不采用旧页覆盖 APK。
### 2.3 Dice Battle(143)
- 条件:启用,`minStage=0/minLoop=3`;落地打开 `BlackJackView`。
- 操作:玩家初始掷 3 颗 D6;可反复 `HIT` 增加一颗或 `STAND`。对手随后自动行动。
- 判定:目标是不超过 21 且比对手更接近 21。玩家超过 21 立即失败。原生只有 `UserWin/DealerWin` 两个终局函数,未发现独立 Push 奖励;平局进入 DealerWin 是强推断,需一条平局录像才能升级为确认。
- 奖励:首次连胜基础 10 点;`GetCalculatedReward = baseReward × GetStreakMultiplier + accumulatedBonus`。配置提供 2.5、5、10 三档连胜倍率。胜利后可领取或继续;失败丢失尚未领取的连胜奖励。
- 退出:领取提交并关闭;继续会重置双方本手、保留 winStreak;失败关闭且无领取。
- 异常:`isRolling` 时 HIT/STAND 禁用。奖励在领取时计算,不能在每次胜利同时发放再允许重试,否则会重复产出。
### 2.4 Lucky Scratch(169)
- 条件:`minStage=1/minLoop=3`;这也解释了它不会在第 1 关 Stage 0 自然出现。
- 操作:奖励先按权重选定,玩家拖动擦除遮罩。`ScratchPainter` 达到 prefab 的 `revealThreshold` 后只触发一次 `OnRevealed`。
- 奖励:一等奖 30 点/权重 10,二等奖 10 点/权重 50,三等奖 1 点/权重 40。总权重 100,无空奖。
- 退出:揭示并展示奖励后回调结束。局内版本不应把 `GoodEventLotto` 的五次抽签成本带进来。
- 异常:`isRevealed` 防重复;`OnDestroy` 清理渲染纹理和订阅。遮罩阈值是 prefab 序列化字段,当前归档没有给出可靠数字,必须以原资产值或实机标定,不能填造百分比。
### 2.5 Claw Machine(151)
- 条件:启用,`minStage=0/minLoop=0`;进入时创建物理柜和胶囊。
- 操作:抓钩自动横移;15 秒内按一次 `GRAB`,执行下落、闭爪、回程与投放。
- 次数:2.0.1 基础值为 1。参考图中的“2 次”属于额外继续按钮;不应当作基础次数。
- 胶囊:源表注明布局 20 个胶囊;一件 Legendary 装备为 guaranteed-good,位于底部。其余普通池按 `empty 40 / point 70 / potion 14 / Normal gear 40` 加权。Rare、Epic、祝福、药水祝福基础权重为 0,只有技能/额外状态可注入。
- 成功:胶囊进入收集触发器才发对应奖励。夹起后途中掉落仍算失败。
- 失败:时间到、回程无胶囊或抽到 empty 均不发奖。
- 异常:`canGrab/isResetting` 阻止二次抓取,`OnDisable` 取消移动,奖励在 `OnCapsuleCollected` 触发,不在按键时预发。
### 2.6 Dicereel(164)
- 条件:启用,`minStage=0/minLoop=3`。
- 操作:启动三格骰面转轮;结果使用 1–6 六种图标。逻辑按任意一对或三连归类,三颗均不同为空奖。
- 奖励:完整 13 行映射见 `event-reward-tables.csv`。三连优先于对子;对子行的 `-1` 表示第三颗必须不参与该对,而不是通配后把三连重复结算。
- 免费结果:面 3 的对子给 1 次免费转,三连给 2 次;免费次数回到同一状态机,不重复进入地块。
- 退出:本次结果动画完成且免费次数为 0 后结束。`isClick/isAnyFail` 防止重复停止或重复发奖。
## 3. 基础四类 Corner
### Piggy Bank(126)
它是跨回合被动容器。只要该 Corner 存在,每次正常双骰掷出对子 `A,A`,向罐内加入 **A** 点,而不是骰子和 `2A`。玩家落到 Piggy Bank 时一次性领取余额并清零。非对子没有失败提示,也不改变余额。
### Race(127)
落地后启动 3-roll 计数。玩家继续执行普通棋盘掷骰;在三次内到达/跨过 Start 即成功,获得 1 件 Legendary 局内装备。第三次结算后仍未到达则失败、无奖励。`TryAddCornerRace` 表明竞速不能叠加创建;成功或失败均清除覆盖层与计数。
### Flower Garden(128)
落地后把“前方下一整行”所有可转换普通格改成 Chest。它没有骰子判定、失败率或额外领取按钮。Corner、Start 与受保护地块不是转换目标。公开说明的“every tile”应理解为该行可变地块,而不是覆盖角落/起点控制格。
### Housing Support(129)
落地后玩家掷两颗独立 D6,以和 `A+B` 作为建房尝试数,在下一行的可用格建房;实际数量受可用格上限限制。随后按实际建成数给点数。原生分支确认双骰、位置映射、逐项建造和奖励阶段,但 APK 暴露表中没有房屋数到点数的可读映射,本地化 bundle 也只含空壳 `New Table_en`;因此“每房 1 点”只能作为实现候选,不能标成原作确认值。该项是本报告唯一会影响奖励量的残余未知。
## 4. 异常与恢复验收矩阵
| 场景 | 原作证据支持的行为 | 复刻验收要求 |
|---|---|---|
| 连点进入/结果按钮 | 各视图有 click/rolling/picking 状态锁 | 同一事件实例只生成一次结果 |
| 切后台 | 异步状态仍等待;Claw 可取消移动 | 恢复时显示既定结果,不重抽 |
| 动画中退出 | 原作无独立安全点证据 | 表现可重播,资源不可重发 |
| 奖励生成异常 | 原生以空对象检查为主,无补偿表 | 保持事件未提交并允许安全重试 |
| Claw 夹取途中销毁视图 | OnDisable 取消、未进收集区不发奖 | 不根据“抓钩曾接触”发奖 |
| Scratch 重复达到阈值 | isRevealed 单次触发 | OnRevealed 必须幂等 |
| Race 中断 | 未发现独立 race checkpoint | 复刻需保存 rollsLeft/active/rewarded |
| Corner 批量改格中断 | 未发现半批次恢复 | 目标列表和改格结果应原子提交 |
## 5. 证据、冲突与残余未知
Evidence → Finding → Design:
1. `newtile/outgametile/outgametileskill` 与三个小游戏配置表 → 事件 ID、门槛、基础值、奖励映射 → 结构化规则表。
2. IL2CPP metadata 与 31 个 ARM64 方法切片 → 独立事件类、输入锁、状态回调、奖励函数 → 状态机与异常矩阵。
3. 用户 `局内说明/局内_part4` → Chest 三装备、Forge 80% UI、Scratch 30/10/1、Claw 额外次数层级 → 纠正旧 GDD 假设。
4. 社区 Tiles 页 → 自然语言名称、Race 三次、Corner 效果、Chest 三件与旧版 Claw/Forge 文本 → 仅作语义交叉验证,不覆盖 2.0.1 配置。
残余未知只有两项:Housing Support 的精确点数换算;Dice Battle 平局是否由 DealerWin 处理。它们已明确标记,未用近似值冒充逆向结论。
公开交叉资料:[Heroll Wiki – Tiles](https://heroll.fandom.com/wiki/Tiles)。
@@ -0,0 +1,12 @@
# 02-地块与事件
Good Tile、Corner、事件奖励及运行规则。
## 文件
- [2026-09-01_逆向-HEROLL-GoodTile与Corner规则-report.md](./2026-09-01_%E9%80%86%E5%90%91-HEROLL-GoodTile%E4%B8%8ECorner%E8%A7%84%E5%88%99-report.md) — report;来源:`analysis/tile-event-rules/2026-09-01_逆向-HEROLL-GoodTile与Corner规则-report.md`
- [corner-rules.csv](./corner-rules.csv) — table;来源:`analysis/tile-event-rules/tables/corner-rules.csv`
- [event-reward-tables.csv](./event-reward-tables.csv) — table;来源:`analysis/tile-event-rules/tables/event-reward-tables.csv`
- [good-tile-rules.csv](./good-tile-rules.csv) — table;来源:`analysis/tile-event-rules/tables/good-tile-rules.csv`
模块内Markdown与CSV均来自同一v0.2.8规则域;跨模块综合报告会在相关模块中保留副本。
@@ -0,0 +1,9 @@
tile_id,source_id,display_name,group,min_stage,min_loop,entry,player_input,success_failure,reward_or_effect,exit_exception,confidence
126,CornerDoubleStack,Piggy Bank,core_four,0,0,"corner exists on board; doubles are observed globally while it is present","none while charging; land on the bank to collect","no fail state; a non-double adds nothing","each double A=A adds A points to the bank, not 2A; landing transfers the full stored balance to player points and resets it to zero","passive state survives ordinary tile events; collection is one settlement; duplicate receipt must not pay twice",high
127,CornerRace,Race,core_four,0,0,"landing starts a race only when no race is already active","make normal board rolls and reach/pass the Start tile within the next 3 rolls","success on reaching Start within 3 rolls; fail when the third roll ends without reaching Start","success gives one Legendary in-run gear; failure gives nothing","TryAddCornerRace prevents stacking; success/fail clears race overlay and counter; interrupted run has no separately proven race checkpoint",high
128,CornerOneLineChest,Flower Garden,core_four,0,0,"landing resolves the next board row/line","no choice; transformation animation plays","no random failure","every transformable ordinary tile in the upcoming row becomes Chest; corner/start/protected tiles are not targets","event ends after line transformation; if no eligible target, it completes with zero changes; partial-animation crash behavior is not source-confirmed",high for effect; medium for empty-candidate fallback
129,CornerDiceBuilding,Housing Support,core_four,0,0,"landing opens its two-dice construction event","roll two independent D6 once","no random failure; constructed count is capped by eligible spaces in the upcoming row","attempt to build A+B houses in the upcoming row and grant points according to actual houses constructed; exact point lookup/multiplier was not recoverable from exposed CSV/localization","dice/result input is single-flight; finishes after construction/reward animation; seed and chosen positions must be persisted in a reproduction",high for construction; partial for point amount
125,CornerKillOneLineEnemy,Wall of Thorns,additional,0,0,"landing resolves upcoming row","none","no fail state","reduce enemy count on every Enemy tile in upcoming row by 1; zero-enemy tiles are not decremented below zero","immediate callback after mutation",high
131,CornerBlackMarket,Black Market,additional,0,3,"eligible from zero-based loop 3; landing opens market","buy with points or exit","purchase only if affordable and not sold out","higher-price shop inventory; no reroll","purchase updates total and inventory; close cleans listeners",high
167,CornerDiceCatapult,Dice Catapult,additional,0,5,"eligible from zero-based loop 5","event-specific launch input","not part of the requested core four; detailed reward path remains outside this work item","see source event class","normal event callback",not analyzed
175,CornerWarp,Warp,additional,0,3,"eligible from zero-based loop 3; at most 3 per game by config","none","no fail state","move hero to a random board space and resolve warp movement rules","movement uses WarpTile visual/state path; destination-event chaining requires focused capture",medium-high
1 tile_id source_id display_name group min_stage min_loop entry player_input success_failure reward_or_effect exit_exception confidence
2 126 CornerDoubleStack Piggy Bank core_four 0 0 corner exists on board; doubles are observed globally while it is present none while charging; land on the bank to collect no fail state; a non-double adds nothing each double A=A adds A points to the bank, not 2A; landing transfers the full stored balance to player points and resets it to zero passive state survives ordinary tile events; collection is one settlement; duplicate receipt must not pay twice high
3 127 CornerRace Race core_four 0 0 landing starts a race only when no race is already active make normal board rolls and reach/pass the Start tile within the next 3 rolls success on reaching Start within 3 rolls; fail when the third roll ends without reaching Start success gives one Legendary in-run gear; failure gives nothing TryAddCornerRace prevents stacking; success/fail clears race overlay and counter; interrupted run has no separately proven race checkpoint high
4 128 CornerOneLineChest Flower Garden core_four 0 0 landing resolves the next board row/line no choice; transformation animation plays no random failure every transformable ordinary tile in the upcoming row becomes Chest; corner/start/protected tiles are not targets event ends after line transformation; if no eligible target, it completes with zero changes; partial-animation crash behavior is not source-confirmed high for effect; medium for empty-candidate fallback
5 129 CornerDiceBuilding Housing Support core_four 0 0 landing opens its two-dice construction event roll two independent D6 once no random failure; constructed count is capped by eligible spaces in the upcoming row attempt to build A+B houses in the upcoming row and grant points according to actual houses constructed; exact point lookup/multiplier was not recoverable from exposed CSV/localization dice/result input is single-flight; finishes after construction/reward animation; seed and chosen positions must be persisted in a reproduction high for construction; partial for point amount
6 125 CornerKillOneLineEnemy Wall of Thorns additional 0 0 landing resolves upcoming row none no fail state reduce enemy count on every Enemy tile in upcoming row by 1; zero-enemy tiles are not decremented below zero immediate callback after mutation high
7 131 CornerBlackMarket Black Market additional 0 3 eligible from zero-based loop 3; landing opens market buy with points or exit purchase only if affordable and not sold out higher-price shop inventory; no reroll purchase updates total and inventory; close cleans listeners high
8 167 CornerDiceCatapult Dice Catapult additional 0 5 eligible from zero-based loop 5 event-specific launch input not part of the requested core four; detailed reward path remains outside this work item see source event class normal event callback not analyzed
9 175 CornerWarp Warp additional 0 3 eligible from zero-based loop 3; at most 3 per game by config none no fail state move hero to a random board space and resolve warp movement rules movement uses WarpTile visual/state path; destination-event chaining requires focused capture medium-high
@@ -0,0 +1,22 @@
event,key,condition,reward,amount_or_weight,source
Lucky Scratch,first_prize,preselected weighted result,point,30 at weight 10,newtile.csv values 30|10|1|10|50|40
Lucky Scratch,second_prize,preselected weighted result,point,10 at weight 50,newtile.csv
Lucky Scratch,third_prize,preselected weighted result,point,1 at weight 40,newtile.csv
Claw Machine,guaranteed_good,one per layout,Legendary gear,1,newtile.csv plus clawcraneminigame.csv
Claw Machine,normal_empty,normal capsule sample,none,weight 40,clawcraneminigame.csv
Claw Machine,normal_point,normal capsule sample,point 1,weight 70,clawcraneminigame.csv
Claw Machine,normal_potion,normal capsule sample,potion 1,weight 14,clawcraneminigame.csv
Claw Machine,normal_gear,normal capsule sample,Normal gear 1,weight 40,clawcraneminigame.csv
Dicereel,pair_face_1,exactly one pair,point,5,dicemachine.csv id0
Dicereel,triple_face_1,triple,point,20,dicemachine.csv id6
Dicereel,pair_face_2,exactly one pair,Normal gear,1,dicemachine.csv id1
Dicereel,triple_face_2,triple,Rare gear,1,dicemachine.csv id7
Dicereel,pair_face_3,exactly one pair,free spin,1,dicemachine.csv id2
Dicereel,triple_face_3,triple,free spin,2,dicemachine.csv id8
Dicereel,pair_face_4,exactly one pair,blessing,1,dicemachine.csv id3
Dicereel,triple_face_4,triple,blessing,2,dicemachine.csv id9
Dicereel,pair_face_5,exactly one pair,Good Tile,1,dicemachine.csv id4
Dicereel,triple_face_5,triple,Good Tile,3,dicemachine.csv id10
Dicereel,pair_face_6,exactly one pair,potion,1,dicemachine.csv id5
Dicereel,triple_face_6,triple,potion,3,dicemachine.csv id11
Dicereel,no_match,three distinct faces,none,0,dicemachine.csv id12
1 event key condition reward amount_or_weight source
2 Lucky Scratch first_prize preselected weighted result point 30 at weight 10 newtile.csv values 30|10|1|10|50|40
3 Lucky Scratch second_prize preselected weighted result point 10 at weight 50 newtile.csv
4 Lucky Scratch third_prize preselected weighted result point 1 at weight 40 newtile.csv
5 Claw Machine guaranteed_good one per layout Legendary gear 1 newtile.csv plus clawcraneminigame.csv
6 Claw Machine normal_empty normal capsule sample none weight 40 clawcraneminigame.csv
7 Claw Machine normal_point normal capsule sample point 1 weight 70 clawcraneminigame.csv
8 Claw Machine normal_potion normal capsule sample potion 1 weight 14 clawcraneminigame.csv
9 Claw Machine normal_gear normal capsule sample Normal gear 1 weight 40 clawcraneminigame.csv
10 Dicereel pair_face_1 exactly one pair point 5 dicemachine.csv id0
11 Dicereel triple_face_1 triple point 20 dicemachine.csv id6
12 Dicereel pair_face_2 exactly one pair Normal gear 1 dicemachine.csv id1
13 Dicereel triple_face_2 triple Rare gear 1 dicemachine.csv id7
14 Dicereel pair_face_3 exactly one pair free spin 1 dicemachine.csv id2
15 Dicereel triple_face_3 triple free spin 2 dicemachine.csv id8
16 Dicereel pair_face_4 exactly one pair blessing 1 dicemachine.csv id3
17 Dicereel triple_face_4 triple blessing 2 dicemachine.csv id9
18 Dicereel pair_face_5 exactly one pair Good Tile 1 dicemachine.csv id4
19 Dicereel triple_face_5 triple Good Tile 3 dicemachine.csv id10
20 Dicereel pair_face_6 exactly one pair potion 1 dicemachine.csv id5
21 Dicereel triple_face_6 triple potion 3 dicemachine.csv id11
22 Dicereel no_match three distinct faces none 0 dicemachine.csv id12
@@ -0,0 +1,7 @@
tile_id,source_id,display_name,min_stage,min_loop,entry,player_input,success,failure,reward,exit,exception_handling,confidence
141,GoodEventChest,Chest,0,0,"land on installed/eligible tile; board movement is suspended","open chest; inspect three generated gear items; equip or leave each item","chest opening completes and all three gear instances are generated",none,"3 random in-run gear instances through the normal gear generator","event callback returns after spawn animation; gear decisions remain in the normal drop UI","open is debounced; no reward is committed before generation; no source evidence for mid-event crash restoration",high
137,GoodEventSmithy,Forge,0,0,"land on installed/eligible tile; a new Normal gear instance is created","claim current item or challenge the next rarity; after success choose again","upgrade roll passes the current 80/50/30/10 step and the same item advances one rarity","failed upgrade destroys the candidate and ends the event","claimed candidate gear; failed candidate gives no gear","claim or failure resolves callback and returns to board","challenge is single-flight; result must be stored before animation; current binary exposes four steps but Arcane eligibility is not proven",high
143,GoodEventBlackJack,Dice Battle,0,3,"tile is naturally eligible from zero-based loop 3; landing opens Deoksoon view","start with 3 dice; choose HIT to add one D6 or STAND; after a win collect or rematch","not bust and final total beats dealer while approaching 21","sum over 21 loses; native has only UserWin/DealerWin and no independent push reward path","first consecutive win 10 points; later wins use streak multipliers 2.5x/5x/10x; losing forfeits unclaimed streak reward","collect closes and commits; rematch resets hand but preserves streak; loss closes without reward","isRolling disables duplicate HIT/STAND; reward is calculated at claim; dealer tie policy is strong inference to DealerWin, pending one focused capture",medium-high
169,GoodEventSpito,Lucky Scratch,1,3,"only Stage >=1 and zero-based loop >=3; landing opens a single scratch card","drag over the cover until ScratchPainter reaches revealThreshold","cover threshold reached; preselected prize is revealed","no losing outcome; the lowest prize is 1 point","30 points at 10%; 10 points at 50%; 1 point at 40%","reveal invokes the completion callback; tap/close returns after reward display","isRevealed prevents duplicate callbacks; OnDestroy releases scratch resources; prefab revealThreshold remains unresolved; no mid-card crash recovery evidence",high
151,GoodEventClawGrab,Claw Machine,0,0,"land on installed/eligible tile; cabinet creates its capsule layout","within 15 seconds press GRAB once while claw auto-moves; drop/close/return is automatic","a capsule crosses the collection trigger and its payload is granted","timer expires or claw returns without a capsule; empty capsule also grants nothing","20-capsule source pool; one guaranteed Legendary gear capsule at the bottom; remaining normal pool weights empty40/point70/potion14/common gear40; base attempt 1","after return/reset and no remaining attempts, event callback returns","canGrab/isResetting debounce input; OnDisable cancels movement; reward commits only on collection trigger; community two-play text conflicts with current 1,15 config",high for current APK
164,GoodEventDiceMachine,Dicereel,0,3,"tile is naturally eligible from zero-based loop 3; landing opens three reels","press reel control; three faces resolve; free-spin results repeat the same flow","pair or triple pattern matches a dicemachine row","all three faces different grants none","pair/triple: face1 point5/20; face2 Normal gear1/Rare gear1; face3 free spin1/2; face4 blessing1/2; face5 good tile1/3; face6 potion1/3","when result animation and any free spins finish, confirm/end callback returns to board","isClick/isAnyFail prevent duplicate finish; rewards spawn by typed dispatch; no source evidence for restoring a partially spinning reel after process death",high
1 tile_id source_id display_name min_stage min_loop entry player_input success failure reward exit exception_handling confidence
2 141 GoodEventChest Chest 0 0 land on installed/eligible tile; board movement is suspended open chest; inspect three generated gear items; equip or leave each item chest opening completes and all three gear instances are generated none 3 random in-run gear instances through the normal gear generator event callback returns after spawn animation; gear decisions remain in the normal drop UI open is debounced; no reward is committed before generation; no source evidence for mid-event crash restoration high
3 137 GoodEventSmithy Forge 0 0 land on installed/eligible tile; a new Normal gear instance is created claim current item or challenge the next rarity; after success choose again upgrade roll passes the current 80/50/30/10 step and the same item advances one rarity failed upgrade destroys the candidate and ends the event claimed candidate gear; failed candidate gives no gear claim or failure resolves callback and returns to board challenge is single-flight; result must be stored before animation; current binary exposes four steps but Arcane eligibility is not proven high
4 143 GoodEventBlackJack Dice Battle 0 3 tile is naturally eligible from zero-based loop 3; landing opens Deoksoon view start with 3 dice; choose HIT to add one D6 or STAND; after a win collect or rematch not bust and final total beats dealer while approaching 21 sum over 21 loses; native has only UserWin/DealerWin and no independent push reward path first consecutive win 10 points; later wins use streak multipliers 2.5x/5x/10x; losing forfeits unclaimed streak reward collect closes and commits; rematch resets hand but preserves streak; loss closes without reward isRolling disables duplicate HIT/STAND; reward is calculated at claim; dealer tie policy is strong inference to DealerWin, pending one focused capture medium-high
5 169 GoodEventSpito Lucky Scratch 1 3 only Stage >=1 and zero-based loop >=3; landing opens a single scratch card drag over the cover until ScratchPainter reaches revealThreshold cover threshold reached; preselected prize is revealed no losing outcome; the lowest prize is 1 point 30 points at 10%; 10 points at 50%; 1 point at 40% reveal invokes the completion callback; tap/close returns after reward display isRevealed prevents duplicate callbacks; OnDestroy releases scratch resources; prefab revealThreshold remains unresolved; no mid-card crash recovery evidence high
6 151 GoodEventClawGrab Claw Machine 0 0 land on installed/eligible tile; cabinet creates its capsule layout within 15 seconds press GRAB once while claw auto-moves; drop/close/return is automatic a capsule crosses the collection trigger and its payload is granted timer expires or claw returns without a capsule; empty capsule also grants nothing 20-capsule source pool; one guaranteed Legendary gear capsule at the bottom; remaining normal pool weights empty40/point70/potion14/common gear40; base attempt 1 after return/reset and no remaining attempts, event callback returns canGrab/isResetting debounce input; OnDisable cancels movement; reward commits only on collection trigger; community two-play text conflicts with current 1,15 config high for current APK
7 164 GoodEventDiceMachine Dicereel 0 3 tile is naturally eligible from zero-based loop 3; landing opens three reels press reel control; three faces resolve; free-spin results repeat the same flow pair or triple pattern matches a dicemachine row all three faces different grants none pair/triple: face1 point5/20; face2 Normal gear1/Rare gear1; face3 free spin1/2; face4 blessing1/2; face5 good tile1/3; face6 potion1/3 when result animation and any free spins finish, confirm/end callback returns to board isClick/isAnyFail prevent duplicate finish; rewards spawn by typed dispatch; no source evidence for restoring a partially spinning reel after process death high