5.1 KiB
5.1 KiB
Vermine 2047 — Foundry VTT System
Unofficial game system for Vermine 2047, a French post-apocalyptic tabletop RPG by Éditions John Doe (https://www.kickandgo.net/boutique-agate/category.php?cl=UyQcRrFtYcYrAnLbOfDj&idp=20).
Bilingual FR/EN interface.
Actor Types
| Type | Sheet | Description |
|---|---|---|
| character | AppV2 | Player character with skills, abilities, totem, equipment |
| npc | AppV2 | Non-player character with role/threat, wound thresholds |
| group | AppV2 | Group with members, encounters, link sync |
| creature | AppV2 | Creature with template/size/role, custom attack stats |
Item Types
| Type | Use |
|---|---|
| item | Generic items (gear, resources) |
| weapon | Weapons with damage, range, reliability, rarity |
| defense | Armor/shields with protection, coverage |
| vehicle | Vehicles with speed, structure, weapons |
| ability | Special abilities (apprenticeship, domain) |
| specialty | Skill specializations (attached to skills) |
| background | Character backgrounds |
| trauma | Mental/physical trauma |
| evolution | Character evolutions |
| rumor | Rumors (group) |
| target | Targets (group) |
| rite | Rites (magic/rituals) |
Dice System
- d10-based success counting:
Xd10cs>=N - Difficulty = number of successes required
- Totems give domain bonuses (human/adapted dice)
- Rerolls via Effort and Sang-froid (Composure)
- Automatic successes and failure thresholds
- Dice So Nice! 3D dice integration with custom d10 face images
Initiative
Formula: (@abilities.reflexes.value + @skills.alertness.value)d10cs>=@combatStatus.difficulty
Architecture
module/
├── vermine2047.mjs # Entry point (Hooks.once init)
├── models/ # DataModels (Foundry v2 TypeDataModel)
│ ├── actor/ # character.mjs, npc.mjs, group.mjs, creature.mjs
│ └── item/ # All 12 item types
├── documents/ # VermineActor, VermineItem
├── applications/
│ └── sheets/ # AppV2 sheets per type
├── system/
│ ├── config.mjs # CONFIG.VERMINE (totems, traits, skills…)
│ ├── roll.mjs # VermineUtils.roll()
│ ├── fight.mjs # Combat system, VermineCombat, VermineCombatant
│ ├── functions.mjs # Shared helpers (skill scores, etc.)
│ ├── hooks.mjs # Hook registrations (DiceSoNice, chat, pause…)
│ ├── dice3d.mjs # Dice So Nice colors, initUserDice
│ ├── dialogs/rollDialog.mjs
│ ├── settings.mjs # System settings (game-mode, etc.)
│ ├── tour.mjs # Tours (stub)
│ └── group-link.mjs # GroupLink: auto-sync actors↔groups
templates/
├── actor/appv2/ # AppV2 actor sheet templates
├── actor/ # Legacy templates (coexisting)
└── item/ # Item sheet templates
css/
└── vermine2047.min.css # Compiled from LESS
less/
└── base.less # Main stylesheet (LESS source)
Key Objects
game.vermine2047→{ VermineUtils, VermineCombat, GroupLink }CONFIG.VERMINE→ totems, traits, skills, domains, combat statuses…CONFIG.ui.combat→ customVermineCombatTracker
Commands
npm run build:less # LESS → css/vermine2047.min.css
npm run build:less:dev # LESS → css/vermine2047.dev.css (unminified)
npm run build:all-css # Both
npm run watch # Gulp watch + browser-sync → localhost:30000
npm run lint:less # LESS lint
npm run pushLDBtoYAML # Extract packs → src/packs/*.yml
npm run pullYAMLtoLDB # Compile packs → packs/* (LevelDB)
make build|watch|lint # Makefile wrappers
Requirements
- Node.js
v16.15.1(see.nvmrc) - Foundry VTT v14
Development Notes
- DataModels before Document classes: In
inithook, registerCONFIG.Actor.dataModels.*andCONFIG.Item.dataModels.*before settingCONFIG.Actor.documentClass/CONFIG.Item.documentClass. - Two template systems: AppV2 (
templates/actor/appv2/) and legacy (templates/actor/*.hbs) coexist — don't confuse them. - Packs: Edit YAML source in
src/packs/*.yml, then runpullYAMLtoLDBto compile to LevelDB. - CSS: Declared in
system.jsonstyles — do not inject<link>manually. - ESLint: ~350 rules. Run
npx eslint module/before committing. Noconsole.log(useconsole.errorsparingly). - editMode: Not auto-set on actor creation (causes ActiveEffect errors). Enable manually via sheet checkbox.
- GroupLink: Auto-syncs on actor update. Changes propagate bidirectionally.
- HotReload: Enabled for css, scss, hbs, json in
system.json.
License
This system is an unofficial fan project. The Vermine 2047 setting and trademarks belong to Éditions John Doe.