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/
+107 -48
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 |
|------|-------|-------------|
| **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 |
- [X] faire une classe GroupLink pour avoir les actors en objets dans les array group.members[], group.encounters[], et character.encounters[], ## Item Types
- [X] faire une fonction sur le Hook.onUpdateActor => update des groupes dans characters, update des encounters et members dans groups
### fiche de pnj créature | Type | Use |
- [X] à faire, |------|-----|
- [X] lister les gabarit/taille/roles(creatures) et menace/experience/role(pnj)... stocker les modifs dans CONFIG.VERMINE, | **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
### les jets de dés - **d10-based success counting**: `Xd10cs>=N`
- [X] redesign de rollDialog => `<details>+<sumary>`=> rendre moins dense - Difficulty = number of successes required
- [X] envoyer les spécialités utilisables au rollDialog - Totems give domain bonuses (human/adapted dice)
- [X] envoyer les items utilisables au rollDialog - Rerolls via Effort and Sang-froid (Composure)
- [X] gérer le fait de choisir quel totem garder : recalcul des réussites - Automatic successes and failure thresholds
- [X] refacto des template chat de roll - **Dice So Nice!** 3D dice integration with custom d10 face images
- [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 ### Initiative
- [X] modifier la difficulté en fonction de l'état du combatant /offensif/actif/passif/ Formula: `(@abilities.reflexes.value + @skills.alertness.value)d10cs>=@combatStatus.difficulty`
---
### les items ## Architecture
- [X] ajouter apprentissage aux abilities
- [X] passer le type d'arme en select/options ```
- [X] ajouter handicap de rareté module/
- [X] ajouter pour items Item "competence nécessaire" ├── vermine2047.mjs # Entry point (Hooks.once init)
- [X] gérer les rolls d'items dans le chat ├── models/ # DataModels (Foundry v2 TypeDataModel)
- [X] repasser sur les différents itemTypes et sheets │ ├── actor/ # character.mjs, npc.mjs, group.mjs, creature.mjs
- [X] verifier le selector de traits (trait pratique cf : msg pretre) │ └── item/ # All 12 item types
- [X] construire une selecteur de traits, traits= CONFIG.VERMINE.traits ├── documents/ # VermineActor, VermineItem
traits:[ ├── applications/
key:{ │ └── sheets/ # AppV2 sheets per type
name:string, ├── system/
description:string, │ ├── config.mjs # CONFIG.VERMINE (totems, traits, skills…)
value:number │ ├── roll.mjs # VermineUtils.roll()
} │ ├── fight.mjs # Combat system, VermineCombat, VermineCombatant
] │ ├── functions.mjs # Shared helpers (skill scores, etc.)
- [X] ajouter des dégats sur chaques fiches item │ ├── 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