Commit Graph
191 Commits
Author SHA1 Message Date
uberwald 18180a8445 fix: apprentissage de Groupe - dés dépensés en cas d'échec et gardes
Release Creation / build (release) Failing after 1m40s
- Les Dés d'Expérience du Groupe sont désormais dépensés que le jet
  d'apprentissage soit réussi ou raté (cohérent avec l'apprentissage
  de personnage et les règles ; le décompte est sorti de #applySuccess).
- Garde sur le type Capacité : si aucune Capacité de Groupe n'est
  sélectionnée, le jet est bloqué avec un avertissement (avant, il
  marquait learned.ability et dépensait les dés sans rien apprendre).
- Limites de Capacités de Totem (personnage) : seules les Capacités du
  Totem courant du personnage comptent dans les compteurs
  3×N1 / 1×N2-N3 / max 5.
14.0.9
2026-08-05 14:15:11 +02:00
uberwald 3235017a4c fix: fiche Communauté - doublons de champs (Origine, Effectif)
- Origine était rendue à la fois dans l'en-tête (main) et l'onglet
  Identité : deux inputs du même nom, soumis en tableau puis concaténés
  avec une virgule à chaque sortie de champ.
- Effectif (population) était aussi dupliqué entre l'en-tête et
  l'onglet Domaines.
- Garde l'Origine dans l'en-tête, l'Effectif dans l'onglet Domaines
  (regroupé avec la Taille) ; plus aucun champ texte/nombre dupliqué.
2026-08-05 13:58:37 +02:00
uberwald b2a044640c feat: Instincts et Interdits du Totem sur la fiche de Groupe
- Onglet Info du Groupe : affichage des Instincts/Interdits de base du
  Totem (TOTEMS.*.instincts / bans), comme sur la fiche de personnage.
2026-08-05 13:54:00 +02:00
uberwald a13b0fc2d6 fix: affichage des Instincts et Interdits du Totem sur la fiche PJ
- Helper smarttl : honore la clé passée en 3e argument (défaut "name") ;
  il renvoyait systématiquement le nom du Totem, donc Instincts et
  Interdits n'apparaissaient pas (description et autres clés aussi).
- Onglet Totem (AppV2 et legacy) : libellés localisés
  IDENTITY.instincts / IDENTITY.prohibits au lieu de textes codés en dur.
2026-08-05 13:06:57 +02:00
uberwald 0ad240bd03 feat: section Rites chamaniques sur la fiche de personnage
- Nouveau booléen system.identity.chaman (statut de Chaman).
- Onglet Totem : case à cocher « Chaman » toujours visible ; quand
  elle est cochée, la section « Rites chamaniques » apparaît avec la
  liste des items de type rite maîtrisés (création, édition,
  suppression en mode édition).
- i18n FR/EN (VERMINE.chaman).
2026-08-05 12:05:31 +02:00
uberwald 9d36b92fa9 feat: nouveaux apprentissages (Capacités de Totem, Historique, Réputation) et expérience de Groupe
- Dialogue d'apprentissage personnage : 4 nouveaux types d'achat.
  - Capacité de Totem : options filtrées (mode de jeu, niveau de
    groupe, totem, non-apprises), difficulté = valeur d'Apprentissage,
    limites 3×N1 / 1×N2-N3 / max 5, marque system.learned de l'item
    (convention type character) et learned.ability du personnage.
  - Élément d'Historique : difficulté 9, handicap 1 si astérisque
    (background.asterisk), marque learned.background + item.
  - Test de Réputation (réduire/augmenter) : réduire = difficulté
    10 − score visé (−1 pt), augmenter = difficulté = réputation
    actuelle (+1 par succès), bornes 0-10, marque learned.reputation.
  - Évolution : option Dé de Totem Adapté ×2 quand Adapté > Humain
    (1D remplacé par un dé adapté compté ×2 via VermineUtils.roll).
- Correction règles : les Dés d'Expérience sont dépensés même en cas
  d'échec du jet d'apprentissage (décompte hors #applySuccess).
- Expérience de Groupe : nouveau dialogue d'apprentissage de Groupe
  (niveau, réserve, capacité de totem), réserve d'expérience et phase
  dans system.experience, boutons sur la fiche Groupe, reset des
  limites par phase (level/reserve/ability).
- Phase d'expérience : filtre par groupe sélectionné, associe chaque
  personnage à son premier groupe, reset des limites de tous les
  nouveaux types d'apprentissage.
- Corrections : l'attaque de créature n'ajoute plus la Réaction du Rôle
  (regles_creatures.txt), suppression de la case XP des en-têtes PJ
  (legacy et AppV2).
- Divers : .eslintrc.js (règles inexistantes/obsolètes retirées),
  libellé jaune de dialogue en couleur chitine, i18n FR/EN, chips
  « appris » sur l'onglet expérience du personnage.
2026-08-05 11:56:59 +02:00
uberwald d0373fab5a feat: capacités de créature, blessures séquentielles et refonte fiche Groupe
- Nouvel item Capacité de créature (creaturecapacity) : DataModel, fiche
  AppV2, chat card, types Base/Survie/Cauchemar/Apocalypse, liste sur
  l'onglet Informations de la créature avec drag&drop et post au chat.
- Blessures : coches séquentielles respectant la gravité (onClickWound),
  malus de blessure -1D/-2D/-3D appliqué aux jets (Règles p.42),
  montée en gravité automatique si les cercles sont pleins.
- Fiche Groupe : objectifs majeurs/mineurs éditables, liste de membres
  simplifiée, notes de voyage (roadNotes), totem qui remplit
  instinct/interdits, refonte visuelle des onglets.
- Créature : Réaction lançable, seuils/cercles de blessures corrigés
  (Taille cumulée, Groupe sans seuil), libellés Taille/Meute.
- Corrections : icône de carte de chat plafonnée à 64px, slash orphelin
  d'entrave à 0, notes de matériel du Groupe éditable (formInput),
  bonus de Réaction non double-compté.
- Divers : suppression des captures de débogage, licence README.
2026-08-05 09:38:36 +02:00
uberwald cf905cdcfb feat: fiche PNJ (profil + niveaux) et passage du véhicule en acteur
Release Creation / build (release) Failing after 1m17s
14.0.8
2026-08-04 20:34:20 +02:00
uberwald ea3322e843 feat: fiche véhicule (caractéristiques) et capacités de totem de groupe
Release Creation / build (release) Failing after 1m24s
- véhicule : fiabilité 1-10, type véhicule/monture, distance, vitesse (croisière/pointe), entretien, réserve d'effort
- nettoyage du tableau d'entretien à la soumission
- fiche de groupe : section capacités de totem (création type totem + liste)
14.0.7
2026-08-04 17:20:37 +02:00
uberwald 6247f65590 feat: fiche de Communauté (socle)
- acteur community (identité, géographie, histoire, objectifs, taille/effectif)
- 4 Domaines x 2 jauges avec états (Crise/Bas/Stable/Opulent), moral, réserves
- onglets Identité / Domaines / Ressources, édition ProseMirror (formInput)
- header avec fond, totem, niveau, effectif ; icône par défaut
- libellé du type via typeLabels (sans écraser TYPES.* du core)
2026-08-04 17:20:29 +02:00
uberwald 8d8428cad3 feat: gérer les armes des créatures (morsure, griffes, piqûre…)
- gestion des armes dans l'onglet Combat des créatures (équipement + liste)
- dégâts de l'arme équipée utilisés à la place de computed.damage (+ Vigueur+)
- correction du libellé Vigueur+ (ADVERSITY.vigor au lieu de VERMINE.vigor)
2026-08-04 14:25:27 +02:00
uberwald 9cf7d9ac68 feat: système d'expérience et transferts de dés d'expérience
Release Creation / build (release) Failing after 1m20s
- phase d'expérience (récompenses collectives et individuelles, objectifs, traumatisme)
- jets d'apprentissage (compétences, spécialités, caractéristiques, réserves, évolution)
- bonus de réserve acquis par apprentissage intégré au max dérivé
- transferts de dés individuels <-> groupe dans le dialogue de jet
- onglet expérience sur la fiche personnage
- guide utilisateur combat (docs/user/COMBAT.md)
2026-08-04 14:14:09 +02:00
uberwald f2c8cfe246 feat: équipement, échanges de coups et améliorations des fiches
- équipement des armes et protections (champ equipped, liste des équipés, toggle)
- échanges de coups automatisés (attaque/défense/résolution/blessures dans le chat)
- dialogue d'attaque par type (personnage/PNJ/créature), portées et difficultés
- conservation du scroll des fiches lors des modifs (option scrollable + classe active)
- verrouillage des compétences PNJ en mode jeu
- corrections review combat (défenseur, difficulté >10, multi-cibles, permissions)
2026-08-04 14:14:03 +02:00
uberwald 31f2f4530c feat: améliorer les fiches (tests PNJ/créature, message de jet, compétences, créatures)
Release Creation / build (release) Failing after 1m23s
14.0.5
2026-08-04 00:49:37 +02:00
uberwald 9c7ebc6df9 Sync compendiums
Release Creation / build (release) Failing after 1m24s
14.0.4
2026-08-03 21:26:03 +02:00
uberwald 05f668acf0 ci: compiler les compendiums lors de la release
Le workflow Gitea zippait packs/ sans recompiler les LevelDB depuis les
sources YAML (gitignorées en CI). Ajoute npm run pullYAMLtoLDB entre le
build CSS et le zip pour embarquer des compendiums à jour dans la release.
2026-08-03 20:27:27 +02:00
uberwald 10b01614e6 chore: regénérer les compendiums depuis le monde
Extraction complète des packs vers src/packs/*.yml après mise à jour des
compendiums dans le monde. Ajoute les nouveaux items et rites, met à
jour le contenu existant, et renomme le pack Historiques en 'Historiques
& Création'.
2026-08-03 18:49:06 +02:00
uberwald 89d9d71395 style: ajuster la mise en page des fiches
Release Creation / build (release) Failing after 1m51s
Réduit la taille des polices d'en-tête et du logo, retravaille la
disposition des totems, et double la hauteur des zones Notes et
Relations dans l'onglet Histoire.
14.0.3
2026-08-03 15:59:57 +02:00
uberwald 1e298ed809 fix: éviter le double affichage des dés 3D
Le message de jet n'attache plus la liste des dés : Dice So Nice
réaffichait le jet via son hook updateChatMessage en plus de l'appel
explicite à showDiceSoNice, provoquant une double animation.
2026-08-03 15:59:51 +02:00
uberwald 4ffaebf52b feat: lancer les armes via la boîte de dialogue avec compétence
Ajoute un champ compétence au modèle arme, un sélecteur dans la fiche
d'arme et ouvre la boîte de dialogue de jet pré-remplie au clic sur
l'icône dé (réservé aux acteurs disposant d'aptitudes/compétences).
2026-08-03 15:59:47 +02:00
uberwald de7691c4dc fix: transmettre le handicap au message de jet (succès requis) 2026-08-01 21:35:48 +02:00
uberwald c87b25fbaf fix: aligner les jets et la boîte de dialogue avec les règles 2026-08-01 21:33:38 +02:00
uberwald 6ce51ed8cf fix: réparer les contrôles du combat tracker et la pause (v14) 2026-08-01 21:33:38 +02:00
uberwald df852f17d1 fix: aligner le JS avec l'API Foundry v14
- effects.mjs: remove e._getSourceName() (removed in v14, now a getter)
- fight.mjs: convert VermineCombatTracker from AppV1 (get template/getData)
  to AppV2 PARTS + _prepareContext/_prepareTurnContext
- fight.mjs: VermineCombat.rollInitiative v14 options-object signature
- hooks.mjs: renderPause -> renderGamePause; getSceneControlButtons now
  uses controls.tokens and tools record (v14 names/structure)
- roll.mjs: ChatMessage.create uses rolls array (v14 removed 'roll' key)
- item.mjs: getRollData returns system when no actor (v14 expects object)
- vermine2047.mjs: correct unregisterSheet API for ActorSheetV2
- base-item-sheet.mjs: call super._onRender
2026-08-01 21:33:38 +02:00
uberwald 8916600bf6 chore: ignorer le répertoire local .swival/ 2026-08-01 21:33:38 +02:00
uberwald 0189f62734 fix: importer foundry.applications.api et utiliser _onRender dans les pickers AppV2
- applications.mjs: import HandlebarsApplicationMixin/ApplicationV2 from
  foundry.applications.api (they are not globals in Foundry v14), fixing
  'ReferenceError: HandlebarsApplicationMixin is not defined'
- Replace activateListeners(html) with _onRender(context, options) and
  this.element — AppV2 does not call activateListeners
- TraitSelector: remove recursive render(true) in _validateTraits
- fight.mjs: VermineCombatTracker same _onRender conversion
2026-08-01 21:33:38 +02:00
uberwald 29b6a98c89 Fix dummy bug
Release Creation / build (release) Failing after 1m46s
14.0.2
2026-07-17 22:09:53 +02:00
uberwald b1d73e6b08 chore: remove CHANGELOG.md, add LICENSE.md (CC BY-NC-SA 4.0) 2026-07-12 22:32:48 +02:00
uberwald 509a5efd9d Actualiser README.md 2026-07-12 22:31:15 +02:00
uberwald fea7c1c271 docs: translate README to French with English summary 2026-07-12 22:30:16 +02:00
uberwald 412573fc4d chore: stop tracking regles/ (keep local) 2026-07-12 22:29:00 +02:00
uberwald 47e2ebe45b docs: rewrite README with system architecture, types, commands 2026-07-12 22:28:16 +02:00
uberwald 90de66d668 fix: Dice So Nice import v14 compat, override Foundry text colors for readability
Release Creation / build (release) Failing after 1m28s
- hooks.mjs: replace static dice-so-nice import with dynamic import
  using game.modules.get('dice-so-nice').id (path removed in v14)
- hooks.mjs: fix permission condition (|| -> &&), jQuery -> vanilla JS
- less/base.less: override --color-text-* and --button-text-color
  for both .themed.theme-dark (AppV2) and body.theme-dark (legacy apps)
- target #settings-config buttons + labels + hints for dark grays
14.0.1
2026-07-12 22:05:45 +02:00
uberwald dcc24b47ec GItea releas
Release Creation / build (release) Failing after 1m16s
14.0.0
2026-06-06 22:53:09 +02:00
uberwald c23de0ea66 Fix apv2, WIP 2026-06-06 22:37:29 +02:00
uberwald c571e6a209 Fix: Correction des exports/imports APPV2 et clés i18N manquantes
- Standardisation des exports de sheets sur 'export default class' (sauf base-item-sheet)
- Correction des imports pour utiliser des imports par défaut
- Correction de _module.mjs pour exporter les classes correctement
- Suppression des redéfinitions de changeTab dans group-sheet et npc-sheet
- Ajout des clés i18N manquantes: VERMINE.reserve, VERMINE.Sheet.*
- Correction de l'export de VermineBaseItemSheet (export nommé)

Corrige l'erreur 'Receiver must be class VermineGroupSheetV2' et aligne sur fvtt-hamalron et fvtt-celestopol

Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
2026-06-06 18:32:03 +02:00
uberwald 2691ff521f New fixes around sheets 2026-06-06 17:56:50 +02:00
uberwald 2143bcc8db Actor sheet -> working !!!, not WIP for rolls 2026-06-06 16:25:00 +02:00
uberwald 891769816a Actor sheet -> working !!! 2026-06-06 15:48:18 +02:00
uberwald 9b77a0c552 Fix apv2, WIP 2026-06-06 10:21:24 +02:00
uberwald 6cec1da910 UPdate gitgnore 2026-06-05 00:45:20 +02:00
uberwald 1b66c24258 fix(sheets): use foundry.utils.duplicate instead of global duplicate
Foundry V11+ no longer exposes 'duplicate' as a global function.
It must be accessed via foundry.utils.duplicate.

Fixed in:
- actor-sheet.mjs:140
- creature-sheet.mjs:148

This resolves the ReferenceError: duplicate is not defined error
when creating items on actor sheets.

Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
2026-06-04 23:25:11 +02:00
uberwald dfc9b823a4 fix(hooks): remove auto editMode flag setting to prevent phase errors
The createActor hook was causing 'ActiveEffect application phase already
completed' errors because setFlag() triggers actor updates which call
prepareData() -> prepareEmbeddedDocuments() -> applyActiveEffects().

Even with setTimeout delays, the error persisted. The cleanest solution is
to remove the auto-setting entirely. Users can enable edit mode manually
via the checkbox in the character sheet (which is preserved).

This prevents the error on:
- Character sheet profile editing
- Creature sheet creation
- Group sheet profile editing

Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
2026-06-04 23:23:11 +02:00
uberwald 02aabbea36 fix(hooks): delay editMode flag setting to avoid phase error on createActor
The createActor hook was calling actor.setFlag() immediately, which triggered
updateActor -> prepareData -> prepareEmbeddedDocuments() -> applyActiveEffects().

Since the actor had already gone through data preparation during creation,
the effects had already been applied, causing the 'phase already completed' error.

Solution: Use setTimeout(..., 0) to defer the flag setting until after the
current preparation cycle is complete.

Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
2026-06-04 23:20:40 +02:00
uberwald 6fbc7e7864 fix(actor): check applicationPhase to prevent double effect application
The previous solution used a flag, but it didn't persist across preparation cycles.
This solution checks this.effects.applicationPhase directly.

If phase is 'initial' or 'final', it means effects are already being applied,
so we skip the super.prepareEmbeddedDocuments() call to avoid the
'phase has already completed' error.

Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
2026-06-04 23:20:23 +02:00
uberwald 308073877b fix(actor): remove duplicate prepareBaseData method
The previous commit accidentally created a duplicate prepareBaseData() method.
This commit removes the duplicate and keeps only the version with proper
initialization of wound data and combatStatus.

Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
2026-06-04 23:15:23 +02:00
uberwald 81adfb7ffd fix(actor): prevent double ActiveEffect application in prepareData cycle
- Move wound data initialization to prepareBaseData() (before effects are applied)
- Initialize combatStatus in prepareBaseData() to prevent undefined errors
- Add protection against recursive effect application in prepareEmbeddedDocuments()
- This prevents the 'ActiveEffect application phase has already completed' error

The error occurred because modify data in prepareDerivedData() (like combatStatus)
could trigger observers that try to re-apply effects during the same cycle.

By initializing all required data in prepareBaseData() and protecting
prepareEmbeddedDocuments() from recursive calls, we ensure effects are
applied exactly once per preparation cycle.

Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
2026-06-04 23:14:38 +02:00
uberwald b85efd663b fix(templates): restore missing {{/if}} closure in character-id.hbs
The previous commit accidentally removed the {{/if}} that closes the
{{#if system.identity.relations}} block at line 102, causing a
Handlebars parse error: 'Expecting OPEN_INVERSE_CHAIN, INVERSE, OPEN_ENDBLOCK, got EOF'

Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
2026-06-04 23:06:32 +02:00
uberwald 3db03f5159 fix(templates): complete revision of actor templates to remove duplicates and fix inconsistencies
- Fixed grid-2 to grid-2col CSS class usage
- Replaced improper <p><a> tags with <div><a> in item lists (actor-weapons, actor-defenses, group-items, group-vehicles)
- Fixed typos: smarttlk -> smarttl, compétence -> Compétence
- Fixed duplicate class attributes
- Standardized HTML comments to Handlebars comments ({{!-- --}})
- Added missing localizations for Character and Skills headers
- Removed orphan {{/if}} tag in character-id.hbs
- Created npc-skill-category.hbs partial to eliminate 150+ lines of duplicated skill category code in actor-npc-sheet.hbs
- Created item-list.hbs partial for reusable item list display
- Fixed html.find(...).forEach error in roll.mjs by ensuring jQuery object
- Added .history/ to .gitignore

Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
2026-06-04 22:58:46 +02:00
uberwald 30d6f71fc7 fix: Correct critical bugs and complete Creature/Group DataModel implementation
- Fix TypeError: controls.find is not a function in hooks.mjs
- Fix undefined 'npc' variable in applications.mjs
- Fix CONFIG.VERMINE.model undefined by checking game.system.template existence
- Fix TypeError: html.find(...).forEach is not a function in roll.mjs
- Fix Cannot set properties of undefined (setting 'initial') in actor.mjs
- Fix Cannot read properties of undefined (reading 'difficulty') in actor.mjs
- Fix ActiveEffect application phase 'initial' already completed by adding combatStatus to base template
- Fix Missing helper: 'select' in roll-dialog.hbs (removed invalid Handlebars select block)
- Add SIZE_LEVELS labels to creatureSizeLevels config
- Add SIZE_LEVELS translations to fr.json
- Add combatStatus to base actor template
- Convert all .html templates to .hbs for Foundry v14 compatibility
- Update item-sheet.mjs to use .hbs extension
- Update handlebars-manager.mjs to use .hbs for all partials

Complete Vermine2047 Creature and Group sheet implementation:
- Creature: Pattern, Size, Role, Pack with computed values
- Group: Totem, Reserve, Morale, Objectives, Members management
- All templates functional with proper styling

Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
2026-06-04 22:22:52 +02:00