gitlab tposney/midi-qol v13.0.64

latest release: v14.0.11
4 hours ago

13.0.64

  • Organise the Midi activity settings into subtabs (MR !420, thanks @garrysmod367).
  • Fix socketed (GM-executed) workflows (MR !427, thanks @baconnugget).
  • Fix temp-max HP handling on the undo card (MR !417, thanks @baconnugget).
  • Default constrainTemplatePlacement to false (MR !408, thanks @thatlonelybugbear).
  • Add the icon CSS class to the dnd5e header-control button (MR !429, thanks @olegbol2005).
  • Updated pt-BR translation (MR !426, thanks @cardosomafrasantana).
  • Offer spell reactions castable with a higher-level slot when no slot of the spell's own level is available (e.g. Shield with only level 3 slots) (MR !430, thanks @thatlonelybugbear).
  • Fix chat cards from a sequence of rolls displaying out of order / with stale timestamps — content updates no longer overwrite the message's creation timestamp.
  • Activity choice dialog applies the midi-qol.itemUseActivitySelect prune hook before prompting — a single surviving activity is used with no dialog, an empty list skips the use; hook fires once.
  • Fix concurrent summon spells stealing each other's created tokens. The dnd5e.postSummon handler used a one-shot Hooks.once, so when two summon workflows overlapped one could capture the other's tokens; it now listens with a per-activity filter and only reacts to its own summon.
  • Fix triggered-activity loop detection producing false positives. Visited activities are now tracked by full uuid instead of id, so distinct activities that happen to share an id are no longer wrongly flagged as a loop while genuine loops are still caught.
  • Fix pre-attack reactions (reactionpreattack) receiving the wrong triggering item. doActivityReactions referenced this (undefined in a standalone function) for the item and source UUID; it now uses the activity's item.
  • Fix "self-only trigger" / triggered-activity handling on non-Cast/Forward activity types. The base getter was named selfOnlyTriggerActivity but every call site and subclass override used isSelfTriggerableOnly, so the check silently read a nonexistent property on most activity types; the getter is renamed to match.
  • Fix use() and completeItemUse continuing past the ownership check for non-owners. The "you don't own this document" branch showed the warning but fell through; it now returns.
  • Fix healing rolled from a chat card carrying a stale activity reference — HealActivity now sets workflow.activity before rolling healing.
  • Fix Workflow.getWorkflow, removeWorkflow, and DDBGameLogWorkflow.get reading the workflow map with bracket indexing (always undefined on a Map); they now use .get(id).
  • Fix a throw when converting a non-damage roll to a damage roll — convertRollToDamageRoll called the nonexistent DamageRoll.fromRoll; it now constructs a DamageRoll directly and stamps the damage type.
  • Fix broken migration of the "roll blind" options. Legacy boolean true values for rollChecksBlind/rollSavesBlind/rollSkillsBlind are now migrated to ["all"] before the filter/default logic runs (previously the migration ran too late and, for skills, wrote to a typo'd key), so these settings are no longer silently lost on upgrade. The showReactionAttackRoll default ("all") now applies correctly as well.
  • Fix target confirmation being spuriously cancelled. Closing the Target Confirmation dialog after it had already resolved (e.g. by rolling) could invoke the callback a second time with a false/cancel result; a guard now ensures only the first result wins.
  • Fix undo not capturing chat cards from token-based speakers. Undo groups its cards by actor UUID, but token-actor cards were matched against the token UUID and dropped; the token is now resolved to its actor UUID first.
  • Fix activation-condition evaluation exposing only one of the evalTypeOrRace / evalTypeOrRaceEval aliases depending on whether the condition ran synchronously or asynchronously. Both aliases now work in both paths.
  • Fix several places where errors were silently swallowed by returning from a finally block — skill/ability roll patches (patching.ts) now propagate roll errors instead of hiding them, and the damage-application element and player damage card paths are similarly corrected. ConfigPanel now awaits settings save/import before continuing, and auto-reroll initiative and volumetric-template computation are guarded so a missing optional module or a rejected promise no longer throws.
  • GM-side completeItemUse/completeActivityUse requests now guard against a missing actor or workflow instead of crashing, and the player damage card correctly awaits its damage-list preparation before deciding whether there is anything to show.
  • Internal: migrated ~30 chat-card-backed Workflow fields (targets, hit/saved/failed target sets, damage rolls and details, abort/suspended flags, etc.) from hand-written cache/getter/setter pairs to the shared PersistedFieldStore, and consolidated the sync/async safe-eval implementations. No intended behaviour change; roll rehydration is now more defensive (falls back and records a Troubleshooter error rather than throwing).
  • Counter Mage sample item: the Antimagic Shot effect applied on a critical Gut Shot now expires together with Gut Shot via MidiQOL.addDependent and a fixed 10-round duration, replacing the previous duration-copy + flags.dnd5e.dependentOn approach.
  • Elemental Attunement (Monk Warrior of the Elements) sample item reworked: Imbue Elements is now a bonus action that applies a self-effect (10 minute duration) rather than running everything inline; the Unarmed Strike enchantment is created/removed by a DAE on/off macro and now only grants +10 ft reach. The elemental damage type is chosen at postDamageRoll, the push/pull prompt is distance-aware (a target can no longer be pulled through the caster's space, and grapple/grappling effects are preserved), and Elemental Push now uses a Wisdom save DC (@abilities.wis.dc), is automationOnly, and is invoked programmatically via completeActivityUse.

Don't miss a new midi-qol release

NewReleases is sending notifications on new releases.