1022597bf8
IMplémentation de la ajorité des remarques de Nepherius
2026-04-06 17:48:30 +02:00
9dbd614c5a
feat: gestion de l'expérience (XP)
...
- Schéma xp dans CelestopolCharacter : actuel (éditable), log[] ({montant, raison, date}), depense (calculé dans prepareDerivedData)
- Bouton 'Dépenser XP' → DialogV2 (montant + raison) : décrémente actuel, logge l'entrée
- Suppression d'entrée de log avec remboursement des points (mode édition)
- Section XP en haut de l'onglet Biographie : compteurs, tableau du log, référentiel des coûts
- i18n : section CELESTOPOL.XP.* complète
- CSS : .xp-section avec compteurs, tableau de log et accordéon de référence
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com >
2026-03-31 00:33:59 +02:00
89d47ba6ec
feat: tests de résistance (2d8+TR, auto-blessure sur échec)
...
- rollResistance(statId) dans character.mjs : formule 2d8 + bonus TR + malus blessures
- Dialog sans Modificateur/Aspect/Lune/Destin/Fortune/Puiser en mode résistance
- Auto-cochage de la prochaine case de blessure sur échec
- Chat message : notification blessure cochée (woundTaken)
- Stat-res cliquable (rollable) en mode jeu dans l'onglet compétences
- base-actor-sheet : routing clic stat-res → rollResistance
- CSS : .resistance-wound-notice
- i18n : resistanceTest, resistanceClickToRoll, woundTaken
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com >
2026-03-29 23:35:38 +02:00
df2ed14f34
Résistance: dérivation automatique depuis les seuils de spécialisation
...
- Ajout resThreshold par domaine dans SKILLS (config/system.mjs)
ame: artifice=5, attraction=2, coercition=3, faveur=6
corps: echauffouree=6, effacement=3, mobilite=2, prouesse=5
coeur: appreciation=6, arts=2, inspiration=3, traque=5
esprit: instruction=2, mtechnologique=6, raisonnement=5, traitement=3
- prepareDerivedData() calcule stats.{stat}.res = +2 par seuil atteint
- Template: résistance non-éditable (span uniquement, valeur dérivée)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com >
2026-03-29 22:55:27 +02:00
d5488516c4
feat: ajoute le champ 'valeur' sur l'item Aspect
...
- DataModel : champ NumberField 'valeur' (entier, min 0, défaut 0)
- Fiche item aspect.hbs : champ valeur dans le header
- Fiche personnage : affiche item.system.valeur dans la liste des aspects
- CSS : .item-value dans cel-item-row (vert, gras) ; .item-header-valeur dans items.less
- i18n : CELESTOPOL.Aspect.valeur
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com >
2026-03-29 19:10:42 +02:00
ad118ae60c
Suppression item Attribut : redondant avec le DataModel personnage
...
- DataModel CelestopolAttribute supprimé (items.mjs)
- CelestopolAttributeSheet supprimée (item-sheets.mjs)
- Imports/registrations retirés (fvtt-celestopol.mjs)
- Section 'Attributs' supprimée de character-competences.hbs
- Action createAttribute + contexte attributes retirés (character-sheet.mjs)
- Template attribute.hbs supprimé
- Clés i18n attribute/attributes/newAttribute supprimées (fr.json)
- Type 'attribute' retiré des htmlFields (system.json)
- htmlFields anomaly corrigés : technique/narratif/exemples
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com >
2026-03-29 16:49:16 +02:00
f9ddcdf9da
Refonte complète du système Anomalies
...
- DataModel : renommage value→level (1-4), ajout usesRemaining (0-4), suppression scores/notes
- Config : ajout ANOMALY_DEFINITIONS avec compétences applicables par type (8 anomalies)
- Fiche item anomalie : header avec level/uses visuels (dots), barre de compétences applicables,
2 onglets Description + Technique/Narratif (suppression onglet Scores)
- Fiche PJ onglet Domaines : bloc anomalie proéminent unique avec:
- Nom + sous-type + icône
- Dots niveau (●●○○)
- Dots usages + bouton Utiliser + bouton Réinitialiser
- Chips des domaines applicables
- Actions : useAnomaly (décrémente usesRemaining), resetAnomalyUses (reset au niveau)
- Contrainte : max 1 anomalie par personnage (drop + createAnomaly)
- Helpers HBS : lte, gte, lt ajoutés
- i18n : nouvelles clés Anomaly.* (level, usesRemaining, use, resetUses, etc.)
- CSS : .anomaly-block sur fiche PJ, dots animés, .anomaly-uses-row sur fiche item
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com >
2026-03-28 18:15:06 +01:00
cff700bd3d
Fix roll dialog CSS + JS: template <div> wrapper, moon-section, selectors
...
- Remplace <form class='roll-dialog celestopol'> par <div class='roll-dialog-content'>
pour éviter les formulaires HTML imbriqués invalides (DialogV2 a son propre <form>)
- Corrige le sélecteur CSS de .roll-dialog.celestopol vers .application.roll-dialog .roll-dialog-content
- Remplace .form-group.form-moon par .moon-section (classe custom) pour éviter
les conflits avec le CSS grid de FoundryVTT standard-form (label 130px de hauteur)
- Met à jour le script JS inline pour utiliser document.querySelector('.roll-dialog-content')
- Ajoute white-space: nowrap sur le label Destin pour éviter le wrapping sur 3 lignes
- Supprime .application.roll-dialog .window-content padding override (remplacé par dialog-content)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com >
2026-03-28 17:21:18 +01:00
ea3064d7a2
fix: tests complets - onglets, message de tchat, scores bonus/malus
...
- Onglets item (Anomalie/Aspect/Attribut): correction tabGroups + data-group sur chaque <a> et <section>
- Onglets acteur (PJ/PNJ): tab.cssClass dans les templates pour l'état actif initial
- Message de tchat: alignement des noms de variables _getChatCardData <-> chat-message.hbs
- actorName, actorImg, success/failure, diceResults, statLabel/skillLabel localisés
- difficultyLabel et moonPhaseLabel localisés depuis SYSTEM
- Dialogue de jet (roll-dialog.hbs): correction noms variables + min/max modificateur
- lang/fr.json: ajout Roll.title, Roll.roll, clés Moon (minuscules), Difficulty (unknown/ardu)
- character.mjs: passage statLabel à CelestopolRoll.prompt()
- global.less: padding + overflow-y sur .tab pour contenu visible
- item-scores.hbs: passage system=system au partial + suppression garde isEditable
- Templates anomaly/aspect/attribute: passage system=system au partial item-scores
- chat-message.mjs: getHTML() → renderHTML() (dépréciation FVTT v13)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com >
2026-03-28 11:09:17 +01:00
64e23271df
feat: implémentation complète du système Célestopol 1922 pour FoundryVTT v13
...
- DataModels (character, npc, anomaly, aspect, attribute, equipment)
- ApplicationV2 sheets (character 5 tabs, npc 3 tabs, 4 item sheets)
- DialogV2 pour les jets de dés avec phase de lune
- Templates Handlebars complets (fiches PJ/PNJ, items, jet, chat)
- Styles LESS → CSS compilé (thème vert foncé / orange CopaseticNF)
- i18n fr.json complet (clés CELESTOPOL.*)
- Point d'entrée fvtt-celestopol.mjs avec hooks init/ready
- Assets : polices CopaseticNF, images UI, icônes items
- Mise à jour copilot-instructions.md avec l'architecture réelle
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com >
2026-03-28 09:28:34 +01:00