Numerical source of truth for all equipment, modifier, and progression values · validated against the damage formula at levels 1 / 25 / 50 / 75 / 100 · includes acquisition & upgrade economy · July 2026
Creature stat (Atk/Def): Stat = (Core + Σ TagStats) × AxisMult × QM
Core = 0.6 × 7.5 × (level + 25) AxisMult = (3 × axisGrade + 5) / 8
(STAT_SCALE = 7.5; k = 0.60 since 2026-08-02 — grade-5 creature at level 100: Core 562.5 × AxisMult 2.50)
Creature Speed (flat): Speed = axisGrade (1-10, equals axis grade)
Creature HP: HP = ((4 × level + 35) × (5 + DefenseGrade) / 11 × 7.5 + Σ Heart tags) × QM
Creature quality multiplier: QM = 0.80 + 0.04 × qualityGrade (applies to Atk/Def/HP — NEVER Speed)
Character Attack: ((Σ ItemStats(Attack) + 0.25 × Core) × ClassRating × (1 + Σ increased%) + 188) × ClassSoulMult ClassRating = (3 × stageStat + 5) / 8
Character Defense: ((Σ ItemStats(Defense) + 0.25 × Core) × ClassRating × (1 + Σ increased%) + 188) × ClassSoulMult (+188 = innate floor, post-multiplier)
ClassRating never falls below 1.00 (grade 1 ×1.00, grade 5 ×2.50, grade 10 ×4.375), so gear always delivers at least its printed value.
ClassSoulMult = the class soul's grade multiplier (clsSoulMultOf, Worn ×1.00 → Void ×2.00); it multiplies the finished number, floor included.
No RiskPremium (removed 2026-08-02(b), CHAR_RISK = 0).
Characters carry 25% of Core as a level term — before July 2026 a character's Attack did not scale with level at all.
Character HP: ((4 × level + 35) × (5 + stageDefStat) / 11 × 7.5 × 1.5 + Σ flat HP items) × (1 + soul HP%) × ClassSoulMult (no squish term since 2026-08-02(b))
Character Speed: Grade_Speed for the class stage (classes.csv) — a per-class, per-stage value like Attack and Defense, never a constant. No gear sources; only in-battle stat stages move it.
Boss HP: 5 × Floor + 150 (explicit budget per boss in bosses.csv — not the creature HP formula)
Damage: RawDamage = ((2 × Level / 5 + 2) × MovePower × Attack / Defense) / (130 / 7.5) + (15 + Attack / 50) / hits
FinalDamage = RawDamage × Synergy/Anti × Random(0.9–1.1) × (1 + Σ increased%) × Π(more)
No same-type damage bonus and no type-effectiveness multiplier — there is no type chart.
Type interaction lives only in each move's Synergy and Anti clauses.
(g×6+2)×L/100+g×3 was inconsistent with its own level-100 table; the revised base-stat formula above reproduces the committed table exactly (grade×30+50 at level 100) and keeps grade ratios level-invariant. HP was re-curved linear-in-level so turns-to-kill stays constant while leveling.| Band | Power | Cooldown |
|---|---|---|
| Light | 50 | 0 |
| Standard | 80 | 0–1 |
| Heavy | 120 | 2 |
| Nuke | 160 | 3–4 |
ItemStat = (implicit + Σ gems + Σ Flat enchants) × (1 + Σ rune % + Σ Increased% enchants) × (1 + (LOCAL soul − 1) + Σ More% enchants). Scrolls roll ONE enchantment on apply. The CLASS comes from codex/enchants.csv (weights Flat 45 / Increased 40 / More 15), and the roll can only take the stat the host item itself carries — a Defense item never rolls Attack. The VALUE comes from codex/scroll_bands.csv (3.5 scroll rework, 2026-09-05): the SCROLL's tier picks the class band (T1 Flat 4–7, Increased 10.0–20.0%, More 12.0–22.0% … T10 Flat 40–76, Increased 13.0–27.0%, More 16.0–29.0%) and the scroll's grade bends the draw toward the top, position = u^(1/K) with K 1.0 (Worn) … 5.0 (Void). The host item's tier and grade do not enter. More is additive with the item's LOCAL soul multiplier rather than a separate factor. Duplicates are allowed and stack inside their bucket. There is no separate reroll action: applying another scroll over a socketed one rerolls it, drawing a fresh class AND value, and the enchantment it replaces is destroyed. Scrolls can never be unsocketed; gems and runes always return to the bag intact. Three maximum More rolls from T10 scrolls reach +87%, flat enchants add into the base band. Character and creature stats and damage: see the formulas block above (Core 0.6 × 7.5 × (level + 25), rating (3g + 5) / 8, divisor 130 / 7.5, flat term 15 + Attack/50, innate floor +188, random band 0.9–1.1). The figures that follow are the July 2026 history of how those numbers were reached (Core k later went 1.0 → 0.60 and RiskPremium and the HP squish were removed, 2026-08-02(b)). Validated fully-maxed: striker vs char wall 15. MAGNITUDE REWORK + BALANCE PACKAGE (July 2026): every item implicit in items.csv was multiplied by 3 and the class multiplier by 2.5 (denominator 20 -> 8), a combined stat scale of 7.5; Core, the innate floor, HP and the damage constants (divisor 130 -> 17.33, flat 2 -> 15) all scale with it, so the rework alone leaves combat identical and only makes the numbers legible. On top of that: Core k 1.6 -> 1.0, tag implicits x3 again (3.0 -> 27.0 total), the innate floor 10 -> 25 pre-scale, the character level term and risk premium above, character HP x1.5 with the squishiness term, and a wild Attack tag budget from floor 11.1, creature mirror 16.0, HP-stacked creature wall 19.3.Flat values, always active — rounded half-up and lifted so every +1 tier and every +1 grade strictly increases the value (each cell is at least 1 above its left and upper neighbour; the base curve applies wherever it already separates). Formulas: Main Hand 16.5 × tier × GF (flat Attack, all classes) · Off Hand 4.5 × tier × GF flat Attack for Mage / Archer / Brute / Assassin lines · defensive off hands (Warrior shields, Professor tomes) 6.6 × tier × GF flat Defense — a fifth armour piece · Armour 6.6 × tier × GF · where GF = 1 + 0.12 × (grade − 1).
Weapon tiers: every 10 levels (Level req 1 / 10 / 20 / … / 90); tiers drop at floor (crafting was removed 2026-10-01). 3 art identities per hand — bands T1–3 / T4–6 / T7–10 track the class stages; within a band, tiers are prefixed Veteran's / Champion's / Tyrant's and reuse the band image. The grid below is the flat Attack each tier gives at each grade.
| Grade \ Tier | T1 1–10 | T2 11–20 | T3 21–30 | T4 31–40 | T5 41–50 | T6 51–60 | T7 61–70 | T8 71–80 | T9 81–90 | T10 91–100 |
|---|---|---|---|---|---|---|---|---|---|---|
| Worn | 17 | 33 | 50 | 66 | 83 | 99 | 116 | 132 | 149 | 165 |
| Common | 18 | 37 | 55 | 74 | 92 | 111 | 129 | 148 | 166 | 185 |
| Uncommon | 20 | 41 | 61 | 82 | 102 | 123 | 143 | 164 | 184 | 205 |
| Rare | 22 | 45 | 67 | 90 | 112 | 135 | 157 | 180 | 202 | 224 |
| Epic | 24 | 49 | 73 | 98 | 122 | 147 | 171 | 195 | 220 | 244 |
| Legendary | 26 | 53 | 79 | 106 | 132 | 158 | 185 | 211 | 238 | 264 |
| Abyssal | 28 | 57 | 85 | 114 | 142 | 170 | 199 | 227 | 255 | 284 |
| Divine | 30 | 61 | 91 | 121 | 152 | 182 | 213 | 243 | 273 | 304 |
| Primordial | 32 | 65 | 97 | 129 | 162 | 194 | 226 | 259 | 291 | 323 |
| Void | 34 | 69 | 103 | 137 | 172 | 206 | 240 | 275 | 309 | 343 |
Offensive off hands (Mage / Archer / Brute / Assassin): flat Attack, 4.5 × tier × GF — same grid as the Attack/Defense gems below. Defensive off hands (Warrior shields, Professor tomes): flat Defense, 6.6 × tier × GF — same grid as armour above. Every class line totals the same 33 × T × GF gear budget; sword-and-board splits it toward Defense.
| Grade \ Tier | T1 1–10 | T2 11–20 | T3 21–30 | T4 31–40 | T5 41–50 | T6 51–60 | T7 61–70 | T8 71–80 | T9 81–90 | T10 91–100 |
|---|---|---|---|---|---|---|---|---|---|---|
| Worn | 7 | 13 | 20 | 26 | 33 | 40 | 46 | 53 | 59 | 66 |
| Common | 8 | 15 | 22 | 30 | 37 | 44 | 52 | 59 | 67 | 74 |
| Uncommon | 9 | 16 | 25 | 33 | 41 | 49 | 57 | 65 | 74 | 82 |
| Rare | 10 | 18 | 27 | 36 | 45 | 54 | 63 | 72 | 81 | 90 |
| Epic | 11 | 20 | 29 | 39 | 49 | 59 | 68 | 78 | 88 | 98 |
| Legendary | 12 | 21 | 32 | 42 | 53 | 63 | 74 | 84 | 95 | 106 |
| Abyssal | 13 | 23 | 34 | 45 | 57 | 68 | 79 | 91 | 102 | 114 |
| Divine | 14 | 24 | 36 | 49 | 61 | 73 | 85 | 97 | 109 | 121 |
| Primordial | 15 | 26 | 39 | 52 | 65 | 78 | 91 | 103 | 116 | 129 |
| Void | 16 | 27 | 41 | 55 | 69 | 82 | 96 | 110 | 124 | 137 |
Signet (+Attack): 6.0 × tier × GF. Ward retired — Defense on choice slots is dominated by HP at the max-build anchor (see Section 10 note).
| Grade \ Tier | T1 1–10 | T2 11–20 | T3 21–30 | T4 31–40 | T5 41–50 | T6 51–60 | T7 61–70 | T8 71–80 | T9 81–90 | T10 91–100 |
|---|---|---|---|---|---|---|---|---|---|---|
| Worn | 6 | 12 | 18 | 24 | 30 | 36 | 42 | 48 | 54 | 60 |
| Common | 7 | 13 | 20 | 27 | 34 | 40 | 47 | 54 | 60 | 67 |
| Uncommon | 8 | 15 | 22 | 30 | 37 | 45 | 52 | 60 | 67 | 74 |
| Rare | 9 | 16 | 24 | 33 | 41 | 49 | 57 | 65 | 73 | 82 |
| Epic | 10 | 18 | 27 | 36 | 44 | 53 | 62 | 71 | 80 | 89 |
| Legendary | 11 | 19 | 29 | 38 | 48 | 58 | 67 | 77 | 86 | 96 |
| Abyssal | 12 | 21 | 31 | 41 | 52 | 62 | 72 | 83 | 93 | 103 |
| Divine | 13 | 22 | 33 | 44 | 55 | 66 | 77 | 88 | 99 | 110 |
| Primordial | 14 | 24 | 35 | 47 | 59 | 71 | 82 | 94 | 106 | 118 |
| Void | 15 | 25 | 37 | 50 | 62 | 75 | 87 | 100 | 112 | 125 |
9.0 × tier × GF| Grade \ Tier | T1 1–10 | T2 11–20 | T3 21–30 | T4 31–40 | T5 41–50 | T6 51–60 | T7 61–70 | T8 71–80 | T9 81–90 | T10 91–100 |
|---|---|---|---|---|---|---|---|---|---|---|
| Worn | 9 | 18 | 27 | 36 | 45 | 54 | 63 | 72 | 81 | 90 |
| Common | 10 | 20 | 30 | 40 | 50 | 60 | 71 | 81 | 91 | 101 |
| Uncommon | 11 | 22 | 33 | 45 | 56 | 67 | 78 | 89 | 100 | 112 |
| Rare | 12 | 24 | 37 | 49 | 61 | 73 | 86 | 98 | 110 | 122 |
| Epic | 13 | 27 | 40 | 53 | 67 | 80 | 93 | 107 | 120 | 133 |
| Legendary | 14 | 29 | 43 | 58 | 72 | 86 | 101 | 115 | 130 | 144 |
| Abyssal | 15 | 31 | 46 | 62 | 77 | 93 | 108 | 124 | 139 | 155 |
| Divine | 17 | 33 | 50 | 66 | 83 | 99 | 116 | 132 | 149 | 166 |
| Primordial | 18 | 35 | 53 | 71 | 88 | 106 | 123 | 141 | 159 | 176 |
| Void | 19 | 37 | 56 | 75 | 94 | 112 | 131 | 150 | 168 | 187 |
Fang (+Creature Attack) and Carapace (+Creature Defense): 54 × tier × GF. Heart (+Creature HP): 110 × tier × GF — see Heart below for why it is not the same number.
| Grade \ Tier | T1 1–10 | T2 11–20 | T3 21–30 | T4 31–40 | T5 41–50 | T6 51–60 | T7 61–70 | T8 71–80 | T9 81–90 | T10 91–100 |
|---|---|---|---|---|---|---|---|---|---|---|
| Worn | 54 | 108 | 162 | 216 | 270 | 324 | 378 | 432 | 486 | 540 |
| Common | 60 | 121 | 181 | 242 | 302 | 363 | 423 | 484 | 544 | 605 |
| Uncommon | 67 | 134 | 201 | 268 | 335 | 402 | 469 | 536 | 603 | 670 |
| Rare | 73 | 147 | 220 | 294 | 367 | 441 | 514 | 588 | 661 | 734 |
| Epic | 80 | 160 | 240 | 320 | 400 | 480 | 559 | 639 | 719 | 799 |
| Legendary | 86 | 173 | 259 | 346 | 432 | 518 | 605 | 691 | 778 | 864 |
| Abyssal | 93 | 186 | 279 | 372 | 464 | 557 | 650 | 743 | 836 | 929 |
| Divine | 99 | 199 | 298 | 397 | 497 | 596 | 696 | 795 | 894 | 994 |
| Primordial | 106 | 212 | 318 | 423 | 529 | 635 | 741 | 847 | 953 | 1058 |
| Void | 112 | 225 | 337 | 449 | 562 | 674 | 786 | 899 | 1011 | 1123 |
110 × tier × GF, about 2× the Fang / Carapace grid — multiply the table above by 2.04. A point of Creature Defense is simply worth more than a point of Creature HP: the Defense tag is added to Core before the axis multiplier (1.0–4.375) and quality, while the HP tag is flat. At the old equal coefficient, measured in effective HP against the real damage roll, Carapace beat Heart by 1.46× to 2.66× at every level and every Defense grade tested, so Heart was never a pick. The doubled coefficient buys parity in EFFECTIVE durability, not double the wall: at Defense grade 9 the two are within a point of each other at Lv 40. They now trade places on two axes — low-Defense creatures and early floors favour Heart (grade 2: +40% vs +29%; Lv 10: +17% vs +8%), high-Defense creatures and deep floors favour Carapace (Lv 80: +26% vs +21%). Revised 2026-07-27; the previous rule was that HP is no cheaper per point than any other stat, which is what made Heart a dead item.
Garnet (+Attack), Onyx (+Defense), Bloodstone (+HP): all 4.5 × tier × GF. Local on character gear, Personal on Tags. Speed cannot appear on any modifier.
| Grade \ Tier | T1 1–10 | T2 11–20 | T3 21–30 | T4 31–40 | T5 41–50 | T6 51–60 | T7 61–70 | T8 71–80 | T9 81–90 | T10 91–100 |
|---|---|---|---|---|---|---|---|---|---|---|
| Worn | 5 | 9 | 14 | 18 | 23 | 27 | 32 | 36 | 41 | 45 |
| Common | 6 | 10 | 15 | 20 | 25 | 30 | 35 | 40 | 45 | 50 |
| Uncommon | 7 | 11 | 17 | 22 | 28 | 33 | 39 | 45 | 50 | 56 |
| Rare | 8 | 12 | 18 | 24 | 31 | 37 | 43 | 49 | 55 | 61 |
| Epic | 9 | 13 | 20 | 27 | 33 | 40 | 47 | 53 | 60 | 67 |
| Legendary | 10 | 14 | 22 | 29 | 36 | 43 | 50 | 58 | 65 | 72 |
| Abyssal | 11 | 15 | 23 | 31 | 39 | 46 | 54 | 62 | 70 | 77 |
| Divine | 12 | 17 | 25 | 33 | 41 | 50 | 58 | 66 | 75 | 83 |
| Primordial | 13 | 18 | 26 | 35 | 44 | 53 | 62 | 71 | 79 | 88 |
| Void | 14 | 19 | 28 | 37 | 47 | 56 | 66 | 75 | 84 | 94 |
Same grid as the Attack / Defense gems above (4.5 × tier × GF).
6% + 3% × (grade − 1) + 0.6% × tier (2026-10-23, C4; was 12% + 1.2% × (grade − 1)). Additive with other increased% within an item (Local) or on the creature (Personal via Tags). Ruin (+% Attack), Aegis (+% Defense), Vitality (+% HP).
| Grade \ Tier | T1 1–10 | T2 11–20 | T3 21–30 | T4 31–40 | T5 41–50 | T6 51–60 | T7 61–70 | T8 71–80 | T9 81–90 | T10 91–100 |
|---|---|---|---|---|---|---|---|---|---|---|
| Worn | 6.6% | 7.2% | 7.8% | 8.4% | 9.0% | 9.6% | 10.2% | 10.8% | 11.4% | 12.0% |
| Common | 9.6% | 10.2% | 10.8% | 11.4% | 12.0% | 12.6% | 13.2% | 13.8% | 14.4% | 15.0% |
| Uncommon | 12.6% | 13.2% | 13.8% | 14.4% | 15.0% | 15.6% | 16.2% | 16.8% | 17.4% | 18.0% |
| Rare | 15.6% | 16.2% | 16.8% | 17.4% | 18.0% | 18.6% | 19.2% | 19.8% | 20.4% | 21.0% |
| Epic | 18.6% | 19.2% | 19.8% | 20.4% | 21.0% | 21.6% | 22.2% | 22.8% | 23.4% | 24.0% |
| Legendary | 21.6% | 22.2% | 22.8% | 23.4% | 24.0% | 24.6% | 25.2% | 25.8% | 26.4% | 27.0% |
| Abyssal | 24.6% | 25.2% | 25.8% | 26.4% | 27.0% | 27.6% | 28.2% | 28.8% | 29.4% | 30.0% |
| Divine | 27.6% | 28.2% | 28.8% | 29.4% | 30.0% | 30.6% | 31.2% | 31.8% | 32.4% | 33.0% |
| Primordial | 30.6% | 31.2% | 31.8% | 32.4% | 33.0% | 33.6% | 34.2% | 34.8% | 35.4% | 36.0% |
| Void | 33.6% | 34.2% | 34.8% | 35.4% | 36.0% | 36.6% | 37.2% | 37.8% | 38.4% | 39.0% |
One enchantment rolls when a scroll is applied (server /api/roll, kind enchant). No Ink reroll and no reroll action: applying another scroll over a socketed one is the reroll, and the old enchantment is destroyed. The class is drawn from codex/enchants.csv (Flat 45 / Increased 40 / More 15) on the stat the host item carries (Attack, Defense or HP; Creature Attack / Defense / HP on Tags). The value comes from codex/scroll_bands.csv: the scroll's tier picks the band, the scroll's grade bends the draw, position = u^(1/K), K from 1.0 (Worn) to 5.0 (Void). The host item's tier and grade do not enter, and there is no minimum grade. Example columns show the median roll.
| Class | Weight | Scope | T1 band | T5 band | T10 band | Rare T5 scroll (median) | Void T10 scroll (median) |
|---|---|---|---|---|---|---|---|
| Flat | 45 | Local / Personal on Tags (base bracket, with gems) | 4–7 | 20–38 | 40–76 | +32 | +71 |
| Increased | 40 | Local (additive % bucket, with runes) | 10.0%–20.0% | 11.3%–23.1% | 13.0%–27.0% | +19.2% | +25.2% |
| More | 15 | Local (multiplicative bucket, additive with the LOCAL soul) | 12.0%–22.0% | 13.8%–25.1% | 16.0%–29.0% | +21.4% | +27.3% |
Refinement does not exist (D ruling 2026-08-10; purged from all text 2026-08-25). Section number kept so later references hold.
QM = 0.80 + 0.04 × qualityGrade — multiplies Attack, Defense, and HP. Never Speed (flat speed tiers are a design pillar). Wild eggs cap at Legendary; Abyssal–Void come from breeding only. Wild spawns roll their own quality once at spawn from codex/wild_quality_weights.csv (zone-banded, Legendary cap) — see the GDD wild-spawn section.
| Quality | Worn | Common | Uncommon | Rare | Epic | Legendary | Abyssal | Divine | Primordial | Void |
|---|---|---|---|---|---|---|---|---|---|---|
| Multiplier | ×0.84 | ×0.88 | ×0.92 | ×0.96 | ×1.00 | ×1.04 | ×1.08 | ×1.12 | ×1.16 | ×1.20 |
Void vs Worn = ×1.20 / ×0.84 = 43% more stats at identical species, level, and gear.
Superseded by section 0 — corrected 2026-08-02. The paragraph that stood here described the PRE-July-2026 character model (ClassAxisMult = (3×stageStat+5)/20, a flat +10 floor, no level term) and was never updated by the magnitude rework. The shipped model is section 0: CharStat = (ΣItemStats + 0.25×Core) × ClassRating + 188 with ClassRating = (3×stageStat+5)/8. It also claimed Warrior and Professor run Attack 9.5 with a 2.2 off hand; items.csv authors both at Attack 16.5 main hand and a 6.6 Defence off hand, the same coefficient as an armour piece. The tier table below has NOT been re-verified and is indicative only.
| Tier | Levels | Attack pool (Σ items) | Defense pool (Σ items) | ||||
|---|---|---|---|---|---|---|---|
| Worn | Rare | Void | Worn | Rare | Void | ||
| T1 | 1–10 | 29 | 40 | 64 | 35 | 50 | 80 |
| T2 | 11–20 | 57 | 77 | 119 | 65 | 90 | 135 |
| T3 | 21–30 | 86 | 115 | 177 | 100 | 135 | 205 |
| T4 | 31–40 | 114 | 156 | 237 | 130 | 180 | 275 |
| T5 | 41–50 | 143 | 194 | 296 | 165 | 225 | 345 |
| T6 | 51–60 | 171 | 233 | 356 | 200 | 270 | 410 |
| T7 | 61–70 | 200 | 271 | 414 | 230 | 315 | 480 |
| T8 | 71–80 | 228 | 310 | 475 | 265 | 360 | 550 |
| T9 | 81–90 | 257 | 348 | 533 | 295 | 405 | 620 |
| T10 | 91–100 | 285 | 388 | 593 | 330 | 450 | 685 |
Each pool is one bare loadout summed: Attack = Arming Sword + Crude Signet + Crude Signet; Defense = Kite Shield + Cowl + Padded Jerkin + Handwraps + Footwraps (each piece’s own N × T × GF grid above). Example: level 100 Archon (Atk 10), Void T10 bare set → (593 + 0.25 × 562.5) × 4.375 + 188 = 3,398 Attack before enhancements and ClassSoulMult; the same set on Sorcerer (Atk 8) → 2,847. Section 10’s MAX numbers are a July 2026 record that this bare set already passes (see its note). Generated by tools/codex_tables.py.
Soul grade = the quality grade of the creature the soul came from. Specific effects per species per slot (800 total) are content design; every effect's numeric budget must fit these ranges.
| Scope | Budget formula | Worn | Legendary | Void |
|---|---|---|---|---|
| Local (this item) | ×(1.04 + 0.02 × grade) item total | ×1.06 | ×1.16 | ×1.24 |
| Personal (bearer) | +(1 + grade)% to one stat/mechanic | +2% | +7% | +11% |
| Team (all allies) | +(0.5 + 0.55 × grade)% per ally | +1% | +3.8% | +6% |
Not generated (C17 sweep, 2026-10-23). These turns-to-kill figures are a July 2026 simulation record. Their scenarios (“PvE trash”, “Striker”, “Wall”, the MAX build) are not defined in any CSV or tool, and they predate the +188 innate floor and the square-root Attack / Defense ratio (T4, 2026-10-22), so they are kept as a dated record, not as current numbers. Regenerating them needs the scenario definitions written down first.
Per-unit turns-to-kill, standard spam rotation (Power 80), mean random roll, quality ×1.00, no enhancements except where stated. Char columns: on-tier Rare gear, bare (no gems/runes/enchants), Archon/Paladin stage stats. Rows predate the +10 innate floor — it shifts the char columns by ~0.5–2 turns in the character’s favour and MAX anchors by +0.2–0.3%; retained as-is (July 2026). MAX row = fully optimized level-100 builds — Void-grade T10 gear, 3 Void gems + 3 Void runes + 3 Void enchants per piece, Local/Team souls at Void soul grade (×1.45), creature quality ×1.20 — the balancing anchor for endgame.
| Level | Naked mirror g6 | PvE trash | Wild retaliation | Striker→Wall | Striker→Striker | Char→Wall | Striker→Char |
|---|---|---|---|---|---|---|---|
| 1 | 8.8 | 6.4 | 10.3 | 12.0 | 5.6 | — | — |
| 25 | 12.0 | 8.0 | 15.3 | 17.6 | 6.5 | — | — |
| 50 | 12.8 | 8.3 | 16.7 | 19.2 | 6.7 | 31.4 | 7.2 |
| 75 | 13.2 | 8.5 | 17.4 | 19.9 | 6.8 | 21.8 | 13.5 |
| 100 | 13.4 | 8.6 | 17.8 | 20.3 | 6.9 | 22.3 | 13.6 |
| MAX | 16.0 | 1.5 | — | — | — | 15.1 | — |
Maxed detail: Char Attack 3,316 (Archon, 2 Team-Attack souls) · Char Defense 4,875 (Paladin, 4 Local-Def souls + Tower Shield) · Char HP 1,395 (double Relic, Vitality runes) · Creature Atk/Def 2,268, HP 1,323 (g10, Void QM, 2 tags). An HP-stacked creature wall (all-Vitality tag runes, trading away Aegis) reaches 1,879 HP / 19.3 turns vs a maxed striker — the deliberate wall premium. Ward (+Defense accessory) was retired on max-build math: swapping a maxed Relic (+401 HP) for a maxed Ward (+647 Defense) dropped a wall from 14.4 to 10.7 turns at the pre-shield anchor — the Attack/50 floor is Defense-immune and the small HP pool makes flat HP marginally stronger; Defense investment on choice slots cannot compete. The + Attack/50 damage floor is what holds maxed mirrors inside the band — without it these fights ran 58–74 turns. Progression rows are a spam-only, synergy-free floor; real rotations (Heavy/Nuke cycling, Synergy clauses, slight over-leveling) run ~40–60% faster, landing PvE trash at 3–5 and boss/wall fights at 8–12.
Gems, runes, and scrolls each have 10 named level tiers matching the 10 level brackets, plus a grade (Worn–Void). Full item name = grade + tier + type: "Legendary Radiant Sapphire," "Rare Elder Rune of Attack," "Void Fated Scroll." An enhancement's tier must be ≤ the gear's tier to socket.
| Tier | Level | Gem | Rune | Scroll |
|---|---|---|---|---|
| 1 | 1 | Rough | Faded | Tattered |
| 2 | 10 | Cut | Etched | Coarse |
| 3 | 20 | Polished | Carved | Scribe's |
| 4 | 30 | Faceted | Bound | Vellum |
| 5 | 40 | Brilliant | Warded | Illuminated |
| 6 | 50 | Pristine | Charged | Sealed |
| 7 | 60 | Flawless | Awakened | Occult |
| 8 | 70 | Perfect | Resonant | Forbidden |
| 9 | 80 | Radiant | Ancient | Prophetic |
| 10 | 90+ | Sublime | Elder | Fated |
One flat commodity per family — no material tiers. Freely tradeable at any amount.
| Operation | Formula | Example |
|---|---|---|
| Dismantle yield | tier × grade# | T10 Rare gem → 40 Dust |
| Craft (Worn output, chosen type & tier) | 6 × tier | T10 Sublime gem = 60 Dust |
| Scroll modifier reroll | none — applying another scroll over the socket is the reroll; no Ink is charged | — |
| Removal of socketed gem/rune | returns the gem/rune to the bag intact, frees the socket | — |
Refinement does not exist (D ruling 2026-08-10; purged 2026-08-25). Scrap has two sinks: gear crafting (25 × tier) and gear grading (section 14).
No pity. Gear pays Scrap; enhancements pay their family material (Dust / Essence / Ink). Failure consumes currency only. T10 column below; every tier is on Upgrading (codex/grading.csv).
| Into grade | Success | Gear cost (Scrap) @T10 | Gear expected cumulative | Enhancement cost (material) @T10 | Enh. expected cumulative |
|---|---|---|---|---|---|
| Common | 100% | 2 | 2 | 2 | 2 |
| Uncommon | 90% | 4 | 6 | 5 | 8 |
| Rare | 70% | 10 | 21 | 10 | 22 |
| Epic | 50% | 30 | 81 | 20 | 62 |
| Legendary | 35% | 60 | 252 | 40 | 176 |
| Abyssal | 20% | 140 | 952 | 80 | 576 |
| Divine | 8% | 180 | 3,202 | 160 | 2,576 |
| Primordial | 3% | 220 | 10,535 | 320 | 13,243 |
| Void | 0.5% | 220 | 54,535 | 640 | 141,243 |
One gear piece Worn→Void at T10: expected ~54,535 Scrap (~16.6 h at floor 119). One Void enhancement at T10: expected ~141,243 material (~377.5 h). The realistic endgame enhancement target is Divine (~2,576 material, ~6.9 h). Hours at 109 battles/h; model: python tools/statmodel.py grids, generated by tools/codex_tables.py.
| Floors | Worn | Common | Uncommon | Rare | Epic | Legendary | Abyssal |
|---|---|---|---|---|---|---|---|
| 1–30 | 72% | 24% | 4% | — | — | — | — |
| 31–60 | 55% | 30% | 12% | 2.7% | 0.3% | — | — |
| 61–90 | 40% | 32% | 20% | 7% | 0.95% | 0.05% | — |
| 91–100 | 30% | 32% | 24% | 11% | 2.7% | 0.28% | 0.02% |
Divine, Primordial, and Void gear never drop — they exist only through the Ichor gamble. Enhancement drops: per creature defeated, rarity-scaled (codex/drop_rates.csv), 10% per battle in expectation, even split across gems/runes/scrolls, grade weights one band behind gear.
| Rule | Value |
|---|---|
| Craft gear (Worn, chosen slot + base type) | 25 × tier Scrap |
| Craft enhancement (Worn, chosen type) | 6 × tier family material |
| Character gear equip requirement | Tier N needs character level ≥ (N−1)×10 |
| Tag equip requirement | Tier N needs creature level ≥ (N−1)×10 |
| Nothing is useless | All gear → Scrap (+ Ichor at Rare+); all enhancements → Dust / Essence / Ink; every material feeds the next tier |
| Currency | Rate | Main sources |
|---|---|---|
| Scrap | ~526/h | Dismantling gear drops (dismantle.csv Gear rows; a Tag also returns Essence) |
| Ichor | ~2,249/h | Kill Ichor (round(2 × (1 + level/100) × rarity mult)), egg and Rare+ gear dismantles |
| Dust / Essence / Ink | ~143 / 160 / 143 per h | Enhancement dismantles (dismantle.csv Gem / Rune / Scroll rows) |
acquisitionPerBattle (src/trader.js) × BATTLES_PER_HOUR (tools/sim_econ.mjs); bosses, first wins and shop drops not counted. Generated by tools/codex_tables.py.
Not generated (C17 sweep, 2026-10-23). This timeline is a July 2026 estimate on the retired XP curve and the old income table; the current figures are the generated levelling tables on the Overview (xp-reference, xp-zones), the grading cost above and the endgame income in section 15. Kept as a dated record.
| Milestone | Battles / cost | Casual 3 h/d | Dedicated 12 h/d | 24/7 |
|---|---|---|---|---|
| Level 67 — Stage 3 & final advancements | ~885 battles | 10 days | 2.5 days | 1.2 days |
| Level 100 | ~20,300 battles | ~7.5 months | ~2 months | ~1 month |
| Bracket 9/10 gear state (UC everywhere, Rare keys, +3) | falls out of leveling | deterministic | ||
| Epic key pieces, Rare enhancements | ~11 Ichor + ~45 material each | weeks after hitting the wall floors | ||
| One item to Void grade | ~8,800 Ichor + ~43,700 Scrap expected | years | ~1 year expected, p90 2+ | ~4 months expected |
| Full 12-slot Void-grade gear + Void enhancements | — | multi-year market-aggregate goal; effectively unreachable solo | ||
Things measured and deliberately parked. Each one records what was found, what it would cost and why it is not being done yet, so the next person does not re-derive it.
Dated record — as assessed, recorded 2026-08-02 (the date on its newest row). The numbers below are what was measured then; they are not live and are not bound to the CSVs or the engine.
| Item | Finding |
|---|---|
| Creature axis grades do not rise with stage parked 2026-08-02, D: "put this in the balancing backlog, not doing it right now" |
Not a missing implementation — an authored asymmetry. Reported by a player as
"stats stay the same between stages". Verified three ways. DATA: creatures.csv carries one
grade set per LINE, not per stage — Stormfather is 10/4/3/9 at stages 1, 2 and 3, and
99 of 100 lines are identical at every stage (mean Grade_Attack 5.66 / 5.69 / 5.69).
CODE: monFromSlot() captures stage and never uses it for a stat; the
[0, 0.6, 0.8, 1] stage ladder exists only for souls. CODEX: creature Atk/Def is
(Core(level) + ΣTagStats) × AxisMult(grade) × QM with no stage term, while
CLASSES get a per-stage row (Prophet 2/5/5 → 2/7/7 → 3/8/9), and the balance notes state that a
creature being a stage ahead shows up in move power. Code and codex agree.
If it were taken: giving creatures class parity (+3 attack grades S1→S3) runs through AxisMult = (3g + 5) / 20 as a same-level buff of
+64% (grade 3→6), +45% (5→8), +35% (7→10)
and +0% for anything already at 10 — so it also compresses the top of the ladder.
That is a 300-row creatures.csv change with a DATA_PIN advance in the same
commit, and large enough to want tools/balance_*.py run before and after.
D ruling 2026-08-02: “Coralhydra is how all creatures should be.” A full proposed spread now exists at codex/proposed/creature_stage_grades.csv — a
proposal only; creatures.csv is untouched. |
| Proposed stage spread codex/proposed/creature_stage_grades.csv |
The rule, calibrated from CORALHYDRA rather than invented. Its authored S1 sits at
axis(6)/axis(9) = 0.719 of S3 on Attack and axis(5)/axis(8) = 0.690 on
Defense — so S1 is 0.70 × the S3 multiplier, and S2 is the midpoint,
0.85 ×, each snapped to the nearest grade on the same
AxisMult = (3g + 5) / 20 curve. Fed back through the rule, CORALHYDRA's S1 comes out
6 / 5 exactly, which is what makes this a derivation and not a guess.
Current grades are kept as S3 for every line, per D. Attack and Defense are the only axes that move: Utility is flat in CORALHYDRA, and Speed must stay flat because the GDD defines it as ungeared, unlevelled and unaffected by quality — a per-stage Speed would silently reorder turns on advancement. Why not a flat grade delta. CORALHYDRA's S1 is literally S3−3, but the grade distribution is bottom-heavy (23 lines at Attack 3, 27 at Defense 3), so a flat −3 would collapse 63 of 100 lines to the grade 1 floor and erase the role signal that a low axis grade carries. Scaling the multiplier instead clamps only 2 of 100. Result: mean S1→S3 Attack gain ×1.42 (min ×1.00 on the two floored lines, max ×1.55), landing beside the +45% class ladder rather than on top of it. 199 of 300 rows change; all 100 S3 rows are untouched by construction. One thing to rule on: CORALHYDRA's authored S2 is flat with S3 (9/8), so its second advancement currently pays nothing. The rule gives it 7/7, making the ladder monotonic and every advancement felt. Taking the rule changes CORALHYDRA at S2 only; keeping the authored value means the last advancement is a move-power upgrade with no stat gain. |
2026-11-03 — the weapon-tier line no longer says craft (D 2026-11-03 codex review; dfmc-client lane codexreview-b). WIKI ONLY. Tiers drop at floor; crafting was removed from the game 2026-10-01 (record). Generated grids untouched.
2026-10-23 — hardcode-3: the last typed stat numbers are stat_model.csv rows (dfmc-client lane hardcode-3; D: “The csvs need to be the source of all truth. Hardcoded NEVER.”). Held for release 0.90. New rows: the named statuses (Status_Slagbite_Def 0.22, Status_Gravechill_Atk 0.18 / Status_Gravechill_Spd 2, Status_Cinch_Spd 3, Status_Doomrune_Dmg / Status_Warded_Dmg 0.18), the boss HP fallback for a row with no Boss_HP (Boss_HP_K 5 × floor + Boss_HP_L0 150, × Stat_Scale), the soul grade step Soul_Grade_Step 1/9 (Worn ×1.00 → Void ×2.00) and the class stage levels Class_Stage_2_Lv 33 / Class_Stage_3_Lv 66. The engine, src/power.js, the client and the worker’s class-advance door read them. No number changed. A pin that predates the row keeps the old value and names it (never a refusal); it reaches players when DATA_PIN advances and the bake runs. Gate tools/probe_hardcode3.mjs 33/72 → 72/72.
2026-10-23 — hardcode-2: the stat model and the wild HP bands are codex tables (D: “The csvs need to be the source of all truth. Hardcoded NEVER.”). New codex/stat_model.csv (Key, Value): Stat_Scale 7.5; the level core Core_K 0.6 × Stat_Scale × (L + Core_L0 25); the grade axis (Axis_A 3 × g + Axis_B 5) / Axis_D 8; max HP (HP_L_K 4 × L + HP_L0 35) × (HP_D0 5 + Def grade) / HP_Div 11 × Stat_Scale; the character Char_Core 0.25, Char_Risk 0, Char_HP ×1.5, Char_HP_Squish 0, Char_Floor 25 (+188); Cls_Soul_Top ×1.20; the damage formula’s Def_Floor 10, Dmg_Lv_K 2 / Dmg_Lv_Div 5 / Dmg_Lv_Add 2, Dmg_Div 130, Dmg_Flat_K 2, Dmg_Atk_Div 50; Heal_Frac 0.12; Tithe_Step 0.12; APVP_HP_Mult ×1.5. New codex/wild_hp_bands.csv (Floor_From, HP_Mult): ×0.6 from floor 1, ×0.7 from 50, ×1.0 from 90, ×1.2 from 110. The shared battle engine holds no number of its own: the client (boot), the worker (its bake) and the sims install both tables with setRules, and an engine without them refuses to fight. Every value is the one the code typed — a pure move, no number on this page changes (gate tools/probe_hardcode2.mjs; t4_balance, econ_bands and battle_module unchanged).
2026-10-23 — C17 part 4 (lane a8-s5-c17-tail): the balance backlog is marked a dated record. WIKI ONLY. Its table is what was measured when it was parked (2026-08-02), so it is not bound: a note above it says so and a <!-- dated:balance-backlog --> marker keeps tools/codex_sweep.py from listing its numbers as unbound. No number changed.
2026-10-23 — C17 part 3 (lane c17-gen-2): pools, grading hours, endgame income and the quality row are generated. WIKI ONLY. Section 8’s Attack / Defense pools were an unverified pre-rework table (T10 Void 229 / 183); they are now one named bare loadout summed from each piece’s own grid (Attack = Arming Sword + 2 Crude Signets, Defense = Kite Shield + 4 armour pieces), and the Archon example uses section 0’s formula (+188, ClassRating /8): 411 → 3,398. The grading prose reads the generated cumulative (54,536 → 54,535 Scrap) and prices hours at 109 battles/h on acquisitionPerBattle (Void enhancement 341.5 h → 377.5 h, Divine 6.2 h → 6.9 h). Section 15’s “~30 battles/h” income (Scrap ~150/h, Ichor ~10/h, materials ~20/h) is replaced by the trader model at floor 99 × 109 battles/h. Sections 10 and 16 carry a note: they are July 2026 records with no generator, kept as dated history.
2026-10-23 — C17 part 2 (lane c17-gen): the implicit grids and the grading table are generated from the CSVs. WIKI ONLY. The seven grade × tier grids (main hand, armour, Signet, Relic, Fang/Carapace, gems, runes) are play/app.js itemBase / runePct over items.csv Effect and grade_ladder.csv GF (all 700 matched). The grading table’s Success column reads grading.csv Gear T10 (it read soul_grading.csv, the soul ladder, which only happened to agree); the cumulative columns are Σ cost / success (Primordial and Void were 1 Scrap high: 10,535 and 54,535). The tier → level table reads items.csv Level_Req (it read the retired recipes.csv). tables marked <!-- gen:NAME --> are generated by tools/codex_tables.py from the CSVs with the engine’s own formulas (each generator cites the engine line it ports); its --check is a dfmc-client gate, so a CSV edit without --write fails the gates.
2026-10-23 — hardcode-sweep: the grade ladder and the wild Attack budget are codex tables (D: “The csvs need to be the source of all truth. Hardcoded NEVER.”). New codex/grade_ladder.csv (one row per grade: GF Worn ×1.00 → Void ×2.08, Gem_Sockets / Rune_Sockets / Scroll_Sockets, Quality_Mult QM ×0.84 → ×1.20) and codex/wild_tag_budget.csv (a wild enemy with no virtual gear: Coef 27 × T × GF of the band grade - Common to L30, Uncommon to L60, Rare above; nothing below L11). The client (GF, SLOTG, qmOf, wildTagBudget), the server power fold (src/power.js), the Auto PvP re-sim (src/apvp_sim.js) and tools/sim_t4.mjs read them; the literals are gone. Numbers unchanged (probe_hardcode_sweep 32/32; every N×T×GF item × 10 grades and the seed save’s server power identical). The constants still typed in code are listed in dfmc-client docs/hardcoded-constants-2026-10.md. Ships with the next DATA_PIN.
2026-10-23 — C4: the rune % curve widened (BACKLOG/INDEX.md § 3 Economy, card T43). Data: every rune row of codex/items.csv now reads 6%+3%×(g−1)+0.6%×T (was 12%+1.2%×(g−1)+0.6%×T); runePct parses the Effect, so no client change. Range Worn T1 → Void T10 is 6.6% → 39.0% (×5.9, was 12.6% → 28.8%, ×2.3); Void T10 is ×1.44 Legendary T10 (39.0 vs 27.0; was ×1.2, 28.8 vs 24.0). Target: the Void step costs ~128,000 Essence expected, so a Void rune has to buy a visible step over Legendary, not 4.8 points; the pivot sits at Rare (within 0.6 points of the old curve at every tier) so the mid tower, where T4 fight length was measured, keeps its numbers, and Worn/Common runes give less. Section 14 rewritten off codex/grading.csv (it still priced gear in Ichor). Gate tools/probe_c4_grids.py; write-up docs/c4-grids-2026-10.md (dfmc-client).
2026-09-30 — review drift fixes: F074, F152, F153, F154. Codex only; the page caught up with the engine. F074: section 0 printed retired values (Core 1.6, AxisMult /20, RiskPremium, HP squish, divisor 130, flat 2); it now prints the engine's coreOf 0.6 × 7.5 × (L+25), axisMult (3g+5)/8, divisor 130/7.5, flat 15 + Atk/50 (split by hits), and character Atk/Def with (1 + Σ increased%) and the class soul grade multiplier. F152: the stat-aggregation note now says the enchant value comes from scroll_bands.csv (scroll tier band, scroll grade K), not the host-based formula; the +78% figure is +87%. F153: section 5 rebuilt: Flat / Increased / More classes, scroll-band magnitudes, no Ink reroll, no minimum grade; section 12 no longer charges an Ink reroll or destroys removed gems and runes. F154: the rune grid printed the retired 1.5 + 0.45·g + 0.15·T fallback; it now prints its own heading's curve (Worn T1 12.6% … Void T10 28.8%).
2026-09-02 — Three gear labels on this page still carried a plus-number after the 08-25 purge. Gone (backlog 3.10; D: “refinement does not exist”). Codex only, nothing to release. The MAX-row definition and two rows of the progression-economy table now say Void-grade; the 2026-08-02 validation line names its builds by grade and tier only. The economy rows’ figures were not recomputed — they are pasted numbers, the consistency audit’s open item for this page. The game was checked on the rendered screen and is clean: no item, slot or detail card prints such a level; the dead field behind it is pinned to 0 and read by nothing. Gate tools/probe_refinepurge.py (dfmc-client) scans every gear page and the rendered client for grade-plus-number wording: 4/5 before, 5/5 after.
2026-09-01 — The axis multiplier range on this page said 1.375–4.0; the engine is 1.0–4.375. axisMult(g) in play/app.js returns (3g+5)/8 — grade 1 ×1.00, grade 5 ×2.50, grade 10 ×4.375. The page already stated ×4.375 correctly in the ClassRating paragraph, so it contradicted itself, and the wrong figure sat in the sentence explaining why a point of Creature Defense outvalues a point of Creature HP — the exact place a reader would use it. Documentation corrected to the shipped engine; no code, CSV or DATA_PIN touched, and no player-visible change.
2026-08-31 — Tag coefficients corrected to codex/items.csv truth: Fang and Carapace 27 → 54, Heart 55 → 110. The Fang / Carapace grid was built on the halved coefficient, so all 100 cells were exactly half the value the game pays; the grid is regenerated with the engine’s own itemBase() (round half-up plus the grade-step floor). Tags carry the largest coefficients in the game, so this was the widest number on the page. Found by the consistency audit (dfmc-client tools/audit), which now diffs every N × T × GF claim in the codex against items.csv on every run. DESCRIPTIVE ONLY: the game already paid these values — this page did not say so.
2026-08-25 — Refinement purged (D order: it does not exist and is purged from all text in the game and codex; the mechanic was ruled out 2026-08-10, refineMult() a constant 1 since). Sections 6 and 13 are stubs so the numbering stands; the “× refinement” term left the aggregation formula and every income/progression line.
2026-08-02 (b) — BALANCE SHIPPED (D order, silent update). Six numbers, moved together. (1) RiskPremium is GONE — CHAR_RISK 0.15 → 0.00. Character Attack is now (ΣItemStats + 0.25×Core) × ClassRating + 188, symmetric with Defence. D ruling: the classes already carry their identity in ClassRating, and paying it twice off the Defence grade produced a 5.8× spread in gear-to-Attack conversion. (2) CHAR_HP_SQUISH is GONE — 0.12 → 0.00. The same inversion in the HP formula had a best-in-slot Warrior holding LESS HP than a Mage (3,470 vs 4,609); the HP order is now the right way up. (3) Creature power moved off level and onto gear — coreOf k 1.00 → 0.60, and the tag implicits doubled to compensate: Fang and Carapace 27 → 54, Heart 55 → 110 (all 30 tag rows). Why: a creature’s power was level-borne and therefore fully available from turn one, while the avatar’s is gear-borne and starts at nothing — so the two could only ever cross at one point. Making the creature gear-dependent too is what produces parity across the early and mid game rather than at a single tier. Measured, avatar/creature POWER by tier (average of all six classes against the creature a player actually holds at that stage): before 0.72 / 0.74 / 0.70 / 0.85 / 0.96 / 1.06 → after 1.01 / 0.95 / 0.82 / 0.94 / 1.02 / 1.04 for T1–T6. The T3 dip is the stage gates, not the coefficients: creature lines advance at level 24 and classes at 33, so at level 30 the creature is a stage ahead. Gates stay at 33/66 by D’s ruling. Late game is NOT addressed and is deliberately left for review — the avatar still overshoots at the top, and the cause is socket surface: 8 socketable pieces against a creature’s 2 tags, a flat 4× at every grade, taking the avatar from 0% socket-borne power at Worn to 45% at Void. Every number here comes from tools/statmodel.py, validated exact against a live client on Worn T1, Rare T4 and Void T10 (tools/probe_statmodel.py).
2026-08-02 — Balance review (D). Findings recorded; no numbers changed yet. (1) Both defence-inverting terms rejected by D. RiskPremium = 1 + 0.15×(6−DefGrade) on Attack and CHAR_HP_SQUISH in character HP both pay low-Defence classes and tax high-Defence ones, on top of ClassRating, which already separates them. Together: a 7.1× spread in gear-to-Attack conversion (Warrior 1.15, Mage 7.00) and an INVERTED HP order — a best-in-slot Warrior held 3,470 HP against a Mage’s 4,609. (2) Parity is gear completeness, not a constant. The avatar is ~100% gear-derived, a creature carries an innate level curve plus tags, so measured avatar/creature Attack runs ~0.25× mid-game to 1.00× at full best-in-slot. Creature gear share measured 33% (T3) to 55% (T10). (3) The ultimates were never the fault. At parity the shipped ultimate powers already deliver 1.7–1.8× a creature’s ordinary move; solving for that budget returns 170/235/290 against a shipped 180/240/300. The weak-ultimate report was the avatar’s Attack. Mage AoE is the exception, ~1.3× hot. (4) POWER does not measure fighting strength. atk + def + hp/5 is additive; a fight multiplies survivability by damage. Six classes solved to identical POWER give a 2.2× spread in duel index and a strict 5-0…0-5 ladder by tankiness, unchanged at T1, T4 and T10. (5) Stage gates disagree. Classes advance at level 33/66, creature lines at 24/56, so for nine levels at each gate the creature is a stage ahead in move power and parity dips to 0.77× / 0.83×. Model and duel harness: tools/balance_*.py in dfmc-client, validated against the engine to the digit on every measured point.
2026-07-30 (b) — Coefficient sweep: this page's implicit coefficients were a magnitude rework behind codex/items.csv. Corrected to data truth — Main Hand 16.5, Off Hand 4.5, defensive off hands and Armour 6.6, Signet 6.0, Relic 9.0, gems 4.5, Fang/Carapace 27, Heart 55 (Heart/Carapace ratio ~2.04 unchanged); pool notes now read Attack 33 / Armour 26.4 ×T×GF. All six implicit grids regenerated with the engine's exact algorithm (round half-up + the grade-step floor), so every cell equals what itemBase returns.
2026-07-30 — The strict-increase lift this page has always specified ("each cell is at least 1 above its left and upper neighbour") is now enforced by the engine. itemBase() previously did a plain round(coef × T × GF), which collapsed adjacent grades wherever coef × T × 0.12 < 0.5 — 43 Worn-adjacent ties across 14 T1 items (e.g. Padded Jerkin 6.6: Worn 7, Common 7), reading in-game as a higher grade worth nothing and making AUTO-OPTIMIZE truthfully refuse the swap. The engine now floors each grade at (previous grade + 1) within a tier; the tier axis separates by construction (minimum coefficient 4.5 ≥ 1 raw point per tier step, verified across all 2,400 family×tier×grade cells). Consequence at low coefficients: top grades sit a point or two above the raw curve, exactly as this page's lift rule already stated.