aka [T] o [H] it [A] rmor [C] lass [Z] ero
An Owlbear.Rodeo extension for calculating your THAC0.
-
In Owlbear Rodeo, open your profile menu and choose Add Custom Extension.
-
Paste this manifest URL:
https://jessescott.github.io/thaco/manifest.json -
Open a scene and click the THACO d20 icon in the toolbar.
If the popover looks stale or blank after an update, hard reload the page (Ctrl+Shift+R).
- Enter your THAC0, the target's Armor Class and your attack bonus to get the d20 roll you need (clamped to 1-20).
- Roll a d20 and see whether it hits or misses. A natural 20 always hits and a natural 1 always misses. Results are shown as an Owlbear notification.
- "Calculate Hit AC" mode: enter (or roll) a d20 and see which Armor Class it hits.
- Named profiles (e.g. "Longsword", "Unarmed") you can add, rename, switch between and delete from the collapsible Profile row.
- Everything is remembered between sessions in the browser, including whether the Profile row is open.
- The popover resizes itself to fit the calculator.
The app lives in THACO/ and is built with Vite and the Owlbear SDK.
cd THACO
npm install
npm run dev # dev server on http://localhost:5173
npm test # unit tests (node:test)
npm run test:ui # Playwright UI tests (run `npx playwright install chromium` once)
npm run build # production build in dist/Outside Owlbear the page works standalone; Owlbear-specific calls (notifications) are skipped.
To try a local build inside Owlbear, run npm run dev and add http://localhost:5173/manifest.json as a custom extension.
Build and Testinstalls dependencies, builds, and runs the unit tests and UI tests on every push and PR tomain. Node comes from.node-version.- On a push to
main(or a manual run), once those pass, itsdeployjob publishesTHACO/distto GitHub Pages. Pages must be set to the GitHub Actions source in the repository settings. - Dependabot opens weekly PRs for npm packages and GitHub Actions.
See LICENSE.
