13.0.55
Bug Fixes
- Added spell school-based advantage/disadvantage flags for attack rolls:
flags.midi-qol.advantage.attack.school.{school},disadvantage.attack.school.{school},noAdvantage.attack.school.{school},noDisadvantage.attack.school.{school}, and the correspondinggrants.*variants. These complement the existing save school flags added in 13.0.52.
- Fix for MidiQOL.addDependents throwing a permission error.
- Fix for damage application when using system.traits.dm.midi.xxx. Previously these were always applied after saves/resistances no matter what the setting. They are now pro-rata applied prior to saves/resistances according to the midi-qol settings.
New Features
- Updated Guidance sample item to allow rolling when the caster does not have a token on the map, i.e. always applies to self as a optional bonus action.
- Some minor styling changes on the chat card.
- Added a few additonal fields in roll statistics tracking
Movement API overhaul — moveToken, moveTokenAwayFromPoint, and new teleportToken now use Foundry's TokenDocument.move() API, which means they properly trigger movement hooks and region events (e.g., isMoved specialDuration now fires correctly).
For developers
Some cleanup of inline styles.
MidiQOL.moveToken(tokenRef, newCenter, options?)— new signature:tokenRef— Token, TokenDocument, or UUID string
newCenter: { x, y, elevation? }— canvas center coordinates;elevationsets the token's elevation in grid units (omit to leave unchanged)
options: MoveTokenOptions:
animate— animate the movement (default:true); whenfalse, movement is instant but still respects wall/token constraints
teleport— instant movement, ignores walls and tokens (default:false); impliesanimate: false
ignoreWalls— ignore wall collisions during movement (default:false)
ignoreTokens— ignore token-token blocking during movement (default:false); passed to dnd5e'sconstrainMovementPathoverride
autoRotate— rotate token to face movement direction (default:true)
- Backward compatible: the old
moveToken(tokenRef, newCenter, animate: boolean, options?)signature is still accepted. A boolean third argument is detected and converted:animate: falsemaps to{ teleport: true }. A deprecation warning is logged; update to the new options-based signature before v14.
MidiQOL.moveTokenAwayFromPoint(targetRef, distance, point, options?)— new signature:targetRef— Token, TokenDocument, or UUID string
distance— push distance in feet
point: { x, y }— the point to push away from
options: MoveTokenOptions— same options asmoveTokenabove
- Backward compatible: the old
moveTokenAwayFromPoint(targetRef, distance, point, animate: boolean, checkCollision: boolean, options?)signature is still accepted. When a boolean fourth argument is detected:animate: falsemaps toteleport: true;checkCollision: truemaps toignoreWalls: false, ignoreTokens: false(and vice versa). A deprecation warning is logged; update to the new options-based signature before v14.
MidiQOL.teleportToken(tokenRef, destination)— new function:destination: { x: number, y: number, elevation?: number, sceneUuid?: string }
- Omit
sceneUuidfor same-scene teleport
- Cross-scene teleport creates the token on the destination scene, migrates any combat tracker entries, deletes the origin token, and pulls the owning user to the destination scene
Updated Shove sample item macro to use
DialogV2and pass{ignoreWalls: false, ignoreTokens: false}tomoveTokenAwayFromPoint.