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>
This commit is contained in:
2026-03-31 00:33:59 +02:00
parent 79a68ee9ab
commit 9dbd614c5a
40 changed files with 849 additions and 529 deletions

View File

@@ -37,6 +37,18 @@
<span class="anomaly-type-display">{{localize (lookup (lookup anomalyTypes system.anomaly.type) 'label')}}</span>
{{/if}}
</div>
{{#with (lookup woundLevels system.blessures.lvl) as |wound|}}
{{#if wound.id}}
<div class="header-stat wound-status-badge wound-level-{{wound.id}}">
<label>{{localize "CELESTOPOL.Wound.status"}}</label>
<span class="wound-value">
<span class="wound-label">{{localize wound.label}}</span>
{{#if wound.duration}}<span class="wound-duration"> — {{localize wound.duration}}</span>{{/if}}
{{#if wound.malus}}<span class="wound-malus"> ({{wound.malus}})</span>{{/if}}
</span>
</div>
{{/if}}
{{/with}}
</div>
</div>
<div class="header-buttons">