The anatomy of a DC: where every target number comes from
From logic/core-mechanics.json (spellDC, source-attributed) and
logic/root-progression.json (dcToCr), plus a skill census of all
5,784 non-test unit blueprints — build 20212986, patch 2.7.0x.
Every roll you make answers one number the game wrote down first. Here is where that number comes from — and the one place it stops being fair.
Spell DCs are arithmetic, until they aren't
The formula:
DC = 10 + spell level + casting-stat modifier (+ bonus modifiers, unless something ignores them)
Three wrinkles the data pins down:
- Heighten metamagic raises the spell level in this formula — that's the whole point of Heighten's DC bump.
- Domain abilities are forced to INT-based DCs by one feature, regardless of the class's real casting stat.
- Enemy casters get a flat AbilityDCBonus from the difficulty preset stacked on top — Core and above literally cast harder.
The merged-spellbook exception
Angel and Lich merge their mythic spellbook with your mortal one (see the mythic paths guide), and the code swaps the third term:
merged books: DC = 10 + spell level + Mythic Level — no stat mod at all.
Your Wisdom or Charisma becomes irrelevant to those spells; the scaling stat is mythic rank. That's why merged-caster builds feel untouchable on saves late game — the DC grows on an axis enemies don't contest.
Skill checks are priced in monster CR
The dcToCr table maps every difficulty class to a challenge rating:
| Skill DC | CR equivalent | |---|---:| | 15 | 3 | | 20 | 6 | | 25 | 8 | | 30 | 13 |
That CR then feeds the XP formula with the SkillCheck ×0.375 multiplier (see how leveling works) — passing a hard check pays like scratching a mid-tier mob, which is why skill characters level through quests instead.
What monsters actually train
Census of positive skill values across 5,784 non-test units:
| Skill | Units | |---|---:| | Perception | 1,025 | | Stealth | 929 | | Acrobatics | 887 | | Diplomacy | 826 | | … Thievery | 6 |
The combat-relevant four dominate; social/knowledge skills barely exist outside named NPCs. And just six units in the entire game carry a Thievery value — traps and locks are a player-only problem.
Class stat progressions behind these numbers render on every page in our Classes section.
Sources
logic/core-mechanics.json#spellDC— DC assembly incl. the merged- book MythicLevel swap and difficulty bonuses.logic/root-progression.json#tables.dcToCr— the full 76-entry DC→CR ladder.logic/units.jsonl— per-unit skill values.- Build: 20212986 (patch 2.7.0x).