Westmarches — Northern Skies.

⚠ {{ persistError }}
Style Editor
{{ headerSession }}
Welcome, player. Please sign in.
Welcome back, {{ arrivalWho }} What would you like to do?

Character Sheet

No character loaded.

{{ charName }}

{{ charLine }}
{{ c.name }} {{ c.durLabel }}
{{ c.durValue }}
{{ tabLabel }}
Headshot

Select Character

{{ r.name }} {{ r.line }}
{{ adminRosterNote }}
{{ a.name }} {{ a.line }}
Saved characters live in this browser. The DM's roster will replace this list in the real build. {{ rosterScopeNote }}
{{ recordNote }}
Residual Data {{ orphanNote }}
{{ o.name }} {{ o.meta }}
{{ tabName }} — not designed yet
Combat is the reference tab. This one is next in the queue.

Name & Standing

XP
Level
{{ charLevel }}
{{ toNextLabel }}
{{ xpNeeded }}
{{ renameNote }}

Portrait & Vitals

Portrait Picker

Upload an Image
or drop it on the portrait frame · 2:3 · jpg or png
Find an Image
{{ searchBtnLabel }} -or-
Choose a search engine first.
AI Prompt — Manual Edit the prompt below, or paste a new one
-or- Open ChatGPT Images
{{ genOverlayTitle }} {{ genOverlaySub }}
{{ cropReadout }}
{{ portraitRisk }}
{{ genMetaText }}
{{ vitalsNote }}

Skin Tone

{{ g.label }}

Persona

visible to the DM · woven into the chronicle

Guild & Allegiance

{{ guildNote }}

Combat

{{ currentWeaponNote }}
-or-
Round {{ roundNo }}
Choose Melee or Ranged for this turn {{ commitNote }}
{{ hpCur }} HP
HP Max
{{ deathLabel }}
AC {{ acTotal }}
BtH {{ hdrBth }}
Dmg {{ currentWeaponDmg }}
{{ rangeBand }}
{{ rangeCur }} FT
Distance
{{ moveRuleNote }}
Jog x 2, Run x 4
Target Status
{{ sp.name }}

Combat Stats

Melee {{ meleeWpnLabel }}
{{ meleeAtkTotal }}
STR {{ strScoreTxt }}
Cursed Attack
Bonus
{{ atkLoseDexBy }}
Ranged {{ rangedWpnLabel }}
{{ rangedAtkTotal }}
DEX {{ dexScoreTxt }}
{{ ammoNote }} {{ chargeNote }} {{ chargeNote }}
Roll
d20
+
Attr Mod
STR {{ strModTxt }} melee
-or-
DEX {{ dexModTxt }} ranged
+
Level BtH
{{ lvlBonusTxt }}
{{ lvlBonusSrc }}
Attack Modifier Math
AC Total Cursed
{{ acTotal }}
{{ acNote }}
{{ acUnboxed }} + + + + + + +
Attributes & Saves
Attr Score Mod Save CB Saves Against
{{ a.name }} {{ a.val }} {{ a.mod }} {{ a.save }} {{ a.cb }} {{ a.saves }}
d20 + save ≥ CB · save = mod + level · ● prime: CB 12, else 18

Combat Maneuvers

PHB pp. 245–246 · any class {{ maneuverSummary }}
{{ mv.name }}
{{ mv.effect }} {{ mv.applies }} {{ mv.why }}

Active Conditions

toggles feed the header chips · attack & AC totals
Buffs
Debuffs
Ready-to-Hand {{ readyNote }}
{{ grp.title }}

Confirm Use

{{ readyConfirmName }}
{{ readyConfirmLine }}

{{ wcTitle }}

{{ wcNote }}
Eldritch Blast {{ wcBlastLeft }} {{ wcBlastDie }}
Touch Attack — {{ wcTouchLeft }}
{{ t.label }}
Invocations — {{ wcInvLeft }}
{{ iv.name }}
nothing learned yet
Spells {{ wcPickNote }}
{{ g.label }} {{ g.slotLabel }}
no slots left today

{{ howToTitle }}

placeholder — not built yet

This tab will gather the rules that gate play for {{ howToClass }} in one place — the things the rest of the sheet enforces silently or not at all, so a player can see why a button is closed to them.

  • Preparation and rest requirements — how long, how often, what interrupts them.
  • The checks this class lives on, and the attribute each is read against.
  • Limits: what it may wear, carry, cast, or attempt, and at which level each opens.
  • Where a house rule overrides the book, marked as a house rule.

Nothing is written here yet on purpose: every line will carry its book and page, or say plainly that it is a house rule. Queued in PROGRESS.md.

Plan skeleton — reminder

HOW TO PLAY A [CLASS] — build plan

0. SOURCE FIRST
   Every line carries book + page, or is labelled HOUSE. Nothing unsourced ships
   in the same visual class as a sourced rule. Waiting on the full PHB + M&M + CKG
   parse (offered 2026-08-29) before any line is written.

1. THE DAILY GATES
   - Rest: how long, what counts as restful, what interrupts and by how much.
   - Preparation: time per spell/ability, what may be left open, what may not be
     swapped once used.
   - What a cast/use in the hours before rest costs the next day.

2. THE CHECKS THIS CLASS LIVES ON
   - Each class ability -> its attribute, its CL, who sets the difficulty.
   - Which checks the sheet already rolls, and which are the CK's.

3. THE LIMITS
   - Armour, weapons, worn magic items, encumbrance thresholds.
   - Spell levels open at this level; slots; bonus slots from the prime.
   - Level-gated abilities: what unlocks when, and what is still closed.

4. THE HOUSE LAYER
   - Northern Skies overrides, each marked, each next to the book rule it replaces.
   - Nat 20 / nat 1 casting, XP for recovered items, negative-HP healing.

5. WIRING
   - Read from the same engine the tabs use (magic-engine.js and its successors),
     so a rule shown here and a rule enforced there cannot drift.
   - Per class, driven by the character's own class + level: no static text.

6. WHAT THIS TAB IS NOT
   - Not book prose. Not a rules reprint. Summaries, limits and pointers only.

Playing the part

prompts, not rules — none of this is from a book

Answer three or four of these and {{ howToClass }} stops being a stat block. None of them bind the character — they are only there to give the table something to play against.

Why this life
  • Chosen, inherited, or fallen into? Somebody taught them — who, and are they still owed for it?
  • What did the training cost: years, money, a name they no longer use, a person they left?
  • Is the calling still the reason they get up, or has it become the only trade they know?
What they want out of the Marches
  • A concrete goal with a price on it — a debt, a passage home, a workshop, a title, a grave to buy back.
  • Something in the north they are looking for specifically. It can be small; it should be findable.
  • One thing they would refuse gold for, and one thing they would take gold to do that they shouldn't.
Under pressure
  • First instinct when a plan collapses: take charge, go quiet, go first, or get everyone out?
  • What they do with fear — hide it, name it, or turn it into speed?
  • The line they won't cross, and the circumstance under which they would.
With the party
  • Which one of them do they trust with their life but not their coin — and why that one?
  • What do they contribute when their class does nothing useful: camp, talk, memory, nerve?
  • Something they are visibly bad at, and let the others see.
Texture
  • A habit before danger and a habit after it — the second one is usually the memorable one.
  • One carried object with no combat value they would go back into a burning building for.
  • How they speak about their own skill: understate, boast, or refuse to discuss it.
  • What they were doing the day before the campaign started.

Written by me as table prompts — no book, no page, nothing to cite. When the class-specific rules land above, these stay separate so the sourced and the invented never share a card.

Sheet saved to the chronicle
{{ hoverTooltip.heading }}
{{ hoverTooltip.verdict }}
"{{ hoverTooltip.text }}"
Captured: {{ hoverTooltip.captured }}
font: {{ hoverTooltip.font }}
letter-spacing: {{ hoverTooltip.ls }}
text-transform: {{ hoverTooltip.tt }}
color: {{ hoverTooltip.color }}
background: {{ hoverTooltip.bg }}{{ hoverTooltip.bgNote }}
data-class: {{ hoverTooltip.dataClass }}
data-class-keep: {{ hoverTooltip.keepNote }}
owns text: {{ hoverTooltip.textNote }}
box: {{ hoverTooltip.box }}
inline style: {{ hoverTooltip.inlineLen }}
{{ hoverTooltip.path }}
family: {{ hoverTooltip.classDefFamily }}
weight: {{ hoverTooltip.classDefWeight }}
size: {{ hoverTooltip.classDefSize }}
color: {{ hoverTooltip.classDefColor }}
extra: {{ hoverTooltip.classDefExtra }}
{{ da.name }}: {{ da.value }}
(no other data-* attributes)
Scale 5 10 20 50
Highlight class on page
You have an extra attack! {{ extraAttackFeat }} · take it and your actions re-arm for another turn in this same round — offered once per combat.
Expired {{ condExpiredText }}
{{ q.question }} {{ q.detail }}
Mismatched Eyes

{{ dossierTitle }}

{{ dossierStanding }}

Save Configuration

Add Condition

{{ condPickCount }}
{{ condPickHint }}
Buffs
Debuffs
{{ tipTitle }} {{ tipBody }}