foundryvtt / dnd5e

An implementation of the 5th Edition game system for Foundry Virtual Tabletop (http://foundryvtt.com).
MIT License
339 stars 224 forks source link

Allow for an item to have multiple action profiles for damage rolls, saving throws, etc... #461

Closed aaclayton closed 3 months ago

aaclayton commented 4 years ago

Originally in GitLab by @DarKDinDoN

Original Suggestion

Hi, It would be nice if we can add more than one save roll to a feat or any item. Example: the monk "open hand technique":

Open Hand Technique
Starting when you choose this tradition at 3rd level, you can manipulate your enemy’s ki when you harness your own. Whenever you hit a creature with one of the attacks granted by your Flurry of Blows, you can impose one of the following effects on that target: 

* It must succeed on a Dexterity saving throw or be knocked prone.
* It must make a Strength saving throw. If it fails, you can push it up to 15 feet away from you.
* It can’t take reactions until the end of your next turn.

[Feature Request] Break Items separate actions into parts

From @jeremyregnerus

I understand that this is both probably complicated, and hard to describe, so I'll do my best here. It would be really useful for more complex items to have parts to their actions section that can be added individually to provide all of the actions an item provides in one place as opposed to having having just one action type that can be added to an item. This is sort of like the ability to add multiple damage can add multiple lines, just more broken up.

Let's use an example of a versatile weapon that does 1d6 poison damage on a failed dc save, has a once per day ability as an action to cure poison, and for complexities sake, let's also say on a critical strike this weapon slips the dc save and automatically does the poison damage. And for icing on top, I use maximum weapon damage, roll critical dice in my game. This is all just theoretical but scenarios like these come into play with a lot of wondrous items and complex weapons.

Today, there is one action, by default the attack roll. The first issue is this attack roll will try consume the daily use of the weapon. The user can deselect the checkbox to use this, but they would have to do this on every attack. They would also be presented with warnings when trying to make an attack after this daily use has been consumed.

The next challenge is how to handle the DC save + damage being an entirely separate part of the attack. The current card will output a save dc, which is here already, and there is an other field currently available on the single action of the item card. However, this field does not have a damage type component to it, which requires always asking the question, what is that extra roll for, what type of damage is it, and the player having to remind the DM. Not the end of the world, but it could definitely be more convenient if a separate damage button could be added that includes the 1d6 poison damage as a separate roll. It's almost as if, it would be nice if the entire DC save + poison damage part were its own action, with it's own formulas. This also applied to things like weapons of giant / dragon slaying / corpse slayer / etc., where they do additional damage if a certain conditions are met. Sometimes these components of additional damage are handled by an on / off scenario like a flaming weapon. Adding +2d6 fire damage to the weapons damage component rolls this damage every time. Though the players may have extinguished the flames to conceal themselves within a dark dungeon.

The next issue is the cure poison ability being its own action, consuming it's own resource. This is where the desire for the ability to add extra actions to an item would come in. I think you would have to re-think the entire clicking the icon does all the things, and instead either have a complex chat card, or consider having buttons on the expanded in character cards broken into sections, each of these having their own uses per day/rest/etc. This scenario exists on items like instrument of the bards (using it as an instrument and to cast spells using charges), some wands have different consumptions for different on use abilities (most of these can be resolved by linking the use of an at-will spell to them, but it would be useful to be able to just include those spells within the weapons themselves), Artifacts, Legendries often have separate consumptions of charges for different abilities. The Nine Lives Stealer for example, consumes a charge only when a critical strike is made and a failed DC takes place. Acheron Blades for example have two different daily use properties, once which gives temp hit points, and another that does disheartening strike.

Finally is the ability to modify critical damage. Today, critical hits just double the damage. But in this weapon's case, there's an additional 1d6 poison damage that is automatically applied when this happens instead. Sword of Life Stealing as an example does a flat 10 additional damage when it crits, as does sword of sharpness (+14). Then there's the scenario of how to handle dice when critical striking. Some mods have tried to tackle this and have run into their own issues in regards to how the dice formula is presented. This is amplified say with a half orc with savage strikes, and a barbarian that has brutal critical. If a player is using weapon damage maxed and all critical dice rolled for example plus the poison, this attack would look like 8[weapon damage] + bonuses + 1d8[savage strikes] + 2d8[brutal critical (2Die)] + 1d6[poison] + 10[pretend it has lifestealing as well]. There's no elegant way to handle unique critical strike cases. Lots of mod developers have tackled this, but the system would give them in the above example 4d6 + bonuses + 2d6, and the poison would have to be added as a separate item.

I can't say I've done a good job explaining all of this. I also understand that there's a lot of edge-case-ness here. But I also know from building my entire compendium of every item for 5e I've regularly run into scenarios of "I'm not sure how to handle this"; do I just need to add a separate item entry with different properties, do I have to manually link a bunch of stuff together once it's added to a player's character sheet, etc. I would rather have more complex items, with the ability to add multiple actions, damage types, sources, charges, etc. than trying to figure out how to handle each case separately between game sessions.

aaclayton commented 2 years ago

Originally in GitLab by @schultzcole

Hey, I'm very interested in this request. I'd be quite willing to do the work to implement this, though for a request so large we should definitely discuss our approach ahead of time.

I've taken the liberty of listing here a number of user stories related to rolling items that I think would be good to cover in an ideal system (from my point of view of course):

  1. As the owner of an item, I would like to be able to define the damage dice and type on an item.
    • This is currently supported by the system.
    • Example item: Shortsword
  2. As the owner of an item, I would like to be able to define multiple damage formulae with different dice and types on an item.
    • This is currently supported by the system.
    • Example item: Devotee's Censer (TCE)
  3. As the owner of an item, I would like to define different damage formulae for the base and versatile damage on an item.
    • This is currently supported by the system.
    • Example item: Longsword
  4. As the owner of an item, I would like to define a saving throw on an item that a target can roll to determine if an effect occurs.
    • This is currently supported by the system.
    • Example item: Mace of Terror (basic rules)
  5. As the owner of an item, I would like to define extra damage formulae that are not rolled along with the primary damage roll, so that the extra damage may be applied based on different criteria than the base damage (i.e. contingent on failing a saving throw, or the item being activated, or creature type).
    • This can be represented using an "other formula", however it does not support multiple extra damage formulae, excludes other uses of the other formula field, and semantically is not the same as a damage formula.
    • Example item: Dagger of Venom (basic rules), Flame Tongue Blade (basic rules), Mace of disruption (basic rules).
  6. As the owner of an item, I would like to define a label for a specific damage formula on an item to indicate what the damage is for
    • This is not currently supported by the system.
    • This can be partially represented by using a die tag (2d6[flame tongue damage]), however this doesn't apply to the whole formula in the case of multiple terms.
  7. As the owner of an item, I would like to define multiple saving throws on an item, which might apply to different effects.
    • This is not currently supported by the system.
    • Example item: Open Hand Technique (basic rules)
  8. As the owner of an item, I would like to define a label for a saving throw on an item to indicate what the saving throw is for, especially when there can be multiple saving throws defined.
    • This is not currently supported by the system.
  9. As the owner of an item, I would like to define multiple "other" formulae on an item
    • This is not currently supported by the system.
    • Example item: Wand of Fireballs (basic rules, 1d6+1 for recharge, 1d20 for destruction on reaching 0 charges)
  10. As the owner of an item, I would like to define a label for an other formula on an item to indicate what the formula is for, especially when there can be multiple other formulae defined.
    • This is not currently supported by the system.
    • Also captured in issue #941.
    • This can be partially represented by using a die tag (1d6[recharge charges]), however this doesn't apply to the whole formula in the case of multiple terms.
  11. As a player or gm, I would like to be able to see the labels for each dice formula (damage formula, saving throw, or other formula) in the chat card buttons for the item, so I know what each button is for.
    • This is not currently supported by the system.
  12. As a player or gm, I would like to be able to selectively apply individual damage formulae to an actor after it has been rolled, so that I can use the correct damage multiplier for each individual damage type based on resistance or saving throw result.
    • This is not currently supported by the system.
  13. As a module or macro developer, I would like to be able to roll the damage for an item and select which damage formulae are included in the roll via a parameter.
    • This is currently supported by the system, albeit with extra work required to manually assemble the correct roll formula from the desired damage formulae.

I might be missing some, but I feel this captures the majority of the requirements as I see them.

From my perspective, the ideal implementation would allow users to add arbitrary numbers of damage formulae (already possible), saving throws, and other formulae, and define labels for any of them. Each formula would be displayed as a separate button in the item's chat card using the label provided (or the formula, if no label is provided), and can be rolled individually (and thus applied as damage individually, since they're separate rolls). This would eliminate the need for a special case for versatile damage since it could be just another damage formula that is rolled when appropriate.

Optionally (possibly as a separate issue or release), allow users to group together damage formulae into groups, so a bunch of parts can be rolled together when appropriate (for example, a flame tongue longsword could have formula groups for the base damage + fire damage as well as for versatile damage + fire damage).

Of course there might be multiple ways of implementing this, so perhaps someone else has a better idea or we could collectively workshop a good solution.

aaclayton commented 4 years ago

This would be a very complex enhancement with lots of work required to implement.

RossGosling commented 1 year ago

Just to mock-up a display using a basic Longsword

An item has a paginated set of Weapon Usages, the ability to add, remove, and duplicate would be ideal

Given the example here seems basic, breaking out one and two handed variants, I'd just note that for different ammunition types on a bow this becomes fairly invaluable, being able to define specific resource consumptions, want a weapon attack that consumes Ki? etc

Limited Uses present an issue, most items may want a global uses, like Staff of Healing, 10 global charges, Cure Wounds usage would consume '1 charge per spell level, up to 4th', Mass Cure Wounds 5 charges. Is there an argument for both limited uses specific to a Usage-Profile, as well as the item overall?

I made a video as part of a proof-of-concept - https://youtu.be/GMV49vro8xE

BEFORE AFTER
image image

When using the item there could be a simple selection if more than one page exists

Selecting Usage Card With Usage Title
image image

This ticket seems to encapsulate https://github.com/foundryvtt/dnd5e/issues/540 at least if this is complete you can define a usage for each damage type you'd want, both implementations together would be ideal