- Réglage monde 'anomaliesImported' (caché) pour import unique
- _setupAnomaliesFolder() : crée dossier 'Anomalies' (Items) + importAll
- Appelé dans le hook ready, GM uniquement, une seule fois
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- aspect.svg : diamant à facettes avec coupe brillant et reflet
- equipment.svg : clé vintage ornée avec tête circulaire et dents géométriques
- preCreateItem hook : définit img par défaut par type d'item
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Select situationMod (-8 → +8 par pas de 1) visible sur tous les jets (y compris résistance)
- Intégré dans la prévisualisation de formule (update dynamique)
- Pris en compte dans totalModifier au même titre que les autres mods
- Respecte la règle 'Puiser' (malus ignoré si puiser activé)
- Affiché dans la carte de tchat si non nul (symbole ◈)
- i18n : CELESTOPOL.Roll.situationMod
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- 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>