Skip to content

Releases: kyletravis/grim-arithmetic

Grim Arithmetic v0.8.1

Choose a tag to compare

@github-actions github-actions released this 12 Jun 22:47
59d644e

Compatibility bump only; no changes to the underlying mortality math.

Compatibility

  • Verified against Foundry VTT v14.364.

Grim Arithmetic v0.8.0

Choose a tag to compare

@github-actions github-actions released this 12 Jun 22:24
3f9ef15

Renamed grim-arithmetic zip to module.zip in the release so that it can be counted accurately atop the README.md file.

Grim Arithmetic v0.7.3-rc1

Pre-release

Choose a tag to compare

@github-actions github-actions released this 12 Jun 21:32
5c1ba55

First release using updated CI process. No other material changes.

Grim Arithmetic v0.7.2-rc3

Pre-release

Choose a tag to compare

@github-actions github-actions released this 08 Jun 03:06

Release candidate focused on decluttering and unifying the three windows; no changes to the underlying mortality math (KHT-129).

Usability

  • Encounter Forecast: shows only the selected tactics profile's description instead of all five; keeps the vital "not modeled" caveat inline and collapses the rest; moves the high-risk warning below the statistics; adds a "Forecast Completed" status chip; the run button toggles to Cancel while running; light dividers separate the result tables.
  • Encounter Danger Board: the version now sits as small text under the title; a single-line risk-band legend (Grim → Low) with thresholds sits above the lists; removed the redundant header instruction line; each row shows the risk label before the percentage; the window starts wider; tighter row spacing.

Look & feel

  • Unified typography across all three windows on Foundry's native Signika body font with Modesto Condensed titles, replacing the previous mix of fonts.
  • Optimized spacing, sizing, and semantic box colors throughout.

Grim Arithmetic v0.7.2-rc2

Pre-release

Choose a tag to compare

@github-actions github-actions released this 04 Jun 01:47

Release candidate building on v0.7.2-rc1; no changes to the underlying mortality math.

Usability

  • The Encounter Forecast's Biggest Threats table now lists enemies from most to least dangerous, sorted by their share of total damage descending; enemies showing the same percentage are ordered alphabetically by name (KHT-126).
  • The Encounter Forecast's Most Likely to Drop table now lists party members from most to least at risk, sorted by their chance of being downed descending; party members showing the same percentage are ordered alphabetically by name (KHT-127).

Grim Arithmetic v0.7.2-rc1

Pre-release

Choose a tag to compare

@github-actions github-actions released this 28 May 04:10
2351e49

Release candidate. Three usability fixes on top of v0.7.1; no changes to the underlying mortality math.

Usability

  • The Grim Arithmetic settings section is now GM-only — regular players no longer see any module options (KHT-118). The GM-facing options carry clearer descriptions of what each one does.
  • Hover help across all three windows now waits a beat (750ms) before appearing, so tooltips no longer flicker continuously while scanning down a list of values (KHT-120).
  • The risk-rating tooltip now spells out the full ladder — Low, Guarded, Dangerous, Severe, Grim, with the chance-of-being-downed band for each — instead of just "Low → Grim" (KHT-121).

Grim Arithmetic v0.7.1

Choose a tag to compare

@github-actions github-actions released this 24 May 05:12

Builds on v0.7.0's ApplicationV2 migration with internationalization groundwork, on-hover help across every window, clearer tactics options, and a real CI/release pipeline. No changes to the underlying mortality math.

Internationalization (i18n)

  • The GM-facing UI is now translation-ready. The three settings, all window titles, and every static label, heading, button, and tooltip across the Encounter Danger Board, Pair Detail, and Encounter Forecast load from a bundled language file (lang/en.json). English ships in the box, with no visible change for English users.

Usability

  • On-hover descriptions on every labeled metric, control, and table header across all three windows — e.g. "Any PC down", "TPK risk", "Recovery checks per run", "MAP", "Damage swing", "Dying if downed" (KHT-108).
  • The Encounter Forecast lists an inline definition for each tactics profile (Random Legal, Spread Damage, Focus Fire, Predator, Boss Cinematic) above the selector, and tactics labels read more clearly (KHT-111).

Compatibility & packaging

  • Verified against Foundry VTT v14.363.
  • Removed the unknown system/templates manifest keys that triggered a Foundry package warning.
  • Added GitHub Actions CI (lint + tests + build on every push/PR) and a tag-driven release workflow; published the docs/ reference set on GitHub.

v0.7.0 — ApplicationV2 migration + window UX fixes

Choose a tag to compare

@kyletravis kyletravis released this 23 May 05:19

Migrates Encounter Danger Board, Pair Detail, and Encounter Forecast off the deprecated V1 Application framework to foundry.applications.api.HandlebarsApplicationMixin(ApplicationV2), clearing the v13+ console deprecation warning ahead of V1 removal in Foundry v16.

Highlights

  • ApplicationV2 migration for all three windows (KHT-106)
  • Window UX fixes against the V2 dark theme: bounded heights with .window-content overflow-y: auto so long content scrolls; label colors inherit the V2 theme (replacing #3f2418 that read muddy on dark windows); simplified in-content h2 titles
  • Encounter Danger Board: button reordering and title-case

Compatibility

  • Foundry minimum: v13
  • Verified: v14.361
  • System: PF2e

Install (prerelease)

While this remains a prerelease, the releases/latest/... manifest URL still resolves to v0.6.1. To install v0.7.0, point Foundry at the direct manifest:

https://github.com/kyletravis/grim-arithmetic/releases/download/v0.7.0/module.json

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).

v0.6.0 - Monte Carlo Forecast + PC Action Modeling

Choose a tag to compare

@kyletravis kyletravis released this 17 May 12:19

Summary

v0.6.0 introduces a Monte Carlo encounter simulation engine, a Forecast panel, and Phase I-A PC survival mechanics.

Monte Carlo simulation engine

  • Seeded PRNG (mulberry32 + xmur3 hash) for deterministic runs
  • Five tactics profiles: random-legal, spread-damage, focus-fire, predator, boss-cinematic
  • Round orchestrator aggregates any-PC-down, TPK, mean/median rounds-to-first-down, per-PC down/death/HP
  • Web Worker integration for responsive UI during 1k–10k iteration runs
  • Engine guardrails: MAX_ITERATIONS=10000, round cap (5), cooperative abort
  • Default round cap lowered from 10 to 5

Forecast panel

  • New ~800w Forecast window from Encounter Danger Board header
  • Headline metrics: Any PC down, TPK risk, Expected first down
  • Per-PC breakdown with down %, death %, mean first-down round
  • 95% confidence intervals on all proportion and continuous metrics
  • Pessimism banner at ≥80% any-PC-down
  • Simplified controls: fixed 5,000 iterations, default tactics = Spread damage

Phase I-A: PC survival mechanics

  • PCs now take 2 Strikes per turn against most-dangerous standing enemy
  • Healing: Battle Medicine, Heal spell (1/2/3-action), Heal cantrip with heightened scaling
  • Recovery checks: dying PCs roll DC 10+dying, degree-of-success steps dying
  • Hero Point death prevention (one survival per iteration per PC)
  • PC tactics substitutes Strikes for heals when allies are dying or below 40% HP
  • SimulationResult.safetyNet aggregates surface in UI

Security fixes

  • H-1: Dice formula budget limits (max 500 dice, 100 per term, 50000 outcomes)
  • M-1: Debug capture gated behind debugLogging + GM check
  • M-2: Dev dependencies pinned to exact lockfile versions
  • Low: No source maps in production builds

Not modeled (deferred)

  • Shield Block and Champion reactions
  • Spells beyond Heal / save-based threats
  • Persistent damage, attacks of opportunity, movement/reach/LoS
  • Permanent-death probability

Install

Module manifest: included in the zip as module.json

Direct install URL: https://github.com/kyletravis/grim-arithmetic/releases/download/v0.6.0/grim-arithmetic-v0.6.0.zip

Changelog

See CHANGELOG.md for full details.