npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

pf2e-subsystems

v0.1.0

Published

Run Pathfinder 2e's Victory Point subsystems at the table — chases, infiltrations, influence encounters and research (single self-contained HTML).

Downloads

151

Readme

PF2e Subsystems

A GM-side runner for Pathfinder 2e (Remaster) GM Core's Victory Point subsystems — the chase, the infiltration, the influence encounter, the research montage, and the bare framework underneath all of them.

These are rules that get abandoned mid-session, not because they're hard but because tracking them by hand is tedious and easy to get wrong. This keeps the bookkeeping honest: awareness ticks up on its own at the end of every round, leftover chase points are discarded at each obstacle rather than carried, a research source stops paying out once it's spent, and every one of those moves can be undone.

Single self-contained dist/index.html — no framework, no build step to use it, nothing sent anywhere. Open it from a file, host it, or install it as an app.

The five modes

| Mode | Tracks | The thing it gets right | |------|--------|-------------------------| | Chase | Chase Points | Excess points are discarded at each obstacle, not carried to the next | | Infiltration | Infiltration + Awareness | A failure costs 0 IP and hands over 1 AP; every round adds another | | Influence | Influence Points | Which of the NPC's resistances and weaknesses the party has actually Discovered | | Research | Research Points | Each source has a maximum, after which it gives nothing | | Victory Points | whatever you name them | Accumulating and diminishing scales, seeded from GM Core's own table |

The fifth is the escape hatch. Reputation, duels, leadership and hexploration ship as reference text rather than runners — name your own points, set your own thresholds, and the same board runs them.

At the table

  • One tap per PC per round. Four buttons, one per degree of success, and the app works out what moves.
  • Undo. Every action is reversible, including across an obstacle boundary where points were discarded and no arithmetic could put them back.
  • 42 sample obstacles. GM Core's Underground, Urban and Wilderness chase tables, with their real skills and DCs, pickable when you're building a chase.
  • Prep and run are separate. Resetting a run hands the prepped chase back untouched; an export code carries the prep and none of last week's dice.
  • Where the book says "the GM decides", the app asks. Obstacle costs, the awareness failure point, round lengths and thresholds are prefilled with the book's rule of thumb and left editable.

Run it

python3 tools/build.py        # assemble dist/index.html
# then either:
open dist/index.html          # straight from the file, fully offline
npx pf2e-subsystems           # serve at http://localhost:8727 and open the browser

Where the rules text comes from

Every word of quoted rules text is Paizo's own, generated from the open-source Foundry VTT pf2e data so it can't drift from the book. The subsystems chapter lives in the GM Screen journal; the conditions and actions come from their own packs. The subsystem pages are on the v14-dev branch:

git clone --depth 1 --filter=blob:none --sparse -b v14-dev \
    https://github.com/foundryvtt/pf2e.git pf2e-data
cd pf2e-data && git sparse-checkout set packs/pf2e/journals \
    packs/pf2e/conditions packs/pf2e/actions && cd ..

python3 tools/build_subsystems.py \
    --src pf2e-data/packs/pf2e/journals/gm-screen.json \
    --out data/subsystems.generated.js
python3 tools/build_reference.py --src pf2e-data/packs/pf2e \
    --out data/reference.generated.js
python3 tools/build.py

The Influence page in particular is only a pointer to the Influence and Discover actions — which is why build_reference.py here pulls actions/subsystems/ as well as the four folders the other tools use. Without it that page renders as two bare headings. The test suite asserts that every action the rules text names actually resolves.

The explanations around that text, the run board, and every judgement about what to enforce and what to ask are ours.

Tests

npm install                   # jsdom
node tools/test.mjs

107 assertions over the built file. They cover the arithmetic rather than the rendering: every degree-of-success scale, the chase discard at an obstacle boundary, awareness accruing at end of round, the 2× failure threshold and its quarter marks, individual versus group obstacles, Edge Point spends, research caps, thresholds firing exactly once against the right count, both Victory Point scales, undo restoring exactly across an obstacle advance, and that the two generated data files line up with each other.

The other three tools

Licensing

Application code is MIT (see LICENSE). Bundled Pathfinder subsystem, condition and action text is Paizo content under the ORC and OGL licenses — see notice.md. This is an unofficial fan tool, not affiliated with Paizo.