-
Notifications
You must be signed in to change notification settings - Fork 14
Attribute Types
The PbtA system supports several attribute types. Each attribute type has a required type property
All attribute types support the following common properties, which are optional:
- label - The label placed above the input on the character sheet.
- description - Descriptive text below the label and above the input.
- default - The default value of the attribute.
-
customLabel - If set to
true, this will turn the label for the attribute into a text field that can be overridden on each character sheet. - playbook - Sets if the attribute is playbook-specific. Read more about it on the Playbooks page.
-
position - The position where the attribute will be displayed on a sheet. Valid values:
"top","left", or omit to hide the attribute from the sheet. -
limited - If set to
true, this attribute will not be visible to users with limited ownership of the actor.
Some attributes can alternatively be written using a short syntax format by only specifying the type and allowing the label to be inferred from the option name. If attributes have required properties, such as the max property on Clock attributes, they cannot be entered using the short syntax.
armor = "Number"
harm = "Clock"Basic number input.
[character.attributes.armor]
type = "Number"
default = 0
position = "top"Basic text input.
[character.attributes.nickname]
type = "Text"
position = "left"Text area field, used for larger text descriptions.
[character.attributes.look]
type = "LongText"
position = "left"Numeric resource with both current and max values.
[character.attributes.mana]
type = "Resource"
label = "Mana"
max = 4
default = 4
position = "top"Numeric resource that uses checkboxes to determine the current amount (like Harm in Apocalypse World). Clocks and XP are completely similar, except for the fact Clocks have checkboxes (square) and XP have Radio buttons (circles).
[character.attributes.harm]
type = "Clock"
label = "Harm"
max = 6
default = 0
position = "top"[character.attributes.improvement]
type = "Xp"
label = "Improvement"
max = 7
default = 0
position = "top"Single checkbox with label. If using the "default" property on checkboxes, it should be entered as either "true" or "false" (no quote marks).
[character.attributes.wounded]
type = "Checkbox"
label = "Wounded"
checkboxLabel = "Untreated wounds"
default = false
position = "top"There are two types of Lists on PbtA: ListOne, for single-choice inputs, and ListMany, for multiple-choice inputs.
Sorting Lists support have an optional sort = true property, which sorts list's options alphabetically. I suggest using this for any list that is already sorted alphabetically but uses localization, since the order can be different based on the language.
Custom Labels You can have an option to have a text input instead of a set label by setting its value to [Text].
[character.attributes.list]
# More configs
options = [
"[Text]"
]Multiple Checkboxes per Option To enable multiple checkboxes for an option, add |n onto the end of the option.
[character.attributes.list]
# More configs
options = [
"Afraid (-2 to engage)|3"
]Lists support multiple formats for defining options:
options = ["Option 1", "Option 2", "Option 3"][character.attributes.background.options]
soldier = "Soldier"
scholar = "Scholar"
merchant = "Merchant"[character.attributes.conditions.options]
[character.attributes.conditions.options.afraid]
label = "Afraid"
tooltip = "You take -2 ongoing to engage a threat"Create multiple instances of the same option:
[character.attributes.wounds.options]
wounds = "Wounds | 3" # Creates 3 separate "Wounds" checkboxesMultiple radio buttons with labels.
[character.attributes.status]
type = "ListOne"
label = "Status"
description = "Character's current status"
default = 2 # values are numeric, starting with 0 as the first option
sort = false # Optional: sort options alphabetically
options = [
"Healthy",
"Wounded",
"Near Death",
"Unconscious",
"Dying"
]
position = "left"[character.attributes.background]
type = "ListOne"
label = "Background"
default = "soldier" # Use key name for object format
[character.attributes.background.options]
soldier = "Soldier"
scholar = "Scholar"
merchant = "Merchant"Multiple checkboxes with labels.
Warning
ListMany does not support the default property.
[character.attributes.gear]
type = "ListMany"
label = "Starting Gear"
description = "Choose your starting equipment:"
sort = true # Optional: sort options alphabetically
options = [
"Sword",
"Shield",
"Leather Armor",
"Backpack",
"Rope (50 feet)"
]
position = "left"ListMany attributes can also be used as conditions. If you set condition = true in your attribute, any numeric modifiers in the condition labels will be available as modifiers during move rolls.
[character.attributes.conditions]
type = "ListMany"
label = "Conditions"
description = "Choose all that apply:"
condition = true
sort = false # Don't sort conditions - order matters
options = [
"Afraid (-2 to engage)",
"Angry (-2 to comfort)",
"Guilty (-2 to provoke)",
"Hopeless (-2 to unleash)",
"Insecure (-2 to defend)|3",
"[Text]",
"[Text]|4"
]
position = "left"[character.attributes.improvements]
type = "ListMany"
label = "Improvements"
playbook = "fighter" # Get options from playbook
position = "left"A single text field and a roll button to make a dice roll based on its value.
[character.attributes.damage]
type = "Roll"
label = "Damage"
default = "d10"
showResults = true # Optional: show roll results (default: true)
position = "left"-
showResults - Optional boolean (default:
true). Whenfalse, hides the roll results from being displayed.
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.