Commit Graph
2111 Commits
Author SHA1 Message Date
fabres edeedb6b3d fix(creation): fallback équipement archétype, ergonomie et récapitulatif
- é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
2026-08-08 17:31:50 +02:00
fabres af05b57405 feat(creation): archétypes Voyageurs + hiérarchie conteneurs + alertes
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
2026-08-08 09:10:46 +02:00
fabres bb7466b33e feat(creation): assistant de création de personnage (wizard)
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.
2026-08-07 23:24:50 +02:00
fabres 73b91285e3 fix(sommeil): insomnie, château dormant automatique et reprise de nuit
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.
2026-08-07 15:54:09 +02:00
VincentVk 1238460cc8 Fix: quantité d'achat depuis commerce illimité
Lors d'un achat depuis un commerce illimité, la quantité du commerce
(non visible) était utilisée au lieux de la quantité réellement achetée
2026-08-07 15:25:35 +02:00
VincentVk d590dfce7f Fix: ne pas créer d'Item "Sans compétence" 2026-08-07 14:53:58 +02:00
fabres 4a6913a2ba fix: XP compétences négatives (base de catégorie)
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)
2026-08-06 14:27:39 +02:00
fabres 3758d0ca85 fix: compat V14 - _onFirstRender (HTMLElement.show), fermeture dialog TMR 2026-07-27 21:17:50 +02:00
VincentVk d8cfd02807 Regrouper les classes de combat
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
2026-07-26 22:58:25 +02:00
VincentVk 9aca2c32ef Fix assign dans constructeur
Pas possible de faire Object.assign(this.position car position == null
2026-07-26 22:57:17 +02:00
fabres 2348b2262b fix: champ age en StringField pour compat V14
- 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
2026-07-24 08:07:10 +02:00
fabres 81cb3bb6bd fix: DialogV2 - formes imbriquees, boutons, styles et positionnement
- 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
2026-07-22 01:10:24 +02:00
fabres e0e3d4f230 fix: DialogV2 requiert au moins un bouton (buttons vides interdit en V14) 2026-07-22 00:35:47 +02:00
fabres 1c288b654a fix: migration V14 - rollMode→messageMode, Token HUD, data-message-id
- 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
2026-07-22 00:29:56 +02:00
fabres a5843888c0 fix: migration V14 et corrections diverses
migration v14:
- remplace CONFIG.Dice.rollModes → CONFIG.ChatMessage.modes
- canvas optionnel (?.tokens) dans ~27 fichiers
- async/await migrations, waitForRoll, effet draconique
- supprime _warnedAppV1, data-message-id→data-document-id
- corrige sheet registration Items.registerSheet

tmr:
- bouton Lancer un Sort visible en mode visu
- _ensureTMRButtons() en fallback JS
- await d'animation avant render
- corrigé doublon carteTMR.js

css:
- scrollbar (.item-sheet-scrollable-body) sur les 44 fiches item
- normalisation multiligne de tous les less/item/*.less
- style du dialogue description aléatoire (app-personnage-aleatoire)
- hr-sorts et sort réserves en flex-row

dialogue description:
- type=button sur les boutons (évite submit form → crash)
- randomControl passe this.actor au lieu de this.current
- DEFINITION_HEURES : ajout propriété manquante heure

d意:
- supprime 6 fichiers debug (phase*.txt/png, sheets-*.txt/png)
- system.json nom anglais→français
- token-hud : guard token undefined
- item-sort.js : guard sort?.system dans helpers Handlebars
2026-07-22 00:29:56 +02:00
fabres 7d9ebd601a chore: deplace 10 fichiers .js V1 inutilises vers _deprecated/ 2026-07-22 00:29:56 +02:00
fabres 25e3df1f5d Migration Foundry v14 : classes V1→V2, corrections CSS et bugs
- 21 classes Dialog → DialogV2
- 2 classes Application → ApplicationV2 + HandlebarsApplicationMixin
- 1 classe FormApplication → ApplicationV2
- 10 appels new Dialog() → DialogV2 (rdd-confirm, rdd-commands, etc.)
- base-actor-sheet.mjs : 3 appels new Dialog → DialogV2
- Sheet journal : JournalTextPageSheet → JournalEntryPageProseMirrorSheet
- CSS : backdrop-filter, box-shadow, bordures V2 supprimes pour calendar/astrologie
- FenetreRechercheTirage : _getWindowControls + dragDrop ajoutes
- HtmlUtility.showControlWhen : compat jQuery + DOM natif
- rdd-main.js : init calendrier en setTimeout
- Constantes : duplicate → deepClone, _id → id
- renderTemplate global → foundry.applications.handlebars.renderTemplate
2026-07-22 00:29:56 +02:00
fabres 84ce2f78d7 appv2: correction des éditeurs ProseMirror et scrollbar sur les fiches d'acteur
- 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()
2026-07-22 00:29:56 +02:00
fabres d0a434fb0b refactor(styles): migre toutes les directives CSS inline vers LESS
- Remplace les vieilles règles table (mortes) des dialog-gerer-herbes
  et dialog-gerer-ingredients par des règles flex scoped
- Dialog-gerer-herbes/potions/ingredients/deniers : style= flex/gap/padding
  → classes LESS par dialog avec nth-child
- actor-sheet.hbs : gap+flex-wrap → .oeuvre-buttons,
  height:200px → .tab.hautreve
- carac-derivee.hbs : style sur .sust-buttons → déplacé dans LESS
- regles-optionnelles.hbs : width:100% → .btn-voir-tables-encaissement
- dialog-lancer-recette (hbs+js) : status colors → classes .status-*
- roll-part-appelmoral.hbs : font-size conditionnel → classe .moral-low
- rdd-utility.js : span style → .resultat-created
- rdd-import-stats.js : textarea style → #statBlock
- base-actor-sheet.js : select style → .qty-amount
- export-scriptarium/*.hbs : flex-grow, margin-bottom → classes
- app-personnage-aleatoire.hbs : text-align → .random-char-right

Seuls 2 styles dynamiques persistent : background-image option
(partial-roll-coeur.hbs) et width fillPercent barre (inventaire-item.hbs).
2026-07-22 00:29:56 +02:00
fabres 27b232776c fix(dialogs): évite bringToFront du dialog lors du re-render hook
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.
2026-07-22 00:29:56 +02:00
fabres d06f1de433 fix(dialogs): refresh gestion herbes/potions/ingredients après édition fiche
Souscrit aux hooks updateItem/createItem/deleteItem pour
re-render le dialog quand un item de l'acteur change.
Nettoyage des hooks via _onClose().
2026-07-22 00:29:56 +02:00
fabres 54fc1e8e1a fix(migration): StatusEffects + SystemCompendiums -> ApplicationV2
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
2026-07-22 00:29:56 +02:00
fabres 70092ffd8f fix(migration): OptionsAvancees -> ApplicationV2
Migration V1→V2 identique à ReglesOptionnelles.
+ scrollbar dans LESS (#options-avancees > .window-content)
2026-07-22 00:29:56 +02:00
fabres 6fdb07a4e8 fix(v2): scrollbar via .regles-optionnelles.applicationv2 > .window-content
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.
2026-07-22 00:29:56 +02:00
fabres c4f9150fdb fix(v2): scrollbar inline via _onRender flex styles
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.
2026-07-22 00:29:56 +02:00
fabres 348536556a fix(migration): ReglesOptionnelles + DialogEncaissementTables -> ApplicationV2
V1 FormApplication déprécié depuis Foundry v13. Migration vers
HandlebarsApplicationMixin(ApplicationV2) :
- DEFAULT_OPTIONS statique remplace defaultOptions getter
- _prepareContext() async remplace getData()
- _onRender() avec DOM natif remplace activateListeners(html)
- PARTS remplace template
- form: {} sub-object remplace closeOnSubmit/submitOnChange plats
- Templates sans <form> wrapper (V2 l'injecte via tag:'form')
2026-07-22 00:29:56 +02:00
fabres afabba430a feat(encaissement): tables révisées optionnelles + consultation dialog
- 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)
2026-07-22 00:29:56 +02:00
fabres 3e63054b9d refactor(regles): fusion des Règles customs dans Règles optionnelles -> section Options alternatives, suppress fichiers 2026-07-22 00:29:56 +02:00
fabres d216e8fcf6 fix(sheets): ajout des sections environnement (inventaire) et temporel (blessure, maladie, poison, rencontre, signedraconique) manquantes dans les sheets V2 2026-07-22 00:29:56 +02:00
fabres 29cdcca1bb fix(cd): message stress journal : perte fixe de 1, reste X, conversion Y en xp 2026-07-22 00:29:56 +02:00
fabres 8c9c8f3345 feat(cd): journal enrichi avec stress, perte enchantements, moral 2026-07-22 00:29:56 +02:00
fabres 8e748a1d94 feat(cd): message statut MJ + journal de suivi stress/moral/events par jour 2026-07-22 00:29:56 +02:00
fabres 7599db07ad feat(repos): nouveau mode sommeil avec sélection heures, dialogs CD intégrés, toolbar équipement 2026-07-22 00:29:56 +02:00
fabres 1db733f379 fix(rations): ne plus afficher 'rien à manger' quand les compteurs sont déjà pleins 2026-07-22 00:29:56 +02:00
fabres 07a48fb3cc refactor(sheets): migration item sheets v13 (models, apps, templates, moins + common/mixins) 2026-07-22 00:29:53 +02:00
fabres f52575f413 fix(rations): consomme assez d'unités pour remplir sust/eau en 1 clic + alerte si vide 2026-07-22 00:26:52 +02:00
fabres 5969009eb1 feat(inventaire): boutons +Ration/+Eau, cartouche chat compact
- 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
2026-07-22 00:26:52 +02:00
VincentVk ce7271b569 Fix: ouverture des items
Fix appel methode sur objet SANS_COMPETENCE, qui n'etait pas
un RdDItem / RdDItemCompetence
2026-07-21 22:28:06 +02:00
VincentVk 5dbd7c3784 Fix Description aléatoire 2026-07-17 03:07:30 +02:00
fabres a55904742b fix(encombrement): exclure le poids propre des conteneurs du total
- 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 ✓)
2026-07-14 22:08:32 +02:00
fabres ded584ccc8 feat(inventaire): tri par quantité, dialogues de gestion, duplication cachée des livres lus
Release Creation / build (release) Successful in 1m45s
- 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
2026-07-14 18:56:38 +02:00
fabres ac10de85cf Gestion des livres lus et des herbes 2026-07-14 08:28:44 +02:00
VincentVk 7d5903aa84 Support des tâches à plusieurs
Release Creation / build (release) Successful in 1m50s
2026-07-11 16:12:15 +02:00
VincentVk 6636ebb77c Améliorations des titres des fenêtres de jets 2026-07-10 23:37:42 +02:00
VincentVk 89207df01d Correction d'updates non affichés 2026-07-10 20:34:16 +02:00
VincentVk 000e16f8b7 Amélioration sur les voies de Draconic
- 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
2026-07-10 19:26:34 +02:00
VincentVk bbbc817e5f Pas de lecture avec Draconic à -11 2026-07-10 18:13:29 +02:00
VincentVk b89dd3845a Visibilité des jets /rdd 2026-07-10 18:07:08 +02:00
VincentVk 6c239b8ed9 Suppression de TMR "Inconnu" pour signes 2026-07-10 16:50:41 +02:00
VincentVk e34449631c Optimisation fenêtre de jets
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
2026-06-20 18:38:48 +02:00