Skip to content

Advancement Type: Trait #1405

@arbron

Description

@arbron

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

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions