-
Notifications
You must be signed in to change notification settings - Fork 5
Description
Playtest Packet 2 describes "Spell"s which would be best implemented as an Item type. I'm going to bring some knowledge from the 5e system and make note of what shortcomings were felt by people who wanted to extend the spellcasting system
Compiling as much knowledge up front as I can about this topic because it will be a doozy.
Descriptive Text
description: HTML;
spellCircle: 'arcane' | 'divine' | 'primal' | 'wyrd'; // this selection should be extensible by modules
spellRing: number; (0 can represent cantrips, max of 9 should not be assumed, often this is expanded beyond 9)
spellSchool: 'one of the options'; // this should be extensible by modules
Origin
Something we were lacking in 5e was a way to mark where the spell came from.
E.g. a Cleric/Druid might prepare different spells for each class, but there should be a way to differentiate them.
Similarly, some items might have spells embedded in them, and ideally the system supports annotating this.
Components
5e ended up making these extensible by modules and turning them into checkboxes in the item sheet.
Target -- common item concept
A little convoluted and probably generalizable with other combat items.
Spells can affect specifically some kinds of things (all creatures, allies, enemies; sometimes also objects sometimes not objects, sometimes 'magical effects', only the caster, n creatures/allies/etcetcetc)
Then, they can affect a kind of area (within a cone/sphere/box/line, a specific selection of creatures within range)
And lastly, they have a range for when the origin of that kind of area begins (self, n ft)
target: {
creatures: {
number: number;
type: 'allies' | 'any' | 'enemies' | 'self';
alsoAffectsObjects: boolean;
},
area: {
type: 'target' | 'cone' | 'sphere' | etc
},
range: {
value: number;
unit: 'ft' | 'mile' | etc; // remember metric is probably a thing
}
}
Attacks or Saves -- common item concept
Complicated, there's probably different 'kinds' of attack rolls (weapon attack, spell attack at minimum), saves can target specific attributes, saves can be based on a specific ability score for the character.
Damage -- common item concept
Complicated, but worth building in the idea of damage types and damage groups early
Duration -- common item concept
duration: {
type: 'instantaneous' | 'time' | 'other'
// if time is the type
timeValue?: number;
timeUnit?: 'minutes' | 'hours' | 'days'; // etc.
// if 'other' is the type
// stuff like "until the start of your next turn" or "until the end of their next turn", etc...
// unsure how to represent this, an enum?
}
Casting Time -- aka "Usage Time", common concept
For spells this is pretty clearly one of:
- Action
- Bonus Action
- Reaction
- Ritual
But some features or items take 'minutes'/'hours'/etc, so we could generalize this as "usage time"
usageTime: {
type: 'ritual' | 'action' | 'bonus action' | 'reaction' | 'special' | 'time'
// if time is the type
timeValue?: number;
timeUnit?: 'minutes' | 'hours' | 'days'; // etc.
}