13.0.36
New Features:
- Added "vitality" as a new damage and healing type that directly affects the vitality pool without going through HP:
- Vitality damage type: Directly reduces vitality (increases
uses.spenton the vitality item), completely bypassing HP and TempHP.
- Vitality healing type: Directly restores vitality (decreases
uses.spent), without affecting HP.
- If the target actor has no vitality item configured, vitality damage/healing has no effect.
- Can be combined with regular damage types in the same attack - each type is applied separately.
- Vitality damage can trigger death when vitality reaches 0 (respects
vitalityDeathRequiressetting).
- Works with damage card undo/redo functionality.
- Direct vitality damage/healing is displayed at the start of the damage card row (broken heart icon with amount), separate from overflow vitality damage which shows in the old→new vitality transition.
- Vitality damage type: Directly reduces vitality (increases
Improvements:
- Damage card display improvements for cross-platform consistency:
- Replaced HTML arrow entity with Font Awesome icon for consistent vertical alignment across macOS and Linux.
- Fixed total damage display showing "-0" instead of "0" when no damage is applied.
- Replaced HTML arrow entity with Font Awesome icon for consistent vertical alignment across macOS and Linux.
- Enhanced Simple Cover 5e integration (issue #1546):
- Now passes the activity to getCover() so cover rules (ignore/override logic based on item properties) are applied.
- Added "Simple Cover 5e" as a "Walls Block Range" option which enables Line of Sight checking - blocked LoS is treated as total cover.
- Uses the bonus value directly from the API for more accurate cover calculation.
- Now passes the activity to getCover() so cover rules (ignore/override logic based on item properties) are applied.
Bug Fixes:
- Fixed
damageTypes.<type>conditions not being available for optional damage bonuses (issue #1550). The damage type data was not being passed correctly during the bonus evaluation phase due to a timing issue whereworkflow.damageRollswas empty when condition evaluation occurred.
- Issue #1549 (save rolls showing success/failure when DC should be hidden) resolved as part of the DC display refactoring above - the target DC is no longer passed to dnd5e when visibility settings would hide it from the player.
Breaking Changes:
Since this change affects what players see please check your settings and the displayed cards before game time since I might have screwed up.
- Removed the midi-qol "Display Saving Throw DC" (
displaySaveDC) setting in favor of the dnd5echallengeVisibilitysetting:
- The dnd5e setting is now configurable directly from the midi-qol config panel (Workflow → Saves → "DND5E Challenge Visibility").
- Options: "All" (show DC to everyone), "Player" (show DC only for player-initiated saves), "None" (hide DC from players).
- GM always sees DCs regardless of this setting.
- Migration: On first load, existing
displaySaveDCsettings are automatically migrated to the dnd5e setting using the most restrictive value. A chat message is sent to the GM with migration details.
- New helper function
MidiQOL.shouldDisplaySaveDC(actor?)returnstrueif DCs should be shown based on the dnd5e setting. When "Player" visibility is set, passing an actor checkshasPlayerOwnerto determine visibility.
- Integration modules (Monk's Token Bar, Epic Rolls, Flash Rolls) now receive the display dc setting.
- See
docs/Display_Save_DC_20260106.mdfor full documentation of the visibility logic.
- The dnd5e setting is now configurable directly from the midi-qol config panel (Workflow → Saves → "DND5E Challenge Visibility").