Visibility Rules
A visibility rule decides whether a field shows up at all, based on the values of other fields. They make forms feel responsive: the user enters a fact, and only the questions that follow from it appear.
A few quick examples:
| Field | When to show it |
|---|---|
| Cause of death | When “Is alive” is unchecked. |
| Spell components — material | When “Components” includes “Material”. |
| Player name | When the character’s subtype is “Player Character”. |
| Capital city | When “Is capital” is checked. |
Without rules, every character would have a “Cause of death” field on their form. Rules turn that into “you only see it if it’s actually relevant”. The form feels like it knows what you’re doing.
Three actions
Section titled “Three actions”A visibility rule chooses one of three things to do when its condition is met:
| Action | Effect |
|---|---|
| Show | The field appears only when the condition is true (otherwise hidden). |
| Hide | The field hides when the condition is true (otherwise visible). |
| Disable | The field is visible but greyed out and not editable when the condition is true. |
Most of the time you’ll want Show. Use Hide when the field is normally there and you only need to remove it in unusual cases. Use Disable when you want users to see the field but not change it (e.g. a status field that’s locked once an entity is archived).
Adding a visibility rule
Section titled “Adding a visibility rule”- Open the type’s Behaviours tab and click Add Behaviour.
- Choose Visibility.
- Pick the target field — the one that will be shown, hidden, or disabled.
- Pick the action — show, hide, or disable.
- Add one or more conditions. Each condition compares another field’s value against something.
- (Optional) combine conditions with AND or OR if you have more than one.
- Save.
Conditions in detail
Section titled “Conditions in detail”A condition is a small statement like Subtype equals “Protagonist” or Level is greater than 5. Each condition has three parts:
- Field — which other field to look at.
- Comparison — how to compare it.
- Value — what to compare it to (when needed).
The comparisons available depend on the field type. Common ones:
| Comparison | Works with | Reads as |
|---|---|---|
| equals | most fields | ”Is this exact value” |
| does not equal | most fields | ”Is anything but this value” |
| contains | text and lists | ”Has this somewhere inside” |
| does not contain | text and lists | ”Doesn’t have this anywhere” |
| is empty | most fields | ”Hasn’t been filled in” |
| is not empty | most fields | ”Has been filled in (anything)“ |
| greater than | numbers and dates | ”Bigger than this number” |
| less than | numbers and dates | ”Smaller than this number” |
Combining with AND / OR
Section titled “Combining with AND / OR”You can stack several conditions on one rule:
- AND — every condition must be true.
- OR — any one condition being true is enough.
When you add a second condition, you’ll see a small AND/OR toggle between them. Set it once for the whole group; you can’t mix AND and OR in the same group.
If you need more complex logic — (A or B) and C — group your conditions:
- Add a top-level group with the AND combiner.
- Inside that, nest a sub-group of OR conditions.
The editor supports two levels of nesting, which is enough for almost any rule. If you find yourself wanting more, that’s usually a sign the form would be clearer split into different subtypes.
A worked example: hiding fields by subtype
Section titled “A worked example: hiding fields by subtype”Say your Character type has subtypes Protagonist, NPC, and Historical Figure, and you want each to show different fields.
For each “Protagonist-only” field (Goal, Internal Conflict, Character Arc):
- Add a visibility rule with action Show.
- One condition: Subtype equals Protagonist.
- Save.
For each “NPC-only” field (Role, Default Attitude):
- Visibility rule, action Show.
- Condition: Subtype equals NPC.
- Save.
Now the form auto-adapts:
- A protagonist character shows the universal fields plus Goal, Internal Conflict, and Character Arc.
- An NPC shows the universal fields plus Role and Default Attitude.
- A historical figure just sees the universal fields (plus any Historical-Figure rules you’ve added).
This pattern is by far the most common reason to add visibility rules. It scales well — start with all fields visible, then mark the niche ones with a rule when you realise they’re only used in some cases.
Another example: optional follow-ups
Section titled “Another example: optional follow-ups”Say your Character form has a checkbox Is deceased. When checked, you want users to fill in Cause of death and Date of death.
Both follow-up fields get a visibility rule:
- Action: Show
- Condition: Is deceased equals true
The fields disappear for living characters and appear immediately when the checkbox is ticked.
Default to “Show”, with one condition. Most useful rules read as “show this field when X is the case”. Resist the urge to combine many conditions; the resulting form behaviour gets confusing.
Avoid hiding required fields. A field that’s required and hidden by a rule means the user can be blocked from saving without knowing why. If you need this, mark the field optional and validate elsewhere.
Test by switching between subtypes. When you set up a subtype-based rule, create a test entity and switch its subtype while editing. Fields should appear and disappear smoothly.
Visibility doesn’t delete data. A field hidden by a rule still keeps any value previously entered. Re-show the field and the old value is still there.