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>
This commit is contained in:
2026-03-28 18:15:06 +01:00
parent cff700bd3d
commit f9ddcdf9da
11 changed files with 474 additions and 41 deletions

View File

@@ -59,6 +59,23 @@ export const ANOMALY_TYPES = {
voyageastral: { id: "voyageastral", label: "CELESTOPOL.Anomaly.voyageastral" },
}
/**
* Définitions des anomalies : compétences applicables pour l'usage Technique.
* "lune" est une clé spéciale désignant le dé de lune (Entropie).
* Les autres clés correspondent aux identifiants de domaine dans SKILLS.
*/
export const ANOMALY_DEFINITIONS = {
none: { technicalSkills: [] },
entropie: { technicalSkills: ["lune"] },
communicationaveclesmorts:{ technicalSkills: ["instruction", "mtechnologique", "raisonnement", "traitement"] },
telekinesie: { technicalSkills: ["echauffouree", "effacement", "mobilite", "prouesse"] },
telepathie: { technicalSkills: ["appreciation", "attraction", "echauffouree", "faveur"] },
tarotdivinatoire: { technicalSkills: ["appreciation", "arts", "inspiration", "traque"] },
illusion: { technicalSkills: ["coercition", "echauffouree", "effacement", "traque"] },
suggestion: { technicalSkills: ["artifice", "attraction", "coercition", "faveur"] },
voyageastral: { technicalSkills: ["appreciation", "mtechnologique", "traitement", "traque"] },
}
/** Factions du monde de Célestopol. */
export const FACTIONS = {
pinkerton: { id: "pinkerton", label: "CELESTOPOL.Faction.pinkerton" },
@@ -122,6 +139,7 @@ export const SYSTEM = {
SKILLS,
ALL_SKILLS,
ANOMALY_TYPES,
ANOMALY_DEFINITIONS,
FACTIONS,
WOUND_LEVELS,
DIFFICULTY_CHOICES,