Economy & Systems
The shipped singleton constants — the exact numbers the demo runs on, read from the runtime
dump (they diverge from decompiled code defaults; code defaults are never published). Build 48a47d08.
Shop
Runtime dump (build 48a47d08) · singletons/ShopSingleton.json
Offers per visit
| Shop | Heroes | Items | Relics |
|---|---|---|---|
| Regular shop | 3 | 2 | 1 |
| Super shop | 3 | 4 | 3 |
Rerolls
Prices
Hero, by rank
| Rank C | 15 |
| Rank B | 25 |
| Rank A | 35 |
| Rank S | 45 |
Item, by rarity
| Common | 5 |
| Rare | 15 |
| Epic | 25 |
| Unique | 5 |
Relic, by rarity
| Common | 10 |
| Rare | 20 |
| Epic | 30 |
| Legendary | 40 |
| CommonQuest | 15 |
| RareQuest | 20 |
| EpicQuest | 25 |
| LegendaryQuest | 30 |
| TeamSize | 45 |
Selling
All per-rank/per-rarity resale multipliers ship at the same 0.66 in this build.
Team-size relic & discounts
Draw chances by shop chunk
Chunk = shop tier within an act (0 = early, 1 = late). Negative values are the designers' pre-normalization weights — clamped at draw time. Rerolls nudge the higher tiers up (see below).
Hero rank
| C0 | C1 | |
|---|---|---|
| Rank C | 85 | 45 |
| Rank B | 0 | 50 |
| Rank A | -10 | 5 |
| Rank S | 0 | -10 |
Item rarity
| C0 | C1 | |
|---|---|---|
| Common | 66 | 33 |
| Rare | 33 | 66 |
| Epic | -10 | 1 |
Relic rarity
| C0 | C1 | |
|---|---|---|
| Common | 66 | 33 |
| Rare | 33 | 66 |
| Epic | -5 | 1 |
Super-shop guarantees
- Guaranteed relic: 1× Legendary
- Guaranteed relic: 1× LegendaryQuest
- Guaranteed item: 1× Epic
- Team-size relic id 4500 (rarities LegendaryQuest, TeamSize)
Shard interest table (interest = min(⌊shards ÷ 5⌋, 20))
| 10 | 20 | 30 | 40 | 50 | 60 | 70 | 80 | 90 | 100 |
|---|---|---|---|---|---|---|---|---|---|
| +2 | +4 | +6 | +8 | +10 | +12 | +14 | +16 | +18 | +20 |
Shards held (top) → passive interest per step (bottom). Caps at +20.
Team & ranks
Runtime dump (build 48a47d08) · singletons/HeroesSingleton.json
Rank-up stat gains
Flat gains applied on rank-up; 'primary'/'secondary' follow the hero class's primary/secondary stats; healthPct is a fraction of max HP.
| Tier | HP % | ManaRegen | Def | Atk | Mag | AtkSpd | Crit |
|---|---|---|---|---|---|---|---|
| primary | 25% | 4 | 30 | 25 | 25 | 20 | 15 |
| secondary | 12.5% | 1 | 8 | 6 | 6 | 5 | 4 |
| other | 12.5% | 1 | 8 | 6 | 6 | 5 | 4 |
All per-floor rank-up probabilities ship at 0 in this build — higher-rank heroes come from the shop's rank-chance chunks, rank-up events and campfires, not floor progression (D026).
Run economy
Runtime dump (build 48a47d08) · singletons/PlayerSingleton.json + RewardSelectionSingleton.json + EquipmentSingleton.json
Initial selection: pick 3 — heroes from HeroPool_1, relics from RelicPool_200 / RelicPool_201.
Campfire & challenge
Runtime dump (build 48a47d08) · singletons/CampfireSingleton.json + DifficultiesSingleton.json
Challenge shop tax
tax = start + (shopVisits - 1) * growthPerShop
| Act | Start | + per shop |
|---|---|---|
| Act 1 | 10 | 2 |
| Act 2 | 15 | 3 |
Scoring (Endless)
Runtime dump (build 48a47d08) · singletons/DifficultiesSingleton.json + decompiled RunSessionService.InitializeEndlessData (ember.scopes.gameRun)
EndlessModeScore = endlessFloor + bonusScore + 2 * difficultyIndex
bonusScore: +1 per IncreaseEndlessModeScore event reward. Each difficulty index above the base adds 2 to score.
Edge case: The difficulty bonus is applied only when the selected difficulty index != MaxDifficultyIndex (6); at the top difficulty the bonus term stays 0 (code behavior, RunSessionService.InitializeEndlessData).
Difficulties
| Index | Stage difficulty | Modifiers |
|---|---|---|
| 0 | 1 | — |
| 1 | 1 | HeroesStartBattlesDamagedEntry |
| 2 | 2 | — |
| 3 | 2 | SurvivingHeroRewardDeltaEntry |
| 4 | 2 | HeroItemSlotsPerRankEntry |
| 5 | 3 | — |
| 6 | 3 | ActBossRelicEntry |
Battle constants
Runtime dump (build 48a47d08) · singletons/BattleSingleton.json
Storm
- Starts at 50s, exponential after +15s
- 5 dmg / 1s, +5 each tick
- ×1.5 once exponential
Rift breaker
- First tick 33% max HP
- Then 5% / 0.25s after 1.65s delay
Misc
Statuses
Runtime dump (build 48a47d08) · singletons/StatusSingleton.json
| Status | Effect |
|---|---|
| Burn | 1 dmg / stack every 1s |
| Poison | 1 dmg / stack every 2s |
| Bleed | 1 dmg / stack |
| Frost | −0.5 attack speed & −0.5 defense / stack; dissipates every 2s |
| Stun | 1.5s |
| Heal over time | 6s |
| Global mana regen | every 2s |