[WFRP4e] Pursuits
A Foundry VTT module for the Warhammer Fantasy Roleplay 4th Edition system that runs Simple and Complex Pursuits as chat-based encounter cards.
![]() |
![]() |
![]() |
![]() |
Start a pursuit with /pursuit [simple|complex]. A chat card lets you populate Quarry and Pursuers from selected/targeted tokens, set the starting distance and (for complex) the environment, then play it out round by round with per-participant skill rolls.
Features
Simple Pursuits
A single Distance value tracks the chase from 0 (caught) to 10 (escaped).
- Quarry and Pursuers joined via selected/targeted tokens; per-participant skill (Athletics / Ride / Drive) and Move Rating override for mounts and vehicles
- Movement bonus SL applied automatically from the gap between the faster and slower sides
- Resolution compares the worst Quarry roll against the best Pursuer roll (per the SPEC)
- Resolve Round stays disabled until every participant has either rolled or been skipped via Stand Up / Untangle
- Multi-quarry catchup: when Distance hits
0with more than one Quarry, the GM picks which member to sacrifice — each option shows the Distance that would result without that member's roll (always at least1), or All captured to end the pursuit - After a sacrifice the Pursuers can decide who stops to catch the abandoned member (subset selection) or ignore them
- Player rerolls (Fate Points, etc.) flow back to the GM via socket and update the tracked SL automatically
- Round log shows per-round SL and movement bonuses
Complex Pursuits
Per-character position tracking, initiative-ordered turns, individual catches.
- Each participant has their own
position; Distance is the gap between the closest Quarry and the lead Pursuer - Environment-driven escape distance: Busy city (
3), Woodland (5), Village (7, default), Meadow (10), Desert (13) - Initiative-ordered rolls; only the currently-active participant shows a roll button, and the server-side roll handler rejects out-of-turn attempts
- Character Progress Table encoded in
_complexDistanceMoved:floor(Move × 4 / 10)adjusted by SL band,+1on a sprint,-1on a stumble,0on−3..−4,0plus auto-applied Prone on−5or worse - Move-based difficulty applied at roll time: Move ≤1 Very Hard, ≤2 Hard, ≤3 Challenging, otherwise Average — matches the SPEC penalty table
- Mid-round catches: when a Pursuer rolls past a Quarry's position, a catch dialog posts with three options — Exclude pair (engage in combat, remove both), Ignore quarry (race past, recorded so the same Pursuer auto-ignores them next round), End pursuit
- Individual Quarry escape and "left behind" notifications when they pull beyond the escape distance or drop behind every Pursuer
- Per-pursuer status text reflects their closest non-ignored Quarry — so an Ignored pair stops showing "has caught up" once the GM resolves it
- Round auto-advances when every active participant has rolled or been skipped
Obstacles (complex only)
A library of 15 pre-built obstacle types drawn from the SPEC table, plus a free-form custom entry.
- GM places an obstacle from the Create Obstacle button in the active-turn footer; the dialog shows a name, its perceived description, navigation test, consequences, and a relative-distance offset from the current lead Quarry
- Obstacles appear as nodes in the position diagram at their fixed position
- When a participant reaches an obstacle they have not yet perceived, a Perception button replaces their roll button; the perception test result is stored per-participant
- When a participant moves across an obstacle position, a navigation test is triggered automatically; on failure, participants with
blocksProgress: trueobstacles are halted at the obstacle's position and consequences are posted to chat - Obstacle rerolls (Fate Points, etc.) are tracked via the same reroll-capture hook as movement rolls and correctly update the obstacle's perception state
- Obstacles are pruned from the flags once every active participant has navigated past them
Exhaustion (complex only)
Implements the full SPEC threshold table (action counts 10 / 15 / 18 / 20 / 21 / 22 / 23 / 24 / 25 / 26).
- Athletics participants: when the threshold is reached, an Endurance test dialog opens automatically at the correct difficulty (Very Easy +60 down to Even More Impossible −60); a failed roll (SL < 0) applies the
fatiguedcondition to the actor - Ride / Drive participants: a chat notification names the participant and the required modifier so the GM can prompt the mount or draft-animal's Endurance test; a second line reminds the GM of the Challenging (+0) Charm Animal test the rider may attempt to keep a struggling mount running
Both modes
- Prone / Entangled participants show Stand Up / Untangle in place of their roll button. Clicking it removes the condition and skips that participant's roll for the round.
- Reroll capture works for both GM and player rolls, in both modes.
- Setup, round, and catch cards localize via
languages/en.json.
Design notes
Stand Up / Untangle is a single click, not a test. SPEC §"Impeded Movement" says a Prone or Entangled character "potentially" needs to make a test to free themselves. The module skips that participant's roll for the round and exposes a one-click condition-removal button. In complex mode the skip is treated as SL −3 (the "halts" band in the Character Progress Table); in simple mode the participant is omitted from the SL comparison, which is equivalent to contributing SL 0. Rolling any required test is left to the GM to enforce outside the pursuit card — the wfrp4e system's own condition handling already covers the mechanics.
Quarry are always tracked individually in complex mode. SPEC permits collapsing a tight group into a single Distance until one member leads by more than 16 yards. The module skips that simplification — every Quarry has its own position. Collapsing a group on the card would mostly add visual noise to the per-participant view.
Breaking-from-Combat head starts are entered manually. SPEC lists method-specific starting distances (Using Advantage / Using Dodge / Fleeing, plus an optional Athletics test on the flee path). The module exposes a free-form starting-distance input on the setup card and trusts the GM to pick the right value, rather than embedding the entire combat-disengage flow.
Requirements
| Dependency | Minimum version |
|---|---|
| Foundry VTT | 13 (verified 14) |
| WFRP4e system | — |
| Up in Arms (complex only) | — |
Installation
Via Foundry VTT module manager (recommended):
Search for "[WFRP4e] Pursuits" in the Add-on Modules browser, or paste the manifest URL directly:
https://github.com/Tiamanti/WFRP4e-Pursuits/releases/latest/download/module.json
Manual install:
Download module.zip from the latest release and extract it into your Data/modules/ directory.
License
This module is released under the MIT License and is free for anyone to use, modify, or maintain.
This work is licensed under Foundry Virtual Tabletop EULA - Limited License for Package Development from March 2, 2023.



