Spells
This page shows how to write a homebrew spell, from an attack spell to a save spell with an area, how it grows when it's cast with a higher slot, and how it reaches the Spells tab and Spell FX, for 5e and 5.5e.
A spell in a homebrew pack is one row in the items list, of the kind RollQuest calls a power. Once you bind the pack to a game, a player adds the spell to their sheet and it works like a built-in one: it sits on the Spells tab under its level, spends a spell slot when it's cast, rolls its attack and damage, and with Target it lands on the creatures they pick, who roll their saving throws (rolls to resist) where the spell asks for one. 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. Spell FX, the animation a spell plays on the board, needs the Game Master (GM) to be on Pro.
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. Buttons (actions), targeting (targets and applies) and the fields every item shares are explained in Weapons and armour; this page covers what's particular to spells.
A spell with an attack roll
Ember Lance is a level 1 evocation: a ranged spell attack that deals 3d8 fire damage, and 1d8 more for each slot level above 1.
{
"slug": "my-ember-lance",
"name": "Ember Lance (homebrew spell)",
"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": "SPELL_EMBER_LANCE",
"spec": {
"subType": "power",
"id": "SPELL_EMBER_LANCE",
"name": "Ember Lance",
"meta": {
"level": 1,
"school": "Evocation",
"castingTime": "1A",
"range": "60 ft",
"components": "V/S",
"duration": "Instantaneous",
"concentration": false,
"ritual": false,
"saveAbility": "",
"saveDC": "",
"effectSummary": "Ranged spell attack, 3d8 fire",
"notes": "+1d8 per slot above 1.",
"source": "Sorcerer, Wizard",
"upcastFormula": "1d8",
"description": "A spear of white-hot cinders streaks toward a creature within range.",
"targets": {
"max": 1
},
"applies": [
{
"kind": "damage",
"formula": "=3d8",
"damageType": "fire"
}
]
},
"actions": [
{
"id": "ATK",
"label": "Attack",
"formula": "=1d20+SPELL_ATTACK",
"damageType": "",
"tag": "ATK_ROLL"
},
{
"id": "DMG",
"label": "Damage",
"formula": "=3d8",
"damageType": "fire",
"tag": "DMG_ROLL"
}
]
}
}
]
}
In play, a sorcerer or wizard who adds Ember Lance finds it on their Spells tab under Level 1. Opening it shows Cast at, Target, Attack and Damage. The first press spends a level 1 slot (or the level set in Cast at). Attack rolls a d20 plus their spell attack bonus; Damage rolls 3d8 fire, plus 1d8 for each level above 1.

The spell, field by field
The item's own fields:
| Field | What it does | Allowed values | Checked? |
|---|---|---|---|
spec.subType |
Makes it a spell: the Spells tab, slots, and Cast. | power. |
Yes: spell is refused, and so is a row without one. |
spec.name |
The spell's name. | Any text. | Yes: a row without one is refused (ITEM_NAME_MISSING). |
spec.actions |
The roll buttons. A spell with no actions gets a Cast button that spends the slot and posts the cast. | Attack: =1d20+SPELL_ATTACK, tag ATK_ROLL. Damage: tag DMG_ROLL and a damage type. Healing: tag HEAL_ROLL, damage type healing. |
Yes, the formulas and types. |
spec.effects |
Changes to the caster's numbers, counted only while the spell is prepared. Most spells have none. | A list of effects (see Effects: what an item can change). | Yes. |
spec.prepared |
Whether it arrives prepared. | true or false. Left out, it arrives unprepared. |
No. |
SPELL_ATTACK is the caster's spell attack bonus, worked out from their spellcasting ability and proficiency bonus. For a character with two spellcasting classes, the spell uses the class it belongs to (see source, below).
The fields inside meta:
| Field | What it does | Allowed values | Checked? |
|---|---|---|---|
level |
The spell's level. It decides which slot casting it spends, and where it's listed. | A whole number from 0 to 9. 0 is a cantrip: cast at will, never spends a slot. | No. |
school |
Shown on the spell's reference card. | Any text, such as Evocation. The built-in 5.5e spells leave it out. |
No. |
castingTime |
Shown on the spell's row as you write it. | The built-in spells use 1A (an action), 1BA (a bonus action), 1R (a reaction), 1 min, 10 min, 1 hr. |
No. |
range |
Shown on the spell's row and when it's cast. | Any text, such as 60 ft, Touch or Self. |
No. |
components |
Shown when the spell is cast. | Any text, such as V/S/M. |
No. |
material |
Shown on the reference card after the components. | Any text. | No. |
duration |
Shown when the spell is cast. | Any text. | No. |
concentration |
Shown as Concentration when the spell is cast. It doesn't track concentration: exclusiveGroup does. |
true or false. |
No. |
exclusiveGroup |
Casting the spell takes the group from whatever held it: chat says the old spell ended, the token shows a badge, and whatever the old spell put on other creatures through applies (an effect or a condition) comes off them. |
concentration for a concentration spell. |
No. |
ritual |
Shown on the reference card. There's no casting without a slot for rituals. | true or false. |
No. |
saveAbility, saveDC |
Shown when the spell is opened, such as DEX save DC 13. They don't make anyone roll: the save inside applies does. Leave saveDC empty to show the caster's own Spell Save DC. |
An ability, STR to CHA; a number or "". |
No. |
effectSummary |
A short summary, shown when there's no description. | Any text. | No. |
notes |
A footnote, shown when the spell is opened and as Instructions when it's cast. | Any text. | No. |
description |
The spell's text. | Any text. | No. |
source |
The classes that have this spell, separated by commas. The builder's Edit Spells step only offers a spell whose source names one of the character's classes, and RollQuest uses it to decide which class casts it. |
Class names as RollQuest spells them: Bard, Cleric, Druid, Paladin, Ranger, Sorcerer, Warlock, Wizard. |
No. |
upcastFormula |
The extra dice for each slot level above the spell's own (below). | Dice such as 1d8 or 2d6. |
No. |
targets, applies |
Who the spell can target, and what happens to them. | As for weapons; spells also use save, condition and effect entries (below). |
Yes. |
area |
The shape Place area draws on the board. | See below. | Yes. |
A spell with a save and an area
Cinder Burst is a level 2 spell that fills a 10 ft radius with embers. Each creature inside makes a Dexterity saving throw and takes 4d6 fire damage, or half on a success:
{
"slug": "my-cinder-burst",
"name": "Cinder Burst (homebrew spell)",
"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": "SPELL_CINDER_BURST",
"spec": {
"subType": "power",
"id": "SPELL_CINDER_BURST",
"name": "Cinder Burst",
"meta": {
"level": 2,
"school": "Evocation",
"castingTime": "1A",
"range": "90 ft",
"components": "V/S/M",
"material": "a pinch of ash",
"duration": "Instantaneous",
"concentration": false,
"ritual": false,
"saveAbility": "DEX",
"saveDC": "",
"effectSummary": "10-ft radius; 4d6 fire, half on save",
"notes": "+1d6 per slot above 2.",
"source": "Druid, Sorcerer, Wizard",
"upcastFormula": "1d6",
"area": {
"shape": "circle",
"radiusFt": 10
},
"applies": [
{
"kind": "damage",
"formula": "=4d6",
"damageType": "fire",
"save": {
"ability": "DEX",
"onSuccess": "half"
}
}
],
"description": "Embers erupt at a point you choose."
},
"actions": [
{
"id": "DMG",
"label": "Damage",
"formula": "=4d6",
"damageType": "fire",
"tag": "DMG_ROLL"
}
]
}
}
]
}
area sets the shape:
shape |
Size fields, in feet | Example |
|---|---|---|
circle |
radiusFt |
A fireball: { "shape": "circle", "radiusFt": 20 } |
square |
sizeFt |
A cube: { "shape": "square", "sizeFt": 15 } |
cone |
lengthFt |
A cone of cold: { "shape": "cone", "lengthFt": 60 } |
rectangle |
lengthFt and widthFt |
A line: { "shape": "rectangle", "lengthFt": 100, "widthFt": 5 } |
Add "origin": "self" for a shape that starts at the caster, such as a cone breathed from the caster's mouth or an aura around them; the default, "origin": "point", is a point the player chooses. Each shape takes only its own size fields.
save inside the applies entry makes each target roll before the damage lands:
| Field | What it does | Allowed values |
|---|---|---|
ability |
The ability the target saves with. Without it, there's no save. | STR, DEX, CON, INT, WIS, CHA. |
onSuccess |
What a successful save does. | half (half damage; damage only) or negate (nothing happens; the default). |
dc |
A fixed DC. Left out, the caster's Spell Save DC is used, which is what spells want. | A whole number from 1 to 50. |
repeatAtEndOfTurn |
For a condition: the target saves again at the end of each of its turns, and the condition ends on a success. | true. |
In play, the player opens the spell and clicks Target, then Place area. The sheet steps aside while they place the circle on the board; the creatures inside are picked for them. Resolve Cinder Burst on 3 (with their own count) casts it. Each player rolls their own character's save on their save card, the GM rolls for monsters, and the damage lands, halved for those who saved. See Spells and casting and Area effect templates.
Casting with a higher slot
upcastFormula is the extra dice for each slot level above the spell's own. When a player sets Cast at higher, RollQuest adds them to every button that doesn't roll a d20:
- Ember Lance has
"upcastFormula": "1d8". Cast at level 3, two above its own, Damage rolls=3d8 + 2d8. Attack is unchanged. - Write dice only. Anything else, such as
+1 target, is added to the formula as written for each level, and doesn't change how many creatures can be targeted. Put that kind of rule innotesinstead. - Cast at goes from the spell's own level up to 9; the slot spent is the level it shows.
- A cast through Target and Resolve uses Cast at too: it spends that level's slot, and the damage that lands has the extra dice.
More spells
Each of these is a complete pack that RollQuest accepts.
A cantrip that grows with the character
A damage cantrip gets more dice at character levels 5, 11 and 17. Each tier is its own button, with an ID ending _L and the level it unlocks at: DMG_L5 is greyed out until level 5. Each applies entry names its button with actionId, so the right tier lands on the target.
{
"slug": "my-ember-flick",
"name": "Ember Flick (homebrew cantrip)",
"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": "SPELL_EMBER_FLICK",
"spec": {
"subType": "power",
"name": "Ember Flick",
"meta": {
"level": 0,
"school": "Evocation",
"castingTime": "1A",
"range": "60 ft",
"components": "V/S",
"duration": "Instantaneous",
"concentration": false,
"ritual": false,
"saveAbility": "",
"saveDC": "",
"effectSummary": "Ranged spell attack, fire",
"notes": "Scales 1d8/2d8/3d8/4d8.",
"source": "Sorcerer, Wizard",
"description": "You flick a burning ember at a creature within range.",
"targets": {
"max": 1
},
"applies": [
{
"kind": "damage",
"formula": "=1d8",
"damageType": "fire",
"actionId": "DMG_L1"
},
{
"kind": "damage",
"formula": "=2d8",
"damageType": "fire",
"actionId": "DMG_L5"
},
{
"kind": "damage",
"formula": "=3d8",
"damageType": "fire",
"actionId": "DMG_L11"
},
{
"kind": "damage",
"formula": "=4d8",
"damageType": "fire",
"actionId": "DMG_L17"
}
]
},
"actions": [
{
"id": "ATK",
"label": "Attack",
"formula": "=1d20+SPELL_ATTACK",
"damageType": "",
"tag": "ATK_ROLL"
},
{
"id": "DMG_L1",
"label": "Damage (L1-4, 1d8)",
"formula": "=1d8",
"damageType": "fire",
"tag": "DMG_ROLL"
},
{
"id": "DMG_L5",
"label": "Damage (L5-10, 2d8)",
"formula": "=2d8",
"damageType": "fire",
"tag": "DMG_ROLL"
},
{
"id": "DMG_L11",
"label": "Damage (L11-16, 3d8)",
"formula": "=3d8",
"damageType": "fire",
"tag": "DMG_ROLL"
},
{
"id": "DMG_L17",
"label": "Damage (L17+, 4d8)",
"formula": "=4d8",
"damageType": "fire",
"tag": "DMG_ROLL"
}
]
}
}
]
}
A healing spell
HEAL_ROLL, the damage type healing and a heal entry in applies. SPELL_ABIL_MOD is the caster's spellcasting ability modifier.
{
"slug": "my-hearthglow",
"name": "Hearthglow (homebrew healing spell)",
"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": "SPELL_HEARTHGLOW",
"spec": {
"subType": "power",
"name": "Hearthglow",
"meta": {
"level": 1,
"school": "Abjuration",
"castingTime": "1BA",
"range": "30 ft",
"components": "V/S",
"duration": "Instantaneous",
"concentration": false,
"ritual": false,
"saveAbility": "",
"saveDC": "",
"effectSummary": "Heal 1d8 + spellcasting mod",
"notes": "+1d8 per slot above 1.",
"source": "Cleric, Druid",
"upcastFormula": "1d8",
"description": "A creature you can see within range is bathed in hearth-light and regains Hit Points.",
"targets": {
"max": 1
},
"applies": [
{
"kind": "heal",
"formula": "=1d8+SPELL_ABIL_MOD"
}
]
},
"actions": [
{
"id": "HEAL",
"label": "Healing",
"formula": "=1d8+SPELL_ABIL_MOD",
"damageType": "healing",
"tag": "HEAL_ROLL"
}
]
}
}
]
}
A concentration spell that imposes a condition
A condition entry puts a condition on each target that fails its save, here Restrained for up to 10 rounds, saving again at the end of each of its turns. exclusiveGroup makes it a concentration spell: casting another concentration spell ends this one, chat says so, and the Restrained it put on its target comes off.
{
"slug": "my-ember-snare",
"name": "Ember Snare (homebrew concentration spell)",
"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": "SPELL_EMBER_SNARE",
"spec": {
"subType": "power",
"name": "Ember Snare",
"meta": {
"level": 2,
"school": "Conjuration",
"castingTime": "1A",
"range": "60 ft",
"components": "V/S",
"duration": "Concentration, up to 1 minute",
"concentration": true,
"exclusiveGroup": "concentration",
"ritual": false,
"saveAbility": "STR",
"saveDC": "",
"effectSummary": "Restrained (concentration 1 min)",
"notes": "The target repeats the save at the end of each of its turns.",
"source": "Druid, Ranger, Wizard",
"description": "Burning chains burst from the ground around a creature you can see. It must succeed on a Strength saving throw or be Restrained.",
"targets": {
"max": 1
},
"applies": [
{
"kind": "condition",
"conditionId": "restrained",
"durationRounds": 10,
"save": {
"ability": "STR",
"onSuccess": "negate",
"repeatAtEndOfTurn": true
}
}
]
},
"actions": []
}
}
]
}
The conditions a spell can impose are the game system's: blinded, charmed, deafened, exhaustion, frightened, grappled, incapacitated, invisible, paralyzed, petrified, poisoned, prone, restrained, stunned and unconscious, plus RollQuest's own markers such as blessed, hasted, slowed and marked. A condition is a badge on the token with its description: it doesn't change any roll by itself (see Conditions).
A spell that changes the target's sheet
An effect entry changes a number on the target's sheet for a number of rounds. Ashen Ward gives a willing creature resistance to fire for an hour (600 rounds):
{
"slug": "my-ashen-ward",
"name": "Ashen Ward (homebrew buff spell)",
"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": "SPELL_ASHEN_WARD",
"spec": {
"subType": "power",
"name": "Ashen Ward",
"meta": {
"level": 1,
"school": "Abjuration",
"castingTime": "1A",
"range": "Touch",
"components": "V/S/M",
"material": "a pinch of cold ash",
"duration": "1 hour",
"concentration": false,
"ritual": false,
"saveAbility": "",
"saveDC": "",
"effectSummary": "Resistance to fire damage (1 hr)",
"notes": "",
"source": "Cleric, Druid, Wizard",
"description": "A willing creature you touch has resistance to fire damage for 1 hour.",
"targets": {
"max": 1
},
"applies": [
{
"kind": "effect",
"target": "RESIST_FIRE",
"op": "setMin",
"value": 1,
"durationRounds": 600
}
]
},
"actions": []
}
}
]
}
The effect reaches creatures with a character sheet. A monster without one gets nothing. In a battle it ends when its rounds run out. Outside a battle the rounds run on the game's world clock: at 6 seconds a round, 600 rounds is an hour of game time, and while the clock isn't running the hour waits. Casting it again renews it.
A spell that adds a die to rolls
An effect entry can also aim at a roll. Kindled Aim works like Bless for attack rolls: up to three creatures add 1d4 to every attack roll they make for 10 rounds (1 minute), while the caster keeps concentrating.
{
"slug": "my-kindled-aim",
"name": "Kindled Aim (homebrew spell)",
"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": "SPELL_KINDLED_AIM",
"spec": {
"subType": "power",
"name": "Kindled Aim",
"meta": {
"level": 1,
"school": "Enchantment",
"castingTime": "1A",
"range": "30 ft",
"components": "V/S",
"duration": "Concentration, up to 1 minute",
"concentration": true,
"exclusiveGroup": "concentration",
"ritual": false,
"saveAbility": "",
"saveDC": "",
"effectSummary": "Up to 3 creatures add 1d4 to attack rolls (concentration 1 min)",
"notes": "+1 creature per slot above 1.",
"source": "Cleric, Paladin",
"description": "Up to three creatures you can see within range feel a spark of warmth. Whenever one of them makes an attack roll before the spell ends, it adds 1d4 to the roll.",
"targets": {
"max": 3
},
"applies": [
{
"kind": "effect",
"target": "ATK_ROLL",
"op": "bonusDie",
"value": "1d4",
"durationRounds": 10
}
]
},
"actions": []
}
}
]
}
targets{ "max": 3 }lets the player pick up to three creatures with Target; Resolve puts the bonus on each one's sheet.- The
appliesentry is an effect onATK_ROLL, every attack roll, withbonusDie"1d4": each attack the target makes rolls an extra d4 and adds it. The bonus counts on attacks rolled from the sheet's buttons and on attacks made through Target alike. Any roll target works the same way: for saving throws too, add an entry for each,STR_SAVE_ROLLtoCHA_SAVE_ROLL. Effects and their targets are in Effects: what an item can change. exclusiveGroupconcentrationties the bonus to the caster's concentration: when they cast another concentration spell, the bonus comes off every target.upcastFormulaonly adds dice, so the extra creature for a higher slot is written innotesfor the table to apply.
The built-in Bless and Shield of Faith don't automate their bonus: casting them spends the slot and takes concentration, and the table adds the bonus. A homebrew spell written like Kindled Aim does it for you.
The 5e version
A 5e spell is written the same way. The pack's system and derivedFrom change to "5e Compatible" and "5e-core":
{
"slug": "my-ember-lance-5e",
"name": "Ember Lance (homebrew spell, 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": "SPELL_EMBER_LANCE_5E",
"spec": {
"subType": "power",
"name": "Ember Lance",
"meta": {
"level": 1,
"school": "Evocation",
"castingTime": "1A",
"range": "60 ft",
"components": "V/S",
"duration": "Instantaneous",
"concentration": false,
"ritual": false,
"saveAbility": "",
"saveDC": "",
"effectSummary": "Ranged spell attack, 3d8 fire",
"notes": "+1d8 per slot above 1.",
"source": "Sorcerer, Wizard",
"upcastFormula": "1d8",
"description": "A spear of white-hot cinders streaks toward a creature within range.",
"targets": {
"max": 1
},
"applies": [
{
"kind": "damage",
"formula": "=3d8",
"damageType": "fire"
}
]
},
"actions": [
{
"id": "ATK",
"label": "Attack",
"formula": "=1d20+SPELL_ATTACK",
"damageType": "",
"tag": "ATK_ROLL"
},
{
"id": "DMG",
"label": "Damage",
"formula": "=3d8",
"damageType": "fire",
"tag": "DMG_ROLL"
}
]
}
}
]
}
How a spell reaches players
Bind the pack to your game with Bind to this table in My Homebrew (see Put your pack on a table). Under Where should its items appear? you choose:
- Leave every step unticked, and the spells are offered in + From pack only.
- Tick Edit Spells, and they also appear in that step of the character builder, among the built-in spells, for characters whose class is named in the spell's
sourceand who can cast spells of its level. This step lets a character pick several, so it doesn't replace anything.
A player adds a spell from their sheet, on any plan:
- Open the character's sheet and click + From pack at the top: in the Form View, the sheet's standard tabbed layout, it's in the header, and on a Canvas sheet, drawn on artwork, it's in the top row (see Form and Canvas views).
- In Add from this table's packs, find the spell under your pack's name. Type in Search by name to narrow a long list.
- Click + Add next to the spell. It joins the Spells tab under its level.
- Prepare it if the class prepares spells: click Prepare Spells, or the dot on the spell's row.
As the GM, you can also add spells from the Items panel (Pro): click Edit, then Items in the Edit toolbar, the Spells tab and + From pack. That list shows each spell's level after its name, such as L1.

What players see:
- The spell arrives unprepared, unless the pack says
"prepared": true. Casting doesn't check Prepared, but a spell's effects only count while it's prepared. - A player can't add a spell that takes them past their class's limit: RollQuest says That exceeds your spells limit (or cantrips known limit) with the count. The GM can add it anyway. Only spells from a pack marked as a spell list (below) count towards the limit.
- A homebrew spell isn't offered when a built-in class asks for new spells at a level up, or by a feat that grants spells: those choices list the built-in spells. Add it with + From pack, or route it into Edit Spells.
Your spells in Prepare Spells
A class that prepares spells from its whole class list, such as a cleric or a druid, chooses them in Prepare Spells. That list is read from packs marked as spell lists, as RollQuest's own spell packs are. Mark yours by adding "powerList": true to the pack. This is the Hearthglow pack from above, marked:
{
"slug": "my-hearthglow",
"name": "Hearthglow (homebrew healing spell)",
"system": "5.5e Compatible",
"derivedFrom": "5-5e-core",
"category": "addon",
"version": "1.0.0",
"license": "USER_HOMEBREW",
"source": "My table's homebrew.",
"attribution": "",
"description": "",
"powerList": true,
"requiredDecisions": [],
"items": [
{
"kind": "inventoryItem",
"key": "SPELL_HEARTHGLOW",
"spec": {
"subType": "power",
"name": "Hearthglow",
"meta": {
"level": 1,
"school": "Abjuration",
"castingTime": "1BA",
"range": "30 ft",
"components": "V/S",
"duration": "Instantaneous",
"concentration": false,
"ritual": false,
"saveAbility": "",
"saveDC": "",
"effectSummary": "Heal 1d8 + spellcasting mod",
"notes": "+1d8 per slot above 1.",
"source": "Cleric, Druid",
"upcastFormula": "1d8",
"description": "A creature you can see within range is bathed in hearth-light and regains Hit Points.",
"targets": {
"max": 1
},
"applies": [
{
"kind": "heal",
"formula": "=1d8+SPELL_ABIL_MOD"
}
]
},
"actions": [
{
"id": "HEAL",
"label": "Healing",
"formula": "=1d8+SPELL_ABIL_MOD",
"damageType": "healing",
"tag": "HEAL_ROLL"
}
]
}
}
]
}
- Prepare Spells then lists the pack's spells of a level the character can cast, for a class its
sourcenames (here a cleric or a druid), beside the built-in ones, as soon as the character's sheet has the pack: after they've taken something from it, or after you've given it to them with Apply to N sheets (see Put your pack on a table). - The spells a player takes from a marked pack count towards their class's spell and cantrip limits, like the built-in ones. A character whose class casts no spells has a limit of 0, so a player can't add a cantrip from a marked pack to a fighter; the GM can.
- Leave
powerListout for spells that come on top of a class's list, such as a pack of spells a feat or a magic item grants.
Spell FX: the animation on the board
When a player casts a built-in spell at targets, it plays its own animation on the board for everyone, in a game whose GM is on Pro. RollQuest's animations are made for its built-in spells, so a homebrew spell plays nothing until someone picks one for it. The choice is made on each character's sheet:
- Open the sheet in the Form View, click Edit, then Items, and the Spells tab.
- Click Edit on the spell's row. Board effect reads Automatic (this spell's own), as it does for every spell from a pack. For a spell from your pack that means no animation: "its own" is the one RollQuest made for a built-in spell, and yours has none.
- Choose Custom…, then an Effect type and a Palette.
- Click Done. From now on, when the spell is cast at targets, everyone at the table sees that animation on the board. While your sheet is open, it covers your own board.
Preview, beside the effect, plays it on your own board only, and nobody else sees it. The open sheet covers the board, so you won't see a preview from the sheet. With one token selected it plays on that token alone, so an effect that travels, such as a Beam, shows as a burst there; select the caster's token first, then the target, to see it travel.
5e and 5.5e
A spell is written the same way in both, except:
systemandderivedFromare"5e Compatible"and"5e-core", or"5.5e Compatible"and"5-5e-core".- The built-in 5e spells carry
school; the 5.5e ones don't. Yours may have it in either. - An effect with the
sunsettrigger (Dusk) is refused in 5e. - The class names in
sourceare the same.
Mistakes that get a pack refused
| Code | What you wrote | Fix |
|---|---|---|
SUBTYPE_UNDECLARED |
"subType": "spell". |
Spells are power. |
AREA_SHAPE_UNKNOWN |
A shape such as sphere. |
circle, square, cone or rectangle. |
AREA_DIMS_MISMATCH |
The wrong size field for the shape, such as radiusFt on a cone. |
Use the shape's own fields (table above). |
APPLIES_UPCAST_KEY |
An upcast field inside applies. |
Upcasting is meta.upcastFormula. |
APPLIES_CONDITION_UNDECLARED |
A condition the system doesn't have, such as burning. |
Use one from the list above. |
APPLIES_DAMAGE_TYPE_UNDECLARED |
A damage type that doesn't exist, such as frost. |
cold. |
FORMULA_REFERENCE_UNRESOLVED |
A value that doesn't exist in a formula, such as SPELL_MOD. |
SPELL_ATTACK for attacks, SPELL_ABIL_MOD for the modifier. |
Every code is explained in When a pack is refused.
Mistakes the check lets through
saveAbilitywithout asaveinapplies. The opened spell says DEX save, but nobody is asked to roll.concentration: truewithout"exclusiveGroup": "concentration". The spell says Concentration, but casting it doesn't end another concentration spell, and the token gets no badge.- Words in
upcastFormula. They're added to the damage formula as written. - A
sourcewithout class names. The Edit Spells step never offers the spell, and a character with two spellcasting classes may cast it with the wrong ability. - No
applies. The spell rolls into chat, but there's no Target button and nothing lands on anyone. - An
appliesformula that doesn't match its button. The roll goes to chat and nothing lands. Copy the formula exactly, or addactionId.
Related
Spells and casting · Spell FX · Weapons and armour · Effects: what an item can change · Choices and grants
