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).

Related database section: Classes — e.g. Dragon.