---
tab: "mechanics"
section: "combatSettings"
title: "Combat Settings (Advanced)"
summary: "Numeric tuning for the combat system: XP rewards for defeating enemies, ability recharge timing, ability effectiveness bonus, NPC daily healing, and the canonical list of valid damage types for your world."
uiLocation: "Mechanics → Advanced → Combat Settings"
uiSubtitle: "\"Combat settings and their mechanics\""
editor: "JSON only"
sizeLimits:
  - field: "`combatSettings.damageTypes` (entry count)"
    limit: "40 entries"
  - field: "`combatSettings.damageTypes.*` (each)"
    limit: "60 chars"
related: "skills - damage types must align with skill names; abilities - ability bonuses interact with combat resolution; npcs - NPC tier controls HP multipliers and damage output"
wikiUrl: "/mechanics/combatSettings"
---

# Combat Settings (Advanced)

## Example

```json
{
  "minCombatXP": 1,
  "baseCombatXP": 100,
  "abilityCooldown": 0,
  "abilityBonus": 10,
  "npcDailyHealingAmount": 999,
  "damageTypes": [
    "piercing", "slashing", "bludgeoning", "poisoning",
    "fire", "lightning", "wind", "water",
    "arcane", "light", "dark", "psychic"
  ]
}
```

## Fields

### abilityCooldown

Global setting governing ability cooldowns. It is **not** a multiplier on a per-ability `cooldown`. It serves two roles: it is the default `cooldown` an ability is given when it does not define its own (an authored `cooldown` applies directly), and it is the minimum number of turns that must pass before a character can learn another new ability. Balanced default: `0`.

### abilityBonus

Global setting for ability checks. It is **not** a multiplier on a per-ability `bonus`: an ability's `bonus` (shown in-game as **Power**) is added to the check directly as a flat modifier, alongside the acting skill and attribute contributions, and is not scaled by this value. `abilityBonus` is the default `bonus` an ability is given when it does not define its own; authored abilities use their own `bonus` instead. Either way the contribution shares the `skillSettings.maxSkillSuccessLevel` cap with skills, attribute bonuses, and context modifiers, consuming space within it rather than bypassing it. Balanced default: `10`.

### npcDailyHealingAmount

> **📋 Note (`npcDailyHealingAmount`):** Health NPCs recover by this amount per in-game day -- not tied to the Long Rest mechanic specifically. Setting this to a high value (e.g. 999) effectively means any NPC recovers fully between encounters, preventing NPCs from remaining at low HP permanently across sessions.

> **📋 Note (`isHealth`):** The codec-validated way to designate the health resource is `isHealth: true` on the resource entry in [`resourceSettings`](/mechanics/resourceSettings) - the engine reads that flag to identify the primary HP pool.

### damageTypes

> **📋 Note (`Custom damage types`):** Adding a type like `"radiant"` or `"necrotic"` to `damageTypes` makes it a valid value in `npcTypes` `vulnerabilities`, `resistances`, and `immunities`. The engine math - increased or decreased damage for matching types - applies there. Beyond that, the damage type has no automatic behavior: it does not change how abilities deal damage, does not trigger elemental effects, and does not carry secondary rules (e.g. `"poison"` does not automatically inflict a poisoned condition). Any secondary behavior has to be defined explicitly in ability `description` text and narrator instructions in `generateActionInfo`.

> **🐛 Common mistake (matching is case-sensitive and unnormalized):** Damage type matching against `npcTypes` `vulnerabilities`, `resistances`, and `immunities` is exact and case-sensitive — `"Fire"` and `"fire"` are different types, and a mismatch fails silently (full damage, no warning). Use the same lowercase ASCII strings everywhere you reference a damage type, and avoid accented or non-ASCII characters, which break matching the same silent way.

## Schema

```json
{
  "_type": "required",
  "fields": {
    "minCombatXP": "number",
    "baseCombatXP": "number",
    "abilityCooldown": "number",
    "abilityBonus": "number",
    "npcDailyHealingAmount": "number",
    "damageTypes": {
      "_type": "array",
      "of": "string"
    }
  }
}
```
