-
Notifications
You must be signed in to change notification settings - Fork 1
How Do I
Cody Swendrowski edited this page Jun 12, 2026
·
1 revision
Can't find the feature you need? This page maps plain-English goals to the exact doc section that answers them. Pick the closest description of what you're trying to do and follow the link.
Tip: If a goal isn't listed here, try the Glossary for individual keyword definitions, or browse Recipes for copy-paste patterns.
| I want to… | Go here |
|---|---|
| Add a basic number (level, XP, gold) | Fields — Number |
| Add a yes/no checkbox | Fields — Boolean |
| Add a text field | Fields — String |
| Add a dropdown with fixed choices | Fields — Choice String |
| Add a multi-select picker ("pick 2 of these traits") | Fields — Choices String |
| Add a rich-text / formatted description | Fields — HTML |
| Add a portrait / character image | Fields — Image |
| Move the portrait anywhere on the sheet |
Fields — Image (primary: true) |
| Store a die size (d4, d6, d8…) | Fields — Die Field |
| Store a dice pool (2d6, 3d8…) | Fields — Dice Field |
| Store date, time, or date-and-time | Fields — Date, Time, and DateTime |
| Add a health/mana bar with a token resource bar | Fields — Resource |
| Add a score/modifier pair (like D&D STR 16 / +3) | Fields — Attribute |
| Add a tracker (mana, shields, clocks, stress) | Fields — Tracker |
| Add a World of Darkness–style damage track | Fields — Damage Track |
| Add a currency system (gold/silver/copper) | Fields — Money |
| Add a measured template field for AoE spells | Fields — Measured Template |
| Add an equipment paperdoll / slot layout | Fields — Paper Doll |
| Add a grid-based inventory | Fields — Inventory Field |
| Add a table of owned items (spells, equipment…) | Fields — Item List |
| Filter a table to show only some items (e.g. only Armor) |
Fields — Item List (where:) |
| Let users pin frequently used items for quick access | Fields — Pinned Field |
| Add a custom data table | Fields — Table Field |
| Link to a single item via drag-and-drop | Fields — Single Item |
| Link to a single item via searchable dropdown | Fields — Document Choice |
| Link to multiple items via dropdown | Fields — Document Choices |
| Let the player pick which stat to roll at play time | Fields — Self Property Reference |
| Let an item reference its owning actor's stats | Fields — Parent Property Reference |
| Show damage bonus / resistance summary tables | Fields — Bonuses / Resistances |
| Show a probability chart for a dice formula | Fields — Roll Visualizer |
| Store an executable macro on a sheet | Fields — Macro Field |
| Compute a field's value from other fields |
Fields — Number (value:) |
| Set a field's starting value at character creation |
Fields — Number (initial:) |
| Set a min or max on a number field | Fields — Standard Parameters |
| Make a field always read-only |
Fields — Visibility Tags (locked / readonly) |
| Make a field completely invisible (but still store data) |
Fields — Visibility Shorthand Prefixes (hidden) |
| Make a field only show in Edit Mode |
Fields — Visibility Shorthand Prefixes (edit) |
| Make a field only show in Play Mode |
Fields — Visibility Shorthand Prefixes (play) |
| Hide a field from players but show it to the GM |
Fields — Visibility Shorthand Prefixes (gmOnly) |
| Hide a field from non-owner viewers |
Fields — Visibility Shorthand Prefixes (secret) |
| Show a field only for a specific class or condition |
Fields — Standard Parameters (visibility:) |
| Hide a field unless in Edit Mode |
Fields — Visibility Shorthand Prefixes (edit) |
| Keep a field always editable (skip Edit Mode requirement) |
Fields — Visibility Shorthand Prefixes (unlocked) |
| Change a field's display label without changing its ID |
Fields — Standard Parameters (label:) |
| Add a Font Awesome icon to a field |
Fields — Standard Parameters (icon:) |
| Remove the calculator button on a number field |
Fields — Number (calculator: false) |
| Make a number field show the calculator button |
Fields — Number (calculator: true) |
| I want to… | Go here |
|---|---|
| Place fields side by side | Document — Row |
| Create a two-column layout | Document — Column |
| Group related fields in a card/section | Document — Section |
| Add a new tab to the character sheet | Document — Page |
| Change the background pattern on a tab |
Document — Page (background:) |
| Change the system's primary color / fonts | Theming |
| Change the color for just one field | Theming — Per-field overrides |
| Set a field's min/max width or height |
Theming — Per-field overrides (width:, height:) |
| Remove / change the border on a section | Theming — Theming layout containers |
| Remove the box shadow (elevation) on a section | Theming — Theming layout containers |
| Change colors, fonts or borders at the system level | Theming |
| Add a web font or film-grain texture | Theming — Sidecar stylesheets |
| Style chat cards, dialogs, or non-sheet surfaces |
Theming — Sidecar stylesheets (globalStyles) |
| Write custom CSS that survives regeneration | Custom Code & Styles |
| Use CSS classes to target specific fields |
Theming — Per-field overrides (.isdl-field-<name>) |
| Lock down the system look (no per-player color pickers) |
Theming — Per-document color pickers (userColors = false) |
| Make play-mode text more readable | Theming — Readable play mode |
| Set the default sheet size |
Document — Document Parameters (width:, height:) |
| Scale the entire sheet up or down |
Document — Document Parameters (zoom:) |
| I want to… | Go here |
|---|---|
| Roll dice in an action | Basic Logic — Dice Rolling |
| Add a roll button directly on an attribute |
Fields — Attribute (roll:) |
| Run a function when an attribute is clicked |
Fields — Attribute (function:) |
| Use Foundry dice modifiers (keep highest, explode…) | Basic Logic — Common Dice Patterns |
| Roll with advantage (2d20 keep highest) | Recipes — Rolling with Advantage / Bonuses |
| Detect a critical hit or fumble | Recipes — Attack with Critical Hits |
| Count successes in a dice pool | Recipes — Dice Pool: Counting Successes |
| Check if any die in a pool shows a 1 | Recipes — Dice Pool: Fail if Any Die Shows a 1 (EZD6) |
| See the expected value / distribution of a formula | Fields — Roll Visualizer |
| Display a roll with a full breakdown in chat | Basic Logic — Roll Properties |
| Add a flat bonus to a roll from a prompt | Recipes — Rolling with Advantage / Bonuses |
| Make a damage roll with a typed damage type | Fields — Choice DamageType |
| Step a die up or down (d6 → d8) | Fields — Die Field |
| I want to… | Go here |
|---|---|
| Compute a value from other fields |
Fields — Standard Parameters (value:) |
| Compute a resource's max from other fields |
Fields — Resource (max:) |
Write an if/else condition |
Basic Logic — Comparisons and Conditions |
| Use a ternary shorthand (condition ? A : B) | Basic Logic — Shorthand Conditions |
| Store a temporary value during an action |
Basic Logic — Variables (fleeting) |
| Store an immutable constant |
Basic Logic — Variables (eternal) |
Use Math.floor, Math.max, etc. |
Basic Logic — Common Math Functions |
| Reuse logic across multiple actions | Advanced Logic — Functions |
Call a function from a calculated value: field |
Advanced Logic — Functions in Calculated Values |
| Loop over all items in a table | Advanced Logic — Each Loops |
| Loop over a numeric range | Advanced Logic — Number Range Iteration |
| Check if a field exists before using it |
Advanced Logic — Logical Operators (exists) |
| Access the character's own fields |
Basic Logic — Accessing Character Data (self) |
| Access the owning actor from an item action |
Basic Logic — Accessing Character Data (parent) |
| Access the currently targeted token |
Basic Logic — Accessing Character Data (target) |
| Check if the current user is a GM |
Basic Logic — Accessing Character Data (User.isGM) |
| Read or write a game setting from logic | Config — Settings |
| Force a document update mid-action |
Interactivity — Debug and Development Tools (self.update()) |
| Add a log statement for debugging | Interactivity — Debug and Development Tools |
| Use a JavaScript escape hatch for unsupported operations | Logic Reference — JavaScript Escape Hatch |
| Write native Foundry JS that survives regeneration | Custom Code & Styles |
| I want to… | Go here |
|---|---|
| Add a list of owned items (equipment, spells) | Fields — Item List |
| Filter the table to only show certain items |
Fields — Item List (where:) |
| Click an item's image to run an action |
Fields — Item List (imageAction:) |
| Add a custom data table with flexible columns | Fields — Table Field |
| Choose which columns show by default |
Fields — Table Field (fields:) |
| Aggregate item weights / values with a progress bar |
Fields — Inventory Field (sum:, sumMax:) |
| Let the player link one item via drag-and-drop | Fields — Single Item |
| Let the player pick an item from a dropdown | Fields — Document Choice |
| Let the player pick multiple items from a dropdown | Fields — Document Choices |
| Loop over all items in a table in action code | Advanced Logic — Each Loops |
| Compute a total from owned item values (weight, bonuses) | Recipes — Advanced Inventory Weight System |
| Track item uses / charges | Recipes — Tracking Uses Left |
| I want to… | Go here |
|---|---|
| Add a button that does something | Basic Logic — Simple Actions |
| Post a message to the chat log | Basic Logic — Chat Cards |
| Show a roll with an expandable breakdown in chat | Basic Logic — Roll Properties |
| Add flavor text at the top of a chat card |
Basic Logic — Chat Cards (flavor) |
| Add small chips / tags at the bottom of a chat card |
Basic Logic — Chat Cards (tag) |
| Ask the player a question mid-action | Interactivity — Interactive Prompts |
| Ask the GM for approval mid-action |
Interactivity — Interactive Prompts (target: "gm") |
| Give an action a timeout if no answer arrives |
Interactivity — Interactive Prompts (limit:) |
| Disable an action button when it can't be used |
Interactivity — Action Visibility and Control (Visibility.locked) |
| Hide an action from players | Interactivity — Action Visibility and Control |
| Make an action available on the Foundry macro hotbar |
Interactivity — Action Visibility and Control (macro action) |
| React to turn start / turn end in combat |
Interactivity — Event Handling (on turnStart, on turnEnd) |
| React to damage being applied |
Interactivity — Event Handling (on preApplyDamage) |
| React to character death |
Interactivity — Event Handling (on death) |
| Intercept and modify incoming damage | Recipes — Handling shields / armor / resistances / etc |
| Play a sound when an action runs | Interactivity — Audio Integration |
| Add a delay / countdown between steps | Interactivity — Timing and Delays |
| Listen to a Foundry hook | Interactivity — Event Handling |
| Advance combat to the next turn |
Interactivity — System Integration (Combat.nextTurn()) |
| Show an action only on the actor's turn | Recipes — Tracking actions and ending turn automatically |
| I want to… | Go here |
|---|---|
| Add a status condition icon (Poisoned, Stunned…) | Keywords & Journals — Status Effects |
| Auto-apply a status when a condition is true |
Keywords & Journals — Status Effects (when:) |
| Mark an actor as dead when HP reaches 0 |
Keywords & Journals — Status Effects (death status) |
| Define game terms with colored badges in journals | Keywords & Journals — Keywords System |
| Auto-generate player-facing journals for keywords | Keywords & Journals — Automatic Journal Generation |
| Show/hide fields based on which class the character picked | Recipes — Class adds fields |
| Apply a timed condition (stunned for 2 rounds) | Recipes — Status Effects and Conditions |
| Reduce/negate damage with resistances | Recipes — Handling shields / armor / resistances / etc |
| I want to… | Go here |
|---|---|
| Set the system ID, name, and description | Config |
| Declare game settings (world or per-user) | Config — Settings |
| Publish my system to GitHub | GitHub Integration |
| Define actor types (PC, NPC, Monster…) | Document |
| Define item types (Spell, Equipment, Feature…) | Document |
Use the import keyword / split into multiple files |
Config — multi-file import is not yet available in the current release |
| Write custom Foundry JS that survives regeneration | Custom Code & Styles |
| Write custom CSS that survives regeneration | Custom Code & Styles |
| Build from the command line (CI/CD) | Command Line Interface |
| Troubleshoot generation errors | Troubleshooting |