Fate Die — Battle-End Loot Reroll System

The "Fate Die" (定命骰子) is the post-battle loot-quality mechanic. After winning a fight, the game rolls a 1-20 dice that determines drop quantity + drop tier priority. Clover (item D00002_000) is the consumable to reroll the dice — each reroll forces a strictly higher number, capped at 20. Team Luck stat (non-combat total) reduces Clover cost via free rerolls.

Source: raw probability table at data-session/intermediate/datatables_json/DiceDataTable.json (also auto-generated as data-session/mgg_datamine/DiceDataTable.md). Mechanic decompiled from MainScripts.dll — see data-session/intermediate/decompiled_dice.cs for DiceDataTable schema + BattleResultPanel.GenerateDroppingItemsByDice + BattleResultPanel.RollDice + BattleResultPanel.Reroll. Server-authoritative reroll via GameApi.Explore.DiceRerollAsync (POST /Explore/DiceReroll).

Probability table

20 entries (Point 1 → 20). Initial post-battle roll is weighted; total weight = 390.

Point Weight InitialRoll% DropPossi EquipNum RuneNum Gold E[equip] E[rune]
1 30 7.69% 0% 1-1 0-0 100 1.0 0
2 30 7.69% 0% 1-1 0-0 100 1.0 0
3 30 7.69% 0% 1-1 0-0 100 1.0 0
4 30 7.69% 0% 1-1 0-0 100 1.0 0
5 30 7.69% 0% 1-1 0-0 100 1.0 0
6 30 7.69% 0% 1-1 0-0 100 1.0 0
7 28 7.18% 0% 1-1 0-0 100 1.0 0
8 26 6.67% 0% 1-1 0-0 100 1.0 0
9 24 6.15% 0% 1-1 0-0 100 1.0 0
10 22 5.64% 10% 1-1 0-0 100 1.0 0
11 20 5.13% 10% 1-1 0-0 100 1.0 0
12 18 4.62% 10% 1-1 0-0 100 1.0 0
13 16 4.10% 10% 1-1 0-0 100 1.0 0
14 14 3.59% 10% 1-1 0-0 100 1.0 0
15 12 3.08% 10% 1-1 0-0 100 1.0 0
16 10 2.56% 20% 1-2 0-0 100 1.2 0
17 8 2.05% 20% 1-2 0-1 100 1.2 0.2
18 6 1.54% 30% 1-3 0-1 100 1.6 0.3
19 4 1.03% 40% 1-3 0-1 100 1.8 0.4
20 2 0.51% 0% (n/a) 3-3 1-1 100 3.0 1.0

InitialRoll% = Weight / 390. Probability of rolling 20 on a fresh battle = 1 in 195.

Column meaning

Drop tier priority

From BattleResultPanel.GenerateDroppingItemsByDice:

DroppingPriority priority = (dice > 19) ? DroppingPriority.Highest : DroppingPriority.Random;

Reroll mechanic

Player taps the dice icon on the battle-result screen:

  1. If current Point ≥ 20 → button disabled (cannot reroll further).
  2. Else → confirm dialog (loc Fight_Reward_Reset_Text01 / Fight_Reward_Reset_Text02), then send DiceRerollArg to server.
  3. Server validates Clover availability, picks a new value from DiceDataTable weighted-randomly AND loops until result > current Point (forced strictly higher).
  4. Server returns DiceRerollReply with EventDice (new Point) + EventRerollTime (incremented counter) + DropBundle (re-rolled loot).
  5. Cost: 1 Clover per reroll, minus free rerolls from team LUK (every 15 LUK = +1 free).

Conditional probability per reroll

After rolling Point P, the chance one reroll lands on each higher value Q > P is:

P[Q | start=P] = Weight[Q] / Σ Weight[k]  for k in (P+1)..20
From → 16 17 18 19 20
15 (Σ=30) 33.3% 26.7% 20.0% 13.3% 6.7%
16 (Σ=20) 40.0% 30.0% 20.0% 10.0%
17 (Σ=12) 50.0% 33.3% 16.7%
18 (Σ=6) 66.7% 33.3%
19 (Σ=2) 100%

So reaching Point 20 from a typical first roll of 7-10 needs roughly 3-4 rerolls on average. From 15 → 20 needs about 4-5 more rerolls; from 19 → 20 is guaranteed in 1.

Free rerolls from LUK

Role_AttDes_08 / Noun_Des_32: "Every 15 Luck across the team (non-combat) grants +1 extra Clover reroll in battle results."

The +1 reroll is free (doesn't consume Clover). Stacks: 30 LUK = 2 free, 45 LUK = 3 free, etc. Team LUK includes: - Base LUK from each fielded unit - Gear LUK (EquipDataTable.Luck) - Lucky-Streak talent family (TF10008_*) - Insight relics that grant LUK

Talent / mechanic that pushes Point above 20

Loc Fight_Reward_Reset_Text01: "Rolling above 20 increases Gear drops by 1." There's a talent/passive that allows Point to exceed 20 (e.g. reach 21). When that happens, the drop logic still treats it as Highest priority, but with +1 extra gear drop on top of the Point-20 baseline (so 4 guaranteed equip + 1 rune). Source talent ID not yet located in current decompile slice — flagged for future investigation.

Strategy implications

Related loc keys

Source files