- équipements non retrouvés dans les compendiums recopiés depuis l'archétype
(fallback fromArchetype) : liste, budget, création d'items et conteneurs OK
- correction du spread system qui écrasait quantite/cout/encombrement
- fenêtre +10% de hauteur, titres et boutons de navigation compactés
- formulaire remplit la fenêtre v13 : boutons calés en bas sur toutes les étapes
- textes du récapitulatif en brun (--wizard-text-body), caracs en pastilles
Archétypes :
- Sélection par cartes cliquables à l'étape Haut-Rêve (12 voyageurs du
compendium + création libre), avec image et nom
- Choix haut-rêvant verrouillé quand un archétype est sélectionné
- _appliquerArchetype pré-remplit caracs, beauté, attributs, compétences
(par _id), sorts, équipement (par nom) et fortune (total monnaies de
l'archétype) ; image token de l'archétype à la création
- _resetArchetype (création libre) remet tout aux valeurs par défaut
- Récapitulatif : ligne Archétype
Économie des troncs :
- _economieTroncs applique la règle des compétences troncs (Corps à
corps/Dague/Esquive et armes) au budget de 3000 XP (le Baladin passe
de 3160 à 3000 exactement)
Hiérarchie des conteneurs :
- La structure (dont contenu des conteneurs) est prise depuis l'item
voyageur ; mapping archetypeID -> equipID -> nouvelID créé
- Les system.contenu des conteneurs sont reconstruits après création
(sac à dos -> 11 contenus, ceinturon -> outre -> eau, etc.)
Fix budget équipement :
- La condition de blocage (depenseDelta > 0 && > restant) permet les
réductions même quand le budget est négatif
Alertes items non mappés :
- Les éléments de l'archétype non retrouvés dans les compendiums sont
collectés et signalés par notification toast + bandeaux d'avertissement
aux étapes Haut-Rêve et Équipement
Nouveau wizard ApplicationV2 pour créer un personnage de A à Z, lancé
depuis un bouton « Créer (wizard) » dans le répertoire d'acteurs.
Étapes :
- Haut-Rêve : choix haut-rêvant / non (conditionne Draconic et sorts)
- Caractéristiques : 14 caracs (6-15) + beauté (10-16), budget 160
temps réel, dérivées calculées en direct, FORCE ≤ TAILLE+4
- Compétences : 67 compétences triées par catégorie puis nom, niveaux
base→+3, coûts via la table de création (regles_creation_personnage),
budget 3000 temps réel, Thanatos ×2, troncs, survie, Draconics
désactivées si non haut-rêvant, XP = 0 (investissement suivi via
compteurs.experience)
- Sorts (haut-rêvant) : filtrage R ≤ Draconic+3, coût auto (diff×10 ou
70), cap 300 + pool partagé 3000
- Attributs : sexe, âge, taille, poids, yeux, cheveux, main, heure de
naissance, biographie, description
- Équipement & Richesse : fortune de départ (50 sols), achat libre via
arborescence par type + filtre + recherche, blocage budget, suivi
encombrement (FORCE+TAILLE)/2, restant optimisé en monnaies sur la
fiche (Dragon/Sol/Sou/Denier)
- Récapitulatif : vue complète + création de l'acteur (caracs, race
Humain, compétences, sorts, don de haut-rêve, équipement, monnaies)
Corrections issues du review :
- « Précédent » directionnel (saut des sorts pour non haut-rêvant)
- Champ nom fonctionnel sur toutes les étapes
- system.xp des compétences à 0 (sémantique système)
- Sorts bloqués par le pool partagé 3000, pas seulement la cap 300
- Clamp des caractéristiques réécrit dans l'input
- Items « Sans compétence » du monde filtrés
CSS : thème wizard (variables --wizard-*), arborescence équipement,
steppers, barres de budget, scroll interne du contenu.
Nouveau mode de repos (nouveau-mode-repos) :
- Insomnie (Queue de Dragon) : bannière d'avertissement dans le dialogue,
rafraîchissement du drapeau à l'ouverture, vérification en direct dans la
boucle de sommeil (coupe la récupération fatigue/rêve si elle surgit en
cours de nuit), drapeau bidirectionnel (setInfoSommeilInsomnie) et mention
dans le dialogue Château Dormant.
- Château Dormant : déclenchement automatique quand l'heure absolue de fin
de nuit (11) est atteinte, au lieu de seulement après 12 h de sommeil.
- Rêve de Dragon : reprise de nuit possible — system.sommeil.heures
initialisé à la durée, heures restantes conservées au réveil, dialogue
pré-rempli avec bannière 'Reprise de nuit' et remise à zéro après une
nuit complète.
- Don 'double rêve' : second jet de récupération de rêve par heure.
- Garde anti-boucle infinie si l'insomnie apparaît pendant le sommeil.
- Info-bulle sur le réveil forcé.
Perte de rêve des enchantements au Château Dormant :
- Suppression du message en double (whisper dédié) : texte intégré au
résumé du CD ; la gemme renvoie désormais nouveaupr.
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 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.
- 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)
- Boutons +Ration et +Eau dans l'onglet Équipement
- Incrémente la quantité si l'item existe déjà, sinon le crée
- Nouveau template post-item-compact.hbs pour l'aperçu chat
- _MONTRER utilise désormais le cartouche compact
- postItemToChatCompact() awaitable, champs filtrés par type d'inventaire
- Les conteneurs n'ajoutent plus leur propre encombrement au total
(seuls les objets qu'ils contiennent sont comptés)
- Ajout indicateur visuel quand une compétence atteint son niveau d'archétype
(bordure dorée + icône ✓)
- Remplace le tri 'Manuel' par un tri 'Quantité' dans l'inventaire
- Supprime _onDrop / _onSortItem (obsolètes sans tri manuel)
- Nouveau dialogue 'Gérer ses deniers' (ApplicationV2)
- Nouveau dialogue 'Gérer ses potions' (ApplicationV2)
- Boutons herbes/ingrédients/potions/deniers déplacés dans l'onglet Équipement
- Dialogues herbes/ingrédients harmonisés (alterne-list, contrôles +/-)
- Ajout titre 'Livres lus' et en-têtes alignés
- Ajout estCopieLue au schéma livre (template.json)
- creerCopieLue() extrait dans base-actor.js
- Filtre estCopieLue dans prepareInventaire/buildContenuConteneur
- Ne pas proposer les voies de Draconic à -11 pour lire un signe
draconic ou lancer un sort
- Trier les voies par ordre décroissant pour le sorts à voies multiples
- Les rencontres et les maîtrises dans les TMR peuvent être vaincues
sans draconic si les voies sont négatives
La fenêtre de jet pour les attaques à distance prenait
trop de hauteur sur petit écran.
La difficulté était mal visualisée par les joueurs (et confondue
avec les conditions)
Le d100 de la zone "tricher" était un peu trop gros
Les ajustements sont organisés plus logiquement: difficulté,
conditions, ajustements à cocher