docs: rewrite README with system architecture, types, commands
This commit is contained in:
@@ -1,61 +1,120 @@
|
|||||||
# Vermine 2047 System
|
# Vermine 2047 — Foundry VTT System
|
||||||
|
|
||||||
|

|
||||||
|

|
||||||
|
|
||||||
##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.
|
||||||
|
|||||||
Reference in New Issue
Block a user