From a9d49d793c50e8cc2d581f15ba485882ca78f709 Mon Sep 17 00:00:00 2001 From: Vincent Vandemeulebrouck Date: Tue, 20 Apr 2021 00:49:01 +0200 Subject: [PATCH 1/5] Fix encTotal dans dialogues --- module/actor.js | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/module/actor.js b/module/actor.js index edbe258f..bbc03d88 100644 --- a/module/actor.js +++ b/module/actor.js @@ -167,7 +167,7 @@ export class RdDActor extends Actor { // Initialize empty items RdDCarac.computeCarac(actorData.data); this.computeIsHautRevant(); - this.computeEncombrementTotalEtMalusArmure(); + await this.computeEncombrementTotalEtMalusArmure(); this.computePrixTotalEquipement(); this.computeEtatGeneral(); // Sanity check @@ -1083,11 +1083,10 @@ export class RdDActor extends Actor { /* -------------------------------------------- */ computeEncombrement() { - const tplData = Misc.templateData(this); - tplData.encTotal = this.filterItemsData(it => it.data.encombrement != undefined) + this.encTotal = this.filterItemsData(it => it.data.encombrement != undefined) .map(it => it.data.encTotal) .reduce(Misc.sum(), 0); - return tplData.encTotal; + return this.encTotal; } /* -------------------------------------------- */ @@ -1104,12 +1103,11 @@ export class RdDActor extends Actor { /* -------------------------------------------- */ computePrixTotalEquipement() { - const tplData = Misc.templateData(this); - tplData.prixTotalEquipement = this.filterItemsData(it => it.data.prixTotal) + this.prixTotalEquipement = this.filterItemsData(it => it.data.prixTotal) .map(it => it.data.prixTotal ?? 0) .reduce(Misc.sum(), 0); // Mise à jour valeur totale de l'équipement - return tplData.prixTotalEquipement; + return this.prixTotalEquipement; } /* -------------------------------------------- */ From 77f0a93eb6e2f6a124d080c65b41c9b01bd9cdfe Mon Sep 17 00:00:00 2001 From: Vincent Vandemeulebrouck Date: Tue, 20 Apr 2021 00:50:16 +0200 Subject: [PATCH 2/5] Fix ajustements visible --- module/rdd-carac.js | 2 +- module/rolldata-ajustements.js | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/module/rdd-carac.js b/module/rdd-carac.js index e97c83ea..725a6e93 100644 --- a/module/rdd-carac.js +++ b/module/rdd-carac.js @@ -95,7 +95,7 @@ export class RdDCarac { * ainsi que de Perception active et volontaire. */ static isActionPhysique(selectedCarac) { - return Grammar.toLowerCaseNoAccent(selectedCarac?.label).match(/(apparence|force|agilite|dexterite|vue|ouie|odorat|empathie|melee|tir|lancer|derobee)/); + return Grammar.toLowerCaseNoAccent(selectedCarac?.label)?.match(/(apparence|force|agilite|dexterite|vue|ouie|odorat|empathie|melee|tir|lancer|derobee)/); } /* -------------------------------------------- */ diff --git a/module/rolldata-ajustements.js b/module/rolldata-ajustements.js index 1164a345..5a638e38 100644 --- a/module/rolldata-ajustements.js +++ b/module/rolldata-ajustements.js @@ -55,7 +55,7 @@ export const referenceAjustements = { getValue: (rollData, actor) => actor.getEtatGeneral() }, malusArmure: { - isVisible: (rollData, actor) => RdDCarac.isAgiliteOuDerivee(rollData.competence), + isVisible: (rollData, actor) => RdDCarac.isAgiliteOuDerivee(rollData.selectedCarac), isUsed: (rollData, actor) => RdDCarac.isAgiliteOuDerivee(rollData.selectedCarac), getLabel: (rollData, actor) => 'Malus armure', getValue: (rollData, actor) => actor.getMalusArmure() @@ -131,6 +131,7 @@ export class RollDataAjustements { for (var key in referenceAjustements) { const reference = referenceAjustements[key]; rollData.ajustements[key] = { + visible: reference.isVisible && reference.isVisible(rollData, actor), used: reference.isUsed(rollData, actor), label: reference.getLabel && reference.getLabel(rollData, actor), value: reference.getValue && reference.getValue(rollData, actor), From f0b042626f057bec0e156b40c7d15e0fa49b5ef9 Mon Sep 17 00:00:00 2001 From: Vincent Vandemeulebrouck Date: Tue, 20 Apr 2021 00:52:06 +0200 Subject: [PATCH 3/5] =?UTF-8?q?Fix:=20niveau=20de=20comp=C3=A9tence=20dans?= =?UTF-8?q?=20dialog=20roll?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- module/actor.js | 58 ++++++++++++++++++++++---------------------- module/rdd-combat.js | 15 ++++++------ 2 files changed, 36 insertions(+), 37 deletions(-) diff --git a/module/actor.js b/module/actor.js index bbc03d88..20743110 100644 --- a/module/actor.js +++ b/module/actor.js @@ -786,7 +786,7 @@ export class RdDActor extends Actor { let comp = this.getCompetence(compName); if (comp) { let troncList = RdDItemCompetence.isTronc(compName); - let nouveauNiveau = compValue ?? RdDItemCompetence.getNiveauBase(comp.data.categorie); + let nouveauNiveau = compValue ?? RdDItemCompetence.getNiveauBase(Misc.data(comp).data.categorie); if (troncList) { let message = "Vous avez modifié une compétence 'tronc'. Vérifiez que les compétences suivantes évoluent ensemble jusqu'au niveau 0 : "; for (let troncName of troncList) { @@ -1068,7 +1068,7 @@ export class RdDActor extends Actor { } /* -------------------------------------------- */ - async computeIsHautRevant() { + computeIsHautRevant() { const tplData = Misc.templateData(this); tplData.attributs.hautrevant.value = this.listItemsData('tete').find(it => Grammar.toLowerCaseNoAccent(it.name) == 'don de haut-reve') ? "Haut rêvant" @@ -1893,25 +1893,25 @@ export class RdDActor extends Actor { /* -------------------------------------------- */ async checkCompetenceXP(compName, newXP = undefined) { - let competence = this.getCompetence(compName); - if (competence && newXP && newXP == competence.data.xp) { // Si édition, mais sans changement XP + let compData = Misc.data(this.getCompetence(compName)); + if (compData && newXP && newXP == compData.data.xp) { // Si édition, mais sans changement XP return; } - newXP = (newXP) ? newXP : competence.data.xp; - if (competence && newXP > 0) { - let xpNeeded = RdDItemCompetence.getCompetenceNextXp(competence.data.niveau + 1); + newXP = (newXP) ? newXP : compData.data.xp; + if (compData && newXP > 0) { + let xpNeeded = RdDItemCompetence.getCompetenceNextXp(compData.data.niveau + 1); if (newXP >= xpNeeded) { - let newCompetence = duplicate(competence); - newCompetence.data.niveau += 1; - newCompetence.data.xp = newXP; + let newCompData = duplicate(compData); + newCompData.data.niveau += 1; + newCompData.data.xp = newXP; let xpData = { alias: this.name, - competence: newCompetence.name, - niveau: newCompetence.data.niveau, - xp: newCompetence.data.xp, - archetype: newCompetence.data.niveau_archetype, - archetypeWarning: newCompetence.data.niveau > competence.data.niveau_archetype + competence: newCompData.name, + niveau: newCompData.data.niveau, + xp: newCompData.data.xp, + archetype: newCompData.data.niveau_archetype, + archetypeWarning: newCompData.data.niveau > compData.data.niveau_archetype } ChatUtility.createChatMessage(this.name, "default", { content: await renderTemplate(`systems/foundryvtt-reve-de-dragon/templates/chat-actor-competence-xp.html`, xpData) @@ -2196,7 +2196,7 @@ export class RdDActor extends Actor { ui.notifications.warn(`${this.name} n'a pas de caractéristique correspondant à ${caracName}`) return; } - const competence = this.getCompetence(compName); + const competence = Misc.data(this.getCompetence(compName)); if (compName && !competence) { ui.notifications.warn(`${this.name} n'a pas de compétence correspondant à ${compName}`) return; @@ -2219,7 +2219,7 @@ export class RdDActor extends Actor { /* -------------------------------------------- */ async rollCompetence(name) { - let rollData = { competence: this.getCompetence(name) } + let rollData = { competence: Misc.data(this.getCompetence(name)) } if (rollData.competence.type == 'competencecreature') { if (rollData.competence.data.iscombat) { @@ -2270,7 +2270,7 @@ export class RdDActor extends Actor { async rollTache(id) { const actorData = Misc.data(this); const tacheData = Misc.data(this.getTache(id)); - const compData = duplicate(Misc.data(this.getCompetence(tacheData.data.competence))); + const compData = Misc.data(this.getCompetence(tacheData.data.competence)); compData.data.defaut_carac = tacheData.data.carac; // Patch ! let rollData = { @@ -2319,7 +2319,7 @@ export class RdDActor extends Actor { mergeObject(artData, { oeuvre: oeuvre, art: oeuvre.type, - competence: duplicate(this.getCompetence(oeuvre.data.competence ?? artData.art)), + competence: Misc.data(this.getCompetence(oeuvre.data.competence ?? artData.art)), diffLibre: - (oeuvre.data.niveau ?? 0), diffConditions: 0, use: { libre: false, conditions: true }, @@ -2381,14 +2381,14 @@ export class RdDActor extends Actor { _getCaracDanse(oeuvre) { if (oeuvre.data.agilite) { return "agilite"; } else if (oeuvre.data.apparence) { return "apparence"; } - const competence = this.getCompetence(oeuvre.data.competence); - return competence.data.defaut_carac; + const compData = Misc.data(this.getCompetence(oeuvre.data.competence)); + return compData.data.defaut_carac; } /* -------------------------------------------- */ async rollMusique(id) { const artData = { art: 'musique', verbe: 'Jouer' }; - const oeuvre = duplicate(this.getItemOfType(id, artData.art)); + const oeuvre = Misc.data(this.getItemOfType(id, artData.art)); await this._rollArt(artData, "ouie", oeuvre); } @@ -2400,7 +2400,7 @@ export class RdDActor extends Actor { proportions: 1, ajouterEquipement: false }; - const oeuvre = duplicate(this.getRecetteCuisine(id)); + const oeuvre = Misc.data(this.getRecetteCuisine(id)); await this._rollArt(artData, 'odoratgout', oeuvre, r => this._resultRecetteCuisine(r)); } @@ -2451,8 +2451,8 @@ export class RdDActor extends Actor { /* -------------------------------------------- */ async rollMeditation(id) { - let meditation = duplicate(this.getMeditation(id)); - let competence = duplicate(this.getCompetence(meditation.data.competence)); + let meditation = Misc.data(this.getMeditation(id)); + let competence = Misc.data(this.getCompetence(meditation.data.competence)); competence.data.defaut_carac = "intellect"; // Meditation = tjs avec intellect let meditationData = { competence: competence, @@ -2467,7 +2467,7 @@ export class RdDActor extends Actor { use: { libre: false, conditions: true, }, carac: {} }; - meditationData.carac["intellect"] = duplicate(Misc.templateData(this).carac["intellect"]); + meditationData.carac["intellect"] = Misc.templateData(this).carac["intellect"]; console.log("rollMeditation !!!", meditationData); @@ -2625,7 +2625,7 @@ export class RdDActor extends Actor { /* -------------------------------------------- */ async ajouteNombreAstral(data) { // Gestion expérience (si existante) - data.competence = this.getCompetence("astrologie"); + data.competence = Misc.data(this.getCompetence("astrologie")); data.selectedCarac = Misc.templateData(this).carac["vue"]; this._appliquerAjoutExperience(data); @@ -2760,7 +2760,7 @@ export class RdDActor extends Actor { /* -------------------------------------------- */ rollArme(compName, armeName = undefined) { let arme = armeName ? this.data.items.find(it => Misc.data(it).name == armeName && RdDItemArme.isArme(it)) : undefined; - let competence = this.getCompetence(compName); + let competence = Misc.data(this.getCompetence(compName)); if (arme || armeName || (competence.type == 'competencecreature' && competence.data.iscombat)) { RdDCombat.createUsingTarget(this)?.attaque(competence, arme); @@ -3207,7 +3207,7 @@ export class RdDActor extends Actor { let recette = this.getItemOfType(recetteId, 'recettealchimique'); const actorData = Misc.data(this); if (recette) { - let competence = this.getCompetence("alchimie"); + let competence = Misc.data(this.getCompetence("alchimie")); let diffAlchimie = RdDAlchimie.getDifficulte(alchimieData); let rollData = { recette: recette, diff --git a/module/rdd-combat.js b/module/rdd-combat.js index 094fc023..f8b8fa54 100644 --- a/module/rdd-combat.js +++ b/module/rdd-combat.js @@ -796,11 +796,9 @@ export class RdDCombat { } // # utilisation esquive - let esquiveUsage = 0; - let esquive = this.defender.getCompetence("esquive"); - if (esquive) { - esquiveUsage = this.defender.getItemUse(esquive._id); - } + const esquive = Misc.data(this.defender.getCompetence("esquive")); + const corpsACorps = Misc.data(this.defender.getCompetence("Corps à corps")); + const esquiveUsage = esquive ? this.defender.getItemUse(esquive._id) : 0; const paramChatDefense = { passeArme: attackerRoll.passeArme, @@ -810,7 +808,7 @@ export class RdDCombat { attackerId: this.attackerId, esquiveUsage: esquiveUsage, defenderTokenId: this.defenderTokenId, - mainsNues: attackerRoll.dmg.mortalite != 'mortel' && this.defender.getCompetence("Corps à corps"), + mainsNues: attackerRoll.dmg.mortalite != 'mortel' && corpsACorps, armes: this._filterArmesParade(this.defender, attackerRoll.competence, attackerRoll.arme), diffLibre: attackerRoll.ajustements?.diffLibre?.value ?? 0, attaqueParticuliere: attackerRoll.particuliere, @@ -955,12 +953,13 @@ export class RdDCombat { _prepareParade(attackerRoll, armeParade) { const compName = armeParade.data.competence; const armeAttaque = attackerRoll.arme; + const parade = Misc.data(this.defender.getCompetence(compName)); let defenderRoll = { passeArme: attackerRoll.passeArme, diffLibre: attackerRoll.diffLibre, attackerRoll: attackerRoll, - competence: this.defender.getCompetence(compName), + competence: parade, arme: armeParade, surprise: this.defender.getSurprise(true), needParadeSignificative: ReglesOptionelles.isUsing('categorieParade') && RdDItemArme.needParadeSignificative(armeAttaque, armeParade), @@ -1011,7 +1010,7 @@ export class RdDCombat { /* -------------------------------------------- */ async esquive(attackerRoll) { - let esquive = this.defender.getCompetence("esquive"); + const esquive = Misc.data(this.defender.getCompetence("esquive")); if (esquive == undefined) { ui.notifications.error(this.defender.name + " n'a pas de compétence 'esquive'"); return; From f0af45d1067a8d282c85fc780e5a2f26256e7ec3 Mon Sep 17 00:00:00 2001 From: Vincent Vandemeulebrouck Date: Tue, 20 Apr 2021 00:52:25 +0200 Subject: [PATCH 4/5] =?UTF-8?q?Fix=20exp=C3=A9rience=20sur=20/rdd?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- module/actor.js | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/module/actor.js b/module/actor.js index 20743110..ce985271 100644 --- a/module/actor.js +++ b/module/actor.js @@ -1847,12 +1847,6 @@ export class RdDActor extends Actor { return 0; } - /* -------------------------------------------- */ - appliquerExperience(rollData) { - const callback = this.createCallbackExperience(); - if (callback.condition(rollData)) { callback.action(rollData); } - } - /* -------------------------------------------- */ createCallbackExperience() { return { @@ -2212,10 +2206,15 @@ export class RdDActor extends Actor { show: { title: options?.title ?? '' } }; await RdDResolutionTable.rollData(rollData); - this.appliquerExperience(rollData); + this._appliquerExperienceRollData(rollData); RdDResolutionTable.displayRollData(rollData, this) return rollData.rolled; } + /* -------------------------------------------- */ + _appliquerExperienceRollData(rollData) { + const callback = this.createCallbackExperience(); + if (callback.condition(rollData)) { callback.action(rollData); } + } /* -------------------------------------------- */ async rollCompetence(name) { From 0e9bc372bfabc1e81c9086b3b447616f8ff6b43c Mon Sep 17 00:00:00 2001 From: Vincent Vandemeulebrouck Date: Tue, 20 Apr 2021 00:52:51 +0200 Subject: [PATCH 5/5] Rework dialog-competence --- module/rdd-roll.js | 8 +- styles/simple.css | 3 +- templates/dialog-competence.html | 164 ++++++++++++++++------------ templates/dialog-roll-enctotal.html | 8 +- templates/dialog-roll-surenc.html | 8 +- 5 files changed, 112 insertions(+), 79 deletions(-) diff --git a/module/rdd-roll.js b/module/rdd-roll.js index b6d36add..2ee9d7d9 100644 --- a/module/rdd-roll.js +++ b/module/rdd-roll.js @@ -268,7 +268,7 @@ export class RdDRoll extends Dialog { let dmgText = Misc.toSignedString(rollData.dmg.total); if (rollData.coupsNonMortels) { - dmgText = '(' + dmgText + ')'; + dmgText = `(${dmgText}) non-mortel` } if (rollData.selectedSort) { rollData.bonus = RdDItemSort.getCaseBonus(rollData.selectedSort, rollData.tmr.coord); @@ -287,7 +287,7 @@ export class RdDRoll extends Dialog { // Mise à jour valeurs $("#compdialogTitle").text(this._getTitle(rollData)); $('#coupsNonMortels').prop('checked', rollData.coupsNonMortels); - $("#dmg-arme-actor").text(dmgText); + $(".dmg-arme-actor").text(dmgText); $('.table-ajustement').remove(); $(".table-resolution").remove(); $(".table-proba-reussite").remove(); @@ -353,9 +353,9 @@ export class RdDRoll extends Dialog { const niveau = Misc.toSignedString(rollData.competence.data.niveau); if (compName == carac) { // cas des créatures - return carac + " " + niveau + return carac + " Niveau " + niveau } const armeTitle = (rollData.arme) ? " (" + rollData.arme.name + ") " : ""; - return carac + "/" + compName + armeTitle + " " + niveau + return carac + "/" + compName + armeTitle + " Niveau " + niveau } } diff --git a/styles/simple.css b/styles/simple.css index 845bc07e..e5e83279 100644 --- a/styles/simple.css +++ b/styles/simple.css @@ -855,8 +855,7 @@ ul, li { /* Position the tooltip text */ position: absolute; z-index: 1; - top: -10px; - left: 18%; + left: 25px; /* Fade in tooltip */ visibility: hidden; diff --git a/templates/dialog-competence.html b/templates/dialog-competence.html index c4ba4d0e..5d7cebbf 100644 --- a/templates/dialog-competence.html +++ b/templates/dialog-competence.html @@ -1,82 +1,112 @@

-
- - - -
- - Sans appel au moral -
-
-
- {{#if attackerRoll}} - - - {{else}} - - - {{/if}} - - -
-{{#if arme}} -
+
+
+
+ + +
+ {{#if arme}} {{#if attackerRoll}} - {{#if attackerRoll.tactique}} - + {{#if attackerRoll.tactique}} +
+ +
{{/if}} - - - {{else}} - - - -
-
- Charge : Les longueurs d'armes n'interviennent pas dans la charge, il faut gérer une initiative aléatoire dans ce cas. -
Feinte : Vous devez avoir l'initative sur votre adversaire et y renoncer. + {{else}} +
+ + + +
+
+ Charge : Les longueurs d'armes n'interviennent pas dans la charge, il faut gérer une initiative aléatoire dans ce cas. +
Feinte : Vous devez avoir l'initative sur votre adversaire et y renoncer. +
-
- - - - + +
{{/if}} {{#if ajustements.attaqueDefenseurSurpris.used}} - +
+ +
{{/if}} + {{/if}} + + {{#if arme}} + {{#unless attackerRoll}} +
+ {{#if (eq arme.data.mortalite 'non-mortel')}} + + {{else}} + + + + + + {{/if}} +
+ {{/unless}} + {{/if}} + + {{>"systems/foundryvtt-reve-de-dragon/templates/dialog-roll-surenc.html"}} + {{>"systems/foundryvtt-reve-de-dragon/templates/dialog-roll-enctotal.html"}}
-{{/if}} -{{>"systems/foundryvtt-reve-de-dragon/templates/dialog-roll-surenc.html"}} -{{>"systems/foundryvtt-reve-de-dragon/templates/dialog-roll-enctotal.html"}} - -
+
+
+ {{#if attackerRoll}} + + + {{else}} + + + {{/if}} +
+
+
+
+ + +
+
+ +
+ + Sans appel au moral +
+
+
+
+
+
diff --git a/templates/dialog-roll-enctotal.html b/templates/dialog-roll-enctotal.html index 2a27210c..dfe959d0 100644 --- a/templates/dialog-roll-enctotal.html +++ b/templates/dialog-roll-enctotal.html @@ -1,6 +1,8 @@ {{#if ajustements.encTotal.visible}} -
- - +
+
{{/if}} diff --git a/templates/dialog-roll-surenc.html b/templates/dialog-roll-surenc.html index 5919724d..0f59e227 100644 --- a/templates/dialog-roll-surenc.html +++ b/templates/dialog-roll-surenc.html @@ -1,6 +1,8 @@ {{#if surencMalusFlag}} -
- - +
+
{{/if}}