68b3079da8
Corrections majeures : - HamalronTirageTarot extends Roll (évaluation des jets fonctionnelle) - Correction du nom de classe Langue (HamalronFaction -> HamalronLangue) - Création du template tab-navigation.hbs manquant - Type acteur 'character' -> 'personnage' dans _preCreate Types d'items corrigés (anglais -> français) : - weapon -> arme, armor -> armure, equipment -> equipement - Suppression des types inexistants (deal, malefica, ritual, perk) Modèles : - cost -> cout (armure, equipement) - Tarot : default -> initial - Sortilege : LOCALIZATION_PREFIXES corrigé - Constantes CHOICE_ADVANTAGES_DISADVANTAGES et ATTACK_MODIFIERS ajoutées - ATTACK_MODIFIERS supprimé (plus utilisé) Templates alignés sur les modèles réels : - enemy-trait : suppression champs manquants (trauma, stats, domain...) - personnage-equipement : champs alignés sur arme/armure/equipement - personnage-sortileges : suppression domain/level/rituals - enemy-main : suppression stats et flavorText - base-actor : suppression mortality, toChat limité aux tarots Jets de compétence : - Égalité = réussite (>= au lieu de >, conforme aux règles p.155) - Comparaison robuste des cartes de succès (via String()) Le Mat : - Les autres joueurs peuvent renouveler leur main (règle p.151) findTarotItem : recherche dans game.items puis compendiums await manquants ajoutés sur saveDeckState() AGENTS.md créé
2.5 KiB
2.5 KiB
AGENTS.md — fvtt-hamalron
Foundry VTT game system (not a module) for Hamalron JDR, a French-language TTRPG.
System ID: fvtt-hamalron · Compatible FVTT v13–v14 · Language: French only (lang/fr.json)
Architecture
| Layer | Location | Notes |
|---|---|---|
| Entrypoint | fvtt-hamalron.mjs |
ES module, loaded via system.json → esmodules |
| Models | module/models/*.mjs |
12 data models (personnage, pnj, arme, armure, competence, equipement, faction, langue, peuple, region, sortilege, tarot) |
| Documents | module/documents/*.mjs |
Actor, Item, ChatMessage, Roll (tirage-tarot) |
| Sheets | module/applications/sheets/*.mjs |
App V2 sheets, one per item/actor type + base classes |
| Config | module/config/system.mjs |
Exposes globalThis.SYSTEM with all game constants |
| Styles | styles/*.less → compiled to css/fvtt-hamalron.css |
|
| Templates | templates/*.hbs |
Handlebars partials |
| Tarot deck | module/applications/tarot-deck-manager.mjs |
Singleton manager, Fisher-Yates shuffle, GM-only |
Commands
# Build CSS (LESS → CSS)
npx gulp css # one-shot compile
npx gulp # default: compile + watch
Linting
npx eslint .
Uses ESLint 9 flat config (eslint.config.mjs) with Prettier + JSDoc plugins. Rules: semi: never, quotes: double, indent: 2.
Compendium pack management
Pack data lives in packs-system/hamalron-items/ (LevelDB format, used by Foundry at runtime).
The repo has @foundryvtt/foundryvtt-cli and tools for YAML ↔ LevelDB conversion:
tools/packCompendiumsToDist.mjs— compiles frompacks_src/(YAML) topacks/(.db)tools/unpackCompendiumsFromDist.mjs— extracts frompacks/(.db) topacks_src/(YAML)
Note: package.json scripts reference pushLDBtoYML/pullYMLtoLDB — these files don't exist yet. Use the tool files directly: node tools/packCompendiumsToDist.mjs / node tools/unpackCompendiumsFromDist.mjs after creating the source directories.
Gotchas
- No tests exist anywhere.
- No CI/CD (no
.github/directory). - No typechecking — plain JS with JSDoc comments.
- The
system.jsonhotReloadconfig referenceslang/en.jsonandacks.css— these files do not exist. Onlylang/fr.jsonis shipped. - All actor/item sheets are App V2 (unregistered core V1 sheets).
- Tarot deck state is persisted in a world-scope setting
tarotDeckState(not aCardsdocument). - Socket event handler is a no-op (
module/socket.mjs). - Initiative formula:
1d6(no decimals).