Skip to content

Actor Sheet

Joseph Hopson edited this page Jun 30, 2025 · 9 revisions

Actor Types

Characters

Characters are actors meant to be used by players. They are defined under the [character] group in your sheet configuration.

NPCs

NPCs are actors meant to be used by GMs. NPCs are defined under the [npc] group in your sheet configuration.

Custom Actors

You can define multiple custom actor types beyond the standard character and npc types. Custom actors use the same structure as Characters or NPCs, but with your own actor type name.

Defining Custom Actor Types

# Custom actor type named "vehicle"
[vehicle]
  label = "Vehicle"           # Display name
  baseType = "npc"           # Inherit behavior from npc
  
  [vehicle.attributes]
    [vehicle.attributes.speed]
      type = "Number"
      label = "Speed"
      position = "top"
    [vehicle.attributes.armor]
      type = "Number"
      label = "Armor Plating"
      position = "top"
    [vehicle.attributes.condition]
      type = "LongText"
      label = "Condition"
      position = "left"
  
  [vehicle.moveTypes]
    maneuvers = "Maneuvers"
    systems = "Systems"
  
  [vehicle.equipmentTypes]
    upgrades = "Upgrades"
    cargo = "Cargo"

Custom Actor Examples

Location Actor Type

[location]
  label = "Location"
  baseType = "npc"
  
  [location.attributes]
    [location.attributes.threat]
      type = "Number"
      label = "Threat Level"
      position = "top"
    [location.attributes.description]
      type = "LongText"
      label = "Description"
      position = "left"
    [location.attributes.features]
      type = "ListMany"
      label = "Features"
      position = "left"
      options = [
        "Hidden", "Dangerous", "Resource Rich",
        "Inhabited", "Ancient", "Mystical"
      ]
  
  [location.moveTypes]
    events = "Location Events"
  
  [location.equipmentTypes]
    resources = "Resources"

Organization Actor Type

[organization]
  label = "Organization"
  baseType = "character"      # Has stats like a character
  
  [organization.stats]
    influence = "Influence"
    resources = "Resources"
    secrecy = "Secrecy"
  
  [organization.attributes]
    [organization.attributes.reputation]
      type = "Number"
      label = "Reputation"
      position = "top"
    [organization.attributes.agenda]
      type = "LongText"
      label = "Hidden Agenda"
      position = "left"
      limited = true           # Hidden from players
  
  [organization.moveTypes]
    political = "Political Moves"
    covert = "Covert Operations"
  
  [organization.equipmentTypes]
    assets = "Assets"

Any TOML configuration section that isn't character or npc will be considered a custom actor type.

Required Fields

Stats

Note

Stats are not required for NPCs.

Defines the stats used by your player characters. Each stat is written as direct assignment with the short syntax, such as the following:

[character.stats]
  cool = "Cool"
  hard = "Hard"
  hot = "Hot"
  sharp = "Sharp"
  weird = "Weird"

Warning

Reserved Terms: You can't have a stat with a key (name at the left) set as ask, formula or prompt. These keys are used internally by the system.
If you have Stat Tokens enabled, a stat with a key set as token will have special behavior.

Attributes

Attributes are used in the PbtA system to track things that are not stats or moves. For instance, Harm in Apocalypse World, Look in Dungeon World, and Conditions in Masks would all be considered attributes when making a sheet in the PbtA system.

Attributes have a position property that is used to define where in the sheet they will be displayed. You can omit this property to have an attribute to not be displayed. This system supports only two positions:

  • left, a column to the left of the Moves section.
  • top, at the top of the sheet, directly below Stats.
Example
[character.attributes.armor]
  type = "Number"
  label = "Armor"
  position = "top"
[character.attributes.harm]
  type = "Clock"
  max = 6
  default = 0
  position = "top"
[character.attributes.damage]
  type = "Roll"
  label = "Damage"
  default = "1d10"
  position = "top"
[character.attributes.look]
  type = "LongText"
  label = "Look"
  position = "left"
[character.attributes.weight]
  type = "Resource"
  label = "Weight"
  position = "left"
[character.attributes.conditions]
  type = "ListMany"
  label = "Conditions"
  description = "Choose all that apply:"
  condition = true
  options = [
    "Afraid (-2 to engage)",
    "Angry (-2 to comfort)",
    "Guilty (-2 to provoke)",
    "Hopeless (-2 to unleash)",
    "Insecure (-2 to defend)"
  ]
  position = "left"

Playbook Specific Attributes

Read Playbooks.

Limited Visibility of Attributes

You can set an attribute to not be displayed to users that have limited ownership of a playbook.

[character.attributes.foo]
  type = "Clock"
  label = "Foo"
  position = "top"
  limited = true

Attribute Types

For a full list of attribute types and how to use them, see the Attribute Types page. Here is a list of the available attribute types.

Available Attribute Types
  • Number - Attributes that should be numeric values only.
  • Text - Plain text values in a single-line text field.
  • LongText - Plain text values in a text area that spans multiple lines. In a future version of the system, this will support the TinyMCE text editor.
  • Resource - Numeric value fields that support both a current value and max value.
  • Clock - Numeric value fields with current and max values, but the front-end widget will be a series of checkboxes.
  • Xp - Numeric value fields with current and max values, but the front-end widget will be a series of radio circles. In a future version of the system, this will support additional values to better tie it to character advancement.
  • Checkbox - A single checkbox with a label.
  • ListMany - Multiple checkboxes with labels that can support any number of them being checked at a given time. In a future version of the system, there will be a "limit" option to specify how many options can be chosen by characters at once. In addition, ListMany can be used to handle conditions if the labels of your options include a number (such as -2) and the condition = true property is included in the attribute.
  • Roll - A text field along with a button to trigger dice rolls based on its current value. Works best with a supplied default value, such as default = "d10"

Move Types

Defines the move types that can be used to organize moves in a character's sheet.

A move type can be created as a group to have one of the following properties:

  • creation, which adds the move types to the actor when it is created.
  • playbook, which adds a field to the Move's sheet to set the playbook that move is from. This is purely visual.
# Short Syntax
[character.moveTypes]
  basic = "Basic Moves"
  advanced = "Advanced Moves"
  class = "Class Moves"

# Long Syntax
[character.moveTypes.basic]
  label = "Basic Moves"
  creation = true
[character.moveTypes.advanced]
  label = "Advanced Moves"
[character.moveTypes.class]
  label = "Class Moves"
  playbook = true

Equipment Types

Defines the equipment types that can be used to organize equipment in a character's sheet.

[character.equipmentTypes]
  gear = "Gear"
  loot = "Loot"

Optional Fields

Base Type

Note

This field is only available to Custom Actor Types.

You can choose whether the custom actor will behave like a Character's (support for Stats) or a NPC's.

If a base type isn't set, the actor sheet will be rendered as a Character. Effectively, this configuration is only important to set NPC-like actors.

[other]
  label = "Custom Actor Type"
  baseType = "npc"

Description

Adds new description editors to the Description tab. Descriptions can also have the limited and playbook properties, similar to Attributes.

If no descriptions are set, a default biography description will be set.

[character.description.background]
  label = "Background"
  value = "Character's history and origins"

[character.description.goals]
  label = "Goals & Motivations"
  value = "What drives this character"
  
[character.description.secrets]
  label = "Secrets"
  value = "Hidden information"
  limited = true              # Only visible to owners
  
[character.description.class-notes]
  label = "Class Notes"
  value = "Playbook-specific information"
  playbook = true            # Only shows when playbook selected

Label

Replaces the Character/NPC names on places such as the Character Creation dialog. Labels are localized when the TOML is parsed.

[character]
  label = "Protagonist"

[npc]
  label = "Supporting Character"
  
[vehicle]
  label = "Vehicle"

Actor Type Properties

All actor types support these optional properties:

Label Property

[custom-actor]
  label = "Display Name"     # Shown in UI instead of config key

Description Property

[custom-actor]
  description = "Detailed description of this actor type"

Custom Description Fields

[custom-actor.description]
  field1 = "Description text"
  field2 = "More description"

Base Type Inheritance

[custom-actor]
  baseType = "character"     # Inherit character behavior (has stats)
  # or
  baseType = "npc"          # Inherit NPC behavior (no stats by default)

If no baseType is specified, custom actors default to character-like behavior.

Configuring Your System

Configuration Reference

List of TOML presets for your games.

List of FoundryVTT modules that implement the rules of some PbtA games.

Covers how to create FoundryVTT modules that integrate with the PbtA system.

Clone this wiki locally