Every battle awards experience at the end. This page defines who receives it and how much is kept once the level gap between the recipient and the enemy it defeated is applied.
Who gets XP
- XP is awarded to the avatar’s class and both equipped creatures — the party is the three who fight. A creature swapped out mid-fight is paid in the bag; the account’s own level takes the full, unpenalised battle XP.
- Dying in battle does not forfeit XP. A fainted creature or a downed avatar still receives its full end-of-battle share.
- The penalty is computed per recipient, from that recipient's own level versus the defeated enemy's level. A low-level benchwarmer carried through a high-level fight keeps almost all of its XP; an over-leveled veteran farming weak floors keeps very little.
The penalty curve
Let diff = enemyLevel − recipientLevel. Positive means the enemy is higher level (you are under-leveled); negative means the enemy is lower (you are over-leveled). The two directions use different, deliberately asymmetric curves.
Enemy higher — forgiving
No penalty at all up to +10. Past that it ramps linearly, reaching the 90% floor at +50 and staying there.
diff ≤ 10 → 0%
10 < diff < 50 → 90% × (diff−10)/40
diff ≥ 50 → 90%
Enemy lower — strict
Half the window, twice as steep. Grace only to −3, then a fast ramp hitting 90% by −25.
d = −diff
d ≤ 3 → 0%
3 < d < 25 → 90% × (d−3)/22
d ≥ 25 → 90%
Reference table
| Enemy above you | Penalty | XP kept |
| Enemy below you | Penalty | XP kept |
Design intent: under-leveling into hard content stays rewarding (push up freely), while grinding trivial enemies is quickly gutted — the over-leveled curve reaches the 90% floor in half the level span of the under-leveled one.
Where the numbers live
The curve’s five parameters (grace +10, full +50, grace −3, full −25, 90% cap) are one table, xp_penalty in dfmc-client src/tables.json, read by the server when it credits class XP for a battle (the server owns XP since the 2026-10-22 server-authority run) and mirrored by the game client’s victory screen. The per-kill base XP comes from XPCurve.csv — see XP.
Changelog
- 2026-11-03 — codex review (dfmc-client lane codexreview-a; D 2026-11-03 “review the codex…”). WIKI ONLY. The recipients line says who is actually paid (the class and the two equipped creatures; a swapped-out fighter in the bag; the account level unpenalised) instead of “every creature in the party”; a section names the table the parameters live in and that the server applies the curve; this changelog is created — the page had none.