What each difficulty setting actually changes

Every value below is read from the game's own DifficultyPresetsList asset (extracted/logic/difficulty-presets.json, schema difficulty-presets-v1), build 20212986, patch 2.7.0x. The verdict on where difficulty lives: the formula is code, every parameter is data — which is why this table can be exact.

Nine presets ship in the client: Story, Casual, Normal, Daring, Core, Hard, Unfair — plus two you never see in the new-game dialog: AdaptedEasyRules and Custom (the custom-difficulty target state).

The two numbers that matter most

DamageToParty — a straight multiplier on enemy damage dealt to your party:

| Preset | Multiplier | |---|---| | AdaptedEasyRules / Custom | 0.0 | | Story | 0.2 | | Casual | 0.4 | | Normal | 0.8 | | Daring / Core / Hard | 1.0 | | Unfair | 2.0 |

Note the asymmetry: going from Normal down to Casual removes only a fifth of the incoming damage, while Unfair doubles it. Hard does not increase enemy damage at all over Core — its difficulty comes entirely from enemy stat tiers (below).

StatsAdjustments — an integer stat tier for enemies: Story and the two hidden presets sit at tier 0; Casual 1 → Normal 2 → Daring 3 → Core 4 → Hard 5 → Unfair 6. The per-tier coefficients live in statsAdjustmentPresets — tier 0 cuts enemy HP to ×0.4 and ability DCs by 4; Core (tier 4) is the zero-adjustment baseline. Full breakdown in Core is zero.

The full rule grid

Verbatim shipped values (enum numbers, not prose — EnemyCriticalHits, AutoLevelUp, and WeatherEffects are tiers; the others are flags):

| Preset | Crit tier | Extra AI | Death's Door | Dead rise | Clean-rest debuffs | Auto-level | Respec | |---|---|---|---|---|---|---|---| | Story | 0 | 0 | 0 | 1 | 1 | 2 | 1 | | Casual | 0 | 0 | 1 | 0 | 1 | 2 | 1 | | Normal | 1 | 0 | 1 | 0 | 0 | 1 | 1 | | Daring | 1 | 0 | 1 | 0 | 0 | 1 | 0 | | Core | 2 | 0 | 0 | 0 | 0 | 0 | 0 | | Hard | 2 | 1 | 0 | 0 | 0 | 0 | 0 | | Unfair | 2 | 1 | 0 | 0 | 0 | 0 | 0 |

(Not in the grid: RemoveAnnoyingBuffsAfterCombat is 1 on every shipped preset without exception.)

Four callouts, each directly readable from a column:

  • Respec disappears at Daring: Story, Casual, and Normal allow it; Daring, Core, Hard, and Unfair do not.
  • Clean-rest debuff removal turns off at Normal — only Story and Casual scrub negative effects on rest; Normal is the first preset where resting leaves them on.
  • Death's Door belongs to Casual through Daring: gone by Core, and absent on Story (which instead revives dead companions after combat).
  • Unfair's real teeth are AdditionalAIBehaviors: 1 — extra enemy AI actions — stacked on ×2 damage and the highest stat tier. Hard shares the AI upgrade with half the damage multiplier.

What is NOT here

Encounter design, enemy composition, and loot are identical across presets — none of those fields appear in the dataset. Difficulty in WotR is purely a math-and-rules overlay on the same fights.

Sources

  • extracted/logic/difficulty-presets.json (verbatim preset dump).
  • Formula location verdict: logic/damage-model.json#difficulty, logic/core-mechanics.json.
  • Build: 20212986 (patch 2.7.0x). Regenerated by rerunning the extraction entrypoint after any game patch.

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