## 14.532.2
- Added the first experimental pass of the **AC5E Effect Value Editor** for Active Effects.
- It can help build common AC5E effect values with a structured UI instead of editing the whole condition string by hand.
- The editor is behind the **Enable AC5E UI (Experimental)** setting.
- Added AC5E **Attribute Key autocomplete** even when DAE is not active.
- AC5E keys can now be suggested directly in the Active Effect sheet without depending on DAE.
- When an AC5E key is selected in the sheet, the experimental AC5E editor wand now appears immediately on that change row, including when DAE is providing the autocomplete.
- Cleaned up the `range` flag surface and runtime behavior.
- Packed range overrides are now authored on `flags.automated-conditions-5e.range.overrides`.
- Legacy `flags.automated-conditions-5e.attack.range` is still accepted as a compatibility alias for now.
- Granular keys such as `range.short`, `range.long`, `range.reach`, `range.noLongDisadvantage`, `range.nearbyFoeDisadvantage`, and `range.outOfRangeFail` remain available.
- Numeric range leaf keys now follow the normal AC5E `set=` / `bonus=` value style.
- `itemLimited` now works normally on range entries too, so range effects can be tied to the rolled item more reliably.
- Clarified how range overrides apply during play.
- Range profile changes such as short/long/reach and out-of-range fail can affect both `attack` and `use` flows.
- Attack-only behaviors such as nearby-foe disadvantage and long-range disadvantage still only affect attack activities.
- This means non-attack use activities can now respect AC5E range overrides without inheriting attack-only disadvantage rules.
- Attack activities now handle out-of-range failure during attack roll setup instead of failing early during item use.
- Added clearer tooltip attribution for range-based suppressions such as `range.noLongDisadvantage`.
- Added `damage.typeOverride`, including `grants` and `aura` variants.
- This lets you override the available type set of **base damage rolls**.
- Example: `set=fire`
- Example: `set=acid,thunder`
- Example: `set=fire,lightning,thunder; addTo=all`
- Added support for multi-type inline bonus damage parts such as `bonus=1d4[fire, lightning, thunder]`.
- When a bonus damage part offers multiple types, AC5E now keeps that as a selectable damage-type choice instead of collapsing it to a single type.
- Improved the damage dialog handling around damage type overrides so type switching and related rerenders behave more reliably.
- Added `modifier=max` and `modifier=min` shorthand aliases for the existing `modifier=maximize` and `modifier=minimize` behavior.
- Added `originItem` and `originActivity` evaluation data for Active Effects.
- This makes it easier to reference the originating item/activity in conditions and formulas.
- `originItemType` and `originItemProperties` are also available for simpler origin-item checks.
## 14.532.1
- Improved visibility handling so AC5E and MidiQOL split responsibility more cleanly for hiding, invisibility, and blinded attack checks.
- Improved sight checks for tokens with limited or disabled token vision by better using actor senses such as darkvision and truesight.
- Attack activities now handle out-of-range failures during attack roll setup instead of failing early during item use.
- Cleaned up several English settings names and descriptions for clarity.
- Verified for D&D 5e system v5.3.2.
## 14.531.3
- Added tooltip attribution when a `range.noLongDisadvantage` rule suppresses long-range disadvantage.
- Improved range helper context resolution by letting `autoRanged` and related checks fall back from `activity` data to `options.actionType` and `options.item`, including UUID-based item resolution.
- Backfilled missing `sandbox.activity.id` / `uuid` / `identifier` values when an activity exists, while guarding non-activity roll paths such as initiative, checks, and saves from null activity access.
## 14.531.2.2
- Activity range data are checked only if the override parameter is true, otherwise the item's range data are used for range checks.
- The API `ac5e.checkRanged` call overrides any MidiQOL range checks by default.
## 14.531.2.1
- Fix for missing v14 attack-roll config criticalFailure
## 14.531.2
- Updated pt_BR translation by [Kharmans](https://github.com/Kharmans) π€
- Updated Italian translation by [GregoryWarn]() π€
- Added `hasEffects` filter for nearby checks to require or exclude targets based on active effects name matching.
- `checkNearby(opponentId, 'ally', 5, { count: true, hasEffects: ['AlliedAC'] });` will return the number of allies within 5 ft of the opponent token, which have an effect named AlliedAC.
## 14.531.1
- Dropped support for Foundry v13 and D&D5e 5.2.5, with a hard minimum of Foundry v14 and D&D5e 5.3.0.
- For users still on Foundry v13 and D&D5e 5.2.5, the last compatible AC5E release is `13.5250.18.1`.
- For users still on Foundry v13 and D&D5e 5.3.x, the last compatible AC5E release is `13.5310.3`.
- Fixed attack rolls so visibility checks no longer drop unrelated AC5E modifiers.
- Fixed damage rolls so per-roll modifier formulas and roll data resolve correctly on v14.
- Kept attack visibility handling aligned with D&D5e 5.3.1 and preserved target-facing flags.
- Removed legacy v13-only compatibility branches for the explicit v14 release.
## 13.5310.3
- Fix for visibility checks when the target token has vision disabled, which caused errors instead of no-op behavior when trying to check vision against an undefined token sight configuration.
## 13.5300.2
- Added `isAoE` helper for Area of Effect activities.
## 13.5300.1
- First starter compatibility release for D&D5e `5.3.0`.
- Improved D&D5e 5.3 roll-mode handling so advantage/disadvantage selections stay in sync with native `advantageMode`, including fast-forward keypresses and override keypresses.
- Initiative advantage/disadvantage attribution now follows the resolved D&D5e 5.3 initiative mode more reliably.
- Fixed chat-message AC5E damage tooltips for native D&D5e 5.3 damage cards by rebinding after the system finishes its own chat render work.
- Added `sandbox.item.classIdentifier` for condition/evaluation use where a stable class-style identifier is needed during newer 5.3 item roll-data paths.
- Note: AC5E currently follows native D&D5e 5.3 handling for mixed damage die modifiers such as `adv/dis` with `min/max`; any remaining issues in that exact combination are waiting on the upstream [D&D5e fix]().
## 13.5250.18.1
- Made sure that the sandbox receives item properties.
## 13.5250.18
- Final D&D5e `5.2.5` compatibility release, barring any serious follow-up bugs.
- Tightened visibility handling for blinded, invisible, and ethereal interactions so AC5E `canSee()` behaves more consistently.
- Improved roll-data handling for damage and healing scaling, including better support for effects that rely on prior spell level or scaling state.
- Cleaned up range flag behavior and documentation:
- `range` now has one shared public surface instead of separate `attack.range` variants.
- Canonical range toggles are now `longDisadvantage`, `noLongDisadvantage`, `nearbyFoeDisadvantage`, `noNearbyFoeDisadvantage`, `outOfRangeFail`, and `noOutOfRangeFail`.
- Legacy aliases such as `fail`, `noFail`, and `nearbyFoes` are still accepted for compatibility.
- Current stable exceptions: generic `no` suppressors such as `noProne` remain boolean-style only for this release (no conditional or `optin` handling), and granular range subkeys such as `flags.automated-conditions-5e.range.short` expect a direct value/expression rather than packed `short=...; ...` conditional syntax.
- Fixed stale disadvantage state when switching attack modes in the roll dialog, such as changing between one-handed and thrown attacks.
- Exposed `ac5e.getItem(tokenOrActor, itemIdentifier, options = {})` as a first-match helper matching `ac5e.getItems(...)`.
- Wiki updates.
## 13.5250.17.2
- Fixed damage roll modifier opt-ins so they show up correctly in the damage dialog.
- Fixed `ac5e.usageRules` object registrations so `enforceMode` is kept and works correctly.
- WIKI updates
## 13.5250.17.1
- Fixed `info` entries with `enforceMode=normal/advantage/disadvantage` so they are preserved through AC5E roll processing and correctly force the final d20 roll mode.
- When `enforceMode` wins, overridden pure d20-state entries no longer consume `once`, cadence, or `usesCount`.
- Cleaned up enforced-mode attribution so the roll dialog tooltip and MidiQOL attribution tooltip show the forced roll mode and suppress overridden d20-state reasons.
- Updated MidiQOL save/check item-card DC labels after AC5E `modifyDC` applies, replacing the displayed DC when it is unambiguous and marking it with `(*)` when the card may contain mixed per-target DCs.
- Updated Italian translation by [GregoryWarn]().
## 13.5250.17
- Removed MidiQOL delegation from AC5E `canSee()` so AC5E visibility checks no longer perturb Midi's transient attack perception state on follow-up attacks.
- Fixed `flags.automated-conditions-5e.damage.bonus` so it also applies on MidiQOL fast-forwarded damage rolls instead of only through the damage dialog path.
- AC5E now re-enables the roll configuration dialog when MidiQOL fast-forward would skip it but AC5E has relevant opt-in choices for that roll, so attack/check/save/damage opt-ins can still be selected.
- Fixed the initial d20 roll formula discrepancy when AC5E preselects visibility opt-ins on first render.
- Fixed `once` attack advantage/disadvantage consumption so automatic one-shot entries are spent on the attack roll attempt, while explicit mode overrides still preserve skipped opt-in entries in the overridden roll-mode family.
- Updated Czech translation by [Lethrendis]() π€
## 13.5250.16.1
- Fixed duplicate `damage.bonus` entries with identical formulas so both contributions apply instead of being collapsed by the rebuild dedupe logic.
## 13.5250.16
- Added the `Visibility checks` world setting so the βCannot See Targetβ/βTarget Cannot See Attackerβ opt-ins and adv/dis logics are gated behind a single toggle and can be hidden when MidiQOL already applies those optional rules.
- When `Visibility checks` is enabled, the blinded/invisible attack automation routes through the two opt-ins, so the user can uncheck them before the final mode settles.
- AC5E now skips the synthetic visibility opt-ins whenever MidiQOLβs optional rules for invisibility or hidden attackers are enabled, preventing duplicate reasons in the dialog/tooltip.
## 13.5250.15
- Initiative advantage and disadvantage handling is now more consistent between native dnd5e and AC5E resolution.
- Token light level is now available to AC5E evaluation and helper lookups.
- Access via `xyzActor.lightLevel.bright`/`dim`/`darkness`.
- `canSee` now defers to MidiQOL only when no status override is in play, so blinded/invisible/ethereal checks consistently use AC5Eβs fallback logic.
- Added a world setting for using ac5e.canSee checks which adds preselected opt-ins for 'Cannot see target' and 'Target cannot be seen' when MidiQOL is not enabled.
- Changes to `canSee` logic of handling tokens with vision disabled.
- `damage.extraDice` now handles leading `+` values correctly.
- Damage modifiers now support `maximize` and `minimize`, and targeted damage modifiers no longer spill onto unrelated damage parts.
- Unsupported literal die modifiers on d20 rolls are now ignored with a clear console warning instead of failing silently.
- Exposed `ac5e.getItem(tokenOrActor, itemIdentifier, options = {})` as a first-match helper for convenient single-item retrieval based on the same options as `ac5e.getItems(...)`.
- Returns the first matching item or null if no match exists.
- Example: `ac5e.getItem(token.id, "fireball", { match: "any", nameMode: "partial" })` returns the first item whose name or identifier contains `fireball`.
## 13.5250.14
- Combat cadence turn syncing now updates within the original combat advance instead of triggering a second AC5E combat update.
- Added `info | enforceMode=normal/advantage/disadvantage` for forcing the final d20 roll mode, with tooltip attribution for the active enforcing entry.
## 13.5250.13.1
- Quick fix for multiple combat updates triggering overtime hazards.
## 13.5250.13
- Fixed damage-dialog bonus parts so typed bonus damage can create a new damage part and still be seen by later matching bonuses in the same rebuild.
- Fixed damage-dialog rerenders so changing a selected damage type no longer duplicates appended typed bonus damage parts or spin into recursive rerender loops.
- `criticalStatic` now works on `damage.bonus` entries, including `addTo` targeting and created typed damage parts.
- Damage-dialog opt-ins now include `damage.info` entries.
- `ac5e.getItems(...)` and `ac5e.hasItem(...)` now support `properties` filters, including combinations like `{ type: 'weapon', properties: ['hvy', 'mgc'] }`.
- Reinstate missing `item` data from the sandbox.
- Some codebase cleanup.
## 13.5250.12.5
- Fix for broad `rage` checks
## 13.5250.12.4
- Fix for `addTo` not being added in single type damage parts.
- Updated pt_BR translation by [Kharmans](https://github.com/Kharmans) π€
## 13.5250.12.3
- Preserves system-provided `roll.options.critical.bonusDamage` through damage-dialog rerenders so forced crits retain their extra dice instead of losing them during AC5E rebuilds.
- Unified `damage.bonus` add-to routing and tooltip filtering so base and opt-in entries now share the same damage-part targeting, and tooltips hide entries when `addTo`/damage-type filters stop matching.
## 13.5250.12.2
- Fix for `.aura.damage.bonus` not correctly updating cadence when toggled as an opt-in.
## 13.5250.12.1
- Adds `optin` support for `...damage.modifier` modes
## 13.5250.12
- Internal refactor of hooks/helpers/system rules to streamline dnd5e rebuilds and reduce dialog re-renders.
- Auto-range/opt-in tooltips now share a single attribution path between AC5E and Midi for more consistent roll dialogs.
- Debug/log plumbing trimmed and targeted debug gates added; existing user-facing behavior should remain unchanged.
- Updated Italian translation by [GregoryWarn]() π€
## 13.5250.11
- Reworked AC5E default distance calculation to use cached perimeter lookups while preserving the legacy path as a fallback.
- The default AC5E distance helper now reuses cached token perimeter points instead of rebuilding them on every check.
- Legacy distance calculation remains available internally and is still used when deferring to MidiQOL distance handling.
- Expanded `info` support across AC5E action hooks.
- Full flag forms such as `flags.automated-conditions-5e.use.info`, `flags.automated-conditions-5e.attack.info`, `flags.automated-conditions-5e.damage.info`, `flags.automated-conditions-5e.save.info`, and `flags.automated-conditions-5e.check.info` can now be used to show AC5E reasons and process side effects without changing the rolled formula.
- `info` entries now surface correctly in AC5E/Midi tooltip attribution and survive use flows that resolve after the activity succeeds.
- Added `update=...` for allowlisted actor value changes, designed to pair naturally with `info`.
- `update` supports direct changes to HP, temp HP, effective max HP, exhaustion, death saves, inspiration, and ability scores.
- Positive and negative values now read naturally for state-style updates such as exhaustion and death saves.
- Example: `flags.automated-conditions-5e.use.info | update=opponentActor.exhaustion,1`
- Example: `flags.automated-conditions-5e.damage.info | update=rollingActor.hp,-1d6`
- Improved item lookup helpers.
- `ac5e.hasItem(...)` and `ac5e.getItems(...)` now default to exact name matching instead of broad partial matching.
- `match: "any"` still supports convenient identifier-style lookup, including slugified queries such as `"misty-step"`.
- Added `ac5e.getItem(...)` as a first-match helper.
- Signatures:
- `ac5e.hasItem(source, itemIdentifier, options = {})`
- `ac5e.getItem(source, itemIdentifier, options = {})`
- `ac5e.getItems(source, itemIdentifier, options = {})`
- Available `options`:
- `match: "name" | "identifier" | "id" | "uuid" | "any"`
- `nameMode: "exact" | "partial"`
- `type: ""`
- Example: `ac5e.getItems(_token.id, "fire", { match: "any", nameMode: "partial" })` returns all matching items whose name or identifier contains `fire`.
- Reworked `criticalStatic` handling for `damage.extraDice`.
- `criticalStatic` extra dice now apply outside normal crit doubling, so they can be used for βadd this die, but do not double it on a critβ style effects.
- Example: `flags.automated-conditions-5e.damage.extraDice | bonus=1;criticalStatic`
- Stabilized AC5E damage attribution in chat, including MidiQOL-linked attack+damage messages.
- Damage tooltips now preserve AC5E `Extra Dice` and other selected opt-in reasons more reliably in combined attack/damage workflows.
- Added transient advantage/disadvantage conversion support.
- `convertAdvantage` and `convertDisadvantage` let a rule turn native d20 advantage/disadvantage into AC5E-driven bonus formulas instead of rolling `2d20kh/kl`.
- `hasAdvantage` / `hasDisadvantage` remain usable for downstream conditions even when the actual d20 roll is converted back to a straight roll.
- Added attack-only `abilityOverride`.
- `abilityOverride` can now be used as an evaluated AC5E attack flag, including `grants` and `aura` variants, to change which ability an attack uses.
- Tooltip output now shows the winning override in a compact form such as `Ability: DEX -> CHA (New Effect)`.
- Example: `flags.automated-conditions-5e.attack.abilityOverride | override=cha; optin`
- Added world settings for advantage/disadvantage conversion formulas.
- You can enable a world-level override for system advantage handling and provide separate replacement formulas for advantage and disadvantage.
- Each side is handled independently, so leaving one formula blank keeps the normal system behavior for that side.
- Per-rule `convertAdvantage` / `convertDisadvantage` can still force conversion for a specific roll even when the world setting is off.
- Out-of-range failures are now applied earlier in the activity flow again, keeping warnings and blocked uses aligned with the main AC5E range checks.
## 13.5250.10
- Reworked d20 and damage roll target persistence so attack rolls now persist their resolved target AC snapshots more reliably and linked damage rolls reuse those same snapshots.
- This keeps `modifyAC` and forced hit/miss sentinel AC changes aligned between attack adjudication, damage dialogs, and created chat messages.
- Damage rolls triggered from `attack`, `save`, or `check` activities now hydrate from the latest associated roll message for that originating workflow.
- Improved d20 roll-mode override handling for manual roll-dialog choices and fast-forward keypresses.
- Manual dialog choices that differ from AC5E's proposed mode now behave as explicit overrides.
- `Alt` / `Ctrl` continue to act as additive advantage/disadvantage sources when not used as override combinations.
- `Shift+Alt` / `Shift+Ctrl` now behave consistently as explicit override keypresses in AC5E-owned flows.
- When a user explicitly overrides AC5E's proposed d20 mode, AC5E now skips relevant roll-mode `usesCount` / cadence consumption that would otherwise have been spent on the bypassed mode calculation.
- Improved tooltip parity across AC5E and MidiQOL branches.
- Restored MidiQOL roll-dialog attribution for d20 dialog overrides when Midi owns the tooltip pipeline.
- AC5E fallback check/save/skill tooltips now handle keypress and override attribution more consistently when MidiQOL is enabled but not driving the actual workflow.
- Refined sandbox roll-context fields.
- Added generic `d20Total`, `d20Result`, and `d20ResultOverTarget` style hydration while keeping legacy aliases for compatibility.
- Attack/damage target values now derive from persisted target snapshots instead of stale live AC fallbacks when available.
- Stabilized damage dialog rerender behavior.
- Hardened damage `addTo` routing across formula-altering damage entries.
- Damage-type conditions such as `fire` now correctly control whether an entry is available, while `addTo=...` only controls which damage roll is modified.
- Fixed `addTo=base`, typed `addTo=`, and combinations such as `fire;addTo=thunder` so opt-in and non-opt-in entries apply to the intended damage part more reliably.
- Reduced redundant roll-dialog syncing work.
- Removed unnecessary target/DC DOM syncing and a heavy ability-dialog rerender path, while keeping roll results and AC5E tooltip state aligned through the actual roll/build config flow.
- Simplified attack dialog refresh behavior.
- Attack mode and ammunition changes now refresh AC5E attack state in place instead of forcing a full dialog rebuild/render cycle.
- Fixed attack roll-dialog `modifyAC` opt-in tooltips using the wrong base AC during later dialog rebuilds.
- Attack roll dialogs, chat tooltips, and final target AC adjudication now stay aligned on the same modified AC snapshot.
## 13.5250.9
- Expanded attack `criticalThreshold` / `fumbleThreshold` formula handling to accept numeric expressions with dice and math helpers such as `min(...)` and `max(...)`.
- This allows threshold flags like `set=min(4, 1d8)` to resolve to a rolled numeric threshold instead of falling back to the unchanged default threshold.
- Expanded `damage.extraDice` `criticalStatic` handling to support multiplier literals such as `bonus=x2`.
- This allows crit-only extra dice to scale from the matched base dice term, so the same flag works correctly for damage formulas like `1d8` and `2d6`.
- Example: `flags.automated-conditions-5e.damage.extraDice | criticalStatic; bonus=x2`
- Fixed attack/save/check opt-in toggles in d20 roll dialogs so switching an AC5E opt-in advantage/disadvantage effect off returns the dialog to the correct normal state again.
- The dialog now rebuilds from its frozen baseline before AC5E reapplies current opt-in state.
- Fixes cases where the previous advantage/disadvantage mode could remain visible after the opt-in was unchecked.
- Added `partialConsume` support for `usesCount`.
- This allows capped counters such as death saves or item/activity uses to consume only the remaining available amount instead of failing when the full requested amount would exceed the cap.
- Example: `usesCount=death.fail,(isCritical ? 2 : 1);partialConsume`
- Fixed object-form `ac5e.usageRules.register({...})` handling so standalone booleans such as `partialConsume` and `criticalStatic` are serialized back into runtime evaluation correctly.
- This keeps structured registrations aligned with equivalent raw `value: "..."` rule strings.
- Added `ac5e.usageRules.showKeys()` to expose the supported object-form registration keys and their intended usage.
- Consolidated MidiQOL `modifyDC` attribution display for ability/save rolls into a single tooltip line.
- `set` and additive `bonus` logic is unchanged (`set` baseline, then additive bonuses).
- Multiple AC5E `modifyDC` sources now render as one combined reason list instead of repeated `Modified DC X (Y)` lines.
## 13.5250.8.2
- Reworked MidiQOL attribution sync for save/check flows so AC5E advantage and `modifyDC` reasons are carried more reliably into Midi tooltip attribution.
- Added a fallback to keep AC5E chat tooltips for ability rolls when Midi workflow metadata is missing, so reasons are still visible in non-standard roll paths (including initiative-adjacent branches).
## 13.5250.8.1
- Fixed status condition handling to use roll-data statuses directly, without rewriting `actorData.statuses`.
## 13.5250.8
- Improved save/check dialog re-evaluation when ability selection changes (including MidiQOL ability dropdown flows).
- AC5E now re-runs flag evaluation when `ability` changes in the d20 roll config dialog for `save` and `check` hooks.
- Fixes cases where `save.modifyDC` and other ability-scoped flags stayed on the initially preselected ability (for example DEX) after switching to another ability (for example WIS).
- Skill and tool checks now follow the same ability-change re-evaluation path, keeping modifier/advantage/DC behavior consistent after changing the selected ability.
- Fast-forward d20 rolls now keep resolved AC5E advantage state in sync with roll options/config, improving MidiQOL mode parity when no dialog is shown.
- MidiQOL save/check attribution now includes AC5E `modifyDC` reasons in the Midi tooltip attribution list.
- Hardened target/DC updates so attack-style target AC mutation is only applied for attack hooks and not save/check flows.
- Added `criticalStatic` support for `damage.extraDice` entries.
- `criticalStatic` entries are only applied when the roll is critical.
- Their added dice count is treated as static extra dice and is not multiplied by extra-dice multipliers.
- Works with source/grants/aura entries and existing `addTo` targeting.
- Example: `flags.automated-conditions-5e.damage.extraDice | bonus=3;criticalStatic`
- Added `ac5e.debug.usesCount` for targeted `usesCount` diagnostics (parse, resolution path, blocked reason, queued update summary) without enabling full global debug noise.
## 13.5250.7
- Expanded MidiQOL compatibility and attribution handling for attack/check/save rolls:
- AC5E now ingests Midi tracker attributions for advantage/disadvantage/fail/success and dedupes overlapping reasons.
- Known limitation: when MidiQOL is active, AC5E-specific `bonus`/`extraDice` reasons are not yet fully rendered through Midi's native tooltip attribution pipeline in every flow; AC5E fallback tooltip content is still used for those cases.
- Reworked damage formula mutation flow so selected opt-in bonus parts are transformed together with base formulas.
- Unified transform pass now applies to both base and selected opt-in damage terms (`extraDice`, dice upgrade/downgrade, adv/dis dice handling, and formula operators).
- Added support for formula operators (`*`/`/`) with `addTo` targeting (`all`, base, or selected damage types).
- Damage formula data references now resolve through Foundry `Roll.replaceFormulaData(...)` before transform.
- Fixed damage opt-in duplication where a selected opt-in could be applied once as transformed data and again as a raw appended part at submit time.
- Opt-in dialog hardening:
- Non-opt-in entries are no longer rendered as forced/disabled opt-in checkboxes.
- `forceOptin` entries are treated as active selections consistently in damage adjustment paths.
- Fixed damage modifier ordering so `min`/`max` suffixes attach to dice terms before `/` or `*` modifiers, avoiding merged tokens like `/2min10` that break roll parsing.
- Expanded `range` flag support to override ranged automation gates per effect (including `grants` and `aura` sources).
- Added support for:
- `nearbyFoeDisadvantage` / `noNearbyFoeDisadvantage`
- `longDisadvantage` / `noLongDisadvantage`
- `fail` / `outOfRangeFail` / `noFail` / `noOutOfRangeFail`
- These can be provided as standalone toggles or evaluated expressions in `range` values.
- Auto-range resolution now consumes those overrides for nearby-foe disadvantage, long-range disadvantage, and out-of-range fail checks.
- Added range override keys to AC5E autocomplete/lint keyword handling.
- Updated README/wiki docs for new range override keys and usage behavior.
- Added support for `[random]` token in damage bonus formulas, which will be replaced by a random damage type on each evaluation.
- Example: `flags.automated-conditions-5e.damage.bonus | bonus=1d6[random]` could yield `bonus=1d6[fire]` on one roll and `bonus=1d6[cold]` on another.
- Fix for `usesCount` with non-actor targets, which caused errors instead of no-op behavior when trying to consume from undefined sources.
- Expanded Final Stand trigger coverage for `usesCount` HP/resource-style consumption:
- Added handling for exhaustion reaching configured max level.
- Added handling for `abilities..value` reaching `0`.
- Added handling for `hp.max`-style consumption paths reaching `<= 0`.
- Fixed item quantity update path to write resolved `newQuantity` directly to `system.quantity`.
- Refactored `_hasItem` helper to support identifier, name, id, or uuid matching for more flexible item references in conditions and usage rules.
- Added targeted debug gates for AC5E hook tracing and `_setAC5eProperties` without requiring full global debug logging.
- Message/use resolution hardening:
- `getMessageData` and use-config resolution now prefer prehook `message.data.flags` when present, with fallback to `message.flags`.
- Message flag reads for DND5E/AC5E scopes are now centralized for consistent originating/usage resolution.
## 13.5250.6
- Compatibility note: AC5E opt-ins require roll configuration dialogs; if another module enforces `dialog.configure = false`, opt-in controls cannot be presented.
- Opt-in dialog entries are now split into two `