# Vermine 2047 — Système Foundry VTT ![Foundry v14](https://img.shields.io/badge/Foundry-v14-blue) ![Version](https://img.shields.io/badge/version-0.1.13-green) Système non-officiel pour le jeu de rôle **Vermine 2047**, univers post-apo français par **Éditions John Doe**. ► 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` → `VermineCombatTracker` personnalisé ## Commandes ```sh 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`, enregistrer `CONFIG.Actor.dataModels.*` et `CONFIG.Item.dataModels.*` **avant** de définir `CONFIG.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 lancer `pullYAMLtoLDB`. - **CSS** : Déclaré dans `system.json` — ne **pas** injecter de `` manuellement. - **ESLint** : ~350 règles. Lancer `npx eslint module/` avant chaque commit. Pas de `console.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 Projet fan non-officiel. L'univers et les marques Vermine 2047 appartiennent aux Éditions John Doe.