Septenary for Foundry VTT: Three-Phase Implementation Plan
>> foundryvtt
> PART_OF_PROJECT
Septenary Foundry ModulesSeptenary for Foundry VTT: Three-Phase Implementation Plan
PHASE 1: Character Sheet Foundation & Basic Rolls
Timeline: 1β2 weeks | Complexity: Low | Learning curve: Steep but rewarding
What Gets Built
- system.json manifest (identity file for Foundry)
- Character sheet template with three stats (Body/Mind/Power) and 2β3 skill slots per stat
- Skill data structure in the actor data model (broad skill + specialization ranks)
- Basic roll button (Xd6L rolls under stat)
- Character creation sheet (basic stat/skill assignment)
What This Delivers
- A playable character sheet you can create characters on
- You can roll any skill against a stat with a button click
- Full visual feedback on the roll (all dice shown, result highlighted)
- No magic, no armor, no advanced mechanics yet
Why This Phase First
- Foundry's actor/sheet system is well-documented
- You validate the character data structure before building on it
- Rolling is Foundry's core competency; this lets you test dice automation
- Everyone can immediately make a playable character and test at the table
Files That Get Created
septenary/
βββ system.json (manifest)
βββ templates/
β βββ actor-character-sheet.html (main character sheet)
β βββ actor-npc-sheet.html (simplified NPC sheet)
β βββ dialogs/
β βββ skill-roll-dialog.html (modifiers before roll)
βββ styles/
β βββ septenary.css (character sheet styling)
βββ module/
β βββ actor.js (actor data model: Body/Mind/Power)
β βββ sheets/
β β βββ character-sheet.js (sheet class, event handlers)
β β βββ npc-sheet.js
β βββ macros/
β β βββ skill-roll.js (roll logic and chat output)
β βββ config.js (CONFIG.SEPTENARY for skill lists)
βββ packs/
βββ skills-compendium.db (skill reference)
Testing Checklist (You Do This)
- [ ] Create a character, assign stats 2/2/2
- [ ] Add 3 skills, mix of Body/Mind/Power
- [ ] Roll each skill, verify Xd6L pools form correctly
- [ ] Roll with difficulty modifier via dialog (add +1d6H, verify cancellation)
- [ ] Create an NPC with fewer skill fields, verify sheet resizes
Decision Point Before Phase 2
At end of Phase 1, you have one question: Does the sheet data structure feel right when you're actually using it? If skills are too fiddly to add, or the stat display is confusing, you adjust it here before building the next layer. This is low-risk to change.
PHASE 2: Combat, Conditions, Armor & Advancement
Timeline: 2β3 weeks | Complexity: Medium | Requires Phase 1 working
What Gets Built (Cohesive Unit)
- Combat Tab in character sheet
- Unconscious threshold display (3 + Body)
- Death buffer (Mind + Power)
- Current hits tracker with visual health bar
- Armor bonus + equipment slots (Light/Medium/Heavy/Full Plate selection)
-
Armor degradation tracking
-
Condition System
- Condition icons (Active Effects UI for Tired, Unsteady, etc.)
- Condition persistence across sessions
-
Tired drain automation (1 per hour, nap/rest recovery)
-
Combat Automation
- Initiative roll (roll Power stat)
- Defense action tracking (reserved = Defense skill number stored)
-
Hit recording macro (apply damage, handle Defense rank blocking, degrade armor)
-
Advancement Tracker
- Skill point counter per-skill (locked to stat cap during Phase 1)
- Running total per stat (6 points = +1 to stat)
- Auto-raise stat when threshold crossed
- Audit view (show which skills fed which stat advances)
What This Delivers
- You can run a full combat encounter in Foundry
- Armor degrades realistically, players see it happening
- A character naturally advances through playing
- Status effects (Tired, Unsteady) apply and resolve automatically
Why This Phase Second (Not First)
- You need Phase 1's actor data structure locked in
- Combat tab is a natural extension of character sheet, uses same context
- Armor and conditions are independent systems; advancing is separate from both
- But all three belong together because you test them all in combat
Files That Get Created/Modified
septenary/
βββ templates/
β βββ actor-character-sheet.html (ADD combat & advancement tabs)
β βββ dialogs/
β βββ damage-dialog.html (NEW: hit assignment)
β βββ advancement-audit.html (NEW: show stat progression)
β βββ condition-config.html (NEW: manage Tired state)
βββ styles/
β βββ septenary.css (ADD combat styling)
β βββ combat.css (NEW: hits, armor visuals)
βββ module/
β βββ actor.js (MODIFY: add combat fields)
β βββ sheets/
β β βββ character-sheet.js (ADD: combat & advancement tabs)
β βββ macros/
β β βββ damage.js (NEW: hit assignment with Defense rank blocking)
β β βββ initiative.js (NEW: Power roll)
β β βββ advancement.js (NEW: skill point tracking, stat raises)
β βββ active-effects.js (NEW: Tired and Unsteady)
β βββ config.js (MODIFY: add conditions, armor types)
βββ packs/
βββ conditions.db (NEW)
βββ armor-equipment.db (NEW)
Testing Checklist
- [ ] Two characters in a combat scene
- [ ] Roll initiative (verify Power rolls appear in order)
- [ ] First character takes 3 hits without Defense action β armor degrades
- [ ] Second character reserves action, takes 5 hits β Defense rank blocks first 2
- [ ] Apply Tired condition manually, see stat drain start
- [ ] Award 2 skill points to character, watch stat advance at 6-point threshold
- [ ] Close Foundry, reload world, verify Tired and armor states persist
Critical Decision Before Phase 3
Does combat feel right at the table? Specifically: Is the hit/damage flow clear? Are players confused about Defense blocking? Is advancement tracking visible enough? These are gameplay questions, not code questions. You'll know the answers after one real session.
PHASE 3: Magic (Rites, Spells, Prayers), Spellcasting & Advanced Features
Timeline: 3β4 weeks | Complexity: High | Requires Phase 1 & 2 fully working
What Gets Built (Largest Unit)
- Spell/Rite/Prayer Data Structure
- Item type for each (not global; each has its own template)
- Fields: Level (1β6), House, capacity cost, effect text
-
Spell card compendium with full write-ups from spec
-
Magic Character Sheet Tab
- Three capacity pools (Arcane / Divine / Wyrding), track separately
- List all known Houses with ranks
- Quick-cast buttons for each House
-
Recovery indicator (Arcane/Wyrding show "hours of study needed"; Divine shows "full on sleep")
-
Casting Flow
- Click spell/rite/prayer in sheet
- Dialog: confirm capacity cost, select difficulty, add modifiers
- Roll House skill (Xd6L) against casting stat
- On success: deduct capacity, log in chat, mark slot as "cast this turn"
-
On failure: still deduct capacity (important!)
-
Cantrip System
- Separate item type (no capacity cost)
- Track uses per cycle (rank = uses)
-
Reset on sleep
-
Advanced Features (if time/energy allows)
- Spell templates (area effect visualization in Foundry)
- Linked macros (Searing Arc auto-rolls damage as hit pool)
- Upcast scaling (click to increase level, recalculate capacity)
- NPC spell slot presets (quick load "Evocation 3" β spell list populates)
What This Delivers
- Full magic system playable in Foundry
- Capacity management is automatic (no manual math)
- Spell cards are beautifully formatted, easy to reference
- NPCs can cast the same way PCs do
Why This Phase Last
- Magic is orthogonal to Phase 1 & 2 (doesn't block them; they don't block it)
- Magic requires House/spell item data that only makes sense after you know character structure is solid
- If Phase 1 or 2 changes mid-table, magic reimplement is expensive; do it last
- You've had 4β5 weeks of live play without magic; you know what to emphasize
Files That Get Created/Modified
septenary/
βββ templates/
β βββ actor-character-sheet.html (ADD magic tab)
β βββ item-spell.html (NEW: spell card template)
β βββ item-rite.html (NEW: rite card template)
β βββ item-prayer.html (NEW: prayer card template)
β βββ item-cantrip.html (NEW: cantrip card template)
β βββ dialogs/
β βββ cast-spell-dialog.html (NEW: capacity, difficulty, roll modifiers)
β βββ upcast-dialog.html (NEW: select level, recalc cost)
βββ styles/
β βββ magic.css (NEW: spell card formatting per spec)
βββ module/
β βββ item.js (NEW: spell/rite/prayer/cantrip item types)
β βββ sheets/
β β βββ character-sheet.js (MODIFY: add magic tab)
β β βββ spell-sheet.js (NEW: edit spell properties)
β β βββ rite-sheet.js (NEW)
β β βββ cantrip-sheet.js (NEW)
β βββ macros/
β β βββ cast-spell.js (NEW: casting flow)
β β βββ cast-rite.js (NEW)
β β βββ cast-prayer.js (NEW)
β β βββ cast-cantrip.js (NEW: no capacity, track uses)
β βββ magic.js (NEW: capacity calculations, recovery display)
β βββ config.js (MODIFY: House lists, spell levels)
βββ packs/
βββ arcane-spells.db (NEW: all Arcane House spells)
βββ divine-prayers.db (NEW: all Divine House prayers)
βββ wyrding-rites.db (NEW: all Wyrding House rites)
βββ cantrips.db (NEW: all cantrip skills)
Testing Checklist
- [ ] Create an Arcanist, add Evocation rank 3
- [ ] Add "Directed Strike" spell to inventory, set level 1
- [ ] Cast it: dialog appears, capacity deducts, roll happens
- [ ] Cast it again (test capacity deduction twice)
- [ ] Rest (sleep); capacity should reset
- [ ] Create a Wyrder, add Tending rank 2
- [ ] Cast a Tending rite; verify capacity comes from Body+Mind+Houses
- [ ] Add Cantling Drawn Air cantrip, cast 3 times, verify uses = rank
- [ ] Sleep, verify cantrip uses reset
Final Gate Before Launch
All three phases complete and tested live. You've run combat encounters, cast spells, seen characters advance. The system handles what it's supposed to. Edge cases and polish can come in maintenance releases.
Decision & Feedback Loops Between Phases
| After Phase 1 | You Decide |
|---|---|
| Sheet feels clunky to use? | Adjust skill UI before Phase 2 (add/remove skill slots, reorganize tabs) |
| Stat cap is hard to understand? | Change Phase 2 advancement display to make it clearer |
| Rolling math doesn't feel right? | Tweak cancellation logic (currently 1:1; could be 2:1 or other if you want) |
| After Phase 2 | You Decide |
|---|---|
| Combat is slow because armor tracking is tedious? | Phase 3: automate armor in macros so it's silent in background |
| Advancement feels too fast/slow? | Adjust the thresholds (currently 6 points = +1 stat; could be 4 or 8) |
| Tired condition is too harsh? | Change drain rate before Phase 3 makes it interact with magic |
| Players want to house-rule something? | Phase 3 can build in variants (e.g., optional armor bypass rules) |
What "Working & What Wasn't" Means
After each phase, you run 2β3 real sessions (not just testing). You get answers to:
- Can players understand the sheet at a glance? (Phase 1)
- Do they feel the weight of armor and advancement? (Phase 2)
- Does magic feel distinct and rewarding by tradition? (Phase 3)
Then you make evidence-based changes before the next phase. Not speculationβactual table feedback.