# Monster Manual

> **Major spoilers ahead.** The Monster Manual reveals creatures, bosses, abilities and where you’ll encounter them, including content still in development. Even if you’re testing the game, we recommend playing through the first four adventures once before reading further. Keep the surprises intact until you’re ready to explore the full bestiary.

Volume III · Build 25 · Reviewed 28 October 2026

Creature and encounter spoilers. Statistics show Basic after explicit tier overrides; raw configuration is included for developers. Flavor is editorial, not additional game rules.

## Atir

The heat arrives before the dragon. When Atir draws breath, even the space between the Company feels dangerously small.

**Three strikes.** Atir avoids the previous random target when another is eligible.

**Furnace Breath.** On rounds 3, 6, 9 and every third round thereafter, Breath replaces the entire action. Each living hero receives an independent Fire damage roll with Burning. A telegraph warns of the coming breath. Exact dice and tier-specific profiles are retained in the configuration below.

**Final modifiers.** Maximum HP is multiplied by 0.85 after tier scaling and rounded up. Outgoing damage is multiplied by 0.75 once, including Breath. Burning uses the already-reduced actual hit. Atir is immune to Polymorph.

| Difficulty | HP | AC | Attack | Damage | Strikes |
| --- | ---: | ---: | ---: | --- | ---: |
| Basic | 196 | 17 | +8 | d8+3 | 3 |
| Advanced | 318 | 22 | +12 | d8+5 | 3 |
| Expert | 352 | 28 | +14 | d8+6 | 3 |
| Master | 414 | 30 | +16 | d8+7 | 3 |
| Master+ | 490 | 32 | +17 | d8+9 | 3 |

### Authored configuration

```json
{
  "id": "atir",
  "name": "Atir",
  "plateName": "Atir",
  "role": "Atir",
  "hp": 230,
  "ac": 17,
  "attack": 8,
  "die": 8,
  "bonus": 3,
  "initiative": 14,
  "art": 40,
  "visualScale": 1.8,
  "preserveAspect": true,
  "attackText": "{actor} strikes at {target}.",
  "weaknesses": [
    "Frost",
    "Holy"
  ],
  "resistances": [
    "Fire",
    "Void"
  ],
  "attacksPerTurn": 3,
  "distinctTargets": true,
  "polymorphImmune": true,
  "tierDamageMultiplier": 0.5,
  "timedAction": {
    "name": "Furnace Breath",
    "round": 3,
    "interval": 3,
    "tierDamageMultiplier": 0.5,
    "icon": "spell.ember",
    "telegraph": "Atir draws breath. Fire gathers behind its teeth.",
    "effect": {
      "kind": "damage",
      "target": "party",
      "element": "Fire",
      "die": 6,
      "bonus": 3,
      "burning": true,
      "sound": "combat.furnaceBreath"
    },
    "telegraphSound": "combat.furnaceInhale"
  },
  "tierAdjustments": [
    {
      "tier": 1,
      "hp": 170
    },
    {
      "tier": 2,
      "hp": 125,
      "attack": 7,
      "bonus": 2,
      "timedAction": {
        "name": "Furnace Breath",
        "round": 3,
        "interval": 3,
        "tierDamageMultiplier": 0.35,
        "icon": "spell.ember",
        "telegraph": "Atir draws breath. Fire gathers behind its teeth.",
        "effect": {
          "kind": "damage",
          "target": "party",
          "element": "Fire",
          "die": 6,
          "bonus": 1,
          "burning": true,
          "sound": "magic.ember"
        }
      }
    },
    {
      "tier": 3,
      "hp": 108,
      "attack": 7,
      "bonus": 2,
      "timedAction": {
        "name": "Furnace Breath",
        "round": 3,
        "interval": 3,
        "tierDamageMultiplier": 0.35,
        "icon": "spell.ember",
        "telegraph": "Atir draws breath. Fire gathers behind its teeth.",
        "effect": {
          "kind": "damage",
          "target": "party",
          "element": "Fire",
          "die": 6,
          "bonus": 1,
          "burning": true,
          "sound": "magic.ember"
        }
      }
    },
    {
      "tier": 4,
      "hp": 96,
      "attack": 7,
      "bonus": 2,
      "timedAction": {
        "name": "Furnace Breath",
        "round": 3,
        "interval": 3,
        "tierDamageMultiplier": 0.35,
        "icon": "spell.ember",
        "telegraph": "Atir draws breath. Fire gathers behind its teeth.",
        "effect": {
          "kind": "damage",
          "target": "party",
          "element": "Fire",
          "die": 6,
          "bonus": 1,
          "burning": true,
          "sound": "magic.ember"
        }
      }
    }
  ],
  "keepInCombatFrame": true,
  "registeredCombatArt": true,
  "outgoingDamageMultiplier": 0.75,
  "maxHpMultiplier": 0.85,
  "attackSound": "combat.atirStrike"
}
```

## Black Barrel Gnoll

Some tavern stories end with a spilled drink. This one begins there, and the hangover comes considerably sooner.

**Beer.** Each damaging hit has a 30% base chance to inflict Beer, reducing Attack by 5 through two full turns. The shared difficulty bonus for these effects applies.

| Difficulty | HP | AC | Attack | Damage | Strikes |
| --- | ---: | ---: | ---: | --- | ---: |
| Basic | 21 | 11 | +4 | d4+1 | 1 |
| Advanced | 47 | 16 | +8 | d4+4 | 1 |
| Expert | 70 | 22 | +11 | d4+7 | 1 |
| Master | 95 | 24 | +13 | d4+9 | 1 |
| Master+ | 108 | 26 | +14 | d4+12 | 1 |

### Authored configuration

```json
{
  "id": "blackBarrelGnoll",
  "name": "Black Barrel Gnoll",
  "plateName": "Gnoll",
  "role": "Cellar raider",
  "hp": 21,
  "ac": 11,
  "attack": 4,
  "die": 4,
  "bonus": 1,
  "initiative": 21,
  "art": 27,
  "visualScale": 0.85,
  "preserveAspect": true,
  "element": "",
  "attackText": "{actor} lashes out at {target}.",
  "onHitDebuff": {
    "kind": "beer",
    "chance": 30,
    "amount": 5
  },
  "weaknesses": [
    "Frost"
  ],
  "resistances": [],
  "visualTopPadding": 0.019817,
  "visualBottomPadding": 0.025915,
  "tierDamageMultiplier": 0.75,
  "tierAdjustments": [
    {
      "tier": 4,
      "hp": 18,
      "bonus": -1
    }
  ],
  "attackSound": "combat.gnollLunge"
}
```

## Brambling

A knot of thorns with somewhere to be. It is easy to mistake a Brambling for undergrowth, right up until the undergrowth objects.

**Entangling strike.** A damaging hit against a surviving target has a 30% base chance to inflict Entangled with magnitude 2. The shared difficulty bonus for these effects applies.

| Difficulty | HP | AC | Attack | Damage | Strikes |
| --- | ---: | ---: | ---: | --- | ---: |
| Basic | 7 | 12 | +3 | d4+0 | 1 |
| Advanced | 16 | 17 | +7 | d4+4 | 1 |
| Expert | 24 | 23 | +10 | d4+8 | 1 |
| Master | 32 | 25 | +12 | d4+10 | 1 |
| Master+ | 42 | 27 | +13 | d4+14 | 1 |

### Authored configuration

```json
{
  "id": "brambling",
  "attackText": "{actor} lashes out with thorny branches.",
  "name": "Brambling",
  "plateName": "Bramble",
  "role": "Woodland creature",
  "hp": 7,
  "ac": 12,
  "attack": 3,
  "die": 4,
  "bonus": 0,
  "initiative": 5,
  "art": 12,
  "visualScale": 1,
  "weaknesses": [
    "Fire"
  ],
  "resistances": [
    "Earth"
  ],
  "onHitDebuff": {
    "kind": "entangled",
    "chance": 30,
    "amount": 2
  },
  "attackSound": "combat.rootLash"
}
```

## Briar sneak

Small feet, sharp intentions. The Briar sneak makes the most of every opening the Company leaves behind.

One ordinary strike.

| Difficulty | HP | AC | Attack | Damage | Strikes |
| --- | ---: | ---: | ---: | --- | ---: |
| Basic | 9 | 11 | +2 | d4+1 | 1 |
| Advanced | 20 | 16 | +6 | d4+5 | 1 |
| Expert | 30 | 22 | +9 | d4+9 | 1 |
| Master | 41 | 24 | +11 | d4+11 | 1 |
| Master+ | 54 | 26 | +12 | d4+15 | 1 |

### Authored configuration

```json
{
  "id": "goblin",
  "attackText": "{actor} lunges with a quick, spiteful stab.",
  "name": "Briar sneak",
  "plateName": "Sneak",
  "role": "Goblin",
  "hp": 9,
  "ac": 11,
  "attack": 2,
  "die": 4,
  "bonus": 1,
  "initiative": 17,
  "art": 4,
  "visualScale": 0.75,
  "weaknesses": [
    "Frost"
  ],
  "resistances": [
    "Fire"
  ],
  "element": "",
  "attackSound": "combat.goblinStab"
}
```

## Bugbear

There is nothing subtle about the weight of a Bugbear’s blow. The difficulty is being ready when it arrives.

One physical d10+4 strike; no separate shield skill.

| Difficulty | HP | AC | Attack | Damage | Strikes |
| --- | ---: | ---: | ---: | --- | ---: |
| Basic | 78 | 18 | +4 | d10+4 | 1 |
| Advanced | 137 | 23 | +8 | d10+6 | 1 |
| Expert | 162 | 29 | +11 | d10+6 | 1 |
| Master | 189 | 31 | +13 | d10+7 | 1 |
| Master+ | 216 | 33 | +14 | d10+9 | 1 |

### Authored configuration

```json
{
  "id": "bugbear",
  "name": "Bugbear",
  "plateName": "Bugbear",
  "role": "Bugbear",
  "hp": 78,
  "ac": 18,
  "attack": 4,
  "die": 10,
  "bonus": 4,
  "initiative": 8,
  "art": 36,
  "visualScale": 1.25,
  "preserveAspect": true,
  "attackText": "{actor} strikes at {target}.",
  "weaknesses": [
    "Wind"
  ],
  "resistances": [],
  "tierDamageMultiplier": 0.5,
  "tierAdjustments": [
    {
      "tier": 1,
      "hp": 62
    },
    {
      "tier": 2,
      "hp": 49,
      "attack": 4,
      "bonus": 2
    },
    {
      "tier": 3,
      "hp": 42,
      "attack": 4,
      "bonus": 2
    },
    {
      "tier": 4,
      "hp": 36,
      "attack": 4,
      "bonus": 2
    }
  ],
  "keepInCombatFrame": true,
  "registeredCombatArt": true,
  "attackSound": "combat.bugbearSwing"
}
```

## Buried Serpent

The ground is not always the safest thing to stand on. A patient shape below it can turn certainty into a very short-lived luxury.

**Two strikes.** The serpent scores a critical hit on natural 18–20. Its damaging hits have a 50% base chance to apply Poison for 1 damage per personal turn, with the shared difficulty increase and cap. It is immune to Polymorph.

| Difficulty | HP | AC | Attack | Damage | Strikes |
| --- | ---: | ---: | ---: | --- | ---: |
| Basic | 116 | 14 | +5 | d6+2 | 2 |
| Advanced | 238 | 19 | +9 | d6+5 | 2 |
| Expert | 330 | 25 | +12 | d6+6 | 2 |
| Master | 360 | 27 | +14 | d6+8 | 2 |
| Master+ | 390 | 29 | +15 | d6+11 | 2 |

### Authored configuration

```json
{
  "id": "buriedSerpent",
  "name": "Buried Serpent",
  "plateName": "Serpent",
  "role": "Venomous guardian",
  "hp": 108,
  "ac": 14,
  "attack": 5,
  "die": 6,
  "bonus": 2,
  "initiative": 23,
  "art": 32,
  "visualScale": 1.48,
  "preserveAspect": true,
  "element": "",
  "attackText": "{actor} lashes out at {target}.",
  "attacksPerTurn": 2,
  "criticalFrom": 18,
  "poisonChance": 50,
  "poisonDamage": 1,
  "polymorphImmune": true,
  "weaknesses": [
    "Frost",
    "Wind"
  ],
  "resistances": [
    "Earth"
  ],
  "visualTopPadding": 0.0131,
  "visualBottomPadding": 0.016012,
  "tierDamageMultiplier": 0.75,
  "tierAdjustments": [
    {
      "tier": 2,
      "hp": 100,
      "bonus": 0
    },
    {
      "tier": 3,
      "hp": 80,
      "bonus": 0
    },
    {
      "tier": 4,
      "hp": 65,
      "bonus": 0
    },
    {
      "tier": 0,
      "attack": 5,
      "bonus": 2,
      "hp": 116
    }
  ],
  "attackSound": "combat.serpentStrike"
}
```

## Dawn Sentinel

An intact guardian, bright with a purpose that does not depend upon the Company agreeing with it.

One ordinary strike; protects Warden only through encounter-owned rule, not innate ability.

| Difficulty | HP | AC | Attack | Damage | Strikes |
| --- | ---: | ---: | ---: | --- | ---: |
| Basic | 10 | 12 | +2 | d4+1 | 1 |
| Advanced | 22 | 17 | +6 | d4+5 | 1 |
| Expert | 33 | 23 | +9 | d4+9 | 1 |
| Master | 45 | 25 | +11 | d4+11 | 1 |
| Master+ | 60 | 27 | +12 | d4+15 | 1 |

### Authored configuration

```json
{
  "id": "dawnSentinel",
  "attackText": "{actor} drives a stone fist toward {target}.",
  "name": "Dawn Sentinel",
  "plateName": "Sentinel",
  "role": "Runic automaton",
  "hp": 10,
  "ac": 12,
  "attack": 2,
  "die": 4,
  "bonus": 1,
  "initiative": 20,
  "art": 15,
  "visualScale": 0.75,
  "weaknesses": [
    "Holy",
    "Earth"
  ],
  "resistances": [
    "Void"
  ],
  "element": "",
  "attackSound": "combat.stoneFist"
}
```

## Flaming Skull

A grin with no reassuring explanation. Fire does the talking, and the skull seems quite pleased with the conversation.

**Fire Ray and Fireball.** Eligible actions use weights of 70 for Fire Ray and 30 for Fireball. When an action is unavailable, the remaining eligible weights determine the choice. Fire Ray makes an ordinary spell attack for d4+2 Fire damage. Fireball automatically deals an independent d4+3 Fire to each living hero; it becomes eligible in round 2 and has a three-round cooldown. Both add half the tier damage bonus, rounded up, and count as spells. The skull’s hovering artwork does not grant the Flight ability.

| Difficulty | HP | AC | Attack | Damage | Strikes |
| --- | ---: | ---: | ---: | --- | ---: |
| Basic | 44 | 11 | +8 | d4+2 | 1 |
| Advanced | 80 | 16 | +12 | d4+4 | 1 |
| Expert | 99 | 22 | +13 | d4+5 | 1 |
| Master | 117 | 24 | +15 | d4+6 | 1 |
| Master+ | 132 | 26 | +16 | d4+8 | 1 |

### Authored configuration

```json
{
  "id": "flamingSkull",
  "name": "Flaming Skull",
  "plateName": "Skull",
  "role": "Flaming Skull",
  "hp": 44,
  "ac": 11,
  "attack": 8,
  "die": 4,
  "bonus": 2,
  "initiative": 16,
  "art": 35,
  "visualScale": 0.65,
  "preserveAspect": true,
  "attackText": "{actor} strikes at {target}.",
  "weaknesses": [
    "Frost",
    "Holy"
  ],
  "resistances": [
    "Fire"
  ],
  "element": "Fire",
  "actions": [
    {
      "name": "Fire Ray",
      "element": "Fire",
      "die": 4,
      "bonus": 2,
      "weight": 70,
      "attackKind": "spell",
      "icon": "spell.ember",
      "sound": "combat.fireRay"
    },
    {
      "name": "Fireball",
      "element": "Fire",
      "die": 4,
      "bonus": 3,
      "weight": 30,
      "party": true,
      "firstRound": 2,
      "cooldown": 3,
      "attackKind": "spell",
      "icon": "spell.ember",
      "sound": "combat.fireball"
    }
  ],
  "tierDamageMultiplier": 0.5,
  "tierAdjustments": [
    {
      "tier": 1,
      "hp": 36
    },
    {
      "tier": 2,
      "hp": 30,
      "attack": 6,
      "bonus": 1
    },
    {
      "tier": 3,
      "hp": 26,
      "attack": 6,
      "bonus": 1
    },
    {
      "tier": 4,
      "hp": 22,
      "attack": 6,
      "bonus": 1
    }
  ],
  "keepInCombatFrame": true,
  "registeredCombatArt": true
}
```

## The Gatekeeper

Some doors are guarded by locks. This one has a more personal arrangement.

Two strikes, avoids previous random target. Gate Block halves first positive direct hit each round, ceiling rounded; Poison/retaliation/self-injury do not consume it. Immune to Polymorph.

| Difficulty | HP | AC | Attack | Damage | Strikes |
| --- | ---: | ---: | ---: | --- | ---: |
| Basic | 96 | 15 | +6 | d6+2 | 2 |
| Advanced | 194 | 20 | +9 | d6+4 | 2 |
| Expert | 238 | 26 | +12 | d6+6 | 2 |
| Master | 293 | 28 | +14 | d6+8 | 2 |
| Master+ | 360 | 30 | +15 | d6+11 | 2 |

### Authored configuration

```json
{
  "id": "gatekeeper",
  "name": "The Gatekeeper",
  "plateName": "Keeper",
  "role": "Chain-bound guardian",
  "hp": 88,
  "ac": 15,
  "attack": 5,
  "die": 6,
  "bonus": 1,
  "initiative": 6,
  "art": 26,
  "visualScale": 1.48,
  "preserveAspect": true,
  "element": "",
  "attackText": "{actor} lashes out at {target}.",
  "roundBlock": true,
  "distinctTargets": true,
  "attacksPerTurn": 2,
  "polymorphImmune": true,
  "weaknesses": [
    "Wind"
  ],
  "resistances": [
    "Earth"
  ],
  "visualTopPadding": 0.058867,
  "visualBottomPadding": 0.032787,
  "tierDamageMultiplier": 0.75,
  "tierAdjustments": [
    {
      "tier": 2,
      "hp": 72,
      "bonus": 0
    },
    {
      "tier": 3,
      "hp": 65,
      "bonus": 0
    },
    {
      "tier": 4,
      "hp": 60,
      "bonus": 0
    },
    {
      "tier": 0,
      "attack": 6,
      "bonus": 2,
      "hp": 96
    }
  ],
  "attackSound": "combat.chainSwing"
}
```

## Gelatinous Cube

A corridor can look remarkably empty while containing a great deal of trouble. The Cube rewards a careful second look.

**Engulf.** On its first available turn, the Cube captures one free living hero without dealing initial damage. While that captive lives, digestion consumes its whole action and deals **2 + one-quarter of the tier damage bonus, rounded down**, as untyped direct damage. It can recapture no earlier than two rounds after the previous capture; otherwise it makes an ordinary strike.

**Escape.** The captive spends their turn to roll d20 plus one-quarter of Attack, rounded down with a minimum bonus of zero, against 12. Natural 1 and 20 have no special override. Other captive actions and Flee are disabled; allies may still heal or flee. The Cube’s death, combat exit or a successful party flee releases the captive. The Cube is immune to Polymorph.

| Difficulty | HP | AC | Attack | Damage | Strikes |
| --- | ---: | ---: | ---: | --- | ---: |
| Basic | 86 | 9 | +3 | d6+1 | 1 |
| Advanced | 190 | 14 | +7 | d6+5 | 1 |
| Expert | 238 | 20 | +10 | d6+9 | 1 |
| Master | 324 | 22 | +12 | d6+11 | 1 |
| Master+ | 432 | 24 | +13 | d6+15 | 1 |

### Authored configuration

```json
{
  "id": "gelatinousCube",
  "name": "Gelatinous Cube",
  "plateName": "Cube",
  "role": "Living prison",
  "hp": 86,
  "ac": 9,
  "attack": 3,
  "die": 6,
  "bonus": 1,
  "initiative": 3,
  "art": 30,
  "visualScale": 1.48,
  "preserveAspect": true,
  "element": "",
  "attackText": "{actor} lashes out at {target}.",
  "ability": "engulf",
  "polymorphImmune": true,
  "weaknesses": [
    "Frost"
  ],
  "resistances": [
    "Earth"
  ],
  "visualTopPadding": 0.089314,
  "visualBottomPadding": 0.078947,
  "tierAdjustments": [
    {
      "tier": 2,
      "attack": -1,
      "bonus": -1,
      "hp": 72
    },
    {
      "tier": 3,
      "attack": -1,
      "bonus": -1,
      "hp": 72
    },
    {
      "tier": 4,
      "attack": -1,
      "bonus": -1,
      "hp": 72
    }
  ]
}
```

## Giant Spider

Too many legs, too little warning. A silk-threaded corner is a poor place to discover that the road has narrowed.

Two strikes; 30% Poison for 1 per personal turn.

| Difficulty | HP | AC | Attack | Damage | Strikes |
| --- | ---: | ---: | ---: | --- | ---: |
| Basic | 60 | 12 | +3 | d4+1 | 2 |
| Advanced | 132 | 17 | +7 | d4+5 | 2 |
| Expert | 198 | 23 | +10 | d4+9 | 2 |
| Master | 270 | 25 | +12 | d4+11 | 2 |
| Master+ | 360 | 27 | +13 | d4+15 | 2 |

### Authored configuration

```json
{
  "id": "giantSpider",
  "attackText": "{actor} darts forward, fangs bared.",
  "name": "Giant Spider",
  "plateName": "Spider",
  "role": "Chest lurker",
  "hp": 60,
  "ac": 12,
  "attack": 3,
  "die": 4,
  "bonus": 1,
  "initiative": 14,
  "art": 11,
  "visualScale": 1.5,
  "preserveAspect": true,
  "visualTopPadding": 0.195,
  "visualBottomPadding": 0.15,
  "attacksPerTurn": 2,
  "poisonChance": 30,
  "poisonDamage": 1,
  "weaknesses": [
    "Frost",
    "Earth"
  ],
  "resistances": [],
  "attackSound": "combat.spiderBite"
}
```

## Gloam Grifflet

A small silhouette with the confidence of something much larger. The air above the battlefield belongs to it until persuaded otherwise.

Starts grounded. Take Flight consumes action for +5 AC. Next active turn Raking Swoop strikes up to two distinct living heroes with half tier-adjusted damage (floor/minimum 1 before element), then lands. Freeze delays without landing. 25% Off Balance magnitude1 on damaging hit.

| Difficulty | HP | AC | Attack | Damage | Strikes |
| --- | ---: | ---: | ---: | --- | ---: |
| Basic | 14 | 12 | +4 | d4+1 | 1 |
| Advanced | 27 | 17 | +7 | d4+5 | 1 |
| Expert | 40 | 23 | +10 | d4+9 | 1 |
| Master | 54 | 25 | +12 | d4+11 | 1 |
| Master+ | 72 | 27 | +13 | d4+15 | 1 |

### Authored configuration

```json
{
  "id": "gloamGrifflet",
  "attackText": "{actor} rakes at {target} with hooked talons.",
  "name": "Gloam Grifflet",
  "plateName": "Grifflet",
  "hp": 12,
  "ac": 12,
  "attack": 3,
  "die": 4,
  "bonus": 1,
  "initiative": 18,
  "art": 17,
  "role": "Forest flier",
  "visualScale": 0.55,
  "weaknesses": [
    "Wind"
  ],
  "resistances": [],
  "onHitDebuff": {
    "kind": "offBalance",
    "chance": 25,
    "amount": 1
  },
  "flightHeight": 0.3,
  "preserveAspect": true,
  "flight": {
    "armor": 5,
    "targets": 2,
    "damageMultiplier": 0.5,
    "name": "Raking Swoop"
  },
  "flyingArtwork": "JournalArt/Core/Shared/Creatures/GloamGrifflet_Flying",
  "tierAdjustments": [
    {
      "tier": 0,
      "attack": 4,
      "bonus": 1,
      "hp": 14
    }
  ],
  "attackSound": "combat.griffletRake"
}
```

## Goblin Bandit

A roadside negotiation conducted at weapon point. The Bandit’s preferred terms are uncomplicated.

Critical15-20. Dodge consumes action on 25% eligible check: +7 AC until next two turn beginnings, cooldown 3 rounds, no refresh. Armor-only, no Vanish/Backstab.

| Difficulty | HP | AC | Attack | Damage | Strikes |
| --- | ---: | ---: | ---: | --- | ---: |
| Basic | 38 | 14 | +6 | d6+3 | 1 |
| Advanced | 66 | 19 | +10 | d6+5 | 1 |
| Expert | 76 | 25 | +11 | d6+4 | 1 |
| Master | 86 | 27 | +13 | d6+5 | 1 |
| Master+ | 96 | 29 | +14 | d6+5 | 1 |

### Authored configuration

```json
{
  "id": "goblinBandit",
  "name": "Goblin Bandit",
  "plateName": "Bandit",
  "role": "Goblin Bandit",
  "hp": 38,
  "ac": 14,
  "attack": 6,
  "die": 6,
  "bonus": 3,
  "initiative": 18,
  "art": 34,
  "visualScale": 0.85,
  "preserveAspect": true,
  "attackText": "{actor} strikes at {target}.",
  "weaknesses": [],
  "resistances": [],
  "criticalFrom": 15,
  "camouflage": {
    "name": "Dodge",
    "armor": 7,
    "duration": 2,
    "chance": 25,
    "cooldown": 3,
    "armorOnly": true
  },
  "tierDamageMultiplier": 0.35,
  "tierAdjustments": [
    {
      "tier": 1,
      "hp": 30
    },
    {
      "tier": 2,
      "hp": 23,
      "attack": 4,
      "bonus": 1
    },
    {
      "tier": 3,
      "hp": 19,
      "attack": 4,
      "bonus": 1
    },
    {
      "tier": 4,
      "hp": 16,
      "attack": 4,
      "bonus": 0
    }
  ],
  "keepInCombatFrame": true,
  "registeredCombatArt": true,
  "attackSound": "combat.goblinStab"
}
```

## Green Slime

Not every dangerous thing announces itself with a roar. Some merely wait for contact.

Damaging melee contact retaliates for 1 + floor(tier damage/5) untyped acid, including lethal hit. Ranged/spells safe. No recursive reaction.

| Difficulty | HP | AC | Attack | Damage | Strikes |
| --- | ---: | ---: | ---: | --- | ---: |
| Basic | 13 | 9 | +2 | d4+0 | 1 |
| Advanced | 29 | 14 | +6 | d4+2 | 1 |
| Expert | 43 | 20 | +9 | d4+4 | 1 |
| Master | 59 | 22 | +11 | d4+5 | 1 |
| Master+ | 78 | 24 | +12 | d4+7 | 1 |

### Authored configuration

```json
{
  "id": "greenSlime",
  "name": "Green Slime",
  "plateName": "Slime",
  "role": "Corrosive nuisance",
  "hp": 13,
  "ac": 9,
  "attack": 2,
  "die": 4,
  "bonus": 0,
  "initiative": 9,
  "art": 31,
  "visualScale": 0.55,
  "preserveAspect": true,
  "element": "",
  "attackText": "{actor} lashes out at {target}.",
  "weaponRetaliation": 1,
  "weaknesses": [
    "Fire",
    "Frost"
  ],
  "resistances": [
    "Earth"
  ],
  "visualTopPadding": 0.235247,
  "visualBottomPadding": 0.177831,
  "tierDamageMultiplier": 0.5,
  "tierAdjustments": [],
  "attackSound": "combat.slimeStrike"
}
```

## Hollow warden

Wood and duty make an unforgiving combination. The Hollow warden has little interest in the Company’s explanation.

Grave Chill replaces action on exact round 2 once: independent 50% Freeze / 25% Frost-ward chance, fixed all tiers, no damage. Missing round-2 action to Freeze loses the opportunity; it does not cast late. Immune to Polymorph.

| Difficulty | HP | AC | Attack | Damage | Strikes |
| --- | ---: | ---: | ---: | --- | ---: |
| Basic | 26 | 13 | +4 | d6+2 | 1 |
| Advanced | 58 | 18 | +8 | d6+6 | 1 |
| Expert | 106 | 24 | +11 | d6+10 | 1 |
| Master | 117 | 26 | +13 | d6+12 | 1 |
| Master+ | 156 | 28 | +14 | d6+20 | 2 |

### Authored configuration

```json
{
  "id": "warden",
  "attackText": "{actor} strikes with ancient, implacable force.",
  "timedAction": {
    "name": "Grave Chill",
    "round": 2,
    "effect": {
      "sound": "combat.graveChill",
      "kind": "freeze",
      "target": "party",
      "element": "Frost",
      "freezeChance": 50,
      "resistanceMitigatesFreeze": true,
      "resistedFreezeChance": 25,
      "fixedFreezeChance": true
    },
    "graveChillMarker": true
  },
  "name": "Hollow warden",
  "plateName": "Warden",
  "role": "Tower keeper",
  "hp": 26,
  "ac": 13,
  "attack": 4,
  "die": 6,
  "bonus": 2,
  "initiative": 16,
  "art": 6,
  "visualScale": 1,
  "weaknesses": [
    "Holy"
  ],
  "resistances": [
    "Void"
  ],
  "element": "Void",
  "polymorphImmune": true,
  "tierAdjustments": [
    {
      "tier": 4,
      "attack": -1,
      "bonus": 6,
      "attacksPerTurn": 2
    },
    {
      "tier": 2,
      "attack": -1,
      "bonus": -1,
      "hp": 32
    }
  ],
  "attackSound": "combat.wardenStrike"
}
```

## The Index Warden

The collection has rules. Its keeper is prepared to enforce them with more than a stern glance.

Two ordinary strikes. Gale of Unreturned Pages rounds 2/4/6: independent d4+1 Wind to party plus ceil(tier damage × 0.5). Immune to Polymorph.

| Difficulty | HP | AC | Attack | Damage | Strikes |
| --- | ---: | ---: | ---: | --- | ---: |
| Basic | 62 | 14 | +5 | d6+1 | 2 |
| Advanced | 119 | 19 | +8 | d6+5 | 2 |
| Expert | 179 | 25 | +11 | d6+9 | 2 |
| Master | 243 | 27 | +13 | d6+11 | 2 |
| Master+ | 324 | 29 | +14 | d6+15 | 2 |

### Authored configuration

```json
{
  "id": "indexWarden",
  "attackText": "{actor} whips a razor-edged page toward {target}.",
  "name": "The Index Warden",
  "plateName": "Warden",
  "hp": 54,
  "ac": 14,
  "attack": 4,
  "die": 6,
  "bonus": 1,
  "initiative": 9,
  "art": 21,
  "role": "Library guardian",
  "visualScale": 1.3,
  "weaknesses": [
    "Fire",
    "Wind"
  ],
  "resistances": [
    "Frost"
  ],
  "attacksPerTurn": 2,
  "timedAction": {
    "name": "Gale of Unreturned Pages",
    "round": 2,
    "interval": 2,
    "icon": "enemy.gale",
    "effect": {
      "sound": "combat.pageGale",
      "kind": "damage",
      "target": "party",
      "die": 4,
      "bonus": 1,
      "element": "Wind"
    },
    "tierDamageMultiplier": 0.5
  },
  "polymorphImmune": true,
  "tierAdjustments": [
    {
      "tier": 0,
      "attack": 5,
      "bonus": 1,
      "hp": 62
    }
  ],
  "attackSound": "combat.razorPage"
}
```

## Magmin

A little furnace with a very poor sense of personal space. Close attention is advised; close contact is another matter.

Equal-weight Fire Claws (d4+2 Fire, Burning) / Bite (d6+1 Physical), normal hit rolls. Each adds ceil(tier damage × 0.5).

| Difficulty | HP | AC | Attack | Damage | Strikes |
| --- | ---: | ---: | ---: | --- | ---: |
| Basic | 28 | 14 | +6 | d4+2 | 1 |
| Advanced | 53 | 19 | +10 | d4+4 | 1 |
| Expert | 66 | 25 | +12 | d4+5 | 1 |
| Master | 77 | 27 | +14 | d4+6 | 1 |
| Master+ | 90 | 29 | +15 | d4+8 | 1 |

### Authored configuration

```json
{
  "id": "magmin",
  "name": "Magmin",
  "plateName": "Magmin",
  "role": "Magmin",
  "hp": 28,
  "ac": 14,
  "attack": 6,
  "die": 4,
  "bonus": 2,
  "initiative": 17,
  "art": 37,
  "visualScale": 0.65,
  "preserveAspect": true,
  "attackText": "{actor} strikes at {target}.",
  "weaknesses": [
    "Frost"
  ],
  "resistances": [
    "Fire"
  ],
  "element": "Fire",
  "actions": [
    {
      "name": "Fire Claws",
      "element": "Fire",
      "die": 4,
      "bonus": 2,
      "weight": 50,
      "burning": true,
      "icon": "spell.ember",
      "sound": "combat.fireClaws"
    },
    {
      "name": "Bite",
      "element": "",
      "die": 6,
      "bonus": 1,
      "weight": 50,
      "sound": "combat.magminBite"
    }
  ],
  "tierDamageMultiplier": 0.5,
  "tierAdjustments": [
    {
      "tier": 1,
      "hp": 24
    },
    {
      "tier": 2,
      "hp": 20,
      "attack": 5,
      "bonus": 1
    },
    {
      "tier": 3,
      "hp": 17,
      "attack": 5,
      "bonus": 1
    },
    {
      "tier": 4,
      "hp": 15,
      "attack": 5,
      "bonus": 1
    }
  ],
  "keepInCombatFrame": true,
  "registeredCombatArt": true
}
```

## The Many-Eyed Horror

One gaze would be troubling enough. The Many-Eyed Horror leaves very few places in which to feel unobserved.

**Eye rays.** The Horror produces three automatic ray effects per action, spreading random targets where possible. Taunt attracts targeted rays. Each of the six rays is equally likely. The Horror is immune to Polymorph.

For the table below, **D = d4 + the resolved ordinary damage bonus**. Defended halves ray damage, rounded up, before elemental defenses. Sleep uses a separate, fixed 35% chance; difficulty does not increase it.

| Ray | Element | Damage | Additional effect |
| --- | --- | --- | --- |
| Cold | Frost | D | None. |
| Void | Void | D | None. |
| Withering | Physical | Half D, rounded down, minimum 1 | −3 Attack through two full turns. |
| Slowing | Physical | Half D, rounded down, minimum 1 | −2 Attack through the next full turn. |
| Sleep | Physical | Half D, rounded down, minimum 1 | 35% chance of Locked. Polymorph-immune targets take +4 damage instead. |
| Ruin | Void | D + 2 | None. |

| Difficulty | HP | AC | Attack | Damage | Strikes |
| --- | ---: | ---: | ---: | --- | ---: |
| Basic | 155 | 15 | +5 | d4+2 | 3 |
| Advanced | 319 | 20 | +9 | d4+5 | 3 |
| Expert | 370 | 26 | +12 | d4+6 | 3 |
| Master | 450 | 28 | +14 | d4+7 | 3 |
| Master+ | 540 | 30 | +15 | d4+20 | 3 |

### Authored configuration

```json
{
  "id": "beholder",
  "name": "The Many-Eyed Horror",
  "plateName": "Horror",
  "role": "Unleashed eye tyrant",
  "hp": 145,
  "ac": 15,
  "attack": 5,
  "die": 4,
  "bonus": 2,
  "initiative": 14,
  "art": 33,
  "visualScale": 1.48,
  "preserveAspect": true,
  "element": "",
  "attackText": "{actor} lashes out at {target}.",
  "ability": "eyeRays",
  "attacksPerTurn": 3,
  "polymorphImmune": true,
  "distinctTargets": true,
  "weaknesses": [
    "Holy",
    "Wind"
  ],
  "resistances": [
    "Void"
  ],
  "visualTopPadding": 0.015152,
  "visualBottomPadding": 0.092504,
  "tierDamageMultiplier": 0.65,
  "tierAdjustments": [
    {
      "tier": 2,
      "hp": 112,
      "bonus": 0
    },
    {
      "tier": 3,
      "hp": 100,
      "bonus": 0
    },
    {
      "tier": 4,
      "hp": 90,
      "bonus": 10
    },
    {
      "tier": 0,
      "attack": 5,
      "bonus": 2,
      "hp": 155
    }
  ]
}
```

## Necro Survivor

Whatever happened here was not quite the end. That is little comfort to anyone meeting what remains.

**Living aura.** While alive, the Survivor gives other allies +2 Attack and +2 damage.

**Raise the Fallen.** This consumes a full eligible action at no resource cost. It raises one original, non-fled Skeletal Warrior at half its scaled maximum HP, rounded up with a minimum of 1. The warrior keeps its original slot, turn order and defeat receipt, loses transient conditions, and gains neither a retroactive turn nor an additional defeat count. If resurrection is unavailable, the Survivor attacks normally; it has no healing action.

| Difficulty | HP | AC | Attack | Damage | Strikes |
| --- | ---: | ---: | ---: | --- | ---: |
| Basic | 22 | 18 | +3 | d4+1 | 1 |
| Advanced | 49 | 23 | +7 | d4+5 | 1 |
| Expert | 73 | 29 | +10 | d4+9 | 1 |
| Master | 99 | 31 | +12 | d4+11 | 1 |
| Master+ | 132 | 33 | +13 | d4+15 | 1 |

### Authored configuration

```json
{
  "id": "necroSurvivor",
  "name": "Necro Survivor",
  "plateName": "Survivor",
  "role": "Blue-house retainer",
  "hp": 22,
  "ac": 18,
  "attack": 3,
  "die": 4,
  "bonus": 1,
  "initiative": 8,
  "art": 29,
  "visualScale": 0.85,
  "preserveAspect": true,
  "element": "",
  "attackText": "{actor} lashes out at {target}.",
  "allyAttackAura": 2,
  "weaknesses": [
    "Holy"
  ],
  "resistances": [
    "Void",
    "Frost"
  ],
  "visualTopPadding": 0.017952,
  "visualBottomPadding": 0.021277,
  "revival": {
    "name": "Raise the Fallen",
    "icon": "spell.raiseTheFallen",
    "creatures": [
      "skeletalWarrior"
    ],
    "hpFraction": 0.5,
    "cost": 0
  },
  "attackSound": "combat.necroLash"
}
```

## Owlbear Cub

Small is a relative kindness. A cub has not yet learned restraint, and its family has opinions about strangers.

**Hug Mama.** The cub has 20 mana and spends 1 on each heal. It chooses the eligible ally with the lowest remaining-health fraction, below full health and missing at least 3 HP. It restores twice the result of d4+2, capped at the missing HP. Self-healing requires health below 1%. Otherwise it attacks.

**Flight after loss.** A surviving cub flees only after the full action that kills its mother. Killing both in the same action produces no flee or mercy outcome.

| Difficulty | HP | AC | Attack | Damage | Strikes |
| --- | ---: | ---: | ---: | --- | ---: |
| Basic | 10 | 11 | +1 | d4+0 | 1 |
| Advanced | 22 | 16 | +5 | d4+4 | 1 |
| Expert | 33 | 22 | +8 | d4+8 | 1 |
| Master | 45 | 24 | +10 | d4+10 | 1 |
| Master+ | 60 | 26 | +11 | d4+14 | 1 |

### Authored configuration

```json
{
  "id": "owlbearCub",
  "attackText": "{actor} swipes with his small claws.",
  "name": "Owlbear Cub",
  "plateName": "Cub",
  "hp": 10,
  "ac": 11,
  "attack": 1,
  "die": 4,
  "bonus": 0,
  "initiative": 16,
  "art": 19,
  "role": "Nurturing cub",
  "visualScale": 0.75,
  "mp": 20,
  "fleeOnDefeatOf": "owlbearMother",
  "fleeMessage": "owlbear_cub_flees",
  "support": {
    "name": "Hug Mama",
    "type": "heal",
    "targeting": "lowestHpPercentAlly",
    "cost": 1,
    "die": 4,
    "bonus": 2,
    "minimumMissing": 3,
    "multiplier": 2,
    "threshold": 1,
    "selfThreshold": 0.01,
    "sound": "combat.hugMama"
  },
  "weaknesses": [
    "Void"
  ],
  "resistances": [
    "Frost"
  ],
  "attackSound": "combat.owlbearSwipe"
}
```

## Owlbear Mother

A formidable answer to the question of who is watching the cub. Every step closer should be considered carefully.

Two strikes. Dead allied cub triggers Bereaved Fury: +2 Attack/+4 damage, two strikes, one-time message/art switch.

| Difficulty | HP | AC | Attack | Damage | Strikes |
| --- | ---: | ---: | ---: | --- | ---: |
| Basic | 42 | 13 | +4 | d8+2 | 2 |
| Advanced | 93 | 18 | +8 | d8+6 | 2 |
| Expert | 126 | 24 | +10 | d8+8 | 2 |
| Master | 153 | 26 | +12 | d8+10 | 2 |
| Master+ | 252 | 28 | +14 | d8+16 | 2 |

### Authored configuration

```json
{
  "id": "owlbearMother",
  "attackText": "{actor} slashes with her great claws.",
  "name": "Owlbear Mother",
  "plateName": "Owlbear",
  "hp": 42,
  "ac": 13,
  "attack": 4,
  "die": 8,
  "bonus": 2,
  "initiative": 10,
  "art": 18,
  "role": "Protective beast",
  "visualScale": 1.8,
  "rage": {
    "name": "Bereaved Fury",
    "onAllyDeath": true,
    "attackBonus": 2,
    "damageBonus": 4,
    "attacksPerTurn": 2,
    "message": "owlbear_bereaved_fury"
  },
  "attacksPerTurn": 2,
  "enragedArtwork": "JournalArt/Adventures/HeartOfForest/Creatures/OwlbearMotherRaging",
  "weaknesses": [
    "Void"
  ],
  "resistances": [
    "Frost"
  ],
  "tierAdjustments": [
    {
      "tier": 2,
      "attack": 3,
      "bonus": 0,
      "hp": 38
    },
    {
      "tier": 3,
      "attack": 3,
      "bonus": 0,
      "hp": 34
    }
  ],
  "attackSound": "combat.owlbearSwipe"
}
```

## Shattered Sentinel

Broken does not mean harmless. The familiar guardian’s damaged form can still make a hero lose their footing.

A damaging hit on a surviving target has a 25% chance to inflict Off Balance 1. Uses standard tier scaling; the intact Dawn Sentinel remains a separate creature.

| Difficulty | HP | AC | Attack | Damage | Strikes |
| --- | ---: | ---: | ---: | --- | ---: |
| Basic | 13 | 11 | +3 | d4+1 | 1 |
| Advanced | 29 | 16 | +7 | d4+5 | 1 |
| Expert | 43 | 22 | +10 | d4+9 | 1 |
| Master | 59 | 24 | +12 | d4+11 | 1 |
| Master+ | 78 | 26 | +13 | d4+15 | 1 |

### Authored configuration

```json
{
  "id": "shatteredSentinel",
  "name": "Shattered Sentinel",
  "plateName": "Shard",
  "role": "Broken Dawn guardian",
  "hp": 13,
  "ac": 11,
  "attack": 3,
  "die": 4,
  "bonus": 1,
  "initiative": 9,
  "art": 43,
  "visualScale": 0.8,
  "preserveAspect": true,
  "weaknesses": [
    "Holy",
    "Earth"
  ],
  "resistances": [
    "Void"
  ],
  "attackSound": "combat.stoneFist",
  "attackText": "{actor} swings a cracked stone fist at {target}.",
  "onHitDebuff": {
    "kind": "offBalance",
    "chance": 25,
    "amount": 1
  }
}
```

## Skeletal Warrior

There is no breath to read and little hesitation to exploit. The bones remember their work.

One ordinary strike. Benefits from living Necro Survivor aura.

| Difficulty | HP | AC | Attack | Damage | Strikes |
| --- | ---: | ---: | ---: | --- | ---: |
| Basic | 29 | 13 | +4 | d6+1 | 1 |
| Advanced | 64 | 18 | +8 | d6+5 | 1 |
| Expert | 96 | 24 | +11 | d6+8 | 1 |
| Master | 131 | 26 | +13 | d6+10 | 1 |
| Master+ | 144 | 28 | +14 | d6+13 | 1 |

### Authored configuration

```json
{
  "id": "skeletalWarrior",
  "name": "Skeletal Warrior",
  "plateName": "Skeleton",
  "role": "Undead frontliner",
  "hp": 29,
  "ac": 13,
  "attack": 4,
  "die": 6,
  "bonus": 1,
  "initiative": 10,
  "art": 28,
  "visualScale": 0.85,
  "preserveAspect": true,
  "element": "",
  "attackText": "{actor} lashes out at {target}.",
  "weaknesses": [
    "Holy",
    "Earth"
  ],
  "resistances": [
    "Void"
  ],
  "visualTopPadding": 0.053856,
  "visualBottomPadding": 0.047207,
  "tierDamageMultiplier": 0.85,
  "tierAdjustments": [
    {
      "tier": 4,
      "hp": 24,
      "bonus": -1
    }
  ],
  "attackSound": "combat.skeletonStrike"
}
```

## Stump Crawler

The old stump has moved. This is the moment to revise any assumptions made about the rest of the forest.

**Unsteady footing.** A damaging hit against a surviving target has a 25% base chance to inflict Off Balance with magnitude 2. The shared difficulty bonus for these effects applies.

| Difficulty | HP | AC | Attack | Damage | Strikes |
| --- | ---: | ---: | ---: | --- | ---: |
| Basic | 16 | 15 | +4 | d6+1 | 1 |
| Advanced | 36 | 20 | +8 | d6+5 | 1 |
| Expert | 53 | 26 | +11 | d6+9 | 1 |
| Master | 72 | 28 | +13 | d6+11 | 1 |
| Master+ | 96 | 30 | +14 | d6+15 | 1 |

### Authored configuration

```json
{
  "id": "stumpCrawler",
  "attackText": "{actor} lunges at {target} with snapping jaws.",
  "name": "Stump Crawler",
  "plateName": "Crawler",
  "role": "Woodland creature",
  "hp": 16,
  "ac": 15,
  "attack": 4,
  "die": 6,
  "bonus": 1,
  "initiative": 4,
  "art": 13,
  "visualScale": 1.25,
  "weaknesses": [
    "Fire"
  ],
  "resistances": [
    "Earth"
  ],
  "onHitDebuff": {
    "kind": "offBalance",
    "chance": 25,
    "amount": 2
  },
  "attackSound": "combat.stumpSnap"
}
```

## Thul, the Woodsman

An axe, an old grievance, and a name worth remembering. Thul makes a woodland encounter feel uncomfortably personal.

**Blackwood Cleave.** Thul normally makes two strikes. On rounds 1, 4, 7 and every third round thereafter, Cleave replaces the whole action. Each living hero independently takes d4+1 Physical damage plus half the tier damage bonus, rounded up. Surviving recipients independently risk Sapped: **35%, 40%, 45%, 50% and 55%** from Basic through Master+.

**Black Sap Rising.** At or below half health, Thul gains +1 Attack and +1 ordinary damage, retaining two strikes. He is immune to Polymorph.

**Master+ exception.** Cleave uses d4+2 before its tier contribution. Black Sap Rising begins at or below one-quarter health and gives three strikes; its +1 Attack and +1 damage remain unchanged. The statistics table shows the ordinary profile before this rage.

| Difficulty | HP | AC | Attack | Damage | Strikes |
| --- | ---: | ---: | ---: | --- | ---: |
| Basic | 86 | 15 | +6 | d6+3 | 2 |
| Advanced | 159 | 20 | +9 | d6+6 | 2 |
| Expert | 238 | 26 | +12 | d6+10 | 2 |
| Master | 324 | 28 | +14 | d6+12 | 2 |
| Master+ | 330 | 30 | +15 | d6+16 | 2 |

### Authored configuration

```json
{
  "id": "woodsman",
  "attackText": "{actor} heaves his axe at {target}.",
  "name": "Thul, the Woodsman",
  "plateName": "Thul",
  "hp": 72,
  "ac": 15,
  "attack": 5,
  "die": 6,
  "bonus": 2,
  "initiative": 8,
  "art": 23,
  "role": "Corrupted woodcutter",
  "visualScale": 1.4,
  "weaknesses": [
    "Holy"
  ],
  "resistances": [
    "Void"
  ],
  "rage": {
    "name": "Black Sap Rising",
    "belowHealth": 0.5,
    "attackBonus": 1,
    "damageBonus": 1,
    "attacksPerTurn": 2
  },
  "timedAction": {
    "name": "Blackwood Cleave",
    "round": 1,
    "interval": 3,
    "icon": "enemy.cleave",
    "effect": {
      "kind": "damage",
      "target": "party",
      "die": 4,
      "bonus": 1,
      "element": null,
      "sappedChance": 35,
      "sound": "combat.blackwoodCleave"
    },
    "tierDamageMultiplier": 0.5
  },
  "attacksPerTurn": 2,
  "polymorphImmune": true,
  "tierAdjustments": [
    {
      "tier": 4,
      "attack": -1,
      "bonus": 2,
      "hp": 55,
      "timedAction": {
        "name": "Blackwood Cleave",
        "round": 1,
        "interval": 3,
        "icon": "enemy.cleave",
        "effect": {
          "kind": "damage",
          "target": "party",
          "die": 4,
          "bonus": 2,
          "element": null,
          "sappedChance": 35
        },
        "tierDamageMultiplier": 0.5
      },
      "rage": {
        "name": "Black Sap Rising",
        "belowHealth": 0.25,
        "attackBonus": 1,
        "damageBonus": 1,
        "attacksPerTurn": 3
      }
    },
    {
      "tier": 0,
      "attack": 6,
      "bonus": 3,
      "hp": 86
    }
  ],
  "attackSound": "combat.thulAxe"
}
```

## Treant

The forest has stood still long enough. Roots and branches now have a much more immediate argument to make.

Two strikes. Wild Growth eligible 30% check consumes action: +2 AC/+2 ordinary damage for two subsequent completed personal turns; cooldown 4 rounds, no refresh while active. Uses alternate art; Polymorph remains allowed.

| Difficulty | HP | AC | Attack | Damage | Strikes |
| --- | ---: | ---: | ---: | --- | ---: |
| Basic | 90 | 18 | +7 | d6+2 | 2 |
| Advanced | 143 | 23 | +11 | d6+4 | 2 |
| Expert | 179 | 29 | +13 | d6+5 | 2 |
| Master | 212 | 31 | +15 | d6+6 | 2 |
| Master+ | 240 | 33 | +16 | d6+8 | 2 |

### Authored configuration

```json
{
  "id": "hostileTreant",
  "name": "Treant",
  "plateName": "Treant",
  "role": "Treant",
  "hp": 90,
  "ac": 18,
  "attack": 7,
  "die": 6,
  "bonus": 2,
  "initiative": 6,
  "art": 39,
  "visualScale": 1.65,
  "preserveAspect": true,
  "attackText": "{actor} strikes at {target}.",
  "weaknesses": [
    "Fire"
  ],
  "resistances": [
    "Earth"
  ],
  "attacksPerTurn": 2,
  "tierDamageMultiplier": 0.5,
  "growth": {
    "name": "Wild Growth",
    "artwork": "JournalArt/Adventures/BurningCity/Creatures/TreantWildGrowth",
    "armor": 2,
    "damage": 2,
    "duration": 2,
    "chance": 30,
    "cooldown": 4
  },
  "tierAdjustments": [
    {
      "tier": 1,
      "hp": 65
    },
    {
      "tier": 2,
      "hp": 54,
      "attack": 6,
      "bonus": 1
    },
    {
      "tier": 3,
      "hp": 47,
      "attack": 6,
      "bonus": 1
    },
    {
      "tier": 4,
      "hp": 40,
      "attack": 6,
      "bonus": 1
    }
  ],
  "keepInCombatFrame": true,
  "registeredCombatArt": true,
  "attackSound": "combat.treantStrike"
}
```

## Troll

A heavy silhouette in a narrow place. The Troll’s resilience is an excellent reason to take preparation seriously.

Regenerates 3 + floor(tier damage/5) at own turn start, once/round; cannot revive.

| Difficulty | HP | AC | Attack | Damage | Strikes |
| --- | ---: | ---: | ---: | --- | ---: |
| Basic | 38 | 13 | +4 | d8+2 | 1 |
| Advanced | 84 | 18 | +8 | d8+6 | 1 |
| Expert | 126 | 24 | +11 | d8+10 | 1 |
| Master | 171 | 26 | +13 | d8+12 | 1 |
| Master+ | 228 | 28 | +14 | d8+16 | 1 |

### Authored configuration

```json
{
  "id": "dungeonTroll",
  "name": "Troll",
  "plateName": "Troll",
  "role": "Regenerating brute",
  "hp": 38,
  "ac": 13,
  "attack": 4,
  "die": 8,
  "bonus": 2,
  "initiative": 5,
  "art": 25,
  "visualScale": 1.48,
  "preserveAspect": true,
  "element": "",
  "attackText": "{actor} lashes out at {target}.",
  "regeneration": 3,
  "weaknesses": [
    "Fire"
  ],
  "resistances": [
    "Earth"
  ],
  "visualTopPadding": 0.015576,
  "visualBottomPadding": 0.015576,
  "attackSound": "combat.trollSwing"
}
```

## Veyr, the Sealbound

Veyr bears a title that sounds like a warning. The seal is not the only thing holding the Company’s attention.

Dreadbell replaces first eligible action from round 2, once/fight: independent d6+2 Void to living party; Defended halves floor/minimum 1 before Void defense. May cast late after a skip. Immune to Polymorph.

| Difficulty | HP | AC | Attack | Damage | Strikes |
| --- | ---: | ---: | ---: | --- | ---: |
| Basic | 68 | 16 | +6 | d8+3 | 1 |
| Advanced | 150 | 21 | +10 | d8+7 | 1 |
| Expert | 251 | 27 | +13 | d8+9 | 2 |
| Master | 306 | 29 | +15 | d8+18 | 2 |
| Master+ | 408 | 31 | +16 | d8+30 | 2 |

### Authored configuration

```json
{
  "id": "bellkeeper",
  "attackText": "{actor} lashes out with a pulse of dark magic.",
  "name": "Veyr, the Sealbound",
  "plateName": "Veyr",
  "role": "Boss",
  "hp": 68,
  "ac": 16,
  "attack": 6,
  "die": 8,
  "bonus": 3,
  "initiative": 16,
  "art": 7,
  "ability": "dreadBell",
  "visualScale": 1.5,
  "weaknesses": [],
  "resistances": [
    "Fire",
    "Frost",
    "Void",
    "Holy",
    "Wind",
    "Earth"
  ],
  "element": "Void",
  "polymorphImmune": true,
  "tierAdjustments": [
    {
      "tier": 4,
      "attack": -1,
      "bonus": 16,
      "attacksPerTurn": 2
    },
    {
      "tier": 3,
      "attack": -1,
      "bonus": 8,
      "attacksPerTurn": 2
    },
    {
      "tier": 2,
      "attack": -1,
      "bonus": 1,
      "attacksPerTurn": 2,
      "hp": 76
    }
  ],
  "attackSound": "combat.darkPulse"
}
```

## The Ward Gaoler

A keeper of confinement whose work does not require stone walls. Freedom of movement should not be taken for granted.

Two strikes. Opening round1 Lockdown once: independent 40% Locked for two personal turns per living hero before control proc increment, no elemental defense/damage. Immune to Polymorph.

| Difficulty | HP | AC | Attack | Damage | Strikes |
| --- | ---: | ---: | ---: | --- | ---: |
| Basic | 56 | 14 | +5 | d6+2 | 2 |
| Advanced | 106 | 19 | +8 | d6+6 | 2 |
| Expert | 159 | 25 | +11 | d6+10 | 2 |
| Master | 216 | 27 | +13 | d6+12 | 2 |
| Master+ | 288 | 29 | +14 | d6+16 | 2 |

### Authored configuration

```json
{
  "id": "wardGaoler",
  "attackText": "{actor} swings a heavy iron arm at {target}.",
  "name": "The Ward Gaoler",
  "plateName": "Gaoler",
  "hp": 48,
  "ac": 14,
  "attack": 4,
  "die": 6,
  "bonus": 2,
  "initiative": 12,
  "art": 22,
  "role": "Containment construct",
  "visualScale": 1.8,
  "timedAction": {
    "name": "Lockdown",
    "round": 1,
    "interval": 0,
    "icon": "enemy.lockdown",
    "effect": {
      "sound": "combat.lockdown",
      "kind": "locked",
      "lockTurns": 2,
      "target": "party",
      "die": 0,
      "bonus": 40,
      "element": null
    }
  },
  "weaknesses": [
    "Holy",
    "Earth"
  ],
  "resistances": [
    "Void"
  ],
  "attacksPerTurn": 2,
  "polymorphImmune": true,
  "tierAdjustments": [
    {
      "tier": 0,
      "attack": 5,
      "bonus": 2,
      "hp": 56
    }
  ],
  "attackSound": "combat.ironArm"
}
```

## Ward Mite

A small fault in the Company’s plans. What it lacks in size, it makes up for in the inconvenience of meeting it.

**Faultline Pulse.** On rounds 2, 5, 8 and every third round thereafter, the pulse replaces the action and damages each living hero independently. Basic uses d2 Earth; Advanced adds its full tier damage bonus. Explicit higher-tier profiles replace that scaling: **Expert d2+2, Master d2+3, Master+ d2+6**.

| Difficulty | HP | AC | Attack | Damage | Strikes |
| --- | ---: | ---: | ---: | --- | ---: |
| Basic | 19 | 14 | +4 | d4+1 | 1 |
| Advanced | 36 | 19 | +7 | d4+5 | 1 |
| Expert | 53 | 25 | +10 | d4+9 | 1 |
| Master | 72 | 27 | +12 | d4+11 | 1 |
| Master+ | 96 | 29 | +13 | d4+15 | 1 |

### Authored configuration

```json
{
  "id": "wardMite",
  "attackText": "{actor} snaps its brass mandibles at {target}.",
  "name": "Ward Mite",
  "plateName": "Mite",
  "hp": 16,
  "ac": 14,
  "attack": 3,
  "die": 4,
  "bonus": 1,
  "initiative": 17,
  "art": 20,
  "role": "Brass ward construct",
  "visualScale": 0.65,
  "weaknesses": [
    "Void",
    "Frost"
  ],
  "resistances": [
    "Earth"
  ],
  "timedAction": {
    "name": "Faultline Pulse",
    "round": 2,
    "interval": 3,
    "icon": "enemy.faultline",
    "effect": {
      "kind": "damage",
      "target": "party",
      "die": 2,
      "bonus": 0,
      "element": "Earth",
      "sound": "combat.faultlinePulse"
    }
  },
  "tierAdjustments": [
    {
      "tier": 2,
      "attack": -1,
      "bonus": -1,
      "timedAction": {
        "name": "Faultline Pulse",
        "round": 2,
        "interval": 3,
        "icon": "enemy.faultline",
        "effect": {
          "kind": "damage",
          "target": "party",
          "die": 2,
          "bonus": 2,
          "element": "Earth"
        },
        "tierDamageMultiplier": 0
      }
    },
    {
      "tier": 3,
      "attack": -1,
      "bonus": -1,
      "timedAction": {
        "name": "Faultline Pulse",
        "round": 2,
        "interval": 3,
        "icon": "enemy.faultline",
        "effect": {
          "kind": "damage",
          "target": "party",
          "die": 2,
          "bonus": 3,
          "element": "Earth"
        },
        "tierDamageMultiplier": 0
      }
    },
    {
      "tier": 4,
      "attack": -1,
      "bonus": -1,
      "timedAction": {
        "name": "Faultline Pulse",
        "round": 2,
        "interval": 3,
        "icon": "enemy.faultline",
        "effect": {
          "kind": "damage",
          "target": "party",
          "die": 2,
          "bonus": 6,
          "element": "Earth"
        },
        "tierDamageMultiplier": 0
      }
    },
    {
      "tier": 0,
      "attack": 4,
      "bonus": 1,
      "hp": 19
    }
  ],
  "attackSound": "combat.brassMandibles"
}
```

## Water Weird

Water rarely keeps its shape for long. This shape has chosen to remain, and to take an interest in the Company.

Physical resistance, Constrict, Immune to Polymorph. Damaging surviving strike: 80% capture if more than one living hero. One captive loses actions until next captor action: d4+2 separate physical damage, then release and normal strike/capture attempt. Critical hit on captor, captor death/disabled turn or last-survivor state releases. Constrict tick gets no additional tier damage.

| Difficulty | HP | AC | Attack | Damage | Strikes |
| --- | ---: | ---: | ---: | --- | ---: |
| Basic | 180 | 11 | +10 | d8+3 | 1 |
| Advanced | 297 | 16 | +14 | d8+5 | 1 |
| Expert | 347 | 22 | +15 | d8+6 | 1 |
| Master | 405 | 24 | +17 | d8+7 | 1 |
| Master+ | 468 | 26 | +18 | d8+9 | 1 |

### Authored configuration

```json
{
  "id": "waterWeird",
  "name": "Water Weird",
  "plateName": "Weird",
  "role": "Water Weird",
  "hp": 180,
  "ac": 11,
  "attack": 10,
  "die": 8,
  "bonus": 3,
  "initiative": 10,
  "art": 38,
  "visualScale": 1.75,
  "preserveAspect": true,
  "attackText": "{actor} strikes at {target}.",
  "weaknesses": [
    "Frost",
    "Earth"
  ],
  "resistances": [
    "Fire"
  ],
  "ability": "constrict",
  "physicalResistance": true,
  "polymorphImmune": true,
  "distinctTargets": true,
  "tierDamageMultiplier": 0.5,
  "tierAdjustments": [
    {
      "tier": 1,
      "hp": 135
    },
    {
      "tier": 2,
      "hp": 105,
      "attack": 8,
      "bonus": 2
    },
    {
      "tier": 3,
      "hp": 90,
      "attack": 8,
      "bonus": 2
    },
    {
      "tier": 4,
      "hp": 78,
      "attack": 8,
      "bonus": 2
    }
  ],
  "keepInCombatFrame": true,
  "registeredCombatArt": true,
  "attackSound": "combat.waterLash"
}
```

## White Dragon

Pale against a cold horizon, the dragon makes the surrounding wilderness feel suddenly smaller. The Tundra’s current boss remains a development placement.

Two strikes, avoiding the previous random target when another is eligible. Frost Breath replaces the whole action on rounds 3/6/9 and every third round thereafter; next-round telegraph. Each living hero independently receives d6+3 Frost plus ceil(tier damage × 0.5), ordinary elemental/Defended mitigation, then a 30% Freeze check if still alive, reduced to 10% with Frost resistance. Freeze odds stay fixed at every tier. A skipped scheduled action loses that use rather than casting late. Immune to Polymorph.

| Difficulty | HP | AC | Attack | Damage | Strikes |
| --- | ---: | ---: | ---: | --- | ---: |
| Basic | 240 | 17 | +8 | d8+3 | 2 |
| Advanced | 374 | 22 | +12 | d8+5 | 2 |
| Expert | 429 | 28 | +15 | d8+7 | 2 |
| Master | 495 | 30 | +17 | d8+8 | 2 |
| Master+ | 570 | 32 | +18 | d8+10 | 2 |

### Authored configuration

```json
{
  "id": "whiteDragon",
  "name": "White Dragon",
  "plateName": "Dragon",
  "role": "Frost dragon",
  "hp": 240,
  "ac": 17,
  "attack": 8,
  "die": 8,
  "bonus": 3,
  "initiative": 12,
  "art": 42,
  "visualScale": 1.95,
  "preserveAspect": true,
  "registeredCombatArt": true,
  "keepInCombatFrame": true,
  "attackKind": "melee",
  "attackText": "{actor} snaps its jaws and sweeps its claws toward {target}.",
  "weaknesses": [
    "Fire"
  ],
  "resistances": [
    "Frost"
  ],
  "attacksPerTurn": 2,
  "distinctTargets": true,
  "polymorphImmune": true,
  "tierDamageMultiplier": 0.5,
  "timedAction": {
    "name": "Frost Breath",
    "round": 3,
    "interval": 3,
    "tierDamageMultiplier": 0.5,
    "icon": "spell.blizzard",
    "telegraph": "The White Dragon draws breath. Frost gathers between its teeth.",
    "effect": {
      "kind": "damage",
      "target": "party",
      "element": "Frost",
      "die": 6,
      "bonus": 3,
      "freezeChance": 30,
      "resistedFreezeChance": 10,
      "resistanceMitigatesFreeze": true,
      "fixedFreezeChance": true,
      "sound": "combat.frostBreath"
    },
    "telegraphSound": "combat.frostInhale"
  },
  "tierAdjustments": [
    {
      "tier": 1,
      "hp": 170
    },
    {
      "tier": 2,
      "hp": 130
    },
    {
      "tier": 3,
      "hp": 110
    },
    {
      "tier": 4,
      "hp": 95
    }
  ],
  "attackSound": "combat.dragonClaw"
}
```

## Woodland raider

The Woodland raider knows the road well enough to make travel somebody else’s problem.

Camouflage: eligible-action 30%, +3 AC until next two personal turns begin, minimum 3 rounds between uses, no refresh while active. Consumes full action, yielding to skip/support priority.

| Difficulty | HP | AC | Attack | Damage | Strikes |
| --- | ---: | ---: | ---: | --- | ---: |
| Basic | 13 | 12 | +3 | d6+1 | 1 |
| Advanced | 29 | 17 | +7 | d6+5 | 1 |
| Expert | 43 | 23 | +10 | d6+9 | 1 |
| Master | 59 | 25 | +12 | d6+11 | 1 |
| Master+ | 78 | 27 | +13 | d6+15 | 1 |

### Authored configuration

```json
{
  "id": "raider",
  "attackText": "{actor} swings at {target} with a rough battle cry.",
  "name": "Woodland raider",
  "plateName": "Raider",
  "role": "Outcast",
  "hp": 13,
  "ac": 12,
  "attack": 3,
  "die": 6,
  "bonus": 1,
  "initiative": 13,
  "art": 5,
  "visualScale": 1,
  "weaknesses": [
    "Void"
  ],
  "resistances": [
    "Frost"
  ],
  "element": "Frost",
  "camouflage": {
    "name": "Camouflage",
    "armor": 3,
    "duration": 2,
    "chance": 30,
    "cooldown": 3,
    "compactName": "CAMO"
  },
  "attackSound": "combat.raiderSwing"
}
```

## Wormface

The name is an adequate first warning. The rest of the warning is best learned from this page, at a safe distance.

**Restorative magic.** Wormface has 3 mana. Healing consumes the entire action and costs 1 mana. It first chooses the eligible other ally with the lowest fraction of remaining HP, provided that ally is missing at least 2 HP and is strictly below 80% health. If no such ally qualifies, Wormface can heal itself when below 50% health. Otherwise it attacks.

The heal restores the smaller of the target’s missing HP and **the greater of 6 or 18% of maximum HP, rounded up**. It also cures Poison and Sapped.

| Difficulty | HP | AC | Attack | Damage | Strikes |
| --- | ---: | ---: | ---: | --- | ---: |
| Basic | 18 | 12 | +2 | d4+0 | 1 |
| Advanced | 40 | 17 | +6 | d4+4 | 1 |
| Expert | 60 | 23 | +9 | d4+8 | 1 |
| Master | 81 | 25 | +11 | d4+10 | 1 |
| Master+ | 108 | 27 | +12 | d4+14 | 1 |

### Authored configuration

```json
{
  "id": "wormface",
  "attackText": "{actor} snaps at {target} with its writhing mouth.",
  "name": "Wormface",
  "plateName": "Worm",
  "role": "Support",
  "hp": 18,
  "ac": 12,
  "attack": 2,
  "die": 4,
  "bonus": 0,
  "initiative": 12,
  "art": 10,
  "visualScale": 1.25,
  "mp": 3,
  "support": {
    "type": "heal",
    "targeting": "lowestHpPercentAlly",
    "cost": 1,
    "die": 0,
    "bonus": 3,
    "minimumMissing": 2,
    "threshold": 0.8,
    "selfThreshold": 0.5,
    "multiplier": 2,
    "minimumMaxHpFraction": 0.18,
    "sound": "combat.wormHeal"
  },
  "weaknesses": [
    "Holy",
    "Frost"
  ],
  "resistances": [
    "Void"
  ],
  "element": "",
  "attackSound": "combat.wormfaceSnap"
}
```
