Event balance decoded from the Odin Binary serialization blob (the Dictionary fields Unity can't serialize). Each blob was decoded with a from-scratch Odin BinaryDataReader and accepted only if it consumed the blob exactly and ended at EndOfStream — the same byte-verification bar as the rest of the archive.
How: unlike the offers, these event configs hide their real balance (difficulty tiers, reward conditions, bot intervals) in a non-empty Odin Binary blob, because they use Dictionary fields Unity can't serialize. We wrote a reader for Odin's binary protocol from the game's own BinaryEntryType enum, and only trust a blob if the reader lands on EndOfStream having consumed every byte — so a misread fails loudly instead of inventing numbers.
Why: this is the LiveOps tuning (token gates, reward ladders, bot pacing) that drives event difficulty and payout — the part hardest to get right by guesswork, so it's the strongest hallucination test.
FlowerFortuneUnlock level: 35 · Token: MilestoneEventToken · Loops: False
Difficulty tiers → milestones (tokens required → reward). From _difficultyTiers dictionary in the Odin blob.
| Difficulty | Milestones (tokens → reward) |
|---|---|
| 0 | 3→BoosterUndo:3 6→BoosterWild:2 9→FreeTicket:1 12→Coin:20 |
| 1 | 6→BoosterUndo:3 12→BoosterWild:2 15→FreeTicket:1 18→Coin:20 |
| 2 | 12→BoosterUndo:3 15→BoosterWild:2 18→FreeTicket:1 21→Coin:20 |
FlowerMin level: 35 · Token: RaceEventToken
Bot score-update intervals by bot difficulty (seconds between bot score ticks) — from _botScoreUpdateIntervals.
| Bot difficulty | Min seconds | Max seconds |
|---|---|---|
| 0 | 0 | 0 |
| 1 | 240 | 480 |
| 2 | 120 | 240 |
| 3 | 60 | 120 |
DonutMin level: 15 · Token: CascadeToken · Looping: True · Big-reward interval: 1 · Max big reward: 10000 · Big-reward coef: 50.0 · Coins mult: 0.029999999329447746
Tokens-add condition thresholds (_tokensAddConditions).
| Tokens added |
|---|
| 5 |
| 10 |
BreakToWinEvent_DefaultToken: · Key: · Conversion coef: · Starting tokens:
These configs are Odin SerializedScriptableObject with a non-empty Binary blob (unlike the offers). The dictionaries (difficulty tiers, reward conditions, bot intervals) live in that blob. Full machine-readable output: events.json ↓. Polymorphic reward conditions (the IEventRewardCondition keys) decode to their numeric effect; their internal type detail is partial.