- 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>
- Ajout clés i18n CELESTOPOL.Wound.* (anodin, dérisoire, négligeable…)
→ corrige l'affichage brut des clés dans la fenêtre de jet
- Suppression du setting 'autoWounds' (mort-né, le malus est toujours appliqué)
- Le malus de blessures est inclus automatiquement dans tous les jets
via getWoundMalus() → prepareDerivedData() → blessures.lvl
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Les niveaux sont maintenant calculés automatiquement dans prepareDerivedData()
plutôt que stockés indépendamment — décocher une case met correctement lvl à jour.
Suppression des inputs manuels lvl dans le template (inutiles car dérivés).
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Hook 'ready' (GM uniquement) supprime les items dont le type n'est
plus enregistré (ex: 'attribute' de l'ancienne version)
- Évite l'erreur 'type X is not a valid type for Item Document class'
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Déplace la logique JS (update, show/hide puiser-row) du <script> inline
vers le callback render: de DialogV2.wait() — les scripts inline ne
s'exécutent pas via innerHTML dans Foundry v13
- Supprime hasMalus du dialogContext (plus nécessaire)
- Le bloc Puiser s'affiche dynamiquement dès que modifier ou aspect < 0
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Règle : le joueur peut ignorer tous les malus actifs contre une case de Spleen.
- roll.mjs : checkbox puiserRessources ; ignore woundMalus, modifier négatif
et aspectMod négatif ; incrémente system.spleen.lvl +1 après le jet
- roll-dialog.hbs : bloc rouge foncé visible si woundMalus < 0 ; preview mis à jour
- chat-message.hbs : bandeau '💪 Ressources puisées' si utilisé
- roll.less : .form-puiser-row, .used-info.used-puiser
- lang/fr.json : Roll.puiser/puiserDesc/usedPuiser
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Règle : si Fortune > 0, le joueur peut cocher 'Fortune' pour lancer
1d8 + 8 au lieu de 2d8 (contraint les probabilités vers le haut).
- character.mjs : passe fortuneValue dans roll.prompt()
- roll.mjs : checkbox Fortune, formule 1d8 + 8 + totalModifier si cochée
- roll-dialog.hbs : bloc Fortune (visible si fortuneValue > 0), preview mis à jour
- chat-message.hbs : affiche '+8' dans la zone dés, ligne formule avec badge Fortune
- roll.less : styles .form-fortune-row, .fl-mod.fortune, .fortune-fixed-badge
- lang/fr.json : Roll.fortune/fortuneBonus/fortuneFixed/usedFortune
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Le total Foundry incluait skillValue + woundMalus mais la décomposition
ne les montrait pas, ce qui rendait le total incompréhensible.
- _getChatCardData : passe skillValue dans le contexte
- chat-message.hbs : affiche skillValue (titre tooltip) et woundMalus
séparément dans la ligne 'diceSum + skillValue ± woundMalus ± modifier ± aspectMod = total'
- lang : ajoute Roll.skillValue
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- roll.mjs : passe modifierChoices dans le contexte du dialogue
- roll-dialog.hbs : <select> pour modifier et aspectModifier (-4..+4)
- roll.less : select inclus dans la règle width:100% du form-two-col
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Remplace le texte orange sur fond beige par un badge vert sombre/fond léger,
plus lisible. Malus en rouge sombre sur fond rouge clair.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Classes .anomaly-body/.anomaly-section/.anomaly-section-title/.anomaly-editor-wrap
promues au niveau partagé (.fvtt-celestopol.item)
- Templates equipment/weapon/armure/aspect utilisent ces classes exactes
- Suppression des anciens mixins item-body-mixin etc.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- TYPES.Item.weapon = 'Arme', TYPES.Item.armure = 'Armure' dans fr.json
- Hook preCreateItem : nom par défaut = label du type pour tous les items
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
prepareDerivedData() calcule désormais :
- skill.value = count(level1..level8 cochés) pour chaque domaine
- faction.value = count(level1..level9 cochés) pour chaque faction
- initiative recalculée après (dépend de mobilite.value et inspiration.value)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Suppression du bloc 'Anomalie' (type + valeur) du header
- Attributs (Entregent/Fortune/Rêve/Vision) fusionnés sur la même ligne
que l'initiative via .header-stat commun
- CSS : remplacement .perso-attributs/.perso-attr par .header-stat unifié
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
.anomaly-content avait background quasi-transparent (crème) avec
var(--cel-orange-light) illisible. Passage au fond var(--cel-green-dark)
et texte crème pour les labels/chips, cohérent avec le reste du bloc.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
La barre .anomaly-skills-bar avait un fond semi-transparent sur fond crème
ce qui rendait le texte orange illisible. Passage à fond vert foncé
(cohérent avec le header) + texte crème pour les chips.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
SYSTEM.MOON_DICE_PHASES a été supprimé lors du refactoring 2d8.
Remplacement du setting 'defaultMoonPhase' (String + choices) par
'rollMoonDieByDefault' (Boolean) cohérent avec la nouvelle mécanique.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Ajout fond crème + bordure sur .roll-form-rows pour délimiter
visuellement la zone de saisie du formulaire de jet.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>