Skip to content

Example sheet: a D&D 5e ranger

A whole character built from cards, to copy and change. Nothing here is built into the plugin: the ability modifiers, proficiency bonus, armor class, skills, hit dice and death saves are all written as values, rolls and other components, so you can change any rule or use another game's.

Put every card in notes with the same character property, such as character: Aria.

Character

Level, proficiency, armor class and initiative. A long rest restores hit points, takes away a level of exhaustion and clears death saves.

```dicelist
type: character
name: Aria
picture: aria.png
fields:
  Class: Ranger
  Speed: 30 ft
values:
  - { name: level, value: 5 }
  - { name: proficiency, value: "2 + floor(({{level}} - 1) / 4)" }
  - { name: Armor class, value: "12 + {{dex mod}}", categories: [armor class] }
  - { name: Passive Perception, value: "10 + {{perception}}" }
rolls:
  - { name: Initiative, dice: "1d20 + {{dex mod}}", categories: [initiative, check] }
health:
  max: 44
  current: 44
on:
  - { event: long rest, target: health, action: restore }
```

Ability scores

Each score and its modifier are values, hidden since the tiles show them. Each ability is a check with its save nested inside, so layout: { rolls: { columns: 3 } } shows six tiles, in two rows of three: click a tile for the check, or its Save button for the save. Rangers are proficient in Strength and Dexterity saves.

```dicelist
name: Ability scores
layout: { rolls: { columns: 3 } }
values:
  - { name: str, value: 12, hidden: true }
  - { name: dex, value: 17, hidden: true }
  - { name: con, value: 14, hidden: true }
  - { name: int, value: 10, hidden: true }
  - { name: wis, value: 15, hidden: true }
  - { name: cha, value: 8, hidden: true }
  - { name: str mod, value: "({{str}} - 10) / 2", hidden: true }
  - { name: dex mod, value: "({{dex}} - 10) / 2", hidden: true }
  - { name: con mod, value: "({{con}} - 10) / 2", hidden: true }
  - { name: int mod, value: "({{int}} - 10) / 2", hidden: true }
  - { name: wis mod, value: "({{wis}} - 10) / 2", hidden: true }
  - { name: cha mod, value: "({{cha}} - 10) / 2", hidden: true }
rolls:
  - name: STR
    value: "{{str}}"
    dice: 1d20 + {{str mod}}
    categories: [check, strength]
    rolls:
      - { name: Save, dice: "1d20 + {{str mod}} + {{proficiency}}", categories: [save, strength] }
  - name: DEX
    value: "{{dex}}"
    dice: 1d20 + {{dex mod}}
    categories: [check, dexterity]
    rolls:
      - { name: Save, dice: "1d20 + {{dex mod}} + {{proficiency}}", categories: [save, dexterity] }
  - name: CON
    value: "{{con}}"
    dice: 1d20 + {{con mod}}
    categories: [check, constitution]
    rolls:
      - { name: Save, dice: "1d20 + {{con mod}}", categories: [save, constitution] }
  - name: INT
    value: "{{int}}"
    dice: 1d20 + {{int mod}}
    categories: [check, intelligence]
    rolls:
      - { name: Save, dice: "1d20 + {{int mod}}", categories: [save, intelligence] }
  - name: WIS
    value: "{{wis}}"
    dice: 1d20 + {{wis mod}}
    categories: [check, wisdom]
    rolls:
      - { name: Save, dice: "1d20 + {{wis mod}}", categories: [save, wisdom] }
  - name: CHA
    value: "{{cha}}"
    dice: 1d20 + {{cha mod}}
    categories: [check, charisma]
    rolls:
      - { name: Save, dice: "1d20 + {{cha mod}}", categories: [save, charisma] }
```

Dividing rounds down, so ({{dex}} - 10) / 2 is the ability modifier.

Skills

A roll per skill: the ability modifier, plus proficiency where proficient. For expertise, add 2 * {{proficiency}} instead. Perception is also a value, so Passive Perception can use it.

```dicelist
name: Skills
layout: { rolls: grid }
values:
  - { name: perception, value: "{{wis mod}} + {{proficiency}}" }
rolls:
  - { name: Acrobatics, dice: "1d20 + {{dex mod}}", categories: [check, skill, acrobatics] }
  - { name: Animal Handling, dice: "1d20 + {{wis mod}}", categories: [check, skill, animal handling] }
  - { name: Arcana, dice: "1d20 + {{int mod}}", categories: [check, skill, arcana] }
  - { name: Athletics, dice: "1d20 + {{str mod}}", categories: [check, skill, athletics] }
  - { name: Deception, dice: "1d20 + {{cha mod}}", categories: [check, skill, deception] }
  - { name: History, dice: "1d20 + {{int mod}}", categories: [check, skill, history] }
  - { name: Insight, dice: "1d20 + {{wis mod}}", categories: [check, skill, insight] }
  - { name: Intimidation, dice: "1d20 + {{cha mod}}", categories: [check, skill, intimidation] }
  - { name: Investigation, dice: "1d20 + {{int mod}}", categories: [check, skill, investigation] }
  - { name: Medicine, dice: "1d20 + {{wis mod}}", categories: [check, skill, medicine] }
  - { name: Nature, dice: "1d20 + {{int mod}}", categories: [check, skill, nature] }
  - { name: Perception, dice: "1d20 + {{perception}}", categories: [check, skill, perception] }
  - { name: Performance, dice: "1d20 + {{cha mod}}", categories: [check, skill, performance] }
  - { name: Persuasion, dice: "1d20 + {{cha mod}}", categories: [check, skill, persuasion] }
  - { name: Religion, dice: "1d20 + {{int mod}}", categories: [check, skill, religion] }
  - { name: Sleight of Hand, dice: "1d20 + {{dex mod}}", categories: [check, skill, sleight of hand] }
  - { name: Stealth, dice: "1d20 + {{dex mod}} + {{proficiency}}", categories: [check, skill, stealth] }
  - { name: Survival, dice: "1d20 + {{wis mod}} + {{proficiency}}", categories: [check, skill, survival] }
```

Proficiencies

Languages and the like are fields. A tool you roll checks with is a roll.

```dicelist
name: Proficiencies
fields:
  Languages: [Common, Elvish]
  Armor: [Light, Medium, Shields]
  Weapons: [Simple, Martial]
rolls:
  - { name: Herbalism kit, dice: "1d20 + {{wis mod}} + {{proficiency}}", categories: [check, tool] }
```

A weapon

Each hit spends an arrow. Archery is a fighting style that adds 2 to ranged attacks.

```dicelist
type: weapon
name: Longbow
fields:
  Range: 150/600 ft
rolls:
  - name: Hit
    dice: 1d20 + {{dex mod}} + {{proficiency}}
    categories: [attack, ranged]
    effects:
      - { target: inventory, action: remove, args: { item: Arrows } }
  - name: Damage
    dice: 1d8 + {{dex mod}}
    categories: [damage]
modifiers:
  - { name: Archery, value: 2, appliesTo: [ranged], active: true, description: Fighting style }
```

For a finesse weapon, use the better of Strength and Dexterity: max({{str mod}}, {{dex mod}}).

Spells

A spell save DC is a value. Hunter's Mark is a concentration modifier, and casting it spends a slot. Cure Wounds heals by what it rolls.

```dicelist
type: spellcasting
name: Spellcasting
values:
  - { name: spell save DC, value: "8 + {{proficiency}} + {{wis mod}}" }
rolls:
  - { name: Spell attack, dice: "1d20 + {{wis mod}} + {{proficiency}}", categories: [attack, spell] }
consumables:
  - { name: 1st-level spell slots, max: 4, refill: long rest }
  - { name: 2nd-level spell slots, max: 2, refill: long rest }
```
```dicelist
type: spell
name: Hunter's Mark
description: Bonus action, concentration. Mark a creature to deal an extra 1d6 damage to it.
modifiers:
  - { name: Hunter's Mark, value: 1d6, appliesTo: [damage], concentration: true }
rolls:
  - name: Cast
    button: Cast
    effects:
      - { target: consumables, action: use, args: { name: 1st-level spell slots } }
      - { target: modifiers, action: "on", args: { name: Hunter's Mark } }
```
```dicelist
type: spell
name: Cure Wounds
rolls:
  - name: Heal
    dice: 2d8 + {{wis mod}}
    effects:
      - { target: consumables, action: use, args: { name: 1st-level spell slots } }
      - { target: health, action: heal, args: { amount: $total } }
```

Hit dice and death saves

Hit dice are a consumable: rolling one spends it and heals by the roll. A long rest gives back half of them. Death saves count successes and failures in two values, with conditional effects deciding which.

```dicelist
name: Hit dice and death saves
consumables:
  - { name: Hit dice, max: 5, gain: { long rest: 2 }, description: d10 }
values:
  - { name: Death save successes, value: 0, min: 0, max: 3 }
  - { name: Death save failures, value: 0, min: 0, max: 3 }
rolls:
  - name: Hit die
    dice: 1d10 + {{con mod}}
    effects:
      - { target: consumables, action: use, args: { name: Hit dice } }
      - { target: health, action: heal, args: { amount: $total } }
  - name: Death save
    dice: 1d20
    categories: [save]
    effects:
      - { if: "$natural == 20", target: health, action: heal, args: { amount: 1 } }
      - { if: "$total >= 10 and $natural < 20", target: values, action: increase, args: { name: Death save successes } }
      - { if: "$natural == 1", target: values, action: increase, args: { name: Death save failures, amount: 2 } }
      - { if: "$total < 10 and $natural > 1", target: values, action: increase, args: { name: Death save failures } }
on:
  - { event: long rest, target: values, action: set, args: { name: Death save successes, value: 0 } }
  - { event: long rest, target: values, action: set, args: { name: Death save failures, value: 0 } }
```

Conditions and exhaustion

Each condition is a modifier with a switch. showWhenOff: false keeps conditions that are off out of every roll's "Off:" list. Exhaustion is a value you count up and down, and its modifier takes 2 per level from d20 rolls (the 2024 rules).

```dicelist
name: Conditions
values:
  - { name: exhaustion, value: 0, min: 0, max: 6 }
modifiers:
  - { name: Blinded, value: disadvantage, appliesTo: [attack], showWhenOff: false }
  - { name: Frightened, value: disadvantage, appliesTo: [attack, check], showWhenOff: false }
  - { name: Invisible, value: advantage, appliesTo: [attack], showWhenOff: false }
  - { name: Poisoned, value: disadvantage, appliesTo: [attack, check], showWhenOff: false }
  - { name: Prone, value: disadvantage, appliesTo: [attack], showWhenOff: false }
  - { name: Restrained, value: disadvantage, appliesTo: [attack], showWhenOff: false }
  - { name: Exhaustion, value: "-2 * {{exhaustion}}", appliesTo: [attack, check, save], active: true }
on:
  - { event: long rest, target: values, action: decrease, args: { name: exhaustion } }
```

Inventory

The shield adds 2 to armor class while it's equipped.

```dicelist
name: Backpack
inventory:
  - { name: Arrows, quantity: 20 }
  - name: Shield
    quantity: 1
    switches: { Equipped: false }
    modifiers:
      - { name: Shield, value: 2, appliesTo: [armor class] }
  - { name: Potion of Healing, quantity: 2 }
```

Rests

```dicelist
name: Rest
events: [Short rest, Long rest]
```