Skip to content

v0.6.1 — Forecast safety-net UI + PF2e prepared-Heal fix

Choose a tag to compare

@kyletravis kyletravis released this 19 May 11:26

Bugfix prerelease surfacing the Phase I-A safety-net stats that v0.6.0 was already computing but never displaying, plus a more robust PF2e Heal-spell extractor for real-world prepared-caster actors.

Forecast panel

  • Added a Heals per run / Recovery checks per run / Hero Point saves row under the headline metrics so GMs can see whether PC healing, recovery checks, and Hero Point death prevention actually fired during the simulation (KHT-105).

PF2e adapter — heal-capability extraction

  • Prepared casters (clerics, druids, divine font, etc.): extractHealCapability now walks spellcastingEntry.system.slots.slotN.prepared (the canonical PF2e v6+ shape) and counts un-expended preparations whose id references a Heal spell item, instead of only reading an item.system.slotsRemaining field that real prepared spells do not populate. Root-cause fix for "cleric Heal slots never fire."
  • Spontaneous casters: when an entry's prepared.value === 'spontaneous' and Heal is in its spell list, the entry's per-rank value (remaining slots) is counted as Heal-castable.
  • Item access now prefers actor.itemTypes.<type> (PF2e's pre-filtered arrays) over walking actor.items, with the latter as a fallback.

Debug diagnostics

  • Enable Debug logging in module settings to see one structured Grim Arithmetic | PC healing capability log per PC, plus a verbose Grim Arithmetic | extraction probe dump (item-type counts, every Heal spell found, raw slot/prepared structure for every spellcasting entry). Future PF2e shape mismatches are now diagnosable from a console paste.

Known issues (deferred to v0.7.0)

  • Foundry v13+ logs a console deprecation warning for the V1 Application framework. The warning is non-fatal until Foundry v16; the three panels will be migrated to ApplicationV2 in v0.7.0 (KHT-106).
  • A "message channel closed before a response was received" console error reported in some sessions traces to a browser extension's chrome.runtime.onMessage listener, not Grim Arithmetic. The module uses zero Chrome extension APIs (KHT-107 — closed as external).