resetDeck() cherche les cartes dans cet ordre :
1. game.items (items monde existants)
2. Compendium système fvtt-hamalron.hamalron-items
3. assets/data/tarot.json (création automatique)
Ajout de assets/data/tarot.json : 78 cartes standard
Remplace le jet de dés par un vrai dialogue d'épreuve Hamalron :
- Sélection d'une carte dans la main du personnage
- Choix de la difficulté (table standard)
- Calcul réussi/échec basé sur la valeur de la carte
- La carte est défaussée et remplacée depuis le deck
Utilise une regex pour détecter les formules invalides avant
d'appeler super.prepareDerivedData(). Fallback sur try-catch
qui vide les rolls en dernier recours.
Les anciens messages d'initiative stockaient des formules comme
'3 de Bâton (3)' qui cassent Roll.parse(). Le override de
prepareDerivedData dans HamalronChatMessage valide chaque formule
via Roll.parse() et remplace par '1d6' si invalide.
- Trailing comma dans fr.json qui cassait le parsing JSON (critique)
- RANG_MAGICIEN utilisait val.name au lieu de val.label
- Bouton tirage MJ accessible aux non-GM (ajout guard game.user.isGM)
- style='flex:1' et style='display:none' externalisés dans roll.less
1. Tirage MJ dans le dialogue de compétence :
- Bouton tirer une carte dans la section difficulté
- Pioche dans le deck, affiche la carte tirée
- Calcule la difficulté sous tension
2. Drag & drop vers barre de raccourcis :
- Acteurs → ouvre la feuille
- Compétences → lance le jet de compétence
- Sorts → ouvre le dialogue de lancement
- Armes → lance le jet d'arme
3. Blessures incapacitantes (règle p.159) :
- Champs blessureIncapacitante / malusBlessure
- Dialogue proposant la blessure quand Épée diminue
- Malus -2 appliqué aux jets de compétence
- Bannière dans la feuille (mode jeu)
- Bouton guérison
- style='width: X%' → style='--pct: X' dans templates et JS
- CSS calc(var(--pct) * 1%) dans les fichiers .less correspondants
- Création de styles/action-complexe.less
- Import action-complexe.less dans fvtt-hamalron.less
- style='width: 100%' → class='tension-select' dans tarot-deck-manager
- Ajout .tension-select dans tarot-deck-manager.less
- Suppression doublon .initiative-roll dans chat.less
- Dialogue de récupération accessible depuis la feuille personnage
- Coupe/Denier : test difficulté 7 (1x/jour), +1 si réussi
- Épée : +1 manuel (repos/soins) ou test guérison rapide
- Bâton : +1 manuel (appréciation MJ)
- Suivi des dates de dernière récupération par symbole
- Désactive le test si déjà fait aujourd'hui
- Bouton d'accès intégré dans la section résistances (icône lit)
- Réutilise HamalronTirageTarot.prompt pour les tests
- Nouvelle fenêtre Actions complexes (GM-only)
- Création d'actions avec nom, symbole, résistance (nb de succès requis)
- Barre de progression + compteurs succès/échecs
- Boutons Réussite/Échec pour suivre l'avancement
- Notification et message chat quand l'objectif est atteint
- Persistance dans un setting world-scope
- Bouton dans les contrôles de scène (icône tasks)
- Accessible via game.system.api.openActionComplexe()
Conforme aux règles p.157 : actions nécessitant 2-5 victoires
Foundry v14 utilise style au lieu de type pour ChatMessage
et CONST.CHAT_MESSAGE_TYPES n'existe pas.
Corrigé dans tarot-deck-manager, sortilege-casting, base-actor-sheet
- Modèle sortilege enrichi (type, niveau, portée, durée, conditions, effets)
- Personnage: champ rangMagie (ensorceleur/initié/thaumaturge)
- Constantes: SORTILEGE_MODIFICATEURS (table 3x3), RANG_MAGICIEN
- Dialogue de lancement: tirage MJ, sélection atouts + Coupe, total temps réel
- Calcul difficulté: carte MJ + modificateur selon type × niveau
- Table des échecs magiques (normal/critique selon rang)
- Pioche automatique après succès, défausse après échec
- Template chat avec résultat localisé
Corrections post-review:
- Boucle de défausse sur échec corrigée (itérait toujours sur [0])
- Clé de localisation HAMALRON.Roll.cast -> HAMALRON.Sortilege.cast
- Ajout de la clé manquante noCoupe
- Labels localisés dans le chat (categorieLabel, niveauLabel)