An implementation of the Dungeons & Dragons 5th Edition game system for Foundry Virtual Tabletop

Overview

Foundry Virtual Tabletop - DnD5e Game System

This game system for Foundry Virtual Tabletop provides character sheet and game system support for the Fifth Edition of the world's most popular roleplaying game.

This system is offered and may be used under the terms of the Open Gaming License v1.0a and its accompanying Systems Reference Document 5.1 (SRD5).

This system provides character sheet support for Actors and Items, mechanical support for dice and rules necessary to play games of 5th Edition, and compendium content for Monsters, Heroes, Items, Spells, Class Features, Monster Features, and more!

Data present under the packs/ directory is taken from the Systems Reference Document 5.1 (SRD5) and used under the terms of the OGL v1.0a, see OGL.txt.

Images present under the icons/ directory are distributed under various terms, please see the icons/LICENSE file for full details.

The software component of this system is distributed under the MIT license.

Installation Instructions

To install and use the DnD5e system for Foundry Virtual Tabletop, simply paste the following URL into the Install System dialog on the Setup menu of the application.

https://raw.githubusercontent.com/foundryvtt/dnd5e/master/system.json

If you wish to manually install the system, you must clone or extract it into the Data/systems/dnd5e folder. You may do this by cloning the repository or downloading a zip archive from the Releases Page.

Community Contribution

See the CONTRIBUTING file for information about how you can help this project.

Comments
  • Character Advancement

    Character Advancement

    Originally in GitLab by @Fyorl

    Introduction

    I've put together a draft of the pieces of the character advancement epic, and some of the design questions that might need to be answered as part of each. If we can agree on this list then they can be split out into individual issues that can hopefully be worked on with some degree of parallelism.

    Some design decisions that were agreed on already:

    • Advancement data will be stored on the class item.
    • Advancement data will be represented as a simple array of objects.
    • Each advancement object has a type, and can be handled by its own custom handler.
    • We will be creating a DM view to allow configuration of the advancement data, as well as a player view to allow selection of those advancement options.
    • For the first pass, players will make choices at a prompt which are then finalised and written to the actor. Later versions may have this fully derived.
    • For the first pass, where a player is asked to pick from a number of items (e.g. Fighting Styles, Eldritch Invocations, Skills, etc.), these choices will be 'hard-coded' from the SRD. Later versions may have them be discoverable in some way.

    Pieces

    1. Advancement configuration UI. We need a place on the class item sheet where a user can see and configure the advancement objects for that class. That might be a new tab, an additional dialog, or something else. Note that the actual rendering of each type of advancement object will be handled by a specific handler for that advancement object type.

    As a part of this we will need a clear way to determine whether we are in an editing context or a viewing context. This might take the form of an explicit toggle, checking for a GM user, or checking whether the item is owned or unowned.

    2. Character advancement UI. We already have a level-up prompt which should be a good place to start. It needs to support going backwards and forwards through each of the advancement objects configured for that level-up. We should consider supporting jumping to an arbitrary stage as well as a simple 'Forward' and 'Back'.

    It is possible that a player gains more than one level at once, or they are starting their character at a higher level, so the prompt should support collecting all the objects available for all of the levels gained, and should present them in the correct order.

    As choices are made through the advancement prompt, a working copy of the actor needs to be maintained so that further steps can react to changes accordingly. This should support a player jumping back to a previous step, changing something, and potentially invalidating some later choices.

    Once a player has chosen to finalise those choices, they should be written to the sheet in a permanent fashion. We will not support undoing those changes at this stage, except for the normal methods of deleting items, etc.

    As with (1), this piece does not involve actually rendering any advancement objects, it just provides a framework for them to be rendered into.

    3. Advancement object API. Each type of advancement 'primitive' available to a character needs to be represented by its own discrete data schema. We should consider whether we want to wrap these in their own classes. We might have an abstract base Advancement class that can be implemented by subclasses representing each of the different advancement types, for example.

    However it is designed, we need a way to handle the following operations:

    • Organising advancement objects (ordering by level, selecting the appropriate ones for a given level-up, etc.)
    • Rendering a DM-configurable view of the object.
    • Rendering a player view of the object during level-up.
    • Saving the configuration to its parent item.
    • Providing some update delta to be applied to an actor that represents the choices they made.

    Not all of the above operations necessarily need to be part of the API, but they do need to be handled somewhere.

    4. Advancement objects. Each type of advancement primitive needs to be realised and plugged into the framework above.

    Further Comments

    The pieces above have a number for ease of reference but don't necessarily imply an order that they need to be completed in.

    I don't believe we should tackle Spellcasting as part of this work. We may integrate it later, but I don't think we should consider it for the initial design.

    After having worked through this list, it looks like it could be quite useful to do the work for subclass items first (#1080), or at least try to keep them in mind throughout the process as they will likely inform the design of quite a few areas.

    epic feature request api advancement 
    opened by Fyorl 35
  • Ongoing Compendium 0.4.x Migration Improvements

    Ongoing Compendium 0.4.x Migration Improvements

    To Handle with Automated Migration

    Actors

    • [x] Monsters who have equipment type items should have those items set as equipped
    • [x] Monsters who have weapon type items should have those items set as equipped and proficient

    Items

    • [x] Spell/weapon/feat damage fields did not survive migration correctly.
    • [x] Add code to "guess" when an activation type should be 1 Action based on the presence of ability damage
    • [x] None of the mundane SRD items have a Rarity assigned, should be "Common"
    • [x] Melee weapons should get migrated to set their default range to 5 ft. or 10 ft. if they have the Reach property.
    • [x] Weapons should have @mod added explicitly as part of their damage formula
    • [x] Add a differentiation between melee spell and ranged spell attack types

    To Handle with Manual Update

    • [ ] Some monster features are incorrectly flagged as type = "weapon"
      • Hurl Flame
      • Intoxicating Touch
      • Life Drain
      • Paralyzing Touch
      • Rotting Touch
      • Shield Bash
      • Shock
      • Smother
      • Snake Hair
      • Strength Drain
      • Swallow
      • Web
      • Withering Touch
    • [ ] Monsters which list DR to "Bludgeoning, Piering, Slashing from nonmagical attacks". I would prefer to encode this as Bludgeoning, Piercing, Slashing with a special caveat of "From Nonmagical Attacks"
    monsters = game.packs.find(p => p.collection === "dnd5e.monsters");
    monsters.getContent().then(content => content.filter(m => /nonmagical/i.test(m.data.data.traits.dr.custom)).map(m => console.log(m.name)));
    
    • [ ] Monsters which use innate spellcasting should have the spells which they gain through that feature migrated to be coded as prepartion type "innate"
    • [ ] Monster features which put Recharge (X-Y) in the name should use the data model instead
    // List features that need update
    let features = game.packs.find(p => p.collection === "srdmonsters.features");
    features.getContent().then(content => content.filter(f => /recharge/i.test(f.name)).map(f => console.log(f.name)))
    
    // List actors that need update
    let monsters = game.packs.find(p => p.collection === "dnd5e.monsters");
    monsters.getContent().then(content => content.filter(m => m.items.some(i => /recharge/i.test(i.name))).map(m => console.log(m.name)));
    
    • [ ] Items which deal additional conditional damage depending on the result of a saving throw (like poison or mummy rot) should have the extra damage placed in the "Other Formula" field.

    • [x] (Andrew) Add new Forgotten Adventures tokens

    • [x] (Andrew) Add new Penelope biographies

    Cleanup

    • [x] Remove temporary backup pack files
    • [x] Remove 5e compendium migration function
    • [x] Merge code branches
    in progress 
    opened by aaclayton 27
  • Armor Class Auto-Calculate based on a designated armor scaling formula, current equipment, and active effects.

    Armor Class Auto-Calculate based on a designated armor scaling formula, current equipment, and active effects.

    Originally in GitLab by @gatesvp

    The formula for AC is relatively straightforward:

    • AC = 10+Dex
    • When armor is equipped, a new formula is applied.
    • When a shield is equipped, an additional +2 is added.

    I know that Monks and Barbarians have a separate feature here. That's a separate ticket.

    For this version, I just expect this formula to be applied. Players can then override the value if necessary for things like barkskin.

    epic feature request 
    opened by aaclayton 22
  • Expand the Class item data model to track the levels at which various classes obtain different class features

    Expand the Class item data model to track the levels at which various classes obtain different class features

    Each compendium Class entry will map to the ids of other compendium content which that class grants (at appropriate levels).

    Note that this issue DOES NOT actually provide automation to apply these features to a character sheet when class levels are acquired, but that work is envisioned for the future

    Structure of Data (excluding choices)

    barbarian: {
      subclasses: {
        ancestral: {
          label: "Path of the Ancestral Guardian",
          source: "Book pg. #"
        },
        battlerager: {
          label: "Path of the Battlerager",
          source: "Book pg. #"
        },
        berserker: {
          label: "Path of the Berserker",
          source: "Book pg. #"
        },
        storm: {
          label: "Path of the Storm Herald",
          source: "Book pg. #"
        },
        totem: {
          label: "Path of the Totem Warrior",
          source: "Book pg. #"
        },
        zealot: {
          label: "Path of the Zealot",
          source: "Book pg. #"
        }
      },
       features: {
         base: {
             1: ["VoR0SUrNX5EJVPIO", "SZbsNbaxFFGwBpNK"],
             2: ["SCVjqRdlZ9cvHVSR", "vt31lWAULygEl7yk"],
             3: ["3hnbqKIbKuk3L4wz"],
             5: ["XogoBnFWmCAHXppo", "Kl6zifJ5OmdHlOi2"],
             7: ["NlXslw4yAqmKZWtN"],
             9: ["L94gyvNpUhUe0rwh"],
             11: ["FqfmbPgxiyrWzhYk"],
             15: ["l8tUhZ5Pecm9wz7I"],
             18: ["Q1exex5ALteprrPo"],
             20: ["jVU4AgqfrFaqgXns"],
         },
         ancestral: {
         },
         battlerager: {
         },
         berserker: {
             3: ["CkbbAckeCtyHXEnL"],
             6: ["0Jgf8fYY2ExwgQpN"],
             10: ["M6VSMzVtKPhh8B0i"],
             14: ["GGUVN7zrAp6qOXbf"],
         },
         storm: {
         },
         totem: {
         },
         zealot: {
         },
       }
     }
    

    Structure of Data (including choices)

    Short term plan for supporting choices (i.e. fighting style, warlock invocations, etc...) is to construct a "base feature" for that choice set so instead of Fighting Style: Dueling, we have a feature in the list just called Fighting Style and in that feature's description we can link to all of the specific fighting styles and just say "Choose one of the following options and replace this placeholder Feature with your chosen style."

    This will allow us to automatically grant the placeholder "Fighting Style" and provide instructions in the description for the user to make the choice.

    epic compendium content 
    opened by aaclayton 22
  • Provide an Active Effects line in the AC calculation tooltip

    Provide an Active Effects line in the AC calculation tooltip

    Originally in GitLab by @unsoluble1

    If an actor's AC is being modified by one or more Active Effects, this will change the AC total appropriately but the math in the tooltip appears incorrect, since there's no line for "Active Effects" in it:

    image

    Propose checking to see if any AEs are modifying AC, and include the subtotal as a line in the tooltip.

    opened by aaclayton 21
  • dnd 1.4.0 seems to ignore magical bonus items

    dnd 1.4.0 seems to ignore magical bonus items

    Originally in GitLab by @tposney

    In my testing of 1.4.0, no other modules loaded, items of type equipment/magical bonus don't seem to add to AC no matter what the AC setting/equipped/proficient/attuned settings are.

    bug breaking 
    opened by aaclayton 20
  • Advancement Hooks

    Advancement Hooks

    Originally in GitLab by @akrigline

    We should consider adding some hooks that allow modules to inject themselves into the advancement process.

    There are several modules today which interact with the levelup process and providing a standardized framework for them to use instead of hack around our solutions would be ideal.

    Given the preliminary generalized flow of: (See #1357 for a better understanding of the UI flow as we make decisions)

    1. User Levels up a Class on an Actor OR adds a new advancement item to an actor
    2. Advancement options are presented to that user based on the actor's (new or old) level
    • Each level of the actor is a 'step' in the prompt
    1. User's Actor is updated with choices

    What would be the most useful set of hooks for module authors? I'm going to ping @Kandashi and @iaguastalli as they are the two module authors I know of off-hand who are interacting with this api space.

    I'll add some comments with proposed hooks.

    api advancement 
    opened by aaclayton 18
  • Provide a way for custom classes to configure the features they grant upon level up within the class sheet interface.

    Provide a way for custom classes to configure the features they grant upon level up within the class sheet interface.

    Originally in GitLab by @akrigline

    This could easily be a module, but I feel it would be a valuable addition to the dnd5e system itself, so any module which does this should have the goal of becoming a MR here. League of FoundryVTT Devs Trello Card

    Goal

    Create a simple UI where a user can drag and drop Items (feat type only) onto various levels, which then gets saved as a flag on the class item.

    Once this data is saved on the item itself, all Class type items could be iterated over and inject this data into the dnd5e CONFIG.DND5E.classFeatures object when the game is Ready.

    Mockup

    image

    Background

    https://discord.com/channels/170995199584108546/670336046164213761/786978330053836853

    Paraphrasing from Atro about how a custom class can leverage the classFeatures system

    1. Create a custom Class item
    2. Create a module with an "ready" hook that extends the CONFIG.DND5E.classFeatures object to define the data structure for the features which are provided by the class

    Ideally you should use a solution that doesn't involve editing the dnd5e system files because that will just get overwritten each time the system updates.

    Hooks.on("ready", () => {
      CONFIG.DND5E.classFeatures["my-custom-class"] = {
        // Your class configuration here
      };
    });
    
    feature request breaking 
    opened by aaclayton 18
  • Allow Spell items to be converted to Scroll-type Consumable items

    Allow Spell items to be converted to Scroll-type Consumable items

    we have a quite complete Spells SRD compendium which contains spell items

    we also have "template" spell scrolls for levels 1 - 9 in the Items SRD

    I'd love to have a utility function which takes a spell-type Item as an input and provides a properly configured spell scroll of that spell as an output

    this could allow for us to drop spells either on the spellbook tab of the character sheet to add spells to the spellbook OR on the inventory tab to create spell scrolls of that spell

    feature request 
    opened by aaclayton 18
  • Add support for SRD Rules compendium pack as a collection of cross-linked journal entries.

    Add support for SRD Rules compendium pack as a collection of cross-linked journal entries.

    Originally in GitLab by @fohswe

    Creating this issue to have a central place for discussing the organization of the SRD Rules within the 5e system. (And organizing my thoughts about it.)

    I have completed transferring the SRD Rules into FVTT Journals, excluding FVTT Entities that are already in there: Items, Class Features etc.

    Main Organization

    The SRD itself doesn’t contain a Table of Contents, and it’s organization is rather lacking. For instance, it begins with the Beyond 1st Level section, which is immediately followed by Multiclassing.

    Proposal: Considering that Compendiums can’t have folders, I propose that a Journal entry with the below Table of Contents (minimum) is created. This entry should also contain a Disclaimer of sorts. I think it would be beneficial if it linked to the SRD homepage I also think it could contain a link to the official Basic Rules, since this document has a workflow for character creation, which is missing in the SRD. Or linking the Basic Rules on D&D Beyond.

    My proposed organization is the following (headings within parentheses are not in the SRD, but would greatly improve the overview.):

    • Beyond 1st Level
    • Races
    • Classes
    • (Personality and Background)
      • Alignment
      • Languages
      • Inspiration
      • Backgrounds
    • Equipment
    • (Customization Options)
      • Multiclassing
      • Feats
    • Using Ability Scores
    • Adventuring
    • Combat
    • Spellcasting
    • Spells
    • (DM Tools)
      • Traps
      • Diseases
      • Madness
      • Objects
      • Poisons
      • Monsters
      • Magic Items
    • Appendix PH-A: Conditions
    • Appendix PH-B: Fantasy-Historical Pantheons
    • Appendix PH-C: The Planes of Existence
    • Appendix MM-A: Miscellaneous Creatures
    • Appendix MM-B: Nonplayer Characters

    Splitting content into separate entries

    Since there’s no way of linking to a section of a journal entry, I propose that certain areas of sections are broken out into separate journal entries. This needs to be balanced to not take away the readability completely. One good example is Appendix PH-A: Conditions, where each Condition should have it’s own journal entry, so they can be linked from other sources within FVTT.

    All separate (high-level) entries should be included in the aforementioned ToC.

    Proposal "No duplication": In the case where content is split out, no content should be duplicated. Content which is in FVTTs current SRD items is linked instead. Current content includes:

    • (Most) Class Features
    • Monster Features
    • Items including Magic Items
    • Spells
    • Trade Goods

    Proposal "Classes update": While Classes are in FVTT, they currently contain very little information (I’m aware of the open issue here on connecting Classes, Levels and Class Features). I like the idea of having the Class Description filled in with the Class description from SRD. This would include:

    • Hit Points
    • Proficiencies
    • Equipment
    • Class Level Table (with linked Class Features)

    I think that having the information in the Class Description, and thus available on the character sheet, would greatly simplify character creation and leveling up. Ultimately by dragging and dropping it directly instead of opening up the compendiums.

    Outstanding issues for "Classes update":

    • Items sheets are not resizable and the content is hard to fit within it’s window, primarily the Class Level tables for spellcasters. (Possible to workaround probably.)
    • Class Features such as Ability Score Improvement and Spellcasting should be made into Class Features items for each Class, and linked to the Class description like other Class Features.
    • Drag&Drop for Character sheets should be updated to accommodate the workflow.

    Create a compendium for Races/Racial Traits?

    Would it make sense to create a Compendium of Racial Traits? For instance, dragging the Hill Dwarf race to a character sheet adds a Passive ability listing the Racial Traits of that Race+Subrace.

    Work In Progress

    Module

    Module.json: https://gitlab.com/fohswe/srd-rules-wip/-/raw/master/module.json

    Things to do?

    Classes

    • [x] Complete Class Features Compendium with additional features, for instance Class specific ASI and Spellcasting
    • [x] Link all Class Features in the Class Journals
    • [x] Update SRD Class Items with the Class Journals, so formating fits Item Sheet

    Process of splitting apart big journals

    • [x] Equipment
    • [x] Using Ability Scores
    • [x] Adventuring
    • [x] Combat
    • [x] Spellcasting

    Racial Traits

    • [ ] Evaluate a new SRD Racial Traits Compendium

    Spit and polish

    • [ ] Tables: Different colors for Even/Odd rows, sizes
    • [x] Readability: Headings
    • [x] Interlinking within the SRD Rules: For instance Conditions, spells, "see Equipment" etc.
    compendium content 
    opened by aaclayton 16
  • Display weapon and attack action hit, damage, and saving throws in a summarized line of text using the standard 5e syntax.

    Display weapon and attack action hit, damage, and saving throws in a summarized line of text using the standard 5e syntax.

    Originally in GitLab by @Craven112

    Right now the 5e character sheet does not easily show the 'to hit' and 'damage' formulas and the damage type. To find them, you have to go into the edit screen.

    I can think of 2 reasons why you would want these formulas and the damage type to be easily visible: 1 - My players prefer to use physical dice. Right now they have to rely on a separate (paper) character sheet. 2 - It gives a quick overview of what weapon would be most suitable for the current situation, either due to the amount of damage, or the damage type

    Proposed solutions: -Add a 'to hit', 'damage' and 'damage type' column to the inventory tab -Automatically append the formulas to the item name. For example, the name shown in the inventory would be: Longsword {+4, 1d8+4 slashing} -Automatically add that data to the item description, so pressing the item name to open the description will show the formulas and damage type.

    feature request mr fodder 
    opened by aaclayton 16
  • Rework sheet and roll data preparation to avoid mutating actor and item state

    Rework sheet and roll data preparation to avoid mutating actor and item state

    Apologies for how clumsy some of this is. The guiding principles here were:

    • It is ok to pass the real actor or item instance into the template data as it's only for reading.
    • Avoid mutating a property of the real actor or item instance as part of template data or roll data preparation.
    breaking 
    opened by Fyorl 0
  • [#1401] Item Choice Advancement

    [#1401] Item Choice Advancement

    Introduces the item choice advancement for choosing one or more options when you reach a level, usable for things like Fighting Style, Metamagic, or Signature Spells.

    The player can select an option from a predefined list like Fighting Style:

    Selecting a Fighting Style

    Or they can drop items onto the advancement such as with Magical Secrets:

    Dropping spells for Magical Secrets

    If a choice is available over multiple levels like Metamagic, the previously made choices will be shown:

    Selecting Metamagic with previous choices shown

    Configuration is handled through an interface similar to Grant Items, but with the level list allowing to specify how many choices are available at which levels:

    Item Choice configuration interface

    This also adds the ability to configure spells that are added through Item Grant or Item Choice advancements, setting ability, preparation mode, and limited uses:

    Item Grant - Spell Config

    Resolves #1401

    To Do

    • [ ] Add item choice advancements to SRD classes & subclasses
    advancement 
    opened by arbron 0
  • [#1605] Prepare scale values earlier to allow them to be modified by active effects

    [#1605] Prepare scale values earlier to allow them to be modified by active effects

    Moves the data preparation for scale value into Actor5e#prepareBaseData so they can be modified by active effects. This also allows them to be used as in input for an active effect if a player is using a module like DAE. In order to accomplish this we needed to perform advancement preparation earlier so this introduces Item5e#prepareInitialAttributes to mirror Item5e#prepareFinalAttributes so that can be done before other actor data preparation.

    Resolves #1605

    advancement 
    opened by arbron 0
  • Option to display wounded/bloodied state

    Option to display wounded/bloodied state

    The DMG suggests in chapter 8 Running the Game to indicate when monsters drop below 50% health:

    Players often ask how hurt a monster looks. Don’t ever feel as though you need to reveal exact hit points, but if a monster is below half its hit point maximum, it’s fair to say that it has visible wounds and appears beaten down. You can describe a monster taken to half its hit points as bloodied, giving the players a sense of progress in a fight against a tough opponent, and helping them judge when to use their most powerful spells and abilities.

    There should be an option to dispaly that without modules. A step further would be options to have that for players, and for players incapacitated, too, for group playing without the PCs knowing each others values precisely, but still making the healers' job playable without extensive talking about the players' characters values.

    feature request 
    opened by itteerde 0
  • Integration of the 'Link item resource' feature on the system

    Integration of the 'Link item resource' feature on the system

    An attempt to integrate the feature of the module 'Link Item and Resource DnD5e' directly on the system of DND5E .

    Certainly some parts of the code need to be revised , but now i really need some tip about it.

    Among other things, I was thinking of integrating a configuration for resources as was done for consumable types:

    /**
     * Enumerate the valid resources types which are recognized by the system.
     * @enum {string}
     */
    DND5E.resourceOptions = {
      primary: "DND5E.ResourcePrimary",
      secondary: "DND5E.ResourceSecondary",
      tertiary: "DND5E.ResourceTertiary"
    };
    

    If you think it's something that makes sense.

    opened by p4535992 0
Releases(release-2.0.3)
  • release-2.0.3(Sep 21, 2022)

    A new patch release for the dnd5e system that is mainly focused on bug fixes and stability after the Version 10 release, but also contains some new features.

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


    Patch Notes

    The full list of changes is included below:

    Compendium Content

    • Even more fixes for some icons that were not correctly migrated.
    • Fixed Frost Giant AC.
    • Adjusted maximum targets for Acid Splash to 2.
    • Fixed some missing Forgotten Adventures token artwork.
    • Added many more roll tables from the SRD and consolidated item descriptions to make use of them.
    • Updated the Monster SRD compendium to utilise the new physical damage bypass system (see features below).

    Features

    • [#1620] [#1626] [#1689] Added the 'spell' type to item grant advancements that allows for configuring preparation modes and the spellcasting ability for added spell items.
    • [#1707] Improved how certain warnings around actor data are displayed.
    • [#1581] Added a d4 hit die to the list of available hit die choices for homebrew use.
    • [#1766] Allow Active Effects to be dragged and dropped between Items.
    • [#1249] [#1461] Added the concept of 'bypasses' allowing damage immunities and resistances that are bypassed by adamantine, silvered, or magical weapons to be appropriately expressed. The old 'Non-Magical Physical' has been deprecated in favour of this new system, but has not been removed.
    • [#871] [#1065] Added a recovery formula to items that use charges. This formula will be automatically used to recover item charges whenever a new day elapses as part of a short or long rest.

    Bug Fixes

    • [#1779] Fixed an issue with d20 rolls failing when they include min() or max().
    • [#1790] Fixed an infinite loop bug with custom skills on new actors.
    • [#1777] Fixed an API issue where certain preconditions were not checked when creating or duplicating advancements.
    • [#1769] Prevented rolling hit dice from being able to result in lost HP if a character had a particularly low Con modifier.
    • [#1776] Fixed a bug with displaying the Global Skill Check Bonus in the skill config dialog.
    • [#1811] Fixed a bug with setting an invalid class item identifier.
    • [#1810] Fixed an issue causing upscaled spells to not receive the correct data.
    • [#1809] Fixed an issue preventing the new SRD Rules table of contents from being correctly ordered when localised.

    Contributors

    Many thanks to the following contributors in particular:

    • Andrew Krigline
    • Ben Barbour
    • Jeff 'Arbron' Hitchcock
    • 'kjolern'

    ... as well as all those who submitted bug reports and issues.

    Source code(tar.gz)
    Source code(zip)
    dnd5e-release-2.0.3.zip(39.83 MB)
    system.json(3.21 KB)
  • release-2.0.2(Sep 1, 2022)

  • release-2.0.1(Aug 31, 2022)

    dnd5e-201

    dnd5e 2.0.1

    We're happy to release a new version of the dnd5e system that coincides with the release of Foundry VTT version 10. As such, a large portion of the changes here have been devoted to compatibility with the new Foundry VTT version, and include lots of housekeeping and clean-up. Additionally, many bugs and small API changes have been worked on in the time since the previous release.

    COMPATIBILITY WARNING: The version 2.0.1 release for the system ONLY SUPPORTS Foundry Virtual Tabletop version 10 (release) and greater. To use this new game system version you must also use Foundry VTT version 10. 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-2.0.1/system.json


    Patch Notes

    The full list of changes is included below:

    ⚠️ Breaking Changes

    Icons

    The system icons under icons/items, icons/skills, and icons/spells have been removed in favour of the icons provided by core Foundry VTT. Additionally, the png token images under tokens/ have also been removed in favour of their webp counterparts. All of these images were migrated a while ago and so we do not expect this change to cause much disruption. If you have your own compendium packs, or if you are a module author that provides compendia with your module, you can trigger a migration that will convert the images automatically with the dnd5e.migrations.migrateCompendium utility.

    Dropping Folders on an Actor

    To align with the core API signature, _onDropItemCreate now accepts an array of itemData and calls the new _onDropSingleItem for each item provided in this way. Overrides of _onDropItemCreate that do not expect multiple items should override _onDropSingleItem instead.

    Number Inputs

    All <input> elements that were previously using data-dtype="Number" have been changed to <input type="number"> instead. Any styles or other selectors targeting these elements may need to be updated.

    Skills Refactor

    The CONFIG.DND5E.skills object has been refactored into an enum of objects rather than strings.

    Actor5e Refactor

    In order to clean up and smooth out the preparation flow for actors, the Actor5e class has had a few methods renamed and shuffled around. The original methods continue to exist and will log a deprecation warning until they are removed in a few more versions.

    • _computeArmorClass -> _prepareArmorClass (no longer returns a value)
    • _computeEncumbrance -> _prepareEncumbrance (no longer returns a value)
    • _computeInitiativeModifier -> _prepareInitiative
    • _computeSpellcastingProgression -> _prepareSpellcasting
    • _simplifyBonus -> dnd5e.utils.simplifyBonus

    ⚠️ Project Restructure ⚠️

    The entire dnd5e project has undergone an internal restructuring. As part of this, all ESM files that previously had a .js extension have been renamed to .mjs instead, and all Handlebars templates with an .html extension have been renamed to .hbs. Additionally, the system is now provided as a single, rolled-up file to end users. This means that if your module was previously importing individual files or classes from the dnd5e system directory, those imports will no longer work. All of the public classes are available on the dnd5e object, however, and this object should be available to your module code immediately, without any need for hooks.

    Remove any imports like the following:

    import ActorSheet5eCharacter from '../../../../systems/dnd5e/module/actor/sheets/character.js';
    

    Where your module references dnd5e classes, such as ActorSheet5eCharacter, replace them with the following:

    class MyCharacterSheet extends dnd5e.applications.actor.ActorSheet5eCharacter {}
    

    Compendium Content

    • Added Forgotten Adventures token packs 29-36.
    • Fixed the number of targets for Telepathic Bond.
    • Updated the SRD Rules compendium to use the Journal Pages feature.
    • Fixed the weight and cost of the Herbalism Kit.
    • Fixed some icons that weren't correctly migrated.

    Features

    • [#1441] Moved migration version constants into system.json flags.
    • [#1553] Added the ability to duplicate Advancements.
    • [#1664] Prompt the GM to reload the world when they change system settings that require it.
    • [#1673] Added short names for Handlebars partials.
    • Added several additional hooks to the item and actor rolling workflows. See the wiki for details.
    • [#1667] Fixed an instance of a low-contrast icon.
    • [#1643] Improved the rollSkill signature to allow options to more easily pass through.
    • [#1693] Improved the d20Roll API to allow for critical successes and failures to be deliberately suppressed.
    • [#1677] Added an identifier to measures templates created by items.
    • [#1543] Improved the item#roll API to allow certain resource consumptions to be disabled.
    • [#1675] Added UUIDs to Advancement objects.
    • [#1532] Display tool's type on its sheet header.
    • [#1706] Add support for vehicles (space) tool proficiency.
    • [#1314] Allow modules to customise the available skills by modifying CONFIG.DND5E.skills.
    • [#1610] Add the ability to apply temporary HP from the context menu on dice rolls.

    Bug Fixes

    • [#1476] Fixed issue with dropping a folder onto an actor sheet.
    • [#1649] Fixed several bugs in item grant advancement.
    • [#1691] Fixed an issue preventing the ProficiencySelector from showing selected items.
    • [#1607] Avoid setting NPC weapon proficiency or equipped status if already provided at creation time.
    • [#1470] Fixed unnecessary system migration in some cases.
    • [#1698] Fixed rollDeathSave not respecting the roll mode when displaying dead/stable.
    • [#1556] Fixed level selector issue for classes that did not have Advancements configured for all levels.
    • [#1652] Fixed an issue where Advancements on owned items would not be triggered if the class did not have an Advancement for that level.
    • [#1683] Fixed hit die rolls not included their derived data.
    • [#1748] The dnd5e.useItem hook should now be called even if the item's associated measured template is cancelled.
    • [#1140] Fixed doubling crit dice if the formula for the dice rolled contained a parenthetical expression.

    Contributors

    Many thanks to the following contributors in particular:

    • Calego
    • Chris Seieroe
    • Daniel Thorp
    • 'DjinnStar'
    • 'Giddy'
    • Kevin Winkler
    • 'kjolern'
    • Jeff 'Arbron' Hitchcock

    ... as well as all those who submitted bug reports and issues.

    Source code(tar.gz)
    Source code(zip)
    dnd5e-release-2.0.1.zip(39.82 MB)
    system.json(3.22 KB)
  • release-2.0.0-alpha3(Aug 25, 2022)

  • release-2.0.0-alpha2(Jul 23, 2022)

    Overview

    Ths 2.0.0-alpha2 release of the dnd5e system is designed to facilitate testing of Foundry Virtual Tabletop version 10 and is verified as compatible with V10 Testing 1 release 10.275 https://foundryvtt.com/releases/10.275

    Installation

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

    Source code(tar.gz)
    Source code(zip)
    dnd5e-release-2.0.0-alpha2.zip(130.75 MB)
    system.json(3.26 KB)
  • release-2.0.0-alpha1(Jul 15, 2022)

  • release-1.6.3(Jun 15, 2022)

  • release-1.6.2(Jun 13, 2022)

    A minor patch release to fix some lingering issues after the major 1.6.0 release. Please check there for the major patch notes.

    Installation: To manually install this release, please use the following manifest URL: https://gitlab.com/foundrynet/dnd5e/-/releases/release-1.6.2/downloads/system.json


    Patch Notes

    • [#1483] Fixed the proficiency die being coerced to a flat value in cases where it didn't need to be.
    • [#1517] [v10] Fixed automatic spell template creation in v10.
    • [#1535] Fixed being unable to delete vehicle crew and passengers.
    • [#1538] Fixed third-caster spell slot progression when the spell progression was being provided by a subclass.
    • [#1551] Fixed migration for crit data adding superfluous data to items that didn't need it.
    • [#1561] Fixed subclasses not being linked to parent classes when the parent class was using a derived identifier.
    • [#1567] Fixed a display issue in some areas of the UI with non-square item images.

    Contributors

    Many thanks to Cole Schultz, Jeff 'Arbron' Hitchcock, and all those who submitted bug reports and issues.

    Source code(tar.gz)
    Source code(zip)
    dnd5e-release-1.6.2.zip(128.60 MB)
    system.json(2.91 KB)
  • release-1.5.1(Jun 13, 2022)

    Installation: To manually install this release, please use the following manifest URL: https://gitlab.com/foundrynet/dnd5e/-/releases/release-1.5.1/downloads/system.json

    Source code(tar.gz)
    Source code(zip)
  • release-1.4.5(Jun 13, 2022)

    This Release was a Test of the CI Workflow introduced in 1.5.0 and contains no code different from 1.5.0

    Installation: To manually install this release, please use the following manifest URL: https://gitlab.com/foundrynet/dnd5e/-/releases/release-1.4.5/downloads/system.json

    Source code(tar.gz)
    Source code(zip)
  • release-1.4.4(Jun 13, 2022)

    This Release was a Test of the CI Workflow introduced in 1.5.0 and contains no code different from 1.5.0

    Installation: To manually install this release, please use the following manifest URL: https://gitlab.com/foundrynet/dnd5e/-/releases/release-1.4.4/downloads/system.json

    Source code(tar.gz)
    Source code(zip)
  • release-1.6.1(Jun 13, 2022)

    A minor patch release to fix some lingering issues after the major 1.6.0 release. Please check there for the major patch notes.

    Installation: To manually install this release, please use the following manifest URL: https://gitlab.com/foundrynet/dnd5e/-/releases/release-1.6.1/downloads/system.json


    Patch Notes

    • [#1496] Fixed issue with displaying damage on item sheets when damage type was None, Healing, or Healing (Temporary).
    • [#1499] Fixed issues with advancements referencing items in compendia that were not available.
    • [#1500] Fixed issue where adding dex to initiative tiebreaker was adding the whole score instead of the score/10.
    • [#1503] Fixed issue where a deprecation warning implementation broke modifying CONFIG.DND5E.classFeatures.
    • [#1507] Added new Item5e#advancement#byType accessor.
    • [#1512] Fixed issue where compendium icons would fail to load under some circumstances.
    • [#1514] Added some v10 compatibility checks to allow the advancement system to be tested in the v10 prototype.
    • [#1515] Fixed issue with a warning always appearing when moving macros on the hotbar.
    • [#1526] Added dnd5e.preAdvancementManagerComplete hook. See the wiki for details.
    • [#1527] Fixed issue with template.json not including hp.formula for NPCs.
    • [#1528] Fixed issue with AC migration in cases where AC data was malformed by modules.
    • [#1529] Deprecated Actor5e#addEmbeddedItems and SelectItemsPrompt.

    Contributors

    Many thanks to Calego, Cole Schultz, Jeff 'Arbron' Hitchcock, and all those who submitted bug reports and issues.

    Source code(tar.gz)
    Source code(zip)
    dnd5e-release-1.6.1.zip(132.12 MB)
    system.json(2.91 KB)
  • release-1.6.0(Jun 13, 2022)

    dnd5e 1.6.0

    This release has been under development for quite some time but we're confident it will have been worth the wait. The flagship feature is what we're calling the 'Advancement' system, but there have been several other improvements and features included so be sure to check the full patch notes at the bottom.

    COMPATIBILITY WARNING: The version 1.6.0 release for the system ONLY SUPPORTS Foundry Virtual Tabletop version 9 (release) and greater. To use this new game system version you must also use Foundry VTT version 9. 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://gitlab.com/foundrynet/dnd5e/-/releases/release-1.6.0/downloads/system.json

    While many of us on the Foundry VTT team as well as those in the wider dnd5e system development community have contributed a great deal to the design, review, and implementation of the Advancement API, I feel it's necessary to give a special mention to Jeff 'Arbron' Hitchcock who took on the bulk of the implementation and worked tirelessly to drive the release forward.


    Advancements

    The Advancements system provides a new framework for leveling up player characters in the dnd5e system and managing the changes which result from gaining levels. This includes hit points, new features, and automatic scaling of certain class abilities. Moreover this system provides a framework for us to continue automating other aspects of the level-up process like proficiencies, backgrounds, and more.

    Opting out

    If you do not want any level-up automation in your games, there is a new option under system settings to 'Disable level-up automation'. If you wish to disable this automation on a case-by-case basis, you can remove any advancements from the class, subclass, or background item that is about to be added to a given character.

    Configuring advancements

    Class, subclass, and background items now have an 'Advancement' tab that DMs can use to configure the advancements that will be granted to a character when they receive that item, or when they increase in levels.

    Configuring Advancements

    Though the bulk of the work was concerned with building the underlying infrastructure for the Advancement system, this release does ship with three types of advancements ready to use: HitPoints, ItemGrant, and ScaleValue, which are demonstrated in the above video.

    We intend to continue building out the system and adding more advancement types in future releases, eventually encompassing the entirety of character advancement.

    The existing SRD classes, subclasses and background have all been configured with these new advancements, and we'd encourage you to start adding them to any custom or homebrew ones you have.

    Note: Class items embedded on existing characters will not have been updated, and will not contain any advancements. To make use of these advancements on existing characters, you will either need to manually update those class items on the character, or delete them and drop a fresh one from the SRD.

    Character advancement

    The previous level up prompt has been replaced with one that is generated by the advancements configured on a character's items. It will trigger whenever a character levels up, allowing them to make choices before finally committing the changes to their character.

    Removing levels or modifying advancement choices will also appropriately modify the character.

    Custom advancements

    For module developers or content creators who wish to add new types of advancements, there is a wiki article explaining the more technical details.

    User Guide

    For a more in-depth walkthrough of the new Advancement system, @MaxPat931 has kindly contributed a comprehensive User Guide which can be found on the wiki.


    New Item Types

    This update introduces new Background and Subclass item types that can contain advancement options.

    Background

    This type will display in the Backgrounds section on the "Features" tab of a character sheet and accepts advancements, but contains no special functionality.

    The "Acolyte" background is included in the "Backgrounds (SRD)" compendium along with its background feature.

    Subclass

    This type is displayed with its associated class. Ensure that the "Class Identifier" field on the subclass matches the "Identifier" field on the class. Spellcasting data set on a subclass will override any spellcasting set on the class it is associated with, so all the Arcane Trickster rogues out there are set.

    Each of the SRD subclasses have been included in the "Subclasses (SRD)" compendium.


    Patch Notes

    The full list of changes is included below:

    Deprecations

    Class features

    Actor#getClassFeatures and Actor#loadClassFeatures are now deprecated. Code referencing them or CONFIG.DND5E.classFeatures should be updated to make use of the new Advancement API instead.

    The wiki contains an example of how to configure a custom class using the new API to achieve feature parity with the deprecated methods.

    Resting hook

    The restCompleted hook has been moved under the dnd5e namespace and the old hook name has been deprecated. Please update references to restCompleted to dnd5e.restCompleted instead.

    :warning: Breaking Changes

    Spell components

    As part of the work to localise spell component abbreviations [#1313], the 'concentration' and 'ritual' abbreviations were removed from the displayed components on the item sheet. These tags remain, unabbreviated, in their own blocks on the item sheet.

    Additionally, the Spell Item's label field has had a breaking change, new display-friendly labels are located at item.labels.components.all.

    Subclasses

    The subclass field of class items has been removed in favour of the new subclass item type.

    Custom AC calculations

    Due to a gap in the AC calculation API, some of our guidance around writing custom AC formulae, as well as our own examples, incorrectly made use of @attributes.ac.base. This value is intended to store the result of the AC calculation and correspond to a creature's 'base AC' per the rules, and should not be used as part of the AC calculation itself.

    Instead, two new values have been created: @attributes.ac.armor, and @attributes.ac.dex. ac.armor is equal to the creature's equipped armour value (or 10 if they have no armour equipped), while ac.dex is equal to the creature's dexterity modifier, appropriately capped by their equipped armour, or set to 0 when wearing heavy armour.

    Custom formulae that intended to reference a character's armoured or unarmoured AC should make use of these new values instead. A migration is provided with this release that will automatically convert references to ac.base with ac.armor in custom AC formulae as well as Active Effects.

    Compendium Content

    New Compendia

    • Tables (SRD) contains rollable tables available in the SRD
    • Backgrounds (SRD) contains advancement enabled backgrounds from the SRD
    • Subclasses (SRD) contains advancement enabled subclasses for each Class in the SRD

    Related Issues

    • Added Forgotten Adventures token packs 23-28.
    • [#1038] Improvements to SRD Figurine items.
    • [#1329] Resynced SRD Monsters' and Starter Heroes' spells with updated versions in the SRD Spells compendium.
    • [#1411] Added Bit & Bridle, Saddles, and Saddlebags to SRD Items compendium.
    • [#1418] Fixed False Life level scaling.
    • [#1427] Fixed various broken content links.
    • [#1446] Updated spell scrolls to include SRD errata.
    • [#1450] Fixed Purify Food and Drink ritual tag, and Zone of Truth concentration tag.
    • [#1460] Added madness roll tables.
    • [#1488] Added Monk-specific Unarmed Strike that uses new scaling Martial Arts die.

    Features

    • [#506] Added Hit Dice as an option to item resource consumption.
    • [#530] Added explicit class and subclass identifiers.
    • [#563] Display weapon attack, to-hit, and saving throw DC on item sheets.
    • [#760] Support temporary hit points for NPC actors.
    • [#1059] Added background item type.
    • [#1080] Added subclass item type.
    • [#1094] Max character level is now configurable and no longer hard-coded.
    • [#1197] Added Honor and Sanity optional ability scores and the ability to configure ability scores used by the system.
    • [#1300] Added attunement field to tools.
    • [#1311] Added max attunement slots to character data.
    • [#1313] Added localisation for spell component abbreviations.
    • [#1393] Added the ability for additional spell tags to be configured.
    • [#1439] Added ac.armor and ac.dex computed AC values to fix hole in AC calculation API.
    • [#1484] Improved hook documentation.

    Bug Fixes

    • [#1040] Use spellcasting modifier as default modifier for spell scrolls.
    • [#1093] Fixed creating a level 1 duplicate of a class if one was dropped onto a sheet where there was already a 20th level version of the same class.
    • [#1345] Fixed broken Bardic Inspiration content links in several places.
    • [#1374] Fixed the incorrect AC preview being shown for custom AC formulae that referenced @attributes.ac.base.
    • [#1392] Fixed ability check bonuses not being applied to tool checks that used a non-default ability.
    • [#1412] Fixed the rollMode not being passed to the roll object as part of a d20Roll.
    • [#1416] Fixed the real actor name being used instead of the token name in chat message flavour text when making certain rolls.
    • [#1439] Fixed controls being visible on Active Effect sheets in contexts where they were not actually useable.
    • [#1453] Various vehicle sheet fixes.
    • [#1455] Fixed occasionally using incorrect default ability mod for skill checks.
    • [#1457] Fixed rerolling a critical damage roll doubling the dice.
    • [#1459] Fixed default ability mod inference for feature items.
    • [#1462] Fixed use of incorrect non-deterministic expression error localisation string.

    Contributors

    Many thanks to the following contributors in particular:

    • Calego
    • Jeff 'Arbron' Hitchcock
    • MaxPat931
    • playest
    • unsoluble
    • Victor Farah

    ... as well as all those who submitted bug reports and issues.

    Source code(tar.gz)
    Source code(zip)
    dnd5e-release-1.6.0.zip(132.12 MB)
    system.json(2.91 KB)
  • release-1.5.7(Jun 13, 2022)

    Bug Fixes

    • Fixed spell attack rolls not using proficiency dice when enabled.
    • Fixed Adult Green Dragon and Otyugh damage formulae.
    • Allowed ammunition to be consumed when using non-attack abilities.
    • Added missing Marvelous Pigments and Truth Serum to SRD item compendium.
    • Fixed an error when cancelling a spell template placement workflow triggered from somewhere other than a character sheet.
    • Fixed Defense Fighting Style's Active Effect bonus sometimes being concatenated to the existing value rather than added.
    • Fixed a race with the ProficiencySelector cache loading.
    • Fixed incorrect speaker data when making a damage roll.
    • Updated some SRD class features to appropriately provide a minimum of 1 use where applicable.

    Contributions

    Many thanks to Eric Triebe, Chris Seieroe, @d1no1, @MaxPat931, Jeff 'Arbron' Hitchcock, @TheGiddyLimit, and all those who submitted bug reports and issues.

    Installation: To manually install this release, please use the following manifest URL: https://gitlab.com/foundrynet/dnd5e/-/releases/release-1.5.7/downloads/system.json

    Source code(tar.gz)
    Source code(zip)
    dnd5e-release-1.5.7.zip(116.01 MB)
    system.json(2.66 KB)
  • release-1.5.6(Jun 13, 2022)

  • release-1.5.5(Jun 13, 2022)

  • release-1.5.4(Jun 13, 2022)

    This is a minor release contains small quality-of-life fixes, and some bug fixes. Notably, all consumables except rods, trinkets, and wands are excluded from the requirement of being marked as 'equipped' in order to provide their Active Effects.

    Additionally, this release provides a migration for all existing spell icons to now use those provided by the core foundry software. It uses the same mechanism as the earlier non-spell icon migration in 1.5.0, so please refer to those release notes for details on how to apply this migration to your own compendia.

    Installation: To manually install this release, please use the following manifest URL: https://gitlab.com/foundrynet/dnd5e/-/releases/release-1.5.4/downloads/system.json

    Source code(tar.gz)
    Source code(zip)
    dnd5e-release-1.5.4.zip(119.38 MB)
    system.json(2.44 KB)
  • release-1.5.3(Jun 13, 2022)

    A minor release to fix an issue with the minimum core version. Also included is a macro icon migration, some additional small fixes to the token and icon migrations, and some further compendium data cleaning.

    Installation: To manually install this release, please use the following manifest URL: https://gitlab.com/foundrynet/dnd5e/-/releases/release-1.5.3/downloads/system.json

    Source code(tar.gz)
    Source code(zip)
    dnd5e-release-1.5.3.zip(119.37 MB)
    system.json(2.44 KB)
  • release-1.5.2(Jun 13, 2022)

  • release-1.5.0(Jun 13, 2022)

    dnd-150-tokens-screenshot

    In addition to numerous bug fixes and compendium fixes, this update brings several useful features and additions to the system, including: extra data on items to help proficiency determination; the proficiency dice variant rule; extra critical damage and threshold fields on weapons; a couple of popular critical hit house rules; as well as the ability to set individual ability check and saving throw bonuses. (And a bonus feature for those of you dabbling in the v9 prototype).

    Features

    Screenshot of Base Weapon field on items

    That Longsword +1 you just picked up can have its base weapon type set appropriately now so the system can better determine if you're proficient with it or not.

    Screenshot of proficiency dice variant option

    Your DM is now able to switch their game to use this proficiency dice variant rule as presented in the DMG and have it appropriately affect all attack rolls, ability checks, and saving throws.

    Screenshot of weapon critical threshold and extra critical damage

    Vicious or Vorpal weapons can now have their extra critical hit damage configured, as well as any homebrew items you may have with special critical hit thresholds.

    Screenshot of critical hit options

    There's now built-in support for a couple of popular critical hit house rules, as well as a more flexible API for modders who want to tweak things further.

    Screenshot of individual saving throw bonus configuration

    Ability scores and skills can now be individually configured to set additional bonuses to the skill or ability in question, any passive scores, or to the associated saving throw. All of these new fields may also be targeted by Active Effects.

    Bonus Feature

    And the bonus feature is scrolling text if you happen to be using the v9 prototype.

    GIF of the scrolling text in action

    Developer Tooling

    Another big focus of the update was on developer tooling with the goal of making it easier for others to contribute to the system, and faster for us to review those contributions. Those of you who are interested in that should take a look at the new CONTRIBUTING.md that has been added as part of this release.

    We've also made it a lot easier to review compendium contributions. If you aren't interested in developing, but still want to submit fixes to compendium content, it should be much simpler now. Feel free to implement the fix, export the item or actor, and then attach it to an issue for us to review.

    Many thanks to Calego additionally for implementing a CI workflow in the repository, allowing us to streamline the release process as well as strip out files from the final release that were only used in development.

    Icon and Token migrations

    Courtesy of our friends at Forgotten Adventures this update ships with brand new tokens from Token Packs 20, 21 & 22, as well as all existing tokens in WEBP format. The monsters and heroes compendia have been updated to use these new WEBP tokens, and a migration will be applied to your world to update any of the old PNG tokens in use with their new, WEBP counterparts. The old PNGs won't be going anywhere, they're still there so as to not break any actors you might have stashed away in compendia or from modules. If you would like to update those compendia though, you can run the following against them:

    game.dnd5e.migrations.migrateCompendium(pack);
    

    Additionally, many of the item icons have been switched to use the ones provided by core foundry (which are also in WEBP format), and a similar migration has been added to convert those in your world too. Like with the token images, the original icons are not being removed from the system, so you can still use them. If you would like to update any of those icon paths in your compendia to the core foundry ones, you can run the same migration as above.

    Patch Notes

    The full list of changes is included below:

    Features

    • Added proficiency dice variant rule.
    • Improve automatic proficiency determination across weapons, tools, and armour.
    • Added the ability to configure individual ability check and saving throw bonuses.
    • Split out the compendia into individual JSON files and added tooling around packing and unpacking them.
    • Added currency abbreviation localisations.
    • Added support for some critical hit house rules.
    • Added CONTRIBUTING.md and package.json to provide better support to contributors.
    • Added a way for items to prompt for ability check rolls, similar to saving throws.
    • Tool items can now be configured with an individual bonus.
    • Added critical hit threshold and extra critical damage fields to weapons.
    • Added an ESLint configuration to the repository to aid new contributors in passing code style checks.
    • Most bonus fields now support data references.
    • Ability check bonuses now apply to initiative rolls when appropriate.

    Bug Fixes

    • Fixed several issues where invalid roll formulae would break character sheets.
    • Fixed some issues with roll formula simplification.
    • Fixed the missing Active Effects tab on Vehicle sheets.
    • Fixed spell to spell scroll conversion sometimes missing some data.
    • Numerous compendium data clean ups.
    • Fixed Vehicles trying to use a proficiency bonus they didn't have.
    • Fixed clicking on an Active Effect icon attempting a roll.
    • Fixed macro duplication logic.

    Contributors

    Thanks to Calego, Connor McCormick, 'DFreds', 'Giddy', Jeff 'Arbron' Hitchcock, Johannes Loher, 'Kandashi', Phil Best, 'Surge D20', and all those who submitted bug reports and issues.

    Installation: To manually install this release, please use the following manifest URL: https://gitlab.com/foundrynet/dnd5e/-/releases/release-1.5.0/downloads/system.json

    Source code(tar.gz)
    Source code(zip)
    dnd5e-release-1.5.0.zip(119.34 MB)
    system.json(2.44 KB)
  • release-1.4.3(Jun 13, 2022)

  • release-1.4.2(Jun 13, 2022)

    This release includes improvements to auto-calculated AC, as well as some minor bug fixes.

    There is now a simpler way to set a creature's Natural Armour:

    image

    This will allow the creature to still receive the benefits from a Shield they have equipped, as well as any additional bonus AC items they are wearing. Existing NPCs in your world that were previously using the 'flat' complete AC override will be automatically migrated to use this new Natural Armour calculation. It is still possible to set Natural Armour with an armour item and the 'Equipped' calculation, or to override it entirely by using the 'Flat' calculation.

    The AC breakdown tooltip has been improved to separate out bonuses from different item sources and display the item it came from:

    image

    The 'Magical Bonus' equipment type has been removed as it was no longer needed. All items of this type in your world will be automatically migrated to the 'Trinket' equipment type. A small script is provided that can automatically create the Active Effects necessary to have AC bonuses from those items apply to characters using auto-calculated AC now: https://gitlab.com/foundrynet/dnd5e/-/snippets/2158796

    Bug Fixes

    • Fixed resource consumption using negative values
    • Fixed errors occurring when death saves collected three results
    • Fixed several issues around the AC breakdown
    • Fixed some deprecation warnings
    • Fixed some of the data for the Web and Fire Shield spells in the SRD
    • Removed unused font

    Contributors

    Thanks to Jeff 'Arbron' Hitchcock, Giddy, and all those who submitted bug reports and issues.

    Source code(tar.gz)
    Source code(zip)
    dnd5e-release-1.4.2.zip(97.01 MB)
    system.json(2.44 KB)
  • release-1.4.0(Jun 13, 2022)

    This update brings a long-requested feature to the dnd5e system: automatic armor class calculation. This D&D5E system update was championed by Kim (Fyorl) who led and organized the community efforts to implement the features in this update. Big thanks are due to all the contributors!

    screenshot of NPC sheet showing splint, shield and calculated AC value with cog visible

    An NPC with their armor equipped

    Players and DMs alike will be able to configure their character's or NPC's armor class using a new dialog on the sheet that comes pre-configured with some common options such as Draconic Resilience or Unarmored Defense.

    screenshot of armor configuration dialog

    By default a character will use whatever equipped armor they have to calculate their AC, according to the rules you've come to expect. They may also opt to select one of the other pre-configured armor calculations. For those with homebrew needs, there is also an option to input an entirely custom armor calculation formula. Finally, those who wish to opt-out entirely of automatic armor class calculation can input whatever value they like for their character's AC, just as before.

    screenshot of armor tooltip with armour, shield, and ring of protection

    Hovering over the armor class value on the sheet will display a tooltip containing a breakdown of how that armor class value has been achieved.

    Active Effects

    All of these new components to armor class calculation (ac.flat, ac.base, ac.shield, ac.bonus, and ac.cover) are targetable with Active Effects, opening the door to a variety of new magic item and in-combat effects. See the SRD item compendium for some examples of this, such as the Ring of Protection, and Robe of the Archmagi.

    Migrations

    Those of you with existing worlds should expect no major disruptions with this update. All of your existing Actors will have been migrated to preserve their armor class values. To start using the new automatic armor class calculation on those migrated Actors, all you need to do is open their armor class configuration and delete the large, top number, removing the armor class override.

    Any Actors you have in world-level compendia will have also received the same treatment. You will notice that the Starter Heroes and the SRD monsters are all now using automatic armor class calculations (where appropriate). If you would like to apply this to your own world-level compendia or are a dnd5e module developer and wish to migrate the compendia provided with your module, we have provided a small migration utility to help. You may run the following in the console or as a script macro:

    game.dnd5e.migrations.migrateArmorClass(pack);
    

    This will migrate the given compendium, removing the armor class override from any Actors that have armor and/or shield items equipped. If you need to apply the default migration which preserves AC values exactly, you may run the normal dnd5e migration as usual with migrateCompendium.

    Patch Notes

    While armor class was the main focus of this release, there were still plenty of other fixes and improvements that were added.

    Features

    • Automatic armor class calculation.
    • Added support for metric units in the system settings. This just changes labels and does not automatically convert existing data.
    • Item rarity is now a drop-down and can be configured by modules through CONFIG.DND5E.itemRarity.
    • Tool items now have a tool type category that they can belong to.
    • Active Effects transferred from items which are equippable or have an attunement requirement will now no longer provide their effect if they aren't equipped or attuned.
    • A character may now select individual weapon, armor, and tool proficiencies instead of only whole categories.
    • The sorting of proficiencies in the proficiency selector dialog is now localisation-aware.
    • Added a restCompleted hook for modules that fires whenever a character finishes a long or short rest.
    • Eligible class skills can now be configured on class sheets.
    • Vehicles may now have a land, air, or water type.

    Bug Fixes

    • Items that are added from a compendium and then renamed no longer continue to stack when another of the original item is added again from the compendium.
    • Fixed some issues around traits like Remarkable Athlete or Jack of all Trades persisting their proficiency changes to the actor even after the traits are removed.
    • Fixed the level at which the Champion's Additional Fighting Style feature is received.
    • Fixed the level at which the Paladin's Spellcasting feature is received.
    • Placing an Actor with custom token sizes into a compendium no longer replaces those custom token sizes when you again retrieve that creature from the compendium.
    • The dialog for selecting features on level up no longer scrolls off the screen if there are too many features.
    • Fixed encumbrance calculation.
    • Fixed polymorphing a token resetting the token's vision even if 'Keep Vision' was selected.

    Contributors

    Thanks to Phil Best, Jeff 'Arbron' Hitchcock, Iñaki 'ccjmk' Guastalli, Varriount, and all those who submitted bug reports and issues.

    Source code(tar.gz)
    Source code(zip)
    dnd5e-release-1.4.0.zip(97.03 MB)
    system.json(2.44 KB)
  • release-1.3.6(Jun 13, 2022)

    Bug Fixes

    • Chat cards which prompt for a saving throw no longer leaving the saving throw button in a disabled state.
    • Marking skills as proficient on the character sheet now functions correctly with Jack of all Trades active.
    • Spell from Scroll creation workflow from an actor now functions as intended.
    • [Polymorph] Restore Transformation of linked NPCs no longer leaves transformed token on canvas
    • [Polymorph] Resolved some edge cases related to polymorph transformation handling

    Contributors

    • Thanks to all those who submitted bug reports and issues.
    Source code(tar.gz)
    Source code(zip)
    dnd5e-release-1.3.6.zip(97.02 MB)
    system.json(2.44 KB)
  • release-1.3.5(Jun 13, 2022)

  • release-1.3.4(Jun 13, 2022)

    image

    New Features

    • Added a host of missing translation strings.
    • Item proficiency maps now configurable by modules.
    • More token art from Forgotten Adventures.

    Bug Fixes

    • Fix Cure Wounds in Acolyte and Priest NPCs.
    • Fix rotating ability templates causing them to disappear.
    • Fix reverting a transformed token to a token with a wildcard image.

    Contributors

    • Thanks to Kandashi, Jeff "Arbron", Gerardo Magela Machado da Silva, Cameron McFarland, and all those who submitted bug reports and issues, as well as Stryxin and Forgotten Adventures for the new token artwork.
    Source code(tar.gz)
    Source code(zip)
    dnd5e-release-1.3.4.zip(97.02 MB)
    system.json(2.44 KB)
  • release-1.3.2(Jun 13, 2022)

    DnD5e Version 1.3.2 is a minor patch version for the dnd5e game system which focuses on updating the system to be compatible with Foundry Core 0.8.3.

    COMPATIBILITY WARNING: The version 1.3.2 release for the system only supports Foundry Virtual Tabletop version 0.8.2 and greater. If you do not wish to update your core software, please continue using a previous version of the dnd5e system.

    Installation: To manually install the 1.3.2 release, please use the following manifest URL: https://gitlab.com/foundrynet/dnd5e/raw/release-1.3.2/system.json


    New Features

    • Improve the "Cargo" container for vehicle sheets to contain many different varities of physical items that are dropped on the vehicle sheet cargo tab. #827
    • Add default logic to support using the character's spellcasting modifier for ranged and melee spell attacks by default. !287

    Bug Fixes

    • Fix an ivalid reference to the DEFAULT_TOKEN outside of the scope of the CONST object. #1121
    • Fix the attribute selection dropdown when assigning resource consumption to an Item. #1120
    • Prevent dropping a "class" actor on a vehicle sheet. #1119
    • Fix the display of quantity/weight/price attributes on vehicle sheet inventory lists. #1118
    • Harden the actor preparation logic against errors that could occur if the spellcasting ability is an invalid value. #1116

    Contributors

    • Thanks to Kandashi and Jeff "Arbron" for valuable contributions to this update!
    Source code(tar.gz)
    Source code(zip)
    dnd5e-release-1.3.2.zip(94.04 MB)
    system.json(2.44 KB)
  • release-1.3.1(Jun 13, 2022)

    DnD5e Version 1.3.1 is a minor patch version for the dnd5e game system which focuses on updating the system to be compatible with Foundry Core 0.8.3.

    COMPATIBILITY WARNING: The version 1.3.0 release for the system ONLY SUPPORTS Foundry Virtual Tabletop version 0.8.2 (release) and greater. If you do not wish to update your core software, please continue using a previous version of the dnd5e system.

    Installation: To manually install the 1.3.1 release, please use the following manifest URL: https://gitlab.com/foundrynet/dnd5e/raw/release-1.3.1/system.json


    New Features

    • Opt-in to asynchronous dice rolls for d20roll and damageRoll evaluation to allow modules which want to support async evaluation to begin implementing that functionality using the dnd5e system. #1110

    Bug Fixes

    • Fix saving throw proficiencies on Class item sheets #1115
    • Update the class items owned by "Starter Hero" actors in the compendium pack #1114
    • Fix the passing of rollMode through the d20Roll and damageRoll helper methods #1112
    • Resolve deprecated function warnings at various stages of the dice rolling pipelines #1111
    • Fix an issue with the dice roll dialog for d20 rolls in cases where an ability modifier selector is not shown #1109
    • Fix a syntax error with the _determineCriticalMode step of damage rolls when an event is not present #1108
    Source code(tar.gz)
    Source code(zip)
    dnd5e-release-1.3.1.zip(94.03 MB)
    system.json(2.44 KB)
  • release-1.3.0(Jun 13, 2022)

    DnD5e Version 1.3.0 is a new patch version for the dnd5e game system which focuses on updating the system to be compatible with Foundry Core 0.8.2 and adding some Level Up features.

    Tokens

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

    Installation: To manually install the 1.3.0 release, please use the following manifest URL: https://gitlab.com/foundrynet/dnd5e/raw/release-1.3.0/system.json


    Feature Improvements

    • Brings dnd5e system up to date with Foundry Core 0.8.2.
    • Add a prompt when adding a new class or leveling up to ask which class features should be automatically added to the character. #721 #1095
    • Add hit dice configuration window to make manual rolling and recovering hit dice outside of a rest easier. #936
    • Add new token bar that visualizes temp and temp max HP. #306
    • Add indication of pact slot level to spellbook on character sheet.
    • Identical consumables dropped onto character sheets will now stack. #105
    • Active Effect formula parts will be concatenated with a +. #927

    Bug Fixes

    • Fix control + click not rolling disadvantage on Mac. #1089
    • Fix being possible to critically roll hit dice. #1073
    • Fix localized skills in character sheets not being alphabetically sorted. #1070
    • Fix Limited Uses of 0 prompting for use. #1051
    • Fix missing localization string for "Crewed". #1045
    • Fix Elven Accuracy not applying to features with attack actions. #1043
    • Fix class features not being granted at first level. #996
    • Fix issue causing certain pieces of actor data to not be available in max uses. #995
    • Fix d20 and damage rolls not respecting roll mode selected in dialog. !260
    • Fix finesse not working on natural weapons. #982
    • Fix attunement information being discarded for items dropped onto character sheets. #980
    • Fix save DC not showing properly on chat cards for upcast spells. #975
    • Fix subtracting ability modifier improperly if the modifier is negative. #884
    • Fix modifying actor weight not triggering encumberance attribute bar update. #1008

    Compendium Content

    • Incorporate Forgotten Adventures Creature Token Packs 15–18. #1091 #990
    • Update creature types to include more data allowed by new creature type format.
    • Rename "Gaming Set of Dragonchess" to "Gaming Set of Chess". #1099
    • Remove Three-Dragon Ante item. #1099
    • Fix Restrained title. #973
    • Fix missing attunement on numerous items. #979
    • Fix incorrect token sizes for monsters that don't yet have default token artwork. #972
    • Fix Ancient White Dragon burrow speed. #1027
    • Fix Mirror Image description. #1041
    • Fix Rug of Smothering artwork. #1064
    • Fix journal entries containing broken links to the Incapacitated condition. #1009
    • Fix Arcane Sword description text. #969
    • Fix CR0 creatures. #970
    • Fix Couatl attack bonus. #1007
    • Fix Solar's Binding Gaze description. #1005
    • Fix Find Familiar not being tagged for Ritual Casting. #994

    API Improvements

    Breaking Changes :warning:

    • Change character and class item spellcasting to object to support new spellcasting ability data. !259 #1022
    • Change NPC type to more expressive object configurable from the NPC sheet through the ActorTypeConfig app. #408
    • Removed Handlebars helper getProperty in favor built-in lookup helper. #1061
    • Removed tool-card.html and tool-roll-dialog.html, instead use normal item roll dialog. #1101 #981
    • Modify contents of DND5E.spellScrollIds to only contain ID rather than whole UUID so they can be used in conjunction with the new sourcePacks data.

    Config

    • Add Dice.DamageRoll and Dice.D20Roll. #1097
    • Add DND5E.creatureTypes containing 5e types with localized labels. #408
    • Add DND5E.sourcePacks containing the name of compendium packs that need to be referenced in code for easier localization of packs by modules. !254
    • Add DND5E.tokenHPColors containing colors used on the new HP bar. #306
    • Add DND5E.toolIds and DND5E.weaponIds linking base tool and weapon items to their compendium entries. #1057

    Actor

    • Split shortRest and longRest into multiple steps to expose a more expressive API. #1000
    • Add addEmbeddedItems method to Actor5e to simplify adding embedded items to an Actor. !264
    • Add formatCreatureType static method to convert a NPC's creature type object into a localized string. #408
    • Add originalClass property to the Actor data to denote the primary class. This value can be modified by a new dropdown in the actor's special traits. #1053
    • Death Saving Throw results messages now respect selected roll privacy mode. #991
    • Rename getClassFeatures to loadClassFeatures. :warning:
    • Rename _createClassFeatures to getClassFeatures. :warning:
    • Ensure _onDropItemCreate returns a value correctly. #978
    • Allow feature application on levelup to be skipped by API calls. #1095
    • Move calculation of data.classes to a getter on Actor5e. #1010 with !266

    Item

    • Fix Item5e#roll misusing consumeSpellSlot #1025
    • Add getDerivedDamageLabel to produce a simplified damage formula for UI uses !193
    • Add prepareFinalAttributes to finalize derived data after owner data has finished populating :warning: #1018
    • Add prepareMaxUses to shift max use calculation out of prepareDerivedData :warning: #995
    • Add _preCreate, _onCreate, _preUpdate, _onDelete, _onCreateOwnedEquipment, _onCreateOwnedSpell, and _onCreateOwnedWeapon methods to handle logic moved from Actor5e#_preCreateOwnedItem :warning:
    • Remove restriction limiting finesse property to only martial weapons
    • Remove restriction limiting use of elven accuracy to only weapons and spells

    Class

    • Add saves to class containing an array of saving throw proficiencies the class grants. #270 and 913f82ed

    Dice

    • Add D20Roll and DamageRoll subclasses of Roll. #964 #962
    • Add defaultAction option to D20Roll#configureDialog and defaultCritical to DamageRoll#configureDialog to allow the correct button to be highlighted as default. #920
    • Change internal use of imported D20Roll to instead use CONFIG.Dice.D20Roll. #1097
    • Combine roll-dialog.html and tool-roll-dialog.html into single template. #981
    • Deprecated d20Dialog and damageDialog in favor of DamageRoll#configureDialog #964
    • Fix D20 rolls not respecting selected roll mode if core roll mode is not Public Roll. #943

    Tokens

    • Add Token5e extension of Token which implements a fancy HP bar. #306
    • Add TokenDocument5e extention of TokenDocument and move getBarAttribute code into the new class. :warning: !253

    Apps

    • Improve and Simplify TraitSelector application to allow for explicitly passing the array path to update with the form. #1014
    • Add ActorHitDiceConfig app for modifying the hit dice on an actor. #936
    • Add ActorTypeConfig app for modifying the type on an NPC. #408
    • Add SelectItemsPrompt app for narrowing a list of item Ids based on user input. !264

    Contributors

    We had a tremendous level of community developer involvement in this release. Many thanks to the following community contributors who submitted code changes for this release:

    • Arbron
    • Calego
    • Cole
    • Giddy
    • Moerill
    • Zeel
    • Martin
    • Fallayn
    • Stryxin and Forgotten Adventures
    Source code(tar.gz)
    Source code(zip)
    dnd5e-release-1.3.0.zip(94.03 MB)
    system.json(2.44 KB)
Owner
Foundry Virtual Tabletop
Foundry Virtual Tabletop self-hosted software that provides an innovative online role-playing experience.
Foundry Virtual Tabletop
A module to integrate World Anvil with Foundry Virtual Tabletop.

Foundry Virtual Tabletop - World Anvil Integration This module provides an integration with World Anvil for Foundry Virtual Tabletop, allowing you to

Foundry Virtual Tabletop 5 Sep 7, 2022
Foundry-Hardhat plugins: Use Foundry for Hardhat projects

This repo contains hardhat plugins to use foundry tools in hardhat environments. Installation See in each plugin anvil forge foundryup Documentation F

Foundry 77 Nov 3, 2022
A community contributed game system for Pathfinder Second Edition.

The Official Pathfinder Second Edition Game System for FoundryVTT This system uses trademarks and/or copyrights owned by Paizo Inc., which are used wi

Foundry Virtual Tabletop 104 Jan 5, 2023
Grupprojekt för kurserna 'Javascript med Ramverk' och 'Agil Utveckling'

JavaScript-med-Ramverk-Laboration-3 Grupprojektet för kurserna Javascript med Ramverk och Agil Utveckling. Utvecklingsguide För information om hur utv

Svante Jonsson IT-Högskolan 3 May 18, 2022
Hemsida för personer i Sverige som kan och vill erbjuda boende till människor på flykt

Getting Started with Create React App This project was bootstrapped with Create React App. Available Scripts In the project directory, you can run: np

null 4 May 3, 2022
Kurs-repo för kursen Webbserver och Databaser

Webbserver och databaser This repository is meant for CME students to access exercises and codealongs that happen throughout the course. I hope you wi

null 14 Jan 3, 2023
The full power of the Go Compiler directly in your browser, including a virtual file system implementation. Deployable as a static website.

Static Go Playground Features Full Go Compiler running on the browser. Supports using custom build tags. Incremental builds (build cache). Supports mu

null 25 Jun 16, 2022
This a web application for a company that provides commercial and scientific space travel services. The application will allow users to book rockets, dragons and join selected space missions.

Space Travelers' Hub In this project, we have worked with the real live data from the SpaceX API. Our task was to build a web application for a compan

Apuabi Titilope 4 Oct 31, 2022
Projeto Trybers and Dragons - Backend Trybe

Boas vindas ao repositório do projeto Trybers and Dragons! Esse projeto foi desenvolvido durante o módulo de Backend na Trybe! #vqv Aqui você vai enco

Gabriel Kauer 3 Nov 3, 2022
The Frontend of Escobar's Inventory Management System, Employee Management System, Ordering System, and Income & Expense System

Usage Create an App # with npx $ npx create-nextron-app my-app --example with-javascript # with yarn $ yarn create nextron-app my-app --example with-

Viver Bungag 4 Jan 2, 2023
Use thirdweb's token, edition drop, and a custom contract using thirdweb deploy to build a Play-to-Earn game!

thirdweb Play-to-Earn Example This example project is a simple Play-to-Earn (P2E) game! The Idea The game is a "mining" game, where your character min

thirdweb templates 28 Jan 2, 2023
🐬 A simplified implementation of TypeScript's type system written in TypeScript's type system

?? HypeScript Introduction This is a simplified implementation of TypeScript's type system that's written in TypeScript's type annotations. This means

Ronen Amiel 1.8k Dec 20, 2022
GitHub action to install Foundry

foundry-toolchain Action This GitHub action installs Foundry. Example workflow on: [push] name: test jobs: check: name: Foundry project ru

Bjerg 128 Jan 5, 2023
Solidity starter combining foundry and hardhat because both are great and I can't live without either...

Combination Pizza Hut & Taco Bell Foundry && HardHat starter template. Motivation I like them both. With this set-up we get: Unit tests written in sol

Cache Monet 32 Aug 23, 2022
Library for Foundry VTT which provides easy access to dark comedy fantasy setting created by Richard Zadmar Woolcock

Library for Foundry VTT which provides easy access to dark comedy fantasy setting created by Richard Zadmar Woolcock. Current inclusions are a bestiary, edges, hindrances, and a journal with setting information, character creation, and more. The Savage Worlds Adventurers Edition Game System is the system this setting is designed for.

KevDog 2 Mar 18, 2022
Use Hardhat & Foundry in the same project

Hardhat Foundry Starter This is a solidity starter template which lets you use both, Hardhat and Foundry. Why use both the tools? Foundry has some awe

Rajdeep Bharati 12 Aug 23, 2022
Minimal template to get started with Foundry + Hardhat

Hardhat x Foundry Template Template repository for getting started quickly with Hardhat and Foundry in one project Getting Started Use Foundry: forge

Foundry 158 Jan 3, 2023
🛠️ Easily track & compare gas costs estimated by Foundry on each of your Pull Requests!

?? ??️ Foundry Gas Diff Reporter Easily compare gas reports generated by Foundry automatically on each of your Pull Requests! How it works Everytime s

Romain Milon 133 Dec 28, 2022
[Book] 2019 edition of our front-end development handbook

Front-End Developer Handbook 2019 Written by Cody Lindley Sponsored by Frontend Masters, advancing your skills with in-depth, modern front-end enginee

Frontend Masters 4.1k Dec 28, 2022