- Adjusted styles of item buttons.
- Fixed an issue with item buttons when not using shorthand syntax.
- Updated the `roll.toMessage()` call to include the player/actor name
and the item/attribute name.
- Utilized the revisions made to roll syntax to allow for rollable
buttons on item lists on actor sheets. Rolls are evaluated using
`@items.ITEM.KEY`, where ITEM is the item name (slugified), and KEY is
an attribute key for a formula attribute.
- Divided getRollData() into several helper methods to make it more
organized.
- Cleaned up usage of shorthand checks, but haven't entirely
consolidated them yet. There's room to improve this, but further
consolidation would likely require a regex to handle mapping inline
roll syntax in the formulas to use the `@attr.KEY.value` format when
`@KEY` is detected. This seemed like a solid compromise for now.
- Refactored the _replaceData() helper method to match the Roll class'
upcoming syntax, and added TODO comments to replace them once it's
ready.
- Added a new "Formula" attribute type for both actors and items.
- When iterating through attributes, formula attributes are noted in an
array so that they can be iterated through in a second pass to
evaluate their referenced attributes. The second iteration just
handles attribute replacement rather than rolling the formula, that's
deferred until the attributes are used in an actual roll formula.
- Items also have the same behavior. If an attribute isn't on the item,
it will fall back to check the parent actor instead.
- Likely areas with issues would be formula attributes that reference
other formula attributes, or item formula attributes that reference
actor formula attributes.