Skip to content

release-3.0.0

Compare
Choose a tag to compare
@github-actions github-actions released this 31 Jan 21:02
· 1782 commits to master since this release
075dd2e

Official Release Banner

It's been a long time coming, but the dnd5e system for Foundry Virtual Tabletop is now official. We've marked this occasion with a special 3.0 release of the system that includes a completely redesigned character sheet, dynamic token ring shaders, container support, and many more features and underlying architectural improvements that will be covered below.

These changes come alongside the 2.5 features, for which full patch notes are included at the bottom.

⚠️ COMPATIBILITY WARNING: ⚠️ The version 3.0.0 release of the system ONLY SUPPORTS Foundry Virtual Tabletop version 11 (release) and greater. To use this new game system version you must also use Foundry VTT version 11. If you do not wish to update your core software, please continue using a previous version of the dnd5e system.

Installation: To manually install this release, please use the following manifest URL: https://github.com/foundryvtt/dnd5e/releases/download/release-3.0.0/system.json


Table of Contents


New Features

The following contains an overview of the most prominent new features included in 3.0. There are many other changes included that should improve normal play, but don't require any specific guidance on how to find or use them.

Character Sheet

The character sheet has been completely redesigned to include some official branding and a fresh new look. For the most part, you can expect all the features and functionality you're used to (with one notable exception noted further down), but with further enhancements, and more on the way.

Character Sheet Overview
Character portrait art by Tim Kong

Known Issues: If your group still uses text-based Race & Background information, it will not appear on the new sheet, which does not have support for these text-based fields. The Race & Background must be created as Items first, and then dragged to the sheet.

Edit & Play Mode

The character sheet now features a toggle in the top-left to switch between two different modes. In 'Play' mode, the sheet is optimised for normal play. You will be able to edit HP, mark off spell slots, equip and attune to items, toggle effects on and off, use items, roll ability checks and saving throws, and any number of things you might be expected to do during the course of the session. Things like adjusting ability scores or skill proficiencies can only be done when switching to 'Edit' mode, however.

Mode Toggle

Not only does this allow for some of the clutter required to display editing controls to be hidden away during normal use of the sheet, it also resolves a long-standing inconvenience around attributes modified by Active Effects. Edit mode will always show the base value of an attribute, while Play mode will always show its current value, so there is no longer a need to disable the fields on the sheet in order to prevent confusion.

Searching, Filtering, Grouping, & Sorting

Each of the inventory, features, and spells tabs have been imbued with the functionality to quickly filter the Items shown in the tab by their name or by various other properties. The lists can also be sorted alphabetically, or ordered manually. The inventory tab allows for toggling between grouped and ungrouped display, and the features tab allows for toggling between active/passive grouping, and grouping based on the source of the feature.

Inventory Tab

Rich Tooltips

Various parts of the UI have been augmented with rich tooltips. This is most noticeable in the character sheet, but it extends to other areas of the system too, such as Item content links, and the rule page enrichers covered later.

Item Tooltip Spell Tooltip Feature Tooltip

Known Issues: If a tooltip is spawned far from the cursor and then locked, it will immediately disappear as soon as the mouse is moved. This is a limitation of the core tooltip API that will be resolved in version 12 of the software. In the meantime, the cursor should first be moved close to the tooltip if intending to lock it.

Conditions

The effects tab now includes a toggle for each of the core system conditions, allowing them to be toggled on and off from the sheet for convenience, or in cases where tokens are not available or in use.

Effects Tab

The token status effects have also been updated to have a 1:1 correspondence to the D&D 5e conditions, with the addition of several other useful status effects that aren't true conditions. Special thanks to @krbz999 for his initial work on that.

Favourites

Space at the bottom left of the character sheet has been reserved for the character's favourites. These might be weapons, spells, features, or skills the character frequently uses, or resources or items that the character needs to keep careful track of. Favourites can be added by dragging-and-dropping something from the sheet onto the favourites section. Currently it supports dropping Items, Active Effects, Skills, Tools, and Spell Slots (drag the spell level header from the spells tab), and can be extended to add support for more types of favourites.

Favourites

Resources

The concept of 3 'character'-level resources has been sunset in the system in favour of all resources coming via Items. What this means is that already-configured resources will continue to be visible on the new character sheets for now, under the favourites tab, and will still exist in the character data model, but new characters will not see them and will not be able to use them.

Legacy Resources

In order to bridge a gap left by the sunsetting of this feature, tokens may now have Item 'uses' configured for display on their token bars.

New Token Bar Configuration Options

Containers

This long-awaited feature has finally arrived. The dnd5e 3.0 update includes fully-functional containers. Drag-and-drop Items between container sheets, between containers and Actor sheets, or to and from the sidebar or compendium packs. Containers can contain other containers up to five layers deep, and can be moved around wholesale, taking the entirety of their nested contents with them.

Container Sheet

Usage Note: Containers behave very similarly to Folders. Moving an Item from the sidebar into a container also present in the sidebar will therefore not copy the Item, while moving an Item between two containers on separate Actors will. We hope to implement more explicit control over this behaviour in the future.

Known Issues: When moving a container from the sidebar into an Adventure document, the container's contents will not be copied into the Adventure. This is due to some limitations with the core API that will be resolved in v12 of the software. In the meantime, the container should be placed in a Folder, and the Folder dragged into the Adventure.

Currency

A new interface has been implemented in order to facilitate the transfer of currency between containers and their parent Actors. It can be accessed by clicking on the coins icon to the left of the currency fields, previously used to convert currency. In addition to transferring currency between containers on an Actor, it has a special interaction on group Actors, allowing currency to be transferred to any member of the group. DMs may also use this interface to transfer currency from any container in the World to the primary group Actor (discussed below).

Transfer Currency

Awards

The dnd5e 3.0 update also includes a new award system, allowing DMs to easily award currency and XP to their players. It can be accessed several ways: via the /award chat command, through the [[/award]] text enrichers, or through the group actor sheet. An in-depth guide to how to use this feature can be found on the wiki, so it won't be repeated here.

Award Interface

Group Actors

The group Actor has undergone a number of iterations in this release, improving its feature set. Firstly, group Actors have been split into two subtypes (with more on the way): Party, and Encounter.

Encounter-type groups have quantity and formula fields, allowing you to represent an encounter with, for example, 1d10 goblins, and to roll for the exact number when the time comes. Placing Actors in the group and giving them quantities will also auto-calculate the XP awarded for their defeat, based on their CR.

Encounter Group

Party-type groups behave mostly the same as before, but now one particular party in the World may be marked as the 'primary party'. This is a special designation that interacts with the award and currency-transfer systems, passive Perception tooltips, and will be used for additional features in the future. It allows the system to understand more precisely which Actors in the World the adventure is following. Usually the player characters, but also potentially NPCs that may have joined the group, or a vehicle used for transport.

Set as Primary Party

Unidentified Items

Building on the groundwork laid in earlier releases, the unidentified description set on Items will now be appropriately displayed if an Item is unidentified. Additionally, DMs may set an unidentified name for the Item that will also be used in place of the Item's real name. Finally, unidentified Items have their details and effects obscured to players.

Unidentified Item

Special thanks to @ccjmk for their initial work on this feature.

Variant Encumbrance

Support for the variant encumbrance rules are now included in the system, with Actors having their speeds appropriately modified when they reach certain encumbrance thresholds. This option is available in the system settings.

Encumbrance Options

Special thanks to @benbarbour for his initial work on this.

Text Enrichers

In addition to the ability check, saving throw, and damage enrichers added in 2.4, the 3.0 release of the system adds several more that may be used to enhance text descriptions.

Award

This enricher hooks into the Award system, allowing for currency and XP awards to be included in text descriptions and awarded to players at the appropriate time. It has a format similar to the chat command, e.g. [[/award party 20d10gp each]]. Please see the wiki for full examples.

Embed

The @Embed enricher has been backported from the v12 core Foundry VTT API, allowing it to be used in v11 in the dnd5e system. Please see the associated issue here for full details.

Reference

The &Reference enricher allows for referencing D&D 5e game rules via tooltip and much of the SRD rules are available to be referenced in this way. For example, referencing the rule on the Restrained condition can be done with &Reference[Restrained], and the rules on Dim Light or Unseen Attackers can be referenced with &Reference[Dim Light] and &Reference[Unseen Attackers] respectively.

Rules Reference
Exhaustion Reference

For a full list of referenceable rules, please see the wiki.

Passive Perception

The passive skill score enricher has been enhanced to utilise the primary group Actor, and will now show how the scores of everyone in the group compares to the target value.

Passive Perception Tooltip

Chat Cards

In addition to being given a new coat of paint, the system chat cards have had several improvements made to them. These are the first of many changes aimed at speeding up gameplay and adding lightweight automation tools to the system.

Item Card Example

Effects Tray

Item cards now include a list of the Active Effects housed on the Item, available for the DM to quickly apply to appropriate tokens.

Effects Tray Example

Attack Roll Validation

Players that indicate a target or targets before making attack rolls will have those targets displayed to the DM in the resulting attack card, alongside the target's AC for quick verification.

Attack Roll Example

Damage Types

Damage rolls now show a breakdown grouped by damage types.

Damage Roll Example

Dynamic Token Rings

Using some beautiful token ring designs provided by @Caeora, @Feu-Secret has built a custom shader implementation that breathes life into them. Tokens configured to use the shader will react to various system events such as losing or gaining HP, or being afflicted by various conditions.

dnd5e-300-token-ring.webm

Any token can be configured to use the dynamic token rings provided by the system via the new 'dynamic ring' tab under Token Configuration > Appearance.

Dynamic Token Ring Configuration


What's Next?

As exciting as this release was, it was intended to be a special occasion big reveal. Going forward we will be continuing development of the system as normal, accepting community contributions, and working on the public repo with open milestones. We cannot promise any firm dates on any of the following, but nevertheless, we have assembled a list of desired features that we will be focusing our attention on next. They are listed in no particular order of priority or importance.

Sheets

For sheets, the obvious next steps are to incorporate our 'v2' designs into the remaining sheets in the system: Items, NPCs, Groups, & Vehicles. We also have plans for a special 'minimised' mode for some of the sheets that utilises the character card design. Finally, we are committed to providing dark mode versions for our sheets. The following is a very early mockup of a dark mode character sheet design. The design has moved on since then, so do not take this as the final result, but it should give you some idea of what to expect.

Dark Mode Early Design
Character portrait art by mikiko.art

Spellcasting

  • Class spell lists
  • Spellcasting advancement
  • Improvements to multiclassed caster handling
  • Spell consumption choices

Advancement

  • Equipment advancement
  • Subclass advancement

API / Automation

  • Resistance, vulnerability, & immunity handling
  • Roll refactor to support certain class features
  • Item resource scaling
  • Embedded spells
  • Multiple actions per Item
  • Action workflow
  • ActiveEffect expiry
  • Range, reach, & cover
  • Auras
  • Vision modes

2024 Rules

  • Multiple recovery periods
  • Weapon masteries

v12 Integration

  • Application v2
  • Difficult terrain with Scene Regions

⚠️ Breaking Changes

LevelDB

The system update drops support for v10 of the core software, and therefore support for NeDB as well. Very little has changed from a high-level perspective, but notably we no longer require built versions of .db files or the compiled dnd5e.css file to be committed alongside any changes to their source information. Please see the updated CONTRIBUTING.md for full details on how to contribute to the system.

ActiveEffect Transferral

The core CONFIG.ActiveEffect.legacyTransferral flag has been switched off. The consequences of this are discussed with more detail here, but, in summary, ActiveEffects with transfer: true are no longer copied to the Actor when an Item is placed on an Actor. Instead, the ActiveEffect applies to the Actor but remains on the Item. A migration is in place to delete the now-duplicated ActiveEffects on Actors.

It is no longer sufficient to check Actor#effects for ActiveEffects that are affecting an Actor, Actor#allApplicableEffects() or Actor#appliedEffects should be used instead.

Additionally, now that the origin field is not longer required to track an ActiveEffect's originating Item, its usage has changed slightly in the system. For now, it is used to track the originating ActiveEffect when a DM applies an effect from a chat card, but may have further uses in the future.

Backpack-type Rename

backpack type Items have been renamed to container.

Unidentified Description Rename

Item unidentified descriptions have been moved from system.description.unidentified to system.unidentified.description.

Chat Card Changes

Chat card markup has changed slightly. Mostly this is to accommodate the various re-styling changes, or to add additional features such as the effects tray. Most other aspects remain the same. Roll formatting has changed slightly, and d20Rolls now add an additional line for gathered constants in the roll breakdown.

There have been more significant changes to damage rolls. Damage roll ChatMessages will now contain multiple DamageRoll instances in their rolls property, one for each corresponding damage part. Each of these instances have the damage type recorded as part of their options.type property. The damage roll chat card itself employs some logic to gather up all rolls and group all dice terms and constants across all DamageRoll instances by their damage types for the final roll breakdown.

These modifications to chat cards occur after the renderChatMessage hook is fired. Modules wishing to work with the augmented chat cards should use the new dnd5e.renderChatMessage hook, described on the wiki.

Config Changes

The following CONFIG.DND5E keys have had their values replaced by objects. The previous label values now exist under the label key on the new objects.

  • damageTypes
  • healingTypes
  • creatureTypes
  • spellSchools
  • actorSizes
  • conditionTypes
  • consumableTypes

CONFIG.DND5E.damageResistanceTypes has been removed. Please check the isPhysical property of the damageTypes values instead now to determine 'physical' damage types.

CONFIG.DND5E.tokenSizes has been removed and rolled into the actorSizes config.

CONFIG.DND5E.encumbrance.strMultiplier has been replaced with CONFIG.DND5E.encumbrance.threshold.maximum.

Item Properties Consolidation

Instead of each Item type storing its properties in a different place in the Data Model, they have all been standardised to a single location, system.properties. This field has now become a Set<string> rather than a Record<string, boolean>.

  • SpellData#components -> SpellData#properties
  • EquipmentData#stealth -> EquipmentData#properties ("stealthDisadvantage")
  • ContainerData#weightless -> ContainerData#properties ("weightlessContents")

Item Type Consolidation

Instead of each Item type storing information on its 'type', 'subtype', or 'baseItem' in different places, they have all be standardised to a single location, system.type.

/**
 * @property {object} type                      Standardized item type object.
 * @property {string} type.value                Category to which this item belongs.
 * @property {string} type.subtype              Item subtype according to its category.
 * @property {string} type.baseItem             Item this one is based on.
 */
  • ConsumableData#consumableType -> ConsumableData#type#value
  • EquipmentData#armor#type -> EquipmentData#type#value
  • EquipmentData#baseItem -> EquipmentData#type#baseItem
  • ToolData#toolType -> ToolData#type#value
  • ToolData#baseItem -> ToolData#type#baseItem
  • WeaponData#weaponType -> WeaponData#type#value
  • WeaponData#baseItem -> WeaponData#type#baseItem

2.5 Patch Notes

  • [#2698] | [#2701] Move getRollData to system models
  • [#2434] Add more detail to formula simplification failure warning message
  • [#2725] Damage type property expansion to denote physical damage❗
  • [#2636] Generalize system.properties across all item types❗
  • [#2715] Move valid properties into system data models
  • [#2352] | [#2721] Add consumable subtypes
  • [#2723] Add AC tag to siege weaponry
  • [#2714] Migrate stealth disadvantage on armor to properties
  • [#2713] Modify spell component migration to avoid losing properties
  • [#2709] Add properties to all item types, deprecate config enums
  • [#1448] Add tags to features
  • [#2689] | [#2690] Converts item system.properties to a Set
  • [#2681] Migrating spell components and feature properties into system.properties
  • [#2720] Add isConcentration getter
  • [#2717] Add 'concentration' to scroll properties and bug-fixes for createScrollFromSpell
  • [#2716] | [#2722] Show AC only on armor/shield/vehicle
  • [#2693] | [#2719] Corrects starter hero "Riswyn's" creature type to 'Humanoid (dwarf)'
  • [#1415] | [#2708] Change DND5E.creatureTypes config to allow for prelocalization
  • [#2513] | [#2711] Add link for GMs to request roll from inline roll
  • [#2692] | [#2712] Add source config button to vehicle sheets
  • [#2684] | [#2705] Added item use MeasuredTemplate creation hooks
  • [#2697] | [#2702] Expose ActorSheetMixin to dnd5e.applications
  • [#2694] | [#2703] Prevent race items from being dropped onto Group Actor sheet
  • [#2687] | [#2704] Corrects use of tool checks by actors without explicit proficiency.
  • [#2168] | [#2676] | [#2688] Standardize item system fields and modify item types to selectively exclude certain system fields
  • [#2671] | [#2677] Corrects application of critical/fumble roll styling.
  • [#2670] Changes CONFIG.DND5E.creatureTypes into an object with label and optional detectAlignment fields
  • [#2552] Modified system build chain -- removes compiled artifacts from repository tracking.
  • [#79] Support for hiding details of unidentified items.
  • [#729] Native item container support.
  • [#948] Add a setting that hides saving throw DCs from chat cards.
  • [#1233] Fix application of ActiveEffect bonuses sometimes being concatenated together if not prefixed with a +.
  • [#1276] Implement an option to use the variant encumbrance rules.
  • [#1279] [#2390] Create token status effects for all core system conditions.
  • [#1413] Use rem values in chat cards so they appropriately scale with the font size slider.
  • [#1531] Move carrying capacity size multipliers to CONFIG and fix Powerful Build implementation.
  • [#1555] Use core-defined CSS color variables rather than LESS color variables where possible.
  • [#1818] Use a separate DamageRoll for each damage part.
  • [#2388] Truncate template.json and defer to the system data models where possible.
  • [#2552] Remove dnd5e.css and compiled packs from repo.
  • [#2665] Adjust build scripts to build LevelDB files rather than NeDB.
  • [#2666] Organize SRD compendium content into folders.
  • [#2679] Fix some SRD creatures having 'custom' as their language.
  • [#2686] Implement custom chat message templates for multi and singular damage rolls.
  • [#2699] Fix various SRD equipment being classified as Light Armor.
  • [#2700] Fix various SRD consumables being classified as Potions.
  • [#2707] Fix the SRD component pouch being classified as ammunition.
  • [#2752] Switch to TypeDataModel for the SystemDataModel implementation.
  • [#2753] Fix damage enrichers not supporting @mod in chat descriptions.
  • [#243] Search for spells by name in the spellbook tab.
  • [#591] Track damage types in chat message metadata.

Contributors

Many thanks to the following contributors in particular: @arbron, @benbarbour, @ccjmk, @Feu-Secret, @Gawdl3y, @Ikaguia, @krbz999, @luccavp12, @mattexdee, @trioderegion, as well as all those who submitted bug reports and issues.

Special mention to Jeff 'Arbron' Hitchcock for his tremendous work on the 3.0 features, and to mikiko.art for providing custom art assets for the character sheet and for all her contributions to its overall design.