7382723e75c90d9ec4788f59f5ed88d3b6820a79
Résout par uuid avant l'id d'acteur : pour un token non lié (PNJ mineur), token.actor.id expose encore l'id de l'acteur monde dont il est issu, et résoudre par id blessait alors tous les tokens de la fiche. Le uuid d'un acteur synthétique est résolu en extrayant directement la scène et le token, car fromUuid échoue sur les documents non indexés quand la résolution est asynchrone.
Vermine 2047 — Système Foundry VTT
Système non-officiel pour le jeu de rôle Vermine 2047, univers post-apo français par Studio Agate.
► Achetez le jeu : https://www.kickandgo.net/boutique-agate/category.php?cl=UyQcRrFtYcYrAnLbOfDj&idp=20
Interface bilingue FR/EN.
Types d'Acteurs
| Type | Fiche | Description |
|---|---|---|
| character | AppV2 | Personnage joueur — compétences, capacités, totem, équipement |
| npc | AppV2 | PNJ avec rôle/menace, seuils de blessure |
| group | AppV2 | Groupe avec membres, rencontres, synchro liée |
| creature | AppV2 | Créature avec gabarit/taille/rôle, attaques custom |
Types d'Objets
| Type | Utilisation |
|---|---|
| item | Objets génériques (matériel, ressources) |
| weapon | Armes — dégâts, portée, fiabilité, rareté |
| defense | Armures/boucliers — protection, couverture |
| vehicle | Véhicules — vitesse, structure, armement |
| ability | Capacités spéciales (apprentissage, domaine) |
| specialty | Spécialités de compétence |
| background | Historiques de personnage |
| trauma | Traumatismes physiques/mentaux |
| evolution | Évolutions du personnage |
| rumor | Rumeurs (groupe) |
| target | Cibles (groupe) |
| rite | Rites (magie/rituels) |
Système de Dés
- Comptage de succès sur d10 :
Xd10cs>=N - Difficulté = nombre de succès requis
- Les totems donnent des bonus de domaine (dés humains/adaptés)
- Relances via l'Effort et le Sang-froid
- Succès automatiques et seuils d'échec
- Intégration Dice So Nice! avec faces de d10 personnalisées
Initiative
Formule : (@abilities.reflexes.value + @skills.alertness.value)d10cs>=@combatStatus.difficulty
Architecture
module/
├── vermine2047.mjs # Point d'entrée (Hooks.once init)
├── models/ # DataModels (Foundry v2 TypeDataModel)
│ ├── actor/ # character.mjs, npc.mjs, group.mjs, creature.mjs
│ └── item/ # Les 12 types d'objets
├── documents/ # VermineActor, VermineItem
├── applications/
│ └── sheets/ # Fiches AppV2 par type
├── system/
│ ├── config.mjs # CONFIG.VERMINE (totems, traits, compétences…)
│ ├── roll.mjs # VermineUtils.roll()
│ ├── fight.mjs # Système de combat, VermineCombat, VermineCombatant
│ ├── functions.mjs # Fonctions partagées
│ ├── hooks.mjs # Hooks (DiceSoNice, chat, pause…)
│ ├── dice3d.mjs # Couleurs Dice So Nice, initUserDice
│ ├── dialogs/rollDialog.mjs
│ ├── settings.mjs # Paramètres du système (mode de jeu…)
│ ├── tour.mjs # Visites guidées (stub)
│ └── group-link.mjs # GroupLink : synchro acteurs↔groupes
templates/
├── actor/appv2/ # Templates AppV2 des fiches acteurs
├── actor/ # Templates legacy (coexistence)
└── item/ # Templates des fiches objets
css/
└── vermine2047.min.css # Compilé depuis LESS
less/
└── base.less # Source LESS principale
Objets Clés
game.vermine2047→{ VermineUtils, VermineCombat, GroupLink }CONFIG.VERMINE→ totems, traits, compétences, domaines, états de combat…CONFIG.ui.combat→VermineCombatTrackerpersonnalisé
Commandes
npm run build:less # LESS → css/vermine2047.min.css
npm run build:less:dev # LESS → css/vermine2047.dev.css (non minifié)
npm run build:all-css # Les deux
npm run watch # Gulp watch + browser-sync → localhost:30000
npm run lint:less # Vérification LESS
npm run pushLDBtoYAML # Extraire les packs → src/packs/*.yml
npm run pullYAMLtoLDB # Compiler les packs → packs/* (LevelDB)
make build|watch|lint # Raccourcis Makefile
Prérequis
- Node.js
v16.15.1(cf.nvmrc) - Foundry VTT v14
Notes de Développement
- DataModels avant Document classes : Dans le hook
init, enregistrerCONFIG.Actor.dataModels.*etCONFIG.Item.dataModels.*avant de définirCONFIG.Actor.documentClass/CONFIG.Item.documentClass. - Deux systèmes de templates : AppV2 (
templates/actor/appv2/) et legacy (templates/actor/*.hbs) coexistent. - Packs : Éditer les sources YAML dans
src/packs/*.yml, puis lancerpullYAMLtoLDB. - CSS : Déclaré dans
system.json— ne pas injecter de<link>manuellement. - ESLint : ~350 règles. Lancer
npx eslint module/avant chaque commit. Pas deconsole.log. - editMode : Ne se met plus automatiquement à la création d'acteur (cause des erreurs ActiveEffect). Activer manuellement via la case à cocher.
- GroupLink : Synchronisation automatique bidirectionnelle acteurs↔groupes.
- HotReload : Activé pour css, scss, hbs, json dans
system.json.
English Summary
Vermine 2047 is a French post-apocalyptic TTRPG. This is an unofficial Foundry VTT system (v14).
- 4 actor types: character, npc, group, creature
- 12 item types: item, weapon, defense, vehicle, ability, specialty, background, trauma, evolution, rumor, target, rite
- Dice: d10 success-counting with totem domains, Effort rerolls, Dice So Nice! 3D integration
- Sheets: AppV2 with tab navigation, edit/play mode toggle
- Bilingual: FR/EN interface
Licence
VERMINE 2047, Un jeu de Julien Blondel
© 2023 Studio Agate TOTEM System
© 2023 Julien Blondel Tous droits réservés