gitlab tposney/midi-qol v14.0.13

latest release: v14.6.0
2 hours ago

14.0.13

  • Requires Foundry 14.368 (verified 14.368) and dnd5e 5.3.0 to 5.9.99 (verified 5.3.3); dnd5e 5.2 does not run on Foundry 14.
  • Requires DAE 14.0.15 or later (the Aid sample item uses its raise current HP option).
  • Activity template regions have a height, set by their area type around the caster: a sphere is centred on the caster, a cone on its axis, and a cylinder, cube, line or wall stands on the caster (a cylinder or wall to its own height); the circle and square areas stay unbounded, and emanations follow their token. Core and dnd5e's region effects read the missing top as unbounded, so a sphere cast on the ground reached a flier at any height.
  • New optional rule "Template Origin Height": templates are measured from the caster's base (default), top, or eye level; an activity can override it in its Region settings.
  • Template targeting, flanking, range, cover and push direction use a token's committed position, not the drawn one: acting straight after a move used where the token was part-way through animating, and a background tab read every token at 0,0.
  • moveTokenAwayFromPoint resolves once the push has landed; it returned before the move.
  • A use no longer writes its target snapshot into the caller's workflowOptions; reusing one options object carried the first use's targets into later uses with no targets.
  • "Ignore Damage Immunity/Resistance/Vulnerability" for all damage types now also covers a creature's "All Damage" trait, which it previously left in force.
  • New activity option "Downgrade Immunity" - treats damage immunity as resistance rather than ignoring it, which leaves full damage.
  • An attack of opportunity is classified for every target of a use, not only the first, so "Roll a separate attack per target" no longer judges the first target by different range rules to the rest.
  • proceedChecks.checkAoO sets whether a use is classified as an attack of opportunity; defaults to checkReaction.
  • "Roll a separate attack per target" completes when the last target finishes, not the first, so callers of completeItemUse/completeActivityUse no longer see a half-applied use.
  • "Roll a separate attack per target" applies to attacks whose template type is unset, which it skipped silently; only empty was recognised.
  • With "Roll a separate attack per target", each target's card lists only that target.
  • Reaction/bonus action used markers are expired by DAE only; midi deleting them as well threw "ActiveEffect dnd5ereaction000 does not exist".
  • Removed checks for times-up, which is not a module in v14.
  • An attack of opportunity no longer warns that its target is out of range; the check is not enforced for one.
  • Closing a reaction dialog stops its countdown, which went on updating the closed window and threw.
  • A creature immune to the configured dead condition is marked with the Dead status at 0 HP instead of nothing.
  • New "Aid" sample item: raises temporary max HP and, through DAE's raise current HP option, current HP by the same amount, with no healing roll. The SRD Aid's healing is capped at the maximum before its effect raises it, so a creature at full HP gained no current HP.
  • Target AC on the hits display follows dnd5e's Attack Result Visibility: short of "all", players see only the AC of tokens they own (character targets were always shown).
  • A save total's tooltip no longer shows players the dice (or a hidden DC) unless Auto check Saves is "All see Result + Rolls".
  • Target names hidden by Anonymous or Hide NPC Names are set on midi's hit and save rows when the card is shown, so they follow the module's current settings; a player who owns the target sees its real name. Cards no longer store a player name.
  • "Hide NPC names" (Misc) is back: the name players see for creatures with no player owner, as speaker (header and card text) and target, when neither Anonymous nor Hide NPC Names is active. Blank, the default, shows real names.
  • A trap template's delayed removal no longer throws when template cleanup has already deleted it.
  • Removed the workaround for CAT 0.0.7's OverTime save crash; fixed in CAT 0.0.8.
  • MidiQOL.registerWorkflowOptionsSchema(namespace, schema): a module declares the data it keeps in workflowOptions.<namespace> as a DataModel schema; midi then sends and stores it losslessly (Sets and other field types come back intact) and does not pass undeclared per-use keys to other clients, chat cards or triggered activities. MidiQOL.encodeWorkflowOptions / decodeWorkflowOptions expose the conversion.
  • A remote completeActivityUse returns its token sets (targets, hitTargets, failedSaves, ...) as Sets of tokens again, as a local use does; MidiQOL.restoreWorkflowTokenSets does the same for other workflow macro data that crossed a socket.

Templates

  • AoE template targeting no longer fails for a region template with no elevation set.

Workflow

  • Target confirmation on an activity sheet shows the effective value and is read-only when the activity forces one — self-target activities now report "never", as forward and cast activities already did.

  • "Choose Targets" only forces target confirmation when the activity actually has a template type. dnd5e only offers the checkbox while one is set, so clearing the template left a stored value that still forced confirmation but was no longer visible.

  • A triggered activity no longer inherits the triggering workflow's target confirmation or per-target attack flag, so "Roll a separate attack per target" no longer suppresses the target prompt on the activity it triggers.

  • Ammunition activities are resolved independently of the other activity: an item's own other activity and its ammunition can both run, and otherActivityId: "none" no longer silences ammunition.

  • Ammunition activity effects are applied whether or not the ammunition supplies the other activity.

  • An ammunition activity's damage rolls without double-counting the ammunition's base damage, which dnd5e has already added to the weapon's damage roll.

  • Aborting a use for the wrong number of targets, or cancelling target confirmation, refunds the consumed spell slot or uses.

  • Concentration begins only after a use passes midi's checks, so a rejected use no longer leaves the caster concentrating or drops an existing concentration.

  • A bonus action is recorded when Enforce Bonus Actions is "Display status icon", matching reactions and what setBonusActionUsed already allowed; only the prompt stays conditional on enforcement.

  • Flanking reads token positions from the token document rather than the placeable transform, which is only current once the canvas has drawn.

  • "Downgrade Immunity" no longer drops the resistance of a damage type the target is not immune to; it only acts on immunities.

  • Ignoring or downgrading an immunity, resistance or vulnerability for specific damage types also works against an "All Damage" trait; idi.<type>/ddi.<type> apply against an "All Damage" immunity.

  • Critical damage modes that add extra dice (max crit, explode, max base + roll crit) place them as dnd5e does: inside a term bound by *, / or %, and with a subtracted term's sign. Reconfiguring the roll does not add them twice.

  • Conditional Spell Sniper and Sharpshooter flags are evaluated; any condition used to count as true.

  • Initiative advantage/disadvantage.check.<ability> flags use the actor's initiative ability; they never matched.

  • The Long Rest, Short Rest and New Day special duration labels display correctly.

  • New special durations: isMissed (the actor is attacked and missed), 1Miss / 1Miss:<actionType> (the actor's attack hits no target), and isAttacked:<actionType> / isHit:<actionType>.

  • Effects set to expire on a failed concentration save with the old isConcentrationSaveFail spelling expire.

  • Convenient Effects applied by a concentration spell end with the concentration: the use's concentration effect was read from a flag dnd5e no longer writes. workflow.concentrationId gives it.

  • Condition data riderStatuses includes a status's own riders, e.g. unconscious also lists prone.

  • getDistance is available in evaluated conditions and macros.

  • The distance fudge factor applies in every measurement mode and on every scene, not only gridless scenes with Gridless Grid enabled.

  • A save, check, skill or tool roll requested from another client that fails settles instead of leaving the use waiting.

  • DDB Game Log places each of an activity's templates and records them for targeting; it called drawPreview on the list and threw.

  • The damage button says Critical as soon as a critical attack is shown, instead of briefly showing the plain damage label.

  • OverTime and ActivityOverTime effects run from core's turn events, by combatant: the right combatant's turn after initiative is rerolled, and a combatant whose turn is skipped gets both its start and end of turn.

  • Auto reroll initiative rolls inside the round advance (new initiatives and the first turn in one update); a player's round advance is passed to the GM to roll.

  • An attack whose ammunition carries a save shows the save button when saves are rolled from the card, and the save button on an attack card rolls the other activity's or ammunition's save; it did nothing.

  • The damage tray lists the use's targets, including creatures caught by a template or chosen at target confirmation; it listed only what was targeted when the card was created (usually nothing for an area spell), so it fell back to selected tokens.

Don't miss a new midi-qol release

NewReleases is sending notifications on new releases.