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>
- 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>