FoundryVTT game system package for a Lord of the Mysteries-inspired TTRPG.
In Foundry VTT:
- Open
Game Systems. - Click
Install System. - Paste this Manifest URL:
https://github.com/brodybennett/FoundryVTTLoTMGameSystem/releases/latest/download/system.json
The system publishes unified compendiums in this access layout:
Pathways (All)(all pathway roots and sequence nodes in one pack; filter by pathway)Items (All Types)(weapons, armor, gear/features, consumables, ingredients, and other item subtypes in one pack)Sealed Artifacts(cross-pathway, grouped by sequence in naming/flags)Abilities (All Pathways)(grouped by pathway + sequence in naming/flags)Rituals (All Pathways)(pathway/universal grouping supported)Roll Tables (All Segments)(resources, abilities, rituals, artifacts, corruption, encounters in one pack)Actors (All Categories)(factions, beyonder monsters, civilians in one pack)Rules: Hyperlinked Reference(JournalEntry rules compendium with table-of-contents links)
Compendium folder UX is native and auto-organized on world ready for GMs:
Pathways (All): folder per pathway containing pathway root + its sequence nodesRoll Tables (All Segments): folder per segment (Resources,Abilities,Rituals,Artifacts,Corruption,Encounters)Items (All Types): folder per item group (Weapons,Armor,Gear & Features,Consumables,Ingredients,Other)Actors (All Categories): folder per category (Faction NPCs,Beyonder Monsters,Civilians,Other)
Controls:
- World setting:
lotm-system.autoOrganizeCompendiums(defaulttrue) - Manual re-sync:
game.lotm.organizeCompendiums()
- Create a world using
LoTM Game System. - Open
Compendium Packsin sidebar. - Import content from system packs as needed.
- Create a
characteractor and drag pathway/ability/item content onto the actor sheet. - Use actor sheet actions for
Check,Ritual Risk,Artifact Backlash, and corruption updates.
For character actors, progression is drag/drop-first and mirrors DnD5e-style sheet flow:
- Open a character sheet and use the DnD5e-style tabs (
Details,Inventory,Features,Spells,Effects,Biography,Special Traits). - Drag compendium/world items onto the actor:
pathway,sequenceNode-> class/sequence presentation in Features + header badgeability,ritual->Spellstabweapon,armor,gear,consumable,ingredient,artifact->Inventorytabfeature,background,conditionTemplate->Featurestab
- Use roll controls directly from sidebar/header/details (
Check,Ritual Risk,Artifact Backlash). - Use basic item favorites from the sidebar (
flags.lotm-system.favorites.items).
Notes:
- Character sheet no longer exposes a creation wizard/finalize workflow.
- Roll automation no longer blocks on visible creation workflow state.
system.creationmetadata remains for compatibility and is normalized to hidden-complete state.- Dropping/removing
pathwayorsequenceNodeitems auto-syncs:system.identity.pathwayIdsystem.identity.sequence
- Repair/migration paths continue to seed missing defaults and legacy skill records.
Runtime helper APIs:
game.lotm.validateCreationStep(actor, step)game.lotm.getPathwayOptions()game.lotm.getSequenceOptions(pathwayId)
For every sheet milestone/rework, use:
docs/sheet-ux-rubric.mdfor pass/fail UX quality gating.docs/sheet-review-checklist.mdfor screenshot packet and manual test script.
Recommended review flow:
- Update from latest tag build in Foundry.
- Run checklist steps in-world.
- Capture required screenshots + first console error (if any).
- Return notes on confusion/noise/friction by tab/section.
Roll table source entries require strict segment and formula contracts. Runtime hooks map:
ritualFailure -> ritualsartifactBacklash -> artifactscorruptionThresholdCross -> corruption
Runtime APIs:
game.lotm.rollOnSegment(segment, context={})game.lotm.rollOnTableId(contentId, context={})
Automation behavior by world setting:
full: auto-draw tableassisted: prompt before drawmanual: resolve target table without drawing
Source of truth is under content-src/:
content-src/pathways/content-src/abilities/content-src/items/content-src/rituals/content-src/artifacts/content-src/rolltables/content-src/actors/content-src/rules/content-src/configs/
Validate and build packs:
python scripts/validate_content_source.py
python scripts/build_compendiums.pyGenerated pack databases are written to packs/*.db.
Typed scaffolding and metadata tooling:
python scripts/content_tool.py new --type ability --id ability.example.new --name "New Ability"
python scripts/content_tool.py new-pathway-bundle --pathway-id pathway.example --pathway-name Example --top-sequence 9 --bottom-sequence 7
python scripts/content_tool.py bump-max-tested --version 1.2.13
python scripts/content_tool.py bump-max-tested --version 1.2.13 --writeItem authoring sheet is subtype-aware and exposes:
- type-relevant payload editors only
- CSV editors for
tags,allowedPathwayIds,requiresIds, and sequence milestones - structured effects row add/remove scaffold
python scripts/phase1_verification.py
python scripts/phase2_verification.py
python scripts/check_version_consistency.py
python scripts/validate_content_source.py
python scripts/build_compendiums.py
python scripts/verify_foundry_manifest.py
python scripts/build_foundry_release.py
python scripts/rulebook_contract_audit.py --rulebook rulebook-source-v1.1.md
python scripts/rulebook_roundtrip_check.py --docx "LoTM Rulebook.docx"Or run:
powershell -ExecutionPolicy Bypass -File scripts/run_all_verification.ps1- Update
system.json:
- bump
version - update
downloadto.../releases/download/vX.Y.Z/lotm-system-vX.Y.Z.zip
- Validate and build:
python scripts/validate_content_source.py
python scripts/build_compendiums.py
python scripts/verify_foundry_manifest.py
python scripts/build_foundry_release.py- Commit changes.
- Create and push a tag:
git tag vX.Y.Z
git push origin vX.Y.Z- GitHub Actions publishes release assets:
system.jsonlotm-system-vX.Y.Z.zip
- If the repository is private, anonymous Foundry installs fail.
- If tag and
system.json.versiondo not match, release workflow fails. - If zip root folder is not
lotm-system/, Foundry install/update fails. - If
packs/*.dbare missing, compendium lists remain empty. - If compendium folders are missing or stale, run
game.lotm.organizeCompendiums()as GM. - If content semver/dependencies are invalid, content validation fails.
- If sheets feel broken after update, hard-refresh Foundry client (
Ctrl+F5) and re-test double-click open flow.