Le champ base (INTEGER, min 0) rejetait les bases négatives
(-4/-6/-8/-11) : toute compétence voyait sa base forcée à 0, d'où un
total d'XP compétences fortement négatif (ex. -5790 sur un personnage
neuf).
- competence.mjs : base en INTEGER_SIGNED
- item-competence.js : _preCreate affecte la base de la catégorie
- migrations.js : migration 14.0.3 corrige les compétences existantes
- compendiums repackés (bases de catégorie présentes dans les packs)
Elles sont souvent touchées ensemble
Préparation aux changements pour utiliser les Combatants
(pour gérer les empoignades/possessions en cours)
Renommages:
- RdDCombat -> PasseArmes
- RdDCombatManager -> RdDCombat
- age passe de NumberField a StringField (evite erreur validation V14
'must be a number' sur les acteurs existants)
- beaute reste en NumberField (utilise en calcul)
- expose RdDDice sur game.system.rdd.Dice
- retire les <form> dans les templates DialogV2 (absorbe par V2)
- ajoute window: {frame, positioned} et enleve height:fit-content (bloquait deplacement vertical)
- ajoute buttons: [Fermer] sur tous les DialogV2 qui en manquaient
- style des dialogs chronologie, calendar-editor, stress
- corrige duplication des boutons calendrier a chaque re-render
- HandlebarsApplicationMixin sur FenetreRechercheTirage
- corrige selecteurs :input→input,select,textarea (jQuery→natif)
- ajoute banniere ASCII console au demarrage
- remplace core.rollMode → core.messageMode (setting V14)
- migre toutes les cles (gmroll→gm, selfroll→self, blindroll→blind)
- corrige le hook renderTokenHUD pour recuperer le tokenId via app.document
- ajoute un bouton combat personnalise si absent du HUD V14
- corrige le toggle combat : isCombat manquant et guard si hors combat
- chat-utility : data-document-id→data-message-id pour les messages V14
- rdd-utility : idem pour findChatMessage/getChatMessageId
- roll-part-possession : getBestDraconic peut retourner undefined
- distance.mjs : Token→foundry.canvas.placeables.Token
- Migration des fiches acteur V2 : racine <form> → <section>
(DocumentSheetV2 encapsule déjà dans <form>, élimine les formulaires imbriqués)
- Ajout de submitOnChange: true sur la feuille de base acteur
(nécessaire pour que les événements change des éditeurs déclenchent la mise à jour)
- Ajout de toggled=true + wrapper <fieldset><div><label> sur tous les formInput
(comportement identique aux fiches d'objet)
- CSS : .window-content > section ajouté à côté de > form
(évite la perte du flex layout et des scrollbar en passant de form à section)
- Modèles acteur : passage de StringField à HTMLField pour les champs
description/notes/biographie/notesmj (permet le rendu ProseMirror)
- Ajout de systemFields dans le contexte _prepareContext()
Le hook updateItem/createItem/deleteItem appelait render(true)
déclenchant bringToFront() (ligne 598 ApplicationV2) qui
passait le dialog devant la fiche item ouverte. Utilise
render() sans force pour re-rendre sans changer le z-index.
Plus aucun FormApplication V1 dans module/settings/.
- Tous les settings menus migrés vers HandlebarsApplicationMixin(ApplicationV2)
- Templates sans wrapper <form>
- Scrollbar via LESS pour #status-effects et #system-compendiums
- Listeners jQuery -> DOM natif dans _onRender
Le DOM réel n'a PAS .window-app ni .applicationv2 sur le form.
La structure: <form id=regles-optionnelles class=application> >
.window-content. overflow: hidden dans le core V2 étouffe
le contenu. Fix: #regles-optionnelles > .window-content { overflow-y: auto; }
Les rules flex+overflow pour les forms AppV2 sont dans
foundryvtt-reve-de-dragon.less. Plus aucun style inline
dans _onRender ni <style> dans les templates.
Le id de DEFAULT_OPTIONS est l'id d'application ui.windows,
PAS l'id DOM (#application-N). Les classes ({classes}) sont
appliquées sur .window-app. CSS ciblé via la classe fonctionne.
Le CSS via template ne fonctionnait pas car l'id V2 n'est pas
un sélecteur DOM fiable. On apply les styles flex/overflow
directement sur this.element et son premier enfant dans _onRender.
Le formulaire ne scrollait pas car le form V2 (tag:'form')
n'avait pas de hauteur contrainte + overflow. Fix via CSS
ciblant #regles-optionnelles .window-content form > div.
- Nouveau setting 'tables-encaissement-revisees' dans Options alternatives
- Paliers fins (01-20+), pertes statiques, '@end0' vide endurance à 0
- Dialog de consultation avec les 2 tables (mortel/non-mortel)
- Lien 'Voir les tables d'encaissement' dans le menu Règles optionnelles (MJ)