Skip to content

Managing the Compendium Monsters

Brioche Masquée edited this page Aug 4, 2026 · 1 revision

Monsters

Create one

In the Compendium section's title bar, click Create Monster. A prompt asks for a name (pre-filled with "New monster") — confirm it, and MPX creates monsters/<slug>.json and opens it.

Fields

{
  "id": "",
  "name": "Tide Wraith",
  "slug": "tide-wraith",
  "attributes": { "measurement": "imperial", "ruleset": "5.5e" },
  "data": {
    "size": "M",
    "type": "undead",
    "alignment": "CE",
    "ac": "13",
    "hp": "45",
    "speed": { "walk": 30, "swim": 40 },
    "abilities": { "str": 14, "dex": 16, "con": 13, "int": 8, "wis": 12, "cha": 15 },
    "savingThrows": { "dex": 5 },
    "skills": { "stealth": 5 },
    "damageImmunities": ["cold", "necrotic", "poison"],
    "damageResistances": ["acid", "fire"],
    "senses": { "darkvision": 60 },
    "passivePerception": 11,
    "languages": ["Common", "Aquan"],
    "cr": "2",
    "initiativeBonus": 3,
    "proficiencyBonus": 2,
    "traits": [{ "name": "Waterbound", "text": "" }],
    "actions": [{ "name": "Chilling Touch", "text": "" }]
  },
  "descr": "The restless dead of sailors lost to the sea.",
  "image": "monsters/tide-wraith.png",
  "token": "monsters/tide-wraith-token.png",
  "sources": [{ "name": "The Sunken Lighthouse", "page": 8 }],
  "tags": ["undead", "aquatic"]
}

Only id, name, and slug are actually required — everything else is written empty and filled in as needed. id is generated for you; don't change it.

Top-level fields

Same as items (descr, sources, tags), plus:

Field Format Purpose
image monsters/<file> Full-width illustration.
token monsters/<file> Separate circular map-token portrait.

data — identity

Field Format Purpose
size One of: (empty), T, S, M, L, H, G, C Tiny → Colossal.
type One of: (empty), aberration, beast, celestial, construct, dragon, elemental, fey, fiend, giant, humanoid, monstrosity, ooze, plant, undead
typeDetail Text E.g. "shapechanger".
alignment One of: (empty), LG, NG, CG, LN, NN, CN, LE, NE, CE, UU UU is unaligned.
environments Array, e.g. ["coastal"] Free text, with a suggested list while typing. Not shown on the rendered card.

data — combat stats

Field Format Purpose
ac / hp Text Free text, so you can add detail (e.g. "13 (natural armor)").
speed { walk, burrow, climb, fly, hover, swim, other } All in feet except hover (true/false) and other (text). Omit what doesn't apply.
abilities { str, dex, con, int, wis, cha } Each defaults to 10 if missing.
savingThrows { ability: bonus } Only list a save when it differs from the plain ability modifier — that's what makes it show up on the card at all.
skills { skillName: bonus } Sparse map — only proficient skills. Skill names: acrobatics, animalHandling, arcana, athletics, deception, history, insight, intimidation, investigation, medicine, nature, perception, performance, persuasion, religion, sleightOfHand, stealth, survival.
damageVulnerabilities / damageResistances / damageImmunities Arrays, from: acid, bludgeoning, cold, fire, force, lightning, necrotic, piercing, poison, psychic, radiant, slashing, thunder
conditionImmunities Array Free text — not validated against a fixed list.
senses { blindsight, darkvision, tremorsense, truesight, other } In feet, except other (text).
passivePerception Number
languages Array, e.g. ["Common", "Telepathy 60 ft."] Free text, with a suggested list while typing.
cr One of: 0, 1/8, 1/4, 1/2, or any integer 130 Challenge rating — also drives the XP value shown on the card.
initiativeBonus / proficiencyBonus Number

data — features

Five lists, each an array of { name, text, usage? }: traits, actions, bonusActions, reactions, legendaryActions. usage is optional free text (e.g. "Recharge 5–6").

Inline authoring

Type mpx-monster and accept the snippet suggestion for the full template. Same flat shape as items/spells.

Four show* toggles: showImage, showToken, showSources, showTags (project defaults: mpx.defaultShowMonsterImage, mpx.defaultShowMonsterToken, mpx.defaultShowMonsterSources, mpx.defaultShowMonsterTags).

A color and a two-column layout are set as a class on the fence itself, not a YAML field:

```monster {.teal .two-column}
name: "New Monster"
…
```

One of blue, green, red, yellow, orange, gray, purple, teal, magenta, signature (the theme's default). .two-column is never applied automatically — add it yourself for a longer stat block.

Next step

That's the whole Compendium. Move on to Snippets to speed up writing all of this.

Clone this wiki locally