Commit Graph

154 Commits

Author SHA1 Message Date
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
uberwald f9f07cbc7e fix: migrate combat system from d6 to d10 to match official rules
- Change all dice rolls in fight.mjs from d6 to d10
- Implement success counting system (dice >= difficulty) as per Vermine2047 rules
- Add d10 success class to dice that meet or exceed difficulty
- Display success count in confrontation UI
- Update chat message handler to count successes instead of summing dice
- Add comprehensive JSDoc documentation to performTest method
- Add missing French translations for fight tool terms

This corrects a critical inconsistency where fight.mjs was using d6
while the official Vermine2047 rules and the rest of the system (roll.mjs)
use d10 with success counting.

Compatibility: FoundryVTT v11-v14

Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
2026-06-04 16:48:57 +02:00
uberwald 386d80639c code review: fix critical issues and improve code quality
- Fix constructor in rollDialog.mjs (spread operator for options)
- Remove all console.log statements from production code
- Add comprehensive JSDoc comments for all public APIs
- Convert French comments to English for consistency
- Use parseInt with radix parameter (10) throughout
- Replace let with const where appropriate
- Use Set for O(1) lookups in group-link.mjs methods
- Use spread operators for array cloning
- Optimize removeActorFromAllGroups with Set lookups
- Improve registerHooks with better comments and Set usage
- Simplify roll-message.hbs template logic
- Fix duplicate VERMINE key in lang/fr.json
- Add missing error translations
- Add .eslintrc.js with FoundryVTT-compatible linting config

Compatibility: FoundryVTT v11-v14

Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
2026-06-04 13:33:58 +02:00
uberwald 716c1b49ae Finalisation complète du système Vermine2047 pour FoundryVTT v14
Implémentations majeures:
- Classe GroupLink pour synchronisation bidirectionnelle acteurs↔groupes
- Configuration complète des totems, PNJ et créatures
- Redesign du RollDialog avec interface compacte et sélecteurs
- Bonus/malus par domaine de totem
- Réussites automatiques et seuils auto basés sur niveau de maîtrise
- Choix du totem à garder avec recalcul des réussites
- Conversion tous templates chat cards en .hbs
- Fiches PNJ et Créature avec sélecteurs pour tous les niveaux
- Documentation technique (ARCHITECTURE.md) et utilisateur (GUIDE_UTILISATEUR.md)
- Mise à jour system.json pour compatibilité v14
- Tous les TODOs du README.md complétés

Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
2026-06-04 11:46:40 +02:00
Erwan Lemaire c35e93975b pifpouf 2025-05-02 13:19:49 +02:00
Erwan Lemaire 5889a8111d changement rolldialog 2025-04-17 15:53:34 +02:00
Erwan Lemaire d380efeed5 reprise du projet 2025-04-17 14:55:41 +02:00
rwanoux 62f13c8cc3 Update system.json 2025-04-12 19:09:26 +02:00
rwanoux 7a1ab85d23 Update system.json 2025-04-12 19:08:44 +02:00
rwanoux 45c5396ff4 Update system.json 2025-04-12 19:08:00 +02:00
rwanoux dc621f2223 début des messages d'items 2024-11-26 12:48:27 +01:00
rwanoux 1327f92f41 fix de la config model pour select items et spécialité 2024-11-23 11:52:41 +01:00
rwanoux 9a4a3553d4 styling v0.0.2 2024-11-22 18:18:10 +01:00
rwanoux 1f1198b2d5 passe sur le display des items 2024-11-22 18:18:00 +01:00
rwanoux b478fd7b54 ajout du statut de combat dans fiche perso 2024-11-22 18:17:34 +01:00
rwanoux 299fbcd50d essai de fix du bug des hooks sur messages, suppression des tours 2024-11-22 18:17:10 +01:00
rwanoux 3a53644213 ajout état des items 2024-11-22 18:15:41 +01:00
rwanoux 742f20874c correction pour deprecation 2024-11-22 18:15:24 +01:00
rwanoux 15bb1756ef fixe de la categorie machine 2024-11-22 18:14:52 +01:00
rwanoux 4e654d1855 ajout banniere de packs 2024-11-22 18:14:32 +01:00
rwanoux 3345fcf0f9 ajout packs 2024-11-22 18:14:11 +01:00
rwanoux c5c41a2920 modif template items 2024-11-22 10:55:07 +01:00
rwanoux 2a5c0a2445 ajout de détails aux lignes items 2024-11-22 10:54:24 +01:00
rwanoux a4c07715a0 ajout des valeurs de combatStatus en config et sur perso 2024-11-22 10:53:30 +01:00
rwanoux 2af7b06f9a style 2024-11-22 10:52:25 +01:00
rwanoux d0326bfe30 modif icons 2024-11-22 10:52:14 +01:00
rwanoux d592e7c221 modif formule d'initiative // avec nouvel attr combatStatus 2024-11-22 10:51:59 +01:00
rwanoux caea20665a items defense ok 2024-11-21 10:39:16 +01:00
rwanoux 80277f822f ajout du handicap de rareté 2024-11-20 12:08:03 +01:00
rwanoux 6568eb067f display du combat tracker 2024-11-20 12:07:25 +01:00
rwanoux 56a8e30348 modif icones items 2024-11-20 12:06:41 +01:00
rwanoux daf56b15e7 fix des assets dans les releases 2024-11-20 12:06:19 +01:00
rwanoux 911b0b67e7 adding permission to github action v0.0.1 2024-11-19 06:59:29 +01:00
rwanoux d8cc16526f .gitignore is now working 2024-11-18 16:24:40 +01:00
rwanoux dead9cbec1 .gitignore is now working 2024-11-18 16:21:28 +01:00
rwanoux c0432d1efb traits+debut combat 2024-11-18 16:17:30 +01:00
rwanoux de7cfca093 .gitignore is now working 2024-11-18 09:28:29 +01:00
rwanoux ca816eec2d adding pack tools. 2024-11-18 09:27:33 +01:00