From 2cb7647fc445f09d7191129db610e229a4ae67c6 Mon Sep 17 00:00:00 2001 From: Vincent Vandemeulebrouck Date: Thu, 4 Mar 2021 23:28:01 +0100 Subject: [PATCH 1/2] =?UTF-8?q?=5FupdateObject=20doit=20=C3=AAtre=20async?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit > It looks to me like there are a few instances of DocumentSheet > subclasses which fail to correctly mark their _updateObject > method as async --- module/actor-creature-sheet.js | 2 +- module/actor-entite-sheet.js | 2 +- module/actor-sheet.js | 2 +- module/actor-vehicule-sheet.js | 2 +- module/item-sheet.js | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/module/actor-creature-sheet.js b/module/actor-creature-sheet.js index b9a820d7..befa01e2 100644 --- a/module/actor-creature-sheet.js +++ b/module/actor-creature-sheet.js @@ -100,7 +100,7 @@ export class RdDActorCreatureSheet extends RdDActorSheet { /* -------------------------------------------- */ /** @override */ - _updateObject(event, formData) { + async _updateObject(event, formData) { // Update the Actor return this.object.update(formData); } diff --git a/module/actor-entite-sheet.js b/module/actor-entite-sheet.js index 8e9f3c93..b468eb2f 100644 --- a/module/actor-entite-sheet.js +++ b/module/actor-entite-sheet.js @@ -135,7 +135,7 @@ export class RdDActorEntiteSheet extends ActorSheet { /* -------------------------------------------- */ /** @override */ - _updateObject(event, formData) { + async _updateObject(event, formData) { // Update the Actor return this.object.update(formData); } diff --git a/module/actor-sheet.js b/module/actor-sheet.js index 15b7f27c..71940fd1 100644 --- a/module/actor-sheet.js +++ b/module/actor-sheet.js @@ -580,7 +580,7 @@ export class RdDActorSheet extends ActorSheet { /* -------------------------------------------- */ /** @override */ - _updateObject(event, formData) { + async _updateObject(event, formData) { // Update the Actor return this.object.update(formData); } diff --git a/module/actor-vehicule-sheet.js b/module/actor-vehicule-sheet.js index a2dd0cb3..a9306968 100644 --- a/module/actor-vehicule-sheet.js +++ b/module/actor-vehicule-sheet.js @@ -102,7 +102,7 @@ export class RdDActorVehiculeSheet extends ActorSheet { /* -------------------------------------------- */ /** @override */ - _updateObject(event, formData) { + async _updateObject(event, formData) { // Update the Actor return this.object.update(formData); } diff --git a/module/item-sheet.js b/module/item-sheet.js index 093ce575..3e8f43ff 100644 --- a/module/item-sheet.js +++ b/module/item-sheet.js @@ -127,7 +127,7 @@ export class RdDItemSheet extends ItemSheet { /* -------------------------------------------- */ /** @override */ - _updateObject(event, formData) { + async _updateObject(event, formData) { // Données de bonus de cases ? formData = RdDItemSort.buildBonusCaseStringFromFormData( formData ); //console.log("HERE", this, formData, this.object.data ); From 3ae461bb714bbe4e88ce748e89d62a2be246f6bb Mon Sep 17 00:00:00 2001 From: Vincent Vandemeulebrouck Date: Fri, 5 Mar 2021 03:42:45 +0100 Subject: [PATCH 2/2] Nettoyage de data MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * séparation de options, calc, ... * extraction de méthodes pour clarifier ce qui est fait dans getData * fix de la feuille: utiliser data.data * fix d'Actor: update({ data.data --- dev-notes.md | 48 ++++ module/actor-creature-sheet.js | 39 +-- module/actor-entite-sheet.js | 30 +- module/actor-sheet.js | 183 +++++------- module/actor-vehicule-sheet.js | 28 +- module/actor.js | 70 ++--- module/item-arme.js | 23 +- module/item-competence.js | 78 +++-- module/item-sheet.js | 30 +- module/rdd-carac.js | 16 ++ module/rdd-commands.js | 2 +- module/rdd-utility.js | 96 ++++--- packs/rappel-des-regles.db | 1 + templates/actor-creature-sheet.html | 13 +- templates/actor-entite-sheet.html | 1 + templates/actor-humanoide-sheet.html | 7 +- templates/actor-sheet.html | 269 +++++++++--------- templates/actor-vehicule-sheet.html | 5 +- templates/calendar-astrologie-template.html | 1 + templates/calendar-editor-template.html | 1 + templates/calendar-template.html | 1 + templates/chat-actor-competence-xp.html | 1 + templates/chat-actor-turn-summary.html | 1 + templates/chat-demande-attaque-etotal.html | 1 + .../chat-demande-attaque-particuliere.html | 1 + templates/chat-demande-defense.html | 1 + templates/chat-info-appel-au-moral.html | 2 +- templates/chat-infojet.html | 1 + templates/chat-initiative-premier-round.html | 1 + templates/chat-poesie.html | 1 + templates/chat-rencontre-tmr.html | 1 + .../chat-resultat-accorder-cauchemar.html | 1 + templates/chat-resultat-alchimie.html | 1 + templates/chat-resultat-appelchance.html | 1 + templates/chat-resultat-attaque.html | 1 + templates/chat-resultat-chant.html | 1 + templates/chat-resultat-competence.html | 1 + templates/chat-resultat-danse.html | 1 + templates/chat-resultat-encaissement.html | 1 + templates/chat-resultat-esquive.html | 1 + templates/chat-resultat-ethylisme.html | 1 + templates/chat-resultat-general.html | 1 + templates/chat-resultat-jeu.html | 1 + templates/chat-resultat-maitrise-tmr.html | 1 + templates/chat-resultat-meditation.html | 1 + templates/chat-resultat-musique.html | 1 + templates/chat-resultat-oeuvre.html | 1 + templates/chat-resultat-parade.html | 1 + templates/chat-resultat-recettecuisine.html | 1 + templates/chat-resultat-reve-de-dragon.html | 1 + templates/chat-resultat-sort.html | 1 + templates/chat-resultat-tache.html | 1 + .../chat-resultat-transformer-stress.html | 1 + templates/dialog-astrologie-joueur.html | 1 + templates/dialog-competence.html | 1 + templates/dialog-roll-ajustements.html | 1 + templates/dialog-roll-alchimie.html | 1 + templates/dialog-roll-carac.html | 1 + templates/dialog-roll-chant.html | 1 + templates/dialog-roll-danse.html | 1 + templates/dialog-roll-encaisser.html | 1 + templates/dialog-roll-ethylisme.html | 1 + templates/dialog-roll-jeu.html | 1 + templates/dialog-roll-maitrise-tmr.html | 1 + templates/dialog-roll-meditation.html | 1 + templates/dialog-roll-musique.html | 1 + templates/dialog-roll-oeuvre.html | 1 + templates/dialog-roll-recettecuisine.html | 1 + templates/dialog-roll-resolution.html | 1 + templates/dialog-roll-reve-de-dragon.html | 1 + templates/dialog-roll-sort.html | 1 + templates/dialog-roll-surenc.html | 1 + templates/dialog-tmr.html | 1 + templates/editor-notes-mj.html | 2 +- templates/hud-actor-attaque.html | 1 + templates/hud-actor-init.html | 1 + templates/item-arme-sheet.html | 1 + templates/item-armure-sheet.html | 1 + templates/item-casetmr-sheet.html | 1 + templates/item-chant-sheet.html | 1 + templates/item-competence-sheet.html | 1 + templates/item-competencecreature-sheet.html | 1 + templates/item-conteneur-sheet.html | 1 + templates/item-danse-sheet.html | 1 + templates/item-herbe-sheet.html | 1 + templates/item-ingredient-sheet.html | 1 + templates/item-jeu-sheet.html | 1 + templates/item-livre-sheet.html | 1 + templates/item-maladie-sheet.html | 1 + templates/item-meditation-sheet.html | 1 + templates/item-monnaie-sheet.html | 1 + templates/item-munition-sheet.html | 1 + templates/item-musique-sheet.html | 1 + templates/item-objet-sheet.html | 1 + templates/item-oeuvre-sheet.html | 1 + templates/item-ombre-sheet.html | 1 + templates/item-poison-sheet.html | 1 + templates/item-potion-sheet.html | 1 + templates/item-queue-sheet.html | 1 + templates/item-recettealchimique-sheet.html | 1 + templates/item-recettecuisine-sheet.html | 1 + templates/item-rencontresTMR-sheet.html | 1 + templates/item-sort-sheet.html | 1 + templates/item-souffle-sheet.html | 1 + templates/item-tache-sheet.html | 1 + templates/item-tarot-sheet.html | 1 + templates/item-tete-sheet.html | 1 + templates/post-item.html | 1 + templates/regles-optionelles.html | 1 + templates/status-effects-settings.html | 1 + 110 files changed, 600 insertions(+), 433 deletions(-) create mode 100644 dev-notes.md diff --git a/dev-notes.md b/dev-notes.md new file mode 100644 index 00000000..6dd99c00 --- /dev/null +++ b/dev-notes.md @@ -0,0 +1,48 @@ +# Actor notes + +> The Actor#getData default implementation gives you the following for use in sheet rendering: + +``` + actor -> the Actor instance + data -> a cloned copy of Actor#data + items -> a cloned copy of Actor#data#items + effects -> a cloned copy of Actor#data#effects +``` + +> if all you need is a safe copy of `Actor#data`, you'll be much better off by simply defining your own function and avoiding all the wasted work that the parent class does which will slow down your sheet +```js +getData(options) { + return { + data: foundry.utils.deepClone(this.object.data) + } +} +``` + +who knows, maybe you don't even need to copy your actor data, skip the copy and it's even faster: +```js +getData(options) { + return { + data: this.object.data + } +} +``` + + +Atropos19/02/2021 +There are two recommended ways to create owned items in 0.8.0: +```js +await Item.create(itemData, {parent: actor}); +await actor.createEmbeddedDocuments("Item", itemDataArray); +``` + + +You can update an embedded item in one of two ways: +```js +//Method 1: + +const item = actor.items.get(itemId); +item.update(data); + +//Method 2: +actor.updateEmbeddedDocuments("Item", [{_id: itemId, ...}]); +``` \ No newline at end of file diff --git a/module/actor-creature-sheet.js b/module/actor-creature-sheet.js index befa01e2..3b164097 100644 --- a/module/actor-creature-sheet.js +++ b/module/actor-creature-sheet.js @@ -7,6 +7,8 @@ import { HtmlUtility } from "./html-utility.js"; import { RdDUtility } from "./rdd-utility.js"; import { RdDActorSheet } from "./actor-sheet.js"; +import { Misc } from "./misc.js"; +import { RdDCarac } from "./rdd-carac.js"; /* -------------------------------------------- */ export class RdDActorCreatureSheet extends RdDActorSheet { @@ -26,40 +28,29 @@ export class RdDActorCreatureSheet extends RdDActorSheet { /* -------------------------------------------- */ getData() { - let data = super.getData(); - console.log("Creature : ", data); + let sheetData = super.getData(); + console.log("Creature : ", sheetData); - data.itemsByType = {}; - for (const item of data.items) { - let list = data.itemsByType[item.type]; - if (!list) { - list = []; - data.itemsByType[item.type] = list; + sheetData.itemsByType = Misc.classify(sheetData.items, item => item.type); + sheetData.calc = { + caracTotal: RdDCarac.computeTotal(sheetData.data.data.carac), + blessures: { + resume: sheetData.actor.computeResumeBlessure(sheetData.data.data.blessures) } - list.push(item); } - // Compute current carac sum - let sum = 0; - Object.values(data.data.carac).forEach(carac => { if (!carac.derivee) { sum += parseInt(carac.value) } }); - data.data.caracSum = sum; + sheetData.data.carac.taille.isTaille = true; // To avoid button link; - data.data.carac.taille.isTaille = true; // To avoid button link; - data.data.blessures.resume = this.actor.computeResumeBlessure(data.data.blessures); - data.data.isGM = game.user.isGM; - - data.data.competencecreature = data.itemsByType["competencecreature"]; + sheetData.data.competencecreature = sheetData.itemsByType["competencecreature"]; this.actor.computeEncombrementTotalEtMalusArmure(); - RdDUtility.filterItemsPerTypeForSheet(data); - RdDUtility.buildArbreDeConteneur(this, data); - data.data.encTotal = this.actor.encTotal; - data.data.isGM = game.user.isGM; + RdDUtility.filterItemsPerTypeForSheet(sheetData); + RdDUtility.buildArbreDeConteneur(this, sheetData); - console.log("Creature : ", this.objetVersConteneur, data); + console.log("Creature : ", this.objetVersConteneur, sheetData); - return data; + return sheetData; } /* -------------------------------------------- */ diff --git a/module/actor-entite-sheet.js b/module/actor-entite-sheet.js index b468eb2f..7f909e5a 100644 --- a/module/actor-entite-sheet.js +++ b/module/actor-entite-sheet.js @@ -20,33 +20,17 @@ export class RdDActorEntiteSheet extends ActorSheet { }); } - /* -------------------------------------------- */ - _checkNull(items) { - if (items && items.length) { - return items; - } - return []; - } - /* -------------------------------------------- */ getData() { - let data = super.getData(); + let sheetData = super.getData(); - data.itemsByType = {}; - for (const item of data.items) { - let list = data.itemsByType[item.type]; - if (!list) { - list = []; - data.itemsByType[item.type] = list; - } - list.push(item); - } - - data.data.carac.taille.isTaille = true; // To avoid button link; - data.data.competencecreature = data.itemsByType["competencecreature"]; - data.data.isGM = game.user.isGM; + sheetData.data.competencecreature = sheetData.itemsByType["competencecreature"]; - return data; + data.options = { + isGM: game.user.isGM + }; + + return sheetData; } /* -------------------------------------------- */ diff --git a/module/actor-sheet.js b/module/actor-sheet.js index 71940fd1..a1963dd7 100644 --- a/module/actor-sheet.js +++ b/module/actor-sheet.js @@ -10,6 +10,7 @@ import { RdDItemCompetence } from "./item-competence.js"; import { RdDBonus } from "./rdd-bonus.js"; import { Misc } from "./misc.js"; import { RdDCombatManager } from "./rdd-combat.js"; +import { RdDCarac } from "./rdd-carac.js"; /* -------------------------------------------- */ export class RdDActorSheet extends ActorSheet { @@ -31,122 +32,92 @@ export class RdDActorSheet extends ActorSheet { } /* -------------------------------------------- */ - getData() { - let data = super.getData(); - if ( data.actor.type == 'creature' || data.actor.type == 'humanoide') return data; // Shortcut + async getData() { + // Partie commune + let sheetData = await super.getData(); - data.data.editCaracComp = this.options.editCaracComp; - data.data.showCompNiveauBase = this.options.showCompNiveauBase; - data.data.montrerArchetype = this.options.montrerArchetype; + sheetData.options = this.options; + sheetData.itemsByType = Misc.classify(sheetData.items, item => item.type); + sheetData.options.isGM = game.user.isGM; - data.itemsByType = Misc.classify(data.items); + const carac = sheetData.data.data.carac; + // la taille est la taille: on ne peut pas l'utiliser pour un jet + carac.taille.isTaille = true; - // Competence per category - data.data.comptageArchetype = RdDUtility.getLimitesArchetypes(); - data.data.competenceXPTotal = 0; - data.competenceByCategory = Misc.classify( - data.itemsByType.competence, - item => item.data.categorie, - item => { - let archetypeKey = (item.data.niveau_archetype < 0) ? 0 : item.data.niveau_archetype; - if (data.data.comptageArchetype[archetypeKey] == undefined) { - data.data.comptageArchetype[archetypeKey] = { "niveau": archetypeKey, "nombreMax": 0, "nombre": 0}; - } - data.data.comptageArchetype[archetypeKey].nombre = (data.data.comptageArchetype[archetypeKey]?.nombre??0) + 1; //Comptage archetype - item.data.xpNext = RdDItemCompetence.getCompetenceNextXp(item.data.niveau); - item.data.isLevelUp = item.data.xp >= item.data.xpNext; // Flag de niveau à MAJ - //this.actor.checkCompetenceXP(item.name); // Petite vérification experience - item.data.showCompetence = !data.data.showCompNiveauBase || (Number(item.data.niveau) != Number(RdDUtility.getLevelCategory(item.data.categorie))); - // Ignorer les compétences 'troncs' à ce stade - data.data.competenceXPTotal += RdDItemCompetence.computeCompetenceXPCost(item); - return item; - }); - data.data.competenceXPTotal -= RdDItemCompetence.computeEconomieCompetenceTroncXP(data.itemsByType.competence); + if (sheetData.actor.type == 'creature') return sheetData; // Shortcut - // Compute current carac sum - let sum = 0; - let caracList = data.data.data.carac; - for (let caracName in caracList) { - let currentCarac = caracList[caracName]; - if (!currentCarac.derivee) { - sum += parseInt(currentCarac.value); - } - currentCarac.xpNext = RdDUtility.getCaracNextXp(currentCarac.value); - currentCarac.isLevelUp = (currentCarac.xp >= currentCarac.xpNext); - } - sum += (data.data.beaute >= 0) ? (data.data.beaute - 10) : 0; - data.data.caracSum = sum; + /* -- partie spécifique aux personnages -- */ - // Force empty arme, at least for Esquive - if (data.itemsByType.arme == undefined) data.itemsByType.arme = []; - for (const arme of data.itemsByType.arme) { - arme.data.niveau = 0; // Per default, TODO to be fixed - for (const melee of data.competenceByCategory.melee) { - if (melee.name == arme.data.competence) - arme.data.niveau = melee.data.niveau - } - for (const tir of data.competenceByCategory.tir) { - if (tir.name == arme.data.competence) - arme.data.niveau = tir.data.niveau - } - for (const lancer of data.competenceByCategory.lancer) { - if (lancer.name == arme.data.competence) - arme.data.niveau = lancer.data.niveau - } + const competences = sheetData.itemsByType.competence; + // toujours avoir une liste d'armes (pour mettre esquive et corps à corps) + sheetData.itemsByType.arme = sheetData.itemsByType.arme ?? []; + sheetData.competenceByCategory = Misc.classify(competences, comp => comp.data.categorie); + + sheetData.calc = { + comptageArchetype: RdDItemCompetence.computeResumeArchetype(competences), + competenceXPTotal: RdDItemCompetence.computeTotalXP(competences), + caracTotal: RdDCarac.computeTotal(carac), + // Mise à jour de l'encombrement total et du prix de l'équipement + encTotal: await sheetData.actor.computeEncombrementTotalEtMalusArmure(), + prixTotalEquipement: await sheetData.actor.computePrixTotalEquipement(), + surprise: RdDBonus.find(sheetData.actor.getSurprise(false)).descr, + surEncombrementMessage: (sheetData.data.data.compteurs.surenc.value < 0) ? "Sur-Encombrement!" : "", + fatigue: { + malus: RdDUtility.calculMalusFatigue(sheetData.data.data.sante.fatigue.value, sheetData.data.data.sante.endurance.max), + html: "" + RdDUtility.makeHTMLfatigueMatrix(sheetData.data.data.sante.fatigue.value, sheetData.data.data.sante.endurance.max).html() + "
" + }, + resumeBlessures: sheetData.actor.computeResumeBlessure(sheetData.data.data.blessures), + }; + + competences.forEach(it => it.visible = this.isCompetenceAffichable(it)); + RdDItemCompetence.setLevelUp(competences); + RdDCarac.setLevelUp(carac); + + sheetData.armes = sheetData.itemsByType.arme; + RdDItemArme.computeNiveauArmes(sheetData.armes, competences); + RdDItemArme.ajoutCorpsACorps(sheetData.armes, competences, carac); + sheetData.esquive = RdDItemCompetence.getEsquive(competences); + sheetData.armes = RdDCombatManager.finalizeArmeList(sheetData.armes, competences, carac); + + sheetData.data.data.compteurs.chance.isChance = true; + + + RdDUtility.filterItemsPerTypeForSheet(sheetData); + + sheetData.tmr = { + sortsReserve: sheetData.data.data.reve.reserve.list, + rencontres: sheetData.data.data.reve.rencontre.list, + caseSpeciales: sheetData.itemsByType.casetmr } - // To avoid armour and so on... - data.data.combat = duplicate(RdDUtility.checkNull(data.itemsByType['arme'])); - data.data.combat = RdDCombatManager.finalizeArmeList(data.data.combat, data.itemsByType.competence, data.data.carac); + RdDUtility.buildArbreDeConteneur(this, sheetData); - data.esquive = { name: "Esquive", niveau: data.competenceByCategory?.melee.find(it => it.name == 'Esquive')?.data.niveau ?? -6}; - let corpsACorps = data.competenceByCategory?.melee.find(it => it.name == 'Corps à corps'); - if (corpsACorps) { - let cc_init = RdDCombatManager.calculInitiative(corpsACorps.data.niveau, data.data.carac['melee'].value); - data.data.combat.push(RdDItemArme.mainsNues({ niveau: corpsACorps.data.niveau, initiative: cc_init })); - } - this.armesList = duplicate(data.data.combat); - - caracList.isTaille = true; // To avoid button link; - let compteursList = data.data.data.compteurs - compteursList.chance.isChance = true; - data.data.data.blessures.resume = this.actor.computeResumeBlessure(data.data.data.blessures); - - // Mise à jour de l'encombrement total et du prix de l'équipement - this.actor.computeEncombrementTotalEtMalusArmure(); - this.actor.computePrixTotalEquipement(); - - // Common data - data.data.competenceByCategory = data.competenceByCategory; - data.data.encTotal = this.actor.encTotal; - data.data.prixTotalEquipement = this.actor.prixTotalEquipement; - data.data.surprise = RdDBonus.find(this.actor.getSurprise(false)).descr; - data.data.isGM = game.user.isGM; - data.ajustementsConditions = CONFIG.RDD.ajustementsConditions; - data.difficultesLibres = CONFIG.RDD.difficultesLibres; - - // low is normal, this the base used to compute the grid. - data.data.fatigue = { - malus: RdDUtility.calculMalusFatigue(data.data.data.sante.fatigue.value, data.data.data.sante.endurance.max), - html: "" + RdDUtility.makeHTMLfatigueMatrix(data.data.data.sante.fatigue.value, data.data.data.sante.endurance.max).html() + "
" + sheetData.subacteurs = { + vehiculesList: sheetData.actor.buildVehiculesList(), + montures: sheetData.actor.buildMonturesList(), + suivants: sheetData.actor.buildSuivantsList() } - RdDUtility.filterItemsPerTypeForSheet(data); - data.data.sortReserve = data.data.data.reve.reserve.list; - data.data.rencontres = duplicate(data.data.data.reve.rencontre.list); - data.data.caseSpeciales = data.itemsByType['casetmr']; - RdDUtility.buildArbreDeConteneur(this, data); - data.data.surEncombrementMessage = (data.data.data.compteurs.surenc.value < 0) ? "Sur-Encombrement!" : ""; - data.data.vehiculesList = this.actor.buildVehiculesList(); - data.data.monturesList = this.actor.buildMonturesList(); - data.data.suivantsList = this.actor.buildSuivantsList(); - return data; + // conserver la liste des armes + this.armesList = sheetData.armes; + return sheetData; + } + + computeNiveauArme(armes, competences) { + for (const arme of armes) { + const compArme = competences.find(it => it.name == arme.data.competence); + arme.data.niveau = compArme?.data.niveau ?? -8; + } + } + + isCompetenceAffichable(competence) { + return !this.options.showCompNiveauBase || !RdDItemCompetence.isNiveauBase(competence); } /* -------------------------------------------- */ async _onDrop(event) { let toSuper = await RdDUtility.processItemDropEvent(this, event); - if ( toSuper) { + if (toSuper) { super._onDrop(event); } } @@ -215,12 +186,12 @@ export class RdDActorSheet extends ActorSheet { html.find('.item-delete').click(ev => { const li = $(ev.currentTarget).parents(".item"); RdDUtility.confirmerSuppression(this, li); - }); + }); html.find('.subacteur-delete').click(ev => { const li = $(ev.currentTarget).parents(".item"); RdDUtility.confirmerSuppressionSubacteur(this, li); }); - + html.find('#encaisser-direct').click(ev => { this.actor.encaisser(); }); @@ -337,12 +308,12 @@ export class RdDActorSheet extends ActorSheet { html.find('.subacteur-label a').click((event) => { const li = $(event.currentTarget).parents(".item"); let actorId = li.data('actor-id'); - let actor = game.actors.get( actorId) ; - if ( actor ) { + let actor = game.actors.get(actorId); + if (actor) { actor.sheet.render(true); } }); - + // Points de reve actuel html.find('.ptreve-actuel a').click((event) => { this.actor.rollCarac('reve-actuel'); diff --git a/module/actor-vehicule-sheet.js b/module/actor-vehicule-sheet.js index a9306968..0e6a366a 100644 --- a/module/actor-vehicule-sheet.js +++ b/module/actor-vehicule-sheet.js @@ -24,30 +24,26 @@ export class RdDActorVehiculeSheet extends ActorSheet { }); } - /* -------------------------------------------- */ - _checkNull(items) { - if (items && items.length) { - return items; - } - return []; - } - /* -------------------------------------------- */ getData() { - let data = super.getData(); + let sheetData = super.getData(); + sheetData.options = { + isGM: game.user.isGM + }; - data.itemsByType = Misc.classify(data.items); + sheetData.itemsByType = Misc.classify(sheetData.items); - RdDUtility.filterItemsPerTypeForSheet(data); - RdDUtility.buildArbreDeConteneur(this, data); + RdDUtility.filterItemsPerTypeForSheet(sheetData); + RdDUtility.buildArbreDeConteneur(this, sheetData); this.actor.computeEncombrementTotalEtMalusArmure(); - data.data.isGM = game.user.isGM; - data.data.surEncombrementMessage = (this.encTotal > data.capacite_encombrement) ? "Sur-Encombrement!" : ""; + sheetData.calc = { + surEncombrementMessage: (this.encTotal > sheetData.capacite_encombrement) ? "Sur-Encombrement!" : "" + } - console.log("DATA", data); + console.log("DATA", sheetData); - return data; + return sheetData; } /* -------------------------------------------- */ diff --git a/module/actor.js b/module/actor.js index b6c9ed62..68e8db57 100644 --- a/module/actor.js +++ b/module/actor.js @@ -328,7 +328,7 @@ export class RdDActor extends Actor { ); if (index >=0 ) { reserve.list.splice(index,1); - await this.update({ "data.reve.reserve": reserve }); + await this.update({ "data.data.reve.reserve": reserve }); } } @@ -358,7 +358,7 @@ export class RdDActor extends Actor { await this._recupererBlessures(message, "legere", blessures.legeres.liste.filter(b => b.active), []); await this._recupererBlessures(message, "grave", blessures.graves.liste.filter(b => b.active), blessures.legeres.liste); await this._recupererBlessures(message, "critique", blessures.critiques.liste.filter(b => b.active), blessures.graves.liste); - await this.update({ "data.blessures": blessures }); + await this.update({ "data.data.blessures": blessures }); await this._recupererVie(message); await this.jetDeMoral('neutre'); @@ -475,7 +475,7 @@ export class RdDActor extends Actor { this._supprimerBlessure(blessure); } } - await this.update({ "data.blessures": blessures }); + await this.update({ "data.data.blessures": blessures }); } if (this.isPersonnage()) { await this.setEthylisme(1); @@ -486,7 +486,7 @@ export class RdDActor extends Actor { if (this.data.data.sante.fatigue) { let fatigue = duplicate(this.data.data.sante.fatigue) fatigue.value = 0; - await this.update({ "data.sante.fatigue": fatigue }); + await this.update({ "data.data.sante.fatigue": fatigue }); } } ChatMessage.create(message); @@ -522,7 +522,7 @@ export class RdDActor extends Actor { message.content += `Vous dégrisez un peu (${RdDUtility.getNomEthylisme(ethylisme.value)}). `; } } - await this.update({ "data.compteurs.ethylisme": ethylisme }); + await this.update({ "data.data.compteurs.ethylisme": ethylisme }); } /* -------------------------------------------- */ @@ -544,7 +544,7 @@ export class RdDActor extends Actor { } fatigue.value = Math.max(fatigueMin, this._calculRecuperationSegment(fatigue.value)); console.log("recupererFatigue", fatigue) - await this.update({ "data.sante.fatigue": fatigue }); + await this.update({ "data.data.sante.fatigue": fatigue }); if (fatigue.value == 0) { message.content += "Vous êtes complêtement reposé. "; } @@ -686,7 +686,7 @@ export class RdDActor extends Actor { async sortMisEnReserve(rollData, sort) { let reserve = duplicate(this.data.data.reve.reserve); reserve.list.push({ coord: rollData.tmr.coord, sort: sort, draconic: duplicate(rollData.competence) }); - await this.update({ "data.reve.reserve": reserve }); + await this.update({ "data.data.reve.reserve": reserve }); this.currentTMR.updateTokens(); } @@ -802,14 +802,14 @@ export class RdDActor extends Actor { //console.log("Update", fieldName, fieldValue); let compteurs = duplicate(this.data.data.compteurs); compteurs[fieldName].value = fieldValue; - await this.update({ "data.compteurs": compteurs }); + await this.update({ "data.data.compteurs": compteurs }); } /* -------------------------------------------- */ async updateProtectionValue(fieldName, fieldValue) { let attributs = duplicate(this.data.data.attributs); attributs[fieldName].value = fieldValue; - await this.update({ "data.attributs": attributs }); + await this.update({ "data.data.attributs": attributs }); } /* -------------------------------------------- */ @@ -1018,8 +1018,9 @@ export class RdDActor extends Actor { // Mise à jour éventuelle du malus armure if (this.data.data.attributs && this.data.data.attributs.malusarmure && newMalusArmure != malusArmureData.value) { malusArmureData.value = newMalusArmure; - await this.update({ "data.attributs.malusarmure": malusArmureData }); + await this.update({ "data.data.attributs.malusarmure": malusArmureData }); } + return this.encTotal; } /* -------------------------------------------- */ @@ -1037,6 +1038,7 @@ export class RdDActor extends Actor { } // Mise à jour valeur totale de l'équipement this.prixTotalEquipement = prixTotalEquipement; + return this.prixTotalEquipement; } /* -------------------------------------------- */ @@ -1104,7 +1106,7 @@ export class RdDActor extends Actor { ret = "souffle"; } - await this.update({ "data.reve.refoulement": refoulement }); + await this.update({ "data.data.reve.refoulement": refoulement }); return ret; } @@ -1129,7 +1131,7 @@ export class RdDActor extends Actor { queue = await RdDRollTables.getOmbre(); let myReve = duplicate(this.data.data.reve.reve); myReve.thanatosused = false; - await this.update({ "data.reve.reve": myReve } ); + await this.update({ "data.data.reve.reve": myReve } ); } else { queue = await RdDRollTables.getQueue(); @@ -1181,7 +1183,7 @@ export class RdDActor extends Actor { if (newTable.length != len) { rencontres.list = newTable; //console.log("Result: ", rencontres); - await this.update({ "data.reve.rencontre": rencontres }); + await this.update({ "data.data.reve.rencontre": rencontres }); } } @@ -1197,7 +1199,7 @@ export class RdDActor extends Actor { } if (!already) { rencontres.list.push(currentRencontre); - await this.update({ "data.reve.rencontre": rencontres }); + await this.update({ "data.data.reve.rencontre": rencontres }); } } @@ -1209,19 +1211,19 @@ export class RdDActor extends Actor { if ( i != rencontreKey) newList.push( list[i]); } - await this.update({ "data.reve.rencontre.list": newList }); + await this.update({ "data.data.reve.rencontre.list": newList }); } /* -------------------------------------------- */ async updateCoordTMR(coord) { - await this.update({ "data.reve.tmrpos.coord": coord }); + await this.update({ "data.data.reve.tmrpos.coord": coord }); } /* -------------------------------------------- */ async reveActuelIncDec(value) { let reve = duplicate(this.data.data.reve.reve); reve.value = Math.max(reve.value + value, 0); - await this.update({ "data.reve.reve": reve }); + await this.update({ "data.data.reve.reve": reve }); } /* -------------------------------------------- */ @@ -1235,16 +1237,16 @@ export class RdDActor extends Actor { /* -------------------------------------------- */ async setPointsDeSeuil(value) { - let seuil = duplicate(this.data.data.reve.seuil); - seuil.value = value; - await this.update({ "data.reve.seuil": seuil }); + // let seuil = duplicate(this.data.data.reve.seuil); + // seuil.value = value; + await this.update({ "data.data.reve.seuil.value": value }); } /* -------------------------------------------- */ async setPointsDeChance(value) { let chance = duplicate(this.data.data.compteurs.chance); chance.value = value; - await this.update({ "data.compteurs.chance": chance }); + await this.update({ "data.data.compteurs.chance": chance }); } /* -------------------------------------------- */ @@ -1285,7 +1287,7 @@ export class RdDActor extends Actor { let sonneData = duplicate(this.data.data.sante.sonne); sonneData.value = sonne; sonneData.round = round; - await this.update({ "data.sante.sonne": sonneData }); + await this.update({ "data.data.sante.sonne": sonneData }); } /* -------------------------------------------- */ @@ -1307,7 +1309,7 @@ export class RdDActor extends Actor { } if (roll.total == 1) { let xp = Misc.toInt(this.data.data.carac.constitution.xp) + 1; - this.update({ "data.carac.constitution.xp": xp }); // +1 XP ! + this.update({ "data.data.carac.constitution.xp": xp }); // +1 XP ! ChatMessage.create( { content: `${this.name} a obenu 1 sur son Jet d'Endurance et a gagné 1 point d'Expérience en Constitution. Ce point d'XP a été ajouté automatiquement).`}); } if (result.sonne) { @@ -1340,7 +1342,7 @@ export class RdDActor extends Actor { msgText += `et gagne 1 Point d'Experience en Constitution`; let constit = duplicate(this.data.data.carac.constitution) constit.xp += 1; - await this.update({ "data.carac.constitution": constit }); + await this.update({ "data.data.carac.constitution": constit }); } } else { msgText += `${this.name} a échoué son Jet d'Endurance et devient Sonné`; @@ -1424,7 +1426,7 @@ export class RdDActor extends Actor { if (sante.fatigue && fatigue > 0) { sante.fatigue.value = Math.max(sante.fatigue.value + fatigue, this._computeFatigueMin()); } - await this.update({ "data.sante": sante }); + await this.update({ "data.data.sante": sante }); if (this.isDead()) { await this.addStatusEffectById('dead'); } @@ -1537,7 +1539,7 @@ export class RdDActor extends Actor { if (degre == 1) { ethylisme.jet_moral = false; } - await this.update({ "data.compteurs.ethylisme": ethylisme }); + await this.update({ "data.data.compteurs.ethylisme": ethylisme }); } /* -------------------------------------------- */ @@ -1649,7 +1651,7 @@ export class RdDActor extends Actor { compteurs.experience.value += stressRollData.xp; compteurs.dissolution.value = dissolution - perteDissolution; compteurs.exaltation.value = 0; - await this.update({ "data.compteurs": compteurs }); + await this.update({ "data.data.compteurs": compteurs }); } /* -------------------------------------------- */ @@ -1969,7 +1971,7 @@ export class RdDActor extends Actor { } myReve.value = Math.max(myReve.value - rollData.depenseReve, 0); - await this.update({ "data.reve.reve": myReve }); + await this.update({ "data.data.reve.reve": myReve }); if (closeTMR) { this.currentTMR.close(); // Close TMR ! @@ -2311,7 +2313,7 @@ export class RdDActor extends Actor { if (limit) { chance.value = Math.min(chance.value, this.getChance()) } - await this.update({ "data.compteurs.chance": chance }); + await this.update({ "data.data.compteurs.chance": chance }); } /* -------------------------------------------- */ @@ -2320,7 +2322,7 @@ export class RdDActor extends Actor { ChatMessage.create({ content: `${this.name} a fait appel à la Destinée !` }); let destinee = duplicate(this.data.data.compteurs.destinee); destinee.value = destinee.value - 1; - await this.update({ "data.compteurs.destinee": destinee }); + await this.update({ "data.data.compteurs.destinee": destinee }); onSuccess(); } else { @@ -2373,7 +2375,7 @@ export class RdDActor extends Actor { let selectedCarac = RdDActor._findCaracByName(carac, caracName); if (!selectedCarac.derivee) { selectedCarac.xp = Misc.toInt(selectedCarac.xp) + xpCarac; - await this.update({ "data.carac": carac }); + await this.update({ "data.data.carac": carac }); } else { ChatMessage.create({ content: `Vous avez ${xpCarac} à répartir pour la caractéristique dérivée ${caracName}. Vous devez le faire manuellement.`, @@ -2751,7 +2753,7 @@ export class RdDActor extends Actor { } encaissement.endurance = Math.max(encaissement.endurance, -endActuelle); - this.update({ "data.blessures": blessures }); + this.update({ "data.data.blessures": blessures }); } /* -------------------------------------------- */ @@ -2857,7 +2859,7 @@ export class RdDActor extends Actor { return; } resonnance.actors.push(attaquant._id); - await this.update({ "data.sante.resonnance": resonnance }); + await this.update({ "data.data.sante.resonnance": resonnance }); return; } /* -------------------------------------------- */ @@ -3151,7 +3153,7 @@ export class RdDActor extends Actor { this.deleteStatusEffectById(statusEffect.id, options); const effet = duplicate(statusEffect); effet["flags.core.statusId"] = effet.id; - await this.createEmbeddedDocuments('ActiveEffect', effet, options); + await this.createEmbeddedDocuments('ActiveEffect', [effet], options); this.applyActiveEffects(); } diff --git a/module/item-arme.js b/module/item-arme.js index 68e3cafb..00e6fe8b 100644 --- a/module/item-arme.js +++ b/module/item-arme.js @@ -1,4 +1,5 @@ import { RdDItemCompetenceCreature } from "./item-competencecreature.js" +import { RdDCombatManager } from "./rdd-combat.js" const nomCategorieParade = { "sans-armes": "Sans arme / armes naturelles", @@ -167,4 +168,24 @@ export class RdDItemArme extends Item { } return mainsNues } -} + + static ajoutCorpsACorps(armes, competences, carac) { + let corpsACorps = competences.find(it => it.name == 'Corps à corps'); + if (corpsACorps) { + let cc_init = RdDCombatManager.calculInitiative(corpsACorps.data.niveau, carac['melee'].value); + armes.push(RdDItemArme.mainsNues({ niveau: corpsACorps.data.niveau, initiative: cc_init })); + } + } + + static computeNiveauArmes(armes, competences) { + for (const arme of armes) { + arme.data.niveau = RdDItemArme.computeNiveauArme(arme, competences); + } + } + + static computeNiveauArme(arme, competences) { + const compName = arme.data.competence; + const compArme = competences.find(it => it.name == compName); + return compArme?.data.niveau ?? -8; + } +} \ No newline at end of file diff --git a/module/item-competence.js b/module/item-competence.js index deca47f1..40d32513 100644 --- a/module/item-competence.js +++ b/module/item-competence.js @@ -1,3 +1,4 @@ +import { RdDUtility } from "./rdd-utility.js"; const competenceTroncs = [["Esquive", "Dague", "Corps à corps"], ["Epée à 1 main", "Epée à 2 mains", "Hache à 1 main", "Hache à 2 mains", "Lance", "Masse à 1 main", "Masse à 2 mains"]]; @@ -55,33 +56,70 @@ export class RdDItemCompetence extends Item { } return false; } + /* -------------------------------------------- */ - static computeCompetenceXPCost(competence) { - let xp = RdDItemCompetence.getDeltaXp(competence.data.base, competence.data.niveau ?? competence.data.base); - xp += competence.data.xp ?? 0; - if ( competence.name.includes('Thanatos') ) xp *= 2; /// Thanatos compte double ! - xp += competence.data.xp_sort ?? 0; - return xp; + static computeTotalXP(competences) { + const total = competences.map(c => RdDItemCompetence.computeXP(c)) + .reduce((a, b) => a + b, 0); + const economieTronc = RdDItemCompetence.computeEconomieXPTronc(competences); + return total - economieTronc; } /* -------------------------------------------- */ - static computeEconomieCompetenceTroncXP(competences) { - let economie = 0; - for (let troncList of competenceTroncs) { - let list = troncList.map(name => RdDItemCompetence.findCompetence(competences, name)) - .sort( (c1, c2) => c2.data.niveau - c1.data.niveau); // tri du plus haut au plus bas - list.splice(0,1); // ignorer la plus élevée - list.forEach(c => { - economie += RdDItemCompetence.getDeltaXp(c.data.base, Math.min(c.data.niveau, 0) ); - }); - } - return economie; + static computeXP(competence) { + // Thanatos compte double ! + const factor = competence.name.includes('Thanatos') ? 2 : 1 + const xpNiveau = RdDItemCompetence.computeDeltaXP(competence.data.base, competence.data.niveau ?? competence.data.base); + const xp = competence.data.xp ?? 0; + const xpSort = competence.data.xp_sort ?? 0; + return factor * (xpNiveau + xp) + xpSort; + } + + /* -------------------------------------------- */ + static computeEconomieXPTronc(competences) { + return competenceTroncs.map( + list => list.map(name => RdDItemCompetence.findCompetence(competences, name)) + // calcul du coût xp jusqu'au niveau 0 maximum + .map(it => RdDItemCompetence.computeDeltaXP(it.data.base, Math.min(it.data.niveau, 0))) + .sort((a, b) => b - a) // tri descendant + .splice(0, 1) // ignorer le coût xp le plus élevé + .reduce((a, b) => a + b, 0) + ).reduce((a, b) => a + b, 0); + } + + static setLevelUp(competences) { + competences.forEach(it => { + it.data.xpNext = RdDItemCompetence.getCompetenceNextXp(it.data.niveau); + it.data.isLevelUp = it.data.xp >= it.data.xpNext; + }); + } + + static computeResumeArchetype(competences) { + const archetype = RdDUtility.getLimitesArchetypes(); + competences.forEach(item => { + let niveau = (item.data.niveau_archetype < 0) ? 0 : item.data.niveau_archetype; + archetype[niveau] = archetype[niveau] ?? { "niveau": niveau, "nombreMax": 0, "nombre": 0 }; + archetype[niveau].nombre = (archetype[niveau]?.nombre ?? 0) + 1; + }); + return archetype; + } + + static isVisible(competence) { + return Number(competence.data.niveau) != RdDUtility.getCategorieNiveauBase(competence.data.categorie); + } + + static isNiveauBase(competence) { + return Number(competence.data.niveau) == RdDUtility.getCategorieNiveauBase(competence.data.categorie); } /* -------------------------------------------- */ static findCompetence(list, name) { name = name.toLowerCase(); - return list.find(item => item.name.toLowerCase() == name && (item.type == "competence" || item.type == "competencecreature")) + return list.find(it => it.name.toLowerCase() == name && (it.type == "competence" || it.type == "competencecreature")) + } + + static getEsquive(competences) { + return { name: "Esquive", niveau: RdDItemCompetence.findCompetence(competences, 'Esquive')?.data.niveau ?? -6 }; } /* -------------------------------------------- */ @@ -96,14 +134,14 @@ export class RdDItemCompetence extends Item { } /* -------------------------------------------- */ - static getDeltaXp(from, to) { + static computeDeltaXP(from, to) { RdDItemCompetence._valideNiveau(from); RdDItemCompetence._valideNiveau(to); return competence_xp_cumul[to] - competence_xp_cumul[from]; } /* -------------------------------------------- */ - static _valideNiveau(niveau){ + static _valideNiveau(niveau) { if (niveau < -11 || niveau > competence_niveau_max) { console.warn("Niveau en dehors des niveaux de compétences: [-11, " + competence_niveau_max + "]", niveau) } diff --git a/module/item-sheet.js b/module/item-sheet.js index 3e8f43ff..a5275f94 100644 --- a/module/item-sheet.js +++ b/module/item-sheet.js @@ -47,27 +47,27 @@ export class RdDItemSheet extends ItemSheet { /* -------------------------------------------- */ async getData() { - let data = super.getData(); + let sheetData = super.getData(); - data.categorieCompetences = RdDUtility.getCategorieCompetences(); - if ( data.item.type == 'tache' || data.item.type == 'livre' || data.item.type == 'meditation' || data.item.type == 'oeuvre') { - data.caracList = duplicate(game.system.model.Actor.personnage.carac); - data.competences = await RdDUtility.loadCompendiumNames( 'foundryvtt-reve-de-dragon.competences' ); + sheetData.categorieCompetences = RdDUtility.getCategorieCompetences(); + if ( sheetData.item.type == 'tache' || sheetData.item.type == 'livre' || sheetData.item.type == 'meditation' || sheetData.item.type == 'oeuvre') { + sheetData.caracList = duplicate(game.system.model.Actor.personnage.carac); + sheetData.competences = await RdDUtility.loadCompendiumNames( 'foundryvtt-reve-de-dragon.competences' ); } - if (data.item.type == 'arme') { - data.competences = await RdDUtility.loadCompendium( 'foundryvtt-reve-de-dragon.competences', it => RdDItemCompetence.isCompetenceArme(it)); + if (sheetData.item.type == 'arme') { + sheetData.competences = await RdDUtility.loadCompendium( 'foundryvtt-reve-de-dragon.competences', it => RdDItemCompetence.isCompetenceArme(it)); } - if ( data.item.type == 'recettealchimique' ) { - RdDAlchimie.processManipulation(data.item, this.actor && this.actor.id ); + if ( sheetData.item.type == 'recettealchimique' ) { + RdDAlchimie.processManipulation(sheetData.item, this.actor && this.actor.id ); } if ( this.actor ) { - data.isOwned = true; - data.actorId = this.actor.id; + sheetData.isOwned = true; + sheetData.actorId = this.actor.id; } - data.bonusCaseList = RdDItemSort.getBonusCaseList(data, true); - data.isGM = game.user.isGM; // Pour verrouiller certaines éditions + sheetData.bonusCaseList = RdDItemSort.getBonusCaseList(sheetData, true); + sheetData.isGM = game.user.isGM; // Pour verrouiller certaines éditions - return data; + return sheetData; } /* -------------------------------------------- */ @@ -112,7 +112,7 @@ export class RdDItemSheet extends ItemSheet { async _onClickSelectCategorie(event) { event.preventDefault(); - let level = RdDUtility.getLevelCategory(event.currentTarget.value); + let level = RdDUtility.getCategorieNiveauBase(event.currentTarget.value); this.object.data.data.base = level; $("#base").val( level ); } diff --git a/module/rdd-carac.js b/module/rdd-carac.js index 337212b2..c8472f46 100644 --- a/module/rdd-carac.js +++ b/module/rdd-carac.js @@ -1,4 +1,5 @@ import { Grammar } from "./grammar.js"; +import { RdDUtility } from "./rdd-utility.js"; export class RdDCarac { @@ -20,6 +21,21 @@ export class RdDCarac { RdDCarac.isChance(selectedCarac) || (RdDCarac.isReve(selectedCarac) && !competence); } + + static computeTotal(carac, beaute=undefined) { + const total = Object.values(carac).filter(c => !c.derivee) + .map(it => parseInt(it.value)) + .reduce((a, b) => a + b, 0); + const beauteSuperieur10 = Math.max((beaute ?? 10) - 10, 0); + return total + beauteSuperieur10; + } + + static setLevelUp(carac) { + Object.values(carac).forEach(it => { + it.xpNext = RdDUtility.getCaracNextXp(it.value); + it.isLevelUp = (it.xp >= it.xpNext); + }); + } /** * L’appel à la chance n’est possible que pour recommencer les jets d’actions physiques : diff --git a/module/rdd-commands.js b/module/rdd-commands.js index a10392ff..8a091058 100644 --- a/module/rdd-commands.js +++ b/module/rdd-commands.js @@ -257,7 +257,7 @@ export class RdDCommands { if (params && (params.length == 1 || params.length == 2)) { let to = params.length == 1 ? Number(params[0]) : Number(params[1]); let from = params.length == 1 ? to - 1 : Number(params[0]); - RdDCommands._chatAnswer(msg, `Coût pour passer une compétence de ${from} à ${to}: ${RdDItemCompetence.getDeltaXp(from, to)}`); + RdDCommands._chatAnswer(msg, `Coût pour passer une compétence de ${from} à ${to}: ${RdDItemCompetence.computeDeltaXP(from, to)}`); } else { return false; diff --git a/module/rdd-utility.js b/module/rdd-utility.js index 1cf0e2c9..fcce0eac 100644 --- a/module/rdd-utility.js +++ b/module/rdd-utility.js @@ -12,14 +12,14 @@ import { Grammar } from "./grammar.js"; /* -------------------------------------------- */ const categorieCompetences = { - "generale": { level: "-4", label: "Générales" }, - "particuliere": { level: "-8", label: "Particulières" }, - "specialisee": { level: "-11", label: "Spécialisées" }, - "connaissance": { level: "-11", label: "Connaissances" }, - "draconic": { level: "-11", label: "Draconics" }, - "melee": { level: "-6", label: "Mêlée" }, - "tir": { level: "-8", label: "Tir" }, - "lancer": { level: "-8", label: "Lancer" } + "generale": { level: -4, label: "Générales" }, + "particuliere": { level: -8, label: "Particulières" }, + "specialisee": { level: -11, label: "Spécialisées" }, + "connaissance": { level: -11, label: "Connaissances" }, + "draconic": { level: -11, label: "Draconics" }, + "melee": { level: -6, label: "Mêlée" }, + "tir": { level: -8, label: "Tir" }, + "lancer": { level: -8, label: "Lancer" } } /* -------------------------------------------- */ @@ -267,10 +267,7 @@ export class RdDUtility { /* -------------------------------------------- */ static checkNull(items) { - if (items && items.length) { - return items; - } - return []; + return items ?? []; } /* -------------------------------------------- */ @@ -296,32 +293,39 @@ export class RdDUtility { } /* -------------------------------------------- */ - static filterItemsPerTypeForSheet(data) { - data.data.materiel = this.checkNull(data.itemsByType['objet']); - data.data.conteneurs = this.checkNull(data.itemsByType['conteneur']); - data.data.armes = this.checkNull(data.itemsByType['arme']); - data.data.armures = this.checkNull(data.itemsByType['armure']); - data.data.livres = this.checkNull(data.itemsByType['livre']); - data.data.potions = this.checkNull(data.itemsByType['potion']); - data.data.ingredients = this.checkNull(data.itemsByType['ingredient']); - data.data.munitions = this.checkNull(data.itemsByType['munition']); - data.data.herbes = this.checkNull(data.itemsByType['herbe']); - data.data.sorts = this.checkNull(data.itemsByType['sort']); - data.data.queues = this.checkNull(data.itemsByType['queue']); - data.data.souffles = this.checkNull(data.itemsByType['souffle']); - data.data.ombres = this.checkNull(data.itemsByType['ombre']); - data.data.tetes = this.checkNull(data.itemsByType['tete']); - data.data.taches = this.checkNull(data.itemsByType['tache']); - data.data.monnaie = this.checkNull(data.itemsByType['monnaie']); - data.data.meditations = this.checkNull(data.itemsByType['meditation']); - data.data.chants = this.checkNull(data.itemsByType['chant']); - data.data.danses = this.checkNull(data.itemsByType['danse']); - data.data.musiques = this.checkNull(data.itemsByType['musique']); - data.data.oeuvres = this.checkNull(data.itemsByType['oeuvre']); - data.data.jeux = this.checkNull(data.itemsByType['jeu']); - data.data.recettescuisine = this.checkNull(data.itemsByType['recettecuisine']); - data.data.recettesAlchimiques = this.checkNull(data.itemsByType['recettealchimique']); - data.data.objets = data.data.conteneurs.concat(data.data.materiel).concat(data.data.armes).concat(data.data.armures).concat(data.data.munitions).concat(data.data.livres).concat(data.data.potions).concat(data.data.herbes).concat(data.data.ingredients); + static filterItemsPerTypeForSheet(sheetData) { + sheetData.data.materiel = this.checkNull(sheetData.itemsByType['objet']); + sheetData.data.conteneurs = this.checkNull(sheetData.itemsByType['conteneur']); + sheetData.data.armes = this.checkNull(sheetData.itemsByType['arme']); + sheetData.data.armures = this.checkNull(sheetData.itemsByType['armure']); + sheetData.data.livres = this.checkNull(sheetData.itemsByType['livre']); + sheetData.data.potions = this.checkNull(sheetData.itemsByType['potion']); + sheetData.data.ingredients = this.checkNull(sheetData.itemsByType['ingredient']); + sheetData.data.munitions = this.checkNull(sheetData.itemsByType['munition']); + sheetData.data.herbes = this.checkNull(sheetData.itemsByType['herbe']); + sheetData.data.sorts = this.checkNull(sheetData.itemsByType['sort']); + sheetData.data.queues = this.checkNull(sheetData.itemsByType['queue']); + sheetData.data.souffles = this.checkNull(sheetData.itemsByType['souffle']); + sheetData.data.ombres = this.checkNull(sheetData.itemsByType['ombre']); + sheetData.data.tetes = this.checkNull(sheetData.itemsByType['tete']); + sheetData.data.taches = this.checkNull(sheetData.itemsByType['tache']); + sheetData.data.monnaie = this.checkNull(sheetData.itemsByType['monnaie']); + sheetData.data.meditations = this.checkNull(sheetData.itemsByType['meditation']); + sheetData.data.chants = this.checkNull(sheetData.itemsByType['chant']); + sheetData.data.danses = this.checkNull(sheetData.itemsByType['danse']); + sheetData.data.musiques = this.checkNull(sheetData.itemsByType['musique']); + sheetData.data.oeuvres = this.checkNull(sheetData.itemsByType['oeuvre']); + sheetData.data.jeux = this.checkNull(sheetData.itemsByType['jeu']); + sheetData.data.recettescuisine = this.checkNull(sheetData.itemsByType['recettecuisine']); + sheetData.data.recettesAlchimiques = this.checkNull(sheetData.itemsByType['recettealchimique']); + sheetData.data.objets = sheetData.data.conteneurs.concat(sheetData.data.materiel) + .concat(sheetData.data.armes) + .concat(sheetData.data.armures) + .concat(sheetData.data.munitions) + .concat(sheetData.data.livres) + .concat(sheetData.data.potions) + .concat(sheetData.data.herbes) + .concat(sheetData.data.ingredients); } /* -------------------------------------------- */ @@ -352,16 +356,16 @@ export class RdDUtility { } /* -------------------------------------------- */ - static buildArbreDeConteneur(actorSheet, data) { + static buildArbreDeConteneur(actorSheet, sheetData) { actorSheet.objetVersConteneur = {}; // Table de hash locale pour recupération rapide du conteneur parent (si existant) // Attribution des objets aux conteneurs - for (let conteneur of data.data.conteneurs) { + for (let conteneur of sheetData.data.conteneurs) { conteneur.subItems = []; if (!conteneur.data.encTotal) conteneur.data.encTotal = 0; //conteneur.data.encTotal = ; Deja calculé if (conteneur.data.contenu) { for (let id of conteneur.data.contenu) { - let objet = data.data.objets.find(objet => (id == objet._id)); + let objet = sheetData.data.objets.find(objet => (id == objet._id)); if (objet) { if (!objet.data.encombrement) objet.data.encombrement = 0; // Auto-fix objet.estContenu = true; // Permet de filtrer ce qifui est porté dans le template @@ -373,8 +377,8 @@ export class RdDUtility { } } // Construit la liste des conteneurs de niveau 1 (c'est à dire non contenu eux-même dans un conteneur) - let newConteneurs = data.data.conteneurs.filter(function (conteneur, index, arr) { return !conteneur.estContenu }); - data.data.conteneurs = newConteneurs; + let newConteneurs = sheetData.data.conteneurs.filter(function (conteneur, index, arr) { return !conteneur.estContenu }); + sheetData.data.conteneurs = newConteneurs; //console.log(newConteneurs); } @@ -406,10 +410,10 @@ export class RdDUtility { static getCategorieCompetences() { return categorieCompetences; } - static getLevelCategory(category) { + static getCategorieNiveauBase(category) { return categorieCompetences[category].level; } - static getLabelCategory(category) { + static getCategorieLabel(category) { return categorieCompetences[category].label; } static getCaracArray() { @@ -609,7 +613,7 @@ export class RdDUtility { let compendiumItems = await RdDUtility.loadCompendiumNames(compendium); const pack = game.packs.get(compendium); let list = []; - for (let compendiumItem of compendiumItems) { + for (let compendiumItem of compendiumItems) { await pack.getDocument(compendiumItem._id).then(it => { const item = it.data; if (filter(item)) { diff --git a/packs/rappel-des-regles.db b/packs/rappel-des-regles.db index 65ea77b0..5ca0c0b9 100644 --- a/packs/rappel-des-regles.db +++ b/packs/rappel-des-regles.db @@ -5,3 +5,4 @@ {"_id":"K42KNuBHizMppV5F","name":"Tourbillon rouge","permission":{"default":0,"jOzRscDxoXZWpGS6":3},"flags":{},"content":"

Le Tourbillon rouge est un tourbillon vampire. Il fonctionne comme les Tourbillons blancs et noirs, sauf que chaque round tant qu’il n’est pas maîtrisé fait dériver le demi-rêve de 4 cases, draine 2 points de rêve et 1 point de vie.

\n

On peut se dérober normalement devant ces rencontres ou les refouler. Toutefois, leur refoulement coûte 2 points au lieu d’un, sauf le Tourbillon rouge qui en coûte 3.

"} {"_id":"ZmMoOtUdgjMd4cNs","name":"Conflit de sens","permission":{"default":0,"jOzRscDxoXZWpGS6":3},"flags":{},"content":"

Chaque fois que le spectateur d’une illusion visuelle est en proie à un conflit de sens, c’est-à-dire quand il y a contradiction ou impossibilité entre ce que lui indiquent ses autres sens et sa vue, l’illusion suscite une brume limbaire. C’est une sorte de flou ectoplasmique de couleur gris vert (comme les Limbes) qui restitue la logique à défaut de restituer la réalité. La brume limbaire a la taille et la forme approximative de la chose réelle.

\n

Soit par exemple une porte rendue invisible. Puisqu’elle \"n’existe pas\", on devrait voir soit la continuation du mur, soit ce qu’il y a de l’autre côté. Or ni l’un ni l’autre ne sont du ressort de l’illusion qui, au pied de la lettre, n’est que porte invisible, et non pas invention d’autre chose. Si un spectateur prend conscience de cette anomalie, il voit un rectangle de flou gris-vert se dessiner à la place de la porte, c’est-à-dire ni le mur, ni ce qu’il y a de l’autre côté, ni non plus la porte elle-même. La porte reste donc bien invisible, puisqu’on ne la voit pas, mais pas sa présence. De la même façon, un humanoïde invisible le reste totalement tant qu’il ne commet aucune action ayant pour conséquence un conflit d’interprétation chez un spectateur, auquel cas ce dernier voit apparaître un \"fantôme\" gris-vert justifiant l’action qui vient de se produire. Noter ici aussi que si la présence de l’humanoïde cesse d’être \"invisible\", ce dernier le demeure au sens où son fantôme n’est qu’une silhouette totalement anonyme.

\n

La brume limbaire n’apparaît que pour le spectateur ayant un conflit de sens. Ceux qui ne sont pas victimes d’un tel conflit continuent à voir l’illusion telle qu’elle est. En combat, un attaquant invisible ne suscite une brume limbaire que pour la créature qu’il vient d’attaquer ainsi que pour un témoin ponctuel de l’attaque.

\n

Ce sont les invisibilités qui sont à même de susciter le plus de conflits de sens, mais c’est également possible pour les deux autres illusions visuelles.

\n

Dès que les sens cessent d’être en conflit, la brume limbaire s’estompe et l’on retourne à une illusion réelle et totale, invisibilité ou autre.

\n

La brume limbaire n’est suscitée qu’en cas de conflit de sens, pas d’intellect. Un raisonnement ne peut susciter une brume limbaire, uniquement un conflit avec l’un ou l’autre des quatre autres sens, ouïe, toucher, odorat, goût.

\n

Moins une illusion sollicite de sens, moins elle a de chances de créer un conflit, et plus elle est donc fiable, voire indétectable. Une illusion qui ne s’adresse qu’à la vue (changement de couleur, changement des lettres d’un texte) marche toujours à 100 %.

\n

Les autres illusions, auditives, gustatives et olfactives, ne génèrent jamais de brume limbaire quand bien même elles sont inexplicables.

\n

Une cible donnée ne peut recevoir à la fois qu’une seule illusion visuelle, une seule illusion auditive, une seule illusion olfactive et une seule illusion gustative, soit un maximum de quatre illusions sensorielles différentes.

"} {"_id":"erO7AICiN1LtRyFg","name":"Magie impossible","permission":{"default":0,"jOzRscDxoXZWpGS6":3},"flags":{},"content":"

Tout cas de magie impossible résulte immédiatement en une déchirure du rêve ayant le haut-rêvant pour centre.

\n

Elle peut être violette (déchirure de départ) ou jaune (déchirure d’arrivée). C’est au gardien des rêves de le décider ou de le tirer au sort.

\n

Ses dimensions peuvent faire jusqu’à 100 m de diamètre, à décider ou tirer par le gardien des rêves.

\n

Elle peut ne durer que quelques instants avant de se dissoudre, ou durer indéfiniment, toujours à la décision du gardien des rêves.

\n

De même, c’est à lui de décider du rêve d’arrivée si c’est une déchirure de départ, ou des créatures qui peuvent en surgir si c’est une déchirure d’arrivée. En cas de déchirure de départ (violette), elle emporte immédiatement tout ce qui ne fait pas partie du paysage : objets et créatures.

\n

Seules les constituantes du paysage, végétation, rochers, constructions, demeurent. Noter que si une construction demeure, tous les objets qu’elle contient, meubles et autres, disparaissent.

"} +{"_id":"7uGrUHGdPu0EmIu2","name":"Documentation MJ/Joueurs","content":"

Préambule

\n

Ce système pour Foundry est une implémentation de Rêve de Dragon, un jeu de Denis Gerfaud, publié dans sa troisième édition par \"Le Scriptarium\". Rêve de Dragon est une marque déposée par \"Scriptarium\". Tous les droits leur en reviennent naturellement. 

\n

Merci à Scriptarium (Jidus et Roland Barthelémy) pour l'autorisation d'utilisation des silhouettes de créatures et les Terres Médianes du Rêve.

\n

Crédits : 

\n\n

Pour nous contacter : https://discord.gg/pPSDNJk  , channel #reve-de-dragon

\n

Créer un Personnage

\n

Tout se fait manuellement à l'heure actuelle, il convient donc procéder comme suit : 

\n\n

Chaque élément apparaît dans son onglet propre.

\n

Pour réaliser un jet, il suffit de cliquer sur le nom d'une caractéristique, sur une compétence ou sur un objet. Ce clic ouvre la boite de dialogue des jets, qui permet de paramétrer les différentes options (difficulté, compétence/carac, etc). Le lancer affiche les résultats dans le tchat, avec le résultat, la qualité de la réussite, les points d'expérience éventuels et les points de taches.

\n

L'état général du personnage est automatiquement pris en compte.

\n

Partie haute

\n

Les principaux compteurs (vie, endurance, fatigue et rêve, sonné) sont visibles dans la partie haute. Un clic sur le rêve à cet endroit permet de faire un jet de points actuels de rêve (par exemple, un jet de résistance).

\n

Plusieurs boutons sont disponibles:

\n\n

Combat

\n

Pour l'initiative et les attaques, des options sont disponibles sur le token (menu contextuel).

\n

Une fois l'initiative réglée, l'attaquant sélectionne sa cible, puis utilise l'option d'attaque avec cette arme souhaitée (il peut aussi utiliser l'arme dans la feuille de persionnage). La fenêtre de jet de résolution est alors ouverte pour choisir sa difficulté libre, et différents ajustements liés aux conditions et tactiques. 

\n

Si l'attaque réussit, le défenseur recevra un message dans le tchat avec ses actions de défense -ou d'encaissement- disponibles, selon ses compétences : Encaisser, Esquiver, Parer, ...

\n

Un click sur ces actions génère le jet de riposte et produit les résultats. En cas d'échec, le défenseur aura de nouveau un message lui demandant d'encaisser, pour lui donner l'opportunité de faire appel à la chance ou à la destinée.

\n

Si décidément ce nb'est pas son jour, il peut cliquer sur le lien pour encaisser, les blessures et l'état général sont automatiquement mis à jour.

\n

Haut Rêve

\n

Les sorts peuvent être ajoutés depuis le compendium correspondant (par voie de Draconic). La description des sorts est disponible en cliquant sur le sort.

\n

Pour monter dans les Terres Médianes, il suffit de cliquer sur l'un des boutons \"Monter dans les Terres Médianes!\" sur la feuille de personnage.

\n

La fiche des TMR apparait alors, vous permettant de vous déplacer. Le point de rêve de montée, la fatigue, les rencontres, les cases humides sont automatiquement gérés. Lorsque vous êtes sur la bonne case, il vous suffit de cliquer sur 'Lancer le sort', qui ouvre la boite de dialogue du lancement.

\n

Divers

\n

Certains raccourcis de commandes sont disponibles directement dans le tchat:

\n\n

Ce qui n'est pas implémenté/en cours

\n\n

\"\"

","img":null,"folder":"","sort":0,"permission":{"default":0,"Q4cUvqxCxMoTJXDL":3},"flags":{}} diff --git a/templates/actor-creature-sheet.html b/templates/actor-creature-sheet.html index 1901d9eb..ebd54730 100644 --- a/templates/actor-creature-sheet.html +++ b/templates/actor-creature-sheet.html @@ -1,3 +1,4 @@ +{{log "handlebar" this}}
{{!-- Sheet Header --}} @@ -15,17 +16,17 @@
- {{data.blessures.resume}} + {{calc.resumeBlessures}}
- {{#if data.surprise}}{{data.surprise}}! {{/if}} + {{#if calc.surprise}}{{calc.surprise}}! {{/if}} {{#if actor.effects}} {{#each actor.effects as |effect key|}} {{effect.label}} {{/each}} - {{#if data.isGM}} + {{#if options.isGM}} (enlever tout) {{/if}} {{else}} @@ -67,7 +68,7 @@ {{/each}}
  • Total Caractéristiques - {{data.caracSum}} + {{calc.caracTotal}}
  • @@ -199,9 +200,9 @@ {{!-- Equipment Tab --}}
    - Encombrement total/max : {{numberFormat data.encTotal decimals=1}} / {{data.attributs.encombrement.value}} {{data.surEncombrementMessage}} - + Encombrement total/max : {{numberFormat calc.encTotal decimals=1}} / {{data.attributs.encombrement.value}} {{armes}} - Créer un objet - {{#if data.isGM}} + {{#if options.isGM}} - Vider tout les conteneurs {{/if}}
      diff --git a/templates/actor-entite-sheet.html b/templates/actor-entite-sheet.html index 1f03d5cd..a85f3518 100644 --- a/templates/actor-entite-sheet.html +++ b/templates/actor-entite-sheet.html @@ -1,3 +1,4 @@ +{{log "handlebar" this}} {{!-- Sheet Header --}} diff --git a/templates/actor-humanoide-sheet.html b/templates/actor-humanoide-sheet.html index 39126bc7..7c7695e6 100644 --- a/templates/actor-humanoide-sheet.html +++ b/templates/actor-humanoide-sheet.html @@ -1,3 +1,4 @@ +{{log "handlebar" this}} {{!-- Sheet Header --}} @@ -15,7 +16,7 @@
    - {{data.blessures.resume}} + {{calc.resumeBlessures}}
    @@ -52,7 +53,7 @@ {{/each}}
  • Total Caractéristiques - {{data.caracSum}} + {{calc.caracTotal}}
  • @@ -185,7 +186,7 @@ {{!-- Equipment Tab --}}
    - Encombrement total/max : {{numberFormat data.encTotal decimals=1}} / {{data.attributs.encombrement.value}} + Encombrement total/max : {{numberFormat calc.encTotal decimals=1}} / {{data.attributs.encombrement.value}}
    1. Nom diff --git a/templates/actor-sheet.html b/templates/actor-sheet.html index 2344b651..bb5e1bef 100644 --- a/templates/actor-sheet.html +++ b/templates/actor-sheet.html @@ -1,4 +1,4 @@ -{{log "handlebar actor-sheet" this}} +{{log "handlebar" this}} {{!-- Sheet Header --}} @@ -23,14 +23,14 @@
    - Malus de fatigue : {{data.data.fatigue.malus}} - {{{data.fatigue.html}}} + Malus de fatigue : {{calc.fatigue.malus}} + {{{calc.fatigue.html}}} - {{data.data.blessures.resume}} + {{calc.blessures.resume}}
    {{data.data.compteurs.etat.label}}: {{data.data.compteurs.etat.value}} {{data.data.compteurs.surenc.label}}: {{data.data.compteurs.surenc.value}}
    - {{#if data.surprise}}{{data.surprise}}! {{/if}} + {{#if calc.surprise}}{{calc.surprise}}! {{/if}} {{#if actor.effects}} {{#each actor.effects as |effect key|}} - - {{effect.label}} + {{log "handlebar effect" effect}} + + {{effect.data.label}} {{/each}} - {{#if data.isGM}} + {{#if options.isGM}} (enlever tout) {{/if}} {{else}} @@ -113,8 +114,8 @@
    blocker/débloquer{{#if data.editCaracComp}}Verrouiller{{else}}Déverrouiller{{/if}} + src="systems/foundryvtt-reve-de-dragon/icons/{{#if @root.options.editCaracComp}}unlocked.svg{{else}}locked.svg{{/if}}" alt="blocker/débloquer" + >{{#if @root.options.editCaracComp}}Verrouiller{{else}}Déverrouiller{{/if}}
      {{#each data.data.carac as |carac key|}} {{#if carac.isLevelUp}} @@ -124,12 +125,12 @@ {{/if}} {{#if carac.isTaille}} {{carac.label}} - +
    • - Beauté : - + Beauté : +
    • {{#each data.attributs as |attr key|}}
    • - {{attr.label}} : + {{attr.label}} : {{#if (eq key 'protection')}} {{else}} @@ -175,7 +176,7 @@
      • Chance actuelle - + Utiliser
      • {{#each data.data.compteurs as |compteur key|}} @@ -218,14 +219,14 @@
        blocker/débloquer{{#if data.editCaracComp}}Verrouiller{{else}}Déverrouiller{{/if}} + src="systems/foundryvtt-reve-de-dragon/icons/{{#if @root.options.editCaracComp}}unlocked.svg{{else}}locked.svg{{/if}}" alt="blocker/débloquer" + >{{#if @root.options.editCaracComp}}Verrouiller{{else}}Déverrouiller{{/if}} filter/montrer tout{{#if data.showCompNiveauBase}}Montrer tout{{else}}Filtrer{{/if}} + src="systems/foundryvtt-reve-de-dragon/icons/{{#if @root.options.showCompNiveauBase}}no-filter.svg{{else}}filter.svg{{/if}}" alt="filter/montrer tout" + >{{#if @root.options.showCompNiveauBase}}Montrer tout{{else}}Filtrer{{/if}} filter/montrer l'archétype{{#if data.montrerArchetype}}Masquer l'archétype{{else}}Voir l'archétype{{/if}} + src="systems/foundryvtt-reve-de-dragon/icons/{{#if @root.options.montrerArchetype}}no-filter.svg{{else}}filter.svg{{/if}}" alt="filter/montrer l'archétype" + >{{#if @root.options.montrerArchetype}}Masquer l'archétype{{else}}Voir l'archétype{{/if}}
        @@ -233,8 +234,8 @@ Compétences de base
          - {{#each data.competenceByCategory.generale as |comp key|}} - {{#if data.showCompetence}} + {{#each competenceByCategory.generale as |comp key|}} + {{#if visible}} {{#if comp.data.isLevelUp}}
        • {{else}} @@ -250,14 +251,14 @@ {{else}} {{comp.name}} {{/if}} - - + +
          - {{#if ../data.montrerArchetype}} - + {{#if @root.options.montrerArchetype}} + {{/if}}
        • {{/if}} @@ -268,8 +269,8 @@ Compétences Particulières
            - {{#each data.competenceByCategory.particuliere as |comp key|}} - {{#if data.showCompetence}} + {{#each competenceByCategory.particuliere as |comp key|}} + {{#if visible}} {{#if comp.data.isLevelUp}}
          • {{else}} @@ -285,14 +286,14 @@ {{else}} {{comp.name}} {{/if}} - - + +
            - {{#if ../data.montrerArchetype}} - + {{#if @root.options.montrerArchetype}} + {{/if}}
          • {{/if}} @@ -302,8 +303,8 @@ Compétences Spécialisées
              - {{#each data.competenceByCategory.specialisee as |comp key|}} - {{#if data.showCompetence}} + {{#each competenceByCategory.specialisee as |comp key|}} + {{#if visible}} {{#if comp.data.isLevelUp}}
            • {{else}} @@ -319,14 +320,14 @@ {{else}} {{comp.name}} {{/if}} - - + +
              - {{#if ../data.montrerArchetype}} - + {{#if @root.options.montrerArchetype}} + {{/if}}
            • {{/if}} @@ -339,8 +340,8 @@ Compétences de Mêlée
                - {{#each data.competenceByCategory.melee as |comp key|}} - {{#if data.showCompetence}} + {{#each competenceByCategory.melee as |comp key|}} + {{#if visible}} {{#if comp.data.isLevelUp}}
              • {{else}} @@ -356,14 +357,14 @@ {{else}} {{comp.name}} {{/if}} - - + +
                - {{#if ../data.montrerArchetype}} - + {{#if @root.options.montrerArchetype}} + {{/if}}
              • {{/if}} @@ -374,8 +375,8 @@ Compétences de Tir
                  - {{#each data.competenceByCategory.tir as |comp key|}} - {{#if data.showCompetence}} + {{#each competenceByCategory.tir as |comp key|}} + {{#if visible}} {{#if comp.data.isLevelUp}}
                • {{else}} @@ -391,14 +392,14 @@ {{else}} {{comp.name}} {{/if}} - - + +
                  - {{#if ../data.montrerArchetype}} - + {{#if @root.options.montrerArchetype}} + {{/if}}
                • {{/if}} @@ -409,8 +410,8 @@ Compétences de Lancer
                    - {{#each data.competenceByCategory.lancer as |comp key|}} - {{#if data.showCompetence}} + {{#each competenceByCategory.lancer as |comp key|}} + {{#if visible}} {{#if comp.data.isLevelUp}}
                  • {{else}} @@ -426,14 +427,14 @@ {{else}} {{comp.name}} {{/if}} - - + +
                    - {{#if ../data.montrerArchetype}} - + {{#if @root.options.montrerArchetype}} + {{/if}}
                  • {{/if}} @@ -444,8 +445,8 @@ Connaissances
                      - {{#each data.competenceByCategory.connaissance as |comp key|}} - {{#if data.showCompetence}} + {{#each competenceByCategory.connaissance as |comp key|}} + {{#if visible}} {{#if comp.data.isLevelUp}}
                    • {{else}} @@ -461,14 +462,14 @@ {{else}} {{comp.name}} {{/if}} - - + +
                      - {{#if ../data.montrerArchetype}} - + {{#if @root.options.montrerArchetype}} + {{/if}}
                    • {{/if}} @@ -479,8 +480,8 @@ Draconic
                        - {{#each data.competenceByCategory.draconic as |comp key|}} - {{#if data.showCompetence}} + {{#each competenceByCategory.draconic as |comp key|}} + {{#if visible}} {{#if comp.data.isLevelUp}}
                      • {{else}} @@ -496,15 +497,15 @@ {{else}} {{comp.name}} {{/if}} - - - + + +
                        - {{#if ../data.montrerArchetype}} - + {{#if @root.options.montrerArchetype}} + {{/if}}
                      • {{/if}} @@ -514,10 +515,10 @@
                        • Total XP compétences - {{data.competenceXPTotal}} + {{calc.competenceXPTotal}}
                        • - {{#if data.montrerArchetype}} - {{#each data.comptageArchetype as |archetype key|}} + {{#if @root.options.montrerArchetype}} + {{#each calc.comptageArchetype as |archetype key|}}
                        • @@ -534,27 +535,27 @@

                          Armes et Défenses:

                          • - Armes - Initiative - Comp. - Niveau - +dom + Armes + Initiative + Comp. + Niveau + +dom
                          • - {{#each data.combat as |arme key|}} + {{#each armes as |arme key|}}
                          • {{arme.name}} {{arme.data.initiative}} - {{arme.data.competence}} - {{numberFormat arme.data.niveau decimals=0 sign=true}} - {{numberFormat arme.data.dommages decimals=0 sign=true}} + {{arme.data.competence}} + {{numberFormat arme.data.niveau decimals=0 sign=true}} + {{numberFormat arme.data.dommages decimals=0 sign=true}}
                          • {{/each}}
                          • {{esquive.name}} - - {{numberFormat esquive.niveau decimals=0 sign=true}} - + + {{numberFormat esquive.niveau decimals=0 sign=true}} +

                          @@ -748,32 +749,32 @@

                          Haut rêve:

                          • - Position en TMR : + Position en TMR : - {{#if data.isGM}} - + {{#if options.isGM}} + {{else}} - {{data.reve.tmrpos.coord}} + {{data.data.reve.tmrpos.coord}} {{/if}}
                          • - Seuil de Rêve : + Seuil de Rêve : - {{#if data.isGM}} - + {{#if options.isGM}} + {{else}} - {{data.reve.seuil.value}} + {{data.data.reve.seuil.value}} {{/if}}
                          • - Refoulement : + Refoulement : - {{#if data.isGM}} - + {{#if options.isGM}} + {{else}} - {{data.reve.refoulement.value}} + {{data.data.reve.refoulement.value}} {{/if}}
                          • @@ -801,7 +802,7 @@

                            Sorts en Réserve:

                              - {{#each data.sortReserve as |reserve key|}} + {{#each tmr.sortsReserve as |reserve key|}}
                            • {{reserve.sort.name}} - {{reserve.coord}}
                            • @@ -827,7 +828,7 @@

                              Cases Spéciales:

                                - {{#each data.caseSpeciales as |casetmr key|}} + {{#each tmr.caseSpeciales as |casetmr key|}}
                              • {{casetmr.name}}
                                @@ -841,7 +842,7 @@

                                Rencontres présentes:

                                  - {{#each data.rencontres as |rencontre key|}} + {{#each tmr.rencontres as |rencontre key|}}
                                • {{rencontre.rencontre.name}} - {{rencontre.coord}} ({{rencontre.rencontre.date}} - {{rencontre.rencontre.heure}})
                                  @@ -921,22 +922,22 @@

                                  Equipement porté

                                  - Encombrement total/max : {{numberFormat data.encTotal decimals=1}} / {{data.attributs.encombrement.value}} {{data.surEncombrementMessage}} - - Estimation de l'équipement : {{numberFormat data.prixTotalEquipement decimals=2}} Sols + Encombrement total/max : {{numberFormat calc.encTotal decimals=1}} / {{data.data.attributs.encombrement.value}} {{calc.surEncombrementMessage}} - + Estimation de l'équipement : {{numberFormat calc.prixTotalEquipement decimals=2}} Sols
                                  Créer un objet - {{#if data.isGM}} + {{#if options.isGM}} - Vider tout les conteneurs {{/if}}
                                  • - Nom - Q. - Enc. - Equiper/Editer/Suppr. + Nom + Q. + Enc. + Equiper/Editer/Suppr.
                                  • {{#each data.objets as |item id|}} {{#unless item.estContenu}} @@ -962,7 +963,7 @@

                                    Montures

                                      - {{#each data.monturesList as |monture id|}} + {{#each subacteurs.montures as |monture id|}}
                                    • {{monture.name}} @@ -975,7 +976,7 @@

                                      Véhicules

                                        - {{#each data.vehiculesList as |vehicule id|}} + {{#each subacteurs.vehicules as |vehicule id|}}
                                      • {{vehicule.name}} @@ -990,7 +991,7 @@

                                        Suivants

                                          - {{#each data.suivantsList as |suivant id|}} + {{#each subacteurs.suivants as |suivant id|}}
                                        • {{suivant.name}} @@ -1008,40 +1009,40 @@
                                          • -
                                          • -
                                          • -
                                          • -
                                          • -
                                          • -
                                          • -
                                          • -
                                          • -
                                          diff --git a/templates/actor-vehicule-sheet.html b/templates/actor-vehicule-sheet.html index 4b7bfcde..703a9a8c 100644 --- a/templates/actor-vehicule-sheet.html +++ b/templates/actor-vehicule-sheet.html @@ -1,3 +1,4 @@ +{{log "handlebar" this}} {{!-- Sheet Header --}} @@ -68,9 +69,9 @@ {{!-- Equipment Tab --}}
                                          - Encombrement total/max : {{numberFormat data.encTotal decimals=1}} / {{data.capacite_encombrement}} {{data.surEncombrementMessage}} - + Encombrement total/max : {{numberFormat calc.encTotal decimals=1}} / {{data.capacite_encombrement}} {{calc.surEncombrementMessage}} - Créer un objet - {{#if data.isGM}} + {{#if options.isGM}} - Vider tout les conteneurs {{/if}}
                                            diff --git a/templates/calendar-astrologie-template.html b/templates/calendar-astrologie-template.html index aa554949..b893b1d7 100644 --- a/templates/calendar-astrologie-template.html +++ b/templates/calendar-astrologie-template.html @@ -1,3 +1,4 @@ +{{log "handlebar" this}}
                                            diff --git a/templates/calendar-editor-template.html b/templates/calendar-editor-template.html index e28f019a..da18b215 100644 --- a/templates/calendar-editor-template.html +++ b/templates/calendar-editor-template.html @@ -1,3 +1,4 @@ +{{log "handlebar" this}}
                                            diff --git a/templates/calendar-template.html b/templates/calendar-template.html index e1d65073..2b19111e 100644 --- a/templates/calendar-template.html +++ b/templates/calendar-template.html @@ -1,3 +1,4 @@ +{{log "handlebar" this}}
                                            {{#if isGM}} diff --git a/templates/chat-actor-competence-xp.html b/templates/chat-actor-competence-xp.html index c14373f1..5b750829 100644 --- a/templates/chat-actor-competence-xp.html +++ b/templates/chat-actor-competence-xp.html @@ -1,3 +1,4 @@ +{{log "handlebar" this}}

                                            {{alias}} peut progresser dans sa compétence {{competence}} !

                                            Son niveau en {{competence}} peut évoluer à {{niveau}} pour un archétype de {{archetype}} !
                                            Son experience dans cette compétence est de {{xp}}.
                                            diff --git a/templates/chat-actor-turn-summary.html b/templates/chat-actor-turn-summary.html index f0f89a1e..202c75d7 100644 --- a/templates/chat-actor-turn-summary.html +++ b/templates/chat-actor-turn-summary.html @@ -1,3 +1,4 @@ +{{log "handlebar" this}}

                                            C'est au tour de {{alias}} !

                                            {{blessuresStatus}}
                                            Son état général est de : {{etatGeneral}} {{#if isSonne}} et est sonné{{/if}}
                                            diff --git a/templates/chat-demande-attaque-etotal.html b/templates/chat-demande-attaque-etotal.html index 77ef3a99..7eb475b8 100644 --- a/templates/chat-demande-attaque-etotal.html +++ b/templates/chat-demande-attaque-etotal.html @@ -1,3 +1,4 @@ +{{log "handlebar" this}}

                                            Echec total en attaque


                                            diff --git a/templates/chat-demande-attaque-particuliere.html b/templates/chat-demande-attaque-particuliere.html index e6a32ad8..44cb0b19 100644 --- a/templates/chat-demande-attaque-particuliere.html +++ b/templates/chat-demande-attaque-particuliere.html @@ -1,3 +1,4 @@ +{{log "handlebar" this}}

                                            {{alias}} réussit une attaque particulière!


                                            diff --git a/templates/chat-demande-defense.html b/templates/chat-demande-defense.html index c9d2fe76..4193a61e 100644 --- a/templates/chat-demande-defense.html +++ b/templates/chat-demande-defense.html @@ -1,3 +1,4 @@ +{{log "handlebar" this}}
                                            {{#if (eq surprise 'totale')}} {{defender.name}} est totalement surpris diff --git a/templates/chat-info-appel-au-moral.html b/templates/chat-info-appel-au-moral.html index 6ceef396..e58a9b0a 100644 --- a/templates/chat-info-appel-au-moral.html +++ b/templates/chat-info-appel-au-moral.html @@ -1,4 +1,4 @@ {{#if use.appelAuMoral}}
                                            - {{alias}} fait appel {{#if (gt moral 0)}}au moral{{else}}à l'énergie du déspoir{{/if}} {{#if moralDiminuer}}et échoue, diminuant son moral.{{else}} et réussit.{{/if}} + {{alias}} utilise {{#if (gt moral 0)}}le moral{{else}} l'énergie du déspoir{{/if}} et {{#if moralDiminuer}}échoue, diminuant son moral.{{else}}réussit.{{/if}} {{^jetEchouerMoralDiminuer}} Son moral reste inchangé à {{moral}}.{{/jetEchouerMoralDiminuer}}
                                            {{/if}} diff --git a/templates/chat-infojet.html b/templates/chat-infojet.html index 957ec522..093eaec7 100644 --- a/templates/chat-infojet.html +++ b/templates/chat-infojet.html @@ -1,3 +1,4 @@ +{{log "handlebar" this}}
                                            {{rolled.caracValue}} à {{numberFormat rolled.finalLevel decimals=0 sign=true}} diff --git a/templates/chat-initiative-premier-round.html b/templates/chat-initiative-premier-round.html index 291563f8..5aac3c6b 100644 --- a/templates/chat-initiative-premier-round.html +++ b/templates/chat-initiative-premier-round.html @@ -1,3 +1,4 @@ +{{log "handlebar" this}}

                                            L'initiative de {{alias}} a été modifiée !


                                            diff --git a/templates/chat-poesie.html b/templates/chat-poesie.html index dd1c9308..cbde58ea 100644 --- a/templates/chat-poesie.html +++ b/templates/chat-poesie.html @@ -1,3 +1,4 @@ +{{log "handlebar" this}} {{#if description}}
                                            diff --git a/templates/chat-rencontre-tmr.html b/templates/chat-rencontre-tmr.html index 4d49510d..ecf43016 100644 --- a/templates/chat-rencontre-tmr.html +++ b/templates/chat-rencontre-tmr.html @@ -1,3 +1,4 @@ +{{log "handlebar" this}} {{competence.name}}

                                            {{alias}} rencontre {{#if (eq genre 'f')}}une{{else}}un{{/if}} {{rencontre.name}} de force {{rencontre.force}} diff --git a/templates/chat-resultat-accorder-cauchemar.html b/templates/chat-resultat-accorder-cauchemar.html index 0cb65da3..b6f41b5a 100644 --- a/templates/chat-resultat-accorder-cauchemar.html +++ b/templates/chat-resultat-accorder-cauchemar.html @@ -1,3 +1,4 @@ +{{log "handlebar" this}}

                                            {{alias}} s'accorde: {{entite}}

                                            diff --git a/templates/chat-resultat-alchimie.html b/templates/chat-resultat-alchimie.html index 38273c82..1485c5f6 100644 --- a/templates/chat-resultat-alchimie.html +++ b/templates/chat-resultat-alchimie.html @@ -1,3 +1,4 @@ +{{log "handlebar" this}} préparation alchimique

                                            {{alias}} essaye de réaliser sa recette Alchimique : {{recette.name}} diff --git a/templates/chat-resultat-appelchance.html b/templates/chat-resultat-appelchance.html index c022da52..59d6ab6d 100644 --- a/templates/chat-resultat-appelchance.html +++ b/templates/chat-resultat-appelchance.html @@ -1,3 +1,4 @@ +{{log "handlebar" this}}

                                            {{alias}} fait appel à la chance

                                            diff --git a/templates/chat-resultat-attaque.html b/templates/chat-resultat-attaque.html index 3f3ed617..ab60c410 100644 --- a/templates/chat-resultat-attaque.html +++ b/templates/chat-resultat-attaque.html @@ -1,3 +1,4 @@ +{{log "handlebar" this}} {{competence.name}}

                                            {{alias}} attaque à {{diffLibre}}: {{arme.name}}

                                            {{selectedCarac.label}}{{#unless (eq selectedCarac.label competence.name)}} / {{competence.name}}{{/unless}}
                                            diff --git a/templates/chat-resultat-chant.html b/templates/chat-resultat-chant.html index 6af6e9d6..f40d972f 100644 --- a/templates/chat-resultat-chant.html +++ b/templates/chat-resultat-chant.html @@ -1,3 +1,4 @@ +{{log "handlebar" this}} {{oeuvre.data.competence}}

                                            {{alias}} tente de chanter la chanson : {{oeuvre.name}} (niveau {{oeuvre.data.niveau}}) diff --git a/templates/chat-resultat-competence.html b/templates/chat-resultat-competence.html index 8a46b0a8..b9d23e4b 100644 --- a/templates/chat-resultat-competence.html +++ b/templates/chat-resultat-competence.html @@ -1,3 +1,4 @@ +{{log "handlebar" this}} {{competence.name}}

                                            {{alias}} {{show.title}}: diff --git a/templates/chat-resultat-danse.html b/templates/chat-resultat-danse.html index 9d12528b..56df83f1 100644 --- a/templates/chat-resultat-danse.html +++ b/templates/chat-resultat-danse.html @@ -1,3 +1,4 @@ +{{log "handlebar" this}} {{oeuvre.data.competence}}

                                            {{alias}} tente de danser : {{oeuvre.name}} (niveau {{oeuvre.data.niveau}}) diff --git a/templates/chat-resultat-encaissement.html b/templates/chat-resultat-encaissement.html index 86fa9811..c9f07305 100644 --- a/templates/chat-resultat-encaissement.html +++ b/templates/chat-resultat-encaissement.html @@ -1,3 +1,4 @@ +{{log "handlebar" this}} {{#if isGM}} {{#if (gt endurance 0)}} diff --git a/templates/chat-resultat-esquive.html b/templates/chat-resultat-esquive.html index e6aab0f0..1f49291e 100644 --- a/templates/chat-resultat-esquive.html +++ b/templates/chat-resultat-esquive.html @@ -1,3 +1,4 @@ +{{log "handlebar" this}} {{competence.name}}

                                            {{alias}} esquive une attaque à {{diffLibre}}

                                            {{selectedCarac.label}}{{#unless (eq selectedCarac.label competence.name)}} / {{competence.name}}{{/unless}}
                                            diff --git a/templates/chat-resultat-ethylisme.html b/templates/chat-resultat-ethylisme.html index c6c374eb..a1bc83df 100644 --- a/templates/chat-resultat-ethylisme.html +++ b/templates/chat-resultat-ethylisme.html @@ -1,3 +1,4 @@ +{{log "handlebar" this}}

                                            {{alias}} {{#if isSortReserve}}met en réserve{{else}}lance{{/if}} le {{#if selectedSort.data.isrituel}}rituel{{else}}sort{{/if}} diff --git a/templates/chat-resultat-general.html b/templates/chat-resultat-general.html index 2bc62cb6..087e22f7 100644 --- a/templates/chat-resultat-general.html +++ b/templates/chat-resultat-general.html @@ -1,3 +1,4 @@ +{{log "handlebar" this}} {{#if competence.img}} {{competence.name}} {{/if}} diff --git a/templates/chat-resultat-jeu.html b/templates/chat-resultat-jeu.html index 6b8c01f3..0445c1dd 100644 --- a/templates/chat-resultat-jeu.html +++ b/templates/chat-resultat-jeu.html @@ -1,3 +1,4 @@ +{{log "handlebar" this}} {{oeuvre.data.competence}}

                                            {{alias}} joue à : {{oeuvre.name}} diff --git a/templates/chat-resultat-maitrise-tmr.html b/templates/chat-resultat-maitrise-tmr.html index e5f4fa6f..efe33817 100644 --- a/templates/chat-resultat-maitrise-tmr.html +++ b/templates/chat-resultat-maitrise-tmr.html @@ -1,3 +1,4 @@ +{{log "handlebar" this}} {{competence.name}}

                                            {{alias}} tente de {{maitrise.verbe}} {{le tmr.genre}} {{tmr.label}} ({{tmr.coord}}) diff --git a/templates/chat-resultat-meditation.html b/templates/chat-resultat-meditation.html index 91f096fb..0515e381 100644 --- a/templates/chat-resultat-meditation.html +++ b/templates/chat-resultat-meditation.html @@ -1,3 +1,4 @@ +{{log "handlebar" this}} {{competence.name}}

                                            {{alias}} a médité : {{meditation.name}} diff --git a/templates/chat-resultat-musique.html b/templates/chat-resultat-musique.html index 0b0a6d0b..17b62d63 100644 --- a/templates/chat-resultat-musique.html +++ b/templates/chat-resultat-musique.html @@ -1,3 +1,4 @@ +{{log "handlebar" this}} {{oeuvre.data.competence}}

                                            {{alias}} tente de jouer le morceau : {{oeuvre.name}} (niveau {{oeuvre.data.niveau}}) diff --git a/templates/chat-resultat-oeuvre.html b/templates/chat-resultat-oeuvre.html index d7e349e5..11145969 100644 --- a/templates/chat-resultat-oeuvre.html +++ b/templates/chat-resultat-oeuvre.html @@ -1,3 +1,4 @@ +{{log "handlebar" this}}

                                            {{oeuvre.data.competence}} {{alias}} tente d'interpréter {{oeuvre.name}} (niveau {{oeuvre.data.niveau}}) diff --git a/templates/chat-resultat-parade.html b/templates/chat-resultat-parade.html index e6638f0e..f2d4ec7b 100644 --- a/templates/chat-resultat-parade.html +++ b/templates/chat-resultat-parade.html @@ -1,3 +1,4 @@ +{{log "handlebar" this}} {{competence.name}}

                                            {{alias}} pare une attaque à {{diffLibre}} - {{arme.name}}

                                            {{selectedCarac.label}}{{#unless (eq selectedCarac.label competence.name)}} / {{competence.name}}{{/unless}}
                                            diff --git a/templates/chat-resultat-recettecuisine.html b/templates/chat-resultat-recettecuisine.html index 5eb098fd..28628c1f 100644 --- a/templates/chat-resultat-recettecuisine.html +++ b/templates/chat-resultat-recettecuisine.html @@ -1,3 +1,4 @@ +{{log "handlebar" this}} {{oeuvre.data.competence}}

                                            {{alias}} tente de cuisiner la recette : {{oeuvre.name}} (niveau {{oeuvre.data.niveau}}) diff --git a/templates/chat-resultat-reve-de-dragon.html b/templates/chat-resultat-reve-de-dragon.html index f1aa7992..4f8e2a2f 100644 --- a/templates/chat-resultat-reve-de-dragon.html +++ b/templates/chat-resultat-reve-de-dragon.html @@ -1,3 +1,4 @@ +{{log "handlebar" this}} Rêve de Dragon

                                            {{alias}} tente de maîtriser un Rêve de Dragon! diff --git a/templates/chat-resultat-sort.html b/templates/chat-resultat-sort.html index b17920a9..0ae4e437 100644 --- a/templates/chat-resultat-sort.html +++ b/templates/chat-resultat-sort.html @@ -1,3 +1,4 @@ +{{log "handlebar" this}} {{competence.name}}

                                            {{alias}} {{#if isSortReserve}}met en réserve{{else}}lance{{/if}} diff --git a/templates/chat-resultat-tache.html b/templates/chat-resultat-tache.html index b9792039..3fdb76a9 100644 --- a/templates/chat-resultat-tache.html +++ b/templates/chat-resultat-tache.html @@ -1,3 +1,4 @@ +{{log "handlebar" this}} {{competence.name}}

                                            {{alias}} travaille à sa tâche {{tache.name}} diff --git a/templates/chat-resultat-transformer-stress.html b/templates/chat-resultat-transformer-stress.html index 0bef2112..0cd037fa 100644 --- a/templates/chat-resultat-transformer-stress.html +++ b/templates/chat-resultat-transformer-stress.html @@ -1,3 +1,4 @@ +{{log "handlebar" this}}

                                            {{alias}} transforme {{rolled.factor}}% de son stress

                                            diff --git a/templates/dialog-astrologie-joueur.html b/templates/dialog-astrologie-joueur.html index 67eb084b..f2f629be 100644 --- a/templates/dialog-astrologie-joueur.html +++ b/templates/dialog-astrologie-joueur.html @@ -1,3 +1,4 @@ +{{log "handlebar" this}}
                                            diff --git a/templates/dialog-competence.html b/templates/dialog-competence.html index a099493b..a9f97692 100644 --- a/templates/dialog-competence.html +++ b/templates/dialog-competence.html @@ -1,3 +1,4 @@ +{{log "handlebar" this}}

                                            diff --git a/templates/dialog-roll-ajustements.html b/templates/dialog-roll-ajustements.html index b249f046..cc390f03 100644 --- a/templates/dialog-roll-ajustements.html +++ b/templates/dialog-roll-ajustements.html @@ -1,3 +1,4 @@ +{{log "handlebar" this}}
                                            Ajustement Final: diff --git a/templates/dialog-roll-alchimie.html b/templates/dialog-roll-alchimie.html index 87323064..c4f301f4 100644 --- a/templates/dialog-roll-alchimie.html +++ b/templates/dialog-roll-alchimie.html @@ -1,3 +1,4 @@ +{{log "handlebar" this}}
                                              diff --git a/templates/dialog-roll-carac.html b/templates/dialog-roll-carac.html index 95fac6ab..b3b7c0c2 100644 --- a/templates/dialog-roll-carac.html +++ b/templates/dialog-roll-carac.html @@ -1,3 +1,4 @@ +{{log "handlebar" this}}

                                              diff --git a/templates/dialog-roll-chant.html b/templates/dialog-roll-chant.html index 6fa436b5..c8474a6d 100644 --- a/templates/dialog-roll-chant.html +++ b/templates/dialog-roll-chant.html @@ -1,3 +1,4 @@ +{{log "handlebar" this}}
                                                diff --git a/templates/dialog-roll-danse.html b/templates/dialog-roll-danse.html index 55e44775..04469162 100644 --- a/templates/dialog-roll-danse.html +++ b/templates/dialog-roll-danse.html @@ -1,3 +1,4 @@ +{{log "handlebar" this}}
                                                  diff --git a/templates/dialog-roll-encaisser.html b/templates/dialog-roll-encaisser.html index 73244852..b99d72fc 100644 --- a/templates/dialog-roll-encaisser.html +++ b/templates/dialog-roll-encaisser.html @@ -1,3 +1,4 @@ +{{log "handlebar" this}}

                                                  diff --git a/templates/dialog-roll-ethylisme.html b/templates/dialog-roll-ethylisme.html index 2a74d639..c3bb618b 100644 --- a/templates/dialog-roll-ethylisme.html +++ b/templates/dialog-roll-ethylisme.html @@ -1,3 +1,4 @@ +{{log "handlebar" this}}
                                                  diff --git a/templates/dialog-roll-jeu.html b/templates/dialog-roll-jeu.html index 0ccf3b77..a33a8b33 100644 --- a/templates/dialog-roll-jeu.html +++ b/templates/dialog-roll-jeu.html @@ -1,3 +1,4 @@ +{{log "handlebar" this}}
                                                    diff --git a/templates/dialog-roll-maitrise-tmr.html b/templates/dialog-roll-maitrise-tmr.html index 314668dc..cbf4a832 100644 --- a/templates/dialog-roll-maitrise-tmr.html +++ b/templates/dialog-roll-maitrise-tmr.html @@ -1,3 +1,4 @@ +{{log "handlebar" this}}
                                                    diff --git a/templates/dialog-roll-meditation.html b/templates/dialog-roll-meditation.html index 85d089a6..5a6fd583 100644 --- a/templates/dialog-roll-meditation.html +++ b/templates/dialog-roll-meditation.html @@ -1,3 +1,4 @@ +{{log "handlebar" this}}
                                                      diff --git a/templates/dialog-roll-musique.html b/templates/dialog-roll-musique.html index faa65989..50a8759f 100644 --- a/templates/dialog-roll-musique.html +++ b/templates/dialog-roll-musique.html @@ -1,3 +1,4 @@ +{{log "handlebar" this}}
                                                        diff --git a/templates/dialog-roll-oeuvre.html b/templates/dialog-roll-oeuvre.html index f6dc0d41..03a7f14c 100644 --- a/templates/dialog-roll-oeuvre.html +++ b/templates/dialog-roll-oeuvre.html @@ -1,3 +1,4 @@ +{{log "handlebar" this}}
                                                          diff --git a/templates/dialog-roll-recettecuisine.html b/templates/dialog-roll-recettecuisine.html index ef52543e..551a794e 100644 --- a/templates/dialog-roll-recettecuisine.html +++ b/templates/dialog-roll-recettecuisine.html @@ -1,3 +1,4 @@ +{{log "handlebar" this}}
                                                          diff --git a/templates/dialog-roll-resolution.html b/templates/dialog-roll-resolution.html index a7df5ca6..0f0fc73d 100644 --- a/templates/dialog-roll-resolution.html +++ b/templates/dialog-roll-resolution.html @@ -1,3 +1,4 @@ +{{log "handlebar" this}}
                                                          diff --git a/templates/dialog-roll-reve-de-dragon.html b/templates/dialog-roll-reve-de-dragon.html index 6b584c51..26e7e36b 100644 --- a/templates/dialog-roll-reve-de-dragon.html +++ b/templates/dialog-roll-reve-de-dragon.html @@ -1,3 +1,4 @@ +{{log "handlebar" this}}

                                                          Rêve de Dragon de force {{rencontre.force}}!

                                                          diff --git a/templates/dialog-roll-sort.html b/templates/dialog-roll-sort.html index c32366ef..5ca2102c 100644 --- a/templates/dialog-roll-sort.html +++ b/templates/dialog-roll-sort.html @@ -1,3 +1,4 @@ +{{log "handlebar" this}}
                                                          diff --git a/templates/dialog-roll-surenc.html b/templates/dialog-roll-surenc.html index ae07c1bf..3d3d9aa6 100644 --- a/templates/dialog-roll-surenc.html +++ b/templates/dialog-roll-surenc.html @@ -1,3 +1,4 @@ +{{log "handlebar" this}} {{#if surencMalusFlag}}
                                                          diff --git a/templates/dialog-tmr.html b/templates/dialog-tmr.html index a266ccfa..a1b3a89f 100644 --- a/templates/dialog-tmr.html +++ b/templates/dialog-tmr.html @@ -1,3 +1,4 @@ +{{log "handlebar" this}}

                                                          diff --git a/templates/editor-notes-mj.html b/templates/editor-notes-mj.html index 54566eb1..54cfebb9 100644 --- a/templates/editor-notes-mj.html +++ b/templates/editor-notes-mj.html @@ -1,4 +1,4 @@ -{{#if data.isGM}} +{{#if options.isGM}}

                                                          Notes du MJ :

                                                          {{editor content=data.notesmj target="data.notesmj" button=true owner=owner editable=editable}} diff --git a/templates/hud-actor-attaque.html b/templates/hud-actor-attaque.html index 9d3a7926..50d895d8 100644 --- a/templates/hud-actor-attaque.html +++ b/templates/hud-actor-attaque.html @@ -1,3 +1,4 @@ +{{log "handlebar" this}}
                                                          diff --git a/templates/hud-actor-init.html b/templates/hud-actor-init.html index 9865510a..f2fb1e01 100644 --- a/templates/hud-actor-init.html +++ b/templates/hud-actor-init.html @@ -1,3 +1,4 @@ +{{log "handlebar" this}}
                                                          diff --git a/templates/item-arme-sheet.html b/templates/item-arme-sheet.html index 43179e10..b2046a19 100644 --- a/templates/item-arme-sheet.html +++ b/templates/item-arme-sheet.html @@ -1,3 +1,4 @@ +{{log "handlebar" this}}
                                                          diff --git a/templates/item-armure-sheet.html b/templates/item-armure-sheet.html index 906f4dc2..b648e158 100644 --- a/templates/item-armure-sheet.html +++ b/templates/item-armure-sheet.html @@ -1,3 +1,4 @@ +{{log "handlebar" this}}
                                                          diff --git a/templates/item-casetmr-sheet.html b/templates/item-casetmr-sheet.html index d1ecf329..d83349fd 100644 --- a/templates/item-casetmr-sheet.html +++ b/templates/item-casetmr-sheet.html @@ -1,3 +1,4 @@ +{{log "handlebar" this}}
                                                          diff --git a/templates/item-chant-sheet.html b/templates/item-chant-sheet.html index 86c909bc..3d97461c 100644 --- a/templates/item-chant-sheet.html +++ b/templates/item-chant-sheet.html @@ -1,3 +1,4 @@ +{{log "handlebar" this}}
                                                          diff --git a/templates/item-competence-sheet.html b/templates/item-competence-sheet.html index da5065a3..fdedcc11 100644 --- a/templates/item-competence-sheet.html +++ b/templates/item-competence-sheet.html @@ -1,3 +1,4 @@ +{{log "handlebar" this}}
                                                          diff --git a/templates/item-competencecreature-sheet.html b/templates/item-competencecreature-sheet.html index 749298f6..c14a9fd7 100644 --- a/templates/item-competencecreature-sheet.html +++ b/templates/item-competencecreature-sheet.html @@ -1,3 +1,4 @@ +{{log "handlebar" this}}
                                                          diff --git a/templates/item-conteneur-sheet.html b/templates/item-conteneur-sheet.html index a7569dd7..48017308 100644 --- a/templates/item-conteneur-sheet.html +++ b/templates/item-conteneur-sheet.html @@ -1,3 +1,4 @@ +{{log "handlebar" this}}
                                                          diff --git a/templates/item-danse-sheet.html b/templates/item-danse-sheet.html index a9d07a85..a454d82f 100644 --- a/templates/item-danse-sheet.html +++ b/templates/item-danse-sheet.html @@ -1,3 +1,4 @@ +{{log "handlebar" this}}
                                                          diff --git a/templates/item-herbe-sheet.html b/templates/item-herbe-sheet.html index f1b55dd0..b8d6fba8 100644 --- a/templates/item-herbe-sheet.html +++ b/templates/item-herbe-sheet.html @@ -1,3 +1,4 @@ +{{log "handlebar" this}}
                                                          diff --git a/templates/item-ingredient-sheet.html b/templates/item-ingredient-sheet.html index 680ed754..bdf8235d 100644 --- a/templates/item-ingredient-sheet.html +++ b/templates/item-ingredient-sheet.html @@ -1,3 +1,4 @@ +{{log "handlebar" this}}
                                                          diff --git a/templates/item-jeu-sheet.html b/templates/item-jeu-sheet.html index c5c7a4a5..9b4a8409 100644 --- a/templates/item-jeu-sheet.html +++ b/templates/item-jeu-sheet.html @@ -1,3 +1,4 @@ +{{log "handlebar" this}}
                                                          diff --git a/templates/item-livre-sheet.html b/templates/item-livre-sheet.html index 4dabd130..cb2936d4 100644 --- a/templates/item-livre-sheet.html +++ b/templates/item-livre-sheet.html @@ -1,3 +1,4 @@ +{{log "handlebar" this}}
                                                          diff --git a/templates/item-maladie-sheet.html b/templates/item-maladie-sheet.html index b78c7ebc..8c48adbd 100644 --- a/templates/item-maladie-sheet.html +++ b/templates/item-maladie-sheet.html @@ -1,3 +1,4 @@ +{{log "handlebar" this}}
                                                          diff --git a/templates/item-meditation-sheet.html b/templates/item-meditation-sheet.html index e8807738..cf971b7b 100644 --- a/templates/item-meditation-sheet.html +++ b/templates/item-meditation-sheet.html @@ -1,3 +1,4 @@ +{{log "handlebar" this}}
                                                          diff --git a/templates/item-monnaie-sheet.html b/templates/item-monnaie-sheet.html index 86f827b8..9a72d4e7 100644 --- a/templates/item-monnaie-sheet.html +++ b/templates/item-monnaie-sheet.html @@ -1,3 +1,4 @@ +{{log "handlebar" this}}
                                                          diff --git a/templates/item-munition-sheet.html b/templates/item-munition-sheet.html index 96c15e26..c165a038 100644 --- a/templates/item-munition-sheet.html +++ b/templates/item-munition-sheet.html @@ -1,3 +1,4 @@ +{{log "handlebar" this}}
                                                          diff --git a/templates/item-musique-sheet.html b/templates/item-musique-sheet.html index 86c909bc..3d97461c 100644 --- a/templates/item-musique-sheet.html +++ b/templates/item-musique-sheet.html @@ -1,3 +1,4 @@ +{{log "handlebar" this}}
                                                          diff --git a/templates/item-objet-sheet.html b/templates/item-objet-sheet.html index 81fca331..4af07c08 100644 --- a/templates/item-objet-sheet.html +++ b/templates/item-objet-sheet.html @@ -1,3 +1,4 @@ +{{log "handlebar" this}}
                                                          diff --git a/templates/item-oeuvre-sheet.html b/templates/item-oeuvre-sheet.html index b2a27c6a..5e312b31 100644 --- a/templates/item-oeuvre-sheet.html +++ b/templates/item-oeuvre-sheet.html @@ -1,3 +1,4 @@ +{{log "handlebar" this}}
                                                          diff --git a/templates/item-ombre-sheet.html b/templates/item-ombre-sheet.html index 885c6887..fe9450f5 100644 --- a/templates/item-ombre-sheet.html +++ b/templates/item-ombre-sheet.html @@ -1,3 +1,4 @@ +{{log "handlebar" this}}
                                                          diff --git a/templates/item-poison-sheet.html b/templates/item-poison-sheet.html index b78c7ebc..8c48adbd 100644 --- a/templates/item-poison-sheet.html +++ b/templates/item-poison-sheet.html @@ -1,3 +1,4 @@ +{{log "handlebar" this}}
                                                          diff --git a/templates/item-potion-sheet.html b/templates/item-potion-sheet.html index ec5bf99d..6082d104 100644 --- a/templates/item-potion-sheet.html +++ b/templates/item-potion-sheet.html @@ -1,3 +1,4 @@ +{{log "handlebar" this}}
                                                          diff --git a/templates/item-queue-sheet.html b/templates/item-queue-sheet.html index 6440c0ed..5f003fa7 100644 --- a/templates/item-queue-sheet.html +++ b/templates/item-queue-sheet.html @@ -1,3 +1,4 @@ +{{log "handlebar" this}}
                                                          diff --git a/templates/item-recettealchimique-sheet.html b/templates/item-recettealchimique-sheet.html index 96852ada..e567126a 100644 --- a/templates/item-recettealchimique-sheet.html +++ b/templates/item-recettealchimique-sheet.html @@ -1,3 +1,4 @@ +{{log "handlebar" this}}
                                                          diff --git a/templates/item-recettecuisine-sheet.html b/templates/item-recettecuisine-sheet.html index 17c93c55..4628c3e9 100644 --- a/templates/item-recettecuisine-sheet.html +++ b/templates/item-recettecuisine-sheet.html @@ -1,3 +1,4 @@ +{{log "handlebar" this}}
                                                          diff --git a/templates/item-rencontresTMR-sheet.html b/templates/item-rencontresTMR-sheet.html index d9add1e5..c3259c82 100644 --- a/templates/item-rencontresTMR-sheet.html +++ b/templates/item-rencontresTMR-sheet.html @@ -1,3 +1,4 @@ +{{log "handlebar" this}}
                                                          diff --git a/templates/item-sort-sheet.html b/templates/item-sort-sheet.html index 78b5190a..03a1a86e 100644 --- a/templates/item-sort-sheet.html +++ b/templates/item-sort-sheet.html @@ -1,3 +1,4 @@ +{{log "handlebar" this}}
                                                          diff --git a/templates/item-souffle-sheet.html b/templates/item-souffle-sheet.html index d9add1e5..c3259c82 100644 --- a/templates/item-souffle-sheet.html +++ b/templates/item-souffle-sheet.html @@ -1,3 +1,4 @@ +{{log "handlebar" this}}
                                                          diff --git a/templates/item-tache-sheet.html b/templates/item-tache-sheet.html index 0c5b361f..782052b0 100644 --- a/templates/item-tache-sheet.html +++ b/templates/item-tache-sheet.html @@ -1,3 +1,4 @@ +{{log "handlebar" this}}
                                                          diff --git a/templates/item-tarot-sheet.html b/templates/item-tarot-sheet.html index 606722e1..8429ec21 100644 --- a/templates/item-tarot-sheet.html +++ b/templates/item-tarot-sheet.html @@ -1,3 +1,4 @@ +{{log "handlebar" this}}
                                                          diff --git a/templates/item-tete-sheet.html b/templates/item-tete-sheet.html index d9add1e5..c3259c82 100644 --- a/templates/item-tete-sheet.html +++ b/templates/item-tete-sheet.html @@ -1,3 +1,4 @@ +{{log "handlebar" this}}
                                                          diff --git a/templates/post-item.html b/templates/post-item.html index 60bccdd1..fcb03ae1 100644 --- a/templates/post-item.html +++ b/templates/post-item.html @@ -1,3 +1,4 @@ +{{log "handlebar" this}}

                                                          {{name}}

                                                          {{#if img}} diff --git a/templates/regles-optionelles.html b/templates/regles-optionelles.html index 47e97354..f91585c3 100644 --- a/templates/regles-optionelles.html +++ b/templates/regles-optionelles.html @@ -1,3 +1,4 @@ +{{log "handlebar" this}}

                                                          Règles de combat

                                                            diff --git a/templates/status-effects-settings.html b/templates/status-effects-settings.html index a6862f12..40dc7a23 100644 --- a/templates/status-effects-settings.html +++ b/templates/status-effects-settings.html @@ -1,3 +1,4 @@ +{{log "handlebar" this}}
                                                              {{#each effects as |effect key|}}