2 Commits

5 changed files with 109 additions and 16414 deletions
+1
View File
@@ -22,3 +22,4 @@ scss_old/
# Fichiers CSS générés # Fichiers CSS générés
css/vermine2047.*.css css/vermine2047.*.css
!css/vermine2047.css !css/vermine2047.css
regles/
+108 -49
View File
@@ -1,61 +1,120 @@
# Vermine 2047 System # Vermine 2047 — Foundry VTT System
![Foundry v14](https://img.shields.io/badge/Foundry-v14-blue)
![Version](https://img.shields.io/badge/version-0.1.13-green)
##TODO 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).
### fiche de perso Bilingual **FR/EN** interface.
- [X] création de spécialitées depuis le (+) des compétences ---
- [X] fixer les cases hexas , comprtement chelou , piste = un click à l'air d'envoyer 2 update, verifier le onChange
- [X] dialog d'edition des min-max
### fiche de groupe ## Actor Types
- [X] pas encore penché dessus
#### Members et encounters | Type | Sheet | Description |
|------|-------|-------------|
- [X] faire une classe GroupLink pour avoir les actors en objets dans les array group.members[], group.encounters[], et character.encounters[], | **character** | AppV2 | Player character with skills, abilities, totem, equipment |
- [X] faire une fonction sur le Hook.onUpdateActor => update des groupes dans characters, update des encounters et members dans groups | **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 |
### fiche de pnj créature ## Item Types
- [X] à faire,
- [X] lister les gabarit/taille/roles(creatures) et menace/experience/role(pnj)... stocker les modifs dans CONFIG.VERMINE,
| 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) |
### les jets de dés ## Dice System
- [X] redesign de rollDialog => `<details>+<sumary>`=> rendre moins dense
- [X] envoyer les spécialités utilisables au rollDialog
- [X] envoyer les items utilisables au rollDialog
- [X] gérer le fait de choisir quel totem garder : recalcul des réussites
- [X] refacto des template chat de roll
- [X] gérer les dés de totems humains et adapté : couleur différente/double succès +update actor
- [X] gérer les rerolls depuis chat(cf noc)
- [X] gérer les rerolls après le jet en fonction du score d'effort et de la carac
- [X] faire l'update l' l'actor juste après s'etre accorder des rerolls, et avoir utiliser le sang-froid
- [X] update des reserves de sang-froids lors de jets
- [X] ajout des domaines de prédilections
- [X] gérer le dés en +/- selon l'influence du totem adapté ou humain selon les domaines
- [X] gérer les réussites auto
- [X] gérer les seuils auto si compétence non maitrisée
### le combat - **d10-based success counting**: `Xd10cs>=N`
- [X] modifier la difficulté en fonction de l'état du combatant /offensif/actif/passif/ - 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`
### les items ---
- [X] ajouter apprentissage aux abilities
- [X] passer le type d'arme en select/options ## Architecture
- [X] ajouter handicap de rareté
- [X] ajouter pour items Item "competence nécessaire" ```
- [X] gérer les rolls d'items dans le chat module/
- [X] repasser sur les différents itemTypes et sheets ├── vermine2047.mjs # Entry point (Hooks.once init)
- [X] verifier le selector de traits (trait pratique cf : msg pretre) ├── models/ # DataModels (Foundry v2 TypeDataModel)
- [X] construire une selecteur de traits, traits= CONFIG.VERMINE.traits │ ├── actor/ # character.mjs, npc.mjs, group.mjs, creature.mjs
traits:[ │ └── item/ # All 12 item types
key:{ ├── documents/ # VermineActor, VermineItem
name:string, ├── applications/
description:string, │ └── sheets/ # AppV2 sheets per type
value:number ├── system/
} │ ├── config.mjs # CONFIG.VERMINE (totems, traits, skills…)
] │ ├── roll.mjs # VermineUtils.roll()
- [X] ajouter des dégats sur chaques fiches item │ ├── 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` → custom `VermineCombatTracker`
## Commands
```sh
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 `init` hook, register `CONFIG.Actor.dataModels.*` and `CONFIG.Item.dataModels.*` **before** setting `CONFIG.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 run `pullYAMLtoLDB` to compile to LevelDB.
- **CSS**: Declared in `system.json` styles — do **not** inject `<link>` manually.
- **ESLint**: ~350 rules. Run `npx eslint module/` before committing. No `console.log` (use `console.error` sparingly).
- **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.
Binary file not shown.
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff