-
Notifications
You must be signed in to change notification settings - Fork 281
Description
The trait advancement type would be responsible for assigning an actor any proficiencies. It is designed only for values that are true
or false
such as saving throw & skill proficiencies, armor, weapon, & tool proficiencies, languages, damage resistances, etc. It is not designed to handle expertise or properties with numeric values such as movement.
This would be able to handle cases where traits are simply granted (becoming a Fighter always gives you proficiency in simple and martial weapons) or when a choice is needed (Bards can choose between three different musical instruments).
This would resolve #1016. The closed Background MR !361 contains a complete implementation of this design outside the advancement system.
Level Up Interface
For advancements that simply grant traits this will simple show what the player is given. If a choice of traits is required then the player is given a dropdown that contains all of their options. When an option is selected it is added to the list of selected options and the dropdown is updated with a modified list showing any remaining options. An example of this UI can be seen on the old Background item type MR !358.
Configuration
The type
property in the configuration object would indicate which type of trait is being represented. "armor"
would represent armor proficiencies, "dv"
would be damage vulnerabilities, "saves"
would be saving throw proficiencies, etc.
The boolean allowReplacements
indicates whether an alternative can be chosen if the character already has proficiencies in the types granted. While not useful for classes, this will be used on backgrounds where, for example, the player can chose another skill to gain proficiency if they ones provided by the background are already proficient.
The grants
property is an array of strings containing a list of proficiencies always granted. If a category like Simple Weapons ("sim"
) is included it grants the player proficiency in that entire category.
The choices
property contains an array of objects with a count
value and an optional choices
array. The count
number indicates how many choices are given to the player. If no choices
array exists then they are able to choose from anything of that type, otherwise the choices
array lists any combination of individual entries or categories to choose from. If a category like Simple Weapons is included then the player can choose any number of items from within that category, but not the category itself.
This example indicates that the player is granted proficiency in Light Armor if they don't already have it. If they are already proficient in Light Armor, nothing happens.
{
type: "armor",
allowReplacements: false,
grants: ["lgt"],
choices: []
}
This will grant the player proficiency in the Insight and Religion skills. If they are already proficient in either of those skills, they will be able to choose a replacement from any other skill.
{
type: "skills",
allowReplacements: true,
grants: ["ins", "rel"],
choices: []
}
This will give the player a choice from any two languages in which they do not already have proficiency.
{
type: "languages",
allowReplacements: false,
grants: [],
choices: [{ count: 2 }]
}
This will give the player a choice of any three musical instruments.
{
type: "tool",
allowReplacements: false,
grants: [],
choices: [{ count: 3, choices: ["mus"] }]
}
Value
The value object contains chosen
which is an array of the choices the player made. This list will also contain any traits that were automatically granted (because it makes some behind the scenes stuff easier).
{
chosen: ["bagpipes", "flute", "viol"]
}
Progress
- [#1405] Data Structure for TraitAdvancement #2498
- [#1405] Modify trait utilities to support prefixed trait keys & add SelectChoices #2499
- [#1405] Add TraitAdvancement & TraitConfig #2522
- [#1405] Add TraitFlow & application methods #2543
- [#1405] Migrate existing class saves/skills data to TraitAdvancement #2546
- [#1405] Add traits to SRD content #2544
- [#1405] Update class journal page to display proficiencies from TraitAdvancement #2547