-
Notifications
You must be signed in to change notification settings - Fork 0
Managing the Compendium Monsters
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.
{
"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.
Same as items (descr, sources, tags), plus:
| Field | Format | Purpose |
|---|---|---|
image |
monsters/<file> |
Full-width illustration. |
token |
monsters/<file> |
Separate circular map-token portrait. |
| 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. |
| 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 1–30
|
Challenge rating — also drives the XP value shown on the card. |
initiativeBonus / proficiencyBonus
|
Number |
Five lists, each an array of { name, text, usage? }: traits, actions, bonusActions, reactions, legendaryActions. usage is optional free text (e.g. "Recharge 5–6").
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.
That's the whole Compendium. Move on to Snippets to speed up writing all of this.