From 42567e7ca08e8e7d1307f533a6940f92e848dc2a Mon Sep 17 00:00:00 2001 From: Vincent Vandemeulebrouck Date: Mon, 30 Oct 2023 21:33:38 +0100 Subject: [PATCH] =?UTF-8?q?Am=C3=A9lioration=20de=20fen=C3=AAtre=20de=20je?= =?UTF-8?q?ts?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - indication du type de dégâts - affichage du moral avant l'icone d'appel au moral - meilleur alignement des différentes options --- changelog.md | 3 ++ module/rdd-roll.js | 42 +++++++++++----------- templates/dialog-roll-competence.html | 52 ++++++++++++++------------- 3 files changed, 52 insertions(+), 45 deletions(-) diff --git a/changelog.md b/changelog.md index d8da1bfd..1f36d362 100644 --- a/changelog.md +++ b/changelog.md @@ -6,6 +6,9 @@ - un message avec les informations de santé est envoyé au Gardienn et au propriétaire du token.acteur - le jet de vie est bien fait par le token si besoin - seul les propriétaires peuvent faire les jets de vie +- Amélioration de la fenêtre de jets + - le type de dégâts pour les attaques est toujours affiché + - le moral est indiqué avant l'icone d'appel au moral ## v11.0.27 - Khrachtchoum le méticuleux - le tooltip dans les TMR reste visible si on ne bouge pas la souris diff --git a/module/rdd-roll.js b/module/rdd-roll.js index 5925d076..9a36c884 100644 --- a/module/rdd-roll.js +++ b/module/rdd-roll.js @@ -22,7 +22,7 @@ export class RdDRoll extends Dialog { const html = await renderTemplate(dialogConfig.html, rollData); - let options = { classes: ["rdd-roll-dialog"], width: 600, height: 'fit-content', 'z-index': 99999, close: html => {} }; + let options = { classes: ["rdd-roll-dialog"], width: 650, height: 'fit-content', 'z-index': 99999, close: html => {} }; if (dialogConfig.close) { options.close = dialogConfig.close; } @@ -185,7 +185,7 @@ export class RdDRoll extends Dialog { console.log("RdDRollSelectDialog - Cout reve", ptreve); this.updateRollResult(html); }); - this.html.find("[name='mortalite']").change((event) => { + this.html.find("input.check-mortalite").change((event) => { this.rollData.dmg.mortalite = event.currentTarget.checked ? "non-mortel" : "mortel"; this.updateRollResult(html); }); @@ -289,34 +289,31 @@ export class RdDRoll extends Dialog { /* -------------------------------------------- */ async updateRollResult(html) { - let rollData = this.rollData; + const rollData = this.rollData; rollData.dmg = rollData.attackerRoll?.dmg ?? RdDBonus.dmg(rollData, this.actor.getBonusDegat()) rollData.caracValue = parseInt(rollData.selectedCarac.value) - rollData.mortalite = rollData.attackerRoll?.dmg.mortalite ?? rollData.dmg.mortalite ?? rollData.mortalite ?? 'mortel'; + rollData.dmg.mortalite = rollData.dmg.mortalite ?? 'mortel'; rollData.use.appelAuMoral = this.actor.isPersonnage() && RdDCarac.isActionPhysique(rollData.selectedCarac); - let dmgText = Misc.toSignedString(rollData.dmg.total); - - switch (rollData.mortalite) { - case 'non-mortel': dmgText = `(${dmgText}) non-mortel`; break; - case 'empoignade': dmgText = `empoignade`; break; - } RollDataAjustements.calcul(rollData, this.actor); const resolutionTable = await RdDResolutionTable.buildHTMLTable(RdDResolutionTable.subTable(rollData.caracValue, rollData.finalLevel)) const adjustements = await this.buildAjustements(rollData); - + HtmlUtility.showControlWhen(this.html.find(".use-encTotal"), rollData.ajustements.encTotal.visible && RdDCarac.isAgiliteOuDerobee(rollData.selectedCarac)); HtmlUtility.showControlWhen(this.html.find(".use-surenc"), rollData.ajustements.surenc.visible && RdDCarac.isActionPhysique(rollData.selectedCarac)); HtmlUtility.showControlWhen(this.html.find(".utilisation-moral"), rollData.use.appelAuMoral); HtmlUtility.showControlWhen(this.html.find(".divAppelAuMoral"), rollData.use.appelAuMoral); - HtmlUtility.showControlWhen(this.html.find(".diffMoral"), rollData.ajustements.moralTotal.used); + // HtmlUtility.showControlWhen(this.html.find(".diffMoral"), rollData.ajustements.moral.used); // Mise à jour valeurs this.html.find(".dialog-roll-title").text(this._getTitle(rollData)); - this.html.find("[name='mortalite']").prop('checked', rollData.mortalite == 'non-mortel'); - this.html.find(".dmg-arme-actor").text(dmgText); + this.html.find("input.check-mortalite").prop('checked', rollData.dmg.mortalite == 'non-mortel'); + this.html.find("label.dmg-arme-actor").text(rollData.dmg.mortalite == 'empoignade'? 'empoignade': Misc.toSignedString(rollData.dmg.total) ); + this.html.find("label.arme-mortalite").text(rollData.dmg.mortalite); + // this.html.find("[name='dmg-arme-actor']").text(rollData.dmg.mortalite == 'empoignade'? 'empoignade': Misc.toSignedString(rollData.dmg.total) ); + // this.html.find("[name='arme-mortalite']").text(rollData.dmg.mortalite); this.html.find("div.placeholder-ajustements").empty().append(adjustements); this.html.find("div.placeholder-resolution").empty().append(resolutionTable) } @@ -334,16 +331,19 @@ export class RdDRoll extends Dialog { return carac; } const compName = rollData.competence.name; - if (rollData.draconicList && rollData.selectedSort) { - return compName + " - " + rollData.selectedSort.name; - } - // If a weapon is there, add it in the title const niveau = Misc.toSignedString(rollData.competence.system.niveau) if (compName == carac) { // cas des créatures - return carac + " Niveau " + niveau + return `${carac} Niveau ${niveau}` } - const armeTitle = (rollData.arme) ? " (" + rollData.arme.name + ") " : ""; - return carac + "/" + compName + armeTitle + " Niveau " + niveau + if (rollData.draconicList && rollData.selectedSort) { + // cas de lancer de sort + return `${rollData.competence.name} Niveau ${niveau} ${rollData.selectedSort.name}` + } + if (rollData.arme && rollData.arme.name != compName) { + // ajouter l'arme au titre si son nom n'est pas la compétence + return `${carac} / ${compName} (${rollData.arme.name}) Niveau ${niveau}` + } + return `${carac} / ${compName} Niveau ${niveau}` } } diff --git a/templates/dialog-roll-competence.html b/templates/dialog-roll-competence.html index ee2a475b..bc7ca235 100644 --- a/templates/dialog-roll-competence.html +++ b/templates/dialog-roll-competence.html @@ -1,13 +1,29 @@
+ {{competence.name}}

- {{competence.name}}
- {{>"systems/foundryvtt-reve-de-dragon/templates/partial-select-carac.html"}} + + {{>"systems/foundryvtt-reve-de-dragon/templates/partial-select-carac.html"}} +
+ {{#if targetToken}} +
+ + +
+ {{/if}} + {{#if ajustements.attaqueDefenseurSurpris.used}} +
+ +
+ {{/if}} {{#if arme}} {{#if attackerRoll}} {{#if attackerRoll.tactique}} @@ -27,41 +43,28 @@
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. +
+ Feinte : Vous devez avoir l'initative sur votre adversaire et y renoncer.
- {{/if}} - {{#if targetToken}} -
- Cible: {{targetToken.name}} - -
- {{/if}} - {{#if ajustements.attaqueDefenseurSurpris.used}} -
- -
- {{/if}} - - {{#unless attackerRoll}}
- {{#if (eq arme.system.mortalite 'non-mortel')}} - - {{else if (eq arme.system.mortalite 'empoignade')}} + {{#if (eq arme.system.mortalite 'empoignade')}} {{else}} - - + {{#unless (eq arme.system.mortalite 'non-mortel')}} + + {{/unless}} + () {{/if}}
- {{/unless}} + {{/if}} {{/if}} - +
{{>"systems/foundryvtt-reve-de-dragon/templates/partial-roll-surenc.html"}} {{>"systems/foundryvtt-reve-de-dragon/templates/partial-roll-enctotal.html"}}
@@ -75,6 +78,7 @@ {{>"systems/foundryvtt-reve-de-dragon/templates/partial-roll-diffCondition.html"}} {{>"systems/foundryvtt-reve-de-dragon/templates/partial-roll-forcer.html"}} {{>"systems/foundryvtt-reve-de-dragon/templates/partial-roll-moral.html"}} +