From 3e5e745067e7ae2170ef6672b9296fd21e778079 Mon Sep 17 00:00:00 2001 From: Vincent Vandemeulebrouck Date: Thu, 8 Apr 2021 20:37:11 +0200 Subject: [PATCH 1/3] Les monnaies ont de la valeur et enc MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Résout un pb de NaN sur enc total --- module/item.js | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/module/item.js b/module/item.js index 5bf3e624..5c94099f 100644 --- a/module/item.js +++ b/module/item.js @@ -1,7 +1,7 @@ import { Misc } from "./misc.js"; import { RdDUtility } from "./rdd-utility.js"; -const typesObjetsEquipement = ["objet", "arme", "armure", "conteneur", "herbe", "ingredient", "livre", "potion", "munition", "nourritureboisson"]; +const typesObjetsEquipement = ["objet", "arme", "armure", "conteneur", "herbe", "ingredient", "livre", "potion", "munition", "nourritureboisson", "monnaie"]; const typesObjetsOeuvres = ["oeuvre", "recettecuisine", "musique", "chant", "danse", "jeu"]; /* -------------------------------------------- */ export class RdDItem extends Item { @@ -15,15 +15,19 @@ export class RdDItem extends Item { prepareDerivedData() { super.prepareDerivedData(); const itemData = this.data; - const tplData = itemData.data; if (RdDItem.getTypeObjetsEquipement().includes(itemData.type)) { - const quantite = itemData.type == 'conteneur' ? 1 : (tplData.quantite ?? 0); - if (tplData.encombrement != undefined) { - tplData.encTotal = Math.max(tplData.encombrement, 0) * quantite; - } - if (tplData.cout != undefined) { - tplData.prixTotal = Math.max(tplData.cout, 0) * quantite; - } + this._calculsEquipement(itemData); + } + } + + _calculsEquipement(itemData) { + const tplData = itemData.data; + const quantite = itemData.type == 'conteneur' ? 1 : (tplData.quantite ?? 0); + if (tplData.encombrement != undefined) { + tplData.encTotal = Math.max(tplData.encombrement, 0) * quantite; + } + if (tplData.cout != undefined) { + tplData.prixTotal = Math.max(tplData.cout, 0) * quantite; } } From dcdfa357c17f02dbc975f61a6ba976fa30ecce75 Mon Sep 17 00:00:00 2001 From: Vincent Vandemeulebrouck Date: Thu, 8 Apr 2021 20:37:29 +0200 Subject: [PATCH 2/3] =?UTF-8?q?Fix=20=C3=A9quipement=20des=20v=C3=A9hicule?= =?UTF-8?q?s?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- templates/actor-vehicule-sheet.html | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/templates/actor-vehicule-sheet.html b/templates/actor-vehicule-sheet.html index fe06733a..33dd4ce0 100644 --- a/templates/actor-vehicule-sheet.html +++ b/templates/actor-vehicule-sheet.html @@ -75,18 +75,18 @@ {{/if}} From 8bbf40a84b75d3129358b7a3f6fe57bcacb93f9c Mon Sep 17 00:00:00 2001 From: Vincent Vandemeulebrouck Date: Thu, 8 Apr 2021 20:36:02 +0200 Subject: [PATCH 3/3] =?UTF-8?q?Cr=C3=A9er=20des=20plats=20cuisin=C3=A9s?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Lors de l'exécution d'une recette de cuisine, permettre l'ajout d'un plat à l'équipement --- module/actor.js | 27 +++++- module/rdd-roll.js | 9 +- templates/actor-sheet.html | 2 +- templates/chat-resultat-recettecuisine.html | 12 +-- templates/dialog-roll-enctotal.html | 3 +- templates/dialog-roll-recettecuisine.html | 92 ++++++++++++--------- templates/dialog-roll-surenc.html | 2 +- 7 files changed, 95 insertions(+), 52 deletions(-) diff --git a/module/actor.js b/module/actor.js index 5b554778..d4d3d0fb 100644 --- a/module/actor.js +++ b/module/actor.js @@ -29,6 +29,7 @@ import { RdDCarac } from "./rdd-carac.js"; import { Monnaie } from "./item-monnaie.js"; import { RdDHerbes } from "./rdd-herbes.js"; import { DialogConsommer } from "./dialog-consommer.js"; +import { RdDItem } from "./item.js"; /* -------------------------------------------- */ @@ -2264,7 +2265,12 @@ export class RdDActor extends Actor { /* -------------------------------------------- */ async rollRecetteCuisine(id) { - const artData = { art: 'cuisine', verbe: 'Cuisiner' }; + const artData = { + art: 'cuisine', + verbe: 'Cuisiner', + proportions: 1, + ajouterEquipement: false + }; const oeuvre = duplicate(this.getRecetteCuisine(id)); await this._rollArt(artData, 'odoratgout', oeuvre, r => this._resultRecetteCuisine(r)); } @@ -2272,9 +2278,28 @@ export class RdDActor extends Actor { /* -------------------------------------------- */ async _resultRecetteCuisine(artData) { const baseQualite = (artData.rolled.isSuccess ? artData.oeuvre.data.niveau : artData.competence.data.niveau); + const sust = artData.oeuvre.data.sust * artData.proportions; artData.qualiteFinale = Math.min(baseQualite, artData.oeuvre.data.niveau) + artData.rolled.ptQualite; artData.exotismeFinal = Math.min(Math.min(artData.qualiteFinale, -Math.abs(artData.oeuvre.data.exotisme ?? 0)), 0); console.log("OEUVRE", artData.art, artData) + const platCuisine = { + name: artData.oeuvre.name, + type: 'nourritureboisson', + img: 'systems/foundryvtt-reve-de-dragon/icons/objets/provision_cuite.webp', + data: { + "description": artData.oeuvre.data.description, + "sust": Math.min(sust, 1), + "qualite": artData.exotismeFinal < 0 ? artData.exotismeFinal : artData.qualiteFinale, + "encombrement": 0.1, + "quantite": Math.max(1, Math.floor(sust)), + "cout": artData.exotismeFinal < 0 ? 0 : artData.qualiteFinale * 0.01 + } + }; + if (artData.ajouterEquipement){ + await this.createEmbeddedDocuments('Item', [platCuisine]); + ui.notifications.info(`${platCuisine.data.quantite} rations de ${platCuisine.name} ont été ajoutés à votre équipement`); + } + artData.platCuisine = platCuisine; RdDResolutionTable.displayRollData(artData, this.name, `chat-resultat-${artData.art}.html`); } diff --git a/module/rdd-roll.js b/module/rdd-roll.js index cbdad129..cbc8f5cd 100644 --- a/module/rdd-roll.js +++ b/module/rdd-roll.js @@ -223,12 +223,13 @@ export class RdDRoll extends Dialog { this.rollData.tactique = event.currentTarget.value; this.updateRollResult(); }); - html.find('#useMalusSurenc').change((event) => { - this.rollData.useMalusSurenc = event.currentTarget.checked; + html.find('.cuisine-proportions').change((event) => { + this.rollData.proportions = Number(event.currentTarget.value); this.updateRollResult(); }); - html.find('#useMalusEncTotal').change((event) => { - this.rollData.useMalusEncTotal = event.currentTarget.checked; + html.find('.checkbox-by-name').change((event) => { + const attribute = event.currentTarget.attributes['name'].value; + this.rollData[attribute] = event.currentTarget.checked; this.updateRollResult(); }); html.find('.imgAppelAuMoral').click((event) => { /* l'appel au moral, qui donne un bonus de +1 */ diff --git a/templates/actor-sheet.html b/templates/actor-sheet.html index fe460e2a..916dd344 100644 --- a/templates/actor-sheet.html +++ b/templates/actor-sheet.html @@ -745,7 +745,7 @@
  • - + Nom Q. Enc. diff --git a/templates/chat-resultat-recettecuisine.html b/templates/chat-resultat-recettecuisine.html index f775caf3..b67d5328 100644 --- a/templates/chat-resultat-recettecuisine.html +++ b/templates/chat-resultat-recettecuisine.html @@ -5,16 +5,18 @@ {{> "systems/foundryvtt-reve-de-dragon/templates/chat-infojet.html"}}
    + {{platCuisine.name}} +
    Vous avez préparé {{platCuisine.data.quantite}} portions de {{platCuisine.name}} + {{~#if ajouterEquipement}}, qui ont été ajoutées à votre équipement{{/if}}. {{#if rolled.isSuccess}} - {{alias}} réussit sa recette, avec un plat de qualité {{qualiteFinale}} pour {{oeuvre.data.sust}} Points de Sustentation. + Vous avez réussi la recette, pour un plat de qualité {{qualiteFinale}}. {{else}} - {{alias}} fait un piètre cuisinier(e), et obtient {{#if (lt qualiteFinale 0)}}un plat à l'exotisme certain{{else}}un plat de qualité {{qualiteFinale}}{{/if}}. - Selon la décision du MJ, le plat peut fournir {{oeuvre.data.sust}} Points de Sustentation + Vous faites un piètre cuisinier, et obtenez un plat {{#if (lt exotismeFinal 0)}}à l'exotisme certain{{else}}de qualité {{qualiteFinale}}{{/if}}. {{/if}} - + Pensez à faire goûter vos compagnons! {{#if (lt exotismeFinal 0)}}
    Au vu de l'exotisme du plat, les convives devront réussir un jet de Volonté / Cuisine à {{exotismeFinal}}. - En cas d'échec, ils peuvent se forcer pour faire plaisir au Maître Queux, mais devront faire un jet de moral Malheureux. + En cas d'échec, ils peuvent se forcer pour vous faire plaisir, mais devront faire un jet de moral Malheureux. {{/if}}
    {{> "systems/foundryvtt-reve-de-dragon/templates/chat-info-appel-au-moral.html"}} diff --git a/templates/dialog-roll-enctotal.html b/templates/dialog-roll-enctotal.html index 085c40fa..2a27210c 100644 --- a/templates/dialog-roll-enctotal.html +++ b/templates/dialog-roll-enctotal.html @@ -1,7 +1,6 @@ {{#if ajustements.encTotal.visible}}
    - +
    {{/if}} diff --git a/templates/dialog-roll-recettecuisine.html b/templates/dialog-roll-recettecuisine.html index c324755a..6786e6fa 100644 --- a/templates/dialog-roll-recettecuisine.html +++ b/templates/dialog-roll-recettecuisine.html @@ -1,43 +1,59 @@
    - -
    -
      -
    • -
    • -
    • -
    -
    - - Sans appel au moral +
    +
    +
      +
    • +
    • +
    • +
    +
    +
    +
    + + + +
    +
    + + +
    +
    +
    +
    +
    + + +
    +
    + + +
    +
    +
    + + Sans appel au moral +
    +
    +
    +
    +
    +
    +
    +
    -
    - -
    - - - - -
    - -
    -
    -
    -
    -
    -
    + \ No newline at end of file diff --git a/templates/dialog-roll-surenc.html b/templates/dialog-roll-surenc.html index ae07c1bf..5919724d 100644 --- a/templates/dialog-roll-surenc.html +++ b/templates/dialog-roll-surenc.html @@ -1,6 +1,6 @@ {{#if surencMalusFlag}}
    - +
    {{/if}}