This page shows how to write a homebrew feat, species and background, with the choices a player makes when they take one and the things each one grants, for 5e and 5.5e.

For: Game Masters · Plan: Pro · 25 minutes

Feats, species and backgrounds describe who a character is rather than what they carry. A species is the people they come from, such as dwarves or elves; a background is what they did before adventuring; a feat is a special talent, such as being unusually alert. In a homebrew pack each is one row in the items list. Their effects are always on, and most come with choices: which language to learn, which ability to raise. Once you, the Game Master (GM), bind the pack to a game, RollQuest asks those questions in its choices window when a player takes the item, in the character builder or from their sheet, and writes the answers onto the sheet. Everything here works for 5e (the 2014 rules, SRD 5.1) and 5.5e (the 2024 rules, SRD 5.2.1); where the two differ, the page says so.

Plan: writing homebrew packs is on Pro. Players on any plan take what you bind with + From pack on their sheet, and the character builder's steps are on every plan.

Every example on this page is a complete pack that RollQuest accepts as it stands. Paste one into Check and create to try it (see Your first homebrew pack, step by step), or copy the object inside items into a pack of your own. Effects are explained in full in Effects: what an item can change, and every kind of choice in Choices and grants.

Where each one reaches players, once the pack is bound to the game:

flowchart LR
  P["Your pack, bound to the game"] --> F["Feat: + From pack on the sheet"]
  P --> S["Species: the builder's species step, or + From pack"]
  P --> B["Background: the builder's background step, or + From pack"]
  F --> C["Choices window"]
  S --> C
  B --> C
  C --> Sheet["The character sheet"]

A feat

Keen Watcher is a general feat: +1 to Wisdom or Intelligence (the player's choice), proficiency in Perception, and +2 to Initiative.

{
  "slug": "my-keen-watcher",
  "name": "Keen Watcher (homebrew feat)",
  "system": "5.5e Compatible",
  "derivedFrom": "5-5e-core",
  "category": "addon",
  "version": "1.0.0",
  "license": "USER_HOMEBREW",
  "source": "My table's homebrew.",
  "attribution": "",
  "description": "",
  "requiredDecisions": [],
  "items": [
    {
      "kind": "inventoryItem",
      "key": "FEAT_KEEN_WATCHER",
      "spec": {
        "subType": "feat",
        "id": "FEAT_KEEN_WATCHER",
        "name": "Keen Watcher",
        "meta": {
          "category": "General Feat",
          "passive": true,
          "description": "+1 Wisdom or Intelligence; proficiency in Perception; +2 to Initiative."
        },
        "actions": [],
        "effects": [
          {
            "id": "KEEN_WATCHER_PERC",
            "target": "P_PERC",
            "op": "setMin",
            "value": 1,
            "condition": "",
            "trigger": ""
          },
          {
            "id": "KEEN_WATCHER_INIT",
            "target": "INIT_BONUS",
            "op": "add",
            "value": 2,
            "condition": "",
            "trigger": ""
          }
        ],
        "choices": [
          {
            "id": "keen_watcher_asi",
            "kind": "abilityIncrease",
            "prompt": "+1 Wisdom or Intelligence",
            "from": [
              "WIS",
              "INT"
            ],
            "total": 1,
            "perAbilityCap": 1
          }
        ]
      }
    }
  ]
}

In play, a player adds Keen Watcher with + From pack on their sheet (in the Items panel it's on the Feats tab). The choices window opens, headed with the feat's name, and asks +1 Wisdom or Intelligence: they press + on one of the two and confirm. The feat lands on the Main tab's Features tab, their Wisdom or Intelligence goes up by 1, Perception shows as proficient, and Initiative is 2 higher.

The choices window for Keen Watcher, labelled: 1 the feat's name and From with the pack's name, 2 the question, +1 Wisdom or Intelligence (the choice's prompt), 3 the + and − for each ability (from), 4 Allocated 1 / 1 (total), 5 the confirm button.

Edit, Items, the Feats tab, + From pack with Keen typed in the search box, + Add next to Keen Watcher; + on Wisdom, Confirm. Then the Main tab: Wisdom up by 1, Perception proficient, Initiative up by 2, and an Initiative roll.

The feat's fields:

Field What it does Allowed values Checked?
spec.subType Makes it a feat: the Feats tab, and effects that are always on. feat. Yes: an unknown word is refused.
meta.category Shown in the Items panel's Category column. Feat choices filter by it: a background that offers an Origin feat lists every feat whose category contains Origin Feat. 5.5e: Origin Feat, General Feat, Fighting Style, Epic Boon. 5e: Feat. No.
meta.passive true for a feat with no button. It only hides the button in a Canvas sheet's placed containers. true or false. No.
meta.description The feat's text. Write any prerequisite here, such as "Prerequisite: Level 4+": RollQuest doesn't check prerequisites. Any text. No.
spec.effects Changes that are always on while the character has the feat. A list of effects. Yes.
spec.choices Questions asked when the feat is added. A list of choices (below). Yes: each choice needs an id and a real kind, and the IDs in from, a packSlug and maxScore are checked.

The two effects use the standard targets for a skill and Initiative:

  • P_PERC with setMin 1: proficiency in Perception. Each skill has one, such as P_STE for Stealth and P_ARC for Arcana. 1 is proficient; 2 is expertise (double the bonus). setMin means "at least", so a character who's proficient already isn't changed.
  • INIT_BONUS with add 2: a bonus added to Initiative. It counts when the player rolls Initiative from their sheet.

The abilityIncrease choice:

Field What it does Here
id The choice's ID, unique in the item. keen_watcher_asi
kind The kind of question. abilityIncrease
prompt The question in the choices window. +1 Wisdom or Intelligence
from The abilities the player can raise. WIS, INT; any of STR, DEX, CON, INT, WIS, CHA.
total The points to share out. The player must use all of them. 1
perAbilityCap The most one ability can get. 1
maxScore Optional: the highest the score can go. Without it, the system's maximum (20). Epic Boons use 30. Left out. A whole number when used.

A feat can only be taken once. Its prerequisite, if it has one, is up to the table.

More feats

Expertise. A skillProf choice with "tier": 2 gives expertise. This feat also teaches a language: languages, tools and skills are all skillProf choices, told apart by their IDs (L_ for languages, T_ for tools, P_ for skills).

{
  "slug": "my-cinder-savant",
  "name": "Cinder Savant (homebrew feat)",
  "system": "5.5e Compatible",
  "derivedFrom": "5-5e-core",
  "category": "addon",
  "version": "1.0.0",
  "license": "USER_HOMEBREW",
  "source": "My table's homebrew.",
  "attribution": "",
  "description": "",
  "requiredDecisions": [],
  "items": [
    {
      "kind": "inventoryItem",
      "key": "FEAT_CINDER_SAVANT",
      "spec": {
        "subType": "feat",
        "name": "Cinder Savant",
        "meta": {
          "category": "General Feat",
          "passive": true,
          "description": "General Feat (Prerequisite: Level 4+). Expertise in one skill you are proficient in; learn one language."
        },
        "actions": [],
        "effects": [],
        "choices": [
          {
            "id": "cinder_savant_expertise",
            "kind": "skillProf",
            "prompt": "Choose 1 skill you are proficient in for Expertise",
            "from": [
              "P_ARC",
              "P_HIS",
              "P_INV",
              "P_NAT",
              "P_REL"
            ],
            "pick": 1,
            "tier": 2
          },
          {
            "id": "cinder_savant_language",
            "kind": "skillProf",
            "prompt": "Choose 1 language",
            "from": [
              "L_DRACONIC",
              "L_INFERNAL",
              "L_PRIMORDIAL"
            ],
            "pick": 1
          }
        ]
      }
    }
  ]
}

The choices window shows each option by name, with Show details for skills and tools. It doesn't check that the character is proficient already before giving expertise: "Choose 1 skill you are proficient in" is a request to the player.

A stance that switches on and off. meta.toggleable makes the feat's effects count only while it's on. On the Form View, the sheet's standard tabbed layout (see Form and Canvas views), the feat has an Active chip; in the Items panel, On / Off.

{
  "slug": "my-emberguard-stance",
  "name": "Emberguard Stance (homebrew feat)",
  "system": "5.5e Compatible",
  "derivedFrom": "5-5e-core",
  "category": "addon",
  "version": "1.0.0",
  "license": "USER_HOMEBREW",
  "source": "My table's homebrew.",
  "attribution": "",
  "description": "",
  "requiredDecisions": [],
  "items": [
    {
      "kind": "inventoryItem",
      "key": "FEAT_EMBERGUARD_STANCE",
      "spec": {
        "subType": "feat",
        "name": "Emberguard Stance",
        "meta": {
          "category": "General Feat",
          "passive": false,
          "toggleable": true,
          "description": "While the stance is on you gain +1 AC and resistance to fire damage."
        },
        "actions": [],
        "effects": [
          {
            "id": "EMBERGUARD_AC",
            "target": "AC_MISC_BONUS",
            "op": "add",
            "value": 1,
            "condition": "",
            "trigger": ""
          },
          {
            "id": "EMBERGUARD_FIRE",
            "target": "RESIST_FIRE",
            "op": "setMin",
            "value": 1,
            "condition": "",
            "trigger": ""
          }
        ]
      }
    }
  ]
}

The 5e version. A 5e feat is written the same way, with "category": "Feat". Iron Hide, from a 5e pack, adds 1 to AC and a hit point per level; HP_MISC_BONUS is 5e's bonus to maximum hit points (5.5e uses HP_MAX):

{
  "kind": "inventoryItem",
  "key": "FEAT_IRON_HIDE_5E",
  "spec": {
    "subType": "feat",
    "id": "FEAT_IRON_HIDE_5E",
    "name": "Iron Hide",
    "meta": {
      "category": "Feat",
      "passive": true,
      "description": "+1 AC; +1 hit point per level."
    },
    "effects": [
      {
        "id": "IRON_HIDE_HP",
        "target": "HP_MISC_BONUS",
        "op": "add",
        "value": "=LEVEL",
        "condition": "",
        "trigger": ""
      },
      {
        "id": "IRON_HIDE_AC",
        "target": "AC_MISC_BONUS",
        "op": "add",
        "value": 1,
        "condition": "",
        "trigger": ""
      }
    ]
  }
}

A feat with uses that come back on a rest is written like the Second Breath example in Magic items and consumables.

A species

Emberkin are a 5.5e species: darkvision to 60 ft, resistance to fire, and one extra language of the player's choice.

{
  "slug": "my-emberkin",
  "name": "Emberkin (homebrew species)",
  "system": "5.5e Compatible",
  "derivedFrom": "5-5e-core",
  "category": "addon",
  "version": "1.0.0",
  "license": "USER_HOMEBREW",
  "source": "My table's homebrew.",
  "attribution": "",
  "description": "",
  "requiredDecisions": [],
  "items": [
    {
      "kind": "inventoryItem",
      "key": "SPECIES_EMBERKIN",
      "spec": {
        "subType": "background",
        "id": "SPECIES_EMBERKIN",
        "name": "Emberkin",
        "meta": {
          "size": "Medium",
          "speed": "30 ft",
          "passive": true,
          "description": "Creature Type: Humanoid. Darkvision 60 ft. Fire resistance. One extra language."
        },
        "effects": [
          {
            "id": "EMBERKIN_DARKVISION",
            "target": "SENSE_DARKVISION",
            "op": "setMin",
            "value": 60,
            "condition": "",
            "trigger": ""
          },
          {
            "id": "EMBERKIN_FIRE",
            "target": "RESIST_FIRE",
            "op": "setMin",
            "value": 1,
            "condition": "",
            "trigger": ""
          }
        ],
        "choices": [
          {
            "id": "emberkin_language",
            "kind": "skillProf",
            "prompt": "Choose 1 language",
            "from": [
              "L_DRACONIC",
              "L_DWARVISH",
              "L_ELVISH",
              "L_GIANT",
              "L_PRIMORDIAL"
            ],
            "pick": 1
          }
        ]
      }
    }
  ]
}

In play, when the pack is routed into Choose Your Species, a new character sees Emberkin as a card on that step, with From and the pack's name. Clicking it opens the choices window for the language; once they confirm, the species is on the sheet, a message says Added Emberkin., and the builder moves on to the next step. Their token sees in the dark to 60 ft in a scene with dynamic fog (see Token vision), fire damage is halved, and the language is ticked.

Choose Your Species: the Emberkin card with its From line, among the built-in species. The choices window: Draconic, Confirm; Adding Emberkin, the message Added Emberkin., and the builder moves on to Set Ability Scores.

The species' fields:

Field What it does Allowed values Checked?
spec.subType Species and backgrounds are both background: always on, on the Backgrounds tab of the Items panel. background. Yes: species is refused.
meta.size, meta.speed Kept with the species as text. They change nothing on the sheet: the token's size is set on the board, and Speed comes from an effect (below). Put them in the description as well, where players read them. Text, such as Medium and 30 ft. No.
meta.kind species makes a Species field placed on a Canvas sheet show this species' name. Without it, that field only finds a species whose pack slug contains species, race or ancestry. species (or background on a background). No.
meta.passive true: a species has no button. true. No.
meta.description The species' text, on its builder card. Any text. No.
spec.effects Its traits: senses, resistances, proficiencies, Speed. A list of effects. Yes.
spec.choices Questions asked when it's taken. A list of choices. Yes, as for a feat.

The effects a species uses most:

Trait Effect
Darkvision 60 ft SENSE_DARKVISION, setMin, 60. 5.5e also has SENSE_BLINDSIGHT, SENSE_TREMORSENSE and SENSE_TRUESIGHT; 5e has darkvision only.
Resistance to fire RESIST_FIRE, setMin, 1 (2 for immunity).
Speed 35 ft SPEED, add, 5. meta.speed alone doesn't change it.
A language L_DRACONIC (or any L_ ID), setMin, 1.
A skill P_PERC (or any P_ ID), setMin, 1.
Extra hit points per level 5.5e: HP_MAX, add, =LEVEL. 5e: HP_MISC_BONUS, add, =LEVEL.
+2 Charisma (5e) CHA, add, 2. 5.5e species don't raise abilities; 5.5e backgrounds do.

The skillProf choice:

Field What it does Here
kind The kind of question. skillProf
prompt The question. Choose 1 language
from The IDs to choose from. Five L_ language IDs.
pick How many to choose. 1
tier Optional: 1 for proficiency (the default), 2 for expertise. Left out.

Routing a species into the builder

Bind the pack to your game with Bind to this table in My Homebrew, and tick Choose Your Species (in 5e the step is Choose Your Race). That step lets a character hold one species, so the window warns you: every item in the pack joins the step, and picking one replaces the species a character had, on every sheet at the table. Tick I understand this replaces existing picks on sheets at this table to bind it. See Put your pack on a table.

The Bind window for Emberkin (homebrew species), labelled: 1 Where should its items appear?, 2 Choose Your Species, ticked, 3 the red warning that this routing replaces players' existing picks, 4 I understand this replaces existing picks on sheets at this table, ticked, 5 Bind pack.

Two rules keep a routed species pack working:

  • Keep species in a pack of their own. Every item in a routed pack appears in the step, so a weapon in the same pack would show up as a species card.
  • Don't give any item in it a kitLevel. That field marks class levels; one in the pack makes the step show only level 1 class rows, and your species disappear from it.

A character who already has a species can also take yours with + From pack (the Items panel lists it on the Backgrounds tab). While the pack is routed into the species step, that replaces their old species too.

More species

Lineages. A feature choice offers a closed list of options. Each option's effects join the species when it's picked, and its autoInclude adds other items: here the Cinderborn lineage adds the built-in Fire Bolt cantrip to the sheet as a spell of its own.

{
  "slug": "my-ashborn-species",
  "name": "Ashborn (homebrew species)",
  "system": "5.5e Compatible",
  "derivedFrom": "5-5e-core",
  "category": "addon",
  "version": "1.0.0",
  "license": "USER_HOMEBREW",
  "source": "My table's homebrew.",
  "attribution": "",
  "description": "",
  "requiredDecisions": [],
  "items": [
    {
      "kind": "inventoryItem",
      "key": "SPECIES_ASHBORN",
      "spec": {
        "subType": "background",
        "name": "Ashborn",
        "meta": {
          "kind": "species",
          "size": "Medium",
          "speed": "30 ft",
          "passive": true,
          "description": "Creature Type: Humanoid. Darkvision 60 ft. Choose a lineage: Cinderborn, Smokeborn or Swiftborn."
        },
        "effects": [
          {
            "id": "ASHBORN_DARKVISION",
            "target": "SENSE_DARKVISION",
            "op": "setMin",
            "value": 60,
            "condition": "",
            "trigger": ""
          }
        ],
        "choices": [
          {
            "id": "ashborn_lineage",
            "kind": "feature",
            "prompt": "Choose your Ashborn lineage",
            "pick": 1,
            "options": [
              {
                "id": "cinderborn",
                "label": "Cinderborn",
                "description": "Resistance to fire damage. You know the Fire Bolt cantrip.",
                "effects": [
                  {
                    "id": "ASHBORN_CINDER_FIRE",
                    "target": "RESIST_FIRE",
                    "op": "setMin",
                    "value": 1,
                    "condition": "",
                    "trigger": ""
                  }
                ],
                "autoInclude": [
                  {
                    "packSlug": "5-5e-srd-spells",
                    "itemKey": "SPELL_FIRE_BOLT",
                    "alwaysPrepared": true
                  }
                ]
              },
              {
                "id": "smokeborn",
                "label": "Smokeborn",
                "description": "Proficiency in Stealth.",
                "effects": [
                  {
                    "id": "ASHBORN_SMOKE_STEALTH",
                    "target": "P_STE",
                    "op": "setMin",
                    "value": 1,
                    "condition": "",
                    "trigger": ""
                  }
                ]
              },
              {
                "id": "swiftborn",
                "label": "Swiftborn",
                "description": "Your Speed increases by 5 feet.",
                "effects": [
                  {
                    "id": "ASHBORN_SWIFT_SPEED",
                    "target": "SPEED",
                    "op": "add",
                    "value": 5,
                    "condition": "",
                    "trigger": ""
                  }
                ]
              }
            ]
          }
        ]
      }
    }
  ]
}

Each option has an id (unique in the choice), a label (shown, and kept with the character's answer), a description, effects, and optionally autoInclude and choices. Inside an option, only skillProf and spell (power) choices are asked; other kinds are ignored there.

A spell granted with "alwaysPrepared": true, such as Fire Bolt here, arrives prepared and shows an Always prepared chip on the Form View. It doesn't count against the character's prepared spells.

The 5e version. 5e species raise abilities directly with effects, and grant their languages as effects too. This is the Emberkin row from a 5e pack ("system": "5e Compatible", "derivedFrom": "5e-core"):

{
  "kind": "inventoryItem",
  "key": "SPECIES_EMBERKIN_5E",
  "spec": {
    "subType": "background",
    "id": "SPECIES_EMBERKIN_5E",
    "name": "Emberkin",
    "meta": {
      "size": "Medium",
      "speed": "30 ft",
      "passive": true,
      "description": "+2 Charisma, +1 Constitution, darkvision 60 ft, fire resistance, Common and Primordial."
    },
    "effects": [
      {
        "id": "EMBERKIN5_CHA",
        "target": "CHA",
        "op": "add",
        "value": 2,
        "condition": "",
        "trigger": ""
      },
      {
        "id": "EMBERKIN5_CON",
        "target": "CON",
        "op": "add",
        "value": 1,
        "condition": "",
        "trigger": ""
      },
      {
        "id": "EMBERKIN5_DV",
        "target": "SENSE_DARKVISION",
        "op": "setMin",
        "value": 60,
        "condition": "",
        "trigger": ""
      },
      {
        "id": "EMBERKIN5_FIRE",
        "target": "RESIST_FIRE",
        "op": "setMin",
        "value": 1,
        "condition": "",
        "trigger": ""
      },
      {
        "id": "EMBERKIN5_COMMON",
        "target": "L_COMMON",
        "op": "setMin",
        "value": 1,
        "condition": "",
        "trigger": ""
      },
      {
        "id": "EMBERKIN5_PRIM",
        "target": "L_PRIMORDIAL",
        "op": "setMin",
        "value": 1,
        "condition": "",
        "trigger": ""
      }
    ]
  }
}

A background

The Lamplighter is a 5.5e background: proficiency in Investigation, Perception and Tinker's Tools, +3 to share between Dexterity, Intelligence and Wisdom, and an Origin feat of the player's choice.

{
  "slug": "my-lamplighter",
  "name": "Lamplighter (homebrew background)",
  "system": "5.5e Compatible",
  "derivedFrom": "5-5e-core",
  "category": "addon",
  "version": "1.0.0",
  "license": "USER_HOMEBREW",
  "source": "My table's homebrew.",
  "attribution": "",
  "description": "",
  "requiredDecisions": [],
  "items": [
    {
      "kind": "inventoryItem",
      "key": "BACKGROUND_LAMPLIGHTER",
      "spec": {
        "subType": "background",
        "id": "BACKGROUND_LAMPLIGHTER",
        "name": "Lamplighter",
        "meta": {
          "passive": true,
          "description": "Ability Scores: Dexterity, Intelligence, Wisdom. Skills: Investigation, Perception. Tool: Tinker's Tools."
        },
        "effects": [
          {
            "id": "LAMPLIGHTER_INV",
            "target": "P_INV",
            "op": "setMin",
            "value": 1,
            "condition": "",
            "trigger": ""
          },
          {
            "id": "LAMPLIGHTER_PERC",
            "target": "P_PERC",
            "op": "setMin",
            "value": 1,
            "condition": "",
            "trigger": ""
          },
          {
            "id": "LAMPLIGHTER_TOOL",
            "target": "T_TINKER",
            "op": "setMin",
            "value": 1,
            "condition": "",
            "trigger": ""
          }
        ],
        "choices": [
          {
            "id": "lamplighter_asi",
            "kind": "abilityIncrease",
            "prompt": "Distribute +3 across Dexterity, Intelligence, Wisdom (max +2 each)",
            "from": [
              "DEX",
              "INT",
              "WIS"
            ],
            "total": 3,
            "perAbilityCap": 2
          },
          {
            "id": "lamplighter_feat",
            "kind": "feat",
            "prompt": "Choose an Origin feat",
            "packSlug": "5-5e-srd-feats",
            "filter": {
              "category": "Origin Feat"
            },
            "pick": 1
          }
        ]
      }
    }
  ]
}

In play, when the pack is routed into Choose Your Background, a new character sees the Lamplighter card on that step. Clicking it opens the choices window with two questions: share out the +3 (no more than +2 on one ability), and pick an Origin feat from the built-in feats. If the feat has choices of its own, such as which spells Magic Initiate teaches, they open underneath it. Once they confirm, the background and the feat are both on the sheet, as two rows.

Choose Your Background: the Lamplighter card, with its From line naming the homebrew background pack. The choices window: Alert as the Origin feat, +2 Intelligence and +1 Wisdom, Confirm. Then the finished sheet's Main tab: Features with Alert and Lamplighter, and Investigation and Perception proficient.

What's new here:

  • Fixed proficiencies are effects: P_INV, P_PERC and T_TINKER, each setMin 1. Tools are T_ IDs, such as T_THIEVES_TOOLS.
  • The 5.5e ability increase is a choice: total 3, perAbilityCap 2, from the three abilities the background names.
  • The Origin feat is a feat choice:
Field What it does Here
kind Offers feats from a pack. feat
packSlug The pack the feats come from. 5-5e-srd-feats, the built-in 5.5e feats.
filter Narrows them by meta.category: a feat whose category contains the text is offered. { "category": "Origin Feat" }
pick How many to choose. 1

The picked feat arrives as its own row, with its own effects. Anything the feat would grant by autoInclude doesn't come with it.

More backgrounds

A background that grants one feat. Instead of a choice, autoInclude adds a named feat to the sheet along with the background. packSlug and itemKey say which item; both are needed.

{
  "slug": "my-ember-warden",
  "name": "Ember Warden (homebrew background)",
  "system": "5.5e Compatible",
  "derivedFrom": "5-5e-core",
  "category": "addon",
  "version": "1.0.0",
  "license": "USER_HOMEBREW",
  "source": "My table's homebrew.",
  "attribution": "",
  "description": "",
  "requiredDecisions": [],
  "items": [
    {
      "kind": "inventoryItem",
      "key": "BACKGROUND_EMBER_WARDEN",
      "spec": {
        "subType": "background",
        "name": "Ember Warden",
        "meta": {
          "kind": "background",
          "passive": true,
          "description": "Ability Scores: Strength, Constitution, Wisdom. Feat: Alert. Skills: Athletics, Survival. Tool: Smith's Tools."
        },
        "effects": [
          {
            "id": "EMBER_WARDEN_ATH",
            "target": "P_ATH",
            "op": "setMin",
            "value": 1,
            "condition": "",
            "trigger": ""
          },
          {
            "id": "EMBER_WARDEN_SUR",
            "target": "P_SUR",
            "op": "setMin",
            "value": 1,
            "condition": "",
            "trigger": ""
          },
          {
            "id": "EMBER_WARDEN_TOOL",
            "target": "T_SMITH",
            "op": "setMin",
            "value": 1,
            "condition": "",
            "trigger": ""
          }
        ],
        "choices": [
          {
            "id": "ember_warden_asi",
            "kind": "abilityIncrease",
            "prompt": "Distribute +3 across Strength, Constitution, Wisdom (max +2 each)",
            "from": [
              "STR",
              "CON",
              "WIS"
            ],
            "total": 3,
            "perAbilityCap": 2
          }
        ],
        "autoInclude": [
          {
            "packSlug": "5-5e-srd-feats",
            "itemKey": "FEAT_ALERT"
          }
        ]
      }
    }
  ]
}

autoInclude can only add an item that asks no questions. Alert has none; Magic Initiate asks for spells, so a background that grants it must use a feat choice, as the Lamplighter does. RollQuest accepts the pack either way, but a player who takes a background that autoIncludes Magic Initiate gets an error and nothing is added.

The 5e version. 2014 backgrounds have no ability increase or Origin feat: skills and tools as effects, and languages as a skillProf choice.

{
  "slug": "my-lamplighter-5e",
  "name": "Lamplighter (homebrew background, 2014 rules)",
  "system": "5e Compatible",
  "derivedFrom": "5e-core",
  "category": "addon",
  "version": "1.0.0",
  "license": "USER_HOMEBREW",
  "source": "My table's homebrew.",
  "attribution": "",
  "description": "",
  "requiredDecisions": [],
  "items": [
    {
      "kind": "inventoryItem",
      "key": "BACKGROUND_LAMPLIGHTER_5E",
      "spec": {
        "subType": "background",
        "name": "Lamplighter",
        "meta": {
          "kind": "background",
          "passive": true,
          "description": "Skills: Investigation, Perception. Tool: Tinker's Tools. Languages: one of your choice."
        },
        "effects": [
          {
            "id": "LAMPLIGHTER5_INV",
            "target": "P_INV",
            "op": "setMin",
            "value": 1,
            "condition": "",
            "trigger": ""
          },
          {
            "id": "LAMPLIGHTER5_PERC",
            "target": "P_PERC",
            "op": "setMin",
            "value": 1,
            "condition": "",
            "trigger": ""
          },
          {
            "id": "LAMPLIGHTER5_TOOL",
            "target": "T_TINKER",
            "op": "setMin",
            "value": 1,
            "condition": "",
            "trigger": ""
          }
        ],
        "choices": [
          {
            "id": "lamplighter5_language",
            "kind": "skillProf",
            "prompt": "Choose 1 language",
            "from": [
              "L_DWARVISH",
              "L_ELVISH",
              "L_GIANT",
              "L_GNOMISH",
              "L_GOBLIN",
              "L_HALFLING",
              "L_ORC"
            ],
            "pick": 1
          }
        ]
      }
    }
  ]
}

What players see

  • In the builder. Species and backgrounds routed into their steps are cards among the built-in ones, with From and your pack's name. Feats aren't a builder step: they arrive through a background's feat choice, or from + From pack. See Create a character for the choices window.
  • On the sheet. Feats, species and backgrounds are listed on the Main tab's Features tab. In the Items panel, feats are on the Feats tab, with Category and Description; species and backgrounds are on the Backgrounds tab.
  • Picks are written onto the sheet. A skill, language or ability increase picked in the choices window is written onto the sheet when it's made. An ability increase stays when the player re-rolls or reassigns their ability scores.
  • Removing the item takes its picks back. Delete a feat, species or background from the sheet, and RollQuest lowers the skills, languages and ability scores its choices raised, unless something else on the sheet still gives them. A message says what it took back. On an older character whose ability scores were last set before RollQuest kept track of chosen increases, it leaves the scores alone and says Ability scores were left as they are: run Set Ability Scores to bring them in step.

Your homebrew feats aren't offered where the built-in rules offer feats: a built-in background's Origin feat, the Ability Score Improvement or feat choice at level 4, and the Epic Boon at level 19 all list the built-in feats. Players add yours from + From pack.

Choices, field by field

The choices on this page, side by side. Every kind is covered in Choices and grants.

Field Used by What it does
id all The choice's ID, unique in the item. The player's answer is kept under it.
kind all skillProf, abilityIncrease, feature, feat; also asiOrFeat (an ability increase or a feat), power (spells), spellSwap, weaponMastery and baseWeapon.
prompt all The question.
from skillProf, abilityIncrease The IDs to choose from.
pick skillProf, feature, feat How many to choose. Default 1.
tier skillProf 2 for expertise.
total, perAbilityCap, maxScore abilityIncrease Points to share, the most per ability, and the highest a score can reach.
options feature The list to choose from, each with id, label, description, effects, and optionally autoInclude and choices.
packSlug, filter feat Where the feats come from, and the category text to match.

The check that runs when you create the pack reads each choice. A misspelt kind or a missing id is refused (CHOICE_INVALID), so is an ID in from that the system doesn't have (CHOICE_FROM_UNRESOLVED), and so is a packSlug that names no pack it can see (PACK_REFERENCE_UNKNOWN_PACK). It can't tell whether a choice makes sense, though: an abilityIncrease whose total can't be reached is accepted. Take every new feat, species and background on a test character before your players do.

5e and 5.5e

5e (2014) 5.5e (2024)
system, derivedFrom "5e Compatible", "5e-core" "5.5e Compatible", "5-5e-core"
Species step Choose Your Race Choose Your Species
Ability increases On the species, as effects (CHA add 2) On the background, as an abilityIncrease choice
Origin feat None A feat choice on the background, from 5-5e-srd-feats
Feat categories Feat Origin Feat, General Feat, Fighting Style, Epic Boon
Extra hit points per level HP_MISC_BONUS HP_MAX
Senses SENSE_DARKVISION Also SENSE_BLINDSIGHT, SENSE_TREMORSENSE, SENSE_TRUESIGHT
Languages No L_COMMON_SIGN L_COMMON_SIGN (Common Sign Language)

A pack that uses the other edition's IDs in an effect is refused (EFFECT_TARGET_UNRESOLVED), and so is one that offers them in a choice's from: L_COMMON_SIGN in a 5e pack's language choice is refused with CHOICE_FROM_UNRESOLVED.

Mistakes that get a pack refused

Code What you wrote Fix
SUBTYPE_UNDECLARED "subType": "species". Species and backgrounds are background.
EFFECT_TARGET_UNRESOLVED An ID that isn't in the edition, such as HP_MISC_BONUS in 5.5e or SENSE_BLINDSIGHT in 5e. Use the edition's ID (table above).
CHOICE_MAX_SCORE_INVALID maxScore as text, such as "30". A whole number: 30.
CHOICE_INVALID A choice kind that doesn't exist, such as language or tool, or spell, or a choice with no id. Languages, tools and skills are skillProf; spells are power. Give every choice an ID.
CHOICE_FROM_UNRESOLVED An ID in a choice's from that the system doesn't have, such as L_KLINGON, or another edition's. Use the edition's IDs (table above).
PACK_REFERENCE_UNKNOWN_ITEM An autoInclude naming an item that doesn't exist, such as FEAT_ALERTT. Check the key in the pack you name.
PACK_REFERENCE_UNKNOWN_PACK An autoInclude, or a feat choice's packSlug, naming a pack that isn't there, such as 5-5e-srd-feat. Use the built-in pack's slug, such as 5-5e-srd-feats, or your own pack's.
EFFECT_CONDITION_PROSE A condition in words. A formula starting with =, or empty.

Every code is explained in When a pack is refused.

Mistakes the check lets through

  • An abilityIncrease whose total can't be reached, such as 3 points across two abilities with a cap of 1. The player can't confirm the window.
  • An autoInclude of an item with choices. Refused when a player adds the item.
  • Speed written only in meta.speed. The sheet stays at 30 ft.
  • A species pack with other items in it, routed into the species step: they appear as species.

Choices and grants · Effects: what an item can change · Subclasses and class features · Create a character · Put your pack on a table