foundryvtt / dnd5e

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

[Feature Request] Track which classes provide access to each spell and display which character class provides each spell on the spellbook tab #1012

Closed aaclayton closed 1 week ago

aaclayton commented 3 years ago

Originally in GitLab by @crash1115

Pain Point: A character with two spellcasting classes that use the same preparation mode (Always Prepared/Spells Known vs Prepared) has no way to easily distinguish which spells come from which class.

Current Workaround: Set all the spells from one class as Prepared, and all the spells from the other as Always Prepared, and let the color-coding some sheet modules provide do the work. This stops being a viable solution if you have domain spells which are always prepared, or have more than 2 casting classes.

Potential Solution: Add a "Source Class" field or something similar on the Spell item sheet, and display that field... Somewhere. Preference would be as a column in the Spellbook tab, but that's pretty crowded already.

aaclayton commented 3 years ago

Originally in GitLab by @schultzcole

Might I suggest another approach?

  1. Allow owned spells (or other items as well, I suppose) to specify another owned class item (or feature, I suppose) as their origin or parent.
  2. Expose a way for users to manually set this through the spell's details.
  3. Indicate this through the character sheet UI in some way (easiest would probably be an extra column on the spellbook tab indicating origin/parent).
  4. Finally, provide a way for items to define which class spell lists they belong to, and try to guess what the spell's default origin/parent should be when the spell is added to an actor, based on which classes that actor has (and whether any of the actor's classes is in the list of class spell lists for the newly added spell).
aaclayton commented 3 years ago

This needs to be approached one item at a time. If we decide to go this route the following steps would be required, each of which is a significant feature in its own right:

  1. Expand the Item data model to allow spells to track which classes can provide them.
  2. Implement a method in Item data preparation to infer which class on the Actor provides access to each spell.
  3. Modify the character sheet to display the origin class for that spell.

If we decide to prioritize this feature, the issue needs to be split into 3 parts for each of these steps.

Zanderaf commented 1 year ago

An extra column could be nice, could use it to track what advancement a spell came from, such as an advancement called "Mage Hand Ledgermian" that adds the mage hand cantrip to a characters spellbook would have the name of the advancement in that extra column, or just have a field in the Grant Items advancement type that automatically sets it.

Main example I could think of would be something like D&D Beyond.

Capture

krbz999 commented 1 month ago

Spell lists are a different issue, but all that is lacking from this thread is the display of the origin class on the actor sheet, not just the spell sheet. All other items exist in the system now as of v3.3.

Fyorl commented 1 month ago

Putting the source class in the spell's subtitle seems like a reasonable solution. It might get a bit crowded with the limited uses in there as well though.